home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / src / os2 / fontdlg.cpp < prev    next >
C/C++ Source or Header  |  2002-08-22  |  3KB  |  102 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        fontdlg.cpp
  3. // Purpose:     wxFontDialog class. NOTE: you can use the generic class
  4. //              if you wish, instead of implementing this.
  5. // Author:      David Webster
  6. // Modified by:
  7. // Created:     10/06/99
  8. // RCS-ID:      $Id: FONTDLG.CPP,v 1.8 2002/08/21 22:45:19 DW Exp $
  9. // Copyright:   (c) David Webster
  10. // Licence:     wxWindows licence
  11. /////////////////////////////////////////////////////////////////////////////
  12.  
  13. // For compilers that support precompilation, includes "wx.h".
  14. #include "wx/wxprec.h"
  15.  
  16. #ifndef WX_PRECOMP
  17. #include <stdio.h>
  18. #include "wx/defs.h"
  19. #include "wx/utils.h"
  20. #include "wx/dialog.h"
  21. #endif
  22.  
  23. #include "wx/fontdlg.h"
  24.  
  25. #define INCL_PM
  26. #include <os2.h>
  27.  
  28. #include "wx/os2/private.h"
  29. #include "wx/cmndata.h"
  30.  
  31. #include <math.h>
  32. #include <stdlib.h>
  33. #include <string.h>
  34.  
  35. IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog)
  36.  
  37. int wxFontDialog::ShowModal()
  38. {
  39.     FONTDLG                         vFontDlg;
  40.     char                            zCurrentFont[FACESIZE];
  41.     HWND                            hWndFontDlg;
  42.     FONTMETRICS                     vFm;
  43.     FACENAMEDESC                    vFn;
  44.  
  45.     memset(&vFontDlg, '\0', sizeof(FONTDLG));
  46.     zCurrentFont[0] = '\0';
  47.  
  48.     //
  49.     // Set the fontdlg fields
  50.     //
  51.     vFontDlg.cbSize         = sizeof(FONTDLG);
  52.     vFontDlg.hpsScreen      = ::WinGetScreenPS(HWND_DESKTOP);
  53.     vFontDlg.hpsPrinter     = NULL;
  54.     vFontDlg.pszFamilyname  = zCurrentFont;
  55.     vFontDlg.fxPointSize    = MAKEFIXED(12,0);
  56.     vFontDlg.usFamilyBufLen = FACESIZE;
  57.     vFontDlg.fl             = FNTS_CENTER;
  58.     vFontDlg.clrFore        = CLR_BLACK;
  59.     vFontDlg.clrBack        = CLR_WHITE;
  60.  
  61.     hWndFontDlg = WinFontDlg( HWND_DESKTOP
  62.                              ,GetParent()->GetHWND()
  63.                              ,&vFontDlg
  64.                             );
  65.     if (hWndFontDlg && vFontDlg.lReturn == DID_OK)
  66.     {
  67.         wxColour                    vColour((unsigned long)0x00000000);
  68.         wxNativeFontInfo            vInfo;
  69.  
  70.         m_fontData.fontColour = vColour;
  71.  
  72.         memset(&vFn, '\0', sizeof(FACENAMEDESC));
  73.         vFn.usSize        = sizeof(FACENAMEDESC);
  74.         vFn.usWeightClass = vFontDlg.usWeight;
  75.         vFn.usWidthClass  = vFontDlg.usWidth;
  76.  
  77.         memset(&vInfo.fa, '\0', sizeof(FATTRS));
  78.         memcpy(&vInfo.fn, &vFn, sizeof(FACENAMEDESC));
  79.  
  80.         vInfo.fa.usRecordLength = vFontDlg.fAttrs.usRecordLength;
  81.         strcpy(vInfo.fa.szFacename, vFontDlg.fAttrs.szFacename);
  82.         vInfo.fa.lMatch = vFontDlg.fAttrs.lMatch;
  83.  
  84.         //
  85.         // Debugging
  86.         //
  87.         wxFont                      vChosenFont(vInfo);
  88.  
  89.         int                         nPointSize = vFontDlg.fxPointSize >> 16;
  90.  
  91.         vChosenFont.SetPointSize(nPointSize);
  92.         m_fontData.chosenFont = vChosenFont;
  93.  
  94.         m_fontData.EncodingInfo().facename = vFontDlg.fAttrs.szFacename;
  95.         m_fontData.EncodingInfo().charset = vFontDlg.fAttrs.usCodePage;
  96.  
  97.         return wxID_OK;
  98.     }
  99.     return wxID_CANCEL;
  100. } // end of wxFontDialg::ShowModal
  101.  
  102.