mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-29 05:30:41 +00:00
dd0d88f9d7
This way warning icons and tank change icons and other event markers are no longer ridiculously tiny on retina screens. Oddly this doesn't appear to be needed on Android, only on iOS. Fixes #1033 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
65 lines
1.1 KiB
C++
65 lines
1.1 KiB
C++
/*
|
|
* metrics.cpp
|
|
*
|
|
* methods to find/compute essential UI metrics
|
|
* (font properties, icon sizes, etc)
|
|
*
|
|
*/
|
|
|
|
#include "metrics.h"
|
|
|
|
static IconMetrics dfltIconMetrics;
|
|
|
|
IconMetrics::IconMetrics() :
|
|
sz_small(-1),
|
|
sz_med(-1),
|
|
sz_big(-1),
|
|
sz_pic(-1),
|
|
spacing(-1),
|
|
dpr(1.0)
|
|
{
|
|
}
|
|
|
|
QFont defaultModelFont()
|
|
{
|
|
QFont font;
|
|
// font.setPointSizeF(font.pointSizeF() * 0.8);
|
|
return font;
|
|
}
|
|
|
|
QFontMetrics defaultModelFontMetrics()
|
|
{
|
|
return QFontMetrics(defaultModelFont());
|
|
}
|
|
|
|
// return the default icon size, computed as the multiple of 16 closest to
|
|
// the given height
|
|
static int defaultIconSize(int height)
|
|
{
|
|
int ret = (height + 8)/16;
|
|
ret *= 16;
|
|
if (ret < 16)
|
|
ret = 16;
|
|
return ret;
|
|
}
|
|
|
|
const IconMetrics & defaultIconMetrics()
|
|
{
|
|
if (dfltIconMetrics.sz_small == -1) {
|
|
int small = defaultIconSize(defaultModelFontMetrics().height());
|
|
dfltIconMetrics.sz_small = small;
|
|
dfltIconMetrics.sz_med = small + small/2;
|
|
dfltIconMetrics.sz_big = 2*small;
|
|
|
|
dfltIconMetrics.sz_pic = 8*small;
|
|
|
|
dfltIconMetrics.spacing = small/8;
|
|
}
|
|
|
|
return dfltIconMetrics;
|
|
}
|
|
|
|
void updateDevicePixelRatio(double dpr)
|
|
{
|
|
dfltIconMetrics.dpr = dpr;
|
|
}
|