+ // operations
+ bool Alloc(wxFont *font);
+
+ void Free();
+
+ // all wxFont accessors
+ int GetPointSize() const
+ {
+ return m_nativeFontInfoOk ? m_nativeFontInfo.GetPointSize()
+ : m_pointSize;
+ }
+
+ wxSize GetPixelSize() const
+ {
+ return m_nativeFontInfoOk ? m_nativeFontInfo.GetPixelSize()
+ : m_pixelSize;
+ }
+
+ bool IsUsingSizeInPixels() const
+ {
+ return m_nativeFontInfoOk ? true : m_sizeUsingPixels;
+ }
+
+ int GetFamily() const
+ {
+ return m_family;
+ }
+
+ int GetStyle() const
+ {
+ return m_nativeFontInfoOk ? m_nativeFontInfo.GetStyle()
+ : m_style;
+ }
+
+ int GetWeight() const
+ {
+ return m_nativeFontInfoOk ? m_nativeFontInfo.GetWeight()
+ : m_weight;
+ }
+
+ bool GetUnderlined() const
+ {
+ return m_nativeFontInfoOk ? m_nativeFontInfo.GetUnderlined()
+ : m_underlined;
+ }
+
+ wxString GetFaceName() const
+ {
+ wxString s;
+ if ( m_nativeFontInfoOk )
+ s = m_nativeFontInfo.GetFaceName();
+ else
+ s = m_faceName;
+
+ return s;
+ }
+
+ wxFontEncoding GetEncoding() const
+ {
+ return m_nativeFontInfoOk ? m_nativeFontInfo.GetEncoding()
+ : m_encoding;
+ }
+
+ WXHFONT GetHFONT() const { return m_hFont; }
+
+ // ... and setters
+ void SetPointSize(int pointSize)
+ {
+ if ( m_nativeFontInfoOk )
+ {
+ m_nativeFontInfo.SetPointSize(pointSize);
+ }
+ else
+ {
+ m_pointSize = pointSize;
+ m_sizeUsingPixels = false;
+ }
+ }
+
+ void SetPixelSize(const wxSize& pixelSize)
+ {
+ if ( m_nativeFontInfoOk )
+ {
+ m_nativeFontInfo.SetPixelSize(pixelSize);
+ }
+ else
+ {
+ m_pixelSize = pixelSize;
+ m_sizeUsingPixels = true;
+ }
+ }
+
+ void SetFamily(int family)
+ {
+ m_family = family;
+ }
+
+ void SetStyle(int style)
+ {
+ if ( m_nativeFontInfoOk )
+ m_nativeFontInfo.SetStyle((wxFontStyle)style);
+ else
+ m_style = style;
+ }
+
+ void SetWeight(int weight)
+ {
+ if ( m_nativeFontInfoOk )
+ m_nativeFontInfo.SetWeight((wxFontWeight)weight);
+ else
+ m_weight = weight;
+ }
+
+ bool SetFaceName(const wxString& faceName)
+ {
+ if ( m_nativeFontInfoOk )
+ return m_nativeFontInfo.SetFaceName(faceName);
+
+ m_faceName = faceName;
+ return true;
+ }
+
+ void SetUnderlined(bool underlined)
+ {
+ if ( m_nativeFontInfoOk )
+ m_nativeFontInfo.SetUnderlined(underlined);
+ else
+ m_underlined = underlined;
+ }
+
+ void SetEncoding(wxFontEncoding encoding)
+ {
+ if ( m_nativeFontInfoOk )
+ m_nativeFontInfo.SetEncoding(encoding);
+ else
+ m_encoding = encoding;
+ }
+
+ // native font info tests
+ bool HasNativeFontInfo() const { return m_nativeFontInfoOk; }
+
+ const wxNativeFontInfo& GetNativeFontInfo() const
+ { return m_nativeFontInfo; }
+