1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275
|
/////////////////////////////////////////////////////////////////////////////
// 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);
//@}
|