diff options
Diffstat (limited to 'core/metrics.cpp')
-rw-r--r-- | core/metrics.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/core/metrics.cpp b/core/metrics.cpp new file mode 100644 index 000000000..3c66528b8 --- /dev/null +++ b/core/metrics.cpp @@ -0,0 +1,65 @@ +/* + * 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; +} |