]> git.saurik.com Git - wxWidgets.git/commitdiff
don't hardcode HTML font sizes, this makes wxHtmlWindow look really ugly when default...
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 25 Aug 2006 16:52:58 +0000 (16:52 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 25 Aug 2006 16:52:58 +0000 (16:52 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/html/htmldefs.h
src/html/winpars.cpp

index dc008b77a43f0a8037959a78374c668e3fb3318f..469f7072860a6703f627445deb4843f6b3eb478e 100644 (file)
 //                  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
 
+#endif // _WX_HTMLDEFS_H_
 
-    /* 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
-#endif
index 13ef2c9ae6fc354d945fdd0d052db4d9976a6404..5446f917d6458e2827d3fab5a3a991f245915ecf 100644 (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] =
-        {
-            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
-        };
+    static int default_sizes[7] = { 0 };
+    if ( !sizes )
+    {
+        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();
-
-    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;
+    wxBuildFontSizes(f_sizes, size);
+
+    wxString normal = normal_face;
+    if ( normal.empty() )
+        normal = wxNORMAL_FONT->GetFaceName();
 
     SetFonts(normal, fixed_face, f_sizes);
 }