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
- 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:
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
{
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;
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.
*/
*/
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.
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);