summaryrefslogtreecommitdiffstats
path: root/src/datavis3d/utils/utils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavis3d/utils/utils.cpp')
-rw-r--r--src/datavis3d/utils/utils.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/datavis3d/utils/utils.cpp b/src/datavis3d/utils/utils.cpp
index 74e7cca7..f7138602 100644
--- a/src/datavis3d/utils/utils.cpp
+++ b/src/datavis3d/utils/utils.cpp
@@ -45,6 +45,7 @@
#include <QColor>
#include <QPainter>
#include <QPoint>
+#include <QImage>
#include <qmath.h>
@@ -140,4 +141,51 @@ void Utils::printText(QPainter *painter, const QString &text, const QPoint &posi
painter->restore();
}
+QImage Utils::printTextToImage(const QString &text, const QColor &bgrColor, const QColor &txtColor
+ , bool noBackground)
+{
+ // Calculate text dimensions
+ QFont valueFont = QFont(QStringLiteral("Arial"), 11);
+ valueFont.setBold(true);
+ QFontMetrics valueFM(valueFont);
+ int valueStrWidth = valueFM.width(text);
+ int valueStrHeight = valueFM.height();
+ QSize labelSize;
+ if (noBackground)
+ labelSize = QSize(valueStrWidth, valueStrHeight);
+ else
+ labelSize = QSize(valueStrWidth + 10, valueStrHeight + 10);
+
+ // Create image
+ QImage image = QImage(labelSize, QImage::Format_ARGB32);
+
+ // Init painter
+ QPainter painter(&image);
+ // Paint text
+ painter.setRenderHint(QPainter::Antialiasing, true);
+ painter.setCompositionMode(QPainter::CompositionMode_Source);
+ if (noBackground) {
+ painter.setBackgroundMode(Qt::OpaqueMode);
+ painter.setBackground(Qt::transparent);
+ painter.setBrush(Qt::transparent);
+ painter.setFont(valueFont);
+ painter.setPen(txtColor);
+ painter.drawText(0, 0
+ , valueStrWidth, valueStrHeight
+ , Qt::AlignCenter | Qt::AlignVCenter
+ , text);
+ } else {
+ painter.setBrush(QBrush(bgrColor));
+ painter.setPen(bgrColor);
+ painter.drawRect(0, 0, labelSize.width(), labelSize.height());
+ painter.setFont(valueFont);
+ painter.setPen(txtColor);
+ painter.drawText(5, 5
+ , valueStrWidth, valueStrHeight
+ , Qt::AlignCenter | Qt::AlignVCenter
+ , text);
+ }
+ return image;
+}
+
QTCOMMERCIALDATAVIS3D_END_NAMESPACE