File indexing completed on 2024-05-26 04:34:31
0001 /* 0002 * SPDX-FileCopyrightText: 2004 Boudewijn Rempt (boud@valdyas.org) 0003 * SPDX-FileCopyrightText: 2015 Michael Abrahams <miabraha@gmail.com> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 #ifndef KIS_TOOL_SELECT_SIMILAR_H_ 0008 #define KIS_TOOL_SELECT_SIMILAR_H_ 0009 0010 #include <KisSelectionToolFactoryBase.h> 0011 #include <kis_icon.h> 0012 #include <kconfig.h> 0013 #include "kis_tool_select_base.h" 0014 #include <kconfiggroup.h> 0015 #include <commands_new/KisMergeLabeledLayersCommand.h> 0016 0017 /* 0018 * Tool to select colors by pointing at a color on the image. 0019 */ 0020 class KisToolSelectSimilar: public KisToolSelect 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 KisToolSelectSimilar(KoCanvasBase * canvas); 0026 void beginPrimaryAction(KoPointerEvent *event) override; 0027 void endPrimaryAction(KoPointerEvent *event) override; 0028 void paint(QPainter&, const KoViewConverter &) override {} 0029 QWidget* createOptionWidget() override; 0030 void resetCursorStyle() override; 0031 0032 public Q_SLOTS: 0033 void activate(const QSet<KoShape*> &shapes) override; 0034 void deactivate() override; 0035 void slotSetThreshold(int); 0036 void slotSetOpacitySpread(int); 0037 0038 protected: 0039 using KisToolSelectBase::m_widgetHelper; 0040 bool isPixelOnly() const override { return true; } 0041 bool usesColorLabels() const override { return true; } 0042 0043 private: 0044 int m_threshold; 0045 int m_opacitySpread; 0046 KConfigGroup m_configGroup; 0047 KisPaintDeviceSP m_referencePaintDevice; 0048 KisMergeLabeledLayersCommand::ReferenceNodeInfoListSP m_referenceNodeList; 0049 int m_previousTime; 0050 }; 0051 0052 0053 class KisToolSelectSimilarFactory : public KisSelectionToolFactoryBase 0054 { 0055 public: 0056 KisToolSelectSimilarFactory() 0057 : KisSelectionToolFactoryBase("KisToolSelectSimilar") 0058 { 0059 setToolTip(i18n("Similar Color Selection Tool")); 0060 setSection(ToolBoxSection::Select); 0061 setActivationShapeId(KRITA_TOOL_ACTIVATION_ID); 0062 setIconName(koIconNameCStr("tool_similar_selection")); 0063 setPriority(5); 0064 } 0065 ~KisToolSelectSimilarFactory() override {} 0066 KoToolBase * createTool(KoCanvasBase *canvas) override { 0067 return new KisToolSelectSimilar(canvas); 0068 } 0069 }; 0070 0071 0072 #endif // KIS_TOOL_SELECT_SIMILAR_H_ 0073