Mercurial > emacs
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))