summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-04-09 08:25:17 +0300
committerMika Salmela <mika.salmela@digia.com>2013-04-09 09:36:55 +0300
commita5aa4f957579636caf6e0e78e5bbc54848a1e13f (patch)
tree198e5d40f20a59bdc72dca056c6dce88e8dc1ead /src
parent19ad20b9f5f8ee6fe11fdcc6391f45afba8300bc (diff)
Moved text printing to Utils -class
Fixed examples Change-Id: Idfb0eb511cb03ac4f038c957f0b93bb5736e6b05 Change-Id: Idfb0eb511cb03ac4f038c957f0b93bb5736e6b05 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/datavis3d/engine/q3dbars.cpp43
-rw-r--r--src/datavis3d/utils/utils.cpp48
-rw-r--r--src/datavis3d/utils/utils_p.h4
3 files changed, 53 insertions, 42 deletions
diff --git a/src/datavis3d/engine/q3dbars.cpp b/src/datavis3d/engine/q3dbars.cpp
index 4485c491..b1f0c895 100644
--- a/src/datavis3d/engine/q3dbars.cpp
+++ b/src/datavis3d/engine/q3dbars.cpp
@@ -156,51 +156,10 @@ void Q3DBars::render(QPainter *painter)
painter->endNativePainting();
// If a bar is selected, display it's value
- // TODO: Move text printing to a helper class, so that it can be used from other vis types?
QDataItem *data = d_ptr->m_selectedBar;
if (d_ptr->m_selectionMode < ZoomRow && data) {
glDisable(GL_DEPTH_TEST);
- painter->save();
- painter->setCompositionMode(QPainter::CompositionMode_Source);
- // TODO: None of the commented-out stuff works..
- //painter->setBackgroundMode(Qt::OpaqueMode);
- //painter->setBackground(QBrush(d_ptr->m_textBackgroundColor));
- //painter->setBrush(QBrush(d_ptr->m_textBackgroundColor));
- //painter->setPen(d_ptr->m_textBackgroundColor);
- painter->setPen(Qt::black); // TODO: Use black, as nothing works
- QFont bgrFont = QFont(QStringLiteral("Arial"), 17);
- QFont valueFont = QFont(QStringLiteral("Arial"), 11);
- valueFont.setBold(true);
- painter->setFont(bgrFont);
- QFontMetrics valueFM(valueFont);
- QFontMetrics bgrFM(bgrFont);
- int valueStrLen = valueFM.width(data->d_ptr->valueStr());
- int bgrStrLen = 0;
- int bgrHeight = valueFM.height() + 8;
- QString bgrStr = QString();
- do {
- bgrStr.append(QStringLiteral("I"));
- bgrStrLen = bgrFM.width(bgrStr);
- } while (bgrStrLen <= (valueStrLen + 8));
- //int bgrLen = valueStrLen + 10;
- //painter->drawRoundedRect(data->d_ptr->position().x() - (bgrLen / 2)
- // , data->d_ptr->position().y() - 30
- // , bgrLen, 30, 10.0, 10.0);
- // Hack solution, as drawRect doesn't work
- painter->drawText(data->d_ptr->position().x() - (bgrStrLen / 2)
- , data->d_ptr->position().y() - bgrHeight
- , bgrStrLen, bgrHeight
- , Qt::AlignCenter | Qt::AlignVCenter
- , bgrStr);
- //painter->setPen(d_ptr->m_textColor);
- painter->setPen(Qt::lightGray); // TODO: Use lightGray, as nothing works
- painter->setFont(valueFont);
- painter->drawText(data->d_ptr->position().x() - (valueStrLen / 2)
- , data->d_ptr->position().y() - bgrHeight
- , valueStrLen, bgrHeight
- , Qt::AlignCenter | Qt::AlignVCenter
- , data->d_ptr->valueStr());
- painter->restore();
+ Utils::printText(painter, data->d_ptr->valueStr(), data->d_ptr->position());
}
}
diff --git a/src/datavis3d/utils/utils.cpp b/src/datavis3d/utils/utils.cpp
index fe0b9c5a..6a45b1f4 100644
--- a/src/datavis3d/utils/utils.cpp
+++ b/src/datavis3d/utils/utils.cpp
@@ -43,6 +43,8 @@
#include <QVector3D>
#include <QColor>
+#include <QPainter>
+#include <QPoint>
QTCOMMERCIALDATAVIS3D_BEGIN_NAMESPACE
@@ -51,4 +53,50 @@ QVector3D Utils::vectorFromColor(const QColor &color)
return QVector3D(color.redF(), color.greenF(), color.blueF());
}
+void Utils::printText(QPainter *painter, const QString &text, const QPoint &position)
+{
+ painter->save();
+ painter->setCompositionMode(QPainter::CompositionMode_Source);
+ // TODO: None of the commented-out stuff works..
+ //painter->setBackgroundMode(Qt::OpaqueMode);
+ //painter->setBackground(QBrush(d_ptr->m_textBackgroundColor));
+ //painter->setBrush(QBrush(d_ptr->m_textBackgroundColor));
+ //painter->setPen(d_ptr->m_textBackgroundColor);
+ painter->setPen(Qt::black); // TODO: Use black, as nothing works
+ QFont bgrFont = QFont(QStringLiteral("Arial"), 17);
+ QFont valueFont = QFont(QStringLiteral("Arial"), 11);
+ valueFont.setBold(true);
+ painter->setFont(bgrFont);
+ QFontMetrics valueFM(valueFont);
+ QFontMetrics bgrFM(bgrFont);
+ int valueStrLen = valueFM.width(text);
+ int bgrStrLen = 0;
+ int bgrHeight = valueFM.height() + 8;
+ QString bgrStr = QString();
+ do {
+ bgrStr.append(QStringLiteral("I"));
+ bgrStrLen = bgrFM.width(bgrStr);
+ } while (bgrStrLen <= (valueStrLen + 8));
+ //int bgrLen = valueStrLen + 10;
+ //painter->drawRoundedRect(data->d_ptr->position().x() - (bgrLen / 2)
+ // , data->d_ptr->position().y() - 30
+ // , bgrLen, 30, 10.0, 10.0);
+ // Hack solution, as drawRect doesn't work
+ painter->drawText(position.x() - (bgrStrLen / 2)
+ , position.y() - bgrHeight
+ , bgrStrLen, bgrHeight
+ , Qt::AlignCenter | Qt::AlignVCenter
+ , bgrStr);
+ //painter->setPen(d_ptr->m_textColor);
+ painter->setPen(Qt::lightGray); // TODO: Use lightGray, as nothing works
+ painter->setFont(valueFont);
+ painter->drawText(position.x() - (valueStrLen / 2)
+ , position.y() - bgrHeight
+ , valueStrLen, bgrHeight
+ , Qt::AlignCenter | Qt::AlignVCenter
+ , text);
+ painter->restore();
+
+}
+
QTCOMMERCIALDATAVIS3D_END_NAMESPACE
diff --git a/src/datavis3d/utils/utils_p.h b/src/datavis3d/utils/utils_p.h
index 11ddf61f..4e210fde 100644
--- a/src/datavis3d/utils/utils_p.h
+++ b/src/datavis3d/utils/utils_p.h
@@ -46,6 +46,9 @@
class QVector3D;
class QColor;
+class QPainter;
+class QString;
+class QPoint;
QTCOMMERCIALDATAVIS3D_BEGIN_NAMESPACE
@@ -53,6 +56,7 @@ class Utils
{
public:
static QVector3D vectorFromColor(const QColor &color);
+ static void printText(QPainter *painter, const QString &text, const QPoint &position);
};
QTCOMMERCIALDATAVIS3D_END_NAMESPACE