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_