Add wxFont::SetSymbolicSize() and SetSymbolicSizeRelativeTo().
These methods allow to set the font size using CSS-like absolute size specifications. Notice that the factors used here are incompatible with (but better than) the ones used in wxBuildFontSizes() in src/html/winpars.cpp. In the future it would be nice to reuse the new wxFont functions in wxHTML code. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67052 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -468,6 +468,7 @@ All (GUI):
|
|||||||
- Added support for saving as GIF and animated GIF (troelsk).
|
- Added support for saving as GIF and animated GIF (troelsk).
|
||||||
- Fix wxWrapSizer minimal size calculation (Catalin Raceanu).
|
- Fix wxWrapSizer minimal size calculation (Catalin Raceanu).
|
||||||
- Added wxFont::Underlined() and MakeUnderlined() methods.
|
- Added wxFont::Underlined() and MakeUnderlined() methods.
|
||||||
|
- Added wxFont::SetSymbolicSize() and related methods.
|
||||||
|
|
||||||
GTK:
|
GTK:
|
||||||
|
|
||||||
|
@@ -66,6 +66,18 @@ enum wxFontWeight
|
|||||||
wxFONTWEIGHT_MAX
|
wxFONTWEIGHT_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Symbolic font sizes as defined in CSS specification.
|
||||||
|
enum wxFontSymbolicSize
|
||||||
|
{
|
||||||
|
wxFONTSIZE_XX_SMALL = -3,
|
||||||
|
wxFONTSIZE_X_SMALL,
|
||||||
|
wxFONTSIZE_SMALL,
|
||||||
|
wxFONTSIZE_MEDIUM,
|
||||||
|
wxFONTSIZE_LARGE,
|
||||||
|
wxFONTSIZE_X_LARGE,
|
||||||
|
wxFONTSIZE_XX_LARGE
|
||||||
|
};
|
||||||
|
|
||||||
// the font flag bits for the new font ctor accepting one combined flags word
|
// the font flag bits for the new font ctor accepting one combined flags word
|
||||||
enum wxFontFlag
|
enum wxFontFlag
|
||||||
{
|
{
|
||||||
@@ -240,6 +252,19 @@ public:
|
|||||||
bool SetNativeFontInfo(const wxString& info);
|
bool SetNativeFontInfo(const wxString& info);
|
||||||
bool SetNativeFontInfoUserDesc(const wxString& info);
|
bool SetNativeFontInfoUserDesc(const wxString& info);
|
||||||
|
|
||||||
|
// Symbolic font sizes support: set the font size to "large" or "very
|
||||||
|
// small" either absolutely (i.e. compared to the default font size) or
|
||||||
|
// relatively to the given font size.
|
||||||
|
void SetSymbolicSize(wxFontSymbolicSize size);
|
||||||
|
void SetSymbolicSizeRelativeTo(wxFontSymbolicSize size, int base)
|
||||||
|
{
|
||||||
|
SetPointSize(AdjustToSymbolicSize(size, base));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Adjust the base size in points according to symbolic size.
|
||||||
|
static int AdjustToSymbolicSize(wxFontSymbolicSize size, int base);
|
||||||
|
|
||||||
|
|
||||||
// translate the fonts into human-readable string (i.e. GetStyleString()
|
// translate the fonts into human-readable string (i.e. GetStyleString()
|
||||||
// will return "wxITALIC" for an italic font, ...)
|
// will return "wxITALIC" for an italic font, ...)
|
||||||
wxString GetFamilyString() const;
|
wxString GetFamilyString() const;
|
||||||
|
@@ -70,6 +70,27 @@ enum wxFontWeight
|
|||||||
wxFONTWEIGHT_MAX
|
wxFONTWEIGHT_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
Symbolic font sizes.
|
||||||
|
|
||||||
|
The elements of this enum correspond to CSS absolute size specifications,
|
||||||
|
see http://www.w3.org/TR/CSS21/fonts.html#font-size-props
|
||||||
|
|
||||||
|
@see wxFont::SetSymbolicSize()
|
||||||
|
|
||||||
|
@since 2.9.2
|
||||||
|
*/
|
||||||
|
enum wxFontSymbolicSize
|
||||||
|
{
|
||||||
|
wxFONTSIZE_XX_SMALL = -3, //!< Extra small.
|
||||||
|
wxFONTSIZE_X_SMALL, //!< Very small.
|
||||||
|
wxFONTSIZE_SMALL, //!< Small.
|
||||||
|
wxFONTSIZE_MEDIUM, //!< Normal.
|
||||||
|
wxFONTSIZE_LARGE, //!< Large.
|
||||||
|
wxFONTSIZE_X_LARGE, //!< Very large.
|
||||||
|
wxFONTSIZE_XX_LARGE //!< Extra large.
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The font flag bits for the new font ctor accepting one combined flags word.
|
The font flag bits for the new font ctor accepting one combined flags word.
|
||||||
*/
|
*/
|
||||||
@@ -791,6 +812,28 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual void SetStyle(wxFontStyle style);
|
virtual void SetStyle(wxFontStyle style);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets the font size using a predefined symbolic size name.
|
||||||
|
|
||||||
|
This function allows to change font size to be (very) large or small
|
||||||
|
compared to the standard font size.
|
||||||
|
|
||||||
|
@see SetSymbolicSizeRelativeTo().
|
||||||
|
|
||||||
|
@since 2.9.2
|
||||||
|
*/
|
||||||
|
void SetSymbolicSize(wxFontSymbolicSize size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Sets the font size compared to the base font size.
|
||||||
|
|
||||||
|
This is the same as SetSymbolicSize() except that it uses the given
|
||||||
|
font size as the normal font size instead of the standard font size.
|
||||||
|
|
||||||
|
@since 2.9.2
|
||||||
|
*/
|
||||||
|
void SetSymbolicSizeRelativeTo(wxFontSymbolicSize size, int base);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Sets underlining.
|
Sets underlining.
|
||||||
|
|
||||||
|
@@ -491,6 +491,29 @@ bool wxFontBase::SetFaceName(const wxString& facename)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void wxFontBase::SetSymbolicSize(wxFontSymbolicSize size)
|
||||||
|
{
|
||||||
|
SetSymbolicSizeRelativeTo(size, wxNORMAL_FONT->GetPointSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
/* static */
|
||||||
|
int wxFontBase::AdjustToSymbolicSize(wxFontSymbolicSize size, int base)
|
||||||
|
{
|
||||||
|
// Using a fixed factor (1.2, from CSS2) is a bad idea as explained at
|
||||||
|
// http://www.w3.org/TR/CSS21/fonts.html#font-size-props so use the values
|
||||||
|
// from http://style.cleverchimp.com/font_size_intervals/altintervals.html
|
||||||
|
// instead.
|
||||||
|
static const float factors[] = { 0.60f, 0.75f, 0.89f, 1.f, 1.2f, 1.5f, 2.f };
|
||||||
|
|
||||||
|
wxCOMPILE_TIME_ASSERT
|
||||||
|
(
|
||||||
|
WXSIZEOF(factors) == wxFONTSIZE_XX_LARGE - wxFONTSIZE_XX_SMALL + 1,
|
||||||
|
WrongFontSizeFactorsSize
|
||||||
|
);
|
||||||
|
|
||||||
|
return factors[size - wxFONTSIZE_XX_SMALL]*base;
|
||||||
|
}
|
||||||
|
|
||||||
wxFont& wxFont::MakeBold()
|
wxFont& wxFont::MakeBold()
|
||||||
{
|
{
|
||||||
SetWeight(wxFONTWEIGHT_BOLD);
|
SetWeight(wxFONTWEIGHT_BOLD);
|
||||||
|
Reference in New Issue
Block a user