File indexing completed on 2024-05-26 04:32:51

0001 /*
0002  * colorrange.h -- Part of Krita
0003  *
0004  * SPDX-FileCopyrightText: 2004 Boudewijn Rempt (boud@valdyas.org)
0005  *
0006  *  SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #include "colorrange.h"
0010 
0011 #include <klocalizedstring.h>
0012 #include <kis_debug.h>
0013 #include <kpluginfactory.h>
0014 
0015 #include "kis_image.h"
0016 #include "kis_layer.h"
0017 #include "kis_paint_device.h"
0018 #include "kis_global.h"
0019 #include "kis_types.h"
0020 #include "KisViewManager.h"
0021 #include "kis_selection.h"
0022 #include "kis_selection_manager.h"
0023 #include "kis_selection_tool_helper.h"
0024 #include "kis_canvas2.h"
0025 #include "kis_iterator_ng.h"
0026 #include "kis_action.h"
0027 
0028 #include "dlg_colorrange.h"
0029 #include <KoColorSpace.h>
0030 #include <KisSignalMapper.h>
0031 
0032 K_PLUGIN_FACTORY_WITH_JSON(ColorRangeFactory, "kritacolorrange.json", registerPlugin<ColorRange>();)
0033 
0034 
0035 ColorRange::ColorRange(QObject *parent, const QVariantList &)
0036         : KisActionPlugin(parent)
0037 {
0038     KisAction* action = createAction("colorrange");
0039     connect(action, SIGNAL(triggered()), this, SLOT(slotActivated()));
0040 
0041 
0042     KisSignalMapper *mapper = new KisSignalMapper(this);
0043     connect(mapper, SIGNAL(mapped(int)), SLOT(selectOpaque(int)));
0044 
0045     action  = createAction("selectopaque");
0046     mapper->setMapping(action, int(SELECTION_REPLACE));
0047     connect(action, SIGNAL(triggered(bool)), mapper, SLOT(map()));
0048 
0049     action  = createAction("selectopaque_add");
0050     mapper->setMapping(action, int(SELECTION_ADD));
0051     connect(action, SIGNAL(triggered(bool)), mapper, SLOT(map()));
0052 
0053     action  = createAction("selectopaque_subtract");
0054     mapper->setMapping(action, int(SELECTION_SUBTRACT));
0055     connect(action, SIGNAL(triggered(bool)), mapper, SLOT(map()));
0056 
0057     action  = createAction("selectopaque_intersect");
0058     mapper->setMapping(action, int(SELECTION_INTERSECT));
0059     connect(action, SIGNAL(triggered(bool)), mapper, SLOT(map()));
0060 }
0061 
0062 ColorRange::~ColorRange()
0063 {
0064 }
0065 
0066 void ColorRange::slotActivated()
0067 {
0068     DlgColorRange *dlgColorRange = new DlgColorRange(viewManager(), viewManager()->mainWindowAsQWidget());
0069     Q_CHECK_PTR(dlgColorRange);
0070 
0071     dlgColorRange->exec();
0072 }
0073 
0074 void ColorRange::selectOpaque(int id)
0075 {
0076     KisNodeSP node = viewManager()->activeNode();
0077     if (!node) return;
0078 
0079     viewManager()->selectionManager()->
0080         selectOpaqueOnNode(node, SelectionAction(id));
0081 }
0082 
0083 #include "colorrange.moc"
0084