| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/motif/font.h
- // Purpose: wxFont class
- // Author: Julian Smart
- // Modified by:
- // Created: 17/09/98
- // Copyright: (c) Julian Smart
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_FONT_H_
- #define _WX_FONT_H_
- #if __WXMOTIF20__ && !__WXLESSTIF__
- #define wxMOTIF_USE_RENDER_TABLE 1
- #else
- #define wxMOTIF_USE_RENDER_TABLE 0
- #endif
- #define wxMOTIF_NEW_FONT_HANDLING wxMOTIF_USE_RENDER_TABLE
- class wxXFont;
- // Font
- class WXDLLIMPEXP_CORE wxFont : public wxFontBase
- {
- public:
- // ctors and such
- wxFont() { }
- wxFont(const wxFontInfo& info)
- {
- Create(info.GetPointSize(),
- info.GetFamily(),
- info.GetStyle(),
- info.GetWeight(),
- info.IsUnderlined(),
- info.GetFaceName(),
- info.GetEncoding());
- if ( info.IsUsingSizeInPixels() )
- SetPixelSize(info.GetPixelSize());
- }
- wxFont(const wxNativeFontInfo& info);
- #if FUTURE_WXWIN_COMPATIBILITY_3_0
- wxFont(int size,
- int family,
- int style,
- int weight,
- bool underlined = false,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- (void)Create(size, (wxFontFamily)family, (wxFontStyle)style, (wxFontWeight)weight, underlined, face, encoding);
- }
- #endif
- wxFont(int size,
- wxFontFamily family,
- wxFontStyle style,
- wxFontWeight weight,
- bool underlined = false,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- Create(size, family, style, weight, underlined, face, encoding);
- }
- wxFont(const wxSize& pixelSize,
- wxFontFamily family,
- wxFontStyle style,
- wxFontWeight weight,
- bool underlined = false,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT)
- {
- Create(10, family, style, weight, underlined, face, encoding);
- SetPixelSize(pixelSize);
- }
- bool Create(int size,
- wxFontFamily family,
- wxFontStyle style,
- wxFontWeight weight,
- bool underlined = false,
- const wxString& face = wxEmptyString,
- wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
- // wxMOTIF-specific
- bool Create(const wxString& fontname,
- wxFontEncoding fontenc = wxFONTENCODING_DEFAULT);
- bool Create(const wxNativeFontInfo& fontinfo);
- virtual ~wxFont();
- // implement base class pure virtuals
- virtual int GetPointSize() const;
- virtual wxFontStyle GetStyle() const;
- virtual wxFontWeight GetWeight() const;
- virtual bool GetUnderlined() const;
- virtual wxString GetFaceName() const;
- virtual wxFontEncoding GetEncoding() const;
- virtual const wxNativeFontInfo *GetNativeFontInfo() const;
- virtual void SetPointSize(int pointSize);
- virtual void SetFamily(wxFontFamily family);
- virtual void SetStyle(wxFontStyle style);
- virtual void SetWeight(wxFontWeight weight);
- virtual bool SetFaceName(const wxString& faceName);
- virtual void SetUnderlined(bool underlined);
- virtual void SetEncoding(wxFontEncoding encoding);
- wxDECLARE_COMMON_FONT_METHODS();
- // Implementation
- // Find an existing, or create a new, XFontStruct
- // based on this wxFont and the given scale. Append the
- // font to list in the private data for future reference.
- // TODO This is a fairly basic implementation, that doesn't
- // allow for different facenames, and also doesn't do a mapping
- // between 'standard' facenames (e.g. Arial, Helvetica, Times Roman etc.)
- // and the fonts that are available on a particular system.
- // Maybe we need to scan the user's machine to build up a profile
- // of the fonts and a mapping file.
- // Return font struct, and optionally the Motif font list
- wxXFont *GetInternalFont(double scale = 1.0,
- WXDisplay* display = NULL) const;
- // These two are helper functions for convenient access of the above.
- #if wxMOTIF_USE_RENDER_TABLE
- WXFontSet GetFontSet(double scale, WXDisplay* display = NULL) const;
- WXRenderTable GetRenderTable(WXDisplay* display) const;
- #else // if !wxMOTIF_USE_RENDER_TABLE
- WXFontStructPtr GetFontStruct(double scale = 1.0,
- WXDisplay* display = NULL) const;
- WXFontList GetFontList(double scale = 1.0,
- WXDisplay* display = NULL) const;
- #endif // !wxMOTIF_USE_RENDER_TABLE
- // returns either a XmFontList or XmRenderTable, depending
- // on Motif version
- WXFontType GetFontType(WXDisplay* display) const;
- // like the function above but does a copy for XmFontList
- WXFontType GetFontTypeC(WXDisplay* display) const;
- static WXString GetFontTag();
- protected:
- virtual wxGDIRefData *CreateGDIRefData() const;
- virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const;
- virtual void DoSetNativeFontInfo( const wxNativeFontInfo& info );
- virtual wxFontFamily DoGetFamily() const;
- void Unshare();
- private:
- DECLARE_DYNAMIC_CLASS(wxFont)
- };
- #endif // _WX_FONT_H_
|