#include "wx/utils.h"
#include "wx/app.h"
#include "wx/font.h"
+ #include "wx/log.h"
#endif // WX_PRECOMP
#include "wx/os2/private.h"
#include "wx/fontutil.h"
#include "wx/fontmap.h"
+#include "wx/encinfo.h"
#include "wx/tokenzr.h"
wxFontRefData()
{
Init(-1, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, FALSE,
- "", wxFONTENCODING_DEFAULT);
+ wxEmptyString, wxFONTENCODING_DEFAULT);
}
wxFontRefData( int nSize
m_bNativeFontInfoOk = TRUE;
m_vNativeFontInfo = rInfo;
- if (m_hPS == NULLHANDLE)
+ if (hPS == NULLHANDLE)
{
m_hPS = ::WinGetPS(HWND_DESKTOP);
- m_bInternalPS;
+ m_bInternalPS = TRUE;
}
else
m_hPS = (HPS)hPS;
-}
+
+ m_nFontId = 0;
+ m_bTemporary = FALSE;
+ m_pFM = (PFONTMETRICS)NULL;
+ m_nNumFonts = 0;
+} // end of wxFontRefData::Init
wxFontRefData::~wxFontRefData()
{
wxString sFaceName;
long flId = m_hFont;
long lRc;
- short nIndex = 0;
- PFONTMETRICS pFM = NULL;
+ ERRORID vError;
+ wxString sError;
if (!m_bNativeFontInfoOk)
{
);
m_bNativeFontInfoOk = TRUE;
}
-
+ else
+ {
+ if (flId == 0L)
+ flId = 1L;
+ else
+ flId++;
+ if (flId > 254)
+ flId = 1L;
+ }
if((lRc = ::GpiCreateLogFont( m_hPS
,NULL
,flId
}
if (!m_hFont)
{
+ vError = ::WinGetLastError(vHabmain);
+ sError = wxPMErrorToStr(vError);
wxLogLastError("CreateFont");
}
// The GpiCreateLogFont will do enough by selecting the right family,
// and face name.
//
- if (strcmp(m_vNativeFontInfo.fa.szFacename, "Times New Roman") == 0)
+ if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Times New Roman") == 0)
m_nFamily = wxROMAN;
- else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Tms Rmn") == 0)
- m_nFamily = wxSWISS;
- else if (strcmp(m_vNativeFontInfo.fa.szFacename, "WarpSans") == 0)
- m_nFamily = wxSWISS;
- else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Helvitica") == 0)
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Times New Roman MT 30") == 0)
+ m_nFamily = wxROMAN;
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "@Times New Roman MT 30") == 0)
+ m_nFamily = wxROMAN;
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Tms Rmn") == 0)
+ m_nFamily = wxROMAN;
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "WarpSans") == 0)
+ m_nFamily = wxDECORATIVE;
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helvetica") == 0)
m_nFamily = wxSWISS;
- else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Helv") == 0)
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helv") == 0)
m_nFamily = wxSWISS;
- else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Script") == 0)
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Script") == 0)
m_nFamily = wxSCRIPT;
- else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Courier New") == 0)
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Courier New") == 0)
m_nFamily = wxTELETYPE;
- else if (strcmp(m_vNativeFontInfo.fa.szFacename, "Courier") == 0)
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Courier") == 0)
m_nFamily = wxTELETYPE;
- else if (strcmp(m_vNativeFontInfo.fa.szFacename, "System VIO") == 0)
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System Monospaced") == 0)
+ m_nFamily = wxTELETYPE;
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System VIO") == 0)
+ m_nFamily = wxMODERN;
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System Proportional") == 0)
m_nFamily = wxMODERN;
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Arial") == 0)
+ m_nFamily = wxSWISS;
+ else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Swiss") == 0)
+ m_nFamily = wxSWISS;
else
m_nFamily = wxSWISS;
m_nWeight = wxFONTWEIGHT_NORMAL;
}
m_bUnderlined = ((m_vNativeFontInfo.fa.fsSelection & FATTR_SEL_UNDERSCORE) != 0);
- m_sFaceName = m_vNativeFontInfo.fa.szFacename;
+ m_sFaceName = (wxChar*)m_vNativeFontInfo.fa.szFacename;
m_vEncoding = wxGetFontEncFromCharSet(m_vNativeFontInfo.fa.usCodePage);
//
if ( m_hFont )
{
- if (!::GpiSetCharSet(m_hPS, LCID_DEFAULT))
- {
- wxLogLastError(wxT("DeleteObject(font)"));
- }
::GpiDeleteSetId(m_hPS, 1L); /* delete the logical font */
m_nFontId = 0;
m_hFont = 0;
wxString wxNativeFontInfo::GetFaceName() const
{
- return fm.szFacename;
+ return (wxChar*)fm.szFacename;
} // end of wxNativeFontInfo::GetFaceName
wxFontFamily wxNativeFontInfo::GetFamily() const
//
// Extract family from facename
//
- if (strcmp(fa.szFacename, "Times New Roman") == 0)
+ if (strcmp(fm.szFamilyname, "Times New Roman") == 0)
+ nFamily = wxROMAN;
+ else if (strcmp(fm.szFamilyname, "Times New Roman MT 30") == 0)
+ nFamily = wxROMAN;
+ else if (strcmp(fm.szFamilyname, "@Times New Roman MT 30") == 0)
nFamily = wxROMAN;
- else if (strcmp(fa.szFacename, "WarpSans") == 0)
+ else if (strcmp(fm.szFamilyname, "Tms Rmn") == 0)
+ nFamily = wxROMAN;
+ else if (strcmp(fm.szFamilyname, "WarpSans") == 0)
+ nFamily = wxDECORATIVE;
+ else if (strcmp(fm.szFamilyname, "Helvetica") == 0)
+ nFamily = wxSWISS;
+ else if (strcmp(fm.szFamilyname, "Helv") == 0)
nFamily = wxSWISS;
- else if (strcmp(fa.szFacename, "Script") == 0)
+ else if (strcmp(fm.szFamilyname, "Script") == 0)
nFamily = wxSCRIPT;
- else if (strcmp(fa.szFacename, "Courier New") == 0)
+ else if (strcmp(fm.szFamilyname, "Courier New") == 0)
+ nFamily = wxTELETYPE;
+ else if (strcmp(fm.szFamilyname, "Courier") == 0)
+ nFamily = wxTELETYPE;
+ else if (strcmp(fm.szFamilyname, "System Monospaced") == 0)
+ nFamily = wxTELETYPE;
+ else if (strcmp(fm.szFamilyname, "System VIO") == 0)
nFamily = wxMODERN;
+ else if (strcmp(fm.szFamilyname, "System Proportional") == 0)
+ nFamily = wxMODERN;
+ else if (strcmp(fm.szFamilyname, "Arial") == 0)
+ nFamily = wxSWISS;
+ else if (strcmp(fm.szFamilyname, "Swiss") == 0)
+ nFamily = wxSWISS;
else
nFamily = wxSWISS;
return (wxFontFamily)nFamily;
wxString sFacename
)
{
- wxStrncpy(fa.szFacename, sFacename, WXSIZEOF(fa.szFacename));
+ wxStrncpy((wxChar*)fa.szFacename, sFacename, WXSIZEOF(fa.szFacename));
} // end of wxNativeFontInfo::SetFaceName
void wxNativeFontInfo::SetFamily(
switch (eFamily)
{
case wxSCRIPT:
- sFacename = _T("Script");
+ sFacename = wxT("Tms Rmn");
break;
case wxDECORATIVE:
- sFacename = _T("Times New Roman");
+ sFacename = wxT("WarpSans");
break;
case wxROMAN:
- sFacename = _T("Times New Roman");
+ sFacename = wxT("Tms Rmn");
break;
case wxTELETYPE:
+ sFacename = wxT("Courier") ;
+ break;
+
case wxMODERN:
- sFacename = _T("Courier New");
+ sFacename = wxT("System VIO") ;
break;
case wxSWISS:
- sFacename = _T("WarpSans");
+ sFacename = wxT("Helv") ;
break;
case wxDEFAULT:
default:
- sFacename = _T("Helv");
+ sFacename = wxT("System VIO") ;
}
- if (!wxStrlen(fa.szFacename) )
+ if (!wxStrlen((wxChar*)fa.szFacename) )
{
SetFaceName(sFacename);
}
sToken = vTokenizer.GetNextToken();
if(!sToken)
return FALSE;
- wxStrcpy(fa.szFacename, sToken.c_str());
+ wxStrcpy((wxChar*)fa.szFacename, sToken.c_str());
return TRUE;
} // end of wxNativeFontInfo::FromString
RealizeResource();
} // end of wxFont::SetEncoding
-void wxFont::SetNativeFontInfo(
+void wxFont::DoSetNativeFontInfo(
const wxNativeFontInfo& rInfo
)
{
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
//
M_FONTDATA->SetPS(hPS);
RealizeResource();
-} // end of wxFont::SetUnderlined
+} // end of wxFont::SetPS