wxNativeFontInfo changes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8949 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2000-12-18 21:15:16 +00:00
parent accb325754
commit 7826e2dd83
17 changed files with 265 additions and 186 deletions

View File

@@ -126,7 +126,6 @@ wxBrush wxNullBrush;
wxFont wxNullFont;
wxColour wxNullColour;
wxPalette wxNullPalette;
wxNativeFontInfo wxNullNativeFontInfo;
/* Default window names */
const wxChar *wxControlNameStr = wxT("control");

View File

@@ -47,8 +47,7 @@ public:
int weight = wxDEFAULT,
bool underlined = FALSE,
const wxString& faceName = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
const wxNativeFontInfo& info = wxNullNativeFontInfo);
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
wxFontRefData( const wxFontRefData& data );
virtual ~wxFontRefData();
@@ -60,8 +59,7 @@ protected:
int weight,
bool underlined,
const wxString& faceName,
wxFontEncoding encoding,
const wxNativeFontInfo& info);
wxFontEncoding encoding);
private:
wxList m_scaled_xfonts;
@@ -72,6 +70,7 @@ private:
bool m_underlined;
wxString m_faceName;
wxFontEncoding m_encoding;
wxNativeFontInfo m_nativeFontInfo;
friend class wxFont;
@@ -91,8 +90,7 @@ void wxFontRefData::Init(int pointSize,
int weight,
bool underlined,
const wxString& faceName,
wxFontEncoding encoding,
const wxNativeFontInfo& info = wxNullNativeFontInfo)
wxFontEncoding encoding)
{
if (family == wxDEFAULT)
m_family = wxSWISS;
@@ -118,24 +116,22 @@ void wxFontRefData::Init(int pointSize,
m_underlined = underlined;
m_encoding = encoding;
m_nativeFontInfo = info;
}
wxFontRefData::wxFontRefData( const wxFontRefData& data )
: m_scaled_xfonts(wxKEY_INTEGER)
{
Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
data.m_underlined, data.m_faceName, data.m_encoding,
data.m_nativeFontInfo );
data.m_underlined, data.m_faceName, data.m_encoding);
}
wxFontRefData::wxFontRefData(int size, int family, int style,
int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding,
const wxNativeFontInfo& info = wxNullNativeFontInfo)
int weight, bool underlined,
const wxString& faceName,
wxFontEncoding encoding)
: m_scaled_xfonts(wxKEY_INTEGER)
{
Init(size, family, style, weight,
underlined, faceName, encoding, info);
Init(size, family, style, weight, underlined, faceName, encoding);
}
wxFontRefData::~wxFontRefData()
@@ -179,7 +175,14 @@ void wxFont::Init()
wxFont::wxFont(const wxNativeFontInfo& info)
{
Create(info.xFontName, wxFontData());
Init();
Create(info.ToString());
}
bool wxFont::Create(const wxNativeFontInfo& info)
{
return Create(info.xFontName);
}
bool wxFont::Create( int pointSize,
@@ -188,20 +191,19 @@ bool wxFont::Create( int pointSize,
int weight,
bool underlined,
const wxString& face,
wxFontEncoding encoding,
const wxNativeFontInfo& info )
wxFontEncoding encoding)
{
m_refData = new wxFontRefData(pointSize, family, style, weight,
underlined, face, encoding, info);
underlined, face, encoding);
return TRUE;
}
bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
bool wxFont::Create(const wxString& fontname, wxFontEncoding enc)
{
Init();
if(!fontname)
if( !fontname )
{
*this = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT);
return TRUE;
@@ -267,7 +269,7 @@ bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
tn.GetNextToken(); // avg width
// deal with font encoding
M_FONTDATA->m_encoding = fontdata.GetEncoding();
M_FONTDATA->m_encoding = enc;
if ( M_FONTDATA->m_encoding == wxFONTENCODING_SYSTEM )
{
wxString registry = tn.GetNextToken().MakeUpper(),
@@ -376,13 +378,14 @@ wxFontEncoding wxFont::GetEncoding() const
return M_FONTDATA->m_encoding;
}
wxNativeFontInfo wxFont::GetNativeFontInfo() const
wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
wxCHECK_MSG( Ok(), wxNullNativeFontInfo, wxT("invalid font") );
wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
if(M_FONTDATA->m_nativeFontInfo.xFontName.IsEmpty())
GetInternalFont();
return M_FONTDATA->m_nativeFontInfo;
return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
}

View File

@@ -11,6 +11,7 @@
#pragma implementation "fontdlg.h"
#endif
#include "wx/fontutil.h"
#include "wx/fontdlg.h"
#include "wx/utils.h"
#include "wx/intl.h"
@@ -64,7 +65,8 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial
if (!gfont)
{
wxMessageBox(_("Please choose a valid font."), _("Error"), wxOK);
wxMessageBox(_("Please choose a valid font."), _("Error"),
wxOK | wxICON_ERROR);
return;
}
@@ -101,13 +103,12 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial
// we ignore the facename here - should be enough to choose an arbitrary
// one if the registry/encoding are specified
// dialog->m_fontData.EncodingInfo().facename = xfamily;
fontdata.EncodingInfo().xregistry = xregistry;
fontdata.EncodingInfo().xencoding = xencoding;
// pass fontdata to wxFont ctor so that it can get the encoding from there
// if it is already known (otherwise it will try to deduce it itself)
dialog->m_fontData.SetChosenFont( wxFont(fontname, fontdata) );
dialog->m_fontData.SetChosenFont(wxFont(fontname, fontdata.GetEncoding()));
g_free( fontname );
@@ -178,11 +179,21 @@ wxFontDialog::wxFontDialog( wxWindow *parent, wxFontData *fontdata )
wxFont font = m_fontData.GetInitialFont();
if( font.Ok() )
{
wxNativeFontInfo info = font.GetNativeFontInfo();
wxNativeFontInfo *info = font.GetNativeFontInfo();
if( info.xFontName.IsEmpty() )
font.GetInternalFont();
gtk_font_selection_dialog_set_font_name(sel, wxConvCurrent->cWX2MB(info.xFontName.GetData()));
if ( info )
{
const wxString& fontname = info->xFontName;
if ( !fontname )
font.GetInternalFont();
gtk_font_selection_dialog_set_font_name(sel,
wxConvCurrent->cWX2MB(fontname));
}
else
{
// this is not supposed to happen!
wxFAIL_MSG(_T("font is ok but no native font info?"));
}
}
}