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 QVector<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
121 void updateMaterial();
123 static std::array<QVector2D, 3> curveABC(
const std::array<QVector2D, 3> &p);
125 static const bool envStrokeExpanding;
127 ushort m_cosmetic =
false;
128 float m_strokeWidth = 0.0f;
129 float m_debug = 0.0f;
130 float m_localScale = 1.0f;
133 QScopedPointer<QSGCurveStrokeMaterial> m_material;
135 QVector<StrokeVertex> m_uncookedVertexes;
136 QVector<quint32> m_uncookedIndexes;