Add wxFontInfo class to allow using named parameters for wxFont creation.
This helper class allows to create wxFonts using shorter and more readable code, e.g. wxFont font(12, wxFONTFLAG_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, true, "DejaVu Sans"); can now be written simply as wxFont font(wxFontInfo(12).FaceName("DejaVu Sans").Underlined()); Remove the ctor from font flags added in r70445 as it's not needed any longer now that we have this one and adding it resulted in compilation errors in the existing code which compiled with 2.8 because of ambiguities between that ctor and wxFont(int size, int family, int style, int weight. bool underlined, ...) one, e.g. wxFont(12, wxFONTFAMILY_SWISS, wxNORMAL, wxNORMAL) didn't compile any more but it does compile again now. See #9907. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73885 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -111,6 +111,145 @@ enum wxFontFlag
|
||||
wxFONTFLAG_STRIKETHROUGH
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFontInfo describes a wxFont
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxFontInfo
|
||||
{
|
||||
public:
|
||||
// Default ctor uses the default font size appropriate for the current
|
||||
// platform.
|
||||
wxFontInfo()
|
||||
{ InitPointSize(-1); }
|
||||
|
||||
// These ctors specify the font size, either in points or in pixels.
|
||||
wxEXPLICIT wxFontInfo(int pointSize)
|
||||
{ InitPointSize(pointSize); }
|
||||
wxEXPLICIT wxFontInfo(const wxSize& pixelSize) : m_pixelSize(pixelSize)
|
||||
{ Init(); }
|
||||
|
||||
// Setters for the various attributes. All of them return the object itself
|
||||
// so that the calls to them could be chained.
|
||||
wxFontInfo& Family(wxFontFamily family)
|
||||
{ m_family = family; return *this; }
|
||||
wxFontInfo& FaceName(const wxString& faceName)
|
||||
{ m_faceName = faceName; return *this; }
|
||||
|
||||
wxFontInfo& Bold(bool bold = true)
|
||||
{ SetFlag(wxFONTFLAG_BOLD, bold); return *this; }
|
||||
wxFontInfo& Light(bool light = true)
|
||||
{ SetFlag(wxFONTFLAG_LIGHT, light); return *this; }
|
||||
|
||||
wxFontInfo& Italic(bool italic = true)
|
||||
{ SetFlag(wxFONTFLAG_ITALIC, italic); return *this; }
|
||||
wxFontInfo& Slant(bool slant = true)
|
||||
{ SetFlag(wxFONTFLAG_SLANT, slant); return *this; }
|
||||
|
||||
wxFontInfo& AntiAliased(bool antiAliased = true)
|
||||
{ SetFlag(wxFONTFLAG_ANTIALIASED, antiAliased); return *this; }
|
||||
wxFontInfo& Underlined(bool underlined = true)
|
||||
{ SetFlag(wxFONTFLAG_UNDERLINED, underlined); return *this; }
|
||||
wxFontInfo& Strikethrough(bool strikethrough = true)
|
||||
{ SetFlag(wxFONTFLAG_STRIKETHROUGH, strikethrough); return *this; }
|
||||
|
||||
wxFontInfo& Encoding(wxFontEncoding encoding)
|
||||
{ m_encoding = encoding; return *this; }
|
||||
|
||||
|
||||
// Set all flags at once.
|
||||
wxFontInfo& AllFlags(int flags)
|
||||
{ m_flags = flags; return *this; }
|
||||
|
||||
|
||||
// Accessors are mostly meant to be used by wxFont itself to extract the
|
||||
// various pieces of the font description.
|
||||
|
||||
bool IsUsingSizeInPixels() const { return m_pixelSize != wxDefaultSize; }
|
||||
int GetPointSize() const { return m_pointSize; }
|
||||
wxSize GetPixelSize() const { return m_pixelSize; }
|
||||
wxFontFamily GetFamily() const { return m_family; }
|
||||
const wxString& GetFaceName() const { return m_faceName; }
|
||||
|
||||
wxFontStyle GetStyle() const
|
||||
{
|
||||
return m_flags & wxFONTFLAG_ITALIC
|
||||
? wxFONTSTYLE_ITALIC
|
||||
: m_flags & wxFONTFLAG_SLANT
|
||||
? wxFONTSTYLE_SLANT
|
||||
: wxFONTSTYLE_NORMAL;
|
||||
}
|
||||
|
||||
wxFontWeight GetWeight() const
|
||||
{
|
||||
return m_flags & wxFONTFLAG_LIGHT
|
||||
? wxFONTWEIGHT_LIGHT
|
||||
: m_flags & wxFONTFLAG_BOLD
|
||||
? wxFONTWEIGHT_BOLD
|
||||
: wxFONTWEIGHT_NORMAL;
|
||||
}
|
||||
|
||||
bool IsAntiAliased() const
|
||||
{
|
||||
return (m_flags & wxFONTFLAG_ANTIALIASED) != 0;
|
||||
}
|
||||
|
||||
bool IsUnderlined() const
|
||||
{
|
||||
return (m_flags & wxFONTFLAG_UNDERLINED) != 0;
|
||||
}
|
||||
|
||||
bool IsStrikethrough() const
|
||||
{
|
||||
return (m_flags & wxFONTFLAG_STRIKETHROUGH) != 0;
|
||||
}
|
||||
|
||||
wxFontEncoding GetEncoding() const { return m_encoding; }
|
||||
|
||||
|
||||
// Default copy ctor, assignment operator and dtor are OK.
|
||||
|
||||
private:
|
||||
// Common part of all ctor, initializing everything except the size (which
|
||||
// is initialized by the ctors themselves).
|
||||
void Init()
|
||||
{
|
||||
m_family = wxFONTFAMILY_DEFAULT;
|
||||
m_flags = wxFONTFLAG_DEFAULT;
|
||||
m_encoding = wxFONTENCODING_DEFAULT;
|
||||
}
|
||||
|
||||
void InitPointSize(int pointSize)
|
||||
{
|
||||
Init();
|
||||
|
||||
m_pointSize = pointSize;
|
||||
m_pixelSize = wxDefaultSize;
|
||||
}
|
||||
|
||||
// Turn on or off the given bit in m_flags depending on the value of the
|
||||
// boolean argument.
|
||||
void SetFlag(int flag, bool on)
|
||||
{
|
||||
if ( on )
|
||||
m_flags |= flag;
|
||||
else
|
||||
m_flags &= ~flag;
|
||||
}
|
||||
|
||||
// The size information: if m_pixelSize is valid (!= wxDefaultSize), then
|
||||
// it is used. Otherwise m_pointSize is used, taking into account that if
|
||||
// it is == -1, it means that the platform dependent font size should be
|
||||
// used.
|
||||
int m_pointSize;
|
||||
wxSize m_pixelSize;
|
||||
|
||||
wxFontFamily m_family;
|
||||
wxString m_faceName;
|
||||
int m_flags;
|
||||
wxFontEncoding m_encoding;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxFontBase represents a font object
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -124,6 +263,7 @@ public:
|
||||
derived classes should provide the following ctors:
|
||||
|
||||
wxFont();
|
||||
wxFont(const wxFontInfo& info);
|
||||
wxFont(const wxString& nativeFontInfoString);
|
||||
wxFont(const wxNativeFontInfo& info);
|
||||
wxFont(int size,
|
||||
@@ -293,7 +433,7 @@ protected:
|
||||
virtual wxFontFamily DoGetFamily() const = 0;
|
||||
|
||||
|
||||
// Helper functions to recover wxFONTSTYLE/wxFONTWEIGHT and underlined flg
|
||||
// Helper functions to recover wxFONTSTYLE/wxFONTWEIGHT and underlined flag
|
||||
// values from flags containing a combination of wxFONTFLAG_XXX.
|
||||
static wxFontStyle GetStyleFromFlags(int flags)
|
||||
{
|
||||
|
Reference in New Issue
Block a user