Changeset 109517 in webkit


Ignore:
Timestamp:
Mar 1, 2012 11:33:24 PM (12 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Simplify the code to adjust font sizes depending on screen DPI
https://bugs.webkit.org/show_bug.cgi?id=80032

Reviewed by Martin Robinson.

  • webkit/webkitwebview.cpp:

(screenDPI): Helper function to get the DPI of a given
GdkScreen. Added also fallback code when gdk_screen_resolution
returns -1.
(webViewGetDPI): Use screenDPI() from WebCore.
(webViewConvertFontSizeToPixels): This is the existing
pixelsFromSize(), renamed and moved to be used also in
webkit_web_view_screen_changed().
(webkit_web_view_screen_changed): Use
webViewConvertFontSizeToPixels() instead of duplicating the code.
(webkit_web_view_settings_notify): Use
webViewConvertFontSizeToPixels() instead of pixelsFromSize().

Location:
trunk/Source/WebKit/gtk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/gtk/ChangeLog

    r108996 r109517  
     12012-03-01  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Simplify the code to adjust font sizes depending on screen DPI
     4        https://bugs.webkit.org/show_bug.cgi?id=80032
     5
     6        Reviewed by Martin Robinson.
     7
     8        * webkit/webkitwebview.cpp:
     9        (screenDPI): Helper function to get the DPI of a given
     10        GdkScreen. Added also fallback code when gdk_screen_resolution
     11        returns -1.
     12        (webViewGetDPI): Use screenDPI() from WebCore.
     13        (webViewConvertFontSizeToPixels): This is the existing
     14        pixelsFromSize(), renamed and moved to be used also in
     15        webkit_web_view_screen_changed().
     16        (webkit_web_view_screen_changed): Use
     17        webViewConvertFontSizeToPixels() instead of duplicating the code.
     18        (webkit_web_view_settings_notify): Use
     19        webViewConvertFontSizeToPixels() instead of pixelsFromSize().
     20
    1212012-02-27  Vincent Untz  <vuntz@gnome.org>> and Gustavo Noronha Silva  <gns@gnome.org>
    222
  • trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp

    r108620 r109517  
    14171417}
    14181418
     1419static double screenDPI(GdkScreen* screen)
     1420{
     1421    // gdk_screen_get_resolution() returns -1 when no DPI is set.
     1422    double dpi = gdk_screen_get_resolution(screen);
     1423    if (dpi != -1)
     1424        return dpi;
     1425
     1426    static const double kMillimetresPerInch = 25.4;
     1427    double diagonalSizeInPixels = hypot(gdk_screen_get_width(screen), gdk_screen_get_height(screen));
     1428    double diagonalSizeInInches = hypot(gdk_screen_get_width_mm(screen), gdk_screen_get_height_mm(screen)) / kMillimetresPerInch;
     1429    return diagonalSizeInPixels / diagonalSizeInInches;
     1430}
     1431
    14191432static gdouble webViewGetDPI(WebKitWebView* webView)
    14201433{
     
    14241437    static const double defaultDPI = 96;
    14251438    GdkScreen* screen = gtk_widget_has_screen(GTK_WIDGET(webView)) ? gtk_widget_get_screen(GTK_WIDGET(webView)) : gdk_screen_get_default();
    1426     if (!screen)
    1427         return defaultDPI;
    1428 
    1429     // gdk_screen_get_resolution() returns -1 when no DPI is set.
    1430     gdouble DPI = gdk_screen_get_resolution(screen);
    1431     return DPI != -1 ? DPI : defaultDPI;
     1439    return screen ? screenDPI(screen) : defaultDPI;
     1440}
     1441
     1442static inline gint webViewConvertFontSizeToPixels(WebKitWebView* webView, double fontSize)
     1443{
     1444    return fontSize / 72.0 * webViewGetDPI(webView);
    14321445}
    14331446
     
    14421455    WebKitWebSettings* webSettings = priv->webSettings.get();
    14431456    Settings* settings = core(webView)->settings();
    1444     gdouble DPI = webViewGetDPI(webView);
    1445 
    14461457    guint defaultFontSize, defaultMonospaceFontSize, minimumFontSize, minimumLogicalFontSize;
    14471458
     
    14531464                 NULL);
    14541465
    1455     settings->setDefaultFontSize(defaultFontSize / 72.0 * DPI);
    1456     settings->setDefaultFixedFontSize(defaultMonospaceFontSize / 72.0 * DPI);
    1457     settings->setMinimumFontSize(minimumFontSize / 72.0 * DPI);
    1458     settings->setMinimumLogicalFontSize(minimumLogicalFontSize / 72.0 * DPI);
     1466    settings->setDefaultFontSize(webViewConvertFontSizeToPixels(webView, defaultFontSize));
     1467    settings->setDefaultFixedFontSize(webViewConvertFontSizeToPixels(webView, defaultMonospaceFontSize));
     1468    settings->setMinimumFontSize(webViewConvertFontSizeToPixels(webView, minimumFontSize));
     1469    settings->setMinimumLogicalFontSize(webViewConvertFontSizeToPixels(webView, minimumLogicalFontSize));
    14591470}
    14601471
     
    33373348}
    33383349
    3339 static inline gint pixelsFromSize(WebKitWebView* webView, gint size)
    3340 {
    3341     return size / 72.0 * webViewGetDPI(webView);
    3342 }
    3343 
    33443350static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GParamSpec* pspec, WebKitWebView* webView)
    33453351{
     
    33663372        settings->setSerifFontFamily(g_value_get_string(&value));
    33673373    else if (name == g_intern_string("default-font-size"))
    3368         settings->setDefaultFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
     3374        settings->setDefaultFontSize(webViewConvertFontSizeToPixels(webView, g_value_get_int(&value)));
    33693375    else if (name == g_intern_string("default-monospace-font-size"))
    3370         settings->setDefaultFixedFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
     3376        settings->setDefaultFixedFontSize(webViewConvertFontSizeToPixels(webView, g_value_get_int(&value)));
    33713377    else if (name == g_intern_string("minimum-font-size"))
    3372         settings->setMinimumFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
     3378        settings->setMinimumFontSize(webViewConvertFontSizeToPixels(webView, g_value_get_int(&value)));
    33733379    else if (name == g_intern_string("minimum-logical-font-size"))
    3374         settings->setMinimumLogicalFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
     3380        settings->setMinimumLogicalFontSize(webViewConvertFontSizeToPixels(webView, g_value_get_int(&value)));
    33753381    else if (name == g_intern_string("enforce-96-dpi"))
    33763382        webkit_web_view_screen_changed(GTK_WIDGET(webView), NULL);
Note: See TracChangeset for help on using the changeset viewer.