mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
b3e4c9c8da
The icons shown in the dive list were rendered for every single access. Render them only once. This supposes that the defaultIconMetrics structure does not change once the icons are rendered! Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
65 lines
1.1 KiB
C++
65 lines
1.1 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* 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;
|
|
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;
|
|
}
|