Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_tool_paint.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2003 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KIS_TOOL_PAINT_H_
8#define KIS_TOOL_PAINT_H_
9
10#include "kis_tool.h"
11#include "kis_tool_utils.h"
12
13#include <QGridLayout>
14#include <QPainterPath>
15#include <QCheckBox>
16
18#include <KoToolBase.h>
20
21#include <kritaui_export.h>
22
23#include <kis_types.h>
24#include <kis_image.h>
26#include <resources/KoPattern.h>
29
30class QGridLayout;
31class KoCompositeOp;
32class KoCanvasBase;
33
34class KRITAUI_EXPORT KisToolPaint : public KisTool
35{
36
37 Q_OBJECT
38
39public:
40 KisToolPaint(KoCanvasBase *canvas, const QCursor &cursor);
41 ~KisToolPaint() override;
42 int flags() const override;
43
44 void mousePressEvent(KoPointerEvent *event) override;
45 void mouseReleaseEvent(KoPointerEvent *event) override;
46 void mouseMoveEvent(KoPointerEvent *event) override;
47
49
50protected:
51
52 void setMode(ToolMode mode) override;
53
54 void canvasResourceChanged(int key, const QVariant &v) override;
55
56 void paint(QPainter &gc, const KoViewConverter &converter) override;
57
58 void activatePrimaryAction() override;
59 void deactivatePrimaryAction() override;
60
61 void activateAlternateAction(AlternateAction action) override;
62 void deactivateAlternateAction(AlternateAction action) override;
63
64 void beginAlternateAction(KoPointerEvent *event, AlternateAction action) override;
65 void continueAlternateAction(KoPointerEvent *event, AlternateAction action) override;
66 void endAlternateAction(KoPointerEvent *event, AlternateAction action) override;
67
68 virtual void requestUpdateOutline(const QPointF &outlineDocPoint, const KoPointerEvent *event);
69
73 void setSupportOutline(bool supportOutline) {
74 m_supportOutline = supportOutline;
75 }
76
77 virtual KisOptimizedBrushOutline getOutlinePath(const QPointF &documentPos,
78 const KoPointerEvent *event,
80
81protected:
82 bool isOutlineEnabled() const;
83 void setOutlineEnabled(bool enabled);
84 bool isOutlineVisible() const;
85 void setOutlineVisible(bool visible);
86
87 bool isEraser() const;
88
90 void addOptionWidgetLayout(QLayout *layout);
91
93 virtual void addOptionWidgetOption(QWidget *control, QWidget *label = nullptr);
94
95 void showControl(QWidget *control, bool value);
96 void enableControl(QWidget *control, bool value);
97
98 QWidget * createOptionWidget() override;
99
103 virtual QString quickHelp() const {
104 return QString();
105 }
106
107public Q_SLOTS:
108 void activate(const QSet<KoShape*> &shapes) override;
109 void deactivate() override;
110
111private Q_SLOTS:
112
113 void slotColorPickerRequestedCursor(const QCursor &cursor);
114 void slotColorPickerRequestedCursorReset();
115 void slotColorPickerRequestedOutlineUpdate();
116
117 void slotPopupQuickHelp();
118
119 void increaseBrushSize();
120 void decreaseBrushSize();
121 void showBrushSize();
122
123 void rotateBrushTipClockwise();
124 void rotateBrushTipClockwisePrecise();
125 void rotateBrushTipCounterClockwise();
126 void rotateBrushTipCounterClockwisePrecise();
127
128protected:
129 bool m_paintOutline {false};
134
135private:
136 KisOptimizedBrushOutline tryFixBrushOutline(const KisOptimizedBrushOutline &originalOutline);
137 bool isSamplingAction(AlternateAction action);
138private:
139
140 bool m_specialHoverModifier {false};
141 QGridLayout *m_optionsWidgetLayout {nullptr};
142
143 bool m_supportOutline {false};
144
152
154 qreal m_oldOpacity {1.0};
155 bool m_oldPresetIsDirty {false};
156 int m_oldPresetVersion {-1};
158
159 void tryRestoreOpacitySnapshot();
160
161 struct Private;
162 QScopedPointer<Private> m_d;
163
164Q_SIGNALS:
166};
167
168#endif // KIS_TOOL_PAINT_H_
169
float value(const T *src, size_t ch)
qreal v
The PopupWidgetInterface abstract class defines the basic interface that will be used by all popup wi...
QRectF m_oldColorPreviewUpdateRect
void setSupportOutline(bool supportOutline)
QPointF m_outlineDocPoint
QRectF m_oldOutlineRect
KisPaintOpPresetSP m_oldPreset
void sigPaintingFinished()
QScopedPointer< Private > m_d
KisOptimizedBrushOutline m_currentOutline
KisAsyncColorSamplerHelper m_colorSamplerHelper
virtual QString quickHelp() const
KisToolUtils::StandardBrushSizes m_standardBrushSizes
virtual KisPopupWidgetInterface * popupWidget()
Definition KoToolBase.h:340
virtual void paint(QPainter &painter, const KoViewConverter &converter)=0
virtual void activatePrimaryAction()
Definition kis_tool.cc:421
QWidget * createOptionWidget() override
Definition kis_tool.cc:578
void mouseReleaseEvent(KoPointerEvent *event) override
Definition kis_tool.cc:515
virtual void continueAlternateAction(KoPointerEvent *event, AlternateAction action)
Definition kis_tool.cc:477
virtual void activateAlternateAction(AlternateAction action)
Definition kis_tool.cc:456
virtual void deactivateAlternateAction(AlternateAction action)
Definition kis_tool.cc:461
virtual int flags() const
Definition kis_tool.h:52
virtual void endAlternateAction(KoPointerEvent *event, AlternateAction action)
Definition kis_tool.cc:483
void mousePressEvent(KoPointerEvent *event) override
Definition kis_tool.cc:510
void canvasResourceChanged(int key, const QVariant &res) override
Definition kis_tool.cc:139
void mouseMoveEvent(KoPointerEvent *event) override
Definition kis_tool.cc:520
void activate(const QSet< KoShape * > &shapes) override
Definition kis_tool.cc:93
void deactivate() override
Definition kis_tool.cc:131
virtual void beginAlternateAction(KoPointerEvent *event, AlternateAction action)
Definition kis_tool.cc:466
virtual void deactivatePrimaryAction()
Definition kis_tool.cc:426
AlternateAction
Definition kis_tool.h:134
virtual void setMode(ToolMode mode)
Definition kis_tool.cc:403