34 Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
35 Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged)
36 Q_PROPERTY(
float depth READ depth WRITE setDepth NOTIFY depthChanged)
37 Q_PROPERTY(
float scale READ scale WRITE setScale NOTIFY scaleChanged FINAL)
38 Q_PROPERTY(
bool asynchronous READ asynchronous WRITE setAsynchronous NOTIFY asynchronousChanged)
39 Q_PROPERTY(Status status READ status NOTIFY statusChanged)
41 QML_ADDED_IN_VERSION(6, 9)
43 enum Status { Null, Ready, Loading, Error };
46 explicit ExtrudedTextGeometry(QQuick3DObject *parent =
nullptr);
47 ~ExtrudedTextGeometry() override;
50 void setText(
const QString &newText);
53 void setFont(
const QFont &newFont);
56 void setDepth(
float newDepth);
59 void setScale(
float newScale);
61 bool asynchronous()
const;
62 void setAsynchronous(
bool newAsynchronous);
64 Status status()
const;
66 using IndexType = quint32;
69 void doUpdateGeometry();
70 void requestFinished();
77 void asynchronousChanged();
82 QByteArray vertexData;
88 void scheduleGeometryUpdate();
89 void updateGeometry(
const GeometryData &geometryData);
91 static ExtrudedTextGeometry::GeometryData generateExtrudedTextGeometry(
const QString &text,
95#if QT_CONFIG(concurrent)
96 static void generateExtrudedTextGeometryAsync(QPromise<ExtrudedTextGeometry::GeometryData> &promise,
105 QFont m_font = QFont(QStringLiteral(
"Arial"), 4);
106 float m_depth = 1.0f;
107 float m_scale = 1.0f;
108 bool m_asynchronous =
true;
109 Status m_status = Null;
110#if QT_CONFIG(concurrent)
111 QFuture<GeometryData> m_geometryDataFuture;
112 QFutureWatcher<GeometryData> m_geometryDataWatcher;
114 bool m_geometryUpdateRequested =
false;
115 bool m_pendingAsyncUpdate =
false;