changeset 32023:cc32b6a62560

(glyph_struct, cache_bitmap): Cache bitmap data, not GDI object which is a scarce resource.
author Jason Rumney <jasonr@gnu.org>
date Fri, 29 Sep 2000 21:21:54 +0000
parents 1f26caa05cd7
children a0ba404b97a5
files src/w32bdf.h
diffstat 1 files changed, 27 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32bdf.h	Fri Sep 29 21:20:59 2000 +0000
+++ b/src/w32bdf.h	Fri Sep 29 21:21:54 2000 +0000
@@ -28,9 +28,29 @@
 #define BDF_SECOND_OFFSET_TABLE 0x80
 #define BDF_SECOND_OFFSET(x) ((x) & 0x7f)
 #define BDF_FIRST_OFFSET(x) (((x) >> 8) | (((x) & 0x80) << 1))
+#define BDF_CODEPOINT_MAX (BDF_FIRST_OFFSET_TABLE * BDF_SECOND_OFFSET_TABLE)
+#define BDF_CODEPOINT_RANGE_COVER_P(x) (((x) >= 0) && ((x) <= BDF_CODEPOINT_MAX))
 
-#define BDF_FONT_CACHE_SIZE 5000
-#define BDF_FONT_CLEAR_SIZE 1000
+#define BDF_FONT_CACHE_SIZE 3000
+#define BDF_FONT_CLEAR_SIZE 600
+
+/* 
+   GLYPH METRIC (# ... character's reference point)
+   ^
+ y |              (urx, ury)
+   |  ^ +----------------+
+ a | b| |character       | <- font bounding Box
+ x | b| |                |
+ i | h| | #(bbox, bboy)  |
+ s |  v +----------------+
+   |   (llx, lly)
+   |    <---------------->
+   |           bbw
+   +----------------------->
+   origin     x axis
+ */
+
+
 
 /* Structure of glyph information of one character.  */
 typedef struct
@@ -42,7 +62,8 @@
 typedef struct
 {
   glyph_metric metric;
-  int bitmap_size;		/* byte lengh of the following slots */
+  int row_byte_size;            /* size in bytes occupied by one row of the bitmap */
+  int bitmap_size;		/* size in bytes of the following slots */
   unsigned char *bitmap;	/*  */
 } glyph_struct;
 
@@ -52,7 +73,9 @@
 {
   glyph_metric metric;
   pfont_char psrc;
-  HBITMAP hbmp;
+  int row_byte_size;
+  int bitmap_size;
+  unsigned char *pbmp;
 } cache_bitmap;
 
 typedef struct fchar
@@ -69,7 +92,6 @@
   unsigned char *font;
   unsigned char *seeked;
   DWORD size;
-
   font_char *chtbl[BDF_FIRST_OFFSET_TABLE];
   int llx, lly, urx, ury;	/* Font bounding box */
 
@@ -87,7 +109,6 @@
   int pixsz;
 } bdffont;
 
-
 #define BDF_FILE_SIZE_MAX 256*1024*1024 /* 256Mb */
 #define BDF_FONT_FILE(font) (((bdffont*)(font))->filename)
 #define MAKELENDSHORT(c1, c2) (unsigned short)((c1) | ((c2) << 8))