mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-11 15:21:51 +00:00
- enforce 320x200 minimum in actual scaling code
This commit is contained in:
parent
d84497c85a
commit
682b0ebf48
1 changed files with 25 additions and 7 deletions
|
@ -28,11 +28,26 @@
|
||||||
|
|
||||||
#define NUMSCALEMODES 6
|
#define NUMSCALEMODES 6
|
||||||
|
|
||||||
|
extern bool setsizeneeded;
|
||||||
|
|
||||||
EXTERN_CVAR(Int, vid_aspect)
|
EXTERN_CVAR(Int, vid_aspect)
|
||||||
CVAR(Int, vid_scale_customwidth, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
CUSTOM_CVAR(Int, vid_scale_customwidth, 320, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||||
CVAR(Int, vid_scale_customheight, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
{
|
||||||
|
if (self < 320)
|
||||||
|
self = 320;
|
||||||
|
setsizeneeded = true;
|
||||||
|
}
|
||||||
|
CUSTOM_CVAR(Int, vid_scale_customheight, 200, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||||
|
{
|
||||||
|
if (self < 200)
|
||||||
|
self = 200;
|
||||||
|
setsizeneeded = true;
|
||||||
|
}
|
||||||
CVAR(Bool, vid_scale_customlinear, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
CVAR(Bool, vid_scale_customlinear, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||||
CVAR(Bool, vid_scale_customstretched, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
CUSTOM_CVAR(Bool, vid_scale_customstretched, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||||
|
{
|
||||||
|
setsizeneeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
|
@ -57,8 +72,6 @@ namespace
|
||||||
};
|
};
|
||||||
bool isOutOfBounds(int x)
|
bool isOutOfBounds(int x)
|
||||||
{
|
{
|
||||||
if (vScaleTable[x].isCustom)
|
|
||||||
return ((vid_scale_customwidth < 80) || (vid_scale_customheight < 50));
|
|
||||||
return (x < 0 || x >= NUMSCALEMODES || vScaleTable[x].isValid == false);
|
return (x < 0 || x >= NUMSCALEMODES || vScaleTable[x].isValid == false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,13 +101,18 @@ bool ViewportLinearScale()
|
||||||
return (vid_scalefactor > 1.0) ? true : vScaleTable[vid_scalemode].isLinear;
|
return (vid_scalefactor > 1.0) ? true : vScaleTable[vid_scalemode].isLinear;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline int max(int a, int b)
|
||||||
|
{
|
||||||
|
return (a < b) ? a : b;
|
||||||
|
}
|
||||||
|
|
||||||
int ViewportScaledWidth(int width, int height)
|
int ViewportScaledWidth(int width, int height)
|
||||||
{
|
{
|
||||||
if (isOutOfBounds(vid_scalemode))
|
if (isOutOfBounds(vid_scalemode))
|
||||||
vid_scalemode = 0;
|
vid_scalemode = 0;
|
||||||
if (vid_cropaspect && height > 0)
|
if (vid_cropaspect && height > 0)
|
||||||
width = ((float)width/height > ActiveRatio(width, height)) ? (int)(height * ActiveRatio(width, height)) : width;
|
width = ((float)width/height > ActiveRatio(width, height)) ? (int)(height * ActiveRatio(width, height)) : width;
|
||||||
return vScaleTable[vid_scalemode].GetScaledWidth((int)((float)width * vid_scalefactor));
|
return max(320, vScaleTable[vid_scalemode].GetScaledWidth((int)((float)width * vid_scalefactor)));
|
||||||
}
|
}
|
||||||
|
|
||||||
int ViewportScaledHeight(int width, int height)
|
int ViewportScaledHeight(int width, int height)
|
||||||
|
@ -103,7 +121,7 @@ int ViewportScaledHeight(int width, int height)
|
||||||
vid_scalemode = 0;
|
vid_scalemode = 0;
|
||||||
if (vid_cropaspect && height > 0)
|
if (vid_cropaspect && height > 0)
|
||||||
height = ((float)width/height < ActiveRatio(width, height)) ? (int)(width / ActiveRatio(width, height)) : height;
|
height = ((float)width/height < ActiveRatio(width, height)) ? (int)(width / ActiveRatio(width, height)) : height;
|
||||||
return vScaleTable[vid_scalemode].GetScaledHeight((int)((float)height * vid_scalefactor));
|
return max(200, vScaleTable[vid_scalemode].GetScaledHeight((int)((float)height * vid_scalefactor)));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ViewportIsScaled43()
|
bool ViewportIsScaled43()
|
||||||
|
|
Loading…
Reference in a new issue