X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e9576ca53db96b462ed4c0b4bdf47d64c40203e4..617ec45690c340d059726a09ccfe4bab9a42d82e:/src/mac/carbon/font.cpp diff --git a/src/mac/carbon/font.cpp b/src/mac/carbon/font.cpp index 493a6a25ba..a5df9049a2 100644 --- a/src/mac/carbon/font.cpp +++ b/src/mac/carbon/font.cpp @@ -18,68 +18,117 @@ #include "wx/font.h" #include "wx/gdicmn.h" -#if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) -#endif -wxFontRefData::wxFontRefData() -{ - m_style = 0; - m_pointSize = 0; - m_family = 0; - m_style = 0; - m_weight = 0; - m_underlined = 0; - m_faceName = ""; -/* TODO - m_hFont = 0; -*/ -} -wxFontRefData::wxFontRefData(const wxFontRefData& data) + + +// ============================================================================ +// implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// wxFontRefData +// ---------------------------------------------------------------------------- + +void wxFontRefData::Init(int pointSize, + int family, + int style, + int weight, + bool underlined, + const wxString& faceName, + wxFontEncoding encoding) { - m_style = data.m_style; - 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; -/* TODO - m_hFont = 0; -*/ + m_style = style; + m_pointSize = pointSize; + 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_fontId = 0; } wxFontRefData::~wxFontRefData() { - // TODO: delete font data } -wxFont::wxFont() +void wxFontRefData::MacFindFont() { - if ( wxTheFontList ) - wxTheFontList->Append(this); + if( m_faceName == "" ) + { + switch( m_family ) + { + case wxDEFAULT : + m_macFontNum = ::GetAppFont() ; + break ; + case wxDECORATIVE : + ::GetFNum( "\pTimes" , &m_macFontNum) ; + break ; + case wxROMAN : + ::GetFNum( "\pTimes" , &m_macFontNum) ; + break ; + case wxSCRIPT : + ::GetFNum( "\pTimes" , &m_macFontNum) ; + break ; + case wxSWISS : + ::GetFNum( "\pHelvetica" , &m_macFontNum) ; + break ; + case wxMODERN : + ::GetFNum( "\pMonaco" , &m_macFontNum) ; + break ; + } + } + else + { + if ( m_faceName == "systemfont" ) + m_macFontNum = ::GetSysFont() ; + else if ( m_faceName == "applicationfont" ) + m_macFontNum = ::GetAppFont() ; + else + { + strcpy(wxBuffer, m_faceName); + C2PStr(wxBuffer); + ::GetFNum( (unsigned char*) wxBuffer, &m_macFontNum); + } + } + + m_macFontStyle = 0; + if (m_weight == wxBOLD) + m_macFontStyle |= bold; + if (m_style == wxITALIC || m_style == wxSLANT) + m_macFontStyle |= italic; + if (m_underlined) + m_macFontStyle |= underline; + m_macFontSize = m_pointSize ; } -wxFont::wxFont(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) -{ - Create(pointSize, family, style, weight, underlined, faceName); +// ---------------------------------------------------------------------------- +// wxFont +// ---------------------------------------------------------------------------- +void wxFont::Init() +{ if ( wxTheFontList ) wxTheFontList->Append(this); } -bool wxFont::Create(int pointSize, int family, int style, int weight, bool underlined, const wxString& faceName) +bool wxFont::Create(int pointSize, + int family, + int style, + int weight, + bool underlined, + const wxString& faceName, + wxFontEncoding encoding) { UnRef(); - m_refData = new wxFontRefData; - - M_FONTDATA->m_family = family; - M_FONTDATA->m_style = style; - M_FONTDATA->m_weight = weight; - M_FONTDATA->m_pointSize = pointSize; - M_FONTDATA->m_underlined = underlined; - M_FONTDATA->m_faceName = faceName; + m_refData = new wxFontRefData(pointSize, family, style, weight, + underlined, faceName, encoding); RealizeResource(); @@ -94,8 +143,17 @@ wxFont::~wxFont() bool wxFont::RealizeResource() { - // TODO: create the font (if there is a native font object) - return FALSE; + M_FONTDATA->MacFindFont() ; + return TRUE; +} + +void wxFont::SetEncoding(wxFontEncoding encoding) +{ + Unshare(); + + M_FONTDATA->m_encoding = encoding; + + RealizeResource(); } void wxFont::Unshare() @@ -167,78 +225,45 @@ void wxFont::SetUnderlined(bool underlined) RealizeResource(); } -wxString wxFont::GetFamilyString() const -{ - wxString fam(""); - switch (GetFamily()) - { - case wxDECORATIVE: - fam = "wxDECORATIVE"; - break; - case wxROMAN: - fam = "wxROMAN"; - break; - case wxSCRIPT: - fam = "wxSCRIPT"; - break; - case wxSWISS: - fam = "wxSWISS"; - break; - case wxMODERN: - fam = "wxMODERN"; - break; - case wxTELETYPE: - fam = "wxTELETYPE"; - break; - default: - fam = "wxDEFAULT"; - break; - } - return fam; -} - -/* New font system */ +// ---------------------------------------------------------------------------- +// accessors +// ---------------------------------------------------------------------------- + +int wxFont::GetPointSize() const +{ + return M_FONTDATA->m_pointSize; +} + +int wxFont::GetFamily() const +{ + return M_FONTDATA->m_family; +} + +int wxFont::GetStyle() const +{ + return M_FONTDATA->m_style; +} + +int wxFont::GetWeight() const +{ + return M_FONTDATA->m_weight; +} + +bool wxFont::GetUnderlined() const +{ + return M_FONTDATA->m_underlined; +} + wxString wxFont::GetFaceName() const { - wxString str(""); - if (M_FONTDATA) - str = M_FONTDATA->m_faceName ; + wxString str; + if ( M_FONTDATA ) + str = M_FONTDATA->m_faceName ; return str; } -wxString wxFont::GetStyleString() const +wxFontEncoding wxFont::GetEncoding() const { - wxString styl(""); - switch (GetStyle()) - { - case wxITALIC: - styl = "wxITALIC"; - break; - case wxSLANT: - styl = "wxSLANT"; - break; - default: - styl = "wxNORMAL"; - break; - } - return styl; -} - -wxString wxFont::GetWeightString() const -{ - wxString w(""); - switch (GetWeight()) - { - case wxBOLD: - w = "wxBOLD"; - break; - case wxLIGHT: - w = "wxLIGHT"; - break; - default: - w = "wxNORMAL"; - break; - } - return w; + return M_FONTDATA->m_encoding; }