From 80edb6d4fe8c4af5b01176bcd956df37a24438a8 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Fri, 13 Apr 2018 12:50:01 +0200 Subject: gl: Increase font size on high resolution displays. Also increase the max resolution in the zoom list. --- platform/gl/gl-main.c | 13 ++++++++++--- platform/gl/gl-ui.c | 25 +++++++++++++++++++++---- 2 files changed, 31 insertions(+), 7 deletions(-) (limited to 'platform') diff --git a/platform/gl/gl-main.c b/platform/gl/gl-main.c index c6aadc0b..c2697489 100644 --- a/platform/gl/gl-main.c +++ b/platform/gl/gl-main.c @@ -58,7 +58,11 @@ static void open_browser(const char *uri) #endif } -static const int zoom_list[] = { 18, 24, 36, 54, 72, 96, 120, 144, 180, 216, 288 }; +static const int zoom_list[] = { + 24, 36, 48, 60, 72, 84, 96, 108, + 120, 144, 168, 192, 228, 264, + 300, 350, 400, 450, 500, 550, 600 +}; static int zoom_in(int oldres) { @@ -102,8 +106,8 @@ static int scroll_x = 0, scroll_y = 0; static int canvas_x = 0, canvas_w = 100; static int canvas_y = 0, canvas_h = 100; -static int outline_w = 260; -static int annotate_w = 220; +static int outline_w = 14; /* to be scaled by lineheight */ +static int annotate_w = 12; /* to be scaled by lineheight */ static int oldinvert = 0, currentinvert = 0; static int oldpage = 0, currentpage = 0; @@ -1366,6 +1370,9 @@ int main(int argc, char **argv) ui.dialog = do_open_document_dialog; } + annotate_w *= ui.lineheight; + outline_w *= ui.lineheight; + glutMainLoop(); ui_finish(); diff --git a/platform/gl/gl-ui.c b/platform/gl/gl-ui.c index 606afed9..a91723b8 100644 --- a/platform/gl/gl-ui.c +++ b/platform/gl/gl-ui.c @@ -369,6 +369,8 @@ static void on_warning(const char *fmt, va_list ap) void ui_init(int w, int h, const char *title) { + float ui_scale; + glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS); glutInitErrorFunc(on_error); @@ -396,10 +398,25 @@ void ui_init(int w, int h, const char *title) glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max_texture_size); - ui.fontsize = DEFAULT_UI_FONTSIZE; - ui.baseline = DEFAULT_UI_BASELINE; - ui.lineheight = DEFAULT_UI_LINEHEIGHT; - ui.gridsize = DEFAULT_UI_GRIDSIZE; + ui_scale = 1; + { + int wmm = glutGet(GLUT_SCREEN_WIDTH_MM); + int wpx = glutGet(GLUT_SCREEN_WIDTH); + int hmm = glutGet(GLUT_SCREEN_HEIGHT_MM); + int hpx = glutGet(GLUT_SCREEN_HEIGHT); + if (wmm > 0 && hmm > 0) + { + float ppi = ((wpx * 254) / wmm + (hpx * 254) / hmm) / 20; + if (ppi >= 144) ui_scale = 1.5f; + if (ppi >= 192) ui_scale = 2.0f; + if (ppi >= 288) ui_scale = 3.0f; + } + } + + ui.fontsize = DEFAULT_UI_FONTSIZE * ui_scale; + ui.baseline = DEFAULT_UI_BASELINE * ui_scale; + ui.lineheight = DEFAULT_UI_LINEHEIGHT * ui_scale; + ui.gridsize = DEFAULT_UI_GRIDSIZE * ui_scale; ui_init_fonts(ui.fontsize); } -- cgit v1.2.3