File indexing completed on 2024-06-09 04:28:45
0001 /* 0002 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KIS_TOOL_LAZY_BRUSH_H_ 0008 #define KIS_TOOL_LAZY_BRUSH_H_ 0009 0010 #include <QScopedPointer> 0011 #include "kis_tool_freehand.h" 0012 0013 #include "KisToolPaintFactoryBase.h" 0014 0015 #include <flake/kis_node_shape.h> 0016 #include <kis_icon.h> 0017 #include <QKeySequence> 0018 0019 #include <kconfig.h> 0020 #include <kconfiggroup.h> 0021 #include <KoIcon.h> 0022 0023 class KisKActionCollection; 0024 class KoCanvasBase; 0025 0026 class KisToolLazyBrush : public KisToolFreehand 0027 { 0028 Q_OBJECT 0029 public: 0030 KisToolLazyBrush(KoCanvasBase * canvas); 0031 ~KisToolLazyBrush() override; 0032 0033 QWidget * createOptionWidget() override; 0034 0035 void activatePrimaryAction() override; 0036 void deactivatePrimaryAction() override; 0037 0038 void beginPrimaryAction(KoPointerEvent *event) override; 0039 void continuePrimaryAction(KoPointerEvent *event) override; 0040 void endPrimaryAction(KoPointerEvent *event) override; 0041 0042 void activateAlternateAction(AlternateAction action) override; 0043 void deactivateAlternateAction(AlternateAction action) override; 0044 0045 void beginAlternateAction(KoPointerEvent *event, AlternateAction action) override; 0046 void continueAlternateAction(KoPointerEvent *event, AlternateAction action) override; 0047 void endAlternateAction(KoPointerEvent *event, AlternateAction action) override; 0048 0049 void explicitUserStrokeEndRequest() override; 0050 0051 protected Q_SLOTS: 0052 void resetCursorStyle() override; 0053 0054 public Q_SLOTS: 0055 void activate(const QSet<KoShape*> &shapes) override; 0056 void deactivate() override; 0057 0058 private Q_SLOTS: 0059 void slotCurrentNodeChanged(KisNodeSP node); 0060 0061 Q_SIGNALS: 0062 0063 private: 0064 bool colorizeMaskActive() const; 0065 bool canCreateColorizeMask() const; 0066 bool shouldActivateKeyStrokes() const; 0067 void tryCreateColorizeMask(); 0068 0069 void tryDisableKeyStrokesOnMask(); 0070 0071 private: 0072 struct Private; 0073 const QScopedPointer<Private> m_d; 0074 }; 0075 0076 0077 class KisToolLazyBrushFactory : public KisToolPaintFactoryBase 0078 { 0079 0080 public: 0081 KisToolLazyBrushFactory() 0082 : KisToolPaintFactoryBase("KritaShape/KisToolLazyBrush") { 0083 0084 setToolTip(i18n("Colorize Mask Editing Tool")); 0085 0086 // Temporarily 0087 setSection(ToolBoxSection::Fill); 0088 setIconName(koIconNameCStr("krita_tool_lazybrush")); 0089 //setShortcut(QKeySequence(Qt::Key_Shift + Qt::Key_B)); 0090 setPriority(3); 0091 setActivationShapeId(KRITA_TOOL_ACTIVATION_ID); 0092 } 0093 0094 ~KisToolLazyBrushFactory() override {} 0095 0096 KoToolBase * createTool(KoCanvasBase *canvas) override { 0097 return new KisToolLazyBrush(canvas); 0098 } 0099 0100 }; 0101 0102 0103 #endif // KIS_TOOL_LAZY_BRUSH_H_