File indexing completed on 2024-06-16 04:16:43
0001 /* 0002 * SPDX-FileCopyrightText: 2023 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "KisResetTransparentFilter.h" 0008 0009 #include <klocalizedstring.h> 0010 0011 #include <kis_debug.h> 0012 #include <kpluginfactory.h> 0013 0014 #include <KoUpdater.h> 0015 #include <KisSequentialIteratorProgress.h> 0016 0017 #include <filter/kis_filter_category_ids.h> 0018 #include <filter/kis_filter_registry.h> 0019 0020 K_PLUGIN_FACTORY_WITH_JSON(ResetTransparentFactory, "kritaresettransparent.json", registerPlugin<ResetTransparent>();) 0021 0022 ResetTransparent::ResetTransparent(QObject *parent, const QVariantList &) 0023 : QObject(parent) 0024 { 0025 KisFilterRegistry::instance()->add(KisFilterSP(new KisResetTransparentFilter())); 0026 } 0027 0028 ResetTransparent::~ResetTransparent() 0029 { 0030 } 0031 0032 KisResetTransparentFilter::KisResetTransparentFilter() 0033 : KisFilter(id(), FiltersCategoryOtherId, i18n("Reset Transparent")) 0034 { 0035 setColorSpaceIndependence(FULLY_INDEPENDENT); 0036 setSupportsPainting(false); 0037 setSupportsThreading(true); 0038 setSupportsLevelOfDetail(false); 0039 setSupportsAdjustmentLayers(false); 0040 setShowConfigurationWidget(false); 0041 } 0042 0043 bool KisResetTransparentFilter::needsTransparentPixels(const KisFilterConfigurationSP config, const KoColorSpace *cs) const 0044 { 0045 Q_UNUSED(config); 0046 Q_UNUSED(cs); 0047 return true; 0048 } 0049 0050 void KisResetTransparentFilter::processImpl(KisPaintDeviceSP device, 0051 const QRect &applyRect, 0052 const KisFilterConfigurationSP config, 0053 KoUpdater *progressUpdater) const 0054 { 0055 Q_UNUSED(config); 0056 0057 const KoColorSpace *cs = device->colorSpace(); 0058 KoColor transparent = KoColor::createTransparent(cs); 0059 const int pixelSize = cs->pixelSize(); 0060 0061 KisSequentialIteratorProgress it(device, applyRect, progressUpdater); 0062 while (it.nextPixel()) { 0063 if (cs->opacityU8(it.oldRawData()) == OPACITY_TRANSPARENT_U8) { 0064 memcpy(it.rawData(), transparent.data(), pixelSize); 0065 } 0066 } 0067 } 0068 0069 #include "KisResetTransparentFilter.moc"