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);
 | 
			
		||||
    if ( fontInfo.IsEmpty() )
 | 
			
		||||
    {
 | 
			
		||||
        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;
 | 
			
		||||
     }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -678,10 +676,11 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
 | 
			
		||||
 | 
			
		||||
    dc.DrawText(fontInfo, 5, 5);
 | 
			
		||||
 | 
			
		||||
    if(m_font.Ok())
 | 
			
		||||
    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"
 | 
			
		||||
@@ -685,7 +686,7 @@ bool wxFontMapper::GetAltForEncoding(wxFontEncoding encoding,
 | 
			
		||||
                wxFont font = retData.GetChosenFont();
 | 
			
		||||
 | 
			
		||||
                *info = retData.EncodingInfo();
 | 
			
		||||
                info -> encoding = retData.GetEncoding();
 | 
			
		||||
                info->encoding = retData.GetEncoding();
 | 
			
		||||
 | 
			
		||||
#if wxUSE_CONFIG
 | 
			
		||||
                // remember this in the config
 | 
			
		||||
 
 | 
			
		||||
@@ -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,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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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,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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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