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/window.h"
|
||||||
#include "wx/font.h"
|
#include "wx/font.h"
|
||||||
#include "wx/fontutil.h"
|
|
||||||
#include "wx/colour.h"
|
#include "wx/colour.h"
|
||||||
#include "wx/gdicmn.h"
|
#include "wx/gdicmn.h"
|
||||||
|
|
||||||
|
@@ -1697,9 +1697,16 @@ typedef enum {
|
|||||||
wxPRINT_MODE_PRINTER = 3 // Send to printer
|
wxPRINT_MODE_PRINTER = 3 // Send to printer
|
||||||
} wxPrintMode;
|
} 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__)
|
#if defined(__WXMSW__)
|
||||||
# define wxALL_FILES_PATTERN "*.*"
|
# define wxALL_FILES_PATTERN "*.*"
|
||||||
# define wxALL_FILES gettext_noop("All files (*.*)|*.*")
|
# define wxALL_FILES gettext_noop("All files (*.*)|*.*")
|
||||||
@@ -1707,6 +1714,7 @@ typedef enum {
|
|||||||
# define wxALL_FILES_PATTERN "*"
|
# define wxALL_FILES_PATTERN "*"
|
||||||
# define wxALL_FILES gettext_noop("All files (*)|*")
|
# define wxALL_FILES gettext_noop("All files (*)|*")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// macros that enable wxWindows apps to be compiled in absence of the
|
// macros that enable wxWindows apps to be compiled in absence of the
|
||||||
// sytem headers, although some platform specific types are used in the
|
// sytem headers, although some platform specific types are used in the
|
||||||
|
@@ -67,50 +67,19 @@ enum wxFontWeight
|
|||||||
wxFONTWEIGHT_MAX
|
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
|
// wxFontBase represents a font object
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLEXPORT wxFontRefData;
|
class WXDLLEXPORT wxFontRefData;
|
||||||
|
class WXDLLEXPORT wxNativeFontInfo;
|
||||||
|
|
||||||
class WXDLLEXPORT wxFontBase : public wxGDIObject
|
class WXDLLEXPORT wxFontBase : public wxGDIObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// creator function
|
// creator function
|
||||||
|
|
||||||
|
// from the font components
|
||||||
static wxFont *New(
|
static wxFont *New(
|
||||||
int pointSize, // size of the font in points
|
int pointSize, // size of the font in points
|
||||||
int family, // see wxFontFamily enum
|
int family, // see wxFontFamily enum
|
||||||
@@ -119,7 +88,12 @@ public:
|
|||||||
bool underlined = FALSE, // not underlined by default
|
bool underlined = FALSE, // not underlined by default
|
||||||
const wxString& face = wxEmptyString, // facename
|
const wxString& face = wxEmptyString, // facename
|
||||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT); // ISO8859-X, ...
|
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?
|
// was the font successfully created?
|
||||||
bool Ok() const { return m_refData != NULL; }
|
bool Ok() const { return m_refData != NULL; }
|
||||||
@@ -136,7 +110,8 @@ public:
|
|||||||
virtual bool GetUnderlined() const = 0;
|
virtual bool GetUnderlined() const = 0;
|
||||||
virtual wxString GetFaceName() const = 0;
|
virtual wxString GetFaceName() const = 0;
|
||||||
virtual wxFontEncoding GetEncoding() const = 0;
|
virtual wxFontEncoding GetEncoding() const = 0;
|
||||||
virtual wxNativeFontInfo GetNativeFontInfo() const;
|
virtual wxNativeFontInfo *GetNativeFontInfo() const;
|
||||||
|
wxString GetNativeFontInfoDesc() const;
|
||||||
|
|
||||||
// change the font characteristics
|
// change the font characteristics
|
||||||
virtual void SetPointSize( int pointSize ) = 0;
|
virtual void SetPointSize( int pointSize ) = 0;
|
||||||
@@ -148,6 +123,8 @@ public:
|
|||||||
virtual void SetEncoding(wxFontEncoding encoding) = 0;
|
virtual void SetEncoding(wxFontEncoding encoding) = 0;
|
||||||
virtual void SetNativeFontInfo(const wxNativeFontInfo& info);
|
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()
|
// translate the fonts into human-readable string (i.e. GetStyleString()
|
||||||
// will return "wxITALIC" for an italic font, ...)
|
// will return "wxITALIC" for an italic font, ...)
|
||||||
wxString GetFamilyString() const;
|
wxString GetFamilyString() const;
|
||||||
|
@@ -12,6 +12,8 @@
|
|||||||
#ifndef _WX_FONTENC_H_
|
#ifndef _WX_FONTENC_H_
|
||||||
#define _WX_FONTENC_H_
|
#define _WX_FONTENC_H_
|
||||||
|
|
||||||
|
#include "wx/string.h"
|
||||||
|
|
||||||
// font encodings
|
// font encodings
|
||||||
enum wxFontEncoding
|
enum wxFontEncoding
|
||||||
{
|
{
|
||||||
@@ -68,4 +70,44 @@ enum wxFontEncoding
|
|||||||
wxFONTENCODING_MAX
|
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_
|
#endif // _WX_FONTENC_H_
|
||||||
|
@@ -21,9 +21,6 @@
|
|||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#include "wx/fontenc.h" // for wxFontEncoding
|
#include "wx/fontenc.h" // for wxFontEncoding
|
||||||
#if wxUSE_GUI
|
|
||||||
#include "wx/fontutil.h" // for wxNativeEncodingInfo
|
|
||||||
#endif // wxUSE_GUI
|
|
||||||
|
|
||||||
#if wxUSE_CONFIG
|
#if wxUSE_CONFIG
|
||||||
class WXDLLEXPORT wxConfigBase;
|
class WXDLLEXPORT wxConfigBase;
|
||||||
|
@@ -26,47 +26,35 @@
|
|||||||
|
|
||||||
#include "wx/font.h" // for wxFont and wxFontEncoding
|
#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
|
// types
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
// This private structure specifies all the parameters needed to create a font
|
// wxNativeFontInfo is platform-specific font representation: this struct
|
||||||
// with the given encoding on this platform.
|
// 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
|
||||||
// Under X, it contains the last 2 elements of the font specifications
|
// somewhere and pass it somewhere else (possibly save them somewhere using
|
||||||
// (registry and encoding).
|
// ToString() and restore them using FromString())
|
||||||
//
|
struct WXDLLEXPORT wxNativeFontInfo
|
||||||
// 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"
|
#if defined(__WXGTK__)
|
||||||
wxFontEncoding encoding; // so that we know what this struct represents
|
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__)
|
// it is important to be able to serialize wxNativeFontInfo objects to be
|
||||||
wxNativeEncodingInfo() { charset = 0; /* ANSI_CHARSET */ }
|
// able to store them (in config file, for example)
|
||||||
|
|
||||||
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);
|
bool FromString(const wxString& s);
|
||||||
wxString ToString() const;
|
wxString ToString() const;
|
||||||
};
|
};
|
||||||
|
@@ -36,11 +36,15 @@ public:
|
|||||||
// ctors and such
|
// ctors and such
|
||||||
wxFont() { Init(); }
|
wxFont() { Init(); }
|
||||||
wxFont(const wxFont& font) { Init(); Ref(font); }
|
wxFont(const wxFont& font) { Init(); Ref(font); }
|
||||||
wxFont(const wxString& fontname, const wxFontData& fontdata) { Create(fontname, fontdata); }
|
wxFont(const wxString& fontname,
|
||||||
wxFont(const wxNativeFontInfo& info);
|
wxFontEncoding fontenc = wxFONTENCODING_DEFAULT)
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
|
||||||
// assignment
|
Create(fontname, fontenc);
|
||||||
wxFont& operator=(const wxFont& font);
|
}
|
||||||
|
|
||||||
|
wxFont(const wxNativeFontInfo& info);
|
||||||
|
|
||||||
wxFont(int size,
|
wxFont(int size,
|
||||||
int family,
|
int family,
|
||||||
@@ -61,13 +65,18 @@ public:
|
|||||||
int weight,
|
int weight,
|
||||||
bool underlined = FALSE,
|
bool underlined = FALSE,
|
||||||
const wxString& face = wxEmptyString,
|
const wxString& face = wxEmptyString,
|
||||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
|
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||||
const wxNativeFontInfo& info = wxNullNativeFontInfo);
|
|
||||||
|
|
||||||
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();
|
~wxFont();
|
||||||
|
|
||||||
|
// assignment
|
||||||
|
wxFont& operator=(const wxFont& font);
|
||||||
|
|
||||||
// implement base class pure virtuals
|
// implement base class pure virtuals
|
||||||
virtual int GetPointSize() const;
|
virtual int GetPointSize() const;
|
||||||
virtual int GetFamily() const;
|
virtual int GetFamily() const;
|
||||||
@@ -76,7 +85,7 @@ public:
|
|||||||
virtual wxString GetFaceName() const;
|
virtual wxString GetFaceName() const;
|
||||||
virtual bool GetUnderlined() const;
|
virtual bool GetUnderlined() const;
|
||||||
virtual wxFontEncoding GetEncoding() const;
|
virtual wxFontEncoding GetEncoding() const;
|
||||||
virtual wxNativeFontInfo GetNativeFontInfo() const;
|
virtual wxNativeFontInfo *GetNativeFontInfo() const;
|
||||||
|
|
||||||
virtual void SetPointSize( int pointSize );
|
virtual void SetPointSize( int pointSize );
|
||||||
virtual void SetFamily( int family );
|
virtual void SetFamily( int family );
|
||||||
|
@@ -36,11 +36,15 @@ public:
|
|||||||
// ctors and such
|
// ctors and such
|
||||||
wxFont() { Init(); }
|
wxFont() { Init(); }
|
||||||
wxFont(const wxFont& font) { Init(); Ref(font); }
|
wxFont(const wxFont& font) { Init(); Ref(font); }
|
||||||
wxFont(const wxString& fontname, const wxFontData& fontdata) { Create(fontname, fontdata); }
|
wxFont(const wxString& fontname,
|
||||||
wxFont(const wxNativeFontInfo& info);
|
wxFontEncoding fontenc = wxFONTENCODING_DEFAULT)
|
||||||
|
{
|
||||||
|
Init();
|
||||||
|
|
||||||
// assignment
|
Create(fontname, fontenc);
|
||||||
wxFont& operator=(const wxFont& font);
|
}
|
||||||
|
|
||||||
|
wxFont(const wxNativeFontInfo& info);
|
||||||
|
|
||||||
wxFont(int size,
|
wxFont(int size,
|
||||||
int family,
|
int family,
|
||||||
@@ -61,13 +65,18 @@ public:
|
|||||||
int weight,
|
int weight,
|
||||||
bool underlined = FALSE,
|
bool underlined = FALSE,
|
||||||
const wxString& face = wxEmptyString,
|
const wxString& face = wxEmptyString,
|
||||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
|
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||||
const wxNativeFontInfo& info = wxNullNativeFontInfo);
|
|
||||||
|
|
||||||
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();
|
~wxFont();
|
||||||
|
|
||||||
|
// assignment
|
||||||
|
wxFont& operator=(const wxFont& font);
|
||||||
|
|
||||||
// implement base class pure virtuals
|
// implement base class pure virtuals
|
||||||
virtual int GetPointSize() const;
|
virtual int GetPointSize() const;
|
||||||
virtual int GetFamily() const;
|
virtual int GetFamily() const;
|
||||||
@@ -76,7 +85,7 @@ public:
|
|||||||
virtual wxString GetFaceName() const;
|
virtual wxString GetFaceName() const;
|
||||||
virtual bool GetUnderlined() const;
|
virtual bool GetUnderlined() const;
|
||||||
virtual wxFontEncoding GetEncoding() const;
|
virtual wxFontEncoding GetEncoding() const;
|
||||||
virtual wxNativeFontInfo GetNativeFontInfo() const;
|
virtual wxNativeFontInfo *GetNativeFontInfo() const;
|
||||||
|
|
||||||
virtual void SetPointSize( int pointSize );
|
virtual void SetPointSize( int pointSize );
|
||||||
virtual void SetFamily( int family );
|
virtual void SetFamily( int family );
|
||||||
|
@@ -415,22 +415,20 @@ void MyFrame::OnEnumerateFamiliesForEncoding(wxCommandEvent& WXUNUSED(event))
|
|||||||
|
|
||||||
void MyFrame::OnCheckNativeToFromString(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())
|
if ( fontInfo.IsEmpty() )
|
||||||
wxMessageBox("Native font info string is empty!", "Font demo",
|
{
|
||||||
wxOK);
|
wxLogError("Native font info string is empty!");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
wxNativeFontInfo info;
|
wxFont *font = wxFont::New(fontInfo);
|
||||||
info.FromString(fontInfo);
|
if ( fontInfo != font->GetNativeFontInfoDesc() )
|
||||||
wxFont font(info);
|
wxLogError("wxNativeFontInfo ToString()/FromString() broken!");
|
||||||
if(fontInfo == font.GetNativeFontInfo().ToString())
|
|
||||||
wxMessageBox("wxNativeFontInfo ToString()/FromString() works!",
|
|
||||||
"Font demo", wxOK);
|
|
||||||
else
|
else
|
||||||
wxMessageBox("wxNativeFontInfo ToString()/FromString() doesn't work!",
|
wxLogError("wxNativeFontInfo works: %s", fontInfo.c_str());
|
||||||
"Font demo", wxOK);
|
delete font;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -678,11 +676,12 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
|||||||
|
|
||||||
dc.DrawText(fontInfo, 5, 5);
|
dc.DrawText(fontInfo, 5, 5);
|
||||||
|
|
||||||
if(m_font.Ok())
|
if ( m_font.Ok() )
|
||||||
{
|
{
|
||||||
dc.SetFont(wxFont(m_font.GetNativeFontInfo()));
|
wxString fontDesc = m_font.GetNativeFontInfoDesc();
|
||||||
fontInfo.Printf("Native font info: %s", m_font.GetNativeFontInfo().ToString().GetData());
|
dc.SetFont(wxFont(fontDesc));
|
||||||
dc.DrawText(fontInfo, 5, 5 + dc.GetCharHeight());
|
fontInfo.Printf("Native font info: %s", fontDesc.c_str());
|
||||||
|
dc.DrawText(fontInfo, 5, 5 + dc.GetCharHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
// prepare to draw the font
|
// prepare to draw the font
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
#ifndef WX_PRECOMP
|
#ifndef WX_PRECOMP
|
||||||
#include "wx/font.h"
|
#include "wx/font.h"
|
||||||
|
#include "wx/fontutil.h"
|
||||||
#endif // WX_PRECOMP
|
#endif // WX_PRECOMP
|
||||||
|
|
||||||
#include "wx/tokenzr.h"
|
#include "wx/tokenzr.h"
|
||||||
@@ -62,22 +63,32 @@ wxFont *wxFontBase::New(const wxNativeFontInfo& info)
|
|||||||
return new wxFont(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__)
|
#if !defined(__WXGTK__)
|
||||||
wxNativeFontInfo fontInfo;
|
wxNativeFontInfo *fontInfo = new wxNativeFontInfo;
|
||||||
|
|
||||||
fontInfo.pointSize = GetPointSize();
|
fontInfo->pointSize = GetPointSize();
|
||||||
fontInfo.family = GetFamily();
|
fontInfo->family = GetFamily();
|
||||||
fontInfo.style = GetStyle();
|
fontInfo->style = GetStyle();
|
||||||
fontInfo.weight = GetWeight();
|
fontInfo->weight = GetWeight();
|
||||||
fontInfo.underlined = GetUnderlined();
|
fontInfo->underlined = GetUnderlined();
|
||||||
fontInfo.faceName = GetFaceName();
|
fontInfo->faceName = GetFaceName();
|
||||||
fontInfo.encoding = GetEncoding();
|
fontInfo->encoding = GetEncoding();
|
||||||
|
|
||||||
return fontInfo;
|
return fontInfo;
|
||||||
#else
|
#else
|
||||||
return wxNullNativeFontInfo;
|
return (wxNativeFontInfo *)NULL;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,6 +105,19 @@ void wxFontBase::SetNativeFontInfo(const wxNativeFontInfo& info)
|
|||||||
#endif
|
#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)
|
wxFont& wxFont::operator=(const wxFont& font)
|
||||||
{
|
{
|
||||||
if ( this != &font )
|
if ( this != &font )
|
||||||
@@ -213,7 +237,7 @@ wxString wxNativeFontInfo::ToString() const
|
|||||||
{
|
{
|
||||||
wxString s;
|
wxString s;
|
||||||
|
|
||||||
s.Printf("%d;%d;%d;%d;%d;%s;%d",
|
s.Printf(_T("%d;%d;%d;%d;%d;%s;%d"),
|
||||||
pointSize,
|
pointSize,
|
||||||
family,
|
family,
|
||||||
style,
|
style,
|
||||||
@@ -225,5 +249,5 @@ wxString wxNativeFontInfo::ToString() const
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // generic wxNativeFontInfo implementation
|
||||||
|
|
||||||
|
@@ -32,6 +32,7 @@
|
|||||||
#include "wx/app.h"
|
#include "wx/app.h"
|
||||||
#include "wx/log.h"
|
#include "wx/log.h"
|
||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
|
#include "wx/fontutil.h"
|
||||||
#endif // PCH
|
#endif // PCH
|
||||||
|
|
||||||
#include "wx/fontmap.h"
|
#include "wx/fontmap.h"
|
||||||
@@ -685,10 +686,10 @@ bool wxFontMapper::GetAltForEncoding(wxFontEncoding encoding,
|
|||||||
wxFont font = retData.GetChosenFont();
|
wxFont font = retData.GetChosenFont();
|
||||||
|
|
||||||
*info = retData.EncodingInfo();
|
*info = retData.EncodingInfo();
|
||||||
info -> encoding = retData.GetEncoding();
|
info->encoding = retData.GetEncoding();
|
||||||
|
|
||||||
#if wxUSE_CONFIG
|
#if wxUSE_CONFIG
|
||||||
// remember this in the config
|
// remember this in the config
|
||||||
if ( ChangePath(FONTMAPPER_FONT_FROM_ENCODING_PATH, &pathOld) )
|
if ( ChangePath(FONTMAPPER_FONT_FROM_ENCODING_PATH, &pathOld) )
|
||||||
{
|
{
|
||||||
GetConfig()->Write(configEntry, info->ToString());
|
GetConfig()->Write(configEntry, info->ToString());
|
||||||
|
@@ -126,7 +126,6 @@ wxBrush wxNullBrush;
|
|||||||
wxFont wxNullFont;
|
wxFont wxNullFont;
|
||||||
wxColour wxNullColour;
|
wxColour wxNullColour;
|
||||||
wxPalette wxNullPalette;
|
wxPalette wxNullPalette;
|
||||||
wxNativeFontInfo wxNullNativeFontInfo;
|
|
||||||
|
|
||||||
/* Default window names */
|
/* Default window names */
|
||||||
const wxChar *wxControlNameStr = wxT("control");
|
const wxChar *wxControlNameStr = wxT("control");
|
||||||
|
@@ -47,8 +47,7 @@ public:
|
|||||||
int weight = wxDEFAULT,
|
int weight = wxDEFAULT,
|
||||||
bool underlined = FALSE,
|
bool underlined = FALSE,
|
||||||
const wxString& faceName = wxEmptyString,
|
const wxString& faceName = wxEmptyString,
|
||||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
|
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||||
const wxNativeFontInfo& info = wxNullNativeFontInfo);
|
|
||||||
wxFontRefData( const wxFontRefData& data );
|
wxFontRefData( const wxFontRefData& data );
|
||||||
virtual ~wxFontRefData();
|
virtual ~wxFontRefData();
|
||||||
|
|
||||||
@@ -60,8 +59,7 @@ protected:
|
|||||||
int weight,
|
int weight,
|
||||||
bool underlined,
|
bool underlined,
|
||||||
const wxString& faceName,
|
const wxString& faceName,
|
||||||
wxFontEncoding encoding,
|
wxFontEncoding encoding);
|
||||||
const wxNativeFontInfo& info);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxList m_scaled_xfonts;
|
wxList m_scaled_xfonts;
|
||||||
@@ -72,6 +70,7 @@ private:
|
|||||||
bool m_underlined;
|
bool m_underlined;
|
||||||
wxString m_faceName;
|
wxString m_faceName;
|
||||||
wxFontEncoding m_encoding;
|
wxFontEncoding m_encoding;
|
||||||
|
|
||||||
wxNativeFontInfo m_nativeFontInfo;
|
wxNativeFontInfo m_nativeFontInfo;
|
||||||
|
|
||||||
friend class wxFont;
|
friend class wxFont;
|
||||||
@@ -91,8 +90,7 @@ void wxFontRefData::Init(int pointSize,
|
|||||||
int weight,
|
int weight,
|
||||||
bool underlined,
|
bool underlined,
|
||||||
const wxString& faceName,
|
const wxString& faceName,
|
||||||
wxFontEncoding encoding,
|
wxFontEncoding encoding)
|
||||||
const wxNativeFontInfo& info = wxNullNativeFontInfo)
|
|
||||||
{
|
{
|
||||||
if (family == wxDEFAULT)
|
if (family == wxDEFAULT)
|
||||||
m_family = wxSWISS;
|
m_family = wxSWISS;
|
||||||
@@ -118,24 +116,22 @@ void wxFontRefData::Init(int pointSize,
|
|||||||
|
|
||||||
m_underlined = underlined;
|
m_underlined = underlined;
|
||||||
m_encoding = encoding;
|
m_encoding = encoding;
|
||||||
m_nativeFontInfo = info;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFontRefData::wxFontRefData( const wxFontRefData& data )
|
wxFontRefData::wxFontRefData( const wxFontRefData& data )
|
||||||
: m_scaled_xfonts(wxKEY_INTEGER)
|
: m_scaled_xfonts(wxKEY_INTEGER)
|
||||||
{
|
{
|
||||||
Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
|
Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
|
||||||
data.m_underlined, data.m_faceName, data.m_encoding,
|
data.m_underlined, data.m_faceName, data.m_encoding);
|
||||||
data.m_nativeFontInfo );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFontRefData::wxFontRefData(int size, int family, int style,
|
wxFontRefData::wxFontRefData(int size, int family, int style,
|
||||||
int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding,
|
int weight, bool underlined,
|
||||||
const wxNativeFontInfo& info = wxNullNativeFontInfo)
|
const wxString& faceName,
|
||||||
|
wxFontEncoding encoding)
|
||||||
: m_scaled_xfonts(wxKEY_INTEGER)
|
: m_scaled_xfonts(wxKEY_INTEGER)
|
||||||
{
|
{
|
||||||
Init(size, family, style, weight,
|
Init(size, family, style, weight, underlined, faceName, encoding);
|
||||||
underlined, faceName, encoding, info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFontRefData::~wxFontRefData()
|
wxFontRefData::~wxFontRefData()
|
||||||
@@ -179,7 +175,14 @@ void wxFont::Init()
|
|||||||
|
|
||||||
wxFont::wxFont(const wxNativeFontInfo& info)
|
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,
|
bool wxFont::Create( int pointSize,
|
||||||
@@ -188,20 +191,19 @@ bool wxFont::Create( int pointSize,
|
|||||||
int weight,
|
int weight,
|
||||||
bool underlined,
|
bool underlined,
|
||||||
const wxString& face,
|
const wxString& face,
|
||||||
wxFontEncoding encoding,
|
wxFontEncoding encoding)
|
||||||
const wxNativeFontInfo& info )
|
|
||||||
{
|
{
|
||||||
m_refData = new wxFontRefData(pointSize, family, style, weight,
|
m_refData = new wxFontRefData(pointSize, family, style, weight,
|
||||||
underlined, face, encoding, info);
|
underlined, face, encoding);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
|
bool wxFont::Create(const wxString& fontname, wxFontEncoding enc)
|
||||||
{
|
{
|
||||||
Init();
|
Init();
|
||||||
|
|
||||||
if(!fontname)
|
if( !fontname )
|
||||||
{
|
{
|
||||||
*this = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT);
|
*this = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -267,7 +269,7 @@ bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
|
|||||||
tn.GetNextToken(); // avg width
|
tn.GetNextToken(); // avg width
|
||||||
|
|
||||||
// deal with font encoding
|
// deal with font encoding
|
||||||
M_FONTDATA->m_encoding = fontdata.GetEncoding();
|
M_FONTDATA->m_encoding = enc;
|
||||||
if ( M_FONTDATA->m_encoding == wxFONTENCODING_SYSTEM )
|
if ( M_FONTDATA->m_encoding == wxFONTENCODING_SYSTEM )
|
||||||
{
|
{
|
||||||
wxString registry = tn.GetNextToken().MakeUpper(),
|
wxString registry = tn.GetNextToken().MakeUpper(),
|
||||||
@@ -376,13 +378,14 @@ wxFontEncoding wxFont::GetEncoding() const
|
|||||||
return M_FONTDATA->m_encoding;
|
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())
|
if(M_FONTDATA->m_nativeFontInfo.xFontName.IsEmpty())
|
||||||
GetInternalFont();
|
GetInternalFont();
|
||||||
return M_FONTDATA->m_nativeFontInfo;
|
|
||||||
|
return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#pragma implementation "fontdlg.h"
|
#pragma implementation "fontdlg.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fontutil.h"
|
||||||
#include "wx/fontdlg.h"
|
#include "wx/fontdlg.h"
|
||||||
#include "wx/utils.h"
|
#include "wx/utils.h"
|
||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
@@ -64,7 +65,8 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial
|
|||||||
|
|
||||||
if (!gfont)
|
if (!gfont)
|
||||||
{
|
{
|
||||||
wxMessageBox(_("Please choose a valid font."), _("Error"), wxOK);
|
wxMessageBox(_("Please choose a valid font."), _("Error"),
|
||||||
|
wxOK | wxICON_ERROR);
|
||||||
return;
|
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
|
// we ignore the facename here - should be enough to choose an arbitrary
|
||||||
// one if the registry/encoding are specified
|
// one if the registry/encoding are specified
|
||||||
// dialog->m_fontData.EncodingInfo().facename = xfamily;
|
|
||||||
fontdata.EncodingInfo().xregistry = xregistry;
|
fontdata.EncodingInfo().xregistry = xregistry;
|
||||||
fontdata.EncodingInfo().xencoding = xencoding;
|
fontdata.EncodingInfo().xencoding = xencoding;
|
||||||
|
|
||||||
// pass fontdata to wxFont ctor so that it can get the encoding from there
|
// 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)
|
// 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 );
|
g_free( fontname );
|
||||||
|
|
||||||
@@ -178,11 +179,21 @@ wxFontDialog::wxFontDialog( wxWindow *parent, wxFontData *fontdata )
|
|||||||
wxFont font = m_fontData.GetInitialFont();
|
wxFont font = m_fontData.GetInitialFont();
|
||||||
if( font.Ok() )
|
if( font.Ok() )
|
||||||
{
|
{
|
||||||
wxNativeFontInfo info = font.GetNativeFontInfo();
|
wxNativeFontInfo *info = font.GetNativeFontInfo();
|
||||||
|
|
||||||
if( info.xFontName.IsEmpty() )
|
if ( info )
|
||||||
font.GetInternalFont();
|
{
|
||||||
gtk_font_selection_dialog_set_font_name(sel, wxConvCurrent->cWX2MB(info.xFontName.GetData()));
|
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?"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -126,7 +126,6 @@ wxBrush wxNullBrush;
|
|||||||
wxFont wxNullFont;
|
wxFont wxNullFont;
|
||||||
wxColour wxNullColour;
|
wxColour wxNullColour;
|
||||||
wxPalette wxNullPalette;
|
wxPalette wxNullPalette;
|
||||||
wxNativeFontInfo wxNullNativeFontInfo;
|
|
||||||
|
|
||||||
/* Default window names */
|
/* Default window names */
|
||||||
const wxChar *wxControlNameStr = wxT("control");
|
const wxChar *wxControlNameStr = wxT("control");
|
||||||
|
@@ -47,8 +47,7 @@ public:
|
|||||||
int weight = wxDEFAULT,
|
int weight = wxDEFAULT,
|
||||||
bool underlined = FALSE,
|
bool underlined = FALSE,
|
||||||
const wxString& faceName = wxEmptyString,
|
const wxString& faceName = wxEmptyString,
|
||||||
wxFontEncoding encoding = wxFONTENCODING_DEFAULT,
|
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
|
||||||
const wxNativeFontInfo& info = wxNullNativeFontInfo);
|
|
||||||
wxFontRefData( const wxFontRefData& data );
|
wxFontRefData( const wxFontRefData& data );
|
||||||
virtual ~wxFontRefData();
|
virtual ~wxFontRefData();
|
||||||
|
|
||||||
@@ -60,8 +59,7 @@ protected:
|
|||||||
int weight,
|
int weight,
|
||||||
bool underlined,
|
bool underlined,
|
||||||
const wxString& faceName,
|
const wxString& faceName,
|
||||||
wxFontEncoding encoding,
|
wxFontEncoding encoding);
|
||||||
const wxNativeFontInfo& info);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
wxList m_scaled_xfonts;
|
wxList m_scaled_xfonts;
|
||||||
@@ -72,6 +70,7 @@ private:
|
|||||||
bool m_underlined;
|
bool m_underlined;
|
||||||
wxString m_faceName;
|
wxString m_faceName;
|
||||||
wxFontEncoding m_encoding;
|
wxFontEncoding m_encoding;
|
||||||
|
|
||||||
wxNativeFontInfo m_nativeFontInfo;
|
wxNativeFontInfo m_nativeFontInfo;
|
||||||
|
|
||||||
friend class wxFont;
|
friend class wxFont;
|
||||||
@@ -91,8 +90,7 @@ void wxFontRefData::Init(int pointSize,
|
|||||||
int weight,
|
int weight,
|
||||||
bool underlined,
|
bool underlined,
|
||||||
const wxString& faceName,
|
const wxString& faceName,
|
||||||
wxFontEncoding encoding,
|
wxFontEncoding encoding)
|
||||||
const wxNativeFontInfo& info = wxNullNativeFontInfo)
|
|
||||||
{
|
{
|
||||||
if (family == wxDEFAULT)
|
if (family == wxDEFAULT)
|
||||||
m_family = wxSWISS;
|
m_family = wxSWISS;
|
||||||
@@ -118,24 +116,22 @@ void wxFontRefData::Init(int pointSize,
|
|||||||
|
|
||||||
m_underlined = underlined;
|
m_underlined = underlined;
|
||||||
m_encoding = encoding;
|
m_encoding = encoding;
|
||||||
m_nativeFontInfo = info;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFontRefData::wxFontRefData( const wxFontRefData& data )
|
wxFontRefData::wxFontRefData( const wxFontRefData& data )
|
||||||
: m_scaled_xfonts(wxKEY_INTEGER)
|
: m_scaled_xfonts(wxKEY_INTEGER)
|
||||||
{
|
{
|
||||||
Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
|
Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
|
||||||
data.m_underlined, data.m_faceName, data.m_encoding,
|
data.m_underlined, data.m_faceName, data.m_encoding);
|
||||||
data.m_nativeFontInfo );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFontRefData::wxFontRefData(int size, int family, int style,
|
wxFontRefData::wxFontRefData(int size, int family, int style,
|
||||||
int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding,
|
int weight, bool underlined,
|
||||||
const wxNativeFontInfo& info = wxNullNativeFontInfo)
|
const wxString& faceName,
|
||||||
|
wxFontEncoding encoding)
|
||||||
: m_scaled_xfonts(wxKEY_INTEGER)
|
: m_scaled_xfonts(wxKEY_INTEGER)
|
||||||
{
|
{
|
||||||
Init(size, family, style, weight,
|
Init(size, family, style, weight, underlined, faceName, encoding);
|
||||||
underlined, faceName, encoding, info);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFontRefData::~wxFontRefData()
|
wxFontRefData::~wxFontRefData()
|
||||||
@@ -179,7 +175,14 @@ void wxFont::Init()
|
|||||||
|
|
||||||
wxFont::wxFont(const wxNativeFontInfo& info)
|
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,
|
bool wxFont::Create( int pointSize,
|
||||||
@@ -188,20 +191,19 @@ bool wxFont::Create( int pointSize,
|
|||||||
int weight,
|
int weight,
|
||||||
bool underlined,
|
bool underlined,
|
||||||
const wxString& face,
|
const wxString& face,
|
||||||
wxFontEncoding encoding,
|
wxFontEncoding encoding)
|
||||||
const wxNativeFontInfo& info )
|
|
||||||
{
|
{
|
||||||
m_refData = new wxFontRefData(pointSize, family, style, weight,
|
m_refData = new wxFontRefData(pointSize, family, style, weight,
|
||||||
underlined, face, encoding, info);
|
underlined, face, encoding);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
|
bool wxFont::Create(const wxString& fontname, wxFontEncoding enc)
|
||||||
{
|
{
|
||||||
Init();
|
Init();
|
||||||
|
|
||||||
if(!fontname)
|
if( !fontname )
|
||||||
{
|
{
|
||||||
*this = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT);
|
*this = wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -267,7 +269,7 @@ bool wxFont::Create(const wxString& fontname, const wxFontData& fontdata)
|
|||||||
tn.GetNextToken(); // avg width
|
tn.GetNextToken(); // avg width
|
||||||
|
|
||||||
// deal with font encoding
|
// deal with font encoding
|
||||||
M_FONTDATA->m_encoding = fontdata.GetEncoding();
|
M_FONTDATA->m_encoding = enc;
|
||||||
if ( M_FONTDATA->m_encoding == wxFONTENCODING_SYSTEM )
|
if ( M_FONTDATA->m_encoding == wxFONTENCODING_SYSTEM )
|
||||||
{
|
{
|
||||||
wxString registry = tn.GetNextToken().MakeUpper(),
|
wxString registry = tn.GetNextToken().MakeUpper(),
|
||||||
@@ -376,13 +378,14 @@ wxFontEncoding wxFont::GetEncoding() const
|
|||||||
return M_FONTDATA->m_encoding;
|
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())
|
if(M_FONTDATA->m_nativeFontInfo.xFontName.IsEmpty())
|
||||||
GetInternalFont();
|
GetInternalFont();
|
||||||
return M_FONTDATA->m_nativeFontInfo;
|
|
||||||
|
return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#pragma implementation "fontdlg.h"
|
#pragma implementation "fontdlg.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fontutil.h"
|
||||||
#include "wx/fontdlg.h"
|
#include "wx/fontdlg.h"
|
||||||
#include "wx/utils.h"
|
#include "wx/utils.h"
|
||||||
#include "wx/intl.h"
|
#include "wx/intl.h"
|
||||||
@@ -64,7 +65,8 @@ void gtk_fontdialog_ok_callback( GtkWidget *WXUNUSED(widget), wxFontDialog *dial
|
|||||||
|
|
||||||
if (!gfont)
|
if (!gfont)
|
||||||
{
|
{
|
||||||
wxMessageBox(_("Please choose a valid font."), _("Error"), wxOK);
|
wxMessageBox(_("Please choose a valid font."), _("Error"),
|
||||||
|
wxOK | wxICON_ERROR);
|
||||||
return;
|
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
|
// we ignore the facename here - should be enough to choose an arbitrary
|
||||||
// one if the registry/encoding are specified
|
// one if the registry/encoding are specified
|
||||||
// dialog->m_fontData.EncodingInfo().facename = xfamily;
|
|
||||||
fontdata.EncodingInfo().xregistry = xregistry;
|
fontdata.EncodingInfo().xregistry = xregistry;
|
||||||
fontdata.EncodingInfo().xencoding = xencoding;
|
fontdata.EncodingInfo().xencoding = xencoding;
|
||||||
|
|
||||||
// pass fontdata to wxFont ctor so that it can get the encoding from there
|
// 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)
|
// 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 );
|
g_free( fontname );
|
||||||
|
|
||||||
@@ -178,11 +179,21 @@ wxFontDialog::wxFontDialog( wxWindow *parent, wxFontData *fontdata )
|
|||||||
wxFont font = m_fontData.GetInitialFont();
|
wxFont font = m_fontData.GetInitialFont();
|
||||||
if( font.Ok() )
|
if( font.Ok() )
|
||||||
{
|
{
|
||||||
wxNativeFontInfo info = font.GetNativeFontInfo();
|
wxNativeFontInfo *info = font.GetNativeFontInfo();
|
||||||
|
|
||||||
if( info.xFontName.IsEmpty() )
|
if ( info )
|
||||||
font.GetInternalFont();
|
{
|
||||||
gtk_font_selection_dialog_set_font_name(sel, wxConvCurrent->cWX2MB(info.xFontName.GetData()));
|
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?"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user