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(int family);
virtual bool GetUnderlined() const = 0;
virtual wxString GetFaceName() const = 0;
virtual wxFontEncoding GetEncoding() const = 0;
- virtual wxNativeFontInfo *GetNativeFontInfo() const;
+ virtual const wxNativeFontInfo *GetNativeFontInfo() const = 0;
virtual bool IsFixedWidth() const;
// 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());
+ SetPointSize(font.GetPointSize());
+
+ // 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;
wxFontStyle GetStyle() const;
virtual wxString GetFaceName() const;
virtual bool GetUnderlined() const;
virtual wxFontEncoding GetEncoding() const;
- virtual wxNativeFontInfo *GetNativeFontInfo() const;
+ virtual const wxNativeFontInfo *GetNativeFontInfo() const;
virtual bool IsFixedWidth() const;
virtual void SetPointSize( int pointSize );
virtual wxString GetFaceName() const;
virtual bool GetUnderlined() const;
virtual wxFontEncoding GetEncoding() const;
- virtual wxNativeFontInfo *GetNativeFontInfo() const;
+ virtual const wxNativeFontInfo *GetNativeFontInfo() const;
virtual bool IsFixedWidth() const;
virtual void SetPointSize( int pointSize );
#pragma interface "font.h"
#endif
-class WXDLLEXPORT wxFontRefData: public wxGDIRefData
-{
- friend class WXDLLEXPORT wxFont;
-public:
- wxFontRefData()
- : m_fontId(0)
- , m_pointSize(10)
- , m_family(wxDEFAULT)
- , m_style(wxNORMAL)
- , m_weight(wxNORMAL)
- , m_underlined(FALSE)
- , m_faceName(wxT("Geneva"))
- , m_encoding(wxFONTENCODING_DEFAULT)
- , m_macFontNum(0)
- , m_macFontSize(0)
- , m_macFontStyle(0)
- , m_macATSUFontID()
- {
- Init(10, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE,
- wxT("Geneva"), wxFONTENCODING_DEFAULT);
- }
-
- wxFontRefData(const wxFontRefData& data)
- : wxGDIRefData()
- , m_fontId(data.m_fontId)
- , m_pointSize(data.m_pointSize)
- , m_family(data.m_family)
- , m_style(data.m_style)
- , m_weight(data.m_weight)
- , m_underlined(data.m_underlined)
- , m_faceName(data.m_faceName)
- , m_encoding(data.m_encoding)
- , m_macFontNum(data.m_macFontNum)
- , m_macFontSize(data.m_macFontSize)
- , m_macFontStyle(data.m_macFontStyle)
- , m_macATSUFontID(data.m_macATSUFontID)
- {
- Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
- data.m_underlined, data.m_faceName, data.m_encoding);
- }
-
- wxFontRefData(int size,
- int family,
- int style,
- int weight,
- bool underlined,
- const wxString& faceName,
- wxFontEncoding encoding)
- : m_fontId(0)
- , m_pointSize(size)
- , m_family(family)
- , m_style(style)
- , m_weight(weight)
- , m_underlined(underlined)
- , m_faceName(faceName)
- , m_encoding(encoding)
- , m_macFontNum(0)
- , m_macFontSize(0)
- , m_macFontStyle(0)
- , m_macATSUFontID(0)
- {
- Init(size, family, style, weight, underlined, faceName, encoding);
- }
-
- virtual ~wxFontRefData();
- void SetNoAntiAliasing( bool no = TRUE ) { m_noAA = no; }
- bool GetNoAntiAliasing() { return m_noAA; }
-
-protected:
- // common part of all ctors
- void Init(int size,
- int family,
- int style,
- int weight,
- bool underlined,
- const wxString& faceName,
- wxFontEncoding encoding);
-
- // font characterstics
- int m_fontId;
- int m_pointSize;
- int m_family;
- int m_style;
- int m_weight;
- bool m_underlined;
- wxString m_faceName;
- wxFontEncoding m_encoding;
- bool m_noAA; // No anti-aliasing
-
-public:
- short m_macFontNum;
- short m_macFontSize;
- unsigned char m_macFontStyle;
- wxUint32 m_macATSUFontID;
-public:
- void MacFindFont() ;
-};
// ----------------------------------------------------------------------------
// wxFont
// ----------------------------------------------------------------------------
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(int family);
virtual bool GetUnderlined() const;
virtual wxFontEncoding GetEncoding() const;
virtual bool IsFixedWidth() const;
+ virtual const wxNativeFontInfo *GetNativeFontInfo() const;
virtual void SetPointSize(int pointSize);
virtual void SetFamily(int family);
virtual bool GetUnderlined() const;
virtual wxString GetFaceName() const;
virtual wxFontEncoding GetEncoding() const;
- virtual wxNativeFontInfo *GetNativeFontInfo() const;
+ virtual const wxNativeFontInfo *GetNativeFontInfo() const;
virtual void SetPointSize(int pointSize);
virtual void SetFamily(int family);
virtual bool GetUnderlined() const;
virtual wxString GetFaceName() const;
virtual wxFontEncoding GetEncoding() const;
- virtual wxNativeFontInfo* GetNativeFontInfo() const;
+ virtual const wxNativeFontInfo *GetNativeFontInfo() const;
virtual void SetPointSize(int pointSize);
virtual void SetFamily(int family);
virtual bool GetUnderlined(void) const;
virtual wxString GetFaceName(void) const;
virtual wxFontEncoding GetEncoding(void) const;
- virtual wxNativeFontInfo* GetNativeFontInfo() const;
+ virtual const wxNativeFontInfo* GetNativeFontInfo() const;
virtual void SetPointSize(int nPointSize);
virtual void SetFamily(int nFamily);
virtual bool GetUnderlined() const;
virtual wxString GetFaceName() const;
virtual wxFontEncoding GetEncoding() const;
- virtual wxNativeFontInfo *GetNativeFontInfo() const;
+ virtual const wxNativeFontInfo *GetNativeFontInfo() const;
virtual bool IsFixedWidth() const;
return 0;
}
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+{
+ return NULL;
+}
+
void wxGetNativeFontEncoding(wxFontEncoding, wxNativeEncodingInfo*);
bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName, wxFontEncoding encoding)
return GetFamily() == wxFONTFAMILY_TELETYPE;
}
-wxNativeFontInfo *wxFontBase::GetNativeFontInfo() const
-{
-#ifdef wxNO_NATIVE_FONTINFO
- wxNativeFontInfo *fontInfo = new wxNativeFontInfo();
-
- fontInfo->SetPointSize(GetPointSize());
- fontInfo->SetFamily((wxFontFamily)GetFamily());
- fontInfo->SetStyle((wxFontStyle)GetStyle());
- fontInfo->SetWeight((wxFontWeight)GetWeight());
- fontInfo->SetUnderlined(GetUnderlined());
- fontInfo->SetFaceName(GetFaceName());
- fontInfo->SetEncoding(GetEncoding());
-
- return fontInfo;
-#else
- return (wxNativeFontInfo *)NULL;
-#endif
-}
-
void wxFontBase::DoSetNativeFontInfo(const wxNativeFontInfo& info)
{
#ifdef wxNO_NATIVE_FONTINFO
wxString wxFontBase::GetNativeFontInfoDesc() const
{
wxString fontDesc;
- wxNativeFontInfo *fontInfo = GetNativeFontInfo();
+ const wxNativeFontInfo *fontInfo = GetNativeFontInfo();
if ( fontInfo )
{
fontDesc = fontInfo->ToString();
- delete fontInfo;
}
return fontDesc;
wxString wxFontBase::GetNativeFontInfoUserDesc() const
{
wxString fontDesc;
- wxNativeFontInfo *fontInfo = GetNativeFontInfo();
+ const wxNativeFontInfo *fontInfo = GetNativeFontInfo();
if ( fontInfo )
{
fontDesc = fontInfo->ToUserString();
- delete fontInfo;
}
return fontDesc;
void wxNativeFontInfo::Init()
{
- pointSize = wxNORMAL_FONT->GetPointSize();
+ pointSize = 0;
family = wxFONTFAMILY_DEFAULT;
style = wxFONTSTYLE_NORMAL;
weight = wxFONTWEIGHT_NORMAL;
return M_FONTDATA->m_noAA;
}
-wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
GetInternalFont();
#endif
- return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
+ return &(M_FONTDATA->m_nativeFontInfo);
}
bool wxFont::IsFixedWidth() const
return M_FONTDATA->m_noAA;
}
-wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
GetInternalFont();
#endif
- return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
+ return &(M_FONTDATA->m_nativeFontInfo);
}
bool wxFont::IsFixedWidth() const
// Created: 1998-01-01
// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject)
#endif
+class WXDLLEXPORT wxFontRefData: public wxGDIRefData
+{
+ friend class WXDLLEXPORT wxFont;
+public:
+ wxFontRefData()
+ : m_fontId(0)
+ , m_pointSize(10)
+ , m_family(wxDEFAULT)
+ , m_style(wxNORMAL)
+ , m_weight(wxNORMAL)
+ , m_underlined(FALSE)
+ , m_faceName(wxT("Geneva"))
+ , m_encoding(wxFONTENCODING_DEFAULT)
+ , m_macFontNum(0)
+ , m_macFontSize(0)
+ , m_macFontStyle(0)
+ , m_macATSUFontID()
+ {
+ Init(10, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE,
+ wxT("Geneva"), wxFONTENCODING_DEFAULT);
+ }
+
+ wxFontRefData(const wxFontRefData& data)
+ : wxGDIRefData()
+ , m_fontId(data.m_fontId)
+ , m_pointSize(data.m_pointSize)
+ , m_family(data.m_family)
+ , m_style(data.m_style)
+ , m_weight(data.m_weight)
+ , m_underlined(data.m_underlined)
+ , m_faceName(data.m_faceName)
+ , m_encoding(data.m_encoding)
+ , m_macFontNum(data.m_macFontNum)
+ , m_macFontSize(data.m_macFontSize)
+ , m_macFontStyle(data.m_macFontStyle)
+ , m_macATSUFontID(data.m_macATSUFontID)
+ {
+ Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
+ data.m_underlined, data.m_faceName, data.m_encoding);
+ }
+
+ wxFontRefData(int size,
+ int family,
+ int style,
+ int weight,
+ bool underlined,
+ const wxString& faceName,
+ wxFontEncoding encoding)
+ : m_fontId(0)
+ , m_pointSize(size)
+ , m_family(family)
+ , m_style(style)
+ , m_weight(weight)
+ , m_underlined(underlined)
+ , m_faceName(faceName)
+ , m_encoding(encoding)
+ , m_macFontNum(0)
+ , m_macFontSize(0)
+ , m_macFontStyle(0)
+ , m_macATSUFontID(0)
+ {
+ Init(size, family, style, weight, underlined, faceName, encoding);
+ }
+
+ virtual ~wxFontRefData();
+ void SetNoAntiAliasing( bool no = TRUE ) { m_noAA = no; }
+ bool GetNoAntiAliasing() { return m_noAA; }
+
+protected:
+ // common part of all ctors
+ void Init(int size,
+ int family,
+ int style,
+ int weight,
+ bool underlined,
+ const wxString& faceName,
+ wxFontEncoding encoding);
+
+ // font characterstics
+ int m_fontId;
+ int m_pointSize;
+ int m_family;
+ int m_style;
+ int m_weight;
+ bool m_underlined;
+ wxString m_faceName;
+ wxFontEncoding m_encoding;
+ bool m_noAA; // No anti-aliasing
+
+public:
+ short m_macFontNum;
+ short m_macFontSize;
+ unsigned char m_macFontStyle;
+ wxUint32 m_macATSUFontID;
+
+ wxNativeFontInfo m_info;
+
+public:
+ void MacFindFont() ;
+};
// ============================================================================
// implementation
// ============================================================================
return M_FONTDATA->m_noAA;
}
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+{
+ wxCHECK_MSG( Ok(), NULL, wxT("invalid font") );
+
+ M_FONTDATA->m_info.InitFromFont(*this);
+
+ return &(M_FONTDATA->m_info);
+}
+
// Created: 1998-01-01
// RCS-ID: $Id$
// Copyright: (c) Stefan Csomor
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject)
#endif
+class WXDLLEXPORT wxFontRefData: public wxGDIRefData
+{
+ friend class WXDLLEXPORT wxFont;
+public:
+ wxFontRefData()
+ : m_fontId(0)
+ , m_pointSize(10)
+ , m_family(wxDEFAULT)
+ , m_style(wxNORMAL)
+ , m_weight(wxNORMAL)
+ , m_underlined(FALSE)
+ , m_faceName(wxT("Geneva"))
+ , m_encoding(wxFONTENCODING_DEFAULT)
+ , m_macFontNum(0)
+ , m_macFontSize(0)
+ , m_macFontStyle(0)
+ , m_macATSUFontID()
+ {
+ Init(10, wxDEFAULT, wxNORMAL, wxNORMAL, FALSE,
+ wxT("Geneva"), wxFONTENCODING_DEFAULT);
+ }
+
+ wxFontRefData(const wxFontRefData& data)
+ : wxGDIRefData()
+ , m_fontId(data.m_fontId)
+ , m_pointSize(data.m_pointSize)
+ , m_family(data.m_family)
+ , m_style(data.m_style)
+ , m_weight(data.m_weight)
+ , m_underlined(data.m_underlined)
+ , m_faceName(data.m_faceName)
+ , m_encoding(data.m_encoding)
+ , m_macFontNum(data.m_macFontNum)
+ , m_macFontSize(data.m_macFontSize)
+ , m_macFontStyle(data.m_macFontStyle)
+ , m_macATSUFontID(data.m_macATSUFontID)
+ {
+ Init(data.m_pointSize, data.m_family, data.m_style, data.m_weight,
+ data.m_underlined, data.m_faceName, data.m_encoding);
+ }
+
+ wxFontRefData(int size,
+ int family,
+ int style,
+ int weight,
+ bool underlined,
+ const wxString& faceName,
+ wxFontEncoding encoding)
+ : m_fontId(0)
+ , m_pointSize(size)
+ , m_family(family)
+ , m_style(style)
+ , m_weight(weight)
+ , m_underlined(underlined)
+ , m_faceName(faceName)
+ , m_encoding(encoding)
+ , m_macFontNum(0)
+ , m_macFontSize(0)
+ , m_macFontStyle(0)
+ , m_macATSUFontID(0)
+ {
+ Init(size, family, style, weight, underlined, faceName, encoding);
+ }
+
+ virtual ~wxFontRefData();
+ void SetNoAntiAliasing( bool no = TRUE ) { m_noAA = no; }
+ bool GetNoAntiAliasing() { return m_noAA; }
+
+protected:
+ // common part of all ctors
+ void Init(int size,
+ int family,
+ int style,
+ int weight,
+ bool underlined,
+ const wxString& faceName,
+ wxFontEncoding encoding);
+
+ // font characterstics
+ int m_fontId;
+ int m_pointSize;
+ int m_family;
+ int m_style;
+ int m_weight;
+ bool m_underlined;
+ wxString m_faceName;
+ wxFontEncoding m_encoding;
+ bool m_noAA; // No anti-aliasing
+
+public:
+ short m_macFontNum;
+ short m_macFontSize;
+ unsigned char m_macFontStyle;
+ wxUint32 m_macATSUFontID;
+
+ wxNativeFontInfo m_info;
+
+public:
+ void MacFindFont() ;
+};
// ============================================================================
// implementation
// ============================================================================
return M_FONTDATA->m_noAA;
}
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+{
+ wxCHECK_MSG( Ok(), NULL, wxT("invalid font") );
+
+ M_FONTDATA->m_info.InitFromFont(*this);
+
+ return &(M_FONTDATA->m_info);
+}
+
wxMGLFontLibrary *m_library;
bool m_valid;
+ wxNativeFontInfo m_info;
+
friend class wxFont;
};
return (bool)(M_FONTDATA->m_library->GetFamily()->GetInfo()->isFixed);
}
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+{
+ wxCHECK_MSG( Ok(), NULL, wxT("invalid font") );
+
+ M_FONTDATA->m_info.InitFromFont(*this);
+
+ return &(M_FONTDATA->m_info);
+}
// ----------------------------------------------------------------------------
// change font attributes
return M_FONTDATA->m_encoding;
}
-wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
if(M_FONTDATA->m_nativeFontInfo.GetXFontName().IsEmpty())
GetInternalFont();
- return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
+ return &(M_FONTDATA->m_nativeFontInfo);
}
// ----------------------------------------------------------------------------
return M_FONTDATA->GetEncoding();
}
-wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
- if ( M_FONTDATA->HasNativeFontInfo() )
- return new wxNativeFontInfo(M_FONTDATA->GetNativeFontInfo());
-
- return 0;
+ return M_FONTDATA->HasNativeFontInfo() ? &(M_FONTDATA->GetNativeFontInfo())
+ : NULL;
}
bool wxFont::IsFixedWidth() const
void wxFillLogFont(LOGFONT *logFont, const wxFont *font)
{
+ wxNativeFontInfo fi;
+
// maybe we already have LOGFONT for this font?
- wxNativeFontInfo *fontinfo = font->GetNativeFontInfo();
- if ( !fontinfo )
+ const wxNativeFontInfo *pFI = font->GetNativeFontInfo();
+ if ( !pFI )
{
// use wxNativeFontInfo methods to build a LOGFONT for this font
- fontinfo = new wxNativeFontInfo;
-
- // translate all font parameters
- fontinfo->SetStyle((wxFontStyle)font->GetStyle());
- fontinfo->SetWeight((wxFontWeight)font->GetWeight());
- fontinfo->SetUnderlined(font->GetUnderlined());
- fontinfo->SetPointSize(font->GetPointSize());
-
- // set the family/facename
- fontinfo->SetFamily((wxFontFamily)font->GetFamily());
- wxString facename = font->GetFaceName();
- if ( !facename.empty() )
- {
- fontinfo->SetFaceName(facename);
- }
+ fi.InitFromFont(*font);
- // deal with encoding now (it may override the font family and facename
- // so do it after setting them)
- fontinfo->SetEncoding(font->GetEncoding());
+ pFI = &fi;
}
// transfer all the data to LOGFONT
- *logFont = fontinfo->lf;
-
- delete fontinfo;
+ *logFont = pFI->lf;
}
wxFont wxCreateFontFromLogFont(const LOGFONT *logFont)
return M_FONTDATA->GetEncoding();
} // end of wxFont::GetEncoding
-wxNativeFontInfo* wxFont::GetNativeFontInfo() const
+const wxNativeFontInfo* wxFont::GetNativeFontInfo() const
{
- if (M_FONTDATA->HasNativeFontInfo())
- return new wxNativeFontInfo(M_FONTDATA->GetNativeFontInfo());
- return 0;
+ return M_FONTDATA->HasNativeFontInfo() ? &(M_FONTDATA->GetNativeFontInfo())
+ : NULL;
} // end of wxFont::GetNativeFontInfo
//
return M_FONTDATA->m_noAA;
}
-wxNativeFontInfo *wxFont::GetNativeFontInfo() const
+const wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") );
GetInternalFont();
#endif
- return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
+ return &(M_FONTDATA->m_nativeFontInfo);
}
bool wxFont::IsFixedWidth() const