/////////////////////////////////////////////////////////////////////////////
// Name: font.h
-// Purpose:
-// Author: Robert Roebling
-// Created: 01/02/97
-// Id:
-// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem
+// Purpose: wxFont class
+// Author: AUTHOR
+// Modified by:
+// Created: ??/??/98
+// RCS-ID: $Id$
+// Copyright: (c) AUTHOR
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
-#ifndef __GTKFONTH__
-#define __GTKFONTH__
+#ifndef _WX_FONT_H_
+#define _WX_FONT_H_
#ifdef __GNUG__
-#pragma interface
+#pragma interface "font.h"
#endif
-#include "wx/defs.h"
-#include "wx/object.h"
-#include "wx/string.h"
-#include "wx/hash.h"
#include "wx/gdiobj.h"
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxDC;
-class wxPaintDC;
-class wxWindow;
+class WXDLLEXPORT wxFont;
-class wxFont;
-class wxFontNameDirectory;
-
-//-----------------------------------------------------------------------------
-// global variables
-//-----------------------------------------------------------------------------
+class WXDLLEXPORT wxFontRefData: public wxGDIRefData
+{
+ friend class WXDLLEXPORT wxFont;
+public:
+ wxFontRefData();
+ ~wxFontRefData();
+protected:
+ int m_pointSize;
+ int m_family;
+ int m_style;
+ int m_weight;
+ bool m_underlined;
+ wxString m_faceName;
+/* TODO: implementation
+ WXHFONT m_hFont;
+*/
+};
-// extern wxFontNameDirectory wxTheFontNameDirectory; // defined below
+#define M_FONTDATA ((wxFontRefData *)m_refData)
-//-----------------------------------------------------------------------------
-// wxFont
-//-----------------------------------------------------------------------------
+WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
-class wxFont: public wxGDIObject
+// Font
+class WXDLLEXPORT wxFont: public wxGDIObject
{
DECLARE_DYNAMIC_CLASS(wxFont)
-
- public:
- wxFont(void);
- wxFont( int PointSize, int FontIdOrFamily, int Style, int Weight,
- bool underlined = FALSE, const char *Face=NULL );
- wxFont( int PointSize, const char *Face, int Family, int Style, int Weight,
- bool underlined = FALSE );
- wxFont( const wxFont& font );
- wxFont( const wxFont* font );
- ~wxFont(void);
- wxFont& operator = ( const wxFont& font );
- bool operator == ( const wxFont& font );
- bool operator != ( const wxFont& font );
- bool Ok();
-
- int GetPointSize(void) const;
- wxString GetFaceName(void) const;
- int GetFamily(void) const;
- wxString GetFamilyString(void) const;
- int GetFontId(void) const;
- wxString GetFaceString(void) const;
- int GetStyle(void) const;
- wxString GetStyleString(void) const;
- int GetWeight(void) const;
- wxString GetWeightString(void) const;
- bool GetUnderlined(void) const;
-
- wxFont( char *xFontName );
-
- private:
-
- friend wxDC;
- friend wxPaintDC;
- friend wxWindow;
-
- // no data :-)
+public:
+ wxFont();
+ wxFont(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString);
+ inline wxFont(const wxFont& font) { Ref(font); }
+ inline wxFont(const wxFont* font) { if (font) Ref(*font); }
+
+ ~wxFont();
+
+ bool Create(int pointSize, int family, int style, int weight, bool underlined = FALSE, const wxString& faceName = wxEmptyString);
+
+ virtual bool Ok() const { return (m_refData != NULL) ; }
+
+ inline int GetPointSize() const { return M_FONTDATA->m_pointSize; }
+ inline int GetFamily() const { return M_FONTDATA->m_family; }
+ inline int GetStyle() const { return M_FONTDATA->m_style; }
+ inline int GetWeight() const { return M_FONTDATA->m_weight; }
+ wxString GetFamilyString() const ;
+ wxString GetFaceName() const ;
+ wxString GetStyleString() const ;
+ wxString GetWeightString() const ;
+ inline bool GetUnderlined() const { return M_FONTDATA->m_underlined; }
+
+ void SetPointSize(int pointSize);
+ void SetFamily(int family);
+ void SetStyle(int style);
+ void SetWeight(int weight);
+ void SetFaceName(const wxString& faceName);
+ void SetUnderlined(bool underlined);
+
+ inline wxFont& operator = (const wxFont& font) { if (*this == font) return (*this); Ref(font); return *this; }
+ inline bool operator == (const wxFont& font) { return m_refData == font.m_refData; }
+ inline bool operator != (const wxFont& font) { return m_refData != font.m_refData; }
+
+ // Implementation
+protected:
+ void Unshare();
};
-#endif // __GTKFONTH__
+#endif
+ // _WX_FONT_H_