Improve GUI scaling

master
MoNTE48 2022-01-08 22:17:25 +02:00
parent 4e0bbd68a6
commit f4848f1a71
1 changed files with 17 additions and 22 deletions

View File

@ -2101,6 +2101,20 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
double fitx_imgsize;
double fity_imgsize;
#if defined(__ANDROID__) || defined(__IOS__)
fitx_imgsize = mydata.screensize.X /
((5.0 / 4.0) * (0.5 + mydata.invsize.X));
fity_imgsize = mydata.screensize.Y /
((15.0 / 13.0) * (0.85 + mydata.invsize.Y));
// In Android, the preferred imgsize should be larger to accommodate the
// smaller screensize.
double prefer_imgsize = mydata.screensize.Y / 10 * gui_scaling;
// Try to fit 13 coordinates on large tablets.
if (g_settings->getBool("device_is_tablet"))
prefer_imgsize = mydata.screensize.Y / 13 * gui_scaling;
#else
// Pad the screensize with 5% of the screensize on all sides to ensure
// that even the largest formspecs don't touch the screen borders.
v2f padded_screensize(
@ -2108,32 +2122,13 @@ void GUIFormSpecMenu::regenerateGui(v2u32 screensize)
mydata.screensize.Y * 0.9f
);
fitx_imgsize = mydata.screensize.X /
((5.0 / 4.0) * (0.5 + mydata.invsize.X));
fity_imgsize = mydata.screensize.Y /
((15.0 / 13.0) * (0.85 + mydata.invsize.Y));
#if defined(__ANDROID__) || defined(__IOS__)
// In Android, the preferred imgsize should be larger to accommodate the
// smaller screensize.
double prefer_imgsize = mydata.screensize.Y / 10 * gui_scaling;
// Try to fit 13 coordinates on large tablets.
if (g_settings->getBool("device_is_tablet"))
prefer_imgsize = padded_screensize.Y / 13 * gui_scaling;
fitx_imgsize = floor(mydata.screensize.X /
(1.5 * (0.5 + mydata.invsize.X)));
fity_imgsize = floor(mydata.screensize.Y /
(1.15 * (0.85 + mydata.invsize.Y)));
#else
// Desktop computers have more space, so try to fit 15 coordinates.
double prefer_imgsize = padded_screensize.Y / 15 * gui_scaling;
fitx_imgsize = padded_screensize.X /
((5.0 / 4.0) * (0.5 + mydata.invsize.X));
fity_imgsize = padded_screensize.Y /
((15.0 / 13.0) * (0.85 + mydata.invsize.Y));
// Desktop computers have more space, so try to fit 15 coordinates.
double prefer_imgsize = padded_screensize.Y / 15 * gui_scaling;
#endif
// Try to use the preferred imgsize, but if that's bigger than the maximum
// size, use the maximum size.