--- np2/wince/fontmng.cpp 2003/12/01 21:15:13 1.3 +++ np2/wince/fontmng.cpp 2005/02/11 21:17:23 1.7 @@ -6,8 +6,8 @@ #if defined(FONTMNG_CACHE) typedef struct { - WORD str; - WORD next; + UINT str; + UINT next; } FNTCTBL; #endif @@ -21,7 +21,7 @@ typedef struct { // あとは拡張〜 HDC hdcimage; HBITMAP hBitmap; - BYTE *image; + UINT8 *image; HFONT hfont; RECT rect; int bmpwidth; @@ -29,15 +29,15 @@ typedef struct { int bmpalign; #if defined(FONTMNG_CACHE) - DWORD caches; - DWORD cachehead; + UINT caches; + UINT cachehead; FNTCTBL cache[FONTMNG_CACHE]; #endif } _FNTMNG, *FNTMNG; -static const TCHAR deffontface[] = STRLITERAL("MS ゴシック"); -static const TCHAR deffontface2[] = STRLITERAL("MS Pゴシック"); +static const TCHAR deffontface[] = _T("MS ゴシック"); +static const TCHAR deffontface2[] = _T("MS Pゴシック"); #ifndef _WIN32_WCE #define TEXTALPHABASE (FDAT_DEPTH * 0x60 / 256) @@ -128,7 +128,7 @@ void *fontmng_create(int size, UINT type ret->bmpheight = bmpheight; ret->bmpalign = (((bmpwidth + 31) / 8) & (~3)); - bi = (BITMAPINFO *)(((BYTE *)(ret + 1)) + fontwork); + bi = (BITMAPINFO *)(((UINT8 *)(ret + 1)) + fontwork); bi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bi->bmiHeader.biWidth = ret->bmpwidth; bi->bmiHeader.biHeight = ret->bmpheight; @@ -201,14 +201,10 @@ void fontmng_destroy(void *hdl) { } } -int fontmng_getpoint(void *hdl) { - if (hdl) { - } - return(0); -} +// ---- -#ifdef _WIN32_WCE +#ifdef UNICODE static void getlength1(FNTMNG fhdl, FNTDAT fdat, LPCTSTR string, int tleng, int length) { @@ -223,7 +219,11 @@ static void getlength1(FNTMNG fhdl, FNTD fdat->height = fhdl->bmpheight >> 1; } else { +#if 1 // PocketPCのみ戻り値が変らしい? + fdat->width = min(fntsize.cx, fhdl->bmpwidth); +#else fdat->width = min(fntsize.cx + 1, fhdl->bmpwidth); +#endif fdat->pitch = min(fntsize.cx, fhdl->bmpwidth); fdat->height = fhdl->bmpheight; } @@ -501,13 +501,15 @@ fmgds_exit: static void fontmng_setpat(FNTMNG fhdl, FNTDAT fdat) { - DWORD remx; - DWORD remy; - BYTE *src; - BYTE *dst; - BYTE *s1, *s2; - BYTE bit; - BYTE b1, b2; + UINT remx; + UINT remy; + UINT8 *src; + UINT8 *dst; + UINT8 *s1; + UINT8 *s2; + UINT8 bit; + UINT b1; + UINT b2; int align; int c; @@ -517,7 +519,7 @@ static void fontmng_setpat(FNTMNG fhdl, goto fmsp_end; } - dst = (BYTE *)(fdat + 1); + dst = (UINT8 *)(fdat + 1); align *= -1; if (fhdl->fonttype & FDAT_ALIAS) { @@ -549,7 +551,7 @@ static void fontmng_setpat(FNTMNG fhdl, c += (FDAT_DEPTH - TEXTALPHABASE); } if (c) { - *dst++ = (BYTE)(TEXTALPHABASE + (c / 4)); + *dst++ = (UINT8)(TEXTALPHABASE + (c / 4)); } else { *dst++ = 0; @@ -582,7 +584,7 @@ fmsp_end: return; } -FNTDAT fontmng_get(void *hdl, const char *string) { +FNTDAT fontmng_get(void *hdl, const OEMCHAR *string) { FNTMNG fhdl; FNTDAT fdat; @@ -595,13 +597,34 @@ FNTDAT fontmng_get(void *hdl, const char #if defined(FONTMNG_CACHE) { FNTCTBL *fct; - DWORD str; - DWORD pos; - DWORD prev; - DWORD cnt; + UINT str; + UINT pos; + UINT prev; + UINT cnt; + +#if defined(OSLANG_SJIS) || defined(OSLANG_SJIS) + int len; + len = milstr_charsize(string); + switch(len) { + default: + str = (UINT8)string[0]; + break; + + case 2: + str = (UINT8)string[0] + (((UINT8)string[1]) << 8); + break; + + case 3: + str = (UINT8)string[0] + (((UINT8)string[1]) << 8) + (((UINT8)string[2]) << 16); + break; - str = string[0] & 0xff; - str |= (string[1] & 0xff) << 8; + case 4: + str = (UINT8)string[0] + (((UINT8)string[1]) << 8) + (((UINT8)string[2]) << 16) + (((UINT8)string[2]) << 24); + break; + } +#else + str = (UINT)string[0]; +#endif fct = fhdl->cache; cnt = fhdl->caches; @@ -615,19 +638,19 @@ FNTDAT fontmng_get(void *hdl, const char } if (prev < FONTMNG_CACHE) { fct[prev].next = fct[pos].next; - fct[pos].next = (WORD)fhdl->cachehead; + fct[pos].next = fhdl->cachehead; fhdl->cachehead = pos; } - return((FNTDAT)(((BYTE *)(fhdl + 1)) + (pos * fhdl->fontalign))); + return((FNTDAT)(((UINT8 *)(fhdl + 1)) + (pos * fhdl->fontalign))); } if (fhdl->caches < FONTMNG_CACHE) { prev = fhdl->caches; fhdl->caches++; } - fct[prev].str = (WORD)str; - fct[prev].next = (WORD)fhdl->cachehead; + fct[prev].str = str; + fct[prev].next = fhdl->cachehead; fhdl->cachehead = prev; - fdat = (FNTDAT)(((BYTE *)(fhdl + 1)) + (prev * fhdl->fontalign)); + fdat = (FNTDAT)(((UINT8 *)(fhdl + 1)) + (prev * fhdl->fontalign)); } #else fdat = (FNTDAT)(fhdl + 1);