Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_freehand.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2003-2008 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KIS_TOOL_FREEHAND_H_
8#define KIS_TOOL_FREEHAND_H_
9
13
14#include "kis_types.h"
15#include "kis_tool_paint.h"
18#include "KoPointerEvent.h"
19
20#include "kritaui_export.h"
21
22class KoPointerEvent;
23class KoCanvasBase;
24
27
28
29class KRITAUI_EXPORT KisToolFreehand : public KisToolPaint
30{
31
32 Q_OBJECT
33
34public:
35 KisToolFreehand(KoCanvasBase * canvas, const QCursor & cursor, const KUndo2MagicString &transactionText,
36 bool useSavedSmoothing = true);
37 ~KisToolFreehand() override;
38 int flags() const override;
39 void mouseMoveEvent(KoPointerEvent *event) override;
40
41
42public Q_SLOTS:
43 void activate(const QSet<KoShape*> &shapes) override;
44 void deactivate() override;
45
46protected:
47 bool trySampleByPaintOp(KoPointerEvent *event, AlternateAction action);
48
49 bool primaryActionSupportsHiResEvents() const override;
50 void beginPrimaryAction(KoPointerEvent *event) override;
51 void continuePrimaryAction(KoPointerEvent *event) override;
52 void endPrimaryAction(KoPointerEvent *event) override;
53
54 void activateAlternateAction(AlternateAction action) override;
55 void deactivateAlternateAction(AlternateAction action) override;
56
57 void beginAlternateAction(KoPointerEvent *event, AlternateAction action) override;
58 void continueAlternateAction(KoPointerEvent *event, AlternateAction action) override;
59 void endAlternateAction(KoPointerEvent *event, AlternateAction action) override;
60
61 bool wantsAutoScroll() const override;
62
63
64 virtual void initStroke(KoPointerEvent *event);
65 virtual void doStroke(KoPointerEvent *event);
66 virtual void endStroke();
67
68
69
70 KisOptimizedBrushOutline getOutlinePath(const QPointF &documentPos,
71 const KoPointerEvent *event,
72 KisPaintOpSettings::OutlineMode outlineMode) override;
73
74
75 KisPaintingInformationBuilder* paintingInformationBuilder() const;
76 void resetHelper(KisToolFreehandHelper *helper);
77
78 bool supportsPaintingAssistants() const override;
79
80protected Q_SLOTS:
81
82 void explicitUpdateOutline();
83 void resetCursorStyle() override;
84 void setAssistant(bool assistant);
85 void setOnlyOneAssistantSnap(bool assistant);
86 void setSnapEraser(bool assistant);
87 void slotDoResizeBrush(qreal newSize);
88
89private:
91
96 QPointF adjustPosition(const QPointF& point, const QPointF& strokeBegin);
97
102 qreal calculatePerspective(const QPointF &documentPoint);
103
104private Q_SLOTS:
105 void updateMaskSyntheticEventsFromTouch();
106
107protected:
108 friend class KisViewManager;
109 friend class KisView;
110 KisSmoothingOptionsSP smoothingOptions() const;
111 bool m_assistant {false};
112 double m_magnetism {1.0};
113 bool m_only_one_assistant {true};
114 bool m_eraser_snapping {false};
115
116private:
117 KisPaintingInformationBuilder *m_infoBuilder {nullptr};
118 KisToolFreehandHelper *m_helper {nullptr};
119
122 qreal m_lastPaintOpSize {0.0};
124
125 bool m_paintopBasedSamplingInAction {false};
127
128 std::optional<KoPointerEventWrapper> m_beginAlternateActionEvent;
129};
130
131
132
133#endif // KIS_TOOL_FREEHAND_H_
QPoint m_initialGestureGlobalPoint
QPointF m_initialGestureDocPoint
std::optional< KoPointerEventWrapper > m_beginAlternateActionEvent
KisSignalCompressorWithParam< qreal > m_brushResizeCompressor
virtual KisOptimizedBrushOutline getOutlinePath(const QPointF &documentPos, const KoPointerEvent *event, KisPaintOpSettings::OutlineMode outlineMode)
void deactivate() override
int flags() const override
void activate(const QSet< KoShape * > &shapes) override
void deactivateAlternateAction(AlternateAction action) override
void endAlternateAction(KoPointerEvent *event, AlternateAction action) override
void continueAlternateAction(KoPointerEvent *event, AlternateAction action) override
void activateAlternateAction(AlternateAction action) override
void mouseMoveEvent(KoPointerEvent *event) override
void beginAlternateAction(KoPointerEvent *event, AlternateAction action) override
virtual bool wantsAutoScroll() const
virtual void resetCursorStyle()
Definition kis_tool.cc:613
virtual void beginPrimaryAction(KoPointerEvent *event)
Definition kis_tool.cc:431
virtual void endPrimaryAction(KoPointerEvent *event)
Definition kis_tool.cc:446
virtual void continuePrimaryAction(KoPointerEvent *event)
Definition kis_tool.cc:441
AlternateAction
Definition kis_tool.h:134
virtual bool primaryActionSupportsHiResEvents() const
Definition kis_tool.cc:451
virtual bool supportsPaintingAssistants() const
Definition kis_tool.cc:495