1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/font.h 3 // Purpose: wxFontBase class: the interface of wxFont 4 // Author: Vadim Zeitlin 5 // Modified by: 6 // Created: 20.09.99 7 // RCS-ID: $Id: font.h,v 1.1 2006/12/02 15:58:24 scara Exp $ 8 // Copyright: (c) wxWindows team 9 // Licence: wxWindows license 10 ///////////////////////////////////////////////////////////////////////////// 11 12 #ifndef _WX_FONT_H_BASE_ 13 #define _WX_FONT_H_BASE_ 14 15 #if defined(__GNUG__) && !defined(__APPLE__) 16 #pragma interface "fontbase.h" 17 #endif 18 19 // ---------------------------------------------------------------------------- 20 // headers 21 // ---------------------------------------------------------------------------- 22 23 #include "wx/defs.h" // for wxDEFAULT &c 24 #include "wx/fontenc.h" // the font encoding constants 25 #include "wx/gdiobj.h" // the base class 26 27 // ---------------------------------------------------------------------------- 28 // forward declarations 29 // ---------------------------------------------------------------------------- 30 31 class WXDLLEXPORT wxFontData; 32 class WXDLLEXPORT wxFontBase; 33 class WXDLLEXPORT wxFont; 34 35 // ---------------------------------------------------------------------------- 36 // font constants 37 // ---------------------------------------------------------------------------- 38 39 // standard font families: these may be used only for the font creation, it 40 // doesn't make sense to query an existing font for its font family as, 41 // especially if the font had been created from a native font description, it 42 // may be unknown 43 enum wxFontFamily 44 { 45 wxFONTFAMILY_DEFAULT = wxDEFAULT, 46 wxFONTFAMILY_DECORATIVE = wxDECORATIVE, 47 wxFONTFAMILY_ROMAN = wxROMAN, 48 wxFONTFAMILY_SCRIPT = wxSCRIPT, 49 wxFONTFAMILY_SWISS = wxSWISS, 50 wxFONTFAMILY_MODERN = wxMODERN, 51 wxFONTFAMILY_TELETYPE = wxTELETYPE, 52 wxFONTFAMILY_MAX, 53 wxFONTFAMILY_UNKNOWN = wxFONTFAMILY_MAX 54 }; 55 56 // font styles 57 enum wxFontStyle 58 { 59 wxFONTSTYLE_NORMAL = wxNORMAL, 60 wxFONTSTYLE_ITALIC = wxITALIC, 61 wxFONTSTYLE_SLANT = wxSLANT, 62 wxFONTSTYLE_MAX 63 }; 64 65 // font weights 66 enum wxFontWeight 67 { 68 wxFONTWEIGHT_NORMAL = wxNORMAL, 69 wxFONTWEIGHT_LIGHT = wxLIGHT, 70 wxFONTWEIGHT_BOLD = wxBOLD, 71 wxFONTWEIGHT_MAX 72 }; 73 74 // ---------------------------------------------------------------------------- 75 // wxFontBase represents a font object 76 // ---------------------------------------------------------------------------- 77 78 class WXDLLEXPORT wxFontRefData; 79 struct WXDLLEXPORT wxNativeFontInfo; 80 81 class WXDLLEXPORT wxFontBase : public wxGDIObject 82 { 83 public: 84 // creator function 85 virtual ~wxFontBase(); 86 87 // from the font components 88 static wxFont *New( 89 int pointSize, // size of the font in points 90 int family, // see wxFontFamily enum 91 int style, // see wxFontStyle enum 92 int weight, // see wxFontWeight enum 93 bool underlined = FALSE, // not underlined by default 94 const wxString& face = wxEmptyString, // facename 95 wxFontEncoding encoding = wxFONTENCODING_DEFAULT); // ISO8859-X, ... 96 97 // from the (opaque) native font description object 98 static wxFont *New(const wxNativeFontInfo& nativeFontDesc); 99 100 // from the string representation of wxNativeFontInfo 101 static wxFont *New(const wxString& strNativeFontDesc); 102 103 // was the font successfully created? Ok()104 bool Ok() const { return m_refData != NULL; } 105 106 // comparison 107 bool operator == (const wxFont& font) const; 108 bool operator != (const wxFont& font) const; 109 110 // accessors: get the font characteristics 111 virtual int GetPointSize() const = 0; 112 virtual int GetFamily() const = 0; 113 virtual int GetStyle() const = 0; 114 virtual int GetWeight() const = 0; 115 virtual bool GetUnderlined() const = 0; 116 virtual wxString GetFaceName() const = 0; 117 virtual wxFontEncoding GetEncoding() const = 0; 118 virtual wxNativeFontInfo *GetNativeFontInfo() const; 119 120 virtual bool IsFixedWidth() const; 121 122 wxString GetNativeFontInfoDesc() const; 123 wxString GetNativeFontInfoUserDesc() const; 124 125 // change the font characteristics 126 virtual void SetPointSize( int pointSize ) = 0; 127 virtual void SetFamily( int family ) = 0; 128 virtual void SetStyle( int style ) = 0; 129 virtual void SetWeight( int weight ) = 0; 130 virtual void SetFaceName( const wxString& faceName ) = 0; 131 virtual void SetUnderlined( bool underlined ) = 0; 132 virtual void SetEncoding(wxFontEncoding encoding) = 0; 133 virtual void SetNativeFontInfo(const wxNativeFontInfo& info); 134 135 void SetNativeFontInfo(const wxString& info); 136 void SetNativeFontInfoUserDesc(const wxString& info); 137 138 // translate the fonts into human-readable string (i.e. GetStyleString() 139 // will return "wxITALIC" for an italic font, ...) 140 wxString GetFamilyString() const; 141 wxString GetStyleString() const; 142 wxString GetWeightString() const; 143 144 // Unofficial API, don't use 145 virtual void SetNoAntiAliasing( bool no = TRUE ) { } GetNoAntiAliasing()146 virtual bool GetNoAntiAliasing() { return FALSE; } 147 148 // the default encoding is used for creating all fonts with default 149 // encoding parameter GetDefaultEncoding()150 static wxFontEncoding GetDefaultEncoding() { return ms_encodingDefault; } 151 static void SetDefaultEncoding(wxFontEncoding encoding); 152 153 protected: 154 // get the internal data GetFontData()155 wxFontRefData *GetFontData() const 156 { return (wxFontRefData *)m_refData; } 157 158 private: 159 // the currently default encoding: by default, it's the default system 160 // encoding, but may be changed by the application using 161 // SetDefaultEncoding() to make all subsequent fonts created without 162 // specifing encoding parameter using this encoding 163 static wxFontEncoding ms_encodingDefault; 164 }; 165 166 // include the real class declaration 167 #if defined(__WXMSW__) 168 #include "wx/msw/font.h" 169 #elif defined(__WXMOTIF__) 170 #include "wx/motif/font.h" 171 #elif defined(__WXGTK__) 172 #include "wx/gtk/font.h" 173 #elif defined(__WXX11__) 174 #include "wx/x11/font.h" 175 #elif defined(__WXMGL__) 176 #include "wx/mgl/font.h" 177 #elif defined(__WXMAC__) 178 #include "wx/mac/font.h" 179 #elif defined(__WXPM__) 180 #include "wx/os2/font.h" 181 #elif defined(__WXSTUBS__) 182 #include "wx/stubs/font.h" 183 #endif 184 185 // ---------------------------------------------------------------------------- 186 // macros 187 // ---------------------------------------------------------------------------- 188 189 #define M_FONTDATA GetFontData() 190 191 #endif 192 // _WX_FONT_H_BASE_ 193