added dpi aware back in
parent
2f572ee72b
commit
f1996a6f1f
|
@ -57,12 +57,13 @@ table_at_capacity(Table *table){
|
||||||
internal b32
|
internal b32
|
||||||
table_add(Table *table, void *item, void *arg, Hash_Function *hash_func, Compare_Function *comp_func){
|
table_add(Table *table, void *item, void *arg, Hash_Function *hash_func, Compare_Function *comp_func){
|
||||||
u32 hash, *inspect;
|
u32 hash, *inspect;
|
||||||
i32 i;
|
i32 i, start;
|
||||||
|
|
||||||
Assert(table->count * 8 < table->max * 7);
|
Assert(table->count * 8 < table->max * 7);
|
||||||
|
|
||||||
hash = (hash_func(item, arg) | TableHashMin);
|
hash = (hash_func(item, arg) | TableHashMin);
|
||||||
i = hash % table->max;
|
i = hash % table->max;
|
||||||
|
start = i;
|
||||||
inspect = table->hash_array + i;
|
inspect = table->hash_array + i;
|
||||||
|
|
||||||
while (*inspect >= TableHashMin){
|
while (*inspect >= TableHashMin){
|
||||||
|
@ -77,6 +78,7 @@ table_add(Table *table, void *item, void *arg, Hash_Function *hash_func, Compare
|
||||||
i = 0;
|
i = 0;
|
||||||
inspect = table->hash_array;
|
inspect = table->hash_array;
|
||||||
}
|
}
|
||||||
|
Assert(i != start);
|
||||||
}
|
}
|
||||||
*inspect = hash;
|
*inspect = hash;
|
||||||
memcpy(table->data_array + i*table->item_size, item, table->item_size);
|
memcpy(table->data_array + i*table->item_size, item, table->item_size);
|
||||||
|
@ -111,6 +113,7 @@ table_find_pos(Table *table, void *search_key, void *arg, i32 *pos, i32 *index,
|
||||||
i = 0;
|
i = 0;
|
||||||
inspect = table->hash_array;
|
inspect = table->hash_array;
|
||||||
}
|
}
|
||||||
|
if (i == start) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(0);
|
return(0);
|
||||||
|
|
|
@ -28,6 +28,8 @@
|
||||||
|
|
||||||
#include "system_shared.h"
|
#include "system_shared.h"
|
||||||
|
|
||||||
|
#define SUPPORT_DPI 1
|
||||||
|
|
||||||
#define FPS 60
|
#define FPS 60
|
||||||
#define frame_useconds (1000000 / FPS)
|
#define frame_useconds (1000000 / FPS)
|
||||||
|
|
||||||
|
@ -168,7 +170,9 @@ struct Win32_Vars{
|
||||||
HWND window_handle;
|
HWND window_handle;
|
||||||
Render_Target target;
|
Render_Target target;
|
||||||
Partition font_part;
|
Partition font_part;
|
||||||
|
#if SUPPORT_DPI
|
||||||
|
i32 dpi_x, dpi_y;
|
||||||
|
#endif
|
||||||
|
|
||||||
u64 count_per_usecond;
|
u64 count_per_usecond;
|
||||||
b32 first;
|
b32 first;
|
||||||
|
@ -1137,6 +1141,15 @@ Sys_CLI_End_Update_Sig(system_cli_end_update){
|
||||||
#include "system_shared.cpp"
|
#include "system_shared.cpp"
|
||||||
#include "4ed_rendering.cpp"
|
#include "4ed_rendering.cpp"
|
||||||
|
|
||||||
|
internal f32
|
||||||
|
size_change(i32 dpi_x, i32 dpi_y){
|
||||||
|
// TODO(allen): We're just hoping dpi_x == dpi_y for now I guess.
|
||||||
|
f32 size_x = win32vars.dpi_x / 96.f;
|
||||||
|
f32 size_y = win32vars.dpi_y / 96.f;
|
||||||
|
f32 size_max = Max(size_x, size_y);
|
||||||
|
return(size_max);
|
||||||
|
}
|
||||||
|
|
||||||
internal
|
internal
|
||||||
Font_Load_Sig(system_draw_font_load){
|
Font_Load_Sig(system_draw_font_load){
|
||||||
if (win32vars.font_part.base == 0){
|
if (win32vars.font_part.base == 0){
|
||||||
|
@ -1145,6 +1158,10 @@ Font_Load_Sig(system_draw_font_load){
|
||||||
|
|
||||||
i32 oversample = 2;
|
i32 oversample = 2;
|
||||||
|
|
||||||
|
#if SUPPORT_DPI
|
||||||
|
pt_size = ROUND32(pt_size * size_change(win32vars.dpi_x, win32vars.dpi_y));
|
||||||
|
#endif
|
||||||
|
|
||||||
for (b32 success = 0; success == 0;){
|
for (b32 success = 0; success == 0;){
|
||||||
success = draw_font_load(&win32vars.font_part,
|
success = draw_font_load(&win32vars.font_part,
|
||||||
font_out,
|
font_out,
|
||||||
|
@ -1947,9 +1964,18 @@ WinMain(HINSTANCE hInstance,
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HDC hdc = GetDC(win32vars.window_handle);
|
||||||
|
|
||||||
// TODO(allen): not Windows XP compatible, do we care?
|
#if SUPPORT_DPI
|
||||||
// SetProcessDPIAware();
|
// TODO(allen): not Windows XP compatible, how do I handle that?
|
||||||
|
SetProcessDPIAware();
|
||||||
|
|
||||||
|
win32vars.dpi_x = GetDeviceCaps(hdc, LOGPIXELSX);
|
||||||
|
win32vars.dpi_y = GetDeviceCaps(hdc, LOGPIXELSY);
|
||||||
|
#else
|
||||||
|
win32vars.dpi_x = 1;
|
||||||
|
win32vars.dpi_y = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
GetClientRect(win32vars.window_handle, &window_rect);
|
GetClientRect(win32vars.window_handle, &window_rect);
|
||||||
|
|
||||||
|
@ -1971,7 +1997,6 @@ WinMain(HINSTANCE hInstance,
|
||||||
0,
|
0,
|
||||||
0, 0, 0 };
|
0, 0, 0 };
|
||||||
|
|
||||||
HDC hdc = GetDC(win32vars.window_handle);
|
|
||||||
{
|
{
|
||||||
i32 pixel_format;
|
i32 pixel_format;
|
||||||
pixel_format = ChoosePixelFormat(hdc, &pfd);
|
pixel_format = ChoosePixelFormat(hdc, &pfd);
|
||||||
|
|
Loading…
Reference in New Issue