Krita Source Code Documentation
Loading...
Searching...
No Matches
KoPencilTool.h
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2007, 2009 Jan Hambrecht <jaham@gmx.net>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7#ifndef _KOPENCILTOOL_H_
8#define _KOPENCILTOOL_H_
9
10#include "KoFlakeTypes.h"
11#include "KoToolBase.h"
12#include <kconfiggroup.h>
13#include <qcolor.h>
14
15class KoPathShape;
16class KoShapeStroke;
17class KoPathPoint;
19
20#include "kritabasicflakes_export.h"
21
22class KRITABASICFLAKES_EXPORT KoPencilTool : public KoToolBase
23{
24 Q_OBJECT
25public:
26 explicit KoPencilTool(KoCanvasBase *canvas);
27 ~KoPencilTool() override;
28
29 void paint(QPainter &painter, const KoViewConverter &converter) override;
30
31 void mousePressEvent(KoPointerEvent *event) override ;
32 void mouseMoveEvent(KoPointerEvent *event) override;
33 void mouseReleaseEvent(KoPointerEvent *event) override;
34 void keyPressEvent(QKeyEvent *event) override;
35
36 void activate(const QSet<KoShape*> &shapes) override;
37 void deactivate() override;
38
39protected:
41
47 virtual void addPathShape(KoPathShape* path, bool closePath);
48
49 KoShapeStrokeSP createStroke();
50 KoPathShape * path();
51 void setFittingError(qreal fittingError);
52 qreal getFittingError();
53 void setStrokeColor(QColor color);
54
55private Q_SLOTS:
56 void selectMode(int mode);
57 void setOptimize(int state);
58 void setDelta(double delta);
59
60protected Q_SLOTS:
61 virtual void slotUpdatePencilCursor();
62
63private:
64
65 qreal lineAngle(const QPointF &p1, const QPointF &p2);
66 void addPoint(const QPointF & point);
67 void finish(bool closePath);
68
70 KoPathPoint* endPointAtPosition(const QPointF &position);
71
73 bool connectPaths(KoPathShape *pathShape, KoPathPoint *pointAtStart, KoPathPoint *pointAtEnd);
74
75 enum PencilMode { ModeRaw, ModeCurve, ModeStraight };
76
77 PencilMode m_mode {ModeCurve};
78 bool m_optimizeRaw {false};
79 bool m_optimizeCurve {false};
80 qreal m_combineAngle {15.0};
81 qreal m_fittingError {5.0};
82 bool m_close {false};
84
85 QList<QPointF> m_points; // the raw points
86
87 KoPathShape * m_shape {0};
88 KoPathPoint *m_existingStartPoint {0};
89 KoPathPoint *m_existingEndPoint {0};
90 KoPathPoint *m_hoveredPoint {0};
91 KoStrokeConfigWidget *m_strokeWidget {0};
92
93 KConfigGroup m_configGroup;
94};
95
96#endif // _KOPENCILTOOL_H_
QPointF p2
QPointF p1
A KoPathPoint represents a point in a path.
The position of a path point within a path shape.
Definition KoPathShape.h:63
QList< QPointF > m_points
KConfigGroup m_configGroup
QColor m_strokeColor
A widget for configuring the stroke of a shape.
virtual QList< QPointer< QWidget > > createOptionWidgets()
virtual void mousePressEvent(KoPointerEvent *event)=0
virtual void mouseMoveEvent(KoPointerEvent *event)=0
virtual void activate(const QSet< KoShape * > &shapes)
virtual void mouseReleaseEvent(KoPointerEvent *event)=0
virtual void keyPressEvent(QKeyEvent *event)
virtual void deactivate()
virtual void paint(QPainter &painter, const KoViewConverter &converter)=0