X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/209ce629ac70e21ba2239c36a9c2ad7571964ce2..ae1cdb2d075b89badb7e429cde5f331ccbff2aef:/src/common/fontmgrcmn.cpp diff --git a/src/common/fontmgrcmn.cpp b/src/common/fontmgrcmn.cpp index ee2fe4915a..9dd64f859a 100644 --- a/src/common/fontmgrcmn.cpp +++ b/src/common/fontmgrcmn.cpp @@ -3,7 +3,6 @@ // Purpose: font management for ports that don't have their own // Author: Vaclav Slavik // Created: 2006-11-18 -// RCS-ID: $Id$ // Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com) // (c) 2006 REA Elektronik GmbH // Licence: wxWindows licence @@ -24,9 +23,15 @@ WX_DECLARE_LIST(wxFontInstance, wxFontInstanceList); WX_DEFINE_LIST(wxFontInstanceList) WX_DEFINE_LIST(wxFontBundleList) + WX_DECLARE_HASH_MAP(wxString, wxFontBundle*, wxStringHash, wxStringEqual, - wxFontBundleHash); + wxFontBundleHashBase); +// in STL build, hash class is typedef to a template, so it can't be forward +// declared, as we do; solve it by having a dummy class: +class wxFontBundleHash : public wxFontBundleHashBase +{ +}; // ============================================================================ // implementation @@ -63,19 +68,16 @@ void wxFontFaceBase::Release() wxFontInstance *wxFontFaceBase::GetFontInstance(float ptSize, bool aa) { - wxASSERT_MSG( m_refCnt > 0, _T("font library not loaded!") ); - - wxFontInstance *i; - wxFontInstanceList::Node *node; + wxASSERT_MSG( m_refCnt > 0, wxT("font library not loaded!") ); - for ( node = m_instances->GetFirst(); node; node = node->GetNext() ) + for ( wxFontInstanceList::const_iterator i = m_instances->begin(); + i != m_instances->end(); ++i ) { - i = node->GetData(); - if ( i->GetPointSize() == ptSize && i->IsAntiAliased() == aa ) - return i; + if ( (*i)->GetPointSize() == ptSize && (*i)->IsAntiAliased() == aa ) + return *i; } - i = CreateFontInstance(ptSize, aa); + wxFontInstance *i = CreateFontInstance(ptSize, aa); m_instances->Append(i); return i; } @@ -100,7 +102,7 @@ wxFontFace *wxFontBundleBase::GetFace(FaceType type) const { wxFontFace *f = m_faces[type]; - wxCHECK_MSG( f, NULL, _T("no such face in font bundle") ); + wxCHECK_MSG( f, NULL, wxT("no such face in font bundle") ); f->Acquire(); @@ -112,7 +114,7 @@ wxFontBundleBase::GetFaceForFont(const wxFontMgrFontRefData& font) const { wxASSERT_MSG( font.GetFaceName().empty() || GetName().CmpNoCase(font.GetFaceName()) == 0, - _T("calling GetFaceForFont for incompatible font") ); + wxT("calling GetFaceForFont for incompatible font") ); int type = FaceType_Regular; @@ -120,8 +122,8 @@ wxFontBundleBase::GetFaceForFont(const wxFontMgrFontRefData& font) const type |= FaceType_Bold; // FIXME -- this should read "if ( font->GetStyle() == wxITALIC )", - // but since MGL neither DFB supports slant, we try to display it with - // italic face (better than nothing...) + // but since DFB doesn't support slant, we try to display it with italic + // face (better than nothing...) if ( font.GetStyle() == wxITALIC || font.GetStyle() == wxSLANT ) { if ( HasFace((FaceType)(type | FaceType_Italic)) ) @@ -138,7 +140,7 @@ wxFontBundleBase::GetFaceForFont(const wxFontMgrFontRefData& font) const return GetFace((FaceType)i); } - wxFAIL_MSG( _T("no face") ); + wxFAIL_MSG( wxT("no face") ); return NULL; } @@ -222,19 +224,15 @@ void wxFontsManagerBase::AddBundle(wxFontBundle *bundle) // ---------------------------------------------------------------------------- wxFontMgrFontRefData::wxFontMgrFontRefData(int size, - int family, - int style, - int weight, + wxFontFamily family, + wxFontStyle style, + wxFontWeight weight, bool underlined, const wxString& faceName, wxFontEncoding encoding) { - if ( family == wxDEFAULT ) - family = wxSWISS; - if ( style == wxDEFAULT ) - style = wxNORMAL; - if ( weight == wxDEFAULT ) - weight = wxNORMAL; + if ( family == wxFONTFAMILY_DEFAULT ) + family = wxFONTFAMILY_SWISS; if ( size == wxDEFAULT ) size = 12; @@ -246,8 +244,6 @@ wxFontMgrFontRefData::wxFontMgrFontRefData(int size, m_info.underlined = underlined; m_info.encoding = encoding; - m_noAA = false; - m_fontFace = NULL; m_fontBundle = NULL; m_fontValid = false; @@ -256,7 +252,6 @@ wxFontMgrFontRefData::wxFontMgrFontRefData(int size, wxFontMgrFontRefData::wxFontMgrFontRefData(const wxFontMgrFontRefData& data) { m_info = data.m_info; - m_noAA = data.m_noAA; m_fontFace = data.m_fontFace; m_fontBundle = data.m_fontBundle; @@ -282,7 +277,7 @@ wxFontMgrFontRefData::GetFontInstance(float scale, bool antialiased) const { wxConstCast(this, wxFontMgrFontRefData)->EnsureValidFont(); return m_fontFace->GetFontInstance(m_info.pointSize * scale, - antialiased && !m_noAA); + antialiased); } void wxFontMgrFontRefData::SetPointSize(int pointSize) @@ -291,21 +286,21 @@ void wxFontMgrFontRefData::SetPointSize(int pointSize) m_fontValid = false; } -void wxFontMgrFontRefData::SetFamily(int family) +void wxFontMgrFontRefData::SetFamily(wxFontFamily family) { - m_info.family = (wxFontFamily)family; + m_info.family = family; m_fontValid = false; } -void wxFontMgrFontRefData::SetStyle(int style) +void wxFontMgrFontRefData::SetStyle(wxFontStyle style) { - m_info.style = (wxFontStyle)style; + m_info.style = style; m_fontValid = false; } -void wxFontMgrFontRefData::SetWeight(int weight) +void wxFontMgrFontRefData::SetWeight(wxFontWeight weight) { - m_info.weight = (wxFontWeight)weight; + m_info.weight = weight; m_fontValid = false; } @@ -327,12 +322,6 @@ void wxFontMgrFontRefData::SetEncoding(wxFontEncoding encoding) m_fontValid = false; } -void wxFontMgrFontRefData::SetNoAntiAliasing(bool no) -{ - m_noAA = no; -} - - void wxFontMgrFontRefData::EnsureValidFont() { if ( !m_fontValid )