don't hardcode HTML font sizes, this makes wxHtmlWindow look really ugly when default font size is not 12, base the default font sizes on wxNORMAL_FONT instead

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-08-25 16:52:58 +00:00
parent 6c6a3e8a23
commit ba804ab2d4
2 changed files with 40 additions and 57 deletions

View File

@@ -89,40 +89,16 @@
// wxHTML internal constants // wxHTML internal constants
//-------------------------------------------------------------------------------- //--------------------------------------------------------------------------------
#define wxHTML_SCROLL_STEP 16
/* size of one scroll step of wxHtmlWindow in pixels */ /* size of one scroll step of wxHtmlWindow in pixels */
#define wxHTML_BUFLEN 1024 #define wxHTML_SCROLL_STEP 16
/* size of temporary buffer used during parsing */ /* size of temporary buffer used during parsing */
#define wxHTML_PRINT_MAX_PAGES 999 #define wxHTML_BUFLEN 1024
/* maximum number of pages printable via html printing */ /* maximum number of pages printable via html printing */
#define wxHTML_PRINT_MAX_PAGES 999
#endif // wxUSE_HTML
/* default font sizes */ #endif // _WX_HTMLDEFS_H_
#ifdef __WXMSW__
#define wxHTML_FONT_SIZE_1 7
#define wxHTML_FONT_SIZE_2 8
#define wxHTML_FONT_SIZE_3 10
#define wxHTML_FONT_SIZE_4 12
#define wxHTML_FONT_SIZE_5 16
#define wxHTML_FONT_SIZE_6 22
#define wxHTML_FONT_SIZE_7 30
#elif defined(__WXMAC__)
#define wxHTML_FONT_SIZE_1 9
#define wxHTML_FONT_SIZE_2 12
#define wxHTML_FONT_SIZE_3 14
#define wxHTML_FONT_SIZE_4 18
#define wxHTML_FONT_SIZE_5 24
#define wxHTML_FONT_SIZE_6 30
#define wxHTML_FONT_SIZE_7 36
#else
#define wxHTML_FONT_SIZE_1 10
#define wxHTML_FONT_SIZE_2 12
#define wxHTML_FONT_SIZE_3 14
#define wxHTML_FONT_SIZE_4 16
#define wxHTML_FONT_SIZE_5 19
#define wxHTML_FONT_SIZE_6 24
#define wxHTML_FONT_SIZE_7 32
#endif
#endif
#endif

View File

@@ -110,25 +110,39 @@ void wxHtmlWinParser::RemoveModule(wxHtmlTagsModule *module)
m_Modules.DeleteObject(module); m_Modules.DeleteObject(module);
} }
void wxHtmlWinParser::SetFonts(const wxString& normal_face, const wxString& fixed_face, // build all HTML font sizes (1..7) from the given base size
static void wxBuildFontSizes(int *sizes, int size)
{
// using a fixed factor (1.2, from CSS2) is a bad idea as explained at
// http://www.w3.org/TR/CSS21/fonts.html#font-size-props but this is by far
// simplest thing to do so still do it like this for now
sizes[0] = int(size * 0.69);
sizes[1] = int(size * 0.83);
sizes[2] = size;
sizes[3] = int(size * 1.2);
sizes[4] = int(size * 1.44);
sizes[5] = int(size * 1.73);
sizes[6] = int(size * 2);
}
void wxHtmlWinParser::SetFonts(const wxString& normal_face,
const wxString& fixed_face,
const int *sizes) const int *sizes)
{ {
static int default_sizes[7] = static int default_sizes[7] = { 0 };
{ if ( !sizes )
wxHTML_FONT_SIZE_1, {
wxHTML_FONT_SIZE_2, if ( !default_sizes[0] )
wxHTML_FONT_SIZE_3, wxBuildFontSizes(default_sizes, wxNORMAL_FONT->GetPointSize());
wxHTML_FONT_SIZE_4,
wxHTML_FONT_SIZE_5,
wxHTML_FONT_SIZE_6,
wxHTML_FONT_SIZE_7
};
if (sizes == NULL) sizes = default_sizes; sizes = default_sizes;
}
int i, j, k, l, m; int i, j, k, l, m;
for (i = 0; i < 7; i++) m_FontsSizes[i] = sizes[i]; for (i = 0; i < 7; i++)
m_FontsSizes[i] = sizes[i];
m_FontFaceFixed = fixed_face; m_FontFaceFixed = fixed_face;
m_FontFaceNormal = normal_face; m_FontFaceNormal = normal_face;
@@ -153,22 +167,15 @@ void wxHtmlWinParser::SetStandardFonts(int size,
const wxString& normal_face, const wxString& normal_face,
const wxString& fixed_face) const wxString& fixed_face)
{ {
wxFont defaultFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); if (size == -1)
size = wxNORMAL_FONT->GetPointSize();
int f_sizes[7]; int f_sizes[7];
if (size == -1) wxBuildFontSizes(f_sizes, size);
size = defaultFont.GetPointSize();
f_sizes[0] = int(size * 0.6); wxString normal = normal_face;
f_sizes[1] = int(size * 0.8); if ( normal.empty() )
f_sizes[2] = size; normal = wxNORMAL_FONT->GetFaceName();
f_sizes[3] = int(size * 1.2);
f_sizes[4] = int(size * 1.4);
f_sizes[5] = int(size * 1.6);
f_sizes[6] = int(size * 1.8);
wxString normal = normal_face.empty() ?
defaultFont.GetFaceName() : normal_face;
SetFonts(normal, fixed_face, f_sizes); SetFonts(normal, fixed_face, f_sizes);
} }