mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-20 20:40:29 +08:00
Ref T220, font metric utility functions
Allows to obtain sizes based on number of characters
This commit is contained in:
@@ -404,4 +404,47 @@ namespace BlackGui
|
|||||||
a->start(QPropertyAnimation::DeleteWhenStopped);
|
a->start(QPropertyAnimation::DeleteWhenStopped);
|
||||||
return effect;
|
return effect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QFontMetrics CGuiUtility::currentFontMetrics()
|
||||||
|
{
|
||||||
|
const QWidget *w = CGuiUtility::mainApplicationWindow();
|
||||||
|
if (w) { return w->fontMetrics(); }
|
||||||
|
return QApplication::fontMetrics();
|
||||||
|
}
|
||||||
|
|
||||||
|
QFont CGuiUtility::currentFont()
|
||||||
|
{
|
||||||
|
const QWidget *w = CGuiUtility::mainApplicationWindow();
|
||||||
|
if (w) { return w->font(); }
|
||||||
|
return QApplication::font();
|
||||||
|
}
|
||||||
|
|
||||||
|
QSize CGuiUtility::fontMetrics80Chars()
|
||||||
|
{
|
||||||
|
static const QString s("01234567890123456789012345678901234567890123456789012345678901234567890123456789");
|
||||||
|
const QFontMetrics fm = CGuiUtility::currentFontMetrics();
|
||||||
|
const int w = fm.width(s);
|
||||||
|
const int h = fm.height();
|
||||||
|
return QSize(w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
QSize CGuiUtility::fontMetricsLazyDog43Chars()
|
||||||
|
{
|
||||||
|
// 43 characters 0123456789012345678901234567890123456789012
|
||||||
|
static const QString s("The quick brown fox jumps over the lazy dog");
|
||||||
|
const QFontMetrics fm = CGuiUtility::currentFontMetrics();
|
||||||
|
const int w = fm.width(s);
|
||||||
|
const int h = fm.height();
|
||||||
|
return QSize(w, h);
|
||||||
|
}
|
||||||
|
|
||||||
|
QSize CGuiUtility::fontMetricsEstimateSize(int xCharacters, int yCharacters)
|
||||||
|
{
|
||||||
|
const QSize s1 = CGuiUtility::fontMetrics80Chars();
|
||||||
|
const QSize s2 = CGuiUtility::fontMetricsLazyDog43Chars();
|
||||||
|
const QSize s = s1 + s2;
|
||||||
|
const int w = s.width() * xCharacters / 123;
|
||||||
|
const int h = s.height() * yCharacters / 2;
|
||||||
|
return QSize(w, h);
|
||||||
|
}
|
||||||
} // ns
|
} // ns
|
||||||
|
|||||||
@@ -16,10 +16,13 @@
|
|||||||
#include "blackmisc/variant.h"
|
#include "blackmisc/variant.h"
|
||||||
|
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
|
#include <QSize>
|
||||||
#include <QPoint>
|
#include <QPoint>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QWidgetList>
|
#include <QWidgetList>
|
||||||
|
#include <QFont>
|
||||||
|
#include <QFontMetrics>
|
||||||
#include <QModelIndexList>
|
#include <QModelIndexList>
|
||||||
|
|
||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
@@ -131,6 +134,21 @@ namespace BlackGui
|
|||||||
//! Fade out a widget
|
//! Fade out a widget
|
||||||
static QGraphicsOpacityEffect *fadeOutWidget(int durationMs, QWidget *widget, double startValue = 1.0, double endValue = 0.0);
|
static QGraphicsOpacityEffect *fadeOutWidget(int durationMs, QWidget *widget, double startValue = 1.0, double endValue = 0.0);
|
||||||
|
|
||||||
|
//! Main window font metrics or default metrics
|
||||||
|
static QFontMetrics currentFontMetrics();
|
||||||
|
|
||||||
|
//! Main window font or default font
|
||||||
|
static QFont currentFont();
|
||||||
|
|
||||||
|
//! 80 characters width/height
|
||||||
|
static QSize fontMetrics80Chars();
|
||||||
|
|
||||||
|
//! 43 characters width/height "the quick brown ..."
|
||||||
|
static QSize fontMetricsLazyDog43Chars();
|
||||||
|
|
||||||
|
//! Estimate size based on current font
|
||||||
|
static QSize fontMetricsEstimateSize(int xCharacters, int yCharacters);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//! Constructor, use static methods only
|
//! Constructor, use static methods only
|
||||||
CGuiUtility() {}
|
CGuiUtility() {}
|
||||||
|
|||||||
Reference in New Issue
Block a user