File indexing completed on 2024-06-16 04:16:36
0001 /* 0002 * This file is part of Krita 0003 * 0004 * SPDX-FileCopyrightText: 2006 Cyrille Berger <cberger@cberger.net> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include "kis_wdg_color_to_alpha.h" 0010 #include <QCheckBox> 0011 #include <QLayout> 0012 #include <QSpinBox> 0013 0014 #include <KoColor.h> 0015 #include <KoToolManager.h> 0016 0017 #include <KisViewManager.h> 0018 #include <kis_canvas2.h> 0019 #include <kis_canvas_resource_provider.h> 0020 #include <filter/kis_filter.h> 0021 #include <filter/kis_filter_configuration.h> 0022 #include <kis_selection.h> 0023 #include <kis_paint_device.h> 0024 #include <kis_processing_information.h> 0025 #include <KoColorSpaceRegistry.h> 0026 #include <KisGlobalResourcesInterface.h> 0027 0028 #include "ui_wdgcolortoalphabase.h" 0029 0030 KisWdgColorToAlpha::KisWdgColorToAlpha(QWidget * parent) 0031 : KisConfigWidget(parent), 0032 m_view(0) 0033 { 0034 m_widget = new Ui_WdgColorToAlphaBase(); 0035 m_widget->setupUi(this); 0036 0037 m_widget->textLabel1->hide(); 0038 0039 m_widget->intThreshold->setRange(1, 255, 0); 0040 0041 connect(m_widget->colorSelector, SIGNAL(sigNewColor(KoColor)), SLOT(slotColorSelectorChanged(KoColor))); 0042 connect(m_widget->intThreshold, SIGNAL(valueChanged(qreal)), SIGNAL(sigConfigurationItemChanged())); 0043 connect(m_widget->btnCustomColor, SIGNAL(changed(KoColor)), SLOT(slotCustomColorSelected(KoColor))); 0044 0045 KoColor c(Qt::white, KoColorSpaceRegistry::instance()->rgb8()); 0046 m_widget->btnCustomColor->setColor(c); 0047 } 0048 0049 KisWdgColorToAlpha::~KisWdgColorToAlpha() 0050 { 0051 delete m_widget; 0052 } 0053 0054 void KisWdgColorToAlpha::setView(KisViewManager *view) 0055 { 0056 m_view = view; 0057 0058 KoCanvasResourcesInterfaceSP canvasResources = view ? view->canvasBase()->resourceManager()->canvasResourcesInterface() : nullptr; 0059 setCanvasResourcesInterface(canvasResources); 0060 } 0061 0062 void KisWdgColorToAlpha::slotFgColorChanged(const KoColor &color) 0063 { 0064 m_widget->btnCustomColor->setColor(color); 0065 } 0066 0067 void KisWdgColorToAlpha::slotColorSelectorChanged(const KoColor &color) 0068 { 0069 m_widget->btnCustomColor->setColor(color); 0070 } 0071 0072 void KisWdgColorToAlpha::slotCustomColorSelected(const KoColor &color) 0073 { 0074 KoColor c(color, KoColorSpaceRegistry::instance()->rgb8()); 0075 m_widget->colorSelector->slotSetColor(color); 0076 emit sigConfigurationItemChanged(); 0077 } 0078 0079 void KisWdgColorToAlpha::setConfiguration(const KisPropertiesConfigurationSP config) 0080 { 0081 QVariant value; 0082 if (config->getProperty("targetcolor", value)) { 0083 KoColor c; 0084 if (value.value<QColor>().isValid()) { 0085 c = KoColor(value.value<QColor>(), KoColorSpaceRegistry::instance()->rgb8()); 0086 } else { 0087 c = value.value<KoColor>(); 0088 } 0089 m_widget->colorSelector->slotSetColor(c); 0090 } 0091 if (config->getProperty("threshold", value)) { 0092 m_widget->intThreshold->setValue(value.toInt()); 0093 } 0094 } 0095 0096 KisPropertiesConfigurationSP KisWdgColorToAlpha::configuration() const 0097 { 0098 KisFilterConfigurationSP config = new KisFilterConfiguration("colortoalpha", 1, KisGlobalResourcesInterface::instance()); 0099 config->setProperty("targetcolor", widget()->colorSelector->getCurrentColor().toQColor()); 0100 config->setProperty("threshold", widget()->intThreshold->value()); 0101 return config; 0102 } 0103 0104 void KisWdgColorToAlpha::hideEvent(QHideEvent *) 0105 { 0106 if (m_view) { 0107 disconnect(m_view->canvasResourceProvider(), SIGNAL(sigFGColorChanged(KoColor)), this, SLOT(slotFgColorChanged(KoColor))); 0108 } 0109 } 0110 0111 void KisWdgColorToAlpha::showEvent(QShowEvent *) 0112 { 0113 if (m_view) { 0114 connect(m_view->canvasResourceProvider(), SIGNAL(sigFGColorChanged(KoColor)), this, SLOT(slotFgColorChanged(KoColor))); 0115 } 0116 } 0117 0118