32 void setColor(QColor col) override
35 markDirty(DirtyMaterial);
43 void setCosmeticStroke(
bool c)
46 markDirty(DirtyMaterial);
49 void setStrokeWidth(
float width)
51 m_strokeWidth = width;
52 markDirty(DirtyMaterial);
55 float strokeWidth()
const
59 return (m_cosmetic ? -1.0 : 1.0) * qAbs(m_strokeWidth);
62 enum class TriangleFlag {
66 Q_DECLARE_FLAGS(TriangleFlags, TriangleFlag)
68 static constexpr std::array<
float, 3> defaultExtrusions() {
return {1.0f, 1.0f, 1.0f}; }
70 void appendTriangle(
const std::array<QVector2D, 3> &vtx,
71 const std::array<QVector2D, 3> &ctl,
72 const std::array<QVector2D, 3> &normal,
73 const std::array<
float, 3> &extrusions = defaultExtrusions());
74 void appendTriangle(
const std::array<QVector2D, 3> &vtx,
75 const std::array<QVector2D, 2> &ctl,
76 const std::array<QVector2D, 3> &normal,
77 const std::array<
float, 3> &extrusions = defaultExtrusions());
79 void cookGeometry() override;
81 static const QSGGeometry::AttributeSet &attributes();
83 static bool expandingStrokeEnabled();
85 QList<quint32> uncookedIndexes()
const
87 return m_uncookedIndexes;
95 void setDebug(
float newDebug)
100 void setLocalScale(
float scale)
102 m_localScale = scale;
105 float localScale()
const
110 bool useStandardDerivatives()
const
112 return m_useStandardDerivatives;
115 void setUseStandardDerivatives(
bool useStandardDerivatives) override
117 m_useStandardDerivatives = useStandardDerivatives;
132 void updateMaterial();
134 static std::array<QVector2D, 3> curveABC(
const std::array<QVector2D, 3> &p);
136 static const bool envStrokeExpanding;
138 ushort m_cosmetic =
false;
139 float m_strokeWidth = 0.0f;
140 float m_debug = 0.0f;
141 float m_localScale = 1.0f;
142 bool m_useStandardDerivatives =
false;
145 QScopedPointer<QSGCurveStrokeMaterial> m_material;
147 QList<StrokeVertex> m_uncookedVertexes;
148 QList<quint32> m_uncookedIndexes;