Krita Source Code Documentation
Loading...
Searching...
No Matches
KisToolEncloseAndFill.h
Go to the documentation of this file.
1/*
2 * KDE. Krita Project.
3 *
4 * SPDX-FileCopyrightText: 2022 Deif Lou <ginoba@gmail.com>
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9#ifndef KISTOOLENCLOSEANDFILL_H
10#define KISTOOLENCLOSEANDFILL_H
11
12#include <QPoint>
13#include <QList>
14
15#include <kis_icon.h>
16#include <kis_tool_shape.h>
18#include <KoIcon.h>
19#include <kconfig.h>
20#include <kconfiggroup.h>
24
26
28class KisColorButton;
29class KoGroupButton;
33class QCheckBox;
35class QPushButton;
36class QToolButton;
37class QComboBox;
39
41{
42 Q_OBJECT
43
44public:
53
60
67
69
71 ~KisToolEncloseAndFill() override;
72
73 void beginPrimaryAction(KoPointerEvent *event) override;
80
81 int flags() const override;
82 QWidget* createOptionWidget() override;
83
84public Q_SLOTS:
85 void activate(const QSet<KoShape*> &shapes) override;
86 void deactivate() override;
87
88private:
90
95
97 qreal m_patternScale {100.0};
98 qreal m_patternRotation {0.0};
102
105 int m_closeGap {0};
107
108 bool m_antiAlias {false};
109 int m_expand {0};
111 int m_feather {0};
112 bool m_useActiveLayer {false};
113
116
123
125
131
136
145
149 QCheckBox *m_checkBoxSelectionAsBoundary {nullptr};
150
151 QCheckBox *m_checkBoxAntiAlias {nullptr};
153 QToolButton *m_buttonStopGrowingAtDarkestPixel {nullptr};
155
160 QCheckBox *m_checkBoxUseActiveLayer {nullptr};
161
162 KConfigGroup m_configGroup;
163
165
166 bool wantsAutoScroll() const override { return false; }
167
169 void saveEnclosingMethodToConfig(EnclosingMethod enclosingMethod);
170 QString enclosingMethodToConfigString(EnclosingMethod enclosingMethod) const;
171 EnclosingMethod configStringToEnclosingMethod(const QString &configString) const;
172 static constexpr EnclosingMethod defaultEnclosingMethod() { return Lasso; }
173
174 QString regionSelectionMethodToUserString(RegionSelectionMethod regionSelectionMethod) const;
177 QString regionSelectionMethodToConfigString(RegionSelectionMethod regionSelectionMethod) const;
178 RegionSelectionMethod configStringToRegionSelectionMethod(const QString &configString) const;
179 static constexpr RegionSelectionMethod defaultRegionSelectionMethod() { return RegionSelectionMethod::SelectAllRegions; }
180
182
183 QString referenceToUserString(Reference reference) const;
185 void saveReferenceToConfig(Reference reference);
186 QString referenceToConfigString(Reference reference) const;
187 Reference configStringToReference(const QString &configString) const;
188 static constexpr Reference defaultReference() { return CurrentLayer; }
189
192
193 void loadConfiguration();
194
195private Q_SLOTS:
196 void
198 bool checked);
204 bool checked);
214 void slot_checkBoxAntiAlias_toggled(bool checked);
219 bool checked);
222
223 void slot_currentNodeChanged(const KisNodeSP node);
224 void slot_colorSpaceChanged(const KoColorSpace *colorSpace);
225
227 void slot_checkBoxUseActiveLayer_toggled(bool checked);
228
229 void resetCursorStyle() override;
230};
231
232#endif
float value(const T *src, size_t ch)
const QString COMPOSITE_OVER
A widget with several options to select an angle.
A pushbutton to display or allow user selection of a color.
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
Class providing a list of widgets with some addons such as separators, orientation or individual widg...
This class is a spinbox in which you can click and drag to set the value. A slider like bar is displa...
void saveReferenceToConfig(Reference reference)
void endAlternateAction(KoPointerEvent *event, AlternateAction action) override
void activate(const QSet< KoShape * > &shapes) override
KisAngleSelector * m_angleSelectorPatternRotation
KisEncloseAndFillPainter::RegionSelectionMethod RegionSelectionMethod
void slot_sliderFillOpacitySpread_valueChanged(int value)
void saveEnclosingMethodToConfig(EnclosingMethod enclosingMethod)
void slot_sliderExpand_valueChanged(int value)
KisCompositeOpComboBox * m_comboBoxCustomCompositeOp
void slot_sliderFeather_valueChanged(int value)
QComboBox * m_comboBoxRegionSelectionMethod
RegionSelectionMethod configStringToRegionSelectionMethod(const QString &configString) const
void slot_optionButtonStripEnclosingMethod_buttonToggled(KoGroupButton *button, bool checked)
void deactivateAlternateAction(AlternateAction action) override
KisSliderSpinBox * m_sliderFillThreshold
void slot_delegateTool_enclosingMaskProduced(KisPixelSelectionSP enclosingMask)
QSharedPointer< QRect > m_dirtyRect
static constexpr EnclosingMethod defaultEnclosingMethod()
KisColorLabelSelectorWidget * m_widgetLabels
void slot_checkBoxRegionSelectionInvert_toggled(bool checked)
void beginAlternateDoubleClickAction(KoPointerEvent *event, AlternateAction action) override
void slot_optionButtonStripFillWith_buttonToggled(KoGroupButton *button, bool checked)
void slot_comboBoxCustomCompositeOp_currentIndexChanged(int index)
QString referenceToConfigString(Reference reference) const
bool wantsAutoScroll() const override
void slot_sliderFillThreshold_valueChanged(int value)
void slot_checkBoxSelectionAsBoundary_toggled(bool checked)
QWidget * createOptionWidget() override
KisDoubleSliderSpinBox * m_sliderPatternScale
KisSliderSpinBox * m_sliderFillOpacitySpread
KoGroupButton * m_buttonEnclosingMethodLasso
KisMergeLabeledLayersCommand::ReferenceNodeInfoListSP m_referenceNodeList
KisSliderSpinBox * m_sliderFeather
QString regionSelectionMethodToUserString(RegionSelectionMethod regionSelectionMethod) const
void slot_buttonStopGrowingAtDarkestPixel_toggled(bool enabled)
QString referenceToUserString(Reference reference) const
void slot_checkBoxAntiAlias_toggled(bool checked)
EnclosingMethod m_enclosingMethod
Reference loadReferenceFromConfig() const
KisSliderSpinBox * m_sliderCloseGap
void beginPrimaryAction(KoPointerEvent *event) override
KoGroupButton * m_buttonEnclosingMethodEllipse
KisOptionCollectionWidget * m_optionWidget
RegionSelectionMethod m_regionSelectionMethod
void continueAlternateAction(KoPointerEvent *event, AlternateAction action) override
QString enclosingMethodToConfigString(EnclosingMethod enclosingMethod) const
QCheckBox * m_checkBoxRegionSelectionIncludeContourRegions
KoGroupButton * m_buttonEnclosingMethodBrush
void slot_angleSelectorPatternRotation_angleChanged(double value)
KoGroupButton * m_buttonReferenceLabeled
void slot_buttonRegionSelectionColor_changed(const KoColor &color)
KoGroupButton * m_buttonReferenceCurrent
void saveRegionSelectionMethodToConfig(RegionSelectionMethod regionSelectionMethod)
KisColorButton * m_buttonRegionSelectionColor
void slot_comboBoxRegionSelectionMethod_currentIndexChanged(int)
QToolButton * m_buttonStopGrowingAtDarkestPixel
QCheckBox * m_checkBoxCustomBlendingOptions
void slot_sliderCustomOpacity_valueChanged(int value)
void slot_sliderCloseGap_valueChanged(int value)
static constexpr RegionSelectionMethod defaultRegionSelectionMethod()
KisPaintDeviceSP m_referencePaintDevice
static constexpr Reference defaultReference()
KisSliderSpinBox * m_sliderCustomOpacity
KisSliderSpinBox * m_sliderExpand
void slot_checkBoxRegionSelectionIncludeContourRegions_toggled(bool checked)
EnclosingMethod loadEnclosingMethodFromConfig() const
QString regionSelectionMethodToConfigString(RegionSelectionMethod regionSelectionMethod) const
void slot_checkBoxUseCustomBlendingOptions_toggled(bool checked)
KoGroupButton * m_buttonFillWithPattern
KoGroupButton * m_buttonEnclosingMethodPath
bool subtoolHasUserInteractionRunning() const
void slot_currentNodeChanged(const KisNodeSP node)
KoGroupButton * m_buttonEnclosingMethodRectangle
Reference configStringToReference(const QString &configString) const
QCheckBox * m_checkBoxRegionSelectionInvert
KisToolEncloseAndFill(KoCanvasBase *canvas)
void slot_sliderPatternScale_valueChanged(double value)
void slot_checkBoxUseActiveLayer_toggled(bool checked)
EnclosingMethod configStringToEnclosingMethod(const QString &configString) const
void slot_optionButtonStripReference_buttonToggled(KoGroupButton *button, bool checked)
void activateAlternateAction(AlternateAction action) override
void slot_colorSpaceChanged(const KoColorSpace *colorSpace)
void beginAlternateAction(KoPointerEvent *event, AlternateAction action) override
KoGroupButton * m_buttonReferenceAll
RegionSelectionMethod loadRegionSelectionMethodFromConfig() const
QAction * action(const QString &name) const
QString button(const QWheelEvent &ev)
AlternateAction
Definition kis_tool.h:134
KisCanvas2 * canvas