1/////////////////////////////////////////////////////////////////////////////
2// Name:        src/os2/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 39337 2006-05-25 21:08:11Z ABX $
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#include "wx/fontdlg.h"
17
18#ifndef WX_PRECOMP
19    #include <stdio.h>
20    #include "wx/utils.h"
21    #include "wx/dialog.h"
22    #include "wx/math.h"
23    #include "wx/cmndata.h"
24#endif
25
26#include "wx/fontutil.h"
27
28#define INCL_PM
29#include <os2.h>
30
31#include "wx/os2/private.h"
32
33#include <stdlib.h>
34#include <string.h>
35
36IMPLEMENT_DYNAMIC_CLASS(wxFontDialog, wxDialog)
37
38int wxFontDialog::ShowModal()
39{
40    FONTDLG      vFontDlg;
41    char         zCurrentFont[FACESIZE];
42    HWND         hWndFontDlg;
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.m_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.m_chosenFont = vChosenFont;
93
94        m_fontData.EncodingInfo().facename = (wxChar*)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