| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: font.h
- // Purpose: interface of wxFont
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- Standard font families: these are used mainly during wxFont creation to specify
- the generic properties of the font without hardcoding in the sources a specific
- face name.
- wxFontFamily thus allows to group the font face names of fonts with similar
- properties. Most wxWidgets ports use lists of fonts for each font family
- inspired by the data taken from http://www.codestyle.org/css/font-family.
- */
- enum wxFontFamily
- {
- wxFONTFAMILY_DEFAULT = wxDEFAULT, //!< Chooses a default font.
- wxFONTFAMILY_DECORATIVE = wxDECORATIVE, //!< A decorative font.
- wxFONTFAMILY_ROMAN = wxROMAN, //!< A formal, serif font.
- wxFONTFAMILY_SCRIPT = wxSCRIPT, //!< A handwriting font.
- wxFONTFAMILY_SWISS = wxSWISS, //!< A sans-serif font.
- /// A fixed pitch font. Note that wxFont currently does not make distinctions
- /// between @c wxFONTFAMILY_MODERN and @c wxFONTFAMILY_TELETYPE.
- wxFONTFAMILY_MODERN = wxMODERN,
- /// A teletype (i.e. monospaced) font.
- /// Monospace fonts have a fixed width like typewriters and often have strong angular
- /// or block serifs. Monospace font faces are often used code samples and have a simple,
- /// functional font style.
- /// See also wxFont::IsFixedWidth() for an easy way to test for monospace property.
- wxFONTFAMILY_TELETYPE = wxTELETYPE,
- wxFONTFAMILY_MAX,
- /// Invalid font family value, returned by wxFont::GetFamily() when the
- /// font is invalid for example.
- wxFONTFAMILY_UNKNOWN = wxFONTFAMILY_MAX
- };
- /**
- Font styles.
- */
- enum wxFontStyle
- {
- /// The font is drawn without slant.
- wxFONTSTYLE_NORMAL = wxNORMAL,
- /// The font is slanted in an italic style.
- wxFONTSTYLE_ITALIC = wxITALIC,
- /// The font is slanted, but in a roman style.
- /// Note that under wxMSW this style is the same as @c wxFONTSTYLE_ITALIC.
- wxFONTSTYLE_SLANT = wxSLANT,
- wxFONTSTYLE_MAX
- };
- /**
- Font weights.
- */
- enum wxFontWeight
- {
- wxFONTWEIGHT_NORMAL = wxNORMAL, //!< Normal font.
- wxFONTWEIGHT_LIGHT = wxLIGHT, //!< Light font.
- wxFONTWEIGHT_BOLD = wxBOLD, //!< Bold font.
- 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.
- */
- enum wxFontFlag
- {
- /// no special flags: font with default weight/slant/anti-aliasing
- wxFONTFLAG_DEFAULT = 0,
- /// slant flags (default: no slant)
- wxFONTFLAG_ITALIC = 1 << 0,
- wxFONTFLAG_SLANT = 1 << 1,
- /// weight flags (default: medium)
- wxFONTFLAG_LIGHT = 1 << 2,
- wxFONTFLAG_BOLD = 1 << 3,
- /// anti-aliasing flag: force on or off (default: the current system default)
- wxFONTFLAG_ANTIALIASED = 1 << 4,
- wxFONTFLAG_NOT_ANTIALIASED = 1 << 5,
- /// Underlined style (not underlined by default).
- wxFONTFLAG_UNDERLINED = 1 << 6,
- /// Strike-through style (only supported in wxMSW and wxGTK currently).
- wxFONTFLAG_STRIKETHROUGH = 1 << 7,
- /// the mask of all currently used flags
- wxFONTFLAG_MASK = wxFONTFLAG_ITALIC |
- wxFONTFLAG_SLANT |
- wxFONTFLAG_LIGHT |
- wxFONTFLAG_BOLD |
- wxFONTFLAG_ANTIALIASED |
- wxFONTFLAG_NOT_ANTIALIASED |
- wxFONTFLAG_UNDERLINED |
- wxFONTFLAG_STRIKETHROUGH
- };
- /**
- Font encodings.
- See wxFont::SetEncoding().
- */
- enum wxFontEncoding
- {
- /// Default system encoding.
- wxFONTENCODING_SYSTEM = -1, // system default
- /// Default application encoding.
- wxFONTENCODING_DEFAULT, // current default encoding
- // ISO8859 standard defines a number of single-byte charsets
- wxFONTENCODING_ISO8859_1, //!< West European (Latin1)
- wxFONTENCODING_ISO8859_2, //!< Central and East European (Latin2)
- wxFONTENCODING_ISO8859_3, //!< Esperanto (Latin3)
- wxFONTENCODING_ISO8859_4, //!< Baltic (old) (Latin4)
- wxFONTENCODING_ISO8859_5, //!< Cyrillic
- wxFONTENCODING_ISO8859_6, //!< Arabic
- wxFONTENCODING_ISO8859_7, //!< Greek
- wxFONTENCODING_ISO8859_8, //!< Hebrew
- wxFONTENCODING_ISO8859_9, //!< Turkish (Latin5)
- wxFONTENCODING_ISO8859_10, //!< Variation of Latin4 (Latin6)
- wxFONTENCODING_ISO8859_11, //!< Thai
- wxFONTENCODING_ISO8859_12, //!< doesn't exist currently, but put it
- //!< here anyhow to make all ISO8859
- //!< consecutive numbers
- wxFONTENCODING_ISO8859_13, //!< Baltic (Latin7)
- wxFONTENCODING_ISO8859_14, //!< Latin8
- wxFONTENCODING_ISO8859_15, //!< Latin9 (a.k.a. Latin0, includes euro)
- wxFONTENCODING_ISO8859_MAX,
- // Cyrillic charset soup (see http://czyborra.com/charsets/cyrillic.html)
- wxFONTENCODING_KOI8, //!< KOI8 Russian
- wxFONTENCODING_KOI8_U, //!< KOI8 Ukrainian
- wxFONTENCODING_ALTERNATIVE, //!< same as MS-DOS CP866
- wxFONTENCODING_BULGARIAN, //!< used under Linux in Bulgaria
- // what would we do without Microsoft? They have their own encodings
- // for DOS
- wxFONTENCODING_CP437, //!< original MS-DOS codepage
- wxFONTENCODING_CP850, //!< CP437 merged with Latin1
- wxFONTENCODING_CP852, //!< CP437 merged with Latin2
- wxFONTENCODING_CP855, //!< another cyrillic encoding
- wxFONTENCODING_CP866, //!< and another one
- // and for Windows
- wxFONTENCODING_CP874, //!< WinThai
- wxFONTENCODING_CP932, //!< Japanese (shift-JIS)
- wxFONTENCODING_CP936, //!< Chinese simplified (GB)
- wxFONTENCODING_CP949, //!< Korean (Hangul charset)
- wxFONTENCODING_CP950, //!< Chinese (traditional - Big5)
- wxFONTENCODING_CP1250, //!< WinLatin2
- wxFONTENCODING_CP1251, //!< WinCyrillic
- wxFONTENCODING_CP1252, //!< WinLatin1
- wxFONTENCODING_CP1253, //!< WinGreek (8859-7)
- wxFONTENCODING_CP1254, //!< WinTurkish
- wxFONTENCODING_CP1255, //!< WinHebrew
- wxFONTENCODING_CP1256, //!< WinArabic
- wxFONTENCODING_CP1257, //!< WinBaltic (same as Latin 7)
- wxFONTENCODING_CP1258, //!< WinVietnamese (since 2.9.4)
- wxFONTENCODING_CP1361, //!< Johab Korean character set (since 2.9.4)
- wxFONTENCODING_CP12_MAX,
- wxFONTENCODING_UTF7, //!< UTF-7 Unicode encoding
- wxFONTENCODING_UTF8, //!< UTF-8 Unicode encoding
- wxFONTENCODING_EUC_JP, //!< Extended Unix Codepage for Japanese
- wxFONTENCODING_UTF16BE, //!< UTF-16 Big Endian Unicode encoding
- wxFONTENCODING_UTF16LE, //!< UTF-16 Little Endian Unicode encoding
- wxFONTENCODING_UTF32BE, //!< UTF-32 Big Endian Unicode encoding
- wxFONTENCODING_UTF32LE, // UTF-32 Little Endian Unicode encoding
- wxFONTENCODING_MACROMAN, //!< the standard mac encodings
- wxFONTENCODING_MACJAPANESE,
- wxFONTENCODING_MACCHINESETRAD,
- wxFONTENCODING_MACKOREAN,
- wxFONTENCODING_MACARABIC,
- wxFONTENCODING_MACHEBREW,
- wxFONTENCODING_MACGREEK,
- wxFONTENCODING_MACCYRILLIC,
- wxFONTENCODING_MACDEVANAGARI,
- wxFONTENCODING_MACGURMUKHI,
- wxFONTENCODING_MACGUJARATI,
- wxFONTENCODING_MACORIYA,
- wxFONTENCODING_MACBENGALI,
- wxFONTENCODING_MACTAMIL,
- wxFONTENCODING_MACTELUGU,
- wxFONTENCODING_MACKANNADA,
- wxFONTENCODING_MACMALAJALAM,
- wxFONTENCODING_MACSINHALESE,
- wxFONTENCODING_MACBURMESE,
- wxFONTENCODING_MACKHMER,
- wxFONTENCODING_MACTHAI,
- wxFONTENCODING_MACLAOTIAN,
- wxFONTENCODING_MACGEORGIAN,
- wxFONTENCODING_MACARMENIAN,
- wxFONTENCODING_MACCHINESESIMP,
- wxFONTENCODING_MACTIBETAN,
- wxFONTENCODING_MACMONGOLIAN,
- wxFONTENCODING_MACETHIOPIC,
- wxFONTENCODING_MACCENTRALEUR,
- wxFONTENCODING_MACVIATNAMESE,
- wxFONTENCODING_MACARABICEXT,
- wxFONTENCODING_MACSYMBOL,
- wxFONTENCODING_MACDINGBATS,
- wxFONTENCODING_MACTURKISH,
- wxFONTENCODING_MACCROATIAN,
- wxFONTENCODING_MACICELANDIC,
- wxFONTENCODING_MACROMANIAN,
- wxFONTENCODING_MACCELTIC,
- wxFONTENCODING_MACGAELIC,
- wxFONTENCODING_MACKEYBOARD,
- // more CJK encodings (for historical reasons some are already declared
- // above)
- wxFONTENCODING_ISO2022_JP, //!< ISO-2022-JP JIS encoding
- wxFONTENCODING_MAX, //!< highest enumerated encoding value
- wxFONTENCODING_MACMIN = wxFONTENCODING_MACROMAN ,
- wxFONTENCODING_MACMAX = wxFONTENCODING_MACKEYBOARD ,
- // aliases for endian-dependent UTF encodings
- wxFONTENCODING_UTF16, //!< native UTF-16
- wxFONTENCODING_UTF32, //!< native UTF-32
- /// Alias for the native Unicode encoding on this platform
- /// (this is used by wxEncodingConverter and wxUTFFile only for now)
- wxFONTENCODING_UNICODE,
- wxFONTENCODING_GB2312 = wxFONTENCODING_CP936, //!< Simplified Chinese
- wxFONTENCODING_BIG5 = wxFONTENCODING_CP950, //!< Traditional Chinese
- wxFONTENCODING_SHIFT_JIS = wxFONTENCODING_CP932, //!< Shift JIS
- wxFONTENCODING_EUC_KR = wxFONTENCODING_CP949, //!< Korean
- wxFONTENCODING_JOHAB = wxFONTENCODING_CP1361, //!< Korean Johab (since 2.9.4)
- wxFONTENCODING_VIETNAMESE = wxFONTENCODING_CP1258 //!< Vietnamese (since 2.9.4)
- };
- /**
- @class wxFontInfo
- 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("Helvetica").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, 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
- cheap. You can therefore use actual objects instead of pointers without
- efficiency problems. If an instance of this class is changed it will create
- its own data internally so that other instances, which previously shared the
- data using the reference counting, are not affected.
- You can retrieve the current system font settings with wxSystemSettings.
- @library{wxcore}
- @category{gdi}
- @stdobjects
- ::wxNullFont, ::wxNORMAL_FONT, ::wxSMALL_FONT, ::wxITALIC_FONT, ::wxSWISS_FONT
- @see @ref overview_font, wxDC::SetFont, wxDC::DrawText,
- wxDC::GetTextExtent, wxFontDialog, wxSystemSettings
- */
- class wxFont : public wxGDIObject
- {
- public:
- /**
- Default ctor.
- */
- wxFont();
- /**
- Copy constructor, uses @ref overview_refcount "reference counting".
- */
- 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
- The font family: a generic portable way of referring to fonts without specifying a
- facename. This parameter must be one of the ::wxFontFamily enumeration values.
- If the @a faceName argument is provided, then it overrides the font family.
- @param style
- One of @c wxFONTSTYLE_NORMAL, @c wxFONTSTYLE_SLANT and @c wxFONTSTYLE_ITALIC.
- @param weight
- Font weight, sometimes also referred to as font boldness.
- One of the ::wxFontWeight enumeration values.
- @param underline
- The value can be @true or @false.
- At present this has an effect on Windows and Motif 2.x only.
- @param faceName
- An optional string specifying the face name to be used.
- If it is an empty string, a default face name will be chosen based on the family.
- @param encoding
- An encoding which may be one of the enumeration values of ::wxFontEncoding.
- Briefly these can be summed up as:
- <TABLE>
- <TR><TD>@c wxFONTENCODING_SYSTEM</TD><TD>Default system encoding.</TD></TR>
- <TR><TD>@c wxFONTENCODING_DEFAULT</TD><TD>
- Default application encoding: this is the encoding set by calls to
- SetDefaultEncoding() and which may be set to, say, KOI8 to create all
- fonts by default with KOI8 encoding. Initially, the default application
- encoding is the same as default system encoding.</TD></TR>
- <TR><TD>@c wxFONTENCODING_ISO8859_1...15</TD><TD>ISO8859 encodings.</TD></TR>
- <TR><TD>@c wxFONTENCODING_KOI8</TD><TD>The standard Russian encoding for Internet.</TD></TR>
- <TR><TD>@c wxFONTENCODING_CP1250...1252</TD><TD>Windows encodings similar to ISO8859 (but not identical).</TD></TR>
- </TABLE>
- If the specified encoding isn't available, no font is created
- (see also @ref overview_fontencoding).
- @remarks If the desired font does not exist, the closest match will be
- chosen. Under Windows, only scalable TrueType fonts are used.
- */
- wxFont(int pointSize, wxFontFamily family, wxFontStyle style,
- wxFontWeight weight,
- bool underline = false,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- /**
- 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
- The font family: a generic portable way of referring to fonts without specifying a
- facename. This parameter must be one of the ::wxFontFamily enumeration values.
- If the @a faceName argument is provided, then it overrides the font family.
- @param style
- One of @c wxFONTSTYLE_NORMAL, @c wxFONTSTYLE_SLANT and @c wxFONTSTYLE_ITALIC.
- @param weight
- Font weight, sometimes also referred to as font boldness.
- One of the ::wxFontWeight enumeration values.
- @param underline
- The value can be @true or @false.
- At present this has an effect on Windows and Motif 2.x only.
- @param faceName
- An optional string specifying the face name to be used.
- If it is an empty string, a default face name will be chosen based on the family.
- @param encoding
- An encoding which may be one of the enumeration values of ::wxFontEncoding.
- Briefly these can be summed up as:
- <TABLE>
- <TR><TD>@c wxFONTENCODING_SYSTEM</TD><TD>Default system encoding.</TD></TR>
- <TR><TD>@c wxFONTENCODING_DEFAULT</TD><TD>
- Default application encoding: this is the encoding set by calls to
- SetDefaultEncoding() and which may be set to, say, KOI8 to create all
- fonts by default with KOI8 encoding. Initially, the default application
- encoding is the same as default system encoding.</TD></TR>
- <TR><TD>@c wxFONTENCODING_ISO8859_1...15</TD><TD>ISO8859 encodings.</TD></TR>
- <TR><TD>@c wxFONTENCODING_KOI8</TD><TD>The standard Russian encoding for Internet.</TD></TR>
- <TR><TD>@c wxFONTENCODING_CP1250...1252</TD><TD>Windows encodings similar to ISO8859 (but not identical).</TD></TR>
- </TABLE>
- If the specified encoding isn't available, no font is created
- (see also @ref overview_fontencoding).
- @remarks If the desired font does not exist, the closest match will be
- chosen. Under Windows, only scalable TrueType fonts are used.
- */
- wxFont(const wxSize& pixelSize, wxFontFamily family,
- wxFontStyle style, wxFontWeight weight,
- bool underline = false,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- /**
- Constructor from font description string.
- This constructor uses SetNativeFontInfo() to initialize the font.
- If @a fontdesc is invalid the font remains uninitialized, i.e. its IsOk() method
- will return @false.
- */
- wxFont(const wxString& nativeInfoString);
- /**
- Construct font from a native font info structure.
- */
- wxFont(const wxNativeFontInfo& nativeInfo);
- /**
- Destructor.
- See @ref overview_refcount_destruct "reference-counted object destruction"
- for more info.
- @remarks Although all remaining fonts are deleted when the application
- exits, the application should try to clean up all fonts
- itself. This is because wxWidgets cannot know if a
- pointer to the font object is stored in an application
- data structure, and there is a risk of double deletion.
- */
- virtual ~wxFont();
- /**
- @name Getters
- */
- //@{
- /**
- Returns the encoding of this font.
- Note that under wxGTK the returned value is always @c wxFONTENCODING_UTF8.
- @see SetEncoding()
- */
- virtual wxFontEncoding GetEncoding() const;
- /**
- Returns the face name associated with the font, or the empty string if
- there is no face information.
- @see SetFaceName()
- */
- virtual wxString GetFaceName() const;
- /**
- Gets the font family if possible.
- As described in ::wxFontFamily docs the returned value acts as a rough,
- basic classification of the main font properties (look, spacing).
- If the current font face name is not recognized by wxFont or by the
- underlying system, @c wxFONTFAMILY_DEFAULT is returned.
- Note that currently this function is not very precise and so not
- particularly useful. Font families mostly make sense only for font
- creation, see SetFamily().
- @see SetFamily()
- */
- virtual wxFontFamily GetFamily() const;
- /**
- Returns the platform-dependent string completely describing this font.
- Returned string is always non-empty unless the font is invalid (in
- which case an assert is triggered).
- Note that the returned string is not meant to be shown or edited by the user: a
- typical use of this function is for serializing in string-form a wxFont object.
- @see SetNativeFontInfo(), GetNativeFontInfoUserDesc()
- */
- wxString GetNativeFontInfoDesc() const;
- /**
- Returns a user-friendly string for this font object.
- Returned string is always non-empty unless the font is invalid (in
- which case an assert is triggered).
- The string does not encode all wxFont infos under all platforms;
- e.g. under wxMSW the font family is not present in the returned string.
- Some examples of the formats of returned strings (which are platform-dependent)
- are in SetNativeFontInfoUserDesc().
- @see SetNativeFontInfoUserDesc(), GetNativeFontInfoDesc()
- */
- wxString GetNativeFontInfoUserDesc() const;
- const wxNativeFontInfo *GetNativeFontInfo() const;
- /**
- Gets the point size.
- @see SetPointSize()
- */
- virtual int GetPointSize() const;
- /**
- Gets the pixel size.
- Note that under wxMSW if you passed to SetPixelSize() (or to the ctor)
- a wxSize object with a null width value, you'll get a null width in
- the returned object.
- @see SetPixelSize()
- */
- virtual wxSize GetPixelSize() const;
- /**
- Gets the font style. See ::wxFontStyle for a list of valid styles.
- @see SetStyle()
- */
- virtual wxFontStyle GetStyle() const;
- /**
- Returns @true if the font is underlined, @false otherwise.
- @see SetUnderlined()
- */
- virtual bool GetUnderlined() const;
- /**
- Returns @true if the font is stricken-through, @false otherwise.
- @see SetStrikethrough()
- @since 2.9.4
- */
- virtual bool GetStrikethrough() const;
- /**
- Gets the font weight. See ::wxFontWeight for a list of valid weight identifiers.
- @see SetWeight()
- */
- virtual wxFontWeight GetWeight() const;
- /**
- Returns @true if the font is a fixed width (or monospaced) font,
- @false if it is a proportional one or font is invalid.
- Note that this function under some platforms is different than just testing
- for the font family being equal to @c wxFONTFAMILY_TELETYPE because native
- platform-specific functions are used for the check (resulting in a more
- accurate return value).
- */
- virtual bool IsFixedWidth() const;
- /**
- Returns @true if this object is a valid font, @false otherwise.
- */
- virtual bool IsOk() const;
- //@}
- /**
- @name Similar fonts creation
- The functions in this section either modify the font in place or create
- a new font similar to the given one but with its weight, style or size
- changed.
- */
- //@{
- /**
- Returns a bold version of this font.
- @see MakeBold()
- @since 2.9.1
- */
- wxFont Bold() const;
- /**
- Returns an italic version of this font.
- @see MakeItalic()
- @since 2.9.1
- */
- wxFont Italic() const;
- /**
- Returns a larger version of this font.
- The font size is multiplied by @c 1.2, the factor of @c 1.2 being
- inspired by the W3C CSS specification.
- @see MakeLarger(), Smaller(), Scaled()
- @since 2.9.1
- */
- wxFont Larger() const;
- /**
- Returns a smaller version of this font.
- The font size is divided by @c 1.2, the factor of @c 1.2 being
- inspired by the W3C CSS specification.
- @see MakeSmaller(), Larger(), Scaled()
- @since 2.9.1
- */
- wxFont Smaller() const;
- /**
- Returns underlined version of this font.
- @see MakeUnderlined()
- @since 2.9.2
- */
- wxFont Underlined() const;
- /**
- Returns stricken-through version of this font.
- Currently stricken-through fonts are only supported in wxMSW and wxGTK.
- @see MakeStrikethrough()
- @since 2.9.4
- */
- wxFont Strikethrough() const;
- /**
- Changes this font to be bold.
- @see Bold()
- @since 2.9.1
- */
- wxFont& MakeBold();
- /**
- Changes this font to be italic.
- @see Italic()
- @since 2.9.1
- */
- wxFont& MakeItalic();
- /**
- Changes this font to be larger.
- The font size is multiplied by @c 1.2, the factor of @c 1.2 being
- inspired by the W3C CSS specification.
- @see Larger(), MakeSmaller(), Scale()
- @since 2.9.1
- */
- wxFont& MakeLarger();
- /**
- Changes this font to be smaller.
- The font size is divided by @c 1.2, the factor of @c 1.2 being
- inspired by the W3C CSS specification.
- @see Smaller(), MakeLarger(), Scale()
- @since 2.9.1
- */
- wxFont& MakeSmaller();
- /**
- Changes this font to be underlined.
- @see Underlined()
- @since 2.9.2
- */
- wxFont& MakeUnderlined();
- /**
- Changes this font to be stricken-through.
- Currently stricken-through fonts are only supported in wxMSW and wxGTK.
- @see Strikethrough()
- @since 2.9.4
- */
- wxFont& MakeStrikethrough();
- /**
- Changes the size of this font.
- The font size is multiplied by the given factor (which may be less than
- 1 to create a smaller version of the font).
- @see Scaled(), MakeLarger(), MakeSmaller()
- @since 2.9.1
- */
- wxFont& Scale(float x);
- /**
- Returns a scaled version of this font.
- The font size is multiplied by the given factor (which may be less than
- 1 to create a smaller version of the font).
- @see Scale(), Larger(), Smaller()
- @since 2.9.1
- */
- wxFont Scaled(float x) const;
- //@}
- /**
- @name Setters
- These functions internally recreate the native font object with the new
- specified property.
- */
- //@{
- /**
- Sets the encoding for this font.
- Note that under wxGTK this function has no effect (because the underlying
- Pango library always uses @c wxFONTENCODING_UTF8).
- @see GetEncoding()
- */
- virtual void SetEncoding(wxFontEncoding encoding);
- /**
- Sets the facename for the font.
- @param faceName
- A valid facename, which should be on the end-user's system.
- @remarks To avoid portability problems, don't rely on a specific face,
- but specify the font family instead (see ::wxFontFamily and SetFamily()).
- @return @true if the given face name exists; if the face name doesn't exist
- in the user's system then the font is invalidated (so that IsOk() will
- return @false) and @false is returned.
- @see GetFaceName(), SetFamily()
- */
- virtual bool SetFaceName(const wxString& faceName);
- /**
- Sets the font family.
- As described in ::wxFontFamily docs the given @a family value acts as a rough,
- basic indication of the main font properties (look, spacing).
- Note that changing the font family results in changing the font face name.
- @param family
- One of the ::wxFontFamily values.
- @see GetFamily(), SetFaceName()
- */
- virtual void SetFamily(wxFontFamily family);
- /**
- Creates the font corresponding to the given native font description string
- which must have been previously returned by GetNativeFontInfoDesc().
- If the string is invalid, font is unchanged.
- This function is typically used for de-serializing a wxFont object
- previously saved in a string-form.
- @return @true if the creation was successful.
- @see SetNativeFontInfoUserDesc()
- */
- bool SetNativeFontInfo(const wxString& info);
- /**
- Creates the font corresponding to the given native font description string and
- returns @true if the creation was successful.
- Unlike SetNativeFontInfo(), this function accepts strings which are user-friendly.
- Examples of accepted string formats are:
- @beginTable
- @hdr3col{platform, generic syntax, example}
- @row3col{wxGTK2, <tt>[underlined] [strikethrough] [FACE-NAME] [bold] [oblique|italic] [POINTSIZE]</tt>, Monospace bold 10}
- @row3col{wxMSW, <tt>[light|bold] [italic] [FACE-NAME] [POINTSIZE] [ENCODING]</tt>, Tahoma 10 WINDOWS-1252}
- @endTable
- @todo add an example for wxMac
- For more detailed information about the allowed syntaxes you can look at the
- documentation of the native API used for font-rendering
- (e.g. @c pango_font_description_from_string under GTK, although notice
- that it doesn't support the "underlined" and "strikethrough" attributes
- and so those are handled by wxWidgets itself).
- Note that unlike SetNativeFontInfo(), this function doesn't always restore all
- attributes of the wxFont object under all platforms; e.g. on wxMSW the font family
- is not restored (because GetNativeFontInfoUserDesc doesn't return it on wxMSW).
- If you want to serialize/deserialize a font in string form, you should use
- GetNativeFontInfoDesc() and SetNativeFontInfo() instead.
- @see SetNativeFontInfo()
- */
- bool SetNativeFontInfoUserDesc(const wxString& info);
- void SetNativeFontInfo(const wxNativeFontInfo& info);
-
- /**
- Sets the point size.
- The <em>point size</em> 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
- Size in points.
- @see GetPointSize()
- */
- virtual void SetPointSize(int pointSize);
- /**
- Sets the pixel size.
- The height parameter of @a pixelSize must be positive while the width
- parameter may also be zero (to indicate that you're not interested in the
- width of the characters: a suitable width will be chosen for best rendering).
- This feature (specifying the font pixel size) is directly supported only
- under wxMSW and wxGTK currently; under other platforms a font with the
- closest size to the given one is found using binary search (this maybe slower).
- @see GetPixelSize()
- */
- virtual void SetPixelSize(const wxSize& pixelSize);
- /**
- Sets the font style.
- @param style
- One of the ::wxFontStyle enumeration values.
- @see GetStyle()
- */
- 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.
- @param underlined
- @true to underline, @false otherwise.
- @see GetUnderlined()
- */
- virtual void SetUnderlined(bool underlined);
- /**
- Sets strike-through attribute of the font.
- Currently stricken-through fonts are only supported in wxMSW and wxGTK.
- @param strikethrough
- @true to add strike-through style, @false to remove it.
- @see GetStrikethrough()
- @since 2.9.4
- */
- virtual void SetStrikethrough(bool strikethrough);
- /**
- Sets the font weight.
- @param weight
- One of the ::wxFontWeight values.
- @see GetWeight()
- */
- virtual void SetWeight(wxFontWeight weight);
- //@}
- /**
- Inequality operator.
- See @ref overview_refcount_equality "reference-counted object comparison" for
- more info.
- */
- bool operator!=(const wxFont& font) const;
- /**
- Equality operator.
- See @ref overview_refcount_equality "reference-counted object comparison" for
- more info.
- */
- bool operator==(const wxFont& font) const;
- /**
- Assignment operator, using @ref overview_refcount "reference counting".
- */
- wxFont& operator =(const wxFont& font);
- // statics
- /**
- Returns the current application's default encoding.
- @see @ref overview_fontencoding, SetDefaultEncoding()
- */
- static wxFontEncoding GetDefaultEncoding();
- /**
- Sets the default font encoding.
- @see @ref overview_fontencoding, GetDefaultEncoding()
- */
- static void SetDefaultEncoding(wxFontEncoding encoding);
- //@{
- /**
- 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,
- bool underline = false,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- static wxFont* New(int pointSize, wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- static wxFont* New(const wxSize& pixelSize,
- wxFontFamily family,
- wxFontStyle style,
- wxFontWeight weight,
- bool underline = false,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- static wxFont* New(const wxSize& pixelSize,
- wxFontFamily family,
- int flags = wxFONTFLAG_DEFAULT,
- const wxString& faceName = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
-
- static wxFont *New(const wxNativeFontInfo& nativeInfo);
- static wxFont *New(const wxString& nativeInfoString);
- //@}
- };
- /**
- An empty wxFont.
- */
- wxFont wxNullFont;
- /**
- Equivalent to wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).
- @see wxSystemSettings
- */
- wxFont* wxNORMAL_FONT;
- /**
- A font using the @c wxFONTFAMILY_SWISS family and 2 points smaller than
- ::wxNORMAL_FONT.
- */
- wxFont* wxSMALL_FONT;
- /**
- A font using the @c wxFONTFAMILY_ROMAN family and @c wxFONTSTYLE_ITALIC style and
- of the same size of ::wxNORMAL_FONT.
- */
- wxFont* wxITALIC_FONT;
- /**
- A font identic to ::wxNORMAL_FONT except for the family used which is
- @c wxFONTFAMILY_SWISS.
- */
- wxFont* wxSWISS_FONT;
- /**
- @class wxFontList
- A font list is a list containing all fonts which have been created.
- There is only one instance of this class: ::wxTheFontList.
- Use this object to search for a previously created font of the desired type
- and create it if not already found.
- In some windowing systems, the font may be a scarce resource, so it is best to
- reuse old resources if possible. When an application finishes, all fonts will
- be deleted and their resources freed, eliminating the possibility of 'memory
- leaks'.
- @library{wxcore}
- @category{gdi}
- @see wxFont
- */
- class wxFontList
- {
- public:
- /**
- Constructor. The application should not construct its own font list:
- use the object pointer ::wxTheFontList.
- */
- wxFontList();
- /**
- Finds a font of the given specification, or creates one and adds it to the
- list. See the @ref wxFont "wxFont constructor" for details of the arguments.
- */
- wxFont* FindOrCreateFont(int point_size, wxFontFamily family, wxFontStyle style,
- wxFontWeight weight, bool underline = false,
- const wxString& facename = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- };
- /**
- The global wxFontList instance.
- */
- wxFontList* wxTheFontList;
- // ============================================================================
- // Global functions/macros
- // ============================================================================
- /** @addtogroup group_funcmacro_misc */
- //@{
- /**
- Converts string to a wxFont best represented by the given string. Returns
- @true on success.
- @see wxToString(const wxFont&)
- @header{wx/font.h}
- */
- bool wxFromString(const wxString& string, wxFont* font);
- /**
- Converts the given wxFont into a string.
- @see wxFromString(const wxString&, wxFont*)
- @header{wx/font.h}
- */
- wxString wxToString(const wxFont& font);
- //@}
|