diff --git a/gdk/gdkmonitor.c b/gdk/gdkmonitor.c index 685a5ad62f..b33c60ed88 100644 --- a/gdk/gdkmonitor.c +++ b/gdk/gdkmonitor.c @@ -744,3 +744,11 @@ gdk_monitor_set_description (GdkMonitor *monitor, g_object_notify_by_pspec (G_OBJECT (monitor), props[PROP_DESCRIPTION]); } +#define MM_PER_INCH 25.4 + +double +gdk_monitor_get_dpi (GdkMonitor *monitor) +{ + return MAX ((monitor->geometry.width * monitor->scale) / (monitor->width_mm / MM_PER_INCH), + (monitor->geometry.height * monitor->scale) / (monitor->height_mm / MM_PER_INCH)); +} diff --git a/gdk/gdkmonitorprivate.h b/gdk/gdkmonitorprivate.h index a696fbce3c..88b5d818d0 100644 --- a/gdk/gdkmonitorprivate.h +++ b/gdk/gdkmonitorprivate.h @@ -76,6 +76,7 @@ void gdk_monitor_set_subpixel_layout (GdkMonitor *monitor, void gdk_monitor_invalidate (GdkMonitor *monitor); void gdk_monitor_set_description (GdkMonitor *monitor, const char *description); +double gdk_monitor_get_dpi (GdkMonitor *monitor); G_END_DECLS