summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--display.h4
-rw-r--r--gtk-gui.c10
2 files changed, 12 insertions, 2 deletions
diff --git a/display.h b/display.h
index 4fed339ac..83f8ada8f 100644
--- a/display.h
+++ b/display.h
@@ -3,12 +3,12 @@
#include <cairo.h>
-#define DPI_SCREEN 72.0
#define SCALE_SCREEN 1.0
-#define SCALE_PRINT (1.0 / DPI_SCREEN)
+#define SCALE_PRINT (1.0 / get_screen_dpi())
extern void repaint_dive(void);
extern void do_print(void);
+extern gdouble get_screen_dpi(void);
/* Plot info with smoothing, velocity indication
* and one-, two- and three-minute minimums and maximums */
diff --git a/gtk-gui.c b/gtk-gui.c
index e009f5ac0..20a2da824 100644
--- a/gtk-gui.c
+++ b/gtk-gui.c
@@ -2020,3 +2020,13 @@ void set_dc_nickname(struct dive *dive)
dc = dc->next;
}
}
+
+gdouble get_screen_dpi(void)
+{
+ const gdouble mm_per_inch = 25.4;
+ GdkScreen *scr = gdk_screen_get_default();
+ gdouble h_mm = gdk_screen_get_height_mm(scr);
+ gdouble h = gdk_screen_get_height(scr);
+ gdouble dpi_h = floor((h / h_mm) * mm_per_inch);
+ return dpi_h;
+}