summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomi Korpipaa <tomi.korpipaa@qt.io>2018-09-10 07:31:34 +0300
committerTomi Korpipää <tomi.korpipaa@qt.io>2018-09-10 08:18:42 +0000
commit5a63525949e73cc90836f830ee1f221cfb567be9 (patch)
treed514c071b3ba52a1ca8e174bcba20578d1a0660c
parentf6aaaa09b068f97ffcdc872e5979e98883061483 (diff)
Fix text alignment
Task-number: QT3DS-2103 Change-Id: I21a0a25bd89d7230db8051d6d8d0a43210adf268 Reviewed-by: Pasi Keränen <pasi.keranen@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
-rw-r--r--src/runtime/q3dsscenemanager.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/runtime/q3dsscenemanager.cpp b/src/runtime/q3dsscenemanager.cpp
index bca23ca..a073caf 100644
--- a/src/runtime/q3dsscenemanager.cpp
+++ b/src/runtime/q3dsscenemanager.cpp
@@ -4416,6 +4416,42 @@ void Q3DSSceneManager::updateText(Q3DSTextNode *text3DS, bool needsNewImage)
} else {
data->textureImage->update();
}
+
+ // Calculate the required position offsets to match alignments
+ QSize textScale(data->textureImage->size() / 2.0);
+ int textOffsetX = 0;
+ int textOffsetY = 0;
+
+ switch (text3DS->horizontalAlignment()) {
+ case Q3DSTextNode::Left:
+ textOffsetX = textScale.width();
+ break;
+ case Q3DSTextNode::Right:
+ textOffsetX = -textScale.width();
+ break;
+ case Q3DSTextNode::Center:
+ break;
+ }
+
+ switch (text3DS->verticalAlignment()) {
+ case Q3DSTextNode::Top:
+ textOffsetY = -textScale.height();
+ break;
+ case Q3DSTextNode::Bottom:
+ textOffsetY = textScale.height();
+ break;
+ case Q3DSTextNode::Middle:
+ break;
+ }
+
+ if (textOffsetX != 0 && textOffsetY != 0) {
+ QVector3D pos = text3DS->position();
+ Q3DSTextAttached *data = static_cast<Q3DSTextAttached *>(text3DS->attached());
+ data->transform->setTranslation(QVector3D(pos.x() + textOffsetX,
+ pos.y() + textOffsetY,
+ pos.z()));
+ updateGlobals(text3DS, UpdateGlobalsRecursively);
+ }
#else
if (data->textureImage->size() != sz)
data->textureImage->setSize(sz); // this repaints, no need for update() afterwards