home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / font.h < prev    next >
C/C++ Source or Header  |  2002-11-04  |  7KB  |  193 lines

  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.32.2.2 2002/10/28 01:51:41 RR 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?
  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 ) {  }
  146.     virtual bool GetNoAntiAliasing() { return FALSE; }
  147.  
  148.     // the default encoding is used for creating all fonts with default
  149.     // encoding parameter
  150.     static wxFontEncoding GetDefaultEncoding() { return ms_encodingDefault; }
  151.     static void SetDefaultEncoding(wxFontEncoding encoding);
  152.  
  153. protected:
  154.     // get the internal data
  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.