Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_paintop_box.h
Go to the documentation of this file.
1/*
2 * kis_paintop_box.h - part of KImageShop/Krayon/Krita
3 *
4 * SPDX-FileCopyrightText: 2004-2008 Boudewijn Rempt (boud@valdyas.org)
5 * SPDX-FileCopyrightText: 2011 Silvio Heinrich <plassy@web.de>
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
10#ifndef KIS_PAINTOP_BOX_H_
11#define KIS_PAINTOP_BOX_H_
12
13#include <QMap>
14#include <QWidget>
15#include <QList>
16
17#include <KoResource.h>
18#include <KoID.h>
19#include <KoInputDevice.h>
20
21#include <kis_types.h>
26#include "kritaui_export.h"
29
30class QMenu;
31class QToolButton;
32class QString;
33class QHBoxLayout;
34
35class KoColorSpace;
37
38class KisViewManager;
40class KisPopupButton;
41class KisIconWidget;
49class KisAction;
52
74class KRITAUI_EXPORT KisPaintopBox : public QWidget
75{
76 Q_OBJECT
77
78 enum {
79 ENABLE_PRESETS = 0x0001,
80 DISABLE_PRESETS = 0x0002,
81 ENABLE_COMPOSITEOP = 0x0004,
82 DISABLE_COMPOSITEOP = 0x0008,
83 ENABLE_OPACITY = 0x0010,
84 DISABLE_OPACITY = 0x0020,
85 ENABLE_FLOW = 0x0040,
86 DISABLE_FLOW = 0x0080,
87 ENABLE_SIZE = 0x0100,
88 DISABLE_SIZE = 0x0200,
89 ENABLE_PATTERNSIZE = 0x0400,
90 DISABLE_PATTERNSIZE = 0x0800,
91 ENABLE_ALL = 0x5555,
92 DISABLE_ALL = 0xAAAA
93 };
94
95public:
96
97 KisPaintopBox(KisViewManager* view, QWidget* parent, const char* name);
98 ~KisPaintopBox() override;
99
100 void restoreResource(KoResourceSP resource);
104 void newOptionWidgets(const QList<QPointer<QWidget> > & optionWidgetList);
105
106 KisFavoriteResourceManager *favoriteResourcesManager() { return m_favoriteResourceManager; }
107
108public Q_SLOTS:
109
110 void slotColorSpaceChanged(const KoColorSpace* colorSpace);
111 void slotInputDeviceChanged(const KoInputDevice & inputDevice);
112 void slotToggleEraserPreset(bool usingEraser);
113 void slotSelectEraserPreset();
114 void slotSelectBrushPreset();
115 void slotCanvasResourceChangeAttempted(int key, const QVariant &value);
116 void slotCanvasResourceChanged(int key, const QVariant& v);
117 void resourceSelected(KoResourceSP resource);
118
122 void slotCreatePresetFromScratch(QString paintop);
123
124private:
125
126 void setCurrentPaintop(const KoID& paintop);
127 void setCurrentPaintop(KisPaintOpPresetSP preset);
128
129 KisPaintOpPresetSP defaultPreset(const KoID& paintOp);
130 KisPaintOpPresetSP activePreset(const KoID& paintOp);
131 void updateCompositeOp(QString compositeOpID);
132 void setWidgetState(int flags);
133 void setSliderValue(const QString& sliderID, qreal value);
134 void setMultiplierSliderValue(const QString& sliderID, qreal value);
135 void setAngleSliderValue(const QString& sliderID, qreal value);
136 void sliderChanged(int n);
137 void findDefaultPresets();
138
139private Q_SLOTS:
140
141 void slotSetupDefaultPreset();
142 void slotNodeChanged(const KisNodeSP node);
143 void slotToggleEraseMode(bool checked);
144 void slotSetCompositeMode(int index);
145 void slotSetPaintop(const QString& paintOpId);
146 void slotHorizontalMirrorChanged(bool value);
147 void slotVerticalMirrorChanged(bool value);
148 void slotSlider1Changed();
149 void slotSlider2Changed();
150 void slotSlider3Changed();
151 void slotSlider4Changed();
152 void slotSlider5Changed();
153 void slotToolChanged(KoCanvasController* canvas);
154 void slotPreviousFavoritePreset();
155 void slotNextFavoritePreset();
156 void slotSwitchToPreviousPreset();
157 void slotUnsetEraseMode();
158 void slotToggleAlphaLockMode(bool);
159 void slotDisablePressureMode(bool);
160
161 void slotReloadPreset();
162 void slotGuiChangedCurrentPreset();
163 void slotSaveLockedOptionToPreset(KisPropertiesConfigurationSP p);
164 void slotDropLockedOption(KisPropertiesConfigurationSP p);
165 void slotDirtyPresetToggled(bool);
166 void slotEraserBrushSizeToggled(bool);
167 void slotEraserBrushOpacityToggled(bool);
168 void slotUpdateSelectionIcon();
169
170 void slotLockXMirrorToggle(bool);
171 void slotLockYMirrorToggle(bool);
172 void slotMoveToCenterMirrorX();
173 void slotMoveToCenterMirrorY();
174 void slotHideDecorationMirrorX(bool);
175 void slotHideDecorationMirrorY(bool);
176
177 void slotUpdateOptionsWidgetPopup();
178
179 void togglePresetEditor();
180 void updatePresetConfig();
181
182private:
183 KisCanvasResourceProvider* m_resourceProvider {0};
184 QHBoxLayout* m_layout {0};
185 QWidget* m_paintopWidget {0};
186 KisPaintOpConfigWidget* m_optionWidget {0};
187 KisPopupButton* m_toolOptionsPopupButton {0};
188
189 KisPresetSaveWidget* m_savePresetWidget {0};
190 KisIconWidget* m_brushEditorPopupButton {0};
191 KisIconWidget* m_presetSelectorPopupButton {0};
192 KisCompositeOpComboBox* m_cmbCompositeOp {0};
193 QToolButton* m_eraseModeButton {0};
194 QToolButton* m_alphaLockButton {0};
195 QToolButton* m_hMirrorButton {0};
196 QToolButton* m_vMirrorButton {0};
197 QToolButton* m_wrapAroundButton {0};
198 KisToolOptionsPopup* m_toolOptionsPopup {0};
199 KisPaintOpPresetsEditor* m_presetsEditor {0};
200 KisPaintOpPresetsChooserPopup* m_presetsChooserPopup {0};
201 KisViewManager* m_viewManager {0};
202 KisPopupButton* m_workspaceWidget {0};
203 KisWidgetChooser* m_sliderChooser[5];
204 QMap<KoID, KisPaintOpConfigWidget*> m_paintopOptionWidgets;
205 KisFavoriteResourceManager* m_favoriteResourceManager {0};
206 QToolButton* m_reloadButton {0};
207 KisAction* m_eraseAction {0};
208 KisAction* m_eraserTogglePresetAction {0};
209 KisAction* m_eraserSelectPresetAction {0};
210 KisAction* m_brushSelectPresetAction {0};
211 KisAction* m_reloadAction {0};
212 KisAction* m_disablePressureAction {0};
213
216
217 QMenu* toolbarMenuXMirror{nullptr};
218 QMenu* toolbarMenuYMirror{nullptr};
219
220 KisAction* m_hMirrorAction {0};
221 KisAction* m_vMirrorAction {0};
222
223 KisAction* hideCanvasDecorationsX {0};
224 KisAction* lockActionX {0};
225 KisAction* moveToCenterActionX {0};
226 KisAction* hideCanvasDecorationsY {0};
227 KisAction* lockActionY {0};
228 KisAction* moveToCenterActionY {0};
229
230
233 // Only the eraser is special, and we don't look at Cursor
237 }
238 uniqueTabletId = dev.uniqueTabletId();
239 }
240
241 bool operator == (const TabletToolID& id) const {
242 return pointer == id.pointer;
243 }
244
245 bool operator < (const TabletToolID& id) const {
246 return pointer < id.pointer;
247 }
248
251 };
252
257
258 typedef QMap<TabletToolID, TabletToolData> TabletToolMap;
259 typedef QMap<KoID, KisPaintOpPresetSP> PaintOpPresetMap;
260
263 TabletToolID m_currTabletToolID {KoInputDevice::invalid()};
264 bool m_presetsEnabled {true};
265 bool m_blockUpdate {false};
266 bool m_dirtyPresetsEnabled {false};
267 bool m_eraserBrushSizeEnabled {false};
268 bool m_eraserBrushOpacityEnabled {false};
269
271 QScopedPointer<KisAcyclicSignalConnector> m_optionsWidgetConnections;
273
276};
277
278#endif //KIS_PAINTOP_BOX_H_
float value(const T *src, size_t ch)
const Params2D p
qreal v
bool operator==(const KisRegion &lhs, const KisRegion &rhs)
bool operator<(KoSnapStrategy::SnapType lhs, KoSnapStrategy::SnapType rhs)
KisFavoriteResourceManager * favoriteResourcesManager()
QString m_defaultPresetName
KisSignalAutoConnectionsStore m_presetConnections
QMap< TabletToolID, TabletToolData > TabletToolMap
KisSignalCompressor m_optionWidgetUpdateCompressor
TabletToolMap m_tabletToolMap
QMap< KoID, KisPaintOpPresetSP > PaintOpPresetMap
PaintOpPresetMap m_paintOpPresetMap
QMap< KoID, KisPaintOpConfigWidget * > m_paintopOptionWidgets
QString m_currCompositeOpID
KisNodeWSP m_currentNode
QScopedPointer< KisAcyclicSignalConnector > m_optionsWidgetConnections
Definition KoID.h:30
KoInputDevice::Pointer pointer
static KoInputDevice invalid()
invalid input device
TabletToolID(const KoInputDevice &dev)
KoInputDevice::Pointer pointer