getaspectratio
Jump to navigation
Jump to search
Returns the aspect ratio of the user's resolution by using nearly the same method ZDoom uses internally. Requires the abs function.
#define ASPECT_4_3 (4.0 / 3) #define ASPECT_5_4 1.25 #define ASPECT_16_9 (16.0 / 9) #define ASPECT_16_10 1.6 #define ASPECT_17_10 1.7 function int getaspectratio(void) { int width = GetCVar("vid_defwidth"); int height = GetCVar("vid_defheight"); int nowidescreen = GetCVar("vid_nowidescreen"); int tft = GetCVar("vid_tft"); int aspect = GetCVar("vid_aspect"); switch(aspect) { case 1: return ASPECT_16_9; case 2: return ASPECT_16_10; case 3: return ASPECT_4_3; case 4: return ASPECT_5_4; case 5: return ASPECT_17_10; } if(nowidescreen) { if(!tft) return ASPECT_4_3; if(height * ASPECT_5_4 == width<<16) return ASPECT_5_4; else return ASPECT_4_3; } if(abs((abs(height * ASPECT_16_9)>>16) - width) < 10) { return ASPECT_16_9; } if(abs((abs(height * ASPECT_17_10)>>16) - width) < 10) { return ASPECT_17_10; } if(abs((abs(height * ASPECT_16_10)>>16) - width) < 60) { if((width == 320 && height == 200) || (width == 640 && height == 400)) return ASPECT_4_3; return ASPECT_16_10; } if((height * ASPECT_5_4)>>16 == width && tft) { return ASPECT_5_4; } return ASPECT_4_3; }