#include "wx/intl.h"
#include "wx/dcscreen.h"
#include "wx/log.h"
+ #include "wx/gdicmn.h"
#endif // WX_PRECOMP
-#include "wx/gdicmn.h"
-
#if defined(__WXMSW__)
#include "wx/msw/private.h" // includes windows.h for LOGFONT
#include "wx/msw/winundef.h"
static void AdjustFontSize(wxFont& font, wxDC& dc, const wxSize& pixelSize)
{
- int currentSize = 0;
int largestGood = 0;
int smallestBad = 0;
// NB: this assignment was separated from the variable definition
// in order to fix a gcc v3.3.3 compiler crash
- currentSize = font.GetPointSize();
+ int currentSize = font.GetPointSize();
while (currentSize > 0)
{
dc.SetFont(font);
/* static */
wxFont *wxFontBase::New(int size,
- int family,
- int style,
- int weight,
+ wxFontFamily family,
+ wxFontStyle style,
+ wxFontWeight weight,
bool underlined,
const wxString& face,
wxFontEncoding encoding)
/* static */
wxFont *wxFontBase::New(const wxSize& pixelSize,
- int family,
- int style,
- int weight,
+ wxFontFamily family,
+ wxFontStyle style,
+ wxFontWeight weight,
bool underlined,
const wxString& face,
wxFontEncoding encoding)
if ( fontInfo )
{
fontDesc = fontInfo->ToString();
- wxASSERT_MSG(!fontDesc.IsEmpty(), wxT("This should be a non-empty string!"));
+ wxASSERT_MSG(!fontDesc.empty(), wxT("This should be a non-empty string!"));
}
else
{
if ( fontInfo )
{
fontDesc = fontInfo->ToUserString();
- wxASSERT_MSG(!fontDesc.IsEmpty(), wxT("This should be a non-empty string!"));
+ wxASSERT_MSG(!fontDesc.empty(), wxT("This should be a non-empty string!"));
}
else
{
- wxASSERT_MSG(0, wxT("Derived class should have created the wxNativeFontInfo!"));
+ wxFAIL_MSG(wxT("Derived class should have created the wxNativeFontInfo!"));
}
return fontDesc;
return true;
}
- UnRef();
return false;
}
return true;
}
- UnRef();
return false;
}
{
// either it is the same font, i.e. they share the same common data or they
// have different ref datas but still describe the same font
- return GetFontData() == font.GetFontData() ||
+ return IsSameAs(font) ||
(
Ok() == font.Ok() &&
GetPointSize() == font.GetPointSize() &&
+ // in wxGTK1 GetPixelSize() calls GetInternalFont() which uses
+ // operator==() resulting in infinite recursion so we can't use it
+ // in that port
+#if !defined(__WXGTK__) || defined(__WXGTK20__)
+ GetPixelSize() == font.GetPixelSize() &&
+#endif
GetFamily() == font.GetFamily() &&
GetStyle() == font.GetStyle() &&
GetWeight() == font.GetWeight() &&
);
}
-bool wxFontBase::operator!=(const wxFont& font) const
-{
- return !(*this == font);
-}
-
wxString wxFontBase::GetFamilyString() const
{
wxCHECK_MSG( Ok(), wxT("wxDEFAULT"), wxT("invalid font") );
}
}
-bool wxFontBase::SetFaceName(const wxString &facename)
+bool wxFontBase::SetFaceName(const wxString& facename)
{
+#if wxUSE_FONTENUM
if (!wxFontEnumerator::IsValidFacename(facename))
{
UnRef(); // make Ok() return false
return false;
}
+#else // !wxUSE_FONTENUM
+ wxUnusedVar(facename);
+#endif // wxUSE_FONTENUM/!wxUSE_FONTENUM
return true;
}
// ----------------------------------------------------------------------------
// Up to now, there are no native implementations of this function:
-void wxNativeFontInfo::SetFaceName(const wxArrayString &facenames)
+void wxNativeFontInfo::SetFaceName(const wxArrayString& facenames)
{
+#if wxUSE_FONTENUM
for (size_t i=0; i < facenames.GetCount(); i++)
{
if (wxFontEnumerator::IsValidFacename(facenames[i]))
wxString validfacename = wxFontEnumerator::GetFacenames().Item(0);
wxLogTrace(wxT("font"), wxT("Falling back to '%s'"), validfacename.c_str());
SetFaceName(validfacename);
+#else // !wxUSE_FONTENUM
+ SetFaceName(facenames[0]);
+#endif // wxUSE_FONTENUM/!wxUSE_FONTENUM
}
wxString face;
unsigned long size;
- bool weightfound = false, pointsizefound = false, encodingfound = false;
+ bool weightfound = false, pointsizefound = false;
+#if wxUSE_FONTMAP
+ bool encodingfound = false;
+#endif
while ( tokenizer.HasMoreTokens() )
{
// NB: the check on the facename is implemented in wxFontBase::SetFaceName
// and not in wxNativeFontInfo::SetFaceName thus we need to explicitely
// call here wxFontEnumerator::IsValidFacename
- if (!wxFontEnumerator::IsValidFacename(face) ||
- !SetFaceName(face))
+ if (
+#if wxUSE_FONTENUM
+ !wxFontEnumerator::IsValidFacename(face) ||
+#endif // wxUSE_FONTENUM
+ !SetFaceName(face) )
+ {
SetFaceName(wxNORMAL_FONT->GetFaceName());
+ }
+
face.clear();
}
}
// NB: the check on the facename is implemented in wxFontBase::SetFaceName
// and not in wxNativeFontInfo::SetFaceName thus we need to explicitely
// call here wxFontEnumerator::IsValidFacename
- if (!wxFontEnumerator::IsValidFacename(face) ||
- !SetFaceName(face))
- SetFaceName(wxNORMAL_FONT->GetFaceName());
+ if (
+#if wxUSE_FONTENUM
+ !wxFontEnumerator::IsValidFacename(face) ||
+#endif // wxUSE_FONTENUM
+ !SetFaceName(face) )
+ {
+ SetFaceName(wxNORMAL_FONT->GetFaceName());
+ }
}
// set point size to default value if size was not given
}
#endif // generic or wxMSW or wxOS2
+
+
+// wxFont <-> wxString utilities, used by wxConfig
+wxString wxToString(const wxFontBase& font)
+{
+ return font.IsOk() ? font.GetNativeFontInfoDesc()
+ : wxString();
+}
+
+bool wxFromString(const wxString& str, wxFontBase *font)
+{
+ wxCHECK_MSG( font, false, _T("NULL output parameter") );
+
+ if ( str.empty() )
+ {
+ *font = wxNullFont;
+ return true;
+ }
+
+ return font->SetNativeFontInfo(str);
+}
+
+