3#include "resources/config.h"
5#include <QFontDatabase>
6#include <QGuiApplication>
14struct Renderer::InternalData {
15 explicit InternalData(
int id);
16 static constexpr int invalidId = -1;
19 QStringList fontFamilies;
22Renderer::InternalData::InternalData(
int id)
24 , fontFamilies(id != invalidId ? QFontDatabase::applicationFontFamilies(id) : QStringList())
40Renderer::Renderer(
const QString &fontFileName)
41 : m_d(std::make_unique<InternalData>(
42 QFontDatabase::addApplicationFont(fontFileName.isEmpty() ? QStringLiteral(
":/" META_FONT_FILE_NAME) : fontFileName)))
50 : m_d(std::make_unique<InternalData>(QFontDatabase::addApplicationFont(fontData)))
59 if (QCoreApplication::instance() && m_d->id != InternalData::invalidId) {
60 QFontDatabase::removeApplicationFont(m_d->id);
67Renderer::operator bool()
const
69 return !m_d->fontFamilies.empty();
80 auto font = QFont(m_d->fontFamilies.front());
81 font.setPixelSize(rect.height());
83 painter->setFont(font);
84 painter->setPen(color);
85 painter->drawText(rect, QString(character), QTextOption(Qt::AlignCenter));
94 const auto scaleFactor =
95#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
96 !QCoreApplication::testAttribute(Qt::AA_UseHighDpiPixmaps) ? 1.0 :
98 qGuiApp->devicePixelRatio();
99 const auto scaledSize = QSize(size * scaleFactor);
100 auto pm = QPixmap(scaledSize);
101 pm.fill(QColor(Qt::transparent));
102 auto painter = QPainter(&pm);
103 render(icon, &painter, QRect(QPoint(), scaledSize), color);
104 pm.setDevicePixelRatio(scaleFactor);
Renderer(const QString &fontFileName=QString())
Constructs a new renderer with the given fontFileName.
~Renderer()
Destructs the renderer.
QPixmap pixmap(QChar icon, const QSize &size, const QColor &color) const
Renders the specified character as pixmap of the specified size.
void render(QChar character, QPainter *painter, const QRect &rect, const QColor &color) const
Renders the specified icon using the specified painter.
Contains classes provided by the QtForkAwesome library.
Icon
The Icon enum specifies a ForkAwesome icon for calling QtForkAwesome::Renderer::render().
std::remove_reference_t< decltype(QChar().unicode())> IconBaseType