diff options
author | Simon Howard | 2013-10-28 05:01:33 +0000 |
---|---|---|
committer | Simon Howard | 2013-10-28 05:01:33 +0000 |
commit | 5387e91e31c7fc3653b51215f76f07144656000d (patch) | |
tree | 13f1bbf688df3628bf641bf56823adb631fef1b7 | |
parent | 552d300e2615bae577a629c9e738ebc27d906f27 (diff) | |
download | chocolate-doom-5387e91e31c7fc3653b51215f76f07144656000d.tar.gz chocolate-doom-5387e91e31c7fc3653b51215f76f07144656000d.tar.bz2 chocolate-doom-5387e91e31c7fc3653b51215f76f07144656000d.zip |
Use system DPI setting on Windows to determine whether to use the large
font.
Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 2730
-rw-r--r-- | textscreen/txt_sdl.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/textscreen/txt_sdl.c b/textscreen/txt_sdl.c index d098d196..74e4cd3f 100644 --- a/textscreen/txt_sdl.c +++ b/textscreen/txt_sdl.c @@ -122,6 +122,34 @@ static SDL_Color ega_colors[] = #endif +#ifdef _WIN32 + +#define WIN32_LEAN_AND_MEAN +#include <windows.h> + +// Examine system DPI settings to determine whether to use the large font. + +static int Win32_UseLargeFont(void) +{ + HDC hdc = GetDC(NULL); + int dpix; + + if (!hdc) + { + return 0; + } + + dpix = GetDeviceCaps(hdc, LOGPIXELSX); + ReleaseDC(NULL, hdc); + + // 144 is the DPI when using "150%" scaling. If the user has this set + // then consider this an appropriate threshold for using the large font. + + return dpix >= 144; +} + +#endif + static txt_font_t *FontForName(char *name) { if (!strcmp(name, "small")) @@ -194,10 +222,20 @@ static void ChooseFont(void) { font = &small_font; } +#ifdef _WIN32 + // On Windows we can use the system DPI settings to make a + // more educated guess about whether to use the large font. + + else if (Win32_UseLargeFont()) + { + font = &large_font; + } +#else else if (info->current_w >= 1920 && info->current_h >= 1080) { font = &large_font; } +#endif else { font = &main_font; |