summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2002-10-12 13:05:16 +0000
committerJames Bursa <james@netsurf-browser.org>2002-10-12 13:05:16 +0000
commitf459052ef8d42041d582113cbf62cfe8912ebc1a (patch)
treed1192f8939bc1daa92c6a2f9fe4b0cdf6a2684e7 /riscos
parent390fb8fb8dd559e2efbdaf7a19be9d2faa4042e2 (diff)
downloadnetsurf-f459052ef8d42041d582113cbf62cfe8912ebc1a.tar.gz
netsurf-f459052ef8d42041d582113cbf62cfe8912ebc1a.tar.bz2
[project @ 2002-10-12 13:05:16 by bursa]
Speed improvements in layout_line() (call Font_ScanString much less). svn path=/import/netsurf/; revision=43
Diffstat (limited to 'riscos')
-rw-r--r--riscos/font.c31
-rw-r--r--riscos/font.h4
2 files changed, 33 insertions, 2 deletions
diff --git a/riscos/font.c b/riscos/font.c
index ee81560f8..91dab573b 100644
--- a/riscos/font.c
+++ b/riscos/font.c
@@ -1,5 +1,5 @@
/**
- * $Id: font.c,v 1.5 2002/10/08 11:15:29 bursa Exp $
+ * $Id: font.c,v 1.6 2002/10/12 13:05:16 bursa Exp $
*/
#include <assert.h>
@@ -204,3 +204,32 @@ void font_close(struct font_data *data)
free(data);
}
+
+char * font_split(struct font_data *data, const char * text, unsigned int length,
+ unsigned int width, unsigned int *used_width)
+{
+ os_error *error;
+ font_scan_block block;
+ char *split;
+
+ block.space.x = block.space.y = block.letter.x = block.letter.y = 0;
+ block.split_char = ' ';
+
+ error = xfont_scan_string(data->handle, text,
+ font_GIVEN_BLOCK | font_GIVEN_FONT | font_KERN | font_GIVEN_LENGTH,
+ ro_x_units(width) * 400, 0x7fffffff,
+ &block,
+ 0,
+ length,
+ &split,
+ used_width, 0, 0);
+ if (error != 0) {
+ fprintf(stderr, "%s\n", error->errmess);
+ die("font_scan_string failed");
+ }
+
+ *used_width = browser_x_units(*used_width / 400);
+
+ return split;
+}
+
diff --git a/riscos/font.h b/riscos/font.h
index 21e44bc24..36684d197 100644
--- a/riscos/font.h
+++ b/riscos/font.h
@@ -1,5 +1,5 @@
/**
- * $Id: font.h,v 1.3 2002/10/08 11:15:29 bursa Exp $
+ * $Id: font.h,v 1.4 2002/10/12 13:05:16 bursa Exp $
*/
#ifndef _NETSURF_RISCOS_FONT_H_
@@ -40,5 +40,7 @@ void font_position_in_string(const char* text, struct font_data *font,
struct font_set *font_new_set(void);
struct font_data *font_open(struct font_set *set, struct css_style *style);
void font_free_set(struct font_set *set);
+char * font_split(struct font_data *data, const char * text, unsigned int length,
+ unsigned int width, unsigned int *used_width);
#endif