home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / FNTFIG.ZIP / RASTER.C < prev    next >
C/C++ Source or Header  |  1989-07-05  |  3KB  |  110 lines

  1. /*------------------------------
  2.    RASTER.C -- Raster Font Demo
  3.   ------------------------------*/
  4.  
  5. #define INCL_WIN
  6. #define INCL_GPI
  7. #include <os2.h>
  8. #include <string.h>
  9. #include "text.h"
  10. #include "easyfont.h"
  11. #define LCID_MYFONT 1L
  12.  
  13. MRESULT EXPENTRY ClientWndProc (HWND, USHORT, MPARAM, MPARAM) ;
  14.  
  15. HAB  hab ;
  16.  
  17. int main (void)
  18.      {
  19.      static CHAR    szClientClass [] = "Raster" ;
  20.      static ULONG   flFrameFlags = FCF_TITLEBAR      | FCF_SYSMENU |
  21.                                    FCF_SIZEBORDER    | FCF_MINMAX  |
  22.                                    FCF_SHELLPOSITION | FCF_TASKLIST ;
  23.      HMQ            hmq ;
  24.      HWND           hwndFrame, hwndClient ;
  25.      QMSG           qmsg ;
  26.  
  27.      hab = WinInitialize (0) ;
  28.      hmq = WinCreateMsgQueue (hab, 0) ;
  29.  
  30.      WinRegisterClass (hab, szClientClass, ClientWndProc, CS_SIZEREDRAW, 0) ;
  31.  
  32.      hwndFrame = WinCreateStdWindow (HWND_DESKTOP, WS_VISIBLE,
  33.                                      &flFrameFlags, szClientClass, NULL,
  34.                                      0L, NULL, 0, &hwndClient) ;
  35.  
  36.      WinSendMsg (hwndFrame, WM_SETICON,
  37.                  WinQuerySysPointer (HWND_DESKTOP, SPTR_APPICON, FALSE),
  38.                  NULL) ;
  39.  
  40.      while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
  41.           WinDispatchMsg (hab, &qmsg) ;
  42.  
  43.      WinDestroyWindow (hwndFrame) ;
  44.      WinDestroyMsgQueue (hmq) ;
  45.      WinTerminate (hab) ;
  46.      return 0 ;
  47.      }
  48.  
  49. MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1, MPARAM mp2)
  50.      {
  51.      static HPS    hps ;
  52.      static SHORT  sNumLines = sizeof aszText / sizeof aszText[0] ;
  53.      static SIZEL  sizlClient ;
  54.      FONTMETRICS   fm ;
  55.      HDC           hdc ;
  56.      POINTL        ptl ;
  57.      SHORT         i ;
  58.      SIZEL         sizlPage ;
  59.  
  60.      switch (msg)
  61.           {
  62.           case WM_CREATE:
  63.                hdc = WinOpenWindowDC (hwnd) ;
  64.                sizlPage.cx = 0 ;
  65.                sizlPage.cy = 0 ;
  66.                hps = GpiCreatePS (hab, hdc, &sizlPage,
  67.                                   PU_PELS    | GPIF_DEFAULT |
  68.                                   GPIT_MICRO | GPIA_ASSOC) ;
  69.  
  70.                EzfQueryFonts (hps) ;
  71.                return 0 ;
  72.  
  73.           case WM_SIZE:
  74.                sizlClient.cx = SHORT1FROMMP (mp2) ;
  75.                sizlClient.cy = SHORT2FROMMP (mp2) ;
  76.                return 0 ;
  77.  
  78.           case WM_PAINT:
  79.                WinBeginPaint (hwnd, hps, NULL) ;
  80.                GpiErase (hps) ;
  81.  
  82.                EzfCreateLogFont (hps, LCID_MYFONT, FONTFACE_TIMES,
  83.                                  FONTSIZE_10, 0) ;
  84.  
  85.                GpiSetCharSet (hps, LCID_MYFONT) ;
  86.                GpiQueryFontMetrics (hps, (LONG) sizeof fm, &fm) ;
  87.  
  88.                ptl.x = fm.lAveCharWidth ;
  89.                ptl.y = sizlClient.cy - fm.lMaxBaselineExt + fm.lMaxDescender ;
  90.  
  91.                for (i = 0 ; i < sNumLines ; i++)
  92.                     {
  93.                     GpiCharStringAt (hps, &ptl, (LONG) strlen (aszText[i]),
  94.                                      aszText[i]) ;
  95.  
  96.                     ptl.y -= fm.lMaxBaselineExt ;
  97.                     }
  98.  
  99.                GpiSetCharSet (hps, LCID_DEFAULT) ;
  100.                GpiDeleteSetId (hps, LCID_MYFONT) ;
  101.                WinEndPaint (hps) ;
  102.                return 0 ;
  103.  
  104.           case WM_DESTROY:
  105.                GpiDestroyPS (hps) ;
  106.                return 0 ;
  107.           }
  108.      return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
  109.      }
  110.