1/****************************************************************************
2**
3** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt3D module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:BSD$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** BSD License Usage
18** Alternatively, you may use this file under the terms of the BSD license
19** as follows:
20**
21** "Redistribution and use in source and binary forms, with or without
22** modification, are permitted provided that the following conditions are
23** met:
24** * Redistributions of source code must retain the above copyright
25** notice, this list of conditions and the following disclaimer.
26** * Redistributions in binary form must reproduce the above copyright
27** notice, this list of conditions and the following disclaimer in
28** the documentation and/or other materials provided with the
29** distribution.
30** * Neither the name of The Qt Company Ltd nor the names of its
31** contributors may be used to endorse or promote products derived
32** from this software without specific prior written permission.
33**
34**
35** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
36** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
37** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
38** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
39** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
42** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
43** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
44** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
45** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
46**
47** $QT_END_LICENSE$
48**
49****************************************************************************/
50
51#include "qextrudedtextmesh.h"
52#include "qextrudedtextgeometry.h"
53
54QT_BEGIN_NAMESPACE
55
56namespace Qt3DExtras {
57
58/*!
59 * \qmltype ExtrudedTextMesh
60 * \instantiates Qt3DExtras::QExtrudedTextMesh
61 * \inqmlmodule Qt3D.Extras
62 * \brief A 3D extruded Text mesh.
63 *
64 * The origin of the mesh is the rear left end of the text's baseline.
65 */
66
67/*!
68 * \qmlproperty QString Qt3DExtras::ExtrudedTextMesh::text
69 *
70 * Holds the text used for the mesh.
71 */
72
73/*!
74 * \qmlproperty QFont Qt3DExtras::ExtrudedTextMesh::font
75 *
76 * Holds the font of the text.
77
78 * The mesh geometry is normalized by the font's pointSize, so a larger pointSize
79 * will result in smoother, rather than larger, text. pixelSize should not
80 * be used.
81 */
82
83/*!
84 * \qmlproperty float Qt3DExtras::ExtrudedTextMesh::depth
85 *
86 * Holds the extrusion depth of the text.
87 */
88
89/*!
90 * \class Qt3DExtras::QExtrudedTextMesh
91 * \inheaderfile Qt3DExtras/QExtrudedTextMesh
92 * \inmodule Qt3DExtras
93 *
94 * \inherits Qt3DRender::QGeometryRenderer
95 *
96 * \brief A 3D extruded Text mesh.
97 *
98 * The origin of the mesh is the rear left end of the text's baseline.
99 */
100
101/*!
102 * Constructs a new QText3DMesh with \a parent.
103 */
104QExtrudedTextMesh::QExtrudedTextMesh(Qt3DCore::QNode *parent)
105 : QGeometryRenderer(parent)
106{
107 QExtrudedTextGeometry *geometry = new QExtrudedTextGeometry();
108 QObject::connect(sender: geometry, signal: &QExtrudedTextGeometry::depthChanged, receiver: this, slot: &QExtrudedTextMesh::depthChanged);
109 QObject::connect(sender: geometry, signal: &QExtrudedTextGeometry::textChanged, receiver: this, slot: &QExtrudedTextMesh::textChanged);
110 QObject::connect(sender: geometry, signal: &QExtrudedTextGeometry::fontChanged, receiver: this, slot: &QExtrudedTextMesh::fontChanged);
111 QGeometryRenderer::setGeometry(geometry);
112}
113
114/*! \internal */
115QExtrudedTextMesh::~QExtrudedTextMesh()
116{}
117
118void QExtrudedTextMesh::setText(const QString &text)
119{
120 static_cast<QExtrudedTextGeometry*>(geometry())->setText(text);
121}
122
123void QExtrudedTextMesh::setFont(const QFont &font)
124{
125 static_cast<QExtrudedTextGeometry*>(geometry())->setFont(font);
126}
127
128void QExtrudedTextMesh::setDepth(float depth)
129{
130 static_cast<QExtrudedTextGeometry*>(geometry())->setDepth(depth);
131}
132
133/*!
134 * \property QExtrudedTextMesh::text
135 *
136 * Holds the text used for the mesh.
137 */
138QString QExtrudedTextMesh::text() const
139{
140 return static_cast<QExtrudedTextGeometry*>(geometry())->text();
141}
142
143/*!
144 * \property QExtrudedTextMesh::font
145 *
146 * Holds the font of the text.
147 *
148 * The mesh geometry is normalized by the font's pointSize, so a larger pointSize
149 * will result in smoother, rather than larger, text. pixelSize should not
150 * be used.
151 */
152QFont QExtrudedTextMesh::font() const
153{
154 return static_cast<QExtrudedTextGeometry*>(geometry())->font();
155}
156
157/*!
158 * \property QExtrudedTextMesh::depth
159 *
160 * Holds the extrusion depth of the text.
161 */
162float QExtrudedTextMesh::depth() const
163{
164 return static_cast<QExtrudedTextGeometry*>(geometry())->extrusionLength();
165}
166
167} // namespace Qt3DExtras
168
169QT_END_NAMESPACE
170

source code of qt3d/src/extras/3dtext/qextrudedtextmesh.cpp