1 files changed, 30 insertions, 0 deletions
diff --git a/src/ColorImageProvider.cpp b/src/ColorImageProvider.cpp
new file mode 100644
index 00000000..92e4732b
--- /dev/null
+++ b/src/ColorImageProvider.cpp
@@ -0,0 +1,30 @@
+#include "ColorImageProvider.h"
+
+#include "Logging.h"
+#include <QPainter>
+
+QPixmap
+ColorImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &)
+{
+ auto args = id.split('?');
+
+ nhlog::ui()->info("Loading {}, source is {}", id.toStdString(), args[0].toStdString());
+
+ QPixmap source(args[0]);
+
+ if (size)
+ *size = QSize(source.width(), source.height());
+
+ if (args.size() < 2)
+ return source;
+
+ QColor color(args[1]);
+
+ QPixmap colorized = source;
+ QPainter painter(&colorized);
+ painter.setCompositionMode(QPainter::CompositionMode_SourceIn);
+ painter.fillRect(colorized.rect(), color);
+ painter.end();
+
+ return colorized;
+}
|