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:
parent
801423ee34
commit
19da7aaa9b
@ -468,6 +468,7 @@ All (GUI):
|
||||
- Added support for saving as GIF and animated GIF (troelsk).
|
||||
- Fix wxWrapSizer minimal size calculation (Catalin Raceanu).
|
||||
- Added wxFont::Underlined() and MakeUnderlined() methods.
|
||||
- Added wxFont::SetSymbolicSize() and related methods.
|
||||
|
||||
GTK:
|
||||
|
||||
|
@ -66,6 +66,18 @@ enum wxFontWeight
|
||||
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
|
||||
enum wxFontFlag
|
||||
{
|
||||
@ -240,6 +252,19 @@ public:
|
||||
bool SetNativeFontInfo(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()
|
||||
// will return "wxITALIC" for an italic font, ...)
|
||||
wxString GetFamilyString() const;
|
||||
|
@ -70,6 +70,27 @@ enum wxFontWeight
|
||||
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.
|
||||
*/
|
||||
@ -791,6 +812,28 @@ public:
|
||||
*/
|
||||
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.
|
||||
|
||||
|
@ -491,6 +491,29 @@ bool wxFontBase::SetFaceName(const wxString& facename)
|
||||
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()
|
||||
{
|
||||
SetWeight(wxFONTWEIGHT_BOLD);
|
||||
|
Loading…
Reference in New Issue
Block a user