Getaspectratio: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
m formatting |
m Add 17:10 support |
||
| Line 6: | Line 6: | ||
#define ASPECT_16_9 (16.0 / 9) |
#define ASPECT_16_9 (16.0 / 9) |
||
#define ASPECT_16_10 1.6 |
#define ASPECT_16_10 1.6 |
||
#define ASPECT_17_10 1.7 |
|||
function int getaspectratio(void) |
function int getaspectratio(void) |
||
| Line 20: | Line 21: | ||
case 3: return ASPECT_4_3; |
case 3: return ASPECT_4_3; |
||
case 4: return ASPECT_5_4; |
case 4: return ASPECT_5_4; |
||
case 5: return ASPECT_17_10; |
|||
} |
} |
||
if(nowidescreen) |
if(nowidescreen) |
||
| Line 33: | Line 35: | ||
{ |
{ |
||
return ASPECT_16_9; |
return ASPECT_16_9; |
||
} |
|||
if(abs((abs([[FixedMul]](height<<16, [[FixedDiv]](17.0, 10.0)))>>16) - width) < 10) |
|||
{ |
|||
return ASPECT_17_10; |
|||
} |
} |
||
if(abs((abs([[FixedMul]](height<<16, [[FixedDiv]](16.0, 10.0)))>>16) - width) < 60) |
if(abs((abs([[FixedMul]](height<<16, [[FixedDiv]](16.0, 10.0)))>>16) - width) < 60) |
||
Revision as of 06:58, 7 December 2015
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(FixedMul(height<<16, FixedDiv(5.0, 4.0)) == width<<16)
return ASPECT_5_4;
else
return ASPECT_4_3;
}
if(abs((abs(FixedMul(height<<16, FixedDiv(16.0, 9.0)))>>16) - width) < 10)
{
return ASPECT_16_9;
}
if(abs((abs(FixedMul(height<<16, FixedDiv(17.0, 10.0)))>>16) - width) < 10)
{
return ASPECT_17_10;
}
if(abs((abs(FixedMul(height<<16, FixedDiv(16.0, 10.0)))>>16) - width) < 60)
{
if((width == 320 && height == 200) || (width == 640 && height == 400))
return ASPECT_4_3;
return ASPECT_16_10;
}
if(FixedMul(height<<16, FixedDiv(5.0, 4.0))>>16 == width && tft)
{
return ASPECT_5_4;
}
return ASPECT_4_3;
}