Add wxFontInfo::Weight()

Also add not yet used wxFontInfo::GetNumericWeight().
This commit is contained in:
Vadim Zeitlin
2018-09-12 18:55:53 +02:00
parent ff5766a8fb
commit 23f2929eb4
2 changed files with 47 additions and 9 deletions

View File

@@ -96,7 +96,7 @@ enum wxFontFlag
wxFONTFLAG_ITALIC = 1 << 0, wxFONTFLAG_ITALIC = 1 << 0,
wxFONTFLAG_SLANT = 1 << 1, wxFONTFLAG_SLANT = 1 << 1,
// weight flags (default: medium) // weight flags (default: medium):
wxFONTFLAG_LIGHT = 1 << 2, wxFONTFLAG_LIGHT = 1 << 2,
wxFONTFLAG_BOLD = 1 << 3, wxFONTFLAG_BOLD = 1 << 3,
@@ -153,10 +153,12 @@ public:
wxFontInfo& FaceName(const wxString& faceName) wxFontInfo& FaceName(const wxString& faceName)
{ m_faceName = faceName; return *this; } { m_faceName = faceName; return *this; }
wxFontInfo& Weight(int weight)
{ m_weight = weight; return *this; }
wxFontInfo& Bold(bool bold = true) wxFontInfo& Bold(bool bold = true)
{ SetFlag(wxFONTFLAG_BOLD, bold); return *this; } { return Weight(bold ? wxFONTWEIGHT_BOLD : wxFONTWEIGHT_NORMAL); }
wxFontInfo& Light(bool light = true) wxFontInfo& Light(bool light = true)
{ SetFlag(wxFONTFLAG_LIGHT, light); return *this; } { return Weight(light ? wxFONTWEIGHT_LIGHT : wxFONTWEIGHT_NORMAL); }
wxFontInfo& Italic(bool italic = true) wxFontInfo& Italic(bool italic = true)
{ SetFlag(wxFONTFLAG_ITALIC, italic); return *this; } { SetFlag(wxFONTFLAG_ITALIC, italic); return *this; }
@@ -176,7 +178,17 @@ public:
// Set all flags at once. // Set all flags at once.
wxFontInfo& AllFlags(int flags) wxFontInfo& AllFlags(int flags)
{ m_flags = flags; return *this; } {
m_flags = flags;
m_weight = m_flags & wxFONTFLAG_BOLD
? wxFONTWEIGHT_BOLD
: m_flags & wxFONTFLAG_LIGHT
? wxFONTWEIGHT_LIGHT
: wxFONTWEIGHT_NORMAL;
return *this;
}
// Accessors are mostly meant to be used by wxFont itself to extract the // Accessors are mostly meant to be used by wxFont itself to extract the
@@ -198,13 +210,14 @@ public:
: wxFONTSTYLE_NORMAL; : wxFONTSTYLE_NORMAL;
} }
int GetNumericWeight() const
{
return m_weight;
}
wxFontWeight GetWeight() const wxFontWeight GetWeight() const
{ {
return m_flags & wxFONTFLAG_LIGHT return GetWeightClosestToNumericValue(m_weight);
? wxFONTWEIGHT_LIGHT
: m_flags & wxFONTFLAG_BOLD
? wxFONTWEIGHT_BOLD
: wxFONTWEIGHT_NORMAL;
} }
bool IsAntiAliased() const bool IsAntiAliased() const
@@ -273,6 +286,7 @@ private:
m_pointSize = -1; m_pointSize = -1;
m_family = wxFONTFAMILY_DEFAULT; m_family = wxFONTFAMILY_DEFAULT;
m_flags = wxFONTFLAG_DEFAULT; m_flags = wxFONTFLAG_DEFAULT;
m_weight = wxFONTWEIGHT_NORMAL;
m_encoding = wxFONTENCODING_DEFAULT; m_encoding = wxFONTENCODING_DEFAULT;
} }
@@ -303,6 +317,7 @@ private:
wxFontFamily m_family; wxFontFamily m_family;
wxString m_faceName; wxString m_faceName;
int m_flags; int m_flags;
int m_weight;
wxFontEncoding m_encoding; wxFontEncoding m_encoding;
}; };

View File

@@ -363,9 +363,24 @@ public:
*/ */
wxFontInfo& FaceName(const wxString& faceName); wxFontInfo& FaceName(const wxString& faceName);
/**
Specify the weight of the font.
@param weight
A font weight in the range from 1 to 1000, inclusive, with 1 being
the thinnest and 1000 the heaviest possible font variant.
@c wxFONTWEIGHT_XXX values from wxFontWeight enum can be used here.
@since 3.1.2
*/
wxFontInfo& Weight(int weight);
/** /**
Use a bold version of the font. Use a bold version of the font.
This is a wrapper for Weight() calling it with ::wxFONTWEIGHT_BOLD
argument.
@see ::wxFontWeight, wxFont::SetWeight() @see ::wxFontWeight, wxFont::SetWeight()
*/ */
wxFontInfo& Bold(bool bold = true); wxFontInfo& Bold(bool bold = true);
@@ -373,6 +388,9 @@ public:
/** /**
Use a lighter version of the font. Use a lighter version of the font.
This is a wrapper for Weight() calling it with ::wxFONTWEIGHT_LIGHT
argument.
@see ::wxFontWeight, wxFont::SetWeight() @see ::wxFontWeight, wxFont::SetWeight()
*/ */
wxFontInfo& Light(bool light = true); wxFontInfo& Light(bool light = true);
@@ -426,6 +444,11 @@ public:
Set all the font attributes at once. Set all the font attributes at once.
See ::wxFontFlag for the various flags that can be used. See ::wxFontFlag for the various flags that can be used.
Note that calling this method affects the font weight stored in this
object: it is set to ::wxFONTWEIGHT_LIGHT or ::wxFONTWEIGHT_BOLD if the
corresponding flag is present in @a flags, or ::wxFONTWEIGHT_NORMAL
otherwise.
*/ */
wxFontInfo& AllFlags(int flags); wxFontInfo& AllFlags(int flags);