void ChangeSize(void) { float offset_y; switch (screen_aspectmodehint) { case 0: //4:3 if (settings.scr_res_x >= settings.scr_res_y * 4.0f / 3.0f) { settings.res_y = settings.scr_res_y; settings.res_x = (uint32_t)(settings.res_y * 4.0f / 3.0f); } else { settings.res_x = settings.scr_res_x; settings.res_y = (uint32_t)(settings.res_x / 4.0f * 3.0f); } break; case 1: //16:9 if (settings.scr_res_x >= settings.scr_res_y * 16.0f / 9.0f) { settings.res_y = settings.scr_res_y; settings.res_x = (uint32_t)(settings.res_y * 16.0f / 9.0f); } else { settings.res_x = settings.scr_res_x; settings.res_y = (uint32_t)(settings.res_x / 16.0f * 9.0f); } break; default: //stretch or original settings.res_x = settings.scr_res_x; settings.res_y = settings.scr_res_y; } _ChangeSize (); rdp.offset_x = (settings.scr_res_x - settings.res_x) / 2.0f; offset_y = (settings.scr_res_y - settings.res_y) / 2.0f; settings.res_x += (uint32_t)rdp.offset_x; settings.res_y += (uint32_t)offset_y; rdp.offset_y += offset_y; if (settings.aspectmode == 3) // original { rdp.scale_x = rdp.scale_y = 1.0f; rdp.offset_x = (settings.scr_res_x - rdp.vi_width) / 2.0f; rdp.offset_y = (settings.scr_res_y - rdp.vi_height) / 2.0f; } // settings.res_x = settings.scr_res_x; // settings.res_y = settings.scr_res_y; }
void SetDefaultSize(int size){ _defaultSize = size; _ChangeSize(size); }