wxNativeFontInfo changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8949 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -18,7 +18,6 @@
|
||||
|
||||
#include "wx/window.h"
|
||||
#include "wx/font.h"
|
||||
#include "wx/fontutil.h"
|
||||
#include "wx/colour.h"
|
||||
#include "wx/gdicmn.h"
|
||||
|
||||
|
@@ -1697,9 +1697,16 @@ typedef enum {
|
||||
wxPRINT_MODE_PRINTER = 3 // Send to printer
|
||||
} wxPrintMode;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Macro to specify "All Files" on different platforms
|
||||
// ---------------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------------
|
||||
// miscellaneous
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// define this macro if font handling is done using the X font names
|
||||
#if defined(__WXGTK__) || defined(__X__)
|
||||
#define _WX_X_FONTLIKE
|
||||
#endif
|
||||
|
||||
// macro to specify "All Files" on different platforms
|
||||
#if defined(__WXMSW__)
|
||||
# define wxALL_FILES_PATTERN "*.*"
|
||||
# define wxALL_FILES gettext_noop("All files (*.*)|*.*")
|
||||
@@ -1707,6 +1714,7 @@ typedef enum {
|
||||
# define wxALL_FILES_PATTERN "*"
|
||||
# define wxALL_FILES gettext_noop("All files (*)|*")
|
||||
#endif
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// macros that enable wxWindows apps to be compiled in absence of the
|
||||
// sytem headers, although some platform specific types are used in the
|
||||
|
@@ -67,50 +67,19 @@ enum wxFontWeight
|
||||
wxFONTWEIGHT_MAX
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxNativeFontInfo is platform-specific font representation
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// this struct should be considered as opaque font description only used by
|
||||
// the native functions, the user code can only get the objects of this type
|
||||
// from somewhere and pass it somewhere else (possibly save them somewhere
|
||||
// using ToString() and restore them using FromString())
|
||||
struct WXDLLEXPORT wxNativeFontInfo
|
||||
{
|
||||
#if defined(__WXGTK__)
|
||||
wxString xFontName;
|
||||
#else // other platforms
|
||||
//
|
||||
// This is a generic implementation that should work on all ports
|
||||
// without specific support by the port.
|
||||
//
|
||||
int pointSize;
|
||||
int family;
|
||||
int style;
|
||||
int weight;
|
||||
bool underlined;
|
||||
wxString faceName;
|
||||
wxFontEncoding encoding;
|
||||
#endif // platforms
|
||||
|
||||
// it is important to be able to serialize wxNativeFontInfo objects to be
|
||||
// able to store them (in config file, for example)
|
||||
bool FromString(const wxString& s);
|
||||
wxString ToString() const;
|
||||
};
|
||||
|
||||
WXDLLEXPORT_DATA(extern wxNativeFontInfo) wxNullNativeFontInfo;
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFontBase represents a font object
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxFontRefData;
|
||||
class WXDLLEXPORT wxNativeFontInfo;
|
||||
|
||||
class WXDLLEXPORT wxFontBase : public wxGDIObject
|
||||
{
|
||||
public:
|
||||
// creator function
|
||||
|
||||
// from the font components
|
||||
static wxFont *New(
|
||||
int pointSize, // size of the font in points
|
||||
int family, // see wxFontFamily enum
|
||||
@@ -119,7 +88,12 @@ public:
|
||||
bool underlined = FALSE, // not underlined by default
|
||||
const wxString& face = wxEmptyString, // facename
|
||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT); // ISO8859-X, ...
|
||||
static wxFont *New(const wxNativeFontInfo& info);
|
||||
|
||||
// from the (opaque) native font description object
|
||||
static wxFont *New(const wxNativeFontInfo& nativeFontDesc);
|
||||
|
||||
// from the string representation of wxNativeFontInfo
|
||||
static wxFont *New(const wxString& strNativeFontDesc);
|
||||
|
||||
// was the font successfully created?
|
||||
bool Ok() const { return m_refData != NULL; }
|
||||
@@ -136,7 +110,8 @@ public:
|
||||
virtual bool GetUnderlined() const = 0;
|
||||
virtual wxString GetFaceName() const = 0;
|
||||
virtual wxFontEncoding GetEncoding() const = 0;
|
||||
virtual wxNativeFontInfo GetNativeFontInfo() const;
|
||||
virtual wxNativeFontInfo *GetNativeFontInfo() const;
|
||||
wxString GetNativeFontInfoDesc() const;
|
||||
|
||||
// change the font characteristics
|
||||
virtual void SetPointSize( int pointSize ) = 0;
|
||||
@@ -148,6 +123,8 @@ public:
|
||||
virtual void SetEncoding(wxFontEncoding encoding) = 0;
|
||||
virtual void SetNativeFontInfo(const wxNativeFontInfo& info);
|
||||
|
||||
// VZ: there is no void SetNativeFontInfo(const wxString& info), needed?
|
||||
|
||||
// translate the fonts into human-readable string (i.e. GetStyleString()
|
||||
// will return "wxITALIC" for an italic font, ...)
|
||||
wxString GetFamilyString() const;
|
||||
|
@@ -12,6 +12,8 @@
|
||||
#ifndef _WX_FONTENC_H_
|
||||
#define _WX_FONTENC_H_
|
||||
|
||||
#include "wx/string.h"
|
||||
|
||||
// font encodings
|
||||
enum wxFontEncoding
|
||||
{
|
||||
@@ -68,4 +70,44 @@ enum wxFontEncoding
|
||||
wxFONTENCODING_MAX
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// types
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// This private structure specifies all the parameters needed to create a font
|
||||
// with the given encoding on this platform.
|
||||
//
|
||||
// Under X, it contains the last 2 elements of the font specifications
|
||||
// (registry and encoding).
|
||||
//
|
||||
// Under Windows, it contains a number which is one of predefined CHARSET_XXX
|
||||
// values.
|
||||
//
|
||||
// Under all platforms it also contains a facename string which should be
|
||||
// used, if not empty, to create fonts in this encoding (this is the only way
|
||||
// to create a font of non-standard encoding (like KOI8) under Windows - the
|
||||
// facename specifies the encoding then)
|
||||
|
||||
struct WXDLLEXPORT wxNativeEncodingInfo
|
||||
{
|
||||
wxString facename; // may be empty meaning "any"
|
||||
wxFontEncoding encoding; // so that we know what this struct represents
|
||||
|
||||
#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__)
|
||||
wxNativeEncodingInfo() { charset = 0; /* ANSI_CHARSET */ }
|
||||
|
||||
int charset;
|
||||
#elif defined(_WX_X_FONTLIKE)
|
||||
wxString xregistry,
|
||||
xencoding;
|
||||
#else
|
||||
#error "Unsupported toolkit"
|
||||
#endif
|
||||
|
||||
// this struct is saved in config by wxFontMapper, so it should know to
|
||||
// serialise itself (implemented in platform-specific code)
|
||||
bool FromString(const wxString& s);
|
||||
wxString ToString() const;
|
||||
};
|
||||
|
||||
#endif // _WX_FONTENC_H_
|
||||
|
@@ -21,9 +21,6 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#include "wx/fontenc.h" // for wxFontEncoding
|
||||
#if wxUSE_GUI
|
||||
#include "wx/fontutil.h" // for wxNativeEncodingInfo
|
||||
#endif // wxUSE_GUI
|
||||
|
||||
#if wxUSE_CONFIG
|
||||
class WXDLLEXPORT wxConfigBase;
|
||||
|
@@ -26,47 +26,35 @@
|
||||
|
||||
#include "wx/font.h" // for wxFont and wxFontEncoding
|
||||
|
||||
// for our purposes here, GDK and X are identical
|
||||
#if defined(__WXGTK__) || defined(__X__)
|
||||
#define _WX_X_FONTLIKE
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// types
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// This private structure specifies all the parameters needed to create a font
|
||||
// with the given encoding on this platform.
|
||||
//
|
||||
// Under X, it contains the last 2 elements of the font specifications
|
||||
// (registry and encoding).
|
||||
//
|
||||
// Under Windows, it contains a number which is one of predefined CHARSET_XXX
|
||||
// values.
|
||||
//
|
||||
// Under all platforms it also contains a facename string which should be
|
||||
// used, if not empty, to create fonts in this encoding (this is the only way
|
||||
// to create a font of non-standard encoding (like KOI8) under Windows - the
|
||||
// facename specifies the encoding then)
|
||||
|
||||
struct WXDLLEXPORT wxNativeEncodingInfo
|
||||
// wxNativeFontInfo is platform-specific font representation: this struct
|
||||
// should be considered as opaque font description only used by the native
|
||||
// functions, the user code can only get the objects of this type from
|
||||
// somewhere and pass it somewhere else (possibly save them somewhere using
|
||||
// ToString() and restore them using FromString())
|
||||
struct WXDLLEXPORT wxNativeFontInfo
|
||||
{
|
||||
wxString facename; // may be empty meaning "any"
|
||||
wxFontEncoding encoding; // so that we know what this struct represents
|
||||
#if defined(__WXGTK__)
|
||||
wxString xFontName;
|
||||
#else // other platforms
|
||||
//
|
||||
// This is a generic implementation that should work on all ports
|
||||
// without specific support by the port.
|
||||
//
|
||||
int pointSize;
|
||||
int family;
|
||||
int style;
|
||||
int weight;
|
||||
bool underlined;
|
||||
wxString faceName;
|
||||
wxFontEncoding encoding;
|
||||
#endif // platforms
|
||||
|
||||
#if defined(__WXMSW__) || defined(__WXPM__) || defined(__WXMAC__)
|
||||
wxNativeEncodingInfo() { charset = 0; /* ANSI_CHARSET */ }
|
||||
|
||||
int charset;
|
||||
#elif defined(_WX_X_FONTLIKE)
|
||||
wxString xregistry,
|
||||
xencoding;
|
||||
#else
|
||||
#error "Unsupported toolkit"
|
||||
#endif
|
||||
|
||||
// this struct is saved in config by wxFontMapper, so it should know to
|
||||
// serialise itself (implemented in platform-specific code)
|
||||
// it is important to be able to serialize wxNativeFontInfo objects to be
|
||||
// able to store them (in config file, for example)
|
||||
bool FromString(const wxString& s);
|
||||
wxString ToString() const;
|
||||
};
|
||||
|
@@ -36,11 +36,15 @@ public:
|
||||
// ctors and such
|
||||
wxFont() { Init(); }
|
||||
wxFont(const wxFont& font) { Init(); Ref(font); }
|
||||
wxFont(const wxString& fontname, const wxFontData& fontdata) { Create(fontname, fontdata); }
|
||||
wxFont(const wxNativeFontInfo& info);
|
||||
wxFont(const wxString& fontname,
|
||||
wxFontEncoding fontenc = wxFONTENCODING_DEFAULT)
|
||||
{
|
||||
Init();
|
||||
|
||||
// assignment
|
||||
wxFont& operator=(const wxFont& font);
|
||||
Create(fontname, fontenc);
|
||||
}
|
||||
|
||||
wxFont(const wxNativeFontInfo& info);
|
||||
|
||||
wxFont(int size,
|
||||
int family,
|
||||
@@ -61,13 +65,18 @@ public:
|
||||
int weight,
|
||||
bool underlined = FALSE,
|
||||
const wxString& face = wxEmptyString,
|
||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
|
||||
const wxNativeFontInfo& info = wxNullNativeFontInfo);
|
||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||
|
||||
bool Create(const wxString& fontname, const wxFontData& fontdata);
|
||||
// wxGTK-specific
|
||||
bool Create(const wxString& fontname,
|
||||
wxFontEncoding fontenc = wxFONTENCODING_DEFAULT);
|
||||
bool Create(const wxNativeFontInfo& fontinfo);
|
||||
|
||||
~wxFont();
|
||||
|
||||
// assignment
|
||||
wxFont& operator=(const wxFont& font);
|
||||
|
||||
// implement base class pure virtuals
|
||||
virtual int GetPointSize() const;
|
||||
virtual int GetFamily() const;
|
||||
@@ -76,7 +85,7 @@ public:
|
||||
virtual wxString GetFaceName() const;
|
||||
virtual bool GetUnderlined() const;
|
||||
virtual wxFontEncoding GetEncoding() const;
|
||||
virtual wxNativeFontInfo GetNativeFontInfo() const;
|
||||
virtual wxNativeFontInfo *GetNativeFontInfo() const;
|
||||
|
||||
virtual void SetPointSize( int pointSize );
|
||||
virtual void SetFamily( int family );
|
||||
|
@@ -36,11 +36,15 @@ public:
|
||||
// ctors and such
|
||||
wxFont() { Init(); }
|
||||
wxFont(const wxFont& font) { Init(); Ref(font); }
|
||||
wxFont(const wxString& fontname, const wxFontData& fontdata) { Create(fontname, fontdata); }
|
||||
wxFont(const wxNativeFontInfo& info);
|
||||
wxFont(const wxString& fontname,
|
||||
wxFontEncoding fontenc = wxFONTENCODING_DEFAULT)
|
||||
{
|
||||
Init();
|
||||
|
||||
// assignment
|
||||
wxFont& operator=(const wxFont& font);
|
||||
Create(fontname, fontenc);
|
||||
}
|
||||
|
||||
wxFont(const wxNativeFontInfo& info);
|
||||
|
||||
wxFont(int size,
|
||||
int family,
|
||||
@@ -61,13 +65,18 @@ public:
|
||||
int weight,
|
||||
bool underlined = FALSE,
|
||||
const wxString& face = wxEmptyString,
|
||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
|
||||
const wxNativeFontInfo& info = wxNullNativeFontInfo);
|
||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||
|
||||
bool Create(const wxString& fontname, const wxFontData& fontdata);
|
||||
// wxGTK-specific
|
||||
bool Create(const wxString& fontname,
|
||||
wxFontEncoding fontenc = wxFONTENCODING_DEFAULT);
|
||||
bool Create(const wxNativeFontInfo& fontinfo);
|
||||
|
||||
~wxFont();
|
||||
|
||||
// assignment
|
||||
wxFont& operator=(const wxFont& font);
|
||||
|
||||
// implement base class pure virtuals
|
||||
virtual int GetPointSize() const;
|
||||
virtual int GetFamily() const;
|
||||
@@ -76,7 +85,7 @@ public:
|
||||
virtual wxString GetFaceName() const;
|
||||
virtual bool GetUnderlined() const;
|
||||
virtual wxFontEncoding GetEncoding() const;
|
||||
virtual wxNativeFontInfo GetNativeFontInfo() const;
|
||||
virtual wxNativeFontInfo *GetNativeFontInfo() const;
|
||||
|
||||
virtual void SetPointSize( int pointSize );
|
||||
virtual void SetFamily( int family );
|
||||
|
@@ -415,22 +415,20 @@ void MyFrame::OnEnumerateFamiliesForEncoding(wxCommandEvent& WXUNUSED(event))
|
||||
|
||||
void MyFrame::OnCheckNativeToFromString(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxString fontInfo = m_canvas->GetTextFont().GetNativeFontInfo().ToString();
|
||||
wxString fontInfo = m_canvas->GetTextFont().GetNativeFontInfoDesc();
|
||||
|
||||
if ( fontInfo.IsEmpty() )
|
||||
wxMessageBox("Native font info string is empty!", "Font demo",
|
||||
wxOK);
|
||||
{
|
||||
wxLogError("Native font info string is empty!");
|
||||
}
|
||||
else
|
||||
{
|
||||
wxNativeFontInfo info;
|
||||
info.FromString(fontInfo);
|
||||
wxFont font(info);
|
||||
if(fontInfo == font.GetNativeFontInfo().ToString())
|
||||
wxMessageBox("wxNativeFontInfo ToString()/FromString() works!",
|
||||
"Font demo", wxOK);
|
||||
wxFont *font = wxFont::New(fontInfo);
|
||||
if ( fontInfo != font->GetNativeFontInfoDesc() )
|
||||
wxLogError("wxNativeFontInfo ToString()/FromString() broken!");
|
||||
else
|
||||
wxMessageBox("wxNativeFontInfo ToString()/FromString() doesn't work!",
|
||||
"Font demo", wxOK);
|
||||
wxLogError("wxNativeFontInfo works: %s", fontInfo.c_str());
|
||||
delete font;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -680,8 +678,9 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
||||
|
||||
if ( m_font.Ok() )
|
||||
{
|
||||
dc.SetFont(wxFont(m_font.GetNativeFontInfo()));
|
||||
fontInfo.Printf("Native font info: %s", m_font.GetNativeFontInfo().ToString().GetData());
|
||||
wxString fontDesc = m_font.GetNativeFontInfoDesc();
|
||||
dc.SetFont(wxFont(fontDesc));
|
||||
fontInfo.Printf("Native font info: %s", fontDesc.c_str());
|
||||
dc.DrawText(fontInfo, 5, 5 + dc.GetCharHeight());
|
||||
}
|
||||
|
||||
|
@@ -30,6 +30,7 @@
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/font.h"
|
||||
#include "wx/fontutil.h"
|
||||
#endif // WX_PRECOMP
|
||||
|
||||
#include "wx/tokenzr.h"
|
||||
@@ -62,22 +63,32 @@ wxFont *wxFontBase::New(const wxNativeFontInfo& info)
|
||||
return new wxFont(info);
|
||||
}
|
||||
|
||||
wxNativeFontInfo wxFontBase::GetNativeFontInfo() const
|
||||
/* static */
|
||||
wxFont *wxFontBase::New(const wxString& strNativeFontDesc)
|
||||
{
|
||||
wxNativeFontInfo fontInfo;
|
||||
if ( !fontInfo.FromString(strNativeFontDesc) )
|
||||
return (wxFont *)NULL;
|
||||
|
||||
return New(fontInfo);
|
||||
}
|
||||
|
||||
wxNativeFontInfo *wxFontBase::GetNativeFontInfo() const
|
||||
{
|
||||
#if !defined(__WXGTK__)
|
||||
wxNativeFontInfo fontInfo;
|
||||
wxNativeFontInfo *fontInfo = new wxNativeFontInfo;
|
||||
|
||||
fontInfo.pointSize = GetPointSize();
|
||||
fontInfo.family = GetFamily();
|
||||
fontInfo.style = GetStyle();
|
||||
fontInfo.weight = GetWeight();
|
||||
fontInfo.underlined = GetUnderlined();
|
||||
fontInfo.faceName = GetFaceName();
|
||||
fontInfo.encoding = GetEncoding();
|
||||
fontInfo->pointSize = GetPointSize();
|
||||
fontInfo->family = GetFamily();
|
||||
fontInfo->style = GetStyle();
|
||||
fontInfo->weight = GetWeight();
|
||||
fontInfo->underlined = GetUnderlined();
|
||||
fontInfo->faceName = GetFaceName();
|
||||
fontInfo->encoding = GetEncoding();
|
||||
|
||||
return fontInfo;
|
||||
#else
|
||||
return wxNullNativeFontInfo;
|
||||
return (wxNativeFontInfo *)NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -94,6 +105,19 @@ void wxFontBase::SetNativeFontInfo(const wxNativeFontInfo& info)
|
||||
#endif
|
||||
}
|
||||
|
||||
wxString wxFontBase::GetNativeFontInfoDesc() const
|
||||
{
|
||||
wxString fontDesc;
|
||||
wxNativeFontInfo *fontInfo = GetNativeFontInfo();
|
||||
if ( fontInfo )
|
||||
{
|
||||
fontDesc = fontInfo->ToString();
|
||||
delete fontInfo;
|
||||
}
|
||||
|
||||
return fontDesc;
|
||||
}
|
||||
|
||||
wxFont& wxFont::operator=(const wxFont& font)
|
||||
{
|
||||
if ( this != &font )
|
||||
@@ -213,7 +237,7 @@ wxString wxNativeFontInfo::ToString() const
|
||||
{
|
||||
wxString s;
|
||||
|
||||
s.Printf("%d;%d;%d;%d;%d;%s;%d",
|
||||
s.Printf(_T("%d;%d;%d;%d;%d;%s;%d"),
|
||||
pointSize,
|
||||
family,
|
||||
style,
|
||||
@@ -225,5 +249,5 @@ wxString wxNativeFontInfo::ToString() const
|
||||
return s;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif // generic wxNativeFontInfo implementation
|
||||
|
||||
|
@@ -32,6 +32,7 @@
|
||||
#include "wx/app.h"
|
||||
#include "wx/log.h"
|
||||
#include "wx/intl.h"
|
||||
#include "wx/fontutil.h"
|
||||
#endif // PCH
|
||||
|
||||
#include "wx/fontmap.h"
|
||||
|
@@ -126,7 +126,6 @@ wxBrush wxNullBrush;
|
||||
wxFont wxNullFont;
|
||||
wxColour wxNullColour;
|
||||
wxPalette wxNullPalette;
|
||||
wxNativeFontInfo wxNullNativeFontInfo;
|
||||
|
||||
/* Default window names */
|
||||
const wxChar *wxControlNameStr = wxT("control");
|
||||
|
@@ -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,16 +191,15 @@ 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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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() )
|
||||
if ( info )
|
||||
{
|
||||
const wxString& fontname = info->xFontName;
|
||||
if ( !fontname )
|
||||
font.GetInternalFont();
|
||||
gtk_font_selection_dialog_set_font_name(sel, wxConvCurrent->cWX2MB(info.xFontName.GetData()));
|
||||
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?"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -126,7 +126,6 @@ wxBrush wxNullBrush;
|
||||
wxFont wxNullFont;
|
||||
wxColour wxNullColour;
|
||||
wxPalette wxNullPalette;
|
||||
wxNativeFontInfo wxNullNativeFontInfo;
|
||||
|
||||
/* Default window names */
|
||||
const wxChar *wxControlNameStr = wxT("control");
|
||||
|
@@ -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,16 +191,15 @@ 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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -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() )
|
||||
if ( info )
|
||||
{
|
||||
const wxString& fontname = info->xFontName;
|
||||
if ( !fontname )
|
||||
font.GetInternalFont();
|
||||
gtk_font_selection_dialog_set_font_name(sel, wxConvCurrent->cWX2MB(info.xFontName.GetData()));
|
||||
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?"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user