implemented IsFixedWidth() correctly for MSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13841 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
4ec6efd6ab
commit
9cf8de4c74
@ -83,6 +83,8 @@ public:
|
|||||||
virtual void SetEncoding(wxFontEncoding encoding);
|
virtual void SetEncoding(wxFontEncoding encoding);
|
||||||
virtual void SetNativeFontInfo(const wxNativeFontInfo& info);
|
virtual void SetNativeFontInfo(const wxNativeFontInfo& info);
|
||||||
|
|
||||||
|
virtual bool IsFixedWidth() const;
|
||||||
|
|
||||||
// implementation only from now on
|
// implementation only from now on
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
|
|
||||||
|
108
src/msw/font.cpp
108
src/msw/font.cpp
@ -50,6 +50,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject)
|
|||||||
// constants
|
// constants
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// the mask used to extract the pitch from LOGFONT::lfPitchAndFamily field
|
||||||
|
static const int PITCH_MASK = FIXED_PITCH | VARIABLE_PITCH;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxFontRefData - the internal description of the font
|
// wxFontRefData - the internal description of the font
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -270,42 +273,6 @@ void wxFontRefData::Init(int pointSize,
|
|||||||
|
|
||||||
void wxFontRefData::Init(const wxNativeFontInfo& info, WXHFONT hFont)
|
void wxFontRefData::Init(const wxNativeFontInfo& info, WXHFONT hFont)
|
||||||
{
|
{
|
||||||
// we don't really need the family, what for?
|
|
||||||
#if 0
|
|
||||||
// extract family from pitch-and-family
|
|
||||||
int lfFamily = info.lf.lfPitchAndFamily;
|
|
||||||
if ( lfFamily & FIXED_PITCH )
|
|
||||||
lfFamily -= FIXED_PITCH;
|
|
||||||
if ( lfFamily & VARIABLE_PITCH )
|
|
||||||
lfFamily -= VARIABLE_PITCH;
|
|
||||||
|
|
||||||
switch ( lfFamily )
|
|
||||||
{
|
|
||||||
case FF_ROMAN:
|
|
||||||
m_family = wxROMAN;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FF_SWISS:
|
|
||||||
m_family = wxSWISS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FF_SCRIPT:
|
|
||||||
m_family = wxSCRIPT;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FF_MODERN:
|
|
||||||
m_family = wxMODERN;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FF_DECORATIVE:
|
|
||||||
m_family = wxDECORATIVE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
m_family = wxSWISS;
|
|
||||||
}
|
|
||||||
#endif // 0
|
|
||||||
|
|
||||||
// hFont may be zero, or it be passed in case we really want to
|
// hFont may be zero, or it be passed in case we really want to
|
||||||
// use the exact font created in the underlying system
|
// use the exact font created in the underlying system
|
||||||
// (for example where we can't guarantee conversion from HFONT
|
// (for example where we can't guarantee conversion from HFONT
|
||||||
@ -401,41 +368,37 @@ wxString wxNativeFontInfo::GetFaceName() const
|
|||||||
|
|
||||||
wxFontFamily wxNativeFontInfo::GetFamily() const
|
wxFontFamily wxNativeFontInfo::GetFamily() const
|
||||||
{
|
{
|
||||||
|
wxFontFamily family;
|
||||||
|
|
||||||
// extract family from pitch-and-family
|
// extract family from pitch-and-family
|
||||||
int lfFamily = lf.lfPitchAndFamily;
|
switch ( lf.lfPitchAndFamily & ~PITCH_MASK )
|
||||||
int family;
|
|
||||||
|
|
||||||
if ( lfFamily & FIXED_PITCH )
|
|
||||||
lfFamily -= FIXED_PITCH;
|
|
||||||
if ( lfFamily & VARIABLE_PITCH )
|
|
||||||
lfFamily -= VARIABLE_PITCH;
|
|
||||||
|
|
||||||
switch ( lfFamily )
|
|
||||||
{
|
{
|
||||||
case FF_ROMAN:
|
case FF_ROMAN:
|
||||||
family = wxROMAN;
|
family = wxFONTFAMILY_ROMAN;
|
||||||
break;
|
|
||||||
|
|
||||||
case FF_SWISS:
|
|
||||||
family = wxSWISS;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FF_SCRIPT:
|
|
||||||
family = wxSCRIPT;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FF_MODERN:
|
|
||||||
family = wxMODERN;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case FF_DECORATIVE:
|
|
||||||
family = wxDECORATIVE;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
family = wxSWISS;
|
wxFAIL_MSG( _T("unknown LOGFONT::lfFamily value") );
|
||||||
|
// fall through
|
||||||
|
|
||||||
|
case FF_SWISS:
|
||||||
|
family = wxFONTFAMILY_SWISS;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FF_SCRIPT:
|
||||||
|
family = wxFONTFAMILY_SCRIPT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FF_MODERN:
|
||||||
|
family = wxFONTFAMILY_MODERN;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FF_DECORATIVE:
|
||||||
|
family = wxFONTFAMILY_DECORATIVE;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return (wxFontFamily)family;
|
|
||||||
|
return family;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxFontEncoding wxNativeFontInfo::GetEncoding() const
|
wxFontEncoding wxNativeFontInfo::GetEncoding() const
|
||||||
@ -574,7 +537,7 @@ void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding)
|
|||||||
#endif // wxUSE_FONTMAP
|
#endif // wxUSE_FONTMAP
|
||||||
{
|
{
|
||||||
// unsupported encoding, replace with the default
|
// unsupported encoding, replace with the default
|
||||||
info.charset = ANSI_CHARSET;
|
info.charset = DEFAULT_CHARSET;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -944,3 +907,18 @@ wxNativeFontInfo *wxFont::GetNativeFontInfo() const
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxFont::IsFixedWidth() const
|
||||||
|
{
|
||||||
|
if ( M_FONTDATA->HasNativeFontInfo() )
|
||||||
|
{
|
||||||
|
// the two low-order bits specify the pitch of the font, the rest is
|
||||||
|
// family
|
||||||
|
BYTE pitch = M_FONTDATA->GetNativeFontInfo().
|
||||||
|
lf.lfPitchAndFamily & PITCH_MASK;
|
||||||
|
|
||||||
|
return pitch == FIXED_PITCH;
|
||||||
|
}
|
||||||
|
|
||||||
|
return wxFontBase::IsFixedWidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user