+++ /dev/null
-/////////////////////////////////////////////////////////////////////////////
-// Name: src/os2/gdiobj.cpp
-// Purpose: wxGDIObject class
-// Author: AUTHOR
-// Modified by:
-// Created: ??/??/98
-// RCS-ID: $Id$
-// Copyright: (c) AUTHOR
-// Licence: wxWindows licence
-/////////////////////////////////////////////////////////////////////////////
-
-#include "wx/wxprec.h"
-
-#include "wx/gdiobj.h"
-
-#ifndef WX_PRECOMP
- #include "wx/font.h"
- #include "wx/gdicmn.h"
-#endif
-
-class wxStockGDIPM: public wxStockGDI
-{
-public:
- wxStockGDIPM();
-
- virtual const wxFont* GetFont(Item item);
-
-private:
- typedef wxStockGDI super;
-};
-
-static wxStockGDIPM gs_wxStockGDIPM_instance;
-
-wxStockGDIPM::wxStockGDIPM()
-{
- // Override default instance
- ms_instance = this;
-}
-
-const wxFont* wxStockGDIPM::GetFont(Item item)
-{
- wxFont* font = wx_static_cast(wxFont*, ms_stockObject[item]);
- if (font == NULL)
- {
- const int fontSize = 12;
- switch (item)
- {
- case FONT_NORMAL:
- font = new wxFont(fontSize, wxMODERN, wxNORMAL, wxBOLD);
- break;
- case FONT_SMALL:
- font = new wxFont(fontSize - 4, wxSWISS, wxNORMAL, wxNORMAL);
- break;
- default:
- font = wx_const_cast(wxFont*, super::GetFont(item));
- break;
- }
- ms_stockObject[item] = font;
- }
- return font;
-}
#include <stdio.h>
#include "wx/pen.h"
#include "wx/brush.h"
+ #include "wx/fontutil.h"
#include "wx/gdicmn.h"
#include "wx/window.h"
#include "wx/settings.h"
sm_optionNames.Clear();
sm_optionValues.Clear();
delete gs_fontDefault;
+ gs_fontDefault = NULL;
}
wxColour wxSystemSettingsNative::GetColour(
return(vCol);
} // end of wxSystemSettingsNative::GetColour
+// ----------------------------------------------------------------------------
+// fonts
+// ----------------------------------------------------------------------------
+
+wxFont wxCreateFontFromStockObject(int index)
+{
+ wxFont font;
+
+ FONTMETRICS metrics;
+ HPS hPS = ::WinGetScreenPS(HWND_DESKTOP);
+ if (::GpiQueryFontMetrics(hPS, sizeof(FONTMETRICS), &metrics))
+ {
+ wxNativeFontInfo info;
+ info.fm = metrics;
+ font.Create(info);
+ }
+ else // GetStockObject() failed
+ {
+ wxFAIL_MSG( _T("stock font not found") );
+ }
+
+ return font;
+}
+
wxFont wxSystemSettingsNative::GetFont(
wxSystemFont index
)
{
- // TODO
- switch (index)
+ const bool isDefaultRequested = index == wxSYS_DEFAULT_GUI_FONT;
+ if ( isDefaultRequested )
{
- case wxSYS_DEVICE_DEFAULT_FONT:
- {
- break;
- }
- case wxSYS_DEFAULT_PALETTE:
- {
- break;
- }
- case wxSYS_SYSTEM_FIXED_FONT:
- {
- break;
- }
- case wxSYS_SYSTEM_FONT:
- {
- break;
- }
- default:
- case wxSYS_DEFAULT_GUI_FONT:
- {
- break;
- }
+ if ( gs_fontDefault )
+ return *gs_fontDefault;
+ }
+
+ wxFont font = wxCreateFontFromStockObject(index);
+
+ if ( isDefaultRequested )
+ {
+ // if we got here it means we hadn't cached it yet - do now
+ gs_fontDefault = new wxFont(font);
}
- if(wxSWISS_FONT)
- return *wxSWISS_FONT;
- return wxNullFont;
+ return font;
}
// Get a system metric, e.g. scrollbar size