cutter/src/common/SvgIconEngine.cpp
2021-01-24 18:34:16 +02:00

52 lines
1.2 KiB
C++

#include "SvgIconEngine.h"
#include <QSvgRenderer>
#include <QPainter>
#include <QFile>
#include "Helpers.h"
SvgIconEngine::SvgIconEngine(const QString &filename)
{
QFile file(filename);
file.open(QFile::ReadOnly);
this->svgData = file.readAll();
}
SvgIconEngine::SvgIconEngine(const QString &filename, const QColor &tintColor)
: SvgIconEngine(filename)
{
this->svgData = qhelpers::applyColorToSvg(svgData, tintColor);
}
SvgIconEngine::SvgIconEngine(const QString &filename, QPalette::ColorRole colorRole)
: SvgIconEngine(filename, QPalette().color(colorRole))
{
}
void SvgIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode /*mode*/,
QIcon::State /*state*/)
{
QSvgRenderer renderer(svgData);
renderer.render(painter, rect);
}
QIconEngine *SvgIconEngine::clone() const
{
return new SvgIconEngine(*this);
}
QPixmap SvgIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state)
{
QImage img(size, QImage::Format_ARGB32);
img.fill(qRgba(0, 0, 0, 0));
QPixmap pix = QPixmap::fromImage(img, Qt::NoFormatConversion);
{
QPainter painter(&pix);
QRect r(QPoint(0, 0), size);
this->paint(&painter, r, mode, state);
}
return pix;
}