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
12#include <QGridLayout>
13#include <QPainterPath>
14#include <QCheckBox>
15
17#include <KoToolBase.h>
19
20#include <kritaui_export.h>
21
22#include <kis_types.h>
23#include <kis_image.h>
25#include <resources/KoPattern.h>
28
29class QGridLayout;
30class KoCompositeOp;
31class KoCanvasBase;
32
33class KRITAUI_EXPORT KisToolPaint : public KisTool
34{
35
36 Q_OBJECT
37
38public:
39 KisToolPaint(KoCanvasBase *canvas, const QCursor &cursor);
40 ~KisToolPaint() override;
41 int flags() const override;
42
43 void mousePressEvent(KoPointerEvent *event) override;
44 void mouseReleaseEvent(KoPointerEvent *event) override;
45 void mouseMoveEvent(KoPointerEvent *event) override;
46
48
49protected:
50
51 void setMode(ToolMode mode) override;
52
53 void canvasResourceChanged(int key, const QVariant &v) override;
54
55 void paint(QPainter &gc, const KoViewConverter &converter) override;
56
57 void activatePrimaryAction() override;
58 void deactivatePrimaryAction() override;
59
60 void activateAlternateAction(AlternateAction action) override;
61 void deactivateAlternateAction(AlternateAction action) override;
62
63 void beginAlternateAction(KoPointerEvent *event, AlternateAction action) override;
64 void continueAlternateAction(KoPointerEvent *event, AlternateAction action) override;
65 void endAlternateAction(KoPointerEvent *event, AlternateAction action) override;
66
67 virtual void requestUpdateOutline(const QPointF &outlineDocPoint, const KoPointerEvent *event);
68
72 void setSupportOutline(bool supportOutline) {
73 m_supportOutline = supportOutline;
74 }
75
76 virtual KisOptimizedBrushOutline getOutlinePath(const QPointF &documentPos,
77 const KoPointerEvent *event,
79
80protected:
81 bool isOutlineEnabled() const;
82 void setOutlineEnabled(bool enabled);
83 bool isOutlineVisible() const;
84 void setOutlineVisible(bool visible);
85
86 bool isEraser() const;
87
89 void addOptionWidgetLayout(QLayout *layout);
90
92 virtual void addOptionWidgetOption(QWidget *control, QWidget *label = nullptr);
93
94 void showControl(QWidget *control, bool value);
95 void enableControl(QWidget *control, bool value);
96
97 QWidget * createOptionWidget() override;
98
102 virtual QString quickHelp() const {
103 return QString();
104 }
105
106public Q_SLOTS:
107 void activate(const QSet<KoShape*> &shapes) override;
108 void deactivate() override;
109
110private Q_SLOTS:
111
112 void slotColorPickerRequestedCursor(const QCursor &cursor);
113 void slotColorPickerRequestedCursorReset();
114 void slotColorPickerRequestedOutlineUpdate();
115
116 void slotPopupQuickHelp();
117
118 void increaseBrushSize();
119 void decreaseBrushSize();
120 void showBrushSize();
121
122 void rotateBrushTipClockwise();
123 void rotateBrushTipClockwisePrecise();
124 void rotateBrushTipCounterClockwise();
125 void rotateBrushTipCounterClockwisePrecise();
126
127protected:
128 bool m_paintOutline {false};
133
134private:
135 KisOptimizedBrushOutline tryFixBrushOutline(const KisOptimizedBrushOutline &originalOutline);
136 bool isSamplingAction(AlternateAction action);
137private:
138
139 bool m_specialHoverModifier {false};
140 QGridLayout *m_optionsWidgetLayout {nullptr};
141
142 bool m_supportOutline {false};
143
150 std::vector<int> m_standardBrushSizes;
151
153 qreal m_oldOpacity {1.0};
154 bool m_oldPresetIsDirty {false};
155 int m_oldPresetVersion {-1};
157
158 void tryRestoreOpacitySnapshot();
159
160 struct Private;
161 QScopedPointer<Private> m_d;
162
163Q_SIGNALS:
165};
166
167#endif // KIS_TOOL_PAINT_H_
168
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
std::vector< int > m_standardBrushSizes
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
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