Annotation of pmsdk/samples/vectfont/vf00.c, revision 1.1

1.1     ! root        1: /*--------------------------------------------------
        !             2:    VF00.C -- Routines for working with vector fonts
        !             3:   --------------------------------------------------*/
        !             4: 
        !             5: #define INCL_WIN
        !             6: #define INCL_GPI
        !             7: #include <os2.h>
        !             8: #include <stdlib.h>
        !             9: #include <string.h>
        !            10: #include "vectfont.h"
        !            11: 
        !            12: extern HAB hab ;
        !            13: 
        !            14: LONG CreateVectorFont (HPS hps, LONG lcid, CHAR *szFacename)
        !            15:      {
        !            16:      FATTRS fat ;
        !            17: 
        !            18:      fat.usRecordLength  = sizeof fat ;
        !            19:      fat.fsSelection     = 0 ;
        !            20:      fat.lMatch          = 0 ;
        !            21:      fat.idRegistry      = 0 ;
        !            22:      fat.usCodePage      = GpiQueryCp (hps) ;
        !            23:      fat.lMaxBaselineExt = 0 ;
        !            24:      fat.lAveCharWidth   = 0 ;
        !            25:      fat.fsType          = 0 ;
        !            26:      fat.fsFontUse       = FATTR_FONTUSE_OUTLINE |
        !            27:                            FATTR_FONTUSE_TRANSFORMABLE ;
        !            28: 
        !            29:      strcpy (fat.szFacename, szFacename) ;
        !            30: 
        !            31:      return GpiCreateLogFont (hps, NULL, lcid, &fat) ;
        !            32:      }
        !            33: 
        !            34: BOOL ScaleVectorFont (HPS hps, SHORT xPointSize, SHORT yPointSize)
        !            35:      {
        !            36:      HDC    hdc ;
        !            37:      LONG   xDeviceRes, yDeviceRes ;
        !            38:      POINTL ptlFont ;
        !            39:      SIZEF  sizfx ;
        !            40:                          // Get device resolution in pixels per meter
        !            41: 
        !            42:      hdc = GpiQueryDevice (hps) ;
        !            43: 
        !            44:      DevQueryCaps (hdc, CAPS_HORIZONTAL_RESOLUTION, 1L, &xDeviceRes) ;
        !            45:      DevQueryCaps (hdc, CAPS_VERTICAL_RESOLUTION,   1L, &yDeviceRes) ;
        !            46: 
        !            47:                          // Find desired font size in pixels
        !            48: 
        !            49:      ptlFont.x = 254L * xPointSize * xDeviceRes / 7200000L ;
        !            50:      ptlFont.y = 254L * yPointSize * yDeviceRes / 7200000L ;
        !            51: 
        !            52:                          // Convert to page units
        !            53: 
        !            54:      GpiConvert (hps, CVTC_DEVICE, CVTC_PAGE, 1L, &ptlFont) ;
        !            55: 
        !            56:                          // Set the character box
        !            57: 
        !            58:      sizfx.cx = MAKEFIXED (ptlFont.x, 0) ;
        !            59:      sizfx.cy = MAKEFIXED (ptlFont.y, 0) ;
        !            60: 
        !            61:      return GpiSetCharBox (hps, &sizfx) ;
        !            62:      }
        !            63: 
        !            64: BOOL ScaleFontToBox (HPS hps, LONG cbText, CHAR *szText, LONG cxBox,
        !            65:                                                          LONG cyBox)
        !            66:      {
        !            67:      POINTL aptl[TXTBOX_COUNT] ;
        !            68:      SIZEF  sizfx ;
        !            69: 
        !            70:      GpiQueryCharBox (hps, &sizfx) ;
        !            71:      GpiQueryTextBox (hps, cbText, szText, TXTBOX_COUNT, aptl) ;
        !            72: 
        !            73:      sizfx.cx = sizfx.cx /
        !            74:           (max (aptl[TXTBOX_TOPRIGHT].x, aptl[TXTBOX_BOTTOMRIGHT].x) -
        !            75:            min (aptl[TXTBOX_TOPLEFT].x,  aptl[TXTBOX_BOTTOMLEFT].x))
        !            76:           * cxBox ;
        !            77: 
        !            78:      sizfx.cy = sizfx.cy /
        !            79:           (max (aptl[TXTBOX_TOPRIGHT].y,    aptl[TXTBOX_TOPLEFT].y) -
        !            80:            min (aptl[TXTBOX_BOTTOMRIGHT].y, aptl[TXTBOX_BOTTOMLEFT].y))
        !            81:           * cyBox ;
        !            82: 
        !            83:      return GpiSetCharBox (hps, &sizfx) ;
        !            84:      }
        !            85: 
        !            86: VOID QueryStartPointInTextBox (HPS hps, LONG cbText, CHAR *szText,
        !            87:                                         POINTL *pptl)
        !            88:      {
        !            89:      POINTL aptl[TXTBOX_COUNT] ;
        !            90: 
        !            91:      GpiQueryTextBox (hps, cbText, szText, TXTBOX_COUNT, aptl) ;
        !            92: 
        !            93:      pptl->x = max(-aptl[TXTBOX_TOPLEFT].x, -aptl[TXTBOX_BOTTOMLEFT].x);
        !            94:      pptl->y = max(-aptl[TXTBOX_TOPLEFT].y, -aptl[TXTBOX_BOTTOMLEFT].y);
        !            95:      }
        !            96: 
        !            97: VOID ColorClient (HPS hps, LONG cxClient, LONG cyClient, LONG lColor)
        !            98:      {
        !            99:      RECTL rcl ;
        !           100: 
        !           101:      WinSetRect (hab, &rcl, 0, 0, (SHORT) cxClient, (SHORT) cyClient) ;
        !           102:      WinFillRect (hps, &rcl, lColor) ;
        !           103:      }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.