From: Vadim Zeitlin Date: Wed, 12 Feb 2003 15:42:27 +0000 (+0000) Subject: added DoSetNativeFontInfo() to avoid virtual function hiding X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/9045ad9dfc9d205ad645e6d496bec9ccddd91ced?ds=inline added DoSetNativeFontInfo() to avoid virtual function hiding git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/font.h b/include/wx/font.h index 68799b2c5b..44758313e0 100644 --- a/include/wx/font.h +++ b/include/wx/font.h @@ -171,7 +171,8 @@ public: virtual void SetFaceName( const wxString& faceName ) = 0; virtual void SetUnderlined( bool underlined ) = 0; virtual void SetEncoding(wxFontEncoding encoding) = 0; - virtual void SetNativeFontInfo(const wxNativeFontInfo& info); + void SetNativeFontInfo(const wxNativeFontInfo& info) + { DoSetNativeFontInfo(info); } void SetNativeFontInfo(const wxString& info); void SetNativeFontInfoUserDesc(const wxString& info); @@ -195,7 +196,10 @@ protected: // get the internal data wxFontRefData *GetFontData() const { return (wxFontRefData *)m_refData; } - + + // the function called by both overloads of SetNativeFontInfo() + virtual void DoSetNativeFontInfo(const wxNativeFontInfo& info); + private: // the currently default encoding: by default, it's the default system // encoding, but may be changed by the application using diff --git a/include/wx/gtk/font.h b/include/wx/gtk/font.h index d66fbe1c1c..04f48613d8 100644 --- a/include/wx/gtk/font.h +++ b/include/wx/gtk/font.h @@ -94,11 +94,10 @@ public: virtual void SetFaceName( const wxString& faceName ); virtual void SetUnderlined( bool underlined ); virtual void SetEncoding(wxFontEncoding encoding); - virtual void SetNativeFontInfo( const wxNativeFontInfo& info ); virtual void SetNoAntiAliasing( bool no = TRUE ); virtual bool GetNoAntiAliasing(); - + // implementation from now on void Unshare(); @@ -109,6 +108,8 @@ public: // no data :-) protected: + virtual void DoSetNativeFontInfo( const wxNativeFontInfo& info ); + // common part of all ctors void Init(); diff --git a/include/wx/gtk1/font.h b/include/wx/gtk1/font.h index d66fbe1c1c..04f48613d8 100644 --- a/include/wx/gtk1/font.h +++ b/include/wx/gtk1/font.h @@ -94,11 +94,10 @@ public: virtual void SetFaceName( const wxString& faceName ); virtual void SetUnderlined( bool underlined ); virtual void SetEncoding(wxFontEncoding encoding); - virtual void SetNativeFontInfo( const wxNativeFontInfo& info ); virtual void SetNoAntiAliasing( bool no = TRUE ); virtual bool GetNoAntiAliasing(); - + // implementation from now on void Unshare(); @@ -109,6 +108,8 @@ public: // no data :-) protected: + virtual void DoSetNativeFontInfo( const wxNativeFontInfo& info ); + // common part of all ctors void Init(); diff --git a/include/wx/motif/font.h b/include/wx/motif/font.h index f75bf6c423..04bf7c63cb 100644 --- a/include/wx/motif/font.h +++ b/include/wx/motif/font.h @@ -25,7 +25,7 @@ public: // ctors and such wxFont() { Init(); } wxFont(const wxFont& font) { Init(); Ref(font); } - + wxFont(int size, int family, int style, @@ -35,12 +35,12 @@ public: wxFontEncoding encoding = wxFONTENCODING_DEFAULT) { Init(); - + (void)Create(size, family, style, weight, underlined, face, encoding); } - + wxFont(const wxNativeFontInfo& info); - + bool Create(int size, int family, int style, @@ -48,17 +48,17 @@ public: 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(); - + // assignment wxFont& operator=(const wxFont& font); - + // implement base class pure virtuals virtual int GetPointSize() const; virtual int GetFamily() const; @@ -68,7 +68,7 @@ public: virtual wxString GetFaceName() const; virtual wxFontEncoding GetEncoding() const; virtual wxNativeFontInfo *GetNativeFontInfo() const; - + virtual void SetPointSize(int pointSize); virtual void SetFamily(int family); virtual void SetStyle(int style); @@ -76,39 +76,40 @@ public: virtual void SetFaceName(const wxString& faceName); virtual void SetUnderlined(bool underlined); virtual void SetEncoding(wxFontEncoding encoding); - virtual void SetNativeFontInfo( const wxNativeFontInfo& info ); - + // 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. WXFontStructPtr GetFontStruct(double scale = 1.0, WXDisplay* display = NULL) const; WXFontList GetFontList(double scale = 1.0, WXDisplay* display = NULL) const; - + protected: + virtual void DoSetNativeFontInfo( const wxNativeFontInfo& info ); + // common part of all ctors void Init(); - + // VZ: IMHO, we don't need it at all... bool RealizeResource() { return TRUE; } void Unshare(); - + private: DECLARE_DYNAMIC_CLASS(wxFont) }; diff --git a/include/wx/msw/font.h b/include/wx/msw/font.h index 505e9970b9..b1d31e2fb1 100644 --- a/include/wx/msw/font.h +++ b/include/wx/msw/font.h @@ -81,7 +81,6 @@ public: virtual void SetFaceName(const wxString& faceName); virtual void SetUnderlined(bool underlined); virtual void SetEncoding(wxFontEncoding encoding); - virtual void SetNativeFontInfo(const wxNativeFontInfo& info); virtual bool IsFixedWidth() const; @@ -102,6 +101,8 @@ public: */ protected: + virtual void DoSetNativeFontInfo(const wxNativeFontInfo& info); + // common part of all ctors void Init(); diff --git a/include/wx/os2/font.h b/include/wx/os2/font.h index a306601251..53dcf28490 100644 --- a/include/wx/os2/font.h +++ b/include/wx/os2/font.h @@ -102,7 +102,6 @@ public: virtual void SetFaceName(const wxString& rsFaceName); virtual void SetUnderlined(bool bUnderlined); virtual void SetEncoding(wxFontEncoding vEncoding); - virtual void SetNativeFontInfo(const wxNativeFontInfo& rInfo); // // For internal use only! @@ -121,7 +120,10 @@ public: virtual bool FreeResource(bool bForce = FALSE); WXHFONT GetHFONT(void) const; + protected: + virtual void DoSetNativeFontInfo(const wxNativeFontInfo& rInfo); + // // Common part of all ctors // diff --git a/include/wx/x11/font.h b/include/wx/x11/font.h index 83bf79c412..a0850cd38f 100644 --- a/include/wx/x11/font.h +++ b/include/wx/x11/font.h @@ -25,7 +25,7 @@ public: // ctors and such wxFont() { Init(); } wxFont(const wxFont& font) { Init(); Ref(font); } - + wxFont(int size, int family, int style, @@ -35,12 +35,12 @@ public: wxFontEncoding encoding = wxFONTENCODING_DEFAULT) { Init(); - + (void)Create(size, family, style, weight, underlined, face, encoding); } - + wxFont(const wxNativeFontInfo& info); - + bool Create(int size, int family, int style, @@ -51,18 +51,18 @@ public: // FIXME: I added the ! to make it compile; // is this right? - JACS -#if !wxUSE_UNICODE +#if !wxUSE_UNICODE bool Create(const wxString& fontname, wxFontEncoding fontenc = wxFONTENCODING_DEFAULT); #endif // DELETEME: no longer seems to be implemented. // bool Create(const wxNativeFontInfo& fontinfo); - + virtual ~wxFont(); - + // assignment wxFont& operator=(const wxFont& font); - + // implement base class pure virtuals virtual int GetPointSize() const; virtual int GetFamily() const; @@ -72,9 +72,9 @@ public: virtual wxString GetFaceName() const; virtual wxFontEncoding GetEncoding() const; virtual wxNativeFontInfo *GetNativeFontInfo() const; - + virtual bool IsFixedWidth() const; - + virtual void SetPointSize(int pointSize); virtual void SetFamily(int family); virtual void SetStyle(int style); @@ -82,11 +82,10 @@ public: virtual void SetFaceName(const wxString& faceName); virtual void SetUnderlined(bool underlined); virtual void SetEncoding(wxFontEncoding encoding); - virtual void SetNativeFontInfo( const wxNativeFontInfo& info ); - + virtual void SetNoAntiAliasing( bool no = TRUE ); virtual bool GetNoAntiAliasing(); - + // Implementation #if wxUSE_PANGO @@ -94,29 +93,31 @@ public: // 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; - + // Helper function for convenient access of the above. WXFontStructPtr GetFontStruct(double scale = 1.0, WXDisplay* display = NULL) const; #endif - + protected: + virtual void DoSetNativeFontInfo( const wxNativeFontInfo& info ); + // common part of all ctors void Init(); - + void Unshare(); - + private: DECLARE_DYNAMIC_CLASS(wxFont) }; diff --git a/src/common/fontcmn.cpp b/src/common/fontcmn.cpp index 467b747658..d173a4dfdc 100644 --- a/src/common/fontcmn.cpp +++ b/src/common/fontcmn.cpp @@ -144,7 +144,7 @@ wxNativeFontInfo *wxFontBase::GetNativeFontInfo() const #endif } -void wxFontBase::SetNativeFontInfo(const wxNativeFontInfo& info) +void wxFontBase::DoSetNativeFontInfo(const wxNativeFontInfo& info) { #ifdef wxNO_NATIVE_FONTINFO SetPointSize(info.pointSize); diff --git a/src/gtk/font.cpp b/src/gtk/font.cpp index 0ad6019e38..8735f843f7 100644 --- a/src/gtk/font.cpp +++ b/src/gtk/font.cpp @@ -856,7 +856,7 @@ void wxFont::SetEncoding(wxFontEncoding encoding) M_FONTDATA->SetEncoding(encoding); } -void wxFont::SetNativeFontInfo( const wxNativeFontInfo& info ) +void wxFont::DoSetNativeFontInfo( const wxNativeFontInfo& info ) { Unshare(); diff --git a/src/gtk1/font.cpp b/src/gtk1/font.cpp index 0ad6019e38..8735f843f7 100644 --- a/src/gtk1/font.cpp +++ b/src/gtk1/font.cpp @@ -856,7 +856,7 @@ void wxFont::SetEncoding(wxFontEncoding encoding) M_FONTDATA->SetEncoding(encoding); } -void wxFont::SetNativeFontInfo( const wxNativeFontInfo& info ) +void wxFont::DoSetNativeFontInfo( const wxNativeFontInfo& info ) { Unshare(); diff --git a/src/motif/font.cpp b/src/motif/font.cpp index c6e1b6dd2c..2b70d9dd0c 100644 --- a/src/motif/font.cpp +++ b/src/motif/font.cpp @@ -104,7 +104,7 @@ protected: wxFontEncoding m_encoding; wxNativeFontInfo m_nativeFontInfo; - + // A list of wxXFonts wxList m_fonts; }; @@ -319,7 +319,7 @@ bool wxFont::Create(const wxString& fontname, wxFontEncoding enc) else return FALSE; } - return TRUE; + return TRUE; } wxFont::~wxFont() @@ -351,7 +351,7 @@ void wxFont::SetPointSize(int pointSize) M_FONTDATA->m_pointSize = pointSize; M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - + RealizeResource(); } @@ -361,7 +361,7 @@ void wxFont::SetFamily(int family) M_FONTDATA->m_family = family; M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - + RealizeResource(); } @@ -371,7 +371,7 @@ void wxFont::SetStyle(int style) M_FONTDATA->m_style = style; M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - + RealizeResource(); } @@ -381,7 +381,7 @@ void wxFont::SetWeight(int weight) M_FONTDATA->m_weight = weight; M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - + RealizeResource(); } @@ -391,7 +391,7 @@ void wxFont::SetFaceName(const wxString& faceName) M_FONTDATA->m_faceName = faceName; M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - + RealizeResource(); } @@ -400,7 +400,7 @@ void wxFont::SetUnderlined(bool underlined) Unshare(); M_FONTDATA->m_underlined = underlined; - + RealizeResource(); } @@ -410,11 +410,11 @@ void wxFont::SetEncoding(wxFontEncoding encoding) M_FONTDATA->m_encoding = encoding; M_FONTDATA->m_nativeFontInfo.GetXFontName().Clear(); // invalid now - + RealizeResource(); } -void wxFont::SetNativeFontInfo(const wxNativeFontInfo& info) +void wxFont::DoSetNativeFontInfo(const wxNativeFontInfo& info) { Unshare(); @@ -428,7 +428,7 @@ void wxFont::SetNativeFontInfo(const wxNativeFontInfo& info) int wxFont::GetPointSize() const { wxCHECK_MSG( Ok(), 0, wxT("invalid font") ); - + return M_FONTDATA->m_pointSize; } diff --git a/src/msw/font.cpp b/src/msw/font.cpp index dc601f5af8..f29b9a4aea 100644 --- a/src/msw/font.cpp +++ b/src/msw/font.cpp @@ -839,7 +839,7 @@ void wxFont::SetEncoding(wxFontEncoding encoding) RealizeResource(); } -void wxFont::SetNativeFontInfo(const wxNativeFontInfo& info) +void wxFont::DoSetNativeFontInfo(const wxNativeFontInfo& info) { Unshare(); diff --git a/src/os2/font.cpp b/src/os2/font.cpp index 4937df9fd1..7b9f1890e6 100644 --- a/src/os2/font.cpp +++ b/src/os2/font.cpp @@ -1073,7 +1073,7 @@ void wxFont::SetEncoding( RealizeResource(); } // end of wxFont::SetEncoding -void wxFont::SetNativeFontInfo( +void wxFont::DoSetNativeFontInfo( const wxNativeFontInfo& rInfo ) { diff --git a/src/x11/font.cpp b/src/x11/font.cpp index 8cd3bba65c..0e2d09b1ff 100644 --- a/src/x11/font.cpp +++ b/src/x11/font.cpp @@ -105,10 +105,10 @@ public: // copy cstr wxFontRefData(const wxFontRefData& data); - + // from XFLD wxFontRefData(const wxString& fontname); - + // dstr virtual ~wxFontRefData(); @@ -124,10 +124,10 @@ public: void SetNoAntiAliasing( bool no = TRUE ) { m_noAA = no; } bool GetNoAntiAliasing() { return m_noAA; } - + // and this one also modifies all the other font data fields void SetNativeFontInfo(const wxNativeFontInfo& info); - + protected: // common part of all ctors void Init(int size, @@ -140,7 +140,7 @@ protected: // set all fields from (already initialized and valid) m_nativeFontInfo void InitFromNative(); - + // font attributes int m_pointSize; int m_family; @@ -152,7 +152,7 @@ protected: bool m_noAA; // No anti-aliasing wxNativeFontInfo m_nativeFontInfo; - + void ClearX11Fonts(); #if wxUSE_UNICODE @@ -190,7 +190,7 @@ void wxFontRefData::Init(int pointSize, m_underlined = underlined; m_encoding = encoding; - + #if wxUSE_UNICODE // Create native font info m_nativeFontInfo.description = pango_font_description_new(); @@ -396,7 +396,7 @@ wxFontRefData::wxFontRefData( const wxFontRefData& data ) m_encoding = data.m_encoding; m_noAA = data.m_noAA; - + m_nativeFontInfo = data.m_nativeFontInfo; } @@ -556,15 +556,15 @@ bool wxFont::Create(int pointSize, wxFontEncoding encoding) { UnRef(); - + m_refData = new wxFontRefData(pointSize, family, style, weight, underlined, faceName, encoding); return TRUE; } -#if wxUSE_UNICODE -#else +#if !wxUSE_UNICODE + bool wxFont::Create(const wxString& fontname, wxFontEncoding enc) { if( !fontname ) @@ -665,9 +665,9 @@ bool wxFont::Create(const wxString& fontname, wxFontEncoding enc) else return FALSE; } - return TRUE; + return TRUE; } -#endif +#endif // !wxUSE_UNICODE wxFont::~wxFont() { @@ -839,7 +839,7 @@ void wxFont::SetEncoding(wxFontEncoding encoding) M_FONTDATA->SetEncoding(encoding); } -void wxFont::SetNativeFontInfo( const wxNativeFontInfo& info ) +void wxFont::DoSetNativeFontInfo( const wxNativeFontInfo& info ) { Unshare();