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 53135 2008-04-12 02:31:04Z VZ $ 8// Copyright: (c) wxWidgets team 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_FONT_H_BASE_ 13#define _WX_FONT_H_BASE_ 14 15// ---------------------------------------------------------------------------- 16// headers 17// ---------------------------------------------------------------------------- 18 19#include "wx/defs.h" // for wxDEFAULT &c 20#include "wx/fontenc.h" // the font encoding constants 21#include "wx/gdiobj.h" // the base class 22 23// ---------------------------------------------------------------------------- 24// forward declarations 25// ---------------------------------------------------------------------------- 26 27class WXDLLIMPEXP_FWD_CORE wxFontData; 28class WXDLLIMPEXP_FWD_CORE wxFontBase; 29class WXDLLIMPEXP_FWD_CORE wxFont; 30class WXDLLIMPEXP_FWD_CORE wxSize; 31 32// ---------------------------------------------------------------------------- 33// font constants 34// ---------------------------------------------------------------------------- 35 36// standard font families: these may be used only for the font creation, it 37// doesn't make sense to query an existing font for its font family as, 38// especially if the font had been created from a native font description, it 39// may be unknown 40enum wxFontFamily 41{ 42 wxFONTFAMILY_DEFAULT = wxDEFAULT, 43 wxFONTFAMILY_DECORATIVE = wxDECORATIVE, 44 wxFONTFAMILY_ROMAN = wxROMAN, 45 wxFONTFAMILY_SCRIPT = wxSCRIPT, 46 wxFONTFAMILY_SWISS = wxSWISS, 47 wxFONTFAMILY_MODERN = wxMODERN, 48 wxFONTFAMILY_TELETYPE = wxTELETYPE, 49 wxFONTFAMILY_MAX, 50 wxFONTFAMILY_UNKNOWN = wxFONTFAMILY_MAX 51}; 52 53// font styles 54enum wxFontStyle 55{ 56 wxFONTSTYLE_NORMAL = wxNORMAL, 57 wxFONTSTYLE_ITALIC = wxITALIC, 58 wxFONTSTYLE_SLANT = wxSLANT, 59 wxFONTSTYLE_MAX 60}; 61 62// font weights 63enum wxFontWeight 64{ 65 wxFONTWEIGHT_NORMAL = wxNORMAL, 66 wxFONTWEIGHT_LIGHT = wxLIGHT, 67 wxFONTWEIGHT_BOLD = wxBOLD, 68 wxFONTWEIGHT_MAX 69}; 70 71// the font flag bits for the new font ctor accepting one combined flags word 72enum 73{ 74 // no special flags: font with default weight/slant/anti-aliasing 75 wxFONTFLAG_DEFAULT = 0, 76 77 // slant flags (default: no slant) 78 wxFONTFLAG_ITALIC = 1 << 0, 79 wxFONTFLAG_SLANT = 1 << 1, 80 81 // weight flags (default: medium) 82 wxFONTFLAG_LIGHT = 1 << 2, 83 wxFONTFLAG_BOLD = 1 << 3, 84 85 // anti-aliasing flag: force on or off (default: the current system default) 86 wxFONTFLAG_ANTIALIASED = 1 << 4, 87 wxFONTFLAG_NOT_ANTIALIASED = 1 << 5, 88 89 // underlined/strikethrough flags (default: no lines) 90 wxFONTFLAG_UNDERLINED = 1 << 6, 91 wxFONTFLAG_STRIKETHROUGH = 1 << 7, 92 93 // the mask of all currently used flags 94 wxFONTFLAG_MASK = wxFONTFLAG_ITALIC | 95 wxFONTFLAG_SLANT | 96 wxFONTFLAG_LIGHT | 97 wxFONTFLAG_BOLD | 98 wxFONTFLAG_ANTIALIASED | 99 wxFONTFLAG_NOT_ANTIALIASED | 100 wxFONTFLAG_UNDERLINED | 101 wxFONTFLAG_STRIKETHROUGH 102}; 103 104// ---------------------------------------------------------------------------- 105// wxFontBase represents a font object 106// ---------------------------------------------------------------------------- 107 108class WXDLLIMPEXP_FWD_CORE wxNativeFontInfo; 109 110class WXDLLEXPORT wxFontBase : public wxGDIObject 111{ 112public: 113 // creator function 114 virtual ~wxFontBase(); 115 116 // from the font components 117 static wxFont *New( 118 int pointSize, // size of the font in points 119 int family, // see wxFontFamily enum 120 int style, // see wxFontStyle enum 121 int weight, // see wxFontWeight enum 122 bool underlined = false, // not underlined by default 123 const wxString& face = wxEmptyString, // facename 124 wxFontEncoding encoding = wxFONTENCODING_DEFAULT); // ISO8859-X, ... 125 126 // from the font components but using the font flags instead of separate 127 // parameters for each flag 128 static wxFont *New(int pointSize, 129 wxFontFamily family, 130 int flags = wxFONTFLAG_DEFAULT, 131 const wxString& face = wxEmptyString, 132 wxFontEncoding encoding = wxFONTENCODING_DEFAULT); 133 134 // from the font components 135 static wxFont *New( 136 const wxSize& pixelSize, // size of the font in pixels 137 int family, // see wxFontFamily enum 138 int style, // see wxFontStyle enum 139 int weight, // see wxFontWeight enum 140 bool underlined = false, // not underlined by default 141 const wxString& face = wxEmptyString, // facename 142 wxFontEncoding encoding = wxFONTENCODING_DEFAULT); // ISO8859-X, ... 143 144 // from the font components but using the font flags instead of separate 145 // parameters for each flag 146 static wxFont *New(const wxSize& pixelSize, 147 wxFontFamily family, 148 int flags = wxFONTFLAG_DEFAULT, 149 const wxString& face = wxEmptyString, 150 wxFontEncoding encoding = wxFONTENCODING_DEFAULT); 151 152 // from the (opaque) native font description object 153 static wxFont *New(const wxNativeFontInfo& nativeFontDesc); 154 155 // from the string representation of wxNativeFontInfo 156 static wxFont *New(const wxString& strNativeFontDesc); 157 158 // was the font successfully created? 159 bool Ok() const { return IsOk(); } 160 bool IsOk() const { return m_refData != NULL; } 161 162 // comparison 163 bool operator == (const wxFont& font) const; 164 bool operator != (const wxFont& font) const; 165 166 // accessors: get the font characteristics 167 virtual int GetPointSize() const = 0; 168 virtual wxSize GetPixelSize() const; 169 virtual bool IsUsingSizeInPixels() const; 170 virtual int GetFamily() const = 0; 171 virtual int GetStyle() const = 0; 172 virtual int GetWeight() const = 0; 173 virtual bool GetUnderlined() const = 0; 174 virtual wxString GetFaceName() const = 0; 175 virtual wxFontEncoding GetEncoding() const = 0; 176 virtual const wxNativeFontInfo *GetNativeFontInfo() const = 0; 177 178 virtual bool IsFixedWidth() const; 179 180 wxString GetNativeFontInfoDesc() const; 181 wxString GetNativeFontInfoUserDesc() const; 182 183 // change the font characteristics 184 virtual void SetPointSize( int pointSize ) = 0; 185 virtual void SetPixelSize( const wxSize& pixelSize ); 186 virtual void SetFamily( int family ) = 0; 187 virtual void SetStyle( int style ) = 0; 188 virtual void SetWeight( int weight ) = 0; 189 virtual void SetUnderlined( bool underlined ) = 0; 190 virtual void SetEncoding(wxFontEncoding encoding) = 0; 191 virtual bool SetFaceName( const wxString& faceName ); 192 void SetNativeFontInfo(const wxNativeFontInfo& info) 193 { DoSetNativeFontInfo(info); } 194 195 bool SetNativeFontInfo(const wxString& info); 196 bool SetNativeFontInfoUserDesc(const wxString& info); 197 198 // translate the fonts into human-readable string (i.e. GetStyleString() 199 // will return "wxITALIC" for an italic font, ...) 200 wxString GetFamilyString() const; 201 wxString GetStyleString() const; 202 wxString GetWeightString() const; 203 204 // Unofficial API, don't use 205 virtual void SetNoAntiAliasing( bool WXUNUSED(no) = true ) { } 206 virtual bool GetNoAntiAliasing() const { return false; } 207 208 // the default encoding is used for creating all fonts with default 209 // encoding parameter 210 static wxFontEncoding GetDefaultEncoding() { return ms_encodingDefault; } 211 static void SetDefaultEncoding(wxFontEncoding encoding); 212 213protected: 214 // the function called by both overloads of SetNativeFontInfo() 215 virtual void DoSetNativeFontInfo(const wxNativeFontInfo& info); 216 217private: 218 // the currently default encoding: by default, it's the default system 219 // encoding, but may be changed by the application using 220 // SetDefaultEncoding() to make all subsequent fonts created without 221 // specifying encoding parameter using this encoding 222 static wxFontEncoding ms_encodingDefault; 223}; 224 225// include the real class declaration 226#if defined(__WXPALMOS__) 227 #include "wx/palmos/font.h" 228#elif defined(__WXMSW__) 229 #include "wx/msw/font.h" 230#elif defined(__WXMOTIF__) 231 #include "wx/motif/font.h" 232#elif defined(__WXGTK20__) 233 #include "wx/gtk/font.h" 234#elif defined(__WXGTK__) 235 #include "wx/gtk1/font.h" 236#elif defined(__WXX11__) 237 #include "wx/x11/font.h" 238#elif defined(__WXMGL__) 239 #include "wx/mgl/font.h" 240#elif defined(__WXDFB__) 241 #include "wx/dfb/font.h" 242#elif defined(__WXMAC__) 243 #include "wx/mac/font.h" 244#elif defined(__WXCOCOA__) 245 #include "wx/cocoa/font.h" 246#elif defined(__WXPM__) 247 #include "wx/os2/font.h" 248#endif 249 250#endif 251 // _WX_FONT_H_BASE_ 252