mirror of https://github.com/snes9xgit/snes9x.git
GTK+: Add integer scaling settings to aspect ratio
This commit is contained in:
parent
4017727bdf
commit
ef1d232897
|
@ -66,7 +66,7 @@ S9xGetAspect (void)
|
||||||
double native_aspect = 256.0 / (gui_config->overscan ? 239.0 : 224.0);
|
double native_aspect = 256.0 / (gui_config->overscan ? 239.0 : 224.0);
|
||||||
double aspect;
|
double aspect;
|
||||||
|
|
||||||
switch (gui_config->aspect_ratio)
|
switch (gui_config->aspect_ratio / 2)
|
||||||
{
|
{
|
||||||
case 0: /* Square pixels */
|
case 0: /* Square pixels */
|
||||||
aspect = native_aspect;
|
aspect = native_aspect;
|
||||||
|
@ -93,6 +93,7 @@ S9xApplyAspect (int &s_width, /* Output: x */
|
||||||
{
|
{
|
||||||
double screen_aspect = (double) d_width / (double) d_height;
|
double screen_aspect = (double) d_width / (double) d_height;
|
||||||
double snes_aspect = S9xGetAspect ();
|
double snes_aspect = S9xGetAspect ();
|
||||||
|
bool integer = gui_config->aspect_ratio & 1;
|
||||||
double granularity = 1.0 / (double) MAX (d_width, d_height);
|
double granularity = 1.0 / (double) MAX (d_width, d_height);
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
||||||
|
@ -114,7 +115,22 @@ S9xApplyAspect (int &s_width, /* Output: x */
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (gui_config->maintain_aspect_ratio && integer)
|
||||||
|
{
|
||||||
|
for (h = s_height * 2; h <= d_height && (int)(h * (snes_aspect) + 0.5) <= d_width; h += s_height) {}
|
||||||
|
h -= s_height;
|
||||||
|
w = h * snes_aspect + 0.5;
|
||||||
|
x = (d_width - w) / 2;
|
||||||
|
y = (d_height - h) / 2;
|
||||||
|
|
||||||
|
if (w > d_width || h > d_height)
|
||||||
|
{
|
||||||
|
w = d_width;
|
||||||
|
h = d_height;
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (gui_config->maintain_aspect_ratio &&
|
else if (gui_config->maintain_aspect_ratio &&
|
||||||
!(screen_aspect <= snes_aspect * (1.0 + granularity) &&
|
!(screen_aspect <= snes_aspect * (1.0 + granularity) &&
|
||||||
screen_aspect >= snes_aspect * (1.0 - granularity)))
|
screen_aspect >= snes_aspect * (1.0 - granularity)))
|
||||||
|
@ -125,9 +141,7 @@ S9xApplyAspect (int &s_width, /* Output: x */
|
||||||
h = d_height;
|
h = d_height;
|
||||||
x = (d_width - w) / 2;
|
x = (d_width - w) / 2;
|
||||||
y = 0;
|
y = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
w = d_width;
|
w = d_width;
|
||||||
|
|
|
@ -912,12 +912,21 @@
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">8:7 Square pixels</col>
|
<col id="0" translatable="yes">8:7 Square pixels</col>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<col id="0" translatable="yes">8:7 Square pixels, integer multiples</col>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">4:3 SNES correct aspect</col>
|
<col id="0" translatable="yes">4:3 SNES correct aspect</col>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<col id="0" translatable="yes">4:3 SNES correct aspect, integer multiples</col>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">8*8:7*7 NTSC</col>
|
<col id="0" translatable="yes">8*8:7*7 NTSC</col>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<col id="0" translatable="yes">8*8:7*7 NTSC, integer multiples</col>
|
||||||
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkListStore" id="liststore14">
|
<object class="GtkListStore" id="liststore14">
|
||||||
|
|
Loading…
Reference in New Issue