31 void setColor(QColor col) override
34 markDirty(DirtyMaterial);
42 void setCosmeticStroke(
bool c)
45 markDirty(DirtyMaterial);
48 void setStrokeWidth(
float width)
50 m_strokeWidth = width;
51 markDirty(DirtyMaterial);
54 float strokeWidth()
const
58 return (m_cosmetic ? -1.0 : 1.0) * qAbs(m_strokeWidth);
61 enum class TriangleFlag {
65 Q_DECLARE_FLAGS(TriangleFlags, TriangleFlag)
67 static constexpr std::array<
float, 3> defaultExtrusions() {
return {1.0f, 1.0f, 1.0f}; }
69 void appendTriangle(
const std::array<QVector2D, 3> &vtx,
70 const std::array<QVector2D, 3> &ctl,
71 const std::array<QVector2D, 3> &normal,
72 const std::array<
float, 3> &extrusions = defaultExtrusions());
73 void appendTriangle(
const std::array<QVector2D, 3> &vtx,
74 const std::array<QVector2D, 2> &ctl,
75 const std::array<QVector2D, 3> &normal,
76 const std::array<
float, 3> &extrusions = defaultExtrusions());
78 void cookGeometry() override;
80 static const QSGGeometry::AttributeSet &attributes();
82 static bool expandingStrokeEnabled();
84 QList<quint32> uncookedIndexes()
const
86 return m_uncookedIndexes;
94 void setDebug(
float newDebug)
99 void setLocalScale(
float scale)
101 m_localScale = scale;
104 float localScale()
const
109 bool useStandardDerivatives()
const
111 return m_useStandardDerivatives;
114 void setUseStandardDerivatives(
bool useStandardDerivatives) override
116 m_useStandardDerivatives = useStandardDerivatives;
131 void updateMaterial();
133 static std::array<QVector2D, 3> curveABC(
const std::array<QVector2D, 3> &p);
135 static const bool envStrokeExpanding;
137 ushort m_cosmetic =
false;
138 float m_strokeWidth = 0.0f;
139 float m_debug = 0.0f;
140 float m_localScale = 1.0f;
141 bool m_useStandardDerivatives =
false;
144 QScopedPointer<QSGCurveStrokeMaterial> m_material;
146 QList<StrokeVertex> m_uncookedVertexes;
147 QList<quint32> m_uncookedIndexes;