File indexing completed on 2024-06-23 04:26:55
0001 /* 0002 * This file is part of the KDE project 0003 * 0004 * SPDX-FileCopyrightText: 2016 Spencer Brown <sbrown655@gmail.com> 0005 * SPDX-FileCopyrightText: 2020 Deif Lou <ginoba@gmail.com> 0006 * 0007 * SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #ifndef KIS_GRADIENT_MAP_FILTER_CONFIGURATION_H 0011 #define KIS_GRADIENT_MAP_FILTER_CONFIGURATION_H 0012 0013 #include <kis_filter_configuration.h> 0014 #include <KisGradientConversion.h> 0015 #include <KisResourcesInterface.h> 0016 #include <KoColorSpaceRegistry.h> 0017 #include <KoAbstractGradient.h> 0018 #include <KoStopGradient.h> 0019 0020 0021 class KisGradientMapFilterConfiguration; 0022 typedef KisPinnedSharedPtr<KisGradientMapFilterConfiguration> KisGradientMapFilterConfigurationSP; 0023 0024 class KisGradientMapFilterConfiguration : public KisFilterConfiguration 0025 { 0026 public: 0027 enum ColorMode 0028 { 0029 ColorMode_Blend, 0030 ColorMode_Nearest, 0031 ColorMode_Dither 0032 }; 0033 0034 KisGradientMapFilterConfiguration(KisResourcesInterfaceSP resourcesInterface); 0035 KisGradientMapFilterConfiguration(qint32 version, KisResourcesInterfaceSP resourcesInterface); 0036 KisGradientMapFilterConfiguration(const KisGradientMapFilterConfiguration &rhs); 0037 0038 virtual KisFilterConfigurationSP clone() const override; 0039 0040 QList<KoResourceLoadResult> linkedResources(KisResourcesInterfaceSP globalResourcesInterface) const override; 0041 QList<KoResourceLoadResult> embeddedResources(KisResourcesInterfaceSP globalResourcesInterface) const override; 0042 0043 static inline QString defaultName() 0044 { 0045 return "gradientmap"; 0046 } 0047 0048 static constexpr qint32 defaultVersion() 0049 { 0050 return 2; 0051 } 0052 0053 static inline KoAbstractGradientSP defaultGradient(KisResourcesInterfaceSP resourcesInterface) 0054 { 0055 KoAbstractGradientSP gradient; 0056 KoAbstractGradientSP resourceGradient = resourcesInterface->source<KoAbstractGradient>(ResourceType::Gradients).fallbackResource(); 0057 if (resourceGradient) { 0058 gradient = resourceGradient->clone().dynamicCast<KoAbstractGradient>(); 0059 } else { 0060 KoStopGradientSP stopGradient(new KoStopGradient); 0061 stopGradient->setStops( 0062 QList<KoGradientStop>() 0063 << KoGradientStop(0.0, KoColor(Qt::black, KoColorSpaceRegistry::instance()->rgb8(0)), FOREGROUNDSTOP) 0064 << KoGradientStop(1.0, KoColor(Qt::white, KoColorSpaceRegistry::instance()->rgb8(0)), BACKGROUNDSTOP) 0065 ); 0066 gradient = stopGradient.staticCast<KoAbstractGradient>(); 0067 } 0068 if (gradient) { 0069 gradient->setName(i18nc("Default gradient name for the gradient generator", "Unnamed")); 0070 gradient->setValid(true); 0071 } 0072 return gradient; 0073 } 0074 0075 static constexpr int defaultColorMode() 0076 { 0077 return ColorMode_Blend; 0078 } 0079 0080 KoAbstractGradientSP gradient(KoAbstractGradientSP fallbackGradient = nullptr) const; 0081 int colorMode() const; 0082 0083 void setGradient(KoAbstractGradientSP newGradient); 0084 void setColorMode(int newColorMode); 0085 void setDefaults(); 0086 }; 0087 0088 #endif