]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/private/fontmgr.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        wx/private/fontmgr.h 
   3 // Purpose:     font management for ports that don't have their own 
   4 // Author:      Vaclav Slavik 
   7 // Copyright:   (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com) 
   8 //              (c) 2006 REA Elektronik GmbH 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _WX_PRIVATE_FONTMGR_H_ 
  13 #define _WX_PRIVATE_FONTMGR_H_ 
  16 #include "wx/fontutil.h" 
  20 class wxFontInstanceList
; 
  23 class wxFontBundleHash
; 
  24 class wxFontMgrFontRefData
; 
  26 WX_DECLARE_LIST(wxFontBundle
, wxFontBundleList
); 
  29     This class represents single font face with set parameters (point size, 
  32 class wxFontInstanceBase
 
  35     wxFontInstanceBase(float ptSize
, bool aa
) : m_ptSize(ptSize
), m_aa(aa
) {} 
  36     virtual ~wxFontInstanceBase() {} 
  39     float GetPointSize() const { return m_ptSize
; } 
  40     bool IsAntiAliased() const { return m_aa
; } 
  48 /// This class represents loaded font face (bundle+weight+italics). 
  52     /// Ctor. Creates object with reference count = 0, Acquire() must be 
  53     /// called after the object is created. 
  55     virtual ~wxFontFaceBase(); 
  58     /// Increases reference count of the face 
  59     virtual void Acquire(); 
  62         Decreases reference count of the face. Call this when you no longer 
  63         use the object returned by wxFontBundle. Note that this doesn't destroy 
  64         the object, but only optionally shuts it down, so it's possible to 
  65         call Acquire() and Release() more than once. 
  67     virtual void Release(); 
  70         Returns instance of the font at given size. 
  72         @param ptSize   point size of the font to create; note that this is 
  73                         a float and not integer, it should be wxFont's point 
  74                         size multipled by wxDC's scale factor 
  75         @param aa       should the font be antialiased? 
  77     virtual wxFontInstance 
*GetFontInstance(float ptSize
, bool aa
); 
  80     /// Called to create a new instance of the font by GetFontInstance() if 
  81     /// it wasn't found it cache. 
  82     virtual wxFontInstance 
*CreateFontInstance(float ptSize
, bool aa
) = 0; 
  86     wxFontInstanceList 
*m_instances
; 
  90     This class represents font bundle. Font bundle is set of faces that have 
  91     the same name, but differ in weight and italics. 
  93 class wxFontBundleBase
 
  97     virtual ~wxFontBundleBase(); 
  99     /// Returns name of the bundle 
 100     virtual wxString 
GetName() const = 0; 
 102     /// Returns true if the font is fixe-width 
 103     virtual bool IsFixed() const = 0; 
 105     /// Type of faces in the bundle 
 108         // NB: values of these constants are set so that it's possible to 
 109         //     make OR-combinations of them and still get valid enum element 
 110         FaceType_Regular       
= 0, 
 113         FaceType_BoldItalic    
= FaceType_Italic 
| FaceType_Bold
, 
 118     /// Returns true if the given face is available 
 119     bool HasFace(FaceType type
) const { return m_faces
[type
] != NULL
; } 
 122         Returns font face object that can be used to render font of given type. 
 124         Note that this method can only be called if HasFace(type) returns true. 
 126         Acquire() was called on the returned object, you must call Release() 
 127         when you stop using it. 
 129     wxFontFace 
*GetFace(FaceType type
) const; 
 132         Returns font face object that can be used to render given font. 
 134         Acquire() was called on the returned object, you must call Release() 
 135         when you stop using it. 
 137     wxFontFace 
*GetFaceForFont(const wxFontMgrFontRefData
& font
) const; 
 140     wxFontFace 
*m_faces
[FaceType_Max
]; 
 145     Base class for wxFontsManager class, which manages the list of all 
 146     available fonts and their loaded instances. 
 148 class wxFontsManagerBase
 
 151     wxFontsManagerBase(); 
 152     virtual ~wxFontsManagerBase(); 
 155     /// Returns the font manager singleton, creating it if it doesn't exist 
 156     static wxFontsManager 
*Get(); 
 158     /// Called by wxApp to shut down the manager 
 159     static void CleanUp(); 
 161     /// Returns list of all available font bundles 
 162     const wxFontBundleList
& GetBundles() const { return *m_list
; } 
 165         Returns object representing font bundle with the given name. 
 167         The returned object is owned by wxFontsManager, you must not delete it. 
 169     wxFontBundle 
*GetBundle(const wxString
& name
) const; 
 172         Returns object representing font bundle that can be used to render 
 175         The returned object is owned by wxFontsManager, you must not delete it. 
 177     wxFontBundle 
*GetBundleForFont(const wxFontMgrFontRefData
& font
) const; 
 179     /// This method must be called by derived 
 180     void AddBundle(wxFontBundle 
*bundle
); 
 182     /// Returns default facename for given wxFont family 
 183     virtual wxString 
GetDefaultFacename(wxFontFamily family
) const = 0; 
 186     wxFontBundleHash 
*m_hash
; 
 187     wxFontBundleList 
*m_list
; 
 190     static wxFontsManager 
*ms_instance
; 
 195 #if defined(__WXMGL__) 
 196     #include "wx/mgl/private/fontmgr.h" 
 197 #elif defined(__WXDFB__) 
 198     #include "wx/dfb/private/fontmgr.h" 
 203 /// wxFontMgrFontRefData implementation using wxFontsManager classes 
 204 class wxFontMgrFontRefData 
: public wxObjectRefData
 
 207     wxFontMgrFontRefData(int size 
= wxDEFAULT
, 
 208                   int family 
= wxDEFAULT
, 
 209                   int style 
= wxDEFAULT
, 
 210                   int weight 
= wxDEFAULT
, 
 211                   bool underlined 
= false, 
 212                   const wxString
& faceName 
= wxEmptyString
, 
 213                   wxFontEncoding encoding 
= wxFONTENCODING_DEFAULT
); 
 214     wxFontMgrFontRefData(const wxFontMgrFontRefData
& data
); 
 215     ~wxFontMgrFontRefData(); 
 217     wxFontBundle 
*GetFontBundle() const; 
 218     wxFontInstance 
*GetFontInstance(float scale
, bool antialiased
) const; 
 220     bool IsFixedWidth() const { return GetFontBundle()->IsFixed(); } 
 222     const wxNativeFontInfo 
*GetNativeFontInfo() const { return &m_info
; } 
 224     int GetPointSize() const { return m_info
.pointSize
; } 
 225     wxString 
GetFaceName() const { return m_info
.faceName
; } 
 226     int GetFamily() const { return m_info
.family
; } 
 227     int GetStyle() const { return m_info
.style
; } 
 228     int GetWeight() const { return m_info
.weight
; } 
 229     bool GetUnderlined() const { return m_info
.underlined
; } 
 230     wxFontEncoding 
GetEncoding() const { return m_info
.encoding
; } 
 232     void SetPointSize(int pointSize
); 
 233     void SetFamily(int family
); 
 234     void SetStyle(int style
); 
 235     void SetWeight(int weight
); 
 236     void SetFaceName(const wxString
& faceName
); 
 237     void SetUnderlined(bool underlined
); 
 238     void SetEncoding(wxFontEncoding encoding
); 
 240     // Unofficial API, don't use 
 241     void SetNoAntiAliasing(bool no
); 
 242     bool GetNoAntiAliasing() const { return m_noAA
; } 
 245     void EnsureValidFont(); 
 247     wxNativeFontInfo  m_info
; 
 250     wxFontFace       
*m_fontFace
; 
 251     wxFontBundle     
*m_fontBundle
; 
 255 #endif // _WX_PRIVATE_FONTMGR_H_