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
//--------------------------------------------------------------------------------
#define wxHTML_SCROLL_STEP 16
/* 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 */
#define wxHTML_PRINT_MAX_PAGES 999
#define wxHTML_BUFLEN 1024
/* maximum number of pages printable via html printing */
#define wxHTML_PRINT_MAX_PAGES 999
#endif // wxUSE_HTML
/* default font sizes */
#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 // _WX_HTMLDEFS_H_
#endif
#endif

View File

@@ -110,25 +110,39 @@ void wxHtmlWinParser::RemoveModule(wxHtmlTagsModule *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)
{
static int default_sizes[7] =
static int default_sizes[7] = { 0 };
if ( !sizes )
{
wxHTML_FONT_SIZE_1,
wxHTML_FONT_SIZE_2,
wxHTML_FONT_SIZE_3,
wxHTML_FONT_SIZE_4,
wxHTML_FONT_SIZE_5,
wxHTML_FONT_SIZE_6,
wxHTML_FONT_SIZE_7
};
if ( !default_sizes[0] )
wxBuildFontSizes(default_sizes, wxNORMAL_FONT->GetPointSize());
if (sizes == NULL) sizes = default_sizes;
sizes = default_sizes;
}
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_FontFaceNormal = normal_face;
@@ -153,22 +167,15 @@ void wxHtmlWinParser::SetStandardFonts(int size,
const wxString& normal_face,
const wxString& fixed_face)
{
wxFont defaultFont = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
if (size == -1)
size = wxNORMAL_FONT->GetPointSize();
int f_sizes[7];
if (size == -1)
size = defaultFont.GetPointSize();
wxBuildFontSizes(f_sizes, size);
f_sizes[0] = int(size * 0.6);
f_sizes[1] = int(size * 0.8);
f_sizes[2] = size;
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;
wxString normal = normal_face;
if ( normal.empty() )
normal = wxNORMAL_FONT->GetFaceName();
SetFonts(normal, fixed_face, f_sizes);
}