Title: [109517] trunk/Source/WebKit/gtk
Revision
109517
Author
[email protected]
Date
2012-03-01 23:33:24 -0800 (Thu, 01 Mar 2012)

Log 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().

Modified Paths

Diff

Modified: trunk/Source/WebKit/gtk/ChangeLog (109516 => 109517)


--- trunk/Source/WebKit/gtk/ChangeLog	2012-03-02 06:50:49 UTC (rev 109516)
+++ trunk/Source/WebKit/gtk/ChangeLog	2012-03-02 07:33:24 UTC (rev 109517)
@@ -1,3 +1,23 @@
+2012-03-01  Carlos Garcia Campos  <[email protected]>
+
+        [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().
+
 2012-02-27  Vincent Untz  <[email protected]>> and Gustavo Noronha Silva  <[email protected]>
 
         Build fix for building with GTK+ 2.x.

Modified: trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp (109516 => 109517)


--- trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp	2012-03-02 06:50:49 UTC (rev 109516)
+++ trunk/Source/WebKit/gtk/webkit/webkitwebview.cpp	2012-03-02 07:33:24 UTC (rev 109517)
@@ -1416,6 +1416,19 @@
     return axRoot;
 }
 
+static double screenDPI(GdkScreen* screen)
+{
+    // gdk_screen_get_resolution() returns -1 when no DPI is set.
+    double dpi = gdk_screen_get_resolution(screen);
+    if (dpi != -1)
+        return dpi;
+
+    static const double kMillimetresPerInch = 25.4;
+    double diagonalSizeInPixels = hypot(gdk_screen_get_width(screen), gdk_screen_get_height(screen));
+    double diagonalSizeInInches = hypot(gdk_screen_get_width_mm(screen), gdk_screen_get_height_mm(screen)) / kMillimetresPerInch;
+    return diagonalSizeInPixels / diagonalSizeInInches;
+}
+
 static gdouble webViewGetDPI(WebKitWebView* webView)
 {
     if (webView->priv->webSettings->priv->enforce96DPI)
@@ -1423,12 +1436,12 @@
 
     static const double defaultDPI = 96;
     GdkScreen* screen = gtk_widget_has_screen(GTK_WIDGET(webView)) ? gtk_widget_get_screen(GTK_WIDGET(webView)) : gdk_screen_get_default();
-    if (!screen) 
-        return defaultDPI;
+    return screen ? screenDPI(screen) : defaultDPI;
+}
 
-    // gdk_screen_get_resolution() returns -1 when no DPI is set.
-    gdouble DPI = gdk_screen_get_resolution(screen);
-    return DPI != -1 ? DPI : defaultDPI;
+static inline gint webViewConvertFontSizeToPixels(WebKitWebView* webView, double fontSize)
+{
+    return fontSize / 72.0 * webViewGetDPI(webView);
 }
 
 static void webkit_web_view_screen_changed(GtkWidget* widget, GdkScreen* previousScreen)
@@ -1441,8 +1454,6 @@
 
     WebKitWebSettings* webSettings = priv->webSettings.get();
     Settings* settings = core(webView)->settings();
-    gdouble DPI = webViewGetDPI(webView);
-
     guint defaultFontSize, defaultMonospaceFontSize, minimumFontSize, minimumLogicalFontSize;
 
     g_object_get(webSettings,
@@ -1452,10 +1463,10 @@
                  "minimum-logical-font-size", &minimumLogicalFontSize,
                  NULL);
 
-    settings->setDefaultFontSize(defaultFontSize / 72.0 * DPI);
-    settings->setDefaultFixedFontSize(defaultMonospaceFontSize / 72.0 * DPI);
-    settings->setMinimumFontSize(minimumFontSize / 72.0 * DPI);
-    settings->setMinimumLogicalFontSize(minimumLogicalFontSize / 72.0 * DPI);
+    settings->setDefaultFontSize(webViewConvertFontSizeToPixels(webView, defaultFontSize));
+    settings->setDefaultFixedFontSize(webViewConvertFontSizeToPixels(webView, defaultMonospaceFontSize));
+    settings->setMinimumFontSize(webViewConvertFontSizeToPixels(webView, minimumFontSize));
+    settings->setMinimumLogicalFontSize(webViewConvertFontSizeToPixels(webView, minimumLogicalFontSize));
 }
 
 static void webkit_web_view_drag_end(GtkWidget* widget, GdkDragContext* context)
@@ -3336,11 +3347,6 @@
     webkit_web_view_screen_changed(GTK_WIDGET(webView), NULL);
 }
 
-static inline gint pixelsFromSize(WebKitWebView* webView, gint size)
-{
-    return size / 72.0 * webViewGetDPI(webView);
-}
-
 static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GParamSpec* pspec, WebKitWebView* webView)
 {
     Settings* settings = core(webView)->settings();
@@ -3365,13 +3371,13 @@
     else if (name == g_intern_string("serif-font-family"))
         settings->setSerifFontFamily(g_value_get_string(&value));
     else if (name == g_intern_string("default-font-size"))
-        settings->setDefaultFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
+        settings->setDefaultFontSize(webViewConvertFontSizeToPixels(webView, g_value_get_int(&value)));
     else if (name == g_intern_string("default-monospace-font-size"))
-        settings->setDefaultFixedFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
+        settings->setDefaultFixedFontSize(webViewConvertFontSizeToPixels(webView, g_value_get_int(&value)));
     else if (name == g_intern_string("minimum-font-size"))
-        settings->setMinimumFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
+        settings->setMinimumFontSize(webViewConvertFontSizeToPixels(webView, g_value_get_int(&value)));
     else if (name == g_intern_string("minimum-logical-font-size"))
-        settings->setMinimumLogicalFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
+        settings->setMinimumLogicalFontSize(webViewConvertFontSizeToPixels(webView, g_value_get_int(&value)));
     else if (name == g_intern_string("enforce-96-dpi"))
         webkit_web_view_screen_changed(GTK_WIDGET(webView), NULL);
     else if (name == g_intern_string("auto-load-images"))
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to