4
#include "arthurwidgets.h"
6
class PathStrokeRenderer : public ArthurFrame
10
enum PathMode { CurveMode, LineMode };
12
PathStrokeRenderer(QWidget *parent);
14
void paint(QPainter *);
15
void mousePressEvent(QMouseEvent *e);
16
void mouseMoveEvent(QMouseEvent *e);
17
void mouseReleaseEvent(QMouseEvent *e);
18
void timerEvent(QTimerEvent *e);
20
QSize sizeHint() const { return QSize(500, 500); }
23
void setPenWidth(int penWidth) { m_penWidth = penWidth / 10.0; update(); }
24
void setAnimation(bool animation);
26
void setFlatCap() { m_capStyle = Qt::FlatCap; update(); }
27
void setSquareCap() { m_capStyle = Qt::SquareCap; update(); }
28
void setRoundCap() { m_capStyle = Qt::RoundCap; update(); }
30
void setBevelJoin() { m_joinStyle = Qt::BevelJoin; update(); }
31
void setMiterJoin() { m_joinStyle = Qt::MiterJoin; update(); }
32
void setRoundJoin() { m_joinStyle = Qt::RoundJoin; update(); }
34
void setCurveMode() { m_pathMode = CurveMode; update(); }
35
void setLineMode() { m_pathMode = LineMode; update(); }
37
void setSolidLine() { m_penStyle = Qt::SolidLine; update(); }
38
void setDashLine() { m_penStyle = Qt::DashLine; update(); }
39
void setDotLine() { m_penStyle = Qt::DotLine; update(); }
40
void setDashDotLine() { m_penStyle = Qt::DashDotLine; update(); }
41
void setDashDotDotLine() { m_penStyle = Qt::DashDotDotLine; update(); }
42
void setCustomDashLine() { m_penStyle = Qt::NoPen; update(); }
45
void initializePoints();
58
QVector<QPointF> m_points;
59
QVector<QPointF> m_vectors;
61
Qt::PenJoinStyle m_joinStyle;
62
Qt::PenCapStyle m_capStyle;
64
Qt::PenStyle m_penStyle;
67
class PathStrokeWidget : public QWidget
74
PathStrokeRenderer *m_renderer;
77
#endif // PATHSTROKE_H