Krita Source Code Documentation
Loading...
Searching...
No Matches
KisGradientMapFilter Class Reference

#include <KisGradientMapFilter.h>

+ Inheritance diagram for KisGradientMapFilter:

Public Member Functions

KisConfigWidgetcreateConfigurationWidget (QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const override
 
KisFilterConfigurationSP defaultConfiguration (KisResourcesInterfaceSP resourcesInterface) const override
 
KisFilterConfigurationSP factoryConfiguration (KisResourcesInterfaceSP resourcesInterface) const override
 
 KisGradientMapFilter ()
 
void processImpl (KisPaintDeviceSP device, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const override
 
template<typename ColorModeStrategy >
void processImpl (KisPaintDeviceSP device, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater, const ColorModeStrategy &colorModeStrategy) const
 
- Public Member Functions inherited from KisFilter
virtual QRect changedRect (const QRect &rect, const KisFilterConfigurationSP config, int lod) const
 
virtual bool configurationAllowedForMask (KisFilterConfigurationSP config) const
 
virtual void fixLoadedFilterConfigurationForMasks (KisFilterConfigurationSP config) const
 
 KisFilter (const KoID &id, const KoID &category, const QString &entry)
 
virtual QRect neededRect (const QRect &rect, const KisFilterConfigurationSP config, int lod) const
 
virtual bool needsTransparentPixels (const KisFilterConfigurationSP config, const KoColorSpace *cs) const
 
void process (const KisPaintDeviceSP src, KisPaintDeviceSP dst, KisSelectionSP selection, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater=0) const
 
void process (KisPaintDeviceSP device, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater=0) const
 
virtual bool supportsLevelOfDetail (const KisFilterConfigurationSP config, int lod) const
 
 ~KisFilter () override
 
- Public Member Functions inherited from KisBaseProcessor
KisBookmarkedConfigurationManagerbookmarkManager ()
 
const KisBookmarkedConfigurationManagerbookmarkManager () const
 
ColorSpaceIndependence colorSpaceIndependence () const
 
QString id () const
 
 KisBaseProcessor (const KoID &id, const KoID &category, const QString &entry)
 
KoID menuCategory () const
 
QString menuEntry () const
 
QString name () const
 
 Private ()
 
QKeySequence shortcut () const
 
bool showConfigurationWidget ()
 If true, the filter wants to show a configuration widget.
 
bool supportsAdjustmentLayers () const
 This filter can be used in adjustment layers.
 
bool supportsPainting () const
 
bool supportsThreading () const
 
virtual ~KisBaseProcessor ()
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Static Public Member Functions

static KoID id ()
 

Additional Inherited Members

- Public Attributes inherited from KisBaseProcessor
KisBookmarkedConfigurationManagerbookmarkManager
 
KoID category
 
ColorSpaceIndependence colorSpaceIndependence
 
QString entry
 
KoID id
 
QKeySequence shortcut
 
bool showConfigurationWidget
 
bool supportsAdjustmentLayers
 
bool supportsPainting
 
bool supportsThreading
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Protected Member Functions inherited from KisFilter
QString configEntryGroup () const
 
void setSupportsLevelOfDetail (bool value)
 
- Protected Member Functions inherited from KisBaseProcessor
void init (const QString &configEntryGroup)
 
void setColorSpaceIndependence (ColorSpaceIndependence v)
 
void setShortcut (const QKeySequence &shortcut)
 
void setShowConfigurationWidget (bool v)
 
void setSupportsAdjustmentLayers (bool v)
 
void setSupportsPainting (bool v)
 
void setSupportsThreading (bool v)
 
- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Detailed Description

Definition at line 21 of file KisGradientMapFilter.h.

Constructor & Destructor Documentation

◆ KisGradientMapFilter()

KisGradientMapFilter::KisGradientMapFilter ( )

Definition at line 31 of file KisGradientMapFilter.cpp.

32 : KisFilter(id(), FiltersCategoryMapId, i18n("&Gradient Map..."))
33{
35}
KisFilter(const KoID &id, const KoID &category, const QString &entry)
Definition kis_filter.cc:22
const KoID FiltersCategoryMapId("map_filters", ki18nc("The category of mapping filters, like bump map or gradient filter map. Verb.", "Map"))
void setSupportsPainting(bool v)

References KisBaseProcessor::setSupportsPainting().

Member Function Documentation

◆ createConfigurationWidget()

KisConfigWidget * KisGradientMapFilter::createConfigurationWidget ( QWidget * parent,
const KisPaintDeviceSP dev,
bool useForMasks ) const
overridevirtual

Create the configuration widget for this processor.

Parameters
parentthe Qt owner widget of this widget
devthe paintdevice this filter will act on
useForMasksshown if the filer is going to be used in a mask. Some filters may provide limited options when applied as a mask (e.g. Gaussian Blur)

Reimplemented from KisBaseProcessor.

Definition at line 184 of file KisGradientMapFilter.cpp.

◆ defaultConfiguration()

KisFilterConfigurationSP KisGradientMapFilter::defaultConfiguration ( KisResourcesInterfaceSP resourcesInterface) const
overridevirtual

Return the configuration set as the default by the user or the default configuration from the filter writer as returned by factoryConfiguration.

This configuration is used by default for the configuration widget and given to the process function if there is no configuration widget.

Returns
the default configuration of this widget

Reimplemented from KisBaseProcessor.

Definition at line 177 of file KisGradientMapFilter.cpp.

◆ factoryConfiguration()

KisFilterConfigurationSP KisGradientMapFilter::factoryConfiguration ( KisResourcesInterfaceSP resourcesInterface) const
overridevirtual
Returns
the default configuration object as defined by whoever wrote the plugin. This object must be filled in with fromXML after that.

Reimplemented from KisBaseProcessor.

Definition at line 172 of file KisGradientMapFilter.cpp.

173{
174 return new KisGradientMapFilterConfiguration(resourcesInterface);
175}

◆ id()

static KoID KisGradientMapFilter::id ( )
inlinestatic

Definition at line 26 of file KisGradientMapFilter.h.

26 {
27 return KoID("gradientmap", i18n("Gradient Map"));
28 }
Definition KoID.h:30

◆ processImpl() [1/2]

void KisGradientMapFilter::processImpl ( KisPaintDeviceSP device,
const QRect & applyRect,
const KisFilterConfigurationSP config,
KoUpdater * progressUpdater ) const
overridevirtual

Override this function with the implementation of your filter.

This is a low level function that expects all the conditions for the

Parameters
devicebe met. Use usual process() methods instead.
devicethe paint device to filter
applyRectthe rectangle where the filter is applied
configthe parameters of the filter
progressUpdaterto pass on the progress the filter is making

Implements KisFilter.

Definition at line 111 of file KisGradientMapFilter.cpp.

115{
116 Q_ASSERT(!device.isNull());
117
118 const KisGradientMapFilterConfiguration *filterConfig =
119 dynamic_cast<const KisGradientMapFilterConfiguration*>(config.data());
120
121 KIS_SAFE_ASSERT_RECOVER_RETURN(filterConfig);
122
123 KoAbstractGradientSP gradient = filterConfig->gradient();
124 const int colorMode = filterConfig->colorMode();
125 const KoColorSpace *colorSpace = device->colorSpace();
126 const int cachedGradientSize = device->extent().width() + device->extent().height();
127
129 KoCachedGradient cachedGradient(gradient, cachedGradientSize, colorSpace);
130 BlendColorModePolicy colorModePolicy(&cachedGradient);
131 processImpl(device, applyRect, config, progressUpdater, colorModePolicy);
132
134 KisGradientMapFilterNearestCachedGradient cachedGradient(gradient, cachedGradientSize, colorSpace);
135 NearestColorModePolicy colorModePolicy(&cachedGradient);
136 processImpl(device, applyRect, config, progressUpdater, colorModePolicy);
137
138 } else /* if colorMode == KisGradientMapFilterConfiguration::ColorMode_Dither */ {
139 KisDitherUtil ditherUtil;
140 KisGradientMapFilterDitherCachedGradient cachedGradient(gradient, cachedGradientSize, colorSpace);
141 ditherUtil.setConfiguration(*filterConfig, "dither/");
142 DitherColorModePolicy colorModePolicy(&cachedGradient, &ditherUtil);
143 processImpl(device, applyRect, config, progressUpdater, colorModePolicy);
144 }
145}
void setConfiguration(const KisFilterConfiguration &config, const QString &prefix="")
KoAbstractGradientSP gradient(KoAbstractGradientSP fallbackGradient=nullptr) const
void processImpl(KisPaintDeviceSP device, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const override
QRect extent() const
const KoColorSpace * colorSpace() const
bool isNull() const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References KisGradientMapFilterConfiguration::colorMode(), KisGradientMapFilterConfiguration::ColorMode_Blend, KisGradientMapFilterConfiguration::ColorMode_Nearest, KisPaintDevice::colorSpace(), KisSharedPtr< T >::data(), KisPaintDevice::extent(), KisGradientMapFilterConfiguration::gradient(), KisSharedPtr< T >::isNull(), KIS_SAFE_ASSERT_RECOVER_RETURN, processImpl(), and KisDitherUtil::setConfiguration().

◆ processImpl() [2/2]

template<typename ColorModeStrategy >
void KisGradientMapFilter::processImpl ( KisPaintDeviceSP device,
const QRect & applyRect,
const KisFilterConfigurationSP config,
KoUpdater * progressUpdater,
const ColorModeStrategy & colorModeStrategy ) const

Definition at line 148 of file KisGradientMapFilter.cpp.

153{
154 Q_UNUSED(config);
155
156 Q_ASSERT(!device.isNull());
157
158 const KoColorSpace *colorSpace = device->colorSpace();
159 const int pixelSize = colorSpace->pixelSize();
160
161 KisSequentialIteratorProgress it(device, applyRect, progressUpdater);
162
163 while (it.nextPixel()) {
164 const qreal t = colorSpace->intensityF(it.oldRawData());
165 const qreal pixelOpacity = colorSpace->opacityF(it.oldRawData());
166 const quint8 *color = colorModeStrategy.colorAt(t, it.x(), it.y());
167 memcpy(it.rawData(), color, pixelSize);
168 colorSpace->setOpacity(it.rawData(), qMin(pixelOpacity, colorSpace->opacityF(color)), 1);
169 }
170}
virtual qreal intensityF(const quint8 *src) const =0
virtual quint32 pixelSize() const =0
virtual qreal opacityF(const quint8 *pixel) const =0
virtual void setOpacity(quint8 *pixels, quint8 alpha, qint32 nPixels) const =0

References KisPaintDevice::colorSpace(), KoColorSpace::intensityF(), KisSharedPtr< T >::isNull(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::nextPixel(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::oldRawData(), KoColorSpace::opacityF(), KoColorSpace::pixelSize(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::rawData(), KoColorSpace::setOpacity(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::x(), and KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::y().


The documentation for this class was generated from the following files: