Changed font generation to follow new pattern of other ports more closely.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Neis
2006-08-27 16:27:50 +00:00
parent 97d483e41a
commit 109c92042a
2 changed files with 39 additions and 87 deletions

View File

@@ -1,61 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// 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;
}

View File

@@ -16,6 +16,7 @@
#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"
@@ -69,6 +70,7 @@ void wxSystemSettingsModule::OnExit()
sm_optionNames.Clear();
sm_optionValues.Clear();
delete gs_fontDefault;
gs_fontDefault = NULL;
}
wxColour wxSystemSettingsNative::GetColour(
@@ -200,39 +202,50 @@ 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;
}
if(wxSWISS_FONT)
return *wxSWISS_FONT;
return wxNullFont;
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);
}
return font;
}
// Get a system metric, e.g. scrollbar size