36 Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
37 Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
38 Q_PROPERTY(
float depth READ depth WRITE setDepth NOTIFY depthChanged)
39 Q_PROPERTY(
float scale READ scale WRITE setScale NOTIFY scaleChanged FINAL)
40 Q_PROPERTY(
bool asynchronous READ asynchronous WRITE setAsynchronous NOTIFY asynchronousChanged)
41 Q_PROPERTY(Status status READ status NOTIFY statusChanged)
43 QML_ADDED_IN_VERSION(6, 9)
45 enum Status { Null, Ready, Loading, Error };
48 explicit ExtrudedTextGeometry(QQuick3DObject *parent =
nullptr);
49 ~ExtrudedTextGeometry() override;
52 void setText(
const QString &newText);
55 void setFont(
const QFont &newFont);
58 void setDepth(
float newDepth);
61 void setScale(
float newScale);
63 bool asynchronous()
const;
64 void setAsynchronous(
bool newAsynchronous);
66 Status status()
const;
68 using IndexType = quint32;
71 void doUpdateGeometry();
72 void requestFinished();
79 void asynchronousChanged();
84 QByteArray vertexData;
90 void scheduleGeometryUpdate();
91 void updateGeometry(
const GeometryData &geometryData);
93 static ExtrudedTextGeometry::GeometryData generateExtrudedTextGeometry(
const QString &text,
97#if QT_CONFIG(concurrent)
98 static void generateExtrudedTextGeometryAsync(QPromise<ExtrudedTextGeometry::GeometryData> &promise,
107 QFont m_font = QFont(QStringLiteral(
"Arial"), 4);
108 float m_depth = 1.0f;
109 float m_scale = 1.0f;
110 bool m_asynchronous =
true;
111 Status m_status = Null;
112#if QT_CONFIG(concurrent)
113 QFuture<GeometryData> m_geometryDataFuture;
114 QFutureWatcher<GeometryData> m_geometryDataWatcher;
116 bool m_geometryUpdateRequested =
false;
117 bool m_pendingAsyncUpdate =
false;