diff --git a/docs/changes.txt b/docs/changes.txt
index 061af1a26f..f3371da273 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -635,6 +635,7 @@ All (GUI):
- Add wxEVT_GRID_COL_AUTO_SIZE event (Igor Korot).
- Add chainable wxWizardPageSimple::Chain() overload.
- Add wxTextEntryDialog::SetMaxLength() (derEine).
+- Add more convenient wxFont(wxFontInfo) ctor.
wxGTK:
diff --git a/include/wx/cocoa/font.h b/include/wx/cocoa/font.h
index a8989845db..9ea87d6c2f 100644
--- a/include/wx/cocoa/font.h
+++ b/include/wx/cocoa/font.h
@@ -38,6 +38,20 @@ public:
*/
wxFont() { }
+ wxFont(const wxFontInfo& info)
+ {
+ Create(info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.IsUnderlined(),
+ info.GetFaceName(),
+ info.GetEncoding());
+
+ if ( info.IsUsingSizeInPixels() )
+ SetPixelSize(info.GetPixelSize());
+ }
+
/*! @abstract Platform-independent construction with individual properties
*/
#if FUTURE_WXWIN_COMPATIBILITY_3_0
@@ -75,19 +89,6 @@ public:
SetPixelSize(pixelSize);
}
- wxFont(int pointSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- Create(pointSize, family,
- GetStyleFromFlags(flags),
- GetWeightFromFlags(flags),
- GetUnderlinedFromFlags(flags),
- face, encoding);
- }
-
/*! @abstract Construction with opaque wxNativeFontInfo
*/
wxFont(const wxNativeFontInfo& info)
diff --git a/include/wx/dfb/font.h b/include/wx/dfb/font.h
index 3ccdebb422..db68dbd3ff 100644
--- a/include/wx/dfb/font.h
+++ b/include/wx/dfb/font.h
@@ -23,6 +23,21 @@ class WXDLLIMPEXP_CORE wxFont : public wxFontBase
{
public:
wxFont() {}
+
+ wxFont(const wxFontInfo& info)
+ {
+ Create(info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.IsUnderlined(),
+ info.GetFaceName(),
+ info.GetEncoding());
+
+ if ( info.IsUsingSizeInPixels() )
+ SetPixelSize(info.GetPixelSize());
+ }
+
wxFont(const wxNativeFontInfo& info) { Create(info); }
#if FUTURE_WXWIN_COMPATIBILITY_3_0
wxFont(int size,
@@ -60,19 +75,6 @@ public:
SetPixelSize(pixelSize);
}
- wxFont(int pointSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- Create(pointSize, family,
- GetStyleFromFlags(flags),
- GetWeightFromFlags(flags),
- GetUnderlinedFromFlags(flags),
- face, encoding);
- }
-
bool Create(int size,
wxFontFamily family,
wxFontStyle style,
diff --git a/include/wx/font.h b/include/wx/font.h
index b14281221e..cae9bd8d5f 100644
--- a/include/wx/font.h
+++ b/include/wx/font.h
@@ -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)
{
diff --git a/include/wx/gtk/font.h b/include/wx/gtk/font.h
index bb0c5ec7b0..400e372851 100644
--- a/include/wx/gtk/font.h
+++ b/include/wx/gtk/font.h
@@ -19,7 +19,8 @@ class WXDLLIMPEXP_CORE wxFont : public wxFontBase
public:
wxFont() { }
- // wxGTK-specific
+ wxFont(const wxFontInfo& info);
+
wxFont(const wxString& nativeFontInfoString)
{
Create(nativeFontInfoString);
@@ -63,12 +64,6 @@ public:
SetPixelSize(pixelSize);
}
- wxFont(int pointSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
-
bool Create(int size,
wxFontFamily family,
wxFontStyle style,
diff --git a/include/wx/gtk1/font.h b/include/wx/gtk1/font.h
index 87d21b1f11..d2e6fd489c 100644
--- a/include/wx/gtk1/font.h
+++ b/include/wx/gtk1/font.h
@@ -32,7 +32,20 @@ public:
// ctors and such
wxFont() { }
- // wxGTK-specific
+ wxFont(const wxFontInfo& info)
+ {
+ Create(info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.IsUnderlined(),
+ info.GetFaceName(),
+ info.GetEncoding());
+
+ if ( info.IsUsingSizeInPixels() )
+ SetPixelSize(info.GetPixelSize());
+ }
+
wxFont(const wxString& fontname)
{
Create(fontname);
@@ -76,19 +89,6 @@ public:
SetPixelSize(pixelSize);
}
- wxFont(int pointSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- Create(pointSize, family,
- GetStyleFromFlags(flags),
- GetWeightFromFlags(flags),
- GetUnderlinedFromFlags(flags),
- face, encoding);
- }
-
bool Create(int size,
wxFontFamily family,
wxFontStyle style,
diff --git a/include/wx/motif/font.h b/include/wx/motif/font.h
index 935581f2e4..ef259f9a55 100644
--- a/include/wx/motif/font.h
+++ b/include/wx/motif/font.h
@@ -28,6 +28,20 @@ public:
// ctors and such
wxFont() { }
+ wxFont(const wxFontInfo& info)
+ {
+ Create(info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.IsUnderlined(),
+ info.GetFaceName(),
+ info.GetEncoding());
+
+ if ( info.IsUsingSizeInPixels() )
+ SetPixelSize(info.GetPixelSize());
+ }
+
wxFont(const wxNativeFontInfo& info);
#if FUTURE_WXWIN_COMPATIBILITY_3_0
@@ -66,19 +80,6 @@ public:
SetPixelSize(pixelSize);
}
- wxFont(int pointSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- Create(pointSize, family,
- GetStyleFromFlags(flags),
- GetWeightFromFlags(flags),
- GetUnderlinedFromFlags(flags),
- face, encoding);
- }
-
bool Create(int size,
wxFontFamily family,
wxFontStyle style,
diff --git a/include/wx/msw/font.h b/include/wx/msw/font.h
index 7a83f76653..d95b0da260 100644
--- a/include/wx/msw/font.h
+++ b/include/wx/msw/font.h
@@ -24,6 +24,8 @@ public:
// ctors and such
wxFont() { }
+ wxFont(const wxFontInfo& info);
+
#if FUTURE_WXWIN_COMPATIBILITY_3_0
wxFont(int size,
int family,
@@ -91,12 +93,6 @@ public:
Create(info, hFont);
}
- wxFont(int pointSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
-
wxFont(const wxString& fontDesc);
diff --git a/include/wx/os2/font.h b/include/wx/os2/font.h
index 39be035dfc..e0eabda61f 100644
--- a/include/wx/os2/font.h
+++ b/include/wx/os2/font.h
@@ -27,6 +27,20 @@ public:
// ctors and such
wxFont() { }
+ wxFont(const wxFontInfo& info)
+ {
+ Create(info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.IsUnderlined(),
+ info.GetFaceName(),
+ info.GetEncoding());
+
+ if ( info.IsUsingSizeInPixels() )
+ SetPixelSize(info.GetPixelSize());
+ }
+
#if FUTURE_WXWIN_COMPATIBILITY_3_0
wxFont(int size,
int family,
@@ -63,19 +77,6 @@ public:
SetPixelSize(pixelSize);
}
- wxFont(int pointSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- Create(pointSize, family,
- GetStyleFromFlags(flags),
- GetWeightFromFlags(flags),
- GetUnderlinedFromFlags(flags),
- face, encoding);
- }
-
bool Create(int size,
wxFontFamily family,
wxFontStyle style,
diff --git a/include/wx/osx/font.h b/include/wx/osx/font.h
index 007eaef9cf..d5e277f979 100644
--- a/include/wx/osx/font.h
+++ b/include/wx/osx/font.h
@@ -37,6 +37,20 @@ public:
// ctors and such
wxFont() { }
+ wxFont(const wxFontInfo& info)
+ {
+ Create(info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.IsUnderlined(),
+ info.GetFaceName(),
+ info.GetEncoding());
+
+ if ( info.IsUsingSizeInPixels() )
+ SetPixelSize(info.GetPixelSize());
+ }
+
wxFont( wxOSXSystemFont systemFont );
#if wxOSX_USE_COCOA
@@ -79,19 +93,6 @@ public:
SetPixelSize(pixelSize);
}
- wxFont(int pointSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- Create(pointSize, family,
- GetStyleFromFlags(flags),
- GetWeightFromFlags(flags),
- GetUnderlinedFromFlags(flags),
- face, encoding);
- }
-
bool Create(int size,
wxFontFamily family,
wxFontStyle style,
diff --git a/include/wx/x11/font.h b/include/wx/x11/font.h
index a7cabdeb9f..f05177a46d 100644
--- a/include/wx/x11/font.h
+++ b/include/wx/x11/font.h
@@ -21,6 +21,20 @@ public:
// ctors and such
wxFont() { }
+ wxFont(const wxFontInfo& info)
+ {
+ Create(info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.IsUnderlined(),
+ info.GetFaceName(),
+ info.GetEncoding());
+
+ if ( info.IsUsingSizeInPixels() )
+ SetPixelSize(info.GetPixelSize());
+ }
+
#if FUTURE_WXWIN_COMPATIBILITY_3_0
wxFont(int size,
int family,
@@ -57,19 +71,6 @@ public:
SetPixelSize(pixelSize);
}
- wxFont(int pointSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- Create(pointSize, family,
- GetStyleFromFlags(flags),
- GetWeightFromFlags(flags),
- GetUnderlinedFromFlags(flags),
- face, encoding);
- }
-
bool Create(int size,
wxFontFamily family,
wxFontStyle style,
diff --git a/interface/wx/font.h b/interface/wx/font.h
index 766ce5d225..fee764d16c 100644
--- a/interface/wx/font.h
+++ b/interface/wx/font.h
@@ -270,12 +270,155 @@ enum wxFontEncoding
};
+/**
+ Description of wxFont.
+
+ This class is a helper used for wxFont creation using named parameter
+ idiom: it allows to specify various wxFont attributes using the chained
+ calls to its clearly named methods instead of passing them in the fixed
+ order to wxFont constructors.
+
+ For example, to create an italic font with the given face name and size you
+ could use:
+ @code
+ wxFont font(wxFontInfo(12).FaceName().Italic());
+ @endcode
+
+ Notice that all of the methods of this object return a reference to the
+ object itself, allowing the calls to them to be chained as in the example
+ above.
+
+ All methods taking boolean parameters can be used to turn the specified
+ font attribute on or off and turn it on by default.
+
+ @since 2.9.5
+ */
+class wxFontInfo
+{
+public:
+ /**
+ Default constructor uses the default font size for the current
+ platform.
+ */
+ wxFontInfo();
+
+ /**
+ Constructor setting the font size in points to use.
+
+ @see wxFont::SetPointSize()
+ */
+ explicit wxFontInfo(int pointSize);
+
+ /**
+ Constructor setting the font size in pixels to use.
+
+ @see wxFont::SetPixelSize()
+ */
+ explicit wxFontInfo(const wxSize& pixelSize);
+
+ /**
+ Set the font family.
+
+ The family is a generic portable way of referring to fonts without
+ specifying a precise face name. This parameter must be one of the
+ ::wxFontFamily enumeration values.
+
+ If the FaceName() is used, then it overrides the font family.
+
+ @see wxFont::SetFamily()
+ */
+ wxFontInfo& Family(wxFontFamily family);
+
+ /**
+ Set the font face name to use.
+
+ Face names are not portable, so prefer to use Family() in portable
+ code.
+
+ @see wxFont::SetFaceName()
+ */
+ wxFontInfo& FaceName(const wxString& faceName);
+
+ /**
+ Use a bold version of the font.
+
+ @see ::wxFontWeight, wxFont::SetWeight()
+ */
+ wxFontInfo& Bold(bool bold = true);
+
+ /**
+ Use a lighter version of the font.
+
+ @see ::wxFontWeight, wxFont::SetWeight()
+ */
+ wxFontInfo& Light(bool light = true);
+
+ /**
+ Use an italic version of the font.
+
+ @see ::wxFontStyle, wxFont::SetStyle()
+ */
+ wxFontInfo& Italic(bool italic = true);
+
+ /**
+ Use a slanted version of the font.
+
+ @see ::wxFontStyle, wxFont::SetStyle()
+ */
+ wxFontInfo& Slant(bool slant = true);
+
+ /**
+ Set anti-aliasing flag.
+
+ Force the use of anti-aliasing on or off.
+
+ Currently this is not implemented, i.e. using this method doesn't do
+ anything.
+ */
+ wxFontInfo& AntiAliased(bool antiAliased = true);
+
+ /**
+ Use an underlined version of the font.
+ */
+ wxFontInfo& Underlined(bool underlined = true);
+
+ /**
+ Use a strike-through version of the font.
+
+ Currently this is only implemented in wxMSW and wxGTK.
+ */
+ wxFontInfo& Strikethrough(bool strikethrough = true);
+
+ /**
+ Set the font encoding to use.
+
+ This is mostly unneeded in Unicode builds of wxWidgets.
+
+ @see ::wxFontEncoding, wxFont::SetEncoding()
+ */
+ wxFontInfo& Encoding(wxFontEncoding encoding);
+
+ /**
+ Set all the font attributes at once.
+
+ See ::wxFontFlag for the various flags that can be used.
+ */
+ wxFontInfo& AllFlags(int flags);
+};
+
/**
@class wxFont
A font is an object which determines the appearance of text.
+
Fonts are used for drawing text to a device context, and setting the appearance
- of a window's text.
+ of a window's text, see wxDC::SetFont() and wxWindow::SetFont().
+
+ The easiest way to create a custom font is to use wxFontInfo object to
+ specify the font attributes and then use wxFont::wxFont(const wxFontInfo&)
+ constructor. Alternatively, you could start with one of the pre-defined
+ fonts or use wxWindow::GetFont() and modify the font, e.g. by increasing
+ its size using MakeLarger() or changing its weight using MakeBold().
This class uses @ref overview_refcount "reference counting and copy-on-write"
internally so that assignments between two instances of this class are very
@@ -308,9 +451,36 @@ public:
*/
wxFont(const wxFont& font);
+ /**
+ Creates a font object using the specified font description.
+
+ This is the preferred way to create font objects as using this ctor
+ results in more readable code and it is also extensible, e.g. it could
+ continue to be used if support for more font attributes is added in the
+ future. For example, this constructor provides the only way of creating
+ fonts with strike-through style.
+
+ Example of creating a font using this ctor:
+ @code
+ wxFont font(wxFontInfo(10).Bold().Underlined());
+ @endcode
+
+ @since 2.9.5
+ */
+ wxFont(const wxFontInfo& font);
+
/**
Creates a font object with the specified attributes and size in points.
+ Notice that the use of this constructor is often more verbose and less
+ readable than the use of constructor from wxFontInfo, e.g. the example
+ in that constructor documentation would need to be written as
+ @code
+ wxFont font(10, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
+ wxFONTWEIGHT_BOLD, true);
+ @endcode
+ which is longer and less clear.
+
@param pointSize
Size in points. See SetPointSize() for more info.
@param family
@@ -357,6 +527,10 @@ public:
/**
Creates a font object with the specified attributes and size in pixels.
+ Notice that the use of this constructor is often more verbose and less
+ readable than the use of constructor from wxFontInfo, consider using
+ that constructor instead.
+
@param pixelSize
Size in pixels. See SetPixelSize() for more info.
@param family
@@ -400,25 +574,6 @@ public:
const wxString& faceName = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- /**
- Creates a font object using font flags.
-
- This constructor is similar to the constructors above except it
- specifies the font styles such as underlined, italic, bold, ... in a
- single @a flags argument instead of using separate arguments for them.
- This parameter can be a combination of ::wxFontFlag enum elements.
- The meaning of the remaining arguments is the same as in the other
- constructors, please see their documentation for details.
-
- Notice that this constructor provides the only way of creating fonts
- with strike-through style.
-
- @since 2.9.4
- */
- wxFont(int pointSize, wxFontFamily family, int flags,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
-
/**
Constructor from font description string.
@@ -844,7 +999,7 @@ public:
/**
Sets the point size.
- The point size is defined as 1/72 of the anglo-Saxon inch
+ The point size is defined as 1/72 of the Anglo-Saxon inch
(25.4 mm): it is approximately 0.0139 inch or 352.8 um.
@param pointSize
@@ -981,6 +1136,9 @@ public:
This function takes the same parameters as the relative
@ref wxFont::wxFont "wxFont constructor" and returns a new font
object allocated on the heap.
+
+ Their use is discouraged, use wxFont constructor from wxFontInfo
+ instead.
*/
static wxFont* New(int pointSize, wxFontFamily family, wxFontStyle style,
wxFontWeight weight,
diff --git a/samples/font/font.cpp b/samples/font/font.cpp
index 0dbf46ac59..8ffde87c07 100644
--- a/samples/font/font.cpp
+++ b/samples/font/font.cpp
@@ -518,9 +518,7 @@ bool MyFrame::DoEnumerateFamilies(bool fixedWidthOnly,
if ( !facename.empty() )
{
- wxFont font(wxNORMAL_FONT->GetPointSize(),
- wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
- wxFONTWEIGHT_NORMAL, false, facename, encoding);
+ wxFont font(wxFontInfo().FaceName(facename).Encoding(encoding));
DoChangeFont(font);
}
@@ -978,10 +976,7 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event))
// and now create the correct font
if ( !DoEnumerateFamilies(false, fontenc, true /* silent */) )
{
- wxFont font(wxNORMAL_FONT->GetPointSize(),
- wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
- wxFONTWEIGHT_NORMAL, false /* !underlined */,
- wxEmptyString /* facename */, fontenc);
+ wxFont font(wxFontInfo(wxNORMAL_FONT->GetPointSize()).Encoding(fontenc));
if ( font.IsOk() )
{
DoChangeFont(font);
diff --git a/src/gtk/font.cpp b/src/gtk/font.cpp
index f2e48c3ca8..e078010efa 100644
--- a/src/gtk/font.cpp
+++ b/src/gtk/font.cpp
@@ -278,18 +278,20 @@ wxFont::wxFont(const wxNativeFontInfo& info)
SetStrikethrough(true);
}
-wxFont::wxFont(int pointSize,
- wxFontFamily family,
- int flags,
- const wxString& face,
- wxFontEncoding encoding)
+wxFont::wxFont(const wxFontInfo& info)
{
- m_refData = new wxFontRefData(pointSize, family,
- GetStyleFromFlags(flags),
- GetWeightFromFlags(flags),
- GetUnderlinedFromFlags(flags),
- GetStrikethroughFromFlags(flags),
- face, encoding);
+ m_refData = new wxFontRefData(info.GetPointSize(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.IsUnderlined(),
+ info.IsStrikethrough(),
+ info.GetFaceName(),
+ info.GetEncoding());
+
+ wxSize pixelSize = info.GetPixelSize();
+ if ( pixelSize != wxDefaultSize )
+ SetPixelSize(pixelSize);
}
bool wxFont::Create( int pointSize,
diff --git a/src/msw/font.cpp b/src/msw/font.cpp
index 060139df72..ddeef61886 100644
--- a/src/msw/font.cpp
+++ b/src/msw/font.cpp
@@ -804,18 +804,18 @@ wxFont::wxFont(const wxString& fontdesc)
(void)Create(info);
}
-wxFont::wxFont(int pointSize,
- wxFontFamily family,
- int flags,
- const wxString& face,
- wxFontEncoding encoding)
+wxFont::wxFont(const wxFontInfo& info)
{
- m_refData = new wxFontRefData(pointSize, wxDefaultSize, false,
- family,
- GetStyleFromFlags(flags),
- GetWeightFromFlags(flags),
- GetUnderlinedFromFlags(flags),
- false, face, encoding);
+ m_refData = new wxFontRefData(info.GetPointSize(),
+ info.GetPixelSize(),
+ info.IsUsingSizeInPixels(),
+ info.GetFamily(),
+ info.GetStyle(),
+ info.GetWeight(),
+ info.IsUnderlined(),
+ info.IsStrikethrough(),
+ info.GetFaceName(),
+ info.GetEncoding());
}
bool wxFont::Create(const wxNativeFontInfo& info, WXHFONT hFont)