CmvrControlStation/src/uiicons.h

49 lines
1.8 KiB
C++

#pragma once
#include <QColor>
#include <QIcon>
#include <QPainter>
#include <QPixmap>
namespace UiIcons {
inline QPixmap tintedPixmap(const QString &resourcePath, const QColor &color,
int size = 18)
{
const QPixmap source(resourcePath);
if (source.isNull())
return QPixmap();
const QPixmap scaled = source.scaled(size, size, Qt::KeepAspectRatio,
Qt::SmoothTransformation);
QPixmap result(size, size);
result.fill(Qt::transparent);
QPainter painter(&result);
painter.drawPixmap((size - scaled.width()) / 2,
(size - scaled.height()) / 2, scaled);
painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
painter.fillRect(result.rect(), color);
return result;
}
inline QIcon icon(const QString &resourcePath,
const QColor &normal = QColor(QStringLiteral("#46535f")),
const QColor &selected = QColor(QStringLiteral("#ffffff")),
const QColor &disabled = QColor(QStringLiteral("#9aa3ad")),
int size = 18)
{
QIcon result;
const QPixmap normalPixmap = tintedPixmap(resourcePath, normal, size);
const QPixmap selectedPixmap = tintedPixmap(resourcePath, selected, size);
const QPixmap disabledPixmap = tintedPixmap(resourcePath, disabled, size);
result.addPixmap(normalPixmap, QIcon::Normal, QIcon::Off);
result.addPixmap(selectedPixmap, QIcon::Active, QIcon::Off);
result.addPixmap(selectedPixmap, QIcon::Normal, QIcon::On);
result.addPixmap(selectedPixmap, QIcon::Active, QIcon::On);
result.addPixmap(disabledPixmap, QIcon::Disabled, QIcon::Off);
result.addPixmap(disabledPixmap, QIcon::Disabled, QIcon::On);
return result;
}
} // namespace UiIcons