| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/fontutil.h
 
- // Purpose:     font-related helper functions
 
- // Author:      Vadim Zeitlin
 
- // Modified by:
 
- // Created:     05.11.99
 
- // Copyright:   (c) wxWidgets team
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- // General note: this header is private to wxWidgets and is not supposed to be
 
- // included by user code. The functions declared here are implemented in
 
- // msw/fontutil.cpp for Windows, unix/fontutil.cpp for GTK/Motif &c.
 
- #ifndef _WX_FONTUTIL_H_
 
- #define _WX_FONTUTIL_H_
 
- // ----------------------------------------------------------------------------
 
- // headers
 
- // ----------------------------------------------------------------------------
 
- #include "wx/font.h"        // for wxFont and wxFontEncoding
 
- #if defined(__WXMSW__)
 
-     #include "wx/msw/wrapwin.h"
 
- #endif
 
- class WXDLLIMPEXP_FWD_BASE wxArrayString;
 
- struct WXDLLIMPEXP_FWD_CORE wxNativeEncodingInfo;
 
- #if defined(_WX_X_FONTLIKE)
 
- // the symbolic names for the XLFD fields (with examples for their value)
 
- //
 
- // NB: we suppose that the font always starts with the empty token (font name
 
- //     registry field) as we never use nor generate it anyhow
 
- enum wxXLFDField
 
- {
 
-     wxXLFD_FOUNDRY,     // adobe
 
-     wxXLFD_FAMILY,      // courier, times, ...
 
-     wxXLFD_WEIGHT,      // black, bold, demibold, medium, regular, light
 
-     wxXLFD_SLANT,       // r/i/o (roman/italique/oblique)
 
-     wxXLFD_SETWIDTH,    // condensed, expanded, ...
 
-     wxXLFD_ADDSTYLE,    // whatever - usually nothing
 
-     wxXLFD_PIXELSIZE,   // size in pixels
 
-     wxXLFD_POINTSIZE,   // size in points
 
-     wxXLFD_RESX,        // 72, 75, 100, ...
 
-     wxXLFD_RESY,
 
-     wxXLFD_SPACING,     // m/p/c (monospaced/proportional/character cell)
 
-     wxXLFD_AVGWIDTH,    // average width in 1/10 pixels
 
-     wxXLFD_REGISTRY,    // iso8859, rawin, koi8, ...
 
-     wxXLFD_ENCODING,    // 1, r, r, ...
 
-     wxXLFD_MAX
 
- };
 
- #endif // _WX_X_FONTLIKE
 
- // ----------------------------------------------------------------------------
 
- // types
 
- // ----------------------------------------------------------------------------
 
- // wxNativeFontInfo is platform-specific font representation: this struct
 
- // should be considered as opaque font description only used by the native
 
- // functions, the user code can only get the objects of this type from
 
- // somewhere and pass it somewhere else (possibly save them somewhere using
 
- // ToString() and restore them using FromString())
 
- class WXDLLIMPEXP_CORE wxNativeFontInfo
 
- {
 
- public:
 
- #if wxUSE_PANGO
 
-     PangoFontDescription *description;
 
-     // Pango font description doesn't have these attributes, so we store them
 
-     // separately and handle them ourselves in {To,From}String() methods.
 
-     bool m_underlined;
 
-     bool m_strikethrough;
 
- #elif defined(_WX_X_FONTLIKE)
 
-     // the members can't be accessed directly as we only parse the
 
-     // xFontName on demand
 
- private:
 
-     // the components of the XLFD
 
-     wxString     fontElements[wxXLFD_MAX];
 
-     // the full XLFD
 
-     wxString     xFontName;
 
-     // true until SetXFontName() is called
 
-     bool         m_isDefault;
 
-     // return true if we have already initialized fontElements
 
-     inline bool HasElements() const;
 
- public:
 
-     // init the elements from an XLFD, return true if ok
 
-     bool FromXFontName(const wxString& xFontName);
 
-     // return false if we were never initialized with a valid XLFD
 
-     bool IsDefault() const { return m_isDefault; }
 
-     // return the XLFD (using the fontElements if necessary)
 
-     wxString GetXFontName() const;
 
-     // get the given XFLD component
 
-     wxString GetXFontComponent(wxXLFDField field) const;
 
-     // change the font component
 
-     void SetXFontComponent(wxXLFDField field, const wxString& value);
 
-     // set the XFLD
 
-     void SetXFontName(const wxString& xFontName);
 
- #elif defined(__WXMSW__)
 
-     wxNativeFontInfo(const LOGFONT& lf_) : lf(lf_) { }
 
-     LOGFONT      lf;
 
- #elif defined(__WXPM__)
 
-     // OS/2 native structures that define a font
 
-     FATTRS       fa;
 
-     FONTMETRICS  fm;
 
-     FACENAMEDESC fn;
 
- #elif defined(__WXOSX__)
 
- public:
 
-     wxNativeFontInfo(const wxNativeFontInfo& info) { Init(info); }
 
-     wxNativeFontInfo( int size,
 
-                   wxFontFamily family,
 
-                   wxFontStyle style,
 
-                   wxFontWeight weight,
 
-                   bool underlined,
 
-                   const wxString& faceName,
 
-                   wxFontEncoding encoding)
 
-     { Init(size,family,style,weight,underlined,faceName,encoding); }
 
-     ~wxNativeFontInfo() { Free(); }
 
-     wxNativeFontInfo& operator=(const wxNativeFontInfo& info)
 
-     {
 
-         if (this != &info)
 
-         {
 
-             Free();
 
-             Init(info);
 
-         }
 
-         return *this;
 
-     }
 
-     void Init(CTFontDescriptorRef descr);
 
-     void Init(const wxNativeFontInfo& info);
 
-     void Init(int size,
 
-                   wxFontFamily family,
 
-                   wxFontStyle style,
 
-                   wxFontWeight weight,
 
-                   bool underlined,
 
-                   const wxString& faceName ,
 
-                   wxFontEncoding encoding);
 
-     void Free();
 
-     void EnsureValid();
 
-     static void UpdateNamesMap(const wxString& familyname, CTFontDescriptorRef descr);
 
-     static void UpdateNamesMap(const wxString& familyname, CTFontRef font);
 
-     bool m_descriptorValid;
 
- #if wxOSX_USE_ATSU_TEXT
 
-     bool            m_atsuFontValid;
 
-     // the atsu font ID
 
-     wxUint32        m_atsuFontID;
 
-     // the qd styles that are not intrinsic to the font above
 
-     wxInt16         m_atsuAdditionalQDStyles;
 
- #if wxOSX_USE_CARBON
 
-     wxInt16         m_qdFontFamily;
 
-     wxInt16         m_qdFontStyle;
 
- #endif
 
- #endif
 
-     int           m_pointSize;
 
-     wxFontFamily  m_family;
 
-     wxFontStyle   m_style;
 
-     wxFontWeight  m_weight;
 
-     bool          m_underlined;
 
-     bool          m_strikethrough;
 
-     wxString      m_faceName;
 
-     wxFontEncoding m_encoding;
 
- public :
 
- #else // other platforms
 
-     //
 
-     //  This is a generic implementation that should work on all ports
 
-     //  without specific support by the port.
 
-     //
 
-     #define wxNO_NATIVE_FONTINFO
 
-     int           pointSize;
 
-     wxFontFamily  family;
 
-     wxFontStyle   style;
 
-     wxFontWeight  weight;
 
-     bool          underlined;
 
-     bool          strikethrough;
 
-     wxString      faceName;
 
-     wxFontEncoding encoding;
 
- #endif // platforms
 
-     // default ctor (default copy ctor is ok)
 
-     wxNativeFontInfo() { Init(); }
 
- #if wxUSE_PANGO
 
- private:
 
-     void Init(const wxNativeFontInfo& info);
 
-     void Free();
 
- public:
 
-     wxNativeFontInfo(const wxNativeFontInfo& info) { Init(info); }
 
-     ~wxNativeFontInfo() { Free(); }
 
-     wxNativeFontInfo& operator=(const wxNativeFontInfo& info)
 
-     {
 
-         if (this != &info)
 
-         {
 
-             Free();
 
-             Init(info);
 
-         }
 
-         return *this;
 
-     }
 
- #endif // wxUSE_PANGO
 
-     // reset to the default state
 
-     void Init();
 
-     // init with the parameters of the given font
 
-     void InitFromFont(const wxFont& font)
 
-     {
 
-         // translate all font parameters
 
-         SetStyle((wxFontStyle)font.GetStyle());
 
-         SetWeight((wxFontWeight)font.GetWeight());
 
-         SetUnderlined(font.GetUnderlined());
 
-         SetStrikethrough(font.GetStrikethrough());
 
- #if defined(__WXMSW__)
 
-         if ( font.IsUsingSizeInPixels() )
 
-             SetPixelSize(font.GetPixelSize());
 
-         else
 
-             SetPointSize(font.GetPointSize());
 
- #else
 
-         SetPointSize(font.GetPointSize());
 
- #endif
 
-         // set the family/facename
 
-         SetFamily((wxFontFamily)font.GetFamily());
 
-         const wxString& facename = font.GetFaceName();
 
-         if ( !facename.empty() )
 
-         {
 
-             SetFaceName(facename);
 
-         }
 
-         // deal with encoding now (it may override the font family and facename
 
-         // so do it after setting them)
 
-         SetEncoding(font.GetEncoding());
 
-     }
 
-     // accessors and modifiers for the font elements
 
-     int GetPointSize() const;
 
-     wxSize GetPixelSize() const;
 
-     wxFontStyle GetStyle() const;
 
-     wxFontWeight GetWeight() const;
 
-     bool GetUnderlined() const;
 
-     bool GetStrikethrough() const;
 
-     wxString GetFaceName() const;
 
-     wxFontFamily GetFamily() const;
 
-     wxFontEncoding GetEncoding() const;
 
-     void SetPointSize(int pointsize);
 
-     void SetPixelSize(const wxSize& pixelSize);
 
-     void SetStyle(wxFontStyle style);
 
-     void SetWeight(wxFontWeight weight);
 
-     void SetUnderlined(bool underlined);
 
-     void SetStrikethrough(bool strikethrough);
 
-     bool SetFaceName(const wxString& facename);
 
-     void SetFamily(wxFontFamily family);
 
-     void SetEncoding(wxFontEncoding encoding);
 
-     // sets the first facename in the given array which is found
 
-     // to be valid. If no valid facename is given, sets the
 
-     // first valid facename returned by wxFontEnumerator::GetFacenames().
 
-     // Does not return a bool since it cannot fail.
 
-     void SetFaceName(const wxArrayString &facenames);
 
-     // it is important to be able to serialize wxNativeFontInfo objects to be
 
-     // able to store them (in config file, for example)
 
-     bool FromString(const wxString& s);
 
-     wxString ToString() const;
 
-     // we also want to present the native font descriptions to the user in some
 
-     // human-readable form (it is not platform independent neither, but can
 
-     // hopefully be understood by the user)
 
-     bool FromUserString(const wxString& s);
 
-     wxString ToUserString() const;
 
- };
 
- // ----------------------------------------------------------------------------
 
- // font-related functions (common)
 
- // ----------------------------------------------------------------------------
 
- // translate a wxFontEncoding into native encoding parameter (defined above),
 
- // returning true if an (exact) macth could be found, false otherwise (without
 
- // attempting any substitutions)
 
- WXDLLIMPEXP_CORE bool wxGetNativeFontEncoding(wxFontEncoding encoding,
 
-                                               wxNativeEncodingInfo *info);
 
- // test for the existence of the font described by this facename/encoding,
 
- // return true if such font(s) exist, false otherwise
 
- WXDLLIMPEXP_CORE bool wxTestFontEncoding(const wxNativeEncodingInfo& info);
 
- // ----------------------------------------------------------------------------
 
- // font-related functions (X and GTK)
 
- // ----------------------------------------------------------------------------
 
- #ifdef _WX_X_FONTLIKE
 
-     #include "wx/unix/fontutil.h"
 
- #endif // X || GDK
 
- #endif // _WX_FONTUTIL_H_
 
 
  |