diff options
author | Tomi Korpipaa <tomi.korpipaa@qt.io> | 2018-09-10 07:31:34 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@qt.io> | 2018-09-10 08:18:42 +0000 |
commit | 5a63525949e73cc90836f830ee1f221cfb567be9 (patch) | |
tree | d514c071b3ba52a1ca8e174bcba20578d1a0660c | |
parent | f6aaaa09b068f97ffcdc872e5979e98883061483 (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.cpp | 36 |
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 |