mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-13 01:28:10 +03:00
AgeAgeAgeAgeAgain
This commit is contained in:
+118
-31
@@ -5,34 +5,124 @@
|
||||
|
||||
#include "resolution_mode.hpp"
|
||||
|
||||
const resolution_table_struct resolution_table[] = {
|
||||
{ 320, 240, 0, 0, 0, 320, 225 },
|
||||
{ 640, 480, 0, 0, 60, 640, 360 },
|
||||
{ 800, 600, 0, 0, 75, 800, 450 },
|
||||
{ 1024, 768, 0, 0, 96, 1024, 576 },
|
||||
{ 1280, 1024, 1, 0, 152, 1280, 720 },
|
||||
{ 1400, 1050, 0, 0, 131, 1400, 788 },
|
||||
{ 1600, 1200, 0, 0, 150, 1600, 900 },
|
||||
{ 800, 480, 2, 0, 15, 800, 450 },
|
||||
{ 1024, 600, 2, 0, 12, 1024, 576 },
|
||||
{ 1280, 768, 2, 0, 24, 1280, 720 },
|
||||
{ 1360, 768, 3, 0, 2, 1360, 765 },
|
||||
{ 1920, 1200, 2, 0, 60, 1920, 1200 },
|
||||
{ 2560, 1536, 2, 0, 48, 2560, 1440 },
|
||||
{ 1280, 720, 3, 0, 0, 1280, 720 },
|
||||
{ 1920, 1080, 3, 0, 0, 1920, 1080 },
|
||||
{ 2560, 1440, 3, 0, 0, 2560, 1440 },
|
||||
{ 480, 272, 3, 0, 0, 480, 272 },
|
||||
{ 960, 544, 3, 0, 0, 960, 544 },
|
||||
struct resolution_mode_scale_data {
|
||||
vec2 scale;
|
||||
vec2 src_res;
|
||||
vec2 dst_res;
|
||||
resolution_mode src_mode;
|
||||
resolution_mode dst_mode;
|
||||
};
|
||||
|
||||
const resolution_table_struct resolution_table[] = {
|
||||
{ 320, 240, 0, 0, 0, 320, 225 }, // QVGA
|
||||
{ 640, 480, 0, 0, 60, 640, 360 }, // VGA
|
||||
{ 800, 600, 0, 0, 75, 800, 450 }, // SVGA
|
||||
{ 1024, 768, 0, 0, 96, 1024, 576 }, // XGA
|
||||
{ 1280, 1024, 1, 0, 152, 1280, 720 }, // SXGA
|
||||
{ 1400, 1050, 0, 0, 131, 1400, 788 }, // SXGA+
|
||||
{ 1600, 1200, 0, 0, 150, 1600, 900 }, // UXGA
|
||||
{ 800, 480, 2, 0, 15, 800, 450 }, // WVGA
|
||||
{ 1024, 600, 2, 0, 12, 1024, 576 }, // WSVGA
|
||||
{ 1280, 768, 2, 0, 24, 1280, 720 }, // WXGA
|
||||
{ 1360, 768, 3, 0, 2, 1360, 765 }, // FWXGA
|
||||
{ 1920, 1200, 2, 0, 60, 1920, 1200 }, // WUXGA
|
||||
{ 2560, 1536, 2, 0, 48, 2560, 1440 }, // WQXGA
|
||||
{ 1280, 720, 3, 0, 0, 1280, 720 }, // HD
|
||||
{ 1920, 1080, 3, 0, 0, 1920, 1080 }, // FHD
|
||||
{ 2560, 1440, 3, 0, 0, 2560, 1440 }, // QHD
|
||||
{ 480, 272, 3, 0, 0, 480, 272 }, // WQVGA
|
||||
{ 960, 544, 3, 0, 0, 960, 544 }, // qHD
|
||||
|
||||
// MM+
|
||||
/*{ 320, 240, 0, 0, 0, 320, 225 }, // QVGA
|
||||
{ 640, 480, 0, 0, 60, 640, 360 }, // VGA
|
||||
{ 800, 600, 0, 0, 75, 800, 450 }, // SVGA
|
||||
{ 1024, 768, 0, 0, 96, 1024, 576 }, // XGA
|
||||
{ 1280, 1024, 1, 0, 152, 1280, 720 }, // SXGA
|
||||
{ 1400, 1050, 0, 0, 131, 1400, 788 }, // SXGA+
|
||||
{ 1600, 1200, 0, 0, 150, 1600, 900 }, // UXGA
|
||||
{ 800, 480, 2, 0, 15, 800, 450 }, // WVGA
|
||||
{ 1024, 600, 2, 0, 12, 1024, 576 }, // WSVGA
|
||||
{ 1280, 768, 2, 0, 24, 1280, 720 }, // WXGA
|
||||
{ 1360, 768, 3, 0, 2, 1360, 765 }, // FWXGA
|
||||
{ 1920, 1200, 2, 0, 60, 1920, 1200 }, // WUXGA
|
||||
{ 2560, 1536, 2, 0, 48, 2560, 1440 }, // WQXGA
|
||||
{ 1280, 720, 3, 0, 0, 1280, 720 }, // HD
|
||||
{ 1920, 1080, 3, 0, 0, 1920, 1080 }, // FHD
|
||||
{ 3840, 2160, 3, 0, 0, 3840, 2160 }, // UHD
|
||||
{ 3840, 2160, 3, 0, 0, 2880, 1620 }, // 3K at UHD
|
||||
{ 2880, 1620, 3, 0, 0, 2880, 1620 }, // 3K
|
||||
{ 2560, 1440, 3, 0, 0, 2560, 1440 }, // QHD
|
||||
{ 480, 272, 3, 0, 0, 480, 272 }, // WQVGA
|
||||
{ 960, 544, 3, 0, 0, 960, 544 }, // qHD
|
||||
{ 1152, 864, 0, 0, 0, 1152, 864 }, // XGA+
|
||||
{ 1176, 664, 3, 0, 0, 1176, 664 }, // 1176x664
|
||||
{ 1200, 960, 1, 0, 0, 1200, 960 }, // 1200x960
|
||||
{ 1280, 800, 2, 0, 0, 1280, 800 }, // WXGA1280x900
|
||||
{ 1280, 960, 0, 0, 0, 1280, 960 }, // SXGA-
|
||||
{ 1366, 768, 3, 0, 0, 1366, 768 }, // FWXGA1366x766
|
||||
{ 1440, 900, 2, 0, 0, 1440, 900 }, // WXGA+
|
||||
{ 1600, 900, 0, 0, 0, 1600, 900 }, // HD+
|
||||
{ 1600, 1024, 2, 0, 0, 1600, 1024 }, // WSXGA
|
||||
{ 1680, 1050, 2, 0, 0, 1680, 1050 }, // WSXGA+
|
||||
{ 1920, 1440, 0, 0, 0, 1920, 1440 }, // 1920x1440
|
||||
{ 2048, 1152, 0, 0, 0, 2048, 1152 }, // QWXGA*/
|
||||
};
|
||||
|
||||
resolution_struct res_window;
|
||||
resolution_struct res_window_internal;
|
||||
|
||||
resolution_struct::resolution_struct(::resolution_mode mode) {
|
||||
resolution_mode = mode;
|
||||
x_offset = 0;
|
||||
y_offset = 0;
|
||||
if (mode == RESOLUTION_MODE_MAX) {
|
||||
width = res_window.width;
|
||||
height = res_window.height;
|
||||
aspect = res_window.aspect;
|
||||
field_20 = res_window.field_20;
|
||||
}
|
||||
else {
|
||||
width = resolution_table[mode].width_full;
|
||||
height = resolution_table[mode].height_full;
|
||||
aspect = (double_t)width / (double_t)height;
|
||||
field_20 = resolution_table[mode].field_8;
|
||||
}
|
||||
}
|
||||
|
||||
resolution_struct* res_window_get() {
|
||||
return &res_window;
|
||||
}
|
||||
|
||||
resolution_struct* res_window_internal_get() {
|
||||
return &res_window_internal;
|
||||
}
|
||||
|
||||
void res_window_set(resolution_mode mode) {
|
||||
res_window = resolution_struct(mode);
|
||||
|
||||
int32_t width = resolution_table[mode].width;
|
||||
int32_t height = resolution_table[mode].height;
|
||||
|
||||
res_window_internal.resolution_mode = RESOLUTION_MODE_MAX;
|
||||
res_window_internal.x_offset = resolution_table[mode].x_offset;
|
||||
res_window_internal.y_offset = resolution_table[mode].y_offset;
|
||||
res_window_internal.width = width;
|
||||
res_window_internal.height = height;
|
||||
res_window_internal.aspect = (double_t)width / (double_t)height;
|
||||
res_window_internal.field_20 = 4;
|
||||
|
||||
for (int32_t i = 0; i < RESOLUTION_MODE_MAX; i++)
|
||||
if (resolution_table[i].width_full == width && resolution_table[i].height_full == height) {
|
||||
res_window_internal.resolution_mode = (resolution_mode)i;
|
||||
res_window_internal.field_20 = resolution_table[i].field_8;
|
||||
}
|
||||
}
|
||||
|
||||
vec2 resolution_mode_get_scale(const resolution_mode dst_mode, const resolution_mode src_mode) {
|
||||
if (dst_mode == RESOLUTION_MODE_END
|
||||
|| src_mode == RESOLUTION_MODE_END
|
||||
|| dst_mode < RESOLUTION_MODE_QVGA
|
||||
|| src_mode < RESOLUTION_MODE_QVGA
|
||||
|| dst_mode >= RESOLUTION_MODE_END
|
||||
|| src_mode >= RESOLUTION_MODE_END)
|
||||
if (dst_mode == RESOLUTION_MODE_MAX || src_mode == RESOLUTION_MODE_MAX
|
||||
|| dst_mode < RESOLUTION_MODE_QVGA || src_mode < RESOLUTION_MODE_QVGA
|
||||
|| dst_mode >= RESOLUTION_MODE_MAX || src_mode >= RESOLUTION_MODE_MAX)
|
||||
return 1.0f;
|
||||
|
||||
float_t scale_x = (float_t)resolution_table[dst_mode].width_full / (float_t)resolution_table[src_mode].width_full;
|
||||
@@ -60,12 +150,9 @@ vec2 resolution_mode_get_scale(const resolution_mode dst_mode, const resolution_
|
||||
|
||||
void resolution_mode_scale_pos(vec2& dst_pos, const resolution_mode dst_mode,
|
||||
const vec2& src_pos, const resolution_mode src_mode) {
|
||||
if (dst_mode == RESOLUTION_MODE_END
|
||||
|| src_mode == RESOLUTION_MODE_END
|
||||
|| dst_mode < RESOLUTION_MODE_QVGA
|
||||
|| src_mode < RESOLUTION_MODE_QVGA
|
||||
|| dst_mode >= RESOLUTION_MODE_END
|
||||
|| src_mode >= RESOLUTION_MODE_END) {
|
||||
if (dst_mode == RESOLUTION_MODE_MAX || src_mode == RESOLUTION_MODE_MAX
|
||||
|| dst_mode < RESOLUTION_MODE_QVGA || src_mode < RESOLUTION_MODE_QVGA
|
||||
|| dst_mode >= RESOLUTION_MODE_MAX || src_mode >= RESOLUTION_MODE_MAX) {
|
||||
dst_pos = src_pos;
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user