miscellaneous wxFont enhancements (patch 1496606):
- made SetFaceName() bool and return false if the face name is not available - corrected To/FromUserString() to complement each other git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39411 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -304,8 +304,8 @@ family identifiers.
|
||||
|
||||
\constfunc{wxString}{GetNativeFontInfoDesc}{\void}
|
||||
|
||||
Returns the platform-dependent string completely describing this font or an
|
||||
empty string if the font wasn't constructed using the native font description.
|
||||
Returns the platform-dependent string completely describing this font.
|
||||
Returned string is always non-empty.
|
||||
Note that the returned string is not meant to be shown or edited by the user: a typical
|
||||
use of this function is for serializing in string-form a wxFont object.
|
||||
|
||||
@@ -318,7 +318,8 @@ use of this function is for serializing in string-form a wxFont object.
|
||||
|
||||
\func{wxString}{GetNativeFontInfoUserDesc}{\void}
|
||||
|
||||
Returns a user-friendly string for this font object. Some examples of the formats of returned strings (which are platform-dependent) are in \helpref{SetNativeFontInfoUserDesc}{wxfontsetnativefontinfouserdesc}.
|
||||
Returns a user-friendly string for this font object. Returned string is always non-empty.
|
||||
Some examples of the formats of returned strings (which are platform-dependent) are in \helpref{SetNativeFontInfoUserDesc}{wxfontsetnativefontinfouserdesc}.
|
||||
|
||||
\wxheading{See also}
|
||||
|
||||
@@ -417,9 +418,10 @@ Sets the default font encoding.
|
||||
|
||||
\membersection{wxFont::SetFaceName}\label{wxfontsetfacename}
|
||||
|
||||
\func{void}{SetFaceName}{\param{const wxString\& }{faceName}}
|
||||
\func{bool}{SetFaceName}{\param{const wxString\& }{faceName}}
|
||||
|
||||
Sets the facename for the font.
|
||||
Returns \true if the given face name exists; \false otherwise.
|
||||
|
||||
\wxheading{Parameters}
|
||||
|
||||
@@ -465,9 +467,10 @@ Sets the font family.
|
||||
|
||||
\membersection{wxFont::SetNativeFontInfo}\label{wxfontsetnativefontinfo}
|
||||
|
||||
\func{void}{SetNativeFontInfo}{\param{const wxString\& }{info}}
|
||||
\func{bool}{SetNativeFontInfo}{\param{const wxString\& }{info}}
|
||||
|
||||
Creates the font corresponding to the given native font description string
|
||||
Creates the font corresponding to the given native font description string and returns \true if
|
||||
the creation was successful.
|
||||
which must have been previously returned by
|
||||
\helpref{GetNativeFontInfoDesc}{wxfontgetnativefontinfodesc}. If the string is
|
||||
invalid, font is unchanged. This function is typically used for de-serializing a wxFont
|
||||
@@ -480,9 +483,10 @@ object previously saved in a string-form.
|
||||
|
||||
\membersection{wxFont::SetNativeFontInfoUserDesc}\label{wxfontsetnativefontinfouserdesc}
|
||||
|
||||
\func{void}{SetNativeFontInfoUserDesc}{\param{const wxString\& }{info}}
|
||||
\func{bool}{SetNativeFontInfoUserDesc}{\param{const wxString\& }{info}}
|
||||
|
||||
Creates the font corresponding to the given native font description string.
|
||||
Creates the font corresponding to the given native font description string and returns \true if
|
||||
the creation was successful.
|
||||
Unlike \helpref{SetNativeFontInfo}{wxfontsetnativefontinfo}, this function accepts
|
||||
strings which are user-friendly.
|
||||
Examples of accepted string formats are:
|
||||
|
@@ -91,6 +91,14 @@ Return array of strings containing all facenames found by
|
||||
\helpref{EnumerateFacenames}{wxfontenumeratorenumeratefacenames}.
|
||||
|
||||
|
||||
\membersection{wxFontEnumerator::IsValidFacename}\label{wxfontenumeratorisvalidfacename}
|
||||
|
||||
\func{static bool}{IsValidFacename}{\param{const wxString \&}{ facename}}
|
||||
|
||||
Returns \true if the given string is valid face name, i.e. it's the face name of an installed
|
||||
font and it can safely be used with \helpref{wxFont::SetFaceName}{wxfontsetfacename}.
|
||||
|
||||
|
||||
\membersection{wxFontEnumerator::OnFacename}\label{wxfontenumeratoronfacename}
|
||||
|
||||
\func{virtual bool}{OnFacename}{\param{const wxString\& }{font}}
|
||||
|
@@ -141,7 +141,7 @@ public:
|
||||
virtual void SetFamily(int family);
|
||||
virtual void SetStyle(int style);
|
||||
virtual void SetWeight(int weight);
|
||||
virtual void SetFaceName(const wxString& faceName);
|
||||
virtual bool SetFaceName(const wxString& faceName);
|
||||
virtual void SetUnderlined(bool underlined);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -106,7 +106,7 @@ enum
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxFontRefData;
|
||||
struct WXDLLEXPORT wxNativeFontInfo;
|
||||
class WXDLLEXPORT wxNativeFontInfo;
|
||||
|
||||
class WXDLLEXPORT wxFontBase : public wxGDIObject
|
||||
{
|
||||
@@ -186,14 +186,14 @@ public:
|
||||
virtual void SetFamily( int family ) = 0;
|
||||
virtual void SetStyle( int style ) = 0;
|
||||
virtual void SetWeight( int weight ) = 0;
|
||||
virtual void SetFaceName( const wxString& faceName ) = 0;
|
||||
virtual void SetUnderlined( bool underlined ) = 0;
|
||||
virtual void SetEncoding(wxFontEncoding encoding) = 0;
|
||||
virtual bool SetFaceName( const wxString& faceName );
|
||||
void SetNativeFontInfo(const wxNativeFontInfo& info)
|
||||
{ DoSetNativeFontInfo(info); }
|
||||
|
||||
void SetNativeFontInfo(const wxString& info);
|
||||
void SetNativeFontInfoUserDesc(const wxString& info);
|
||||
bool SetNativeFontInfo(const wxString& info);
|
||||
bool SetNativeFontInfoUserDesc(const wxString& info);
|
||||
|
||||
// translate the fonts into human-readable string (i.e. GetStyleString()
|
||||
// will return "wxITALIC" for an italic font, ...)
|
||||
|
@@ -67,6 +67,10 @@ public:
|
||||
// convenience function that returns array of all available encodings.
|
||||
static wxArrayString GetEncodings(const wxString& facename = wxEmptyString);
|
||||
|
||||
// convenience function that returns true if the given face name exist
|
||||
// in the user's system
|
||||
static bool IsValidFacename(const wxString &str);
|
||||
|
||||
private:
|
||||
DECLARE_NO_COPY_CLASS(wxFontEnumerator)
|
||||
};
|
||||
|
@@ -64,11 +64,9 @@ enum wxXLFDField
|
||||
// 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())
|
||||
//
|
||||
// NB: it is a POD currently for max efficiency but if it continues to grow
|
||||
// further it might make sense to make it a real class with virtual methods
|
||||
struct WXDLLEXPORT wxNativeFontInfo
|
||||
class WXDLLEXPORT wxNativeFontInfo
|
||||
{
|
||||
public:
|
||||
#if wxUSE_PANGO
|
||||
PangoFontDescription *description;
|
||||
#elif defined(_WX_X_FONTLIKE)
|
||||
@@ -195,10 +193,17 @@ public:
|
||||
void SetStyle(wxFontStyle style);
|
||||
void SetWeight(wxFontWeight weight);
|
||||
void SetUnderlined(bool underlined);
|
||||
void SetFaceName(const wxString& facename);
|
||||
bool SetFaceName(const wxString& facename);
|
||||
void SetFamily(wxFontFamily family);
|
||||
void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
// sets the first facename in the given array which is found
|
||||
// to be valid. If no valid facename is given, sets the
|
||||
// first valid facename returned by wxFontEnumerator::GetFacenames().
|
||||
// Does not return a bool since it cannot fail.
|
||||
void SetFaceName(const wxArrayString &facenames);
|
||||
|
||||
|
||||
// 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);
|
||||
|
@@ -78,7 +78,7 @@ public:
|
||||
virtual void SetFamily( int family );
|
||||
virtual void SetStyle( int style );
|
||||
virtual void SetWeight( int weight );
|
||||
virtual void SetFaceName( const wxString& faceName );
|
||||
virtual bool SetFaceName( const wxString& faceName );
|
||||
virtual void SetUnderlined( bool underlined );
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -79,7 +79,7 @@ public:
|
||||
virtual void SetFamily( int family );
|
||||
virtual void SetStyle( int style );
|
||||
virtual void SetWeight( int weight );
|
||||
virtual void SetFaceName( const wxString& faceName );
|
||||
virtual bool SetFaceName( const wxString& faceName );
|
||||
virtual void SetUnderlined( bool underlined );
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -68,7 +68,7 @@ public:
|
||||
virtual void SetFamily(int family);
|
||||
virtual void SetStyle(int style);
|
||||
virtual void SetWeight(int weight);
|
||||
virtual void SetFaceName(const wxString& faceName);
|
||||
virtual bool SetFaceName(const wxString& faceName);
|
||||
virtual void SetUnderlined(bool underlined);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -66,7 +66,7 @@ public:
|
||||
virtual void SetFamily(int family);
|
||||
virtual void SetStyle(int style);
|
||||
virtual void SetWeight(int weight);
|
||||
virtual void SetFaceName(const wxString& faceName);
|
||||
virtual bool SetFaceName(const wxString& faceName);
|
||||
virtual void SetUnderlined(bool underlined);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -75,7 +75,7 @@ public:
|
||||
virtual void SetFamily(int family);
|
||||
virtual void SetStyle(int style);
|
||||
virtual void SetWeight(int weight);
|
||||
virtual void SetFaceName(const wxString& faceName);
|
||||
virtual bool SetFaceName(const wxString& faceName);
|
||||
virtual void SetUnderlined(bool underlined);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -71,7 +71,7 @@ public:
|
||||
virtual void SetFamily(int family);
|
||||
virtual void SetStyle(int style);
|
||||
virtual void SetWeight(int weight);
|
||||
virtual void SetFaceName(const wxString& faceName);
|
||||
virtual bool SetFaceName(const wxString& faceName);
|
||||
virtual void SetUnderlined(bool underlined);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -82,6 +82,10 @@ public:
|
||||
|
||||
virtual ~wxFont();
|
||||
|
||||
// wxFontBase overridden functions
|
||||
virtual wxString GetNativeFontInfoDesc() const;
|
||||
virtual wxString GetNativeFontInfoUserDesc() const;
|
||||
|
||||
// implement base class pure virtuals
|
||||
virtual int GetPointSize() const;
|
||||
virtual wxSize GetPixelSize() const;
|
||||
@@ -99,7 +103,7 @@ public:
|
||||
virtual void SetFamily(int family);
|
||||
virtual void SetStyle(int style);
|
||||
virtual void SetWeight(int weight);
|
||||
virtual void SetFaceName(const wxString& faceName);
|
||||
virtual bool SetFaceName(const wxString& faceName);
|
||||
virtual void SetUnderlined(bool underlined);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -88,7 +88,7 @@ public:
|
||||
virtual void SetFamily(int nFamily);
|
||||
virtual void SetStyle(int nStyle);
|
||||
virtual void SetWeight(int nWeight);
|
||||
virtual void SetFaceName(const wxString& rsFaceName);
|
||||
virtual bool SetFaceName(const wxString& rsFaceName);
|
||||
virtual void SetUnderlined(bool bUnderlined);
|
||||
virtual void SetEncoding(wxFontEncoding vEncoding);
|
||||
|
||||
|
@@ -99,7 +99,7 @@ public:
|
||||
virtual void SetFamily(int family);
|
||||
virtual void SetStyle(int style);
|
||||
virtual void SetWeight(int weight);
|
||||
virtual void SetFaceName(const wxString& faceName);
|
||||
virtual bool SetFaceName(const wxString& faceName);
|
||||
virtual void SetUnderlined(bool underlined);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -69,7 +69,7 @@ public:
|
||||
virtual void SetFamily(int family);
|
||||
virtual void SetStyle(int style);
|
||||
virtual void SetWeight(int weight);
|
||||
virtual void SetFaceName(const wxString& faceName);
|
||||
virtual bool SetFaceName(const wxString& faceName);
|
||||
virtual void SetUnderlined(bool underlined);
|
||||
virtual void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
|
@@ -112,6 +112,8 @@ public:
|
||||
void OnEnumerateEncodings(wxCommandEvent& event);
|
||||
|
||||
void OnCheckNativeToFromString(wxCommandEvent& event);
|
||||
void OnCheckNativeToFromUserString(wxCommandEvent& event);
|
||||
void OnCheckFaceName(wxCommandEvent& event);
|
||||
|
||||
protected:
|
||||
bool DoEnumerateFamilies(bool fixedWidthOnly,
|
||||
@@ -159,6 +161,8 @@ enum
|
||||
Font_EnumFixedFamilies,
|
||||
Font_EnumEncodings,
|
||||
Font_CheckNativeToFromString,
|
||||
Font_CheckNativeToFromUserString,
|
||||
Font_CheckFaceName,
|
||||
Font_Max
|
||||
};
|
||||
|
||||
@@ -185,7 +189,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
||||
EVT_MENU(Font_wxITALIC_FONT, MyFrame::OnwxPointerFont)
|
||||
EVT_MENU(Font_wxSWISS_FONT, MyFrame::OnwxPointerFont)
|
||||
|
||||
|
||||
EVT_MENU(Font_CheckNativeToFromString, MyFrame::OnCheckNativeToFromString)
|
||||
EVT_MENU(Font_CheckNativeToFromUserString, MyFrame::OnCheckNativeToFromUserString)
|
||||
EVT_MENU(Font_CheckFaceName, MyFrame::OnCheckFaceName)
|
||||
|
||||
EVT_MENU(Font_Choose, MyFrame::OnSelectFont)
|
||||
EVT_MENU(Font_EnumFamiliesForEncoding, MyFrame::OnEnumerateFamiliesForEncoding)
|
||||
@@ -260,6 +267,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
||||
menuFont->AppendSeparator();
|
||||
menuFont->Append(Font_CheckNativeToFromString,
|
||||
wxT("Check Native Font Info To/From String"));
|
||||
menuFont->Append(Font_CheckNativeToFromUserString,
|
||||
wxT("Check Native Font Info User String"));
|
||||
menuFont->Append(Font_CheckFaceName,
|
||||
wxT("Check font face name"));
|
||||
|
||||
wxMenu *menuSelect = new wxMenu;
|
||||
menuSelect->Append(Font_Choose, wxT("&Select font...\tCtrl-S"),
|
||||
@@ -488,6 +499,53 @@ void MyFrame::OnCheckNativeToFromString(wxCommandEvent& WXUNUSED(event))
|
||||
}
|
||||
}
|
||||
|
||||
void MyFrame::OnCheckFaceName(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxString facename = GetCanvas()->GetTextFont().GetFaceName();
|
||||
wxString newFaceName = wxGetTextFromUser(
|
||||
wxT("Here you can edit current font face name."),
|
||||
wxT("Input font facename"), facename,
|
||||
this);
|
||||
if (newFaceName.IsEmpty())
|
||||
return; // user clicked "Cancel" - do nothing
|
||||
|
||||
wxFont font(GetCanvas()->GetTextFont());
|
||||
if (font.SetFaceName(newFaceName)) // change facename only
|
||||
{
|
||||
wxASSERT_MSG(font.Ok(), wxT("The font should now be valid"));
|
||||
DoChangeFont(font);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxASSERT_MSG(!font.Ok(), wxT("The font should now be invalid"));
|
||||
wxMessageBox(wxT("There is no font with such face name..."),
|
||||
wxT("Invalid face name"), wxOK|wxICON_ERROR, this);
|
||||
}
|
||||
}
|
||||
|
||||
void MyFrame::OnCheckNativeToFromUserString(wxCommandEvent& WXUNUSED(event))
|
||||
{
|
||||
wxString fontdesc = GetCanvas()->GetTextFont().GetNativeFontInfoUserDesc();
|
||||
wxString fontUserInfo = wxGetTextFromUser(
|
||||
wxT("Here you can edit current font description"),
|
||||
wxT("Input font description"), fontdesc,
|
||||
this);
|
||||
if (fontUserInfo.IsEmpty())
|
||||
return; // user clicked "Cancel" - do nothing
|
||||
|
||||
wxFont font;
|
||||
if (font.SetNativeFontInfoUserDesc(fontUserInfo))
|
||||
{
|
||||
wxASSERT_MSG(font.Ok(), wxT("The font should now be valid"));
|
||||
DoChangeFont(font);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxASSERT_MSG(!font.Ok(), wxT("The font should now be invalid"));
|
||||
wxMessageBox(wxT("Error trying to create a font with such description..."));
|
||||
}
|
||||
}
|
||||
|
||||
void MyFrame::DoResizeFont(int diff)
|
||||
{
|
||||
wxFont font = m_canvas->GetTextFont();
|
||||
@@ -533,10 +591,6 @@ void MyFrame::OnwxPointerFont(wxCommandEvent& event)
|
||||
default : font = wxFont(*wxNORMAL_FONT); break;
|
||||
}
|
||||
|
||||
GetMenuBar()->Check(Font_Bold, false);
|
||||
GetMenuBar()->Check(Font_Italic, false);
|
||||
GetMenuBar()->Check(Font_Underlined, false);
|
||||
|
||||
DoChangeFont(font);
|
||||
}
|
||||
|
||||
@@ -550,6 +604,15 @@ void MyFrame::DoChangeFont(const wxFont& font, const wxColour& col)
|
||||
m_textctrl->SetFont(font);
|
||||
if ( col.Ok() )
|
||||
m_textctrl->SetForegroundColour(col);
|
||||
|
||||
// update the state of the bold/italic/underlined menu items
|
||||
wxMenuBar *mbar = GetMenuBar();
|
||||
if ( mbar )
|
||||
{
|
||||
mbar->Check(Font_Bold, font.GetWeight() == wxFONTWEIGHT_BOLD);
|
||||
mbar->Check(Font_Italic, font.GetStyle() == wxFONTSTYLE_ITALIC);
|
||||
mbar->Check(Font_Underlined, font.GetUnderlined());
|
||||
}
|
||||
}
|
||||
|
||||
void MyFrame::OnSelectFont(wxCommandEvent& WXUNUSED(event))
|
||||
@@ -566,15 +629,6 @@ void MyFrame::OnSelectFont(wxCommandEvent& WXUNUSED(event))
|
||||
wxColour colour = retData.GetColour();
|
||||
|
||||
DoChangeFont(font, colour);
|
||||
|
||||
// update the state of the bold/italic/underlined menu items
|
||||
wxMenuBar *mbar = GetMenuBar();
|
||||
if ( mbar )
|
||||
{
|
||||
mbar->Check(Font_Bold, font.GetWeight() == wxFONTWEIGHT_BOLD);
|
||||
mbar->Check(Font_Italic, font.GetStyle() == wxFONTSTYLE_ITALIC);
|
||||
mbar->Check(Font_Underlined, font.GetUnderlined());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -160,13 +160,15 @@ void wxFont::SetWeight(int weight)
|
||||
RealizeResource();
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
Unshare();
|
||||
|
||||
M_FONTDATA->m_faceName = faceName;
|
||||
|
||||
RealizeResource();
|
||||
|
||||
return wxFontBase::SetFaceName(faceName);
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
|
@@ -41,6 +41,7 @@
|
||||
|
||||
#include "wx/fontutil.h" // for wxNativeFontInfo
|
||||
#include "wx/fontmap.h"
|
||||
#include "wx/fontenum.h"
|
||||
|
||||
#include "wx/tokenzr.h"
|
||||
|
||||
@@ -266,6 +267,11 @@ wxString wxFontBase::GetNativeFontInfoDesc() const
|
||||
if ( fontInfo )
|
||||
{
|
||||
fontDesc = fontInfo->ToString();
|
||||
wxASSERT_MSG(!fontDesc.IsEmpty(), wxT("This should be a non-empty string!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
wxASSERT_MSG(0, wxT("Derived class should have created the wxNativeFontInfo!"));
|
||||
}
|
||||
|
||||
return fontDesc;
|
||||
@@ -278,27 +284,40 @@ wxString wxFontBase::GetNativeFontInfoUserDesc() const
|
||||
if ( fontInfo )
|
||||
{
|
||||
fontDesc = fontInfo->ToUserString();
|
||||
wxASSERT_MSG(!fontDesc.IsEmpty(), wxT("This should be a non-empty string!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
wxASSERT_MSG(0, wxT("Derived class should have created the wxNativeFontInfo!"));
|
||||
}
|
||||
|
||||
return fontDesc;
|
||||
}
|
||||
|
||||
void wxFontBase::SetNativeFontInfo(const wxString& info)
|
||||
bool wxFontBase::SetNativeFontInfo(const wxString& info)
|
||||
{
|
||||
wxNativeFontInfo fontInfo;
|
||||
if ( !info.empty() && fontInfo.FromString(info) )
|
||||
{
|
||||
SetNativeFontInfo(fontInfo);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxFontBase::SetNativeFontInfoUserDesc(const wxString& info)
|
||||
UnRef();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool wxFontBase::SetNativeFontInfoUserDesc(const wxString& info)
|
||||
{
|
||||
wxNativeFontInfo fontInfo;
|
||||
if ( !info.empty() && fontInfo.FromUserString(info) )
|
||||
{
|
||||
SetNativeFontInfo(fontInfo);
|
||||
return true;
|
||||
}
|
||||
|
||||
UnRef();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool wxFontBase::operator==(const wxFont& font) const
|
||||
@@ -313,7 +332,7 @@ bool wxFontBase::operator==(const wxFont& font) const
|
||||
GetStyle() == font.GetStyle() &&
|
||||
GetWeight() == font.GetWeight() &&
|
||||
GetUnderlined() == font.GetUnderlined() &&
|
||||
GetFaceName() == font.GetFaceName() &&
|
||||
GetFaceName().IsSameAs(font.GetFaceName(), false) &&
|
||||
GetEncoding() == font.GetEncoding()
|
||||
);
|
||||
}
|
||||
@@ -365,10 +384,41 @@ wxString wxFontBase::GetWeightString() const
|
||||
}
|
||||
}
|
||||
|
||||
bool wxFontBase::SetFaceName(const wxString &facename)
|
||||
{
|
||||
if (!wxFontEnumerator::IsValidFacename(facename))
|
||||
{
|
||||
UnRef(); // make Ok() return false
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxNativeFontInfo
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Up to now, there are no native implementations of this function:
|
||||
void wxNativeFontInfo::SetFaceName(const wxArrayString &facenames)
|
||||
{
|
||||
for (size_t i=0; i < facenames.GetCount(); i++)
|
||||
{
|
||||
if (wxFontEnumerator::IsValidFacename(facenames[i]))
|
||||
{
|
||||
SetFaceName(facenames[i]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// set the first valid facename we can find on this system
|
||||
wxString validfacename = wxFontEnumerator::GetFacenames().Item(0);
|
||||
wxLogTrace(wxT("font"), wxT("Falling back to '%s'"), validfacename.c_str());
|
||||
SetFaceName(validfacename);
|
||||
}
|
||||
|
||||
|
||||
#ifdef wxNO_NATIVE_FONTINFO
|
||||
|
||||
// These are the generic forms of FromString()/ToString.
|
||||
@@ -510,9 +560,10 @@ void wxNativeFontInfo::SetUnderlined(bool underlined_)
|
||||
underlined = underlined_;
|
||||
}
|
||||
|
||||
void wxNativeFontInfo::SetFaceName(const wxString& facename_)
|
||||
bool wxNativeFontInfo::SetFaceName(const wxString& facename_)
|
||||
{
|
||||
faceName = facename_;
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxNativeFontInfo::SetFamily(wxFontFamily family_)
|
||||
@@ -599,7 +650,7 @@ wxString wxNativeFontInfo::ToUserString() const
|
||||
}
|
||||
#endif // wxUSE_FONTMAP
|
||||
|
||||
return desc;
|
||||
return desc.Strip(wxString::both).MakeLower();
|
||||
}
|
||||
|
||||
bool wxNativeFontInfo::FromUserString(const wxString& s)
|
||||
@@ -614,10 +665,7 @@ bool wxNativeFontInfo::FromUserString(const wxString& s)
|
||||
|
||||
wxString face;
|
||||
unsigned long size;
|
||||
|
||||
#if wxUSE_FONTMAP
|
||||
wxFontEncoding encoding;
|
||||
#endif // wxUSE_FONTMAP
|
||||
bool weightfound = false, pointsizefound = false, encodingfound = false;
|
||||
|
||||
while ( tokenizer.HasMoreTokens() )
|
||||
{
|
||||
@@ -634,10 +682,12 @@ bool wxNativeFontInfo::FromUserString(const wxString& s)
|
||||
else if ( token == _T("light") || token == _("light") )
|
||||
{
|
||||
SetWeight(wxFONTWEIGHT_LIGHT);
|
||||
weightfound = true;
|
||||
}
|
||||
else if ( token == _T("bold") || token == _("bold") )
|
||||
{
|
||||
SetWeight(wxFONTWEIGHT_BOLD);
|
||||
weightfound = true;
|
||||
}
|
||||
else if ( token == _T("italic") || token == _("italic") )
|
||||
{
|
||||
@@ -646,16 +696,24 @@ bool wxNativeFontInfo::FromUserString(const wxString& s)
|
||||
else if ( token.ToULong(&size) )
|
||||
{
|
||||
SetPointSize(size);
|
||||
pointsizefound = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
#if wxUSE_FONTMAP
|
||||
else if ( (encoding = wxFontMapper::Get()->CharsetToEncoding(token, false))
|
||||
!= wxFONTENCODING_DEFAULT )
|
||||
// try to interpret this as an encoding
|
||||
wxFontEncoding encoding = wxFontMapper::Get()->CharsetToEncoding(token, false);
|
||||
if ( encoding != wxFONTENCODING_DEFAULT &&
|
||||
encoding != wxFONTENCODING_SYSTEM ) // returned when the recognition failed
|
||||
{
|
||||
SetEncoding(encoding);
|
||||
encodingfound = true;
|
||||
}
|
||||
#endif // wxUSE_FONTMAP
|
||||
else // assume it is the face name
|
||||
else
|
||||
{
|
||||
#endif // wxUSE_FONTMAP
|
||||
|
||||
// assume it is the face name
|
||||
if ( !face.empty() )
|
||||
{
|
||||
face += _T(' ');
|
||||
@@ -665,6 +723,10 @@ bool wxNativeFontInfo::FromUserString(const wxString& s)
|
||||
|
||||
// skip the code which resets face below
|
||||
continue;
|
||||
|
||||
#if wxUSE_FONTMAP
|
||||
}
|
||||
#endif // wxUSE_FONTMAP
|
||||
}
|
||||
|
||||
// if we had had the facename, we shouldn't continue appending tokens
|
||||
@@ -672,7 +734,12 @@ bool wxNativeFontInfo::FromUserString(const wxString& s)
|
||||
// bar")
|
||||
if ( !face.empty() )
|
||||
{
|
||||
SetFaceName(face);
|
||||
// NB: the check on the facename is implemented in wxFontBase::SetFaceName
|
||||
// and not in wxNativeFontInfo::SetFaceName thus we need to explicitely
|
||||
// call here wxFontEnumerator::IsValidFacename
|
||||
if (!wxFontEnumerator::IsValidFacename(face) ||
|
||||
!SetFaceName(face))
|
||||
SetFaceName(wxNORMAL_FONT->GetFaceName());
|
||||
face.clear();
|
||||
}
|
||||
}
|
||||
@@ -680,9 +747,28 @@ bool wxNativeFontInfo::FromUserString(const wxString& s)
|
||||
// we might not have flushed it inside the loop
|
||||
if ( !face.empty() )
|
||||
{
|
||||
SetFaceName(face);
|
||||
// NB: the check on the facename is implemented in wxFontBase::SetFaceName
|
||||
// and not in wxNativeFontInfo::SetFaceName thus we need to explicitely
|
||||
// call here wxFontEnumerator::IsValidFacename
|
||||
if (!wxFontEnumerator::IsValidFacename(face) ||
|
||||
!SetFaceName(face))
|
||||
SetFaceName(wxNORMAL_FONT->GetFaceName());
|
||||
}
|
||||
|
||||
// set point size to default value if size was not given
|
||||
if ( !pointsizefound )
|
||||
SetPointSize(wxNORMAL_FONT->GetPointSize());
|
||||
|
||||
// set font weight to default value if weight was not given
|
||||
if ( !weightfound )
|
||||
SetWeight(wxFONTWEIGHT_NORMAL);
|
||||
|
||||
#if wxUSE_FONTMAP
|
||||
// set font encoding to default value if encoding was not given
|
||||
if ( !encodingfound )
|
||||
SetEncoding(wxFONTENCODING_SYSTEM);
|
||||
#endif // wxUSE_FONTMAP
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -72,3 +72,31 @@ wxArrayString wxFontEnumerator::GetEncodings(const wxString& facename)
|
||||
temp.EnumerateEncodings(facename);
|
||||
return temp.m_arrEncodings;
|
||||
}
|
||||
|
||||
/* static */
|
||||
bool wxFontEnumerator::IsValidFacename(const wxString &facename)
|
||||
{
|
||||
// we cache the result of wxFontEnumerator::GetFacenames supposing that
|
||||
// the array of face names won't change in the session of this program
|
||||
static wxArrayString s_arr = wxFontEnumerator::GetFacenames();
|
||||
|
||||
#ifdef __WXMSW__
|
||||
// Quoting the MSDN:
|
||||
// "MS Shell Dlg is a mapping mechanism that enables
|
||||
// U.S. English Microsoft Windows NT, and Microsoft Windows 2000 to
|
||||
// support locales that have characters that are not contained in code
|
||||
// page 1252. It is not a font but a face name for a nonexistent font."
|
||||
// Thus we need to consider "Ms Shell Dlg" and "Ms Shell Dlg 2" as valid
|
||||
// font face names even if they are enumerated by wxFontEnumerator
|
||||
if (facename.IsSameAs(wxT("Ms Shell Dlg"), false) ||
|
||||
facename.IsSameAs(wxT("Ms Shell Dlg 2"), false))
|
||||
return true;
|
||||
#endif
|
||||
|
||||
// is given font face name a valid one ?
|
||||
if (s_arr.Index(facename, false) == wxNOT_FOUND)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@@ -88,7 +88,7 @@ public:
|
||||
void SetStyle(int style);
|
||||
void SetWeight(int weight);
|
||||
void SetUnderlined(bool underlined);
|
||||
void SetFaceName(const wxString& facename);
|
||||
bool SetFaceName(const wxString& facename);
|
||||
void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
void SetNoAntiAliasing( bool no = true ) { m_noAA = no; }
|
||||
@@ -321,11 +321,11 @@ void wxFontRefData::SetUnderlined(bool underlined)
|
||||
// the XLFD doesn't have "underlined" field anyhow
|
||||
}
|
||||
|
||||
void wxFontRefData::SetFaceName(const wxString& facename)
|
||||
bool wxFontRefData::SetFaceName(const wxString& facename)
|
||||
{
|
||||
m_faceName = facename;
|
||||
|
||||
m_nativeFontInfo.SetFaceName(facename);
|
||||
return m_nativeFontInfo.SetFaceName(facename);
|
||||
}
|
||||
|
||||
void wxFontRefData::SetEncoding(wxFontEncoding encoding)
|
||||
@@ -548,11 +548,12 @@ void wxFont::SetWeight(int weight)
|
||||
M_FONTDATA->SetWeight(weight);
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
Unshare();
|
||||
|
||||
M_FONTDATA->SetFaceName(faceName);
|
||||
return M_FONTDATA->SetFaceName(faceName) &&
|
||||
wxFontBase::SetFaceName(faceName);
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
|
@@ -88,7 +88,7 @@ public:
|
||||
void SetStyle(int style);
|
||||
void SetWeight(int weight);
|
||||
void SetUnderlined(bool underlined);
|
||||
void SetFaceName(const wxString& facename);
|
||||
bool SetFaceName(const wxString& facename);
|
||||
void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
void SetNoAntiAliasing( bool no = true ) { m_noAA = no; }
|
||||
@@ -436,7 +436,7 @@ void wxFontRefData::SetUnderlined(bool underlined)
|
||||
// the XLFD doesn't have "underlined" field anyhow
|
||||
}
|
||||
|
||||
void wxFontRefData::SetFaceName(const wxString& facename)
|
||||
bool wxFontRefData::SetFaceName(const wxString& facename)
|
||||
{
|
||||
m_faceName = facename;
|
||||
|
||||
@@ -444,6 +444,8 @@ void wxFontRefData::SetFaceName(const wxString& facename)
|
||||
{
|
||||
m_nativeFontInfo.SetXFontComponent(wxXLFD_FAMILY, facename);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxFontRefData::SetEncoding(wxFontEncoding encoding)
|
||||
@@ -688,11 +690,12 @@ void wxFont::SetWeight(int weight)
|
||||
M_FONTDATA->SetWeight(weight);
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
Unshare();
|
||||
|
||||
M_FONTDATA->SetFaceName(faceName);
|
||||
return M_FONTDATA->SetFaceName(faceName) &&
|
||||
wxFontBase::SetFaceName(faceName);
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
|
@@ -473,13 +473,15 @@ void wxFont::SetWeight(int weight)
|
||||
RealizeResource();
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
Unshare();
|
||||
|
||||
M_FONTDATA->m_faceName = faceName;
|
||||
|
||||
RealizeResource();
|
||||
|
||||
return wxFontBase::SetFaceName(faceName);
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
|
@@ -339,13 +339,15 @@ void wxFont::SetWeight(int weight)
|
||||
RealizeResource();
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
Unshare();
|
||||
|
||||
M_FONTDATA->m_faceName = faceName;
|
||||
|
||||
RealizeResource();
|
||||
|
||||
return wxFontBase::SetFaceName(faceName);
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
|
@@ -311,12 +311,14 @@ void wxFont::SetWeight(int weight)
|
||||
M_FONTDATA->m_valid = false;
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
AllocExclusive();
|
||||
|
||||
M_FONTDATA->m_faceName = faceName;
|
||||
M_FONTDATA->m_valid = false;
|
||||
|
||||
return wxFontBase::SetFaceName(faceName);
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
|
@@ -393,12 +393,14 @@ void wxFont::SetWeight(int weight)
|
||||
M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
Unshare();
|
||||
|
||||
M_FONTDATA->m_faceName = faceName;
|
||||
M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now
|
||||
|
||||
return wxFontBase::SetFaceName(faceName);
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
|
@@ -256,12 +256,13 @@ public:
|
||||
m_weight = weight;
|
||||
}
|
||||
|
||||
void SetFaceName(const wxString& faceName)
|
||||
bool SetFaceName(const wxString& faceName)
|
||||
{
|
||||
if ( m_nativeFontInfoOk )
|
||||
m_nativeFontInfo.SetFaceName(faceName);
|
||||
else
|
||||
return m_nativeFontInfo.SetFaceName(faceName);
|
||||
|
||||
m_faceName = faceName;
|
||||
return true;
|
||||
}
|
||||
|
||||
void SetUnderlined(bool underlined)
|
||||
@@ -385,12 +386,10 @@ bool wxFontRefData::Alloc(wxFont *font)
|
||||
if ( !hfont )
|
||||
{
|
||||
wxLogLastError(wxT("CreateFont"));
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
m_hFont = (WXHFONT)hfont;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -561,42 +560,66 @@ void wxNativeFontInfo::SetUnderlined(bool underlined)
|
||||
lf.lfUnderline = underlined;
|
||||
}
|
||||
|
||||
void wxNativeFontInfo::SetFaceName(const wxString& facename)
|
||||
bool wxNativeFontInfo::SetFaceName(const wxString& facename)
|
||||
{
|
||||
wxStrncpy(lf.lfFaceName, facename, WXSIZEOF(lf.lfFaceName));
|
||||
size_t len = WXSIZEOF(lf.lfFaceName);
|
||||
wxStrncpy(lf.lfFaceName, facename, len);
|
||||
lf.lfFaceName[len - 1] = '\0'; // truncate the face name
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxNativeFontInfo::SetFamily(wxFontFamily family)
|
||||
{
|
||||
BYTE ff_family;
|
||||
wxString facename;
|
||||
wxArrayString facename;
|
||||
|
||||
// the list of fonts associated with a family was partially
|
||||
// taken from http://www.codestyle.org/css/font-family
|
||||
|
||||
switch ( family )
|
||||
{
|
||||
case wxSCRIPT:
|
||||
ff_family = FF_SCRIPT;
|
||||
facename = _T("Script");
|
||||
facename.Add(_T("Script"));
|
||||
facename.Add(_T("Brush Script MT"));
|
||||
facename.Add(_T("Comic Sans MS"));
|
||||
facename.Add(_T("Lucida Handwriting"));
|
||||
break;
|
||||
|
||||
case wxDECORATIVE:
|
||||
ff_family = FF_DECORATIVE;
|
||||
facename = _T("Old English Text MT");
|
||||
facename.Add(_T("Old English Text MT"));
|
||||
facename.Add(_T("Comic Sans MS"));
|
||||
facename.Add(_T("Lucida Handwriting"));
|
||||
break;
|
||||
|
||||
case wxROMAN:
|
||||
ff_family = FF_ROMAN;
|
||||
facename = _T("Times New Roman");
|
||||
facename.Add(_T("Times New Roman"));
|
||||
facename.Add(_T("Georgia"));
|
||||
facename.Add(_T("Garamond"));
|
||||
facename.Add(_T("Bookman Old Style"));
|
||||
facename.Add(_T("Book Antiqua"));
|
||||
break;
|
||||
|
||||
case wxTELETYPE:
|
||||
case wxMODERN:
|
||||
ff_family = FF_MODERN;
|
||||
facename = _T("Courier New");
|
||||
facename.Add(_T("Courier New"));
|
||||
facename.Add(_T("Lucida Console"));
|
||||
facename.Add(_T("Andale Mono"));
|
||||
facename.Add(_T("OCR A Extended"));
|
||||
facename.Add(_T("Terminal"));
|
||||
break;
|
||||
|
||||
case wxSWISS:
|
||||
ff_family = FF_SWISS;
|
||||
facename = _T("Arial");
|
||||
facename.Add(_T("Arial"));
|
||||
facename.Add(_T("Century Gothic"));
|
||||
facename.Add(_T("Lucida Sans Unicode"));
|
||||
facename.Add(_T("Tahoma"));
|
||||
facename.Add(_T("Trebuchet MS"));
|
||||
facename.Add(_T("Verdana"));
|
||||
break;
|
||||
|
||||
case wxDEFAULT:
|
||||
@@ -607,9 +630,15 @@ void wxNativeFontInfo::SetFamily(wxFontFamily family)
|
||||
int verMaj;
|
||||
ff_family = FF_SWISS;
|
||||
if(wxGetOsVersion(&verMaj) == wxWINDOWS_NT && verMaj >= 5)
|
||||
facename = _T("MS Shell Dlg 2");
|
||||
facename.Add(_T("MS Shell Dlg 2"));
|
||||
else
|
||||
facename = _T("MS Shell Dlg");
|
||||
facename.Add(_T("MS Shell Dlg"));
|
||||
|
||||
// Quoting the MSDN:
|
||||
// "MS Shell Dlg is a mapping mechanism that enables
|
||||
// U.S. English Microsoft Windows NT, and Microsoft Windows 2000 to
|
||||
// support locales that have characters that are not contained in code
|
||||
// page 1252. It is not a font but a face name for a nonexistent font."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -920,13 +949,22 @@ void wxFont::SetWeight(int weight)
|
||||
RealizeResource();
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
Unshare();
|
||||
|
||||
M_FONTDATA->SetFaceName(faceName);
|
||||
bool refdataok = M_FONTDATA->SetFaceName(faceName);
|
||||
|
||||
RealizeResource();
|
||||
|
||||
// NB: using win32's GetObject() API on M_FONTDATA->GetHFONT()
|
||||
// to retrieve a LOGFONT and then compare lf.lfFaceName
|
||||
// with given facename is not reliable at all:
|
||||
// Windows copies the facename given to ::CreateFontIndirect()
|
||||
// without any validity check.
|
||||
// Thus we use wxFontBase::SetFaceName to check if facename
|
||||
// is valid...
|
||||
return refdataok && wxFontBase::SetFaceName(faceName);
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
@@ -1029,6 +1067,20 @@ const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
|
||||
: NULL;
|
||||
}
|
||||
|
||||
wxString wxFont::GetNativeFontInfoDesc() const
|
||||
{
|
||||
// be sure we have an HFONT associated...
|
||||
wxConstCast(this, wxFont)->RealizeResource();
|
||||
return wxFontBase::GetNativeFontInfoDesc();
|
||||
}
|
||||
|
||||
wxString wxFont::GetNativeFontInfoUserDesc() const
|
||||
{
|
||||
// be sure we have an HFONT associated...
|
||||
wxConstCast(this, wxFont)->RealizeResource();
|
||||
return wxFontBase::GetNativeFontInfoUserDesc();
|
||||
}
|
||||
|
||||
bool wxFont::IsFixedWidth() const
|
||||
{
|
||||
if ( M_FONTDATA->HasNativeFontInfo() )
|
||||
@@ -1043,3 +1095,4 @@ bool wxFont::IsFixedWidth() const
|
||||
|
||||
return wxFontBase::IsFixedWidth();
|
||||
}
|
||||
|
||||
|
@@ -195,12 +195,13 @@ public:
|
||||
m_nWeight = nWeight;
|
||||
}
|
||||
|
||||
inline void SetFaceName(const wxString& sFaceName)
|
||||
inline bool SetFaceName(const wxString& sFaceName)
|
||||
{
|
||||
if (m_bNativeFontInfoOk)
|
||||
m_vNativeFontInfo.SetFaceName(sFaceName);
|
||||
return m_vNativeFontInfo.SetFaceName(sFaceName);
|
||||
else
|
||||
m_sFaceName = sFaceName;
|
||||
return true;
|
||||
}
|
||||
|
||||
inline void SetUnderlined(bool bUnderlined)
|
||||
@@ -689,11 +690,12 @@ void wxNativeFontInfo::SetUnderlined(
|
||||
fa.fsSelection |= FATTR_SEL_UNDERSCORE;
|
||||
} // end of wxNativeFontInfo::SetUnderlined
|
||||
|
||||
void wxNativeFontInfo::SetFaceName(
|
||||
bool wxNativeFontInfo::SetFaceName(
|
||||
const wxString& sFacename
|
||||
)
|
||||
{
|
||||
wxStrncpy((wxChar*)fa.szFacename, sFacename, WXSIZEOF(fa.szFacename));
|
||||
return true;
|
||||
} // end of wxNativeFontInfo::SetFaceName
|
||||
|
||||
void wxNativeFontInfo::SetFamily(
|
||||
@@ -1023,15 +1025,17 @@ void wxFont::SetWeight(
|
||||
RealizeResource();
|
||||
} // end of wxFont::SetWeight
|
||||
|
||||
void wxFont::SetFaceName(
|
||||
bool wxFont::SetFaceName(
|
||||
const wxString& rsFaceName
|
||||
)
|
||||
{
|
||||
Unshare();
|
||||
|
||||
M_FONTDATA->SetFaceName(rsFaceName);
|
||||
bool refdataok = M_FONTDATA->SetFaceName(rsFaceName);
|
||||
|
||||
RealizeResource();
|
||||
|
||||
return refdataok && wxFontBase::SetFaceName(rsFaceName);
|
||||
} // end of wxFont::SetFaceName
|
||||
|
||||
void wxFont::SetUnderlined(
|
||||
|
@@ -251,7 +251,7 @@ public:
|
||||
m_weight = weight;
|
||||
}
|
||||
|
||||
void SetFaceName(const wxString& faceName)
|
||||
bool SetFaceName(const wxString& faceName)
|
||||
{
|
||||
if ( m_nativeFontInfoOk )
|
||||
m_nativeFontInfo.SetFaceName(faceName);
|
||||
@@ -444,8 +444,9 @@ void wxFont::SetWeight(int weight)
|
||||
{
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
|
@@ -37,6 +37,7 @@
|
||||
#include "wx/fontmap.h"
|
||||
#include "wx/tokenzr.h"
|
||||
#include "wx/module.h"
|
||||
#include "wx/fontenum.h"
|
||||
|
||||
#if wxUSE_PANGO
|
||||
|
||||
@@ -260,9 +261,10 @@ void wxNativeFontInfo::SetUnderlined(bool WXUNUSED(underlined))
|
||||
wxFAIL_MSG( _T("not implemented") );
|
||||
}
|
||||
|
||||
void wxNativeFontInfo::SetFaceName(const wxString& facename)
|
||||
bool wxNativeFontInfo::SetFaceName(const wxString& facename)
|
||||
{
|
||||
pango_font_description_set_family(description, wxGTK_CONV_SYS(facename));
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxNativeFontInfo::SetFamily(wxFontFamily WXUNUSED(family))
|
||||
@@ -309,6 +311,10 @@ bool wxNativeFontInfo::FromString(const wxString& s)
|
||||
|
||||
description = pango_font_description_from_string( wxGTK_CONV_SYS( str ) );
|
||||
|
||||
// ensure a valid facename is selected
|
||||
if (!wxFontEnumerator::IsValidFacename(GetFaceName()))
|
||||
SetFaceName(wxNORMAL_FONT->GetFaceName());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -776,9 +782,10 @@ void wxNativeFontInfo::SetUnderlined(bool WXUNUSED(underlined))
|
||||
// can't do this under X
|
||||
}
|
||||
|
||||
void wxNativeFontInfo::SetFaceName(const wxString& facename)
|
||||
bool wxNativeFontInfo::SetFaceName(const wxString& facename)
|
||||
{
|
||||
SetXFontComponent(wxXLFD_FAMILY, facename);
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxNativeFontInfo::SetFamily(wxFontFamily WXUNUSED(family))
|
||||
|
@@ -121,7 +121,7 @@ public:
|
||||
void SetStyle(int style);
|
||||
void SetWeight(int weight);
|
||||
void SetUnderlined(bool underlined);
|
||||
void SetFaceName(const wxString& facename);
|
||||
bool SetFaceName(const wxString& facename);
|
||||
void SetEncoding(wxFontEncoding encoding);
|
||||
|
||||
void SetNoAntiAliasing( bool no = true ) { m_noAA = no; }
|
||||
@@ -503,9 +503,10 @@ void wxFontRefData::SetUnderlined(bool underlined)
|
||||
// the XLFD doesn't have "underlined" field anyhow
|
||||
}
|
||||
|
||||
void wxFontRefData::SetFaceName(const wxString& facename)
|
||||
bool wxFontRefData::SetFaceName(const wxString& facename)
|
||||
{
|
||||
m_faceName = facename;
|
||||
return true;
|
||||
}
|
||||
|
||||
void wxFontRefData::SetEncoding(wxFontEncoding encoding)
|
||||
@@ -816,11 +817,12 @@ void wxFont::SetWeight(int weight)
|
||||
M_FONTDATA->SetWeight(weight);
|
||||
}
|
||||
|
||||
void wxFont::SetFaceName(const wxString& faceName)
|
||||
bool wxFont::SetFaceName(const wxString& faceName)
|
||||
{
|
||||
Unshare();
|
||||
|
||||
M_FONTDATA->SetFaceName(faceName);
|
||||
return M_FONTDATA->SetFaceName(faceName) &&
|
||||
wxFontBase::SetFaceName(faceName);
|
||||
}
|
||||
|
||||
void wxFont::SetUnderlined(bool underlined)
|
||||
|
Reference in New Issue
Block a user