forked from qt-creator/qt-creator
Add StyleHelper functions for icon font
Change-Id: I783f3405dafbd51bf7433084709a2362ed2bd759 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -28,6 +28,8 @@
|
|||||||
#include "theme/theme.h"
|
#include "theme/theme.h"
|
||||||
#include "hostosinfo.h"
|
#include "hostosinfo.h"
|
||||||
|
|
||||||
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
#include <QPixmapCache>
|
#include <QPixmapCache>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
@@ -35,6 +37,7 @@
|
|||||||
#include <QCommonStyle>
|
#include <QCommonStyle>
|
||||||
#include <QStyleOption>
|
#include <QStyleOption>
|
||||||
#include <QWindow>
|
#include <QWindow>
|
||||||
|
#include <QFontDatabase>
|
||||||
#include <qmath.h>
|
#include <qmath.h>
|
||||||
|
|
||||||
// Clamps float color values within (0, 255)
|
// Clamps float color values within (0, 255)
|
||||||
@@ -542,6 +545,48 @@ QLinearGradient StyleHelper::statusBarGradient(const QRect &statusBarRect)
|
|||||||
return grad;
|
return grad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize, QColor color)
|
||||||
|
{
|
||||||
|
QFontDatabase a;
|
||||||
|
|
||||||
|
QTC_ASSERT(a.hasFamily(fontName), {});
|
||||||
|
|
||||||
|
if (a.hasFamily(fontName)) {
|
||||||
|
|
||||||
|
QIcon icon;
|
||||||
|
QSize size(iconSize, iconSize);
|
||||||
|
|
||||||
|
const int maxDpr = qRound(qApp->devicePixelRatio());
|
||||||
|
for (int dpr = 1; dpr <= maxDpr; dpr++) {
|
||||||
|
QPixmap pixmap(size * dpr);
|
||||||
|
pixmap.setDevicePixelRatio(dpr);
|
||||||
|
pixmap.fill(Qt::transparent);
|
||||||
|
|
||||||
|
QFont font(fontName);
|
||||||
|
font.setPixelSize(fontSize * dpr);
|
||||||
|
|
||||||
|
QPainter painter(&pixmap);
|
||||||
|
painter.save();
|
||||||
|
painter.setPen(color);
|
||||||
|
painter.setFont(font);
|
||||||
|
painter.drawText(QRectF(QPoint(0, 0), size), iconSymbol);
|
||||||
|
painter.restore();
|
||||||
|
|
||||||
|
icon.addPixmap(pixmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize)
|
||||||
|
{
|
||||||
|
QColor penColor = QApplication::palette("QWidget").color(QPalette::Normal, QPalette::ButtonText);
|
||||||
|
return getIconFromIconFont(fontName, iconSymbol, fontSize, iconSize, penColor);
|
||||||
|
}
|
||||||
|
|
||||||
QString StyleHelper::dpiSpecificImageFile(const QString &fileName)
|
QString StyleHelper::dpiSpecificImageFile(const QString &fileName)
|
||||||
{
|
{
|
||||||
// See QIcon::addFile()
|
// See QIcon::addFile()
|
||||||
|
@@ -93,6 +93,9 @@ public:
|
|||||||
static void tintImage(QImage &img, const QColor &tintColor);
|
static void tintImage(QImage &img, const QColor &tintColor);
|
||||||
static QLinearGradient statusBarGradient(const QRect &statusBarRect);
|
static QLinearGradient statusBarGradient(const QRect &statusBarRect);
|
||||||
|
|
||||||
|
static QIcon getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize, QColor color);
|
||||||
|
static QIcon getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize);
|
||||||
|
|
||||||
static QString dpiSpecificImageFile(const QString &fileName);
|
static QString dpiSpecificImageFile(const QString &fileName);
|
||||||
static QString imageFileWithResolution(const QString &fileName, int dpr);
|
static QString imageFileWithResolution(const QString &fileName, int dpr);
|
||||||
static QList<int> availableImageResolutions(const QString &fileName);
|
static QList<int> availableImageResolutions(const QString &fileName);
|
||||||
|
Reference in New Issue
Block a user