Legorol wrote:I'm afraid I still don't see why "old scaling had a problem"
Scaling in 4.3.X has the following limitations:
1. There is no scaling in fullscreen mode. Scale mode is windowed. This means that fully submersed experience cannot be achieved.
2. Scaled mode does not resize window. If your desktop is 1920x1200 and the game you run is 640x480, you will get a distorted desktop (squashed to 4:3) when you return from the game. Who says that I don't want to also work on the desktop? And I would need to manually switch all the time (and I do).
"Auto" scaling in windowed / fullscreen mode would fix everything.
As for the scaling quality, I also hope that the algo improves.
One possible arrangement of options could be this:
1. Checkbox to enable or completely disable scaling.
2. Checkbox/radiobox to select integer scaling or smooth scaling.
3. Checkbox to enable or disable auto scaling. When enabled, exact factor cannot be manually selected (disable section 4.).
4. A control to select exact scaling % factor. In case of integer scaling, select integer number to multiply or divide. Dividing means downscaling (reducing by simply skipping pixels).
In both cases of integer / smooth scaling, I would not limit the factor selection (the user can select even 1% or 100000%).
Instead, add a check when the target resolution is calculated. At this point, both source and available resolution are known.
Let available resolution be the usable client area in window (or fullscreen if we are in fullscreen mode).
Calculating target resolution:
1. If auto scaling is enabled, targer resolution = available resolution.
2. else if integer scaling, find the largest integer which would not overflow available resolution. Calculate target resolution.
3. else if smooth scaling, calculate target resolution from the scaling factor. If the target resolution overflows the available resolution, limit it to available resolution.
At last, don't forget to additionally reduce one dimension of target resolution if required in order to keep the aspect ratio. This may require some extra recalculations in case of integer scaling.