Diff for /np2/win9x/fontmng.cpp between versions 1.2 and 1.3

version 1.2, 2005/02/07 14:46:14 version 1.3, 2005/02/09 20:11:35
Line 20  typedef struct { Line 20  typedef struct {
 } _FNTMNG, *FNTMNG;  } _FNTMNG, *FNTMNG;
   
   
 static const TCHAR deffontface[] = "£Í£Ó ¥´¥·¥Ã¥¯";  static const OEMCHAR deffontface[] = OEMTEXT("£Í£Ó ¥´¥·¥Ã¥¯");
 static const TCHAR deffontface2[] = "£Í£Ó £Ð¥´¥·¥Ã¥¯";  static const OEMCHAR deffontface2[] = OEMTEXT("£Í£Ó £Ð¥´¥·¥Ã¥¯");
   
   
 void *fontmng_create(int size, UINT type, const TCHAR *fontface) {  void *fontmng_create(int size, UINT type, const OEMCHAR *fontface) {
   
         int                     i;          int                     i;
         int                     fontalign;          int                     fontalign;
Line 132  void fontmng_destroy(void *hdl) { Line 132  void fontmng_destroy(void *hdl) {
 }  }
   
   
   // ----
   
 static void getlength1(FNTMNG fhdl, FNTDAT fdat,  static void getlength1(FNTMNG fhdl, FNTDAT fdat,
                                                                                         const char *string, int length) {                                                                                  const OEMCHAR *string, int length) {
   
         SIZE    fntsize;          SIZE    fntsize;
   
         if ((fhdl->fonttype & FDAT_PROPORTIONAL) &&          if (GetTextExtentPoint32(fhdl->hdcimage, string, length, &fntsize)) {
                 (GetTextExtentPoint32(fhdl->hdcimage, string, length, &fntsize))) {  
                 fntsize.cx = min(fntsize.cx, fhdl->bmpwidth);                  fntsize.cx = min(fntsize.cx, fhdl->bmpwidth);
                 fdat->width = fntsize.cx;                  fdat->width = fntsize.cx;
                 fdat->pitch = fntsize.cx;                  fdat->pitch = fntsize.cx;
         }          }
         else if (length < 2) {  
                 fdat->width = fhdl->fontwidth;  
                 fdat->pitch = (fhdl->fontsize + 1) >> 1;  
         }  
         else {          else {
                 fdat->width = fhdl->fontwidth;                  fdat->width = fhdl->fontwidth;
                 fdat->pitch = fhdl->fontsize;                  fdat->pitch = (fhdl->fontsize + 1) >> 1;
         }          }
         fdat->height = fhdl->fontheight;          fdat->height = fhdl->fontheight;
 }  }
   
   static void fontmng_getchar(FNTMNG fhdl, FNTDAT fdat, const OEMCHAR *string) {
   
           int             leng;
   
           FillRect(fhdl->hdcimage, &fhdl->rect,
                                                                                   (HBRUSH)GetStockObject(BLACK_BRUSH));
           leng = milstr_charsize(string);
           TextOut(fhdl->hdcimage, 0, 0, string, leng);
           getlength1(fhdl, fdat, string, leng);
   }
   
 BOOL fontmng_getsize(void *hdl, const char *string, POINT_T *pt) {  BRESULT fontmng_getsize(void *hdl, const OEMCHAR *string, POINT_T *pt) {
   
         char    buf[4];          OEMCHAR buf[4];
         _FNTDAT fdat;          _FNTDAT fdat;
         int             width;          int             width;
         int             leng;          int             leng;
Line 167  BOOL fontmng_getsize(void *hdl, const ch Line 174  BOOL fontmng_getsize(void *hdl, const ch
                 goto fmgs_exit;                  goto fmgs_exit;
         }          }
   
         buf[2] = '\0';          while(1) {
         do {                  leng = milstr_charsize(string);
                 buf[0] = *string++;                  if (!leng) {
                 if ((((buf[0] ^ 0x20) - 0xa1) & 0xff) < 0x3c) {  
                         buf[1] = *string++;  
                         if (buf[1] == '\0') {  
                                 break;  
                         }  
                         leng = 2;  
                 }  
                 else if (buf[0]) {  
                         buf[1] = '\0';  
                         leng = 1;  
                 }  
                 else {  
                         break;                          break;
                 }                  }
                   CopyMemory(buf, string, leng * sizeof(OEMCHAR));
                   buf[leng] = '\0';
                   string += leng;
                 getlength1((FNTMNG)hdl, &fdat, buf, leng);                  getlength1((FNTMNG)hdl, &fdat, buf, leng);
                 width += fdat.pitch;                  width += fdat.pitch;
         } while(1);          }
   
         if (pt) {          if (pt) {
                 pt->x = width;                  pt->x = width;
Line 198  fmgs_exit: Line 196  fmgs_exit:
         return(FAILURE);          return(FAILURE);
 }  }
   
   BRESULT fontmng_getdrawsize(void *hdl, const OEMCHAR *string, POINT_T *pt) {
   
 BOOL fontmng_getdrawsize(void *hdl, const char *string, POINT_T *pt) {          OEMCHAR buf[4];
   
         char    buf[4];  
         _FNTDAT fdat;          _FNTDAT fdat;
         int             width;          int             width;
         int             posx;          int             posx;
Line 213  BOOL fontmng_getdrawsize(void *hdl, cons Line 210  BOOL fontmng_getdrawsize(void *hdl, cons
   
         width = 0;          width = 0;
         posx = 0;          posx = 0;
         buf[2] = '\0';          while(1) {
         do {                  leng = milstr_charsize(string);
                 buf[0] = *string++;                  if (!leng) {
                 if ((((buf[0] ^ 0x20) - 0xa1) & 0xff) < 0x3c) {  
                         buf[1] = *string++;  
                         if (buf[1] == '\0') {  
                                 break;  
                         }  
                         leng = 2;  
                 }  
                 else if (buf[0]) {  
                         buf[1] = '\0';  
                         leng = 1;  
                 }  
                 else {  
                         break;                          break;
                 }                  }
                   CopyMemory(buf, string, leng * sizeof(OEMCHAR));
                   buf[leng] = '\0';
                   string += leng;
                 getlength1((FNTMNG)hdl, &fdat, buf, leng);                  getlength1((FNTMNG)hdl, &fdat, buf, leng);
                 width = posx + max(fdat.width, fdat.pitch);                  width = posx + max(fdat.width, fdat.pitch);
                 posx += fdat.pitch;                  posx += fdat.pitch;
         } while(1);          }
   
         if (pt) {          if (pt) {
                 pt->x = width;                  pt->x = width;
Line 245  fmgds_exit: Line 233  fmgds_exit:
         return(FAILURE);          return(FAILURE);
 }  }
   
   
 static void fontmng_getchar(FNTMNG fhdl, FNTDAT fdat, const char *string) {  
   
         int             leng;  
   
         FillRect(fhdl->hdcimage, &fhdl->rect,  
                                                                                 (HBRUSH)GetStockObject(BLACK_BRUSH));  
         leng = strlen(string);  
         TextOut(fhdl->hdcimage, 0, 0, string, leng);  
         getlength1(fhdl, fdat, string, leng);  
 }  
   
   
 static void fontmng_setpat(FNTMNG fhdl, FNTDAT fdat) {  static void fontmng_setpat(FNTMNG fhdl, FNTDAT fdat) {
   
         UINT    remx;          UINT    remx;
Line 301  fmsp_end: Line 276  fmsp_end:
   
 // ----  // ----
   
 FNTDAT fontmng_get(void *hdl, const char *string) {  FNTDAT fontmng_get(void *hdl, const OEMCHAR *string) {
   
         FNTMNG  fhdl;          FNTMNG  fhdl;
         FNTDAT  fdat;          FNTDAT  fdat;

Removed from v.1.2  
changed lines
  Added in v.1.3


RetroPC.NET-CVS <cvs@retropc.net>