1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxFontBase class: the interface of wxFont 
   4 // Author:      Vadim Zeitlin 
   8 // Copyright:   (c) wxWidgets team 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _WX_FONT_H_BASE_ 
  13 #define _WX_FONT_H_BASE_ 
  15 // ---------------------------------------------------------------------------- 
  17 // ---------------------------------------------------------------------------- 
  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 
  23 // ---------------------------------------------------------------------------- 
  24 // forward declarations 
  25 // ---------------------------------------------------------------------------- 
  27 class WXDLLEXPORT wxFontData
; 
  28 class WXDLLEXPORT wxFontBase
; 
  29 class WXDLLEXPORT wxFont
; 
  30 class WXDLLEXPORT wxSize
; 
  32 // ---------------------------------------------------------------------------- 
  34 // ---------------------------------------------------------------------------- 
  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 
  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
, 
  50     wxFONTFAMILY_UNKNOWN 
= wxFONTFAMILY_MAX
 
  56     wxFONTSTYLE_NORMAL 
= wxNORMAL
, 
  57     wxFONTSTYLE_ITALIC 
= wxITALIC
, 
  58     wxFONTSTYLE_SLANT 
= wxSLANT
, 
  65     wxFONTWEIGHT_NORMAL 
= wxNORMAL
, 
  66     wxFONTWEIGHT_LIGHT 
= wxLIGHT
, 
  67     wxFONTWEIGHT_BOLD 
= wxBOLD
, 
  71 // the font flag bits for the new font ctor accepting one combined flags word 
  74     // no special flags: font with default weight/slant/anti-aliasing 
  75     wxFONTFLAG_DEFAULT          
= 0, 
  77     // slant flags (default: no slant) 
  78     wxFONTFLAG_ITALIC           
= 1 << 0, 
  79     wxFONTFLAG_SLANT            
= 1 << 1, 
  81     // weight flags (default: medium) 
  82     wxFONTFLAG_LIGHT            
= 1 << 2, 
  83     wxFONTFLAG_BOLD             
= 1 << 3, 
  85     // anti-aliasing flag: force on or off (default: the current system default) 
  86     wxFONTFLAG_ANTIALIASED      
= 1 << 4, 
  87     wxFONTFLAG_NOT_ANTIALIASED  
= 1 << 5, 
  89     // underlined/strikethrough flags (default: no lines) 
  90     wxFONTFLAG_UNDERLINED       
= 1 << 6, 
  91     wxFONTFLAG_STRIKETHROUGH    
= 1 << 7, 
  93     // the mask of all currently used flags 
  94     wxFONTFLAG_MASK 
= wxFONTFLAG_ITALIC             
| 
  98                       wxFONTFLAG_ANTIALIASED        
| 
  99                       wxFONTFLAG_NOT_ANTIALIASED    
| 
 100                       wxFONTFLAG_UNDERLINED         
| 
 101                       wxFONTFLAG_STRIKETHROUGH
 
 104 // ---------------------------------------------------------------------------- 
 105 // wxFontBase represents a font object 
 106 // ---------------------------------------------------------------------------- 
 108 class WXDLLEXPORT wxFontRefData
; 
 109 class WXDLLEXPORT wxNativeFontInfo
; 
 111 class WXDLLEXPORT wxFontBase 
: public wxGDIObject
 
 115     virtual ~wxFontBase(); 
 117     // from the font components 
 119         int pointSize
,              // size of the font in points 
 120         int family
,                 // see wxFontFamily enum 
 121         int style
,                  // see wxFontStyle enum 
 122         int weight
,                 // see wxFontWeight enum 
 123         bool underlined 
= false,    // not underlined by default 
 124         const wxString
& face 
= wxEmptyString
,              // facename 
 125         wxFontEncoding encoding 
= wxFONTENCODING_DEFAULT
); // ISO8859-X, ... 
 127     // from the font components but using the font flags instead of separate 
 128     // parameters for each flag 
 129     static wxFont 
*New(int pointSize
, 
 131                        int flags 
= wxFONTFLAG_DEFAULT
, 
 132                        const wxString
& face 
= wxEmptyString
, 
 133                        wxFontEncoding encoding 
= wxFONTENCODING_DEFAULT
); 
 135     // from the font components 
 137         const wxSize
& pixelSize
,    // size of the font in pixels 
 138         int family
,                 // see wxFontFamily enum 
 139         int style
,                  // see wxFontStyle enum 
 140         int weight
,                 // see wxFontWeight enum 
 141         bool underlined 
= false,    // not underlined by default 
 142         const wxString
& face 
= wxEmptyString
,              // facename 
 143         wxFontEncoding encoding 
= wxFONTENCODING_DEFAULT
); // ISO8859-X, ... 
 145     // from the font components but using the font flags instead of separate 
 146     // parameters for each flag 
 147     static wxFont 
*New(const wxSize
& pixelSize
, 
 149                        int flags 
= wxFONTFLAG_DEFAULT
, 
 150                        const wxString
& face 
= wxEmptyString
, 
 151                        wxFontEncoding encoding 
= wxFONTENCODING_DEFAULT
); 
 153     // from the (opaque) native font description object 
 154     static wxFont 
*New(const wxNativeFontInfo
& nativeFontDesc
); 
 156     // from the string representation of wxNativeFontInfo 
 157     static wxFont 
*New(const wxString
& strNativeFontDesc
); 
 159     // was the font successfully created? 
 160     bool Ok() const { return m_refData 
!= NULL
; } 
 163     bool operator == (const wxFont
& font
) const; 
 164     bool operator != (const wxFont
& font
) const; 
 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; 
 178     virtual bool IsFixedWidth() const; 
 180     wxString 
GetNativeFontInfoDesc() const; 
 181     wxString 
GetNativeFontInfoUserDesc() const; 
 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
); } 
 195     bool SetNativeFontInfo(const wxString
& info
); 
 196     bool SetNativeFontInfoUserDesc(const wxString
& info
); 
 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; 
 204     // Unofficial API, don't use 
 205     virtual void SetNoAntiAliasing( bool WXUNUSED(no
) = true ) {  } 
 206     virtual bool GetNoAntiAliasing() const { return false; } 
 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
); 
 214     // get the internal data 
 215     wxFontRefData 
*GetFontData() const 
 216         { return (wxFontRefData 
*)m_refData
; } 
 218     // the function called by both overloads of SetNativeFontInfo() 
 219     virtual void DoSetNativeFontInfo(const wxNativeFontInfo
& info
); 
 222     // the currently default encoding: by default, it's the default system 
 223     // encoding, but may be changed by the application using 
 224     // SetDefaultEncoding() to make all subsequent fonts created without 
 225     // specifying encoding parameter using this encoding 
 226     static wxFontEncoding ms_encodingDefault
; 
 229 // include the real class declaration 
 230 #if defined(__WXPALMOS__) 
 231     #include "wx/palmos/font.h" 
 232 #elif defined(__WXMSW__) 
 233     #include "wx/msw/font.h" 
 234 #elif defined(__WXMOTIF__) 
 235     #include "wx/motif/font.h" 
 236 #elif defined(__WXGTK20__) 
 237     #include "wx/gtk/font.h" 
 238 #elif defined(__WXGTK__) 
 239     #include "wx/gtk1/font.h" 
 240 #elif defined(__WXX11__) 
 241     #include "wx/x11/font.h" 
 242 #elif defined(__WXMGL__) 
 243     #include "wx/mgl/font.h" 
 244 #elif defined(__WXDFB__) 
 245     #include "wx/dfb/font.h" 
 246 #elif defined(__WXMAC__) 
 247     #include "wx/mac/font.h" 
 248 #elif defined(__WXCOCOA__) 
 249     #include "wx/cocoa/font.h" 
 250 #elif defined(__WXPM__) 
 251     #include "wx/os2/font.h" 
 254 // ---------------------------------------------------------------------------- 
 256 // ---------------------------------------------------------------------------- 
 258 #define M_FONTDATA GetFontData()