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

#include <kis_cross_channel_filter.h>

+ Inheritance diagram for KisCrossChannelFilter:

Public Member Functions

KisConfigWidgetcreateConfigurationWidget (QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const override
 
KoColorTransformationcreateTransformation (const KoColorSpace *cs, const KisFilterConfigurationSP config) const override
 
KisFilterConfigurationSP factoryConfiguration (KisResourcesInterfaceSP resourcesInterface) const override
 
 KisCrossChannelFilter ()
 
 ~KisCrossChannelFilter () override
 
- Public Member Functions inherited from KisMultiChannelFilter
bool needsTransparentPixels (const KisFilterConfigurationSP config, const KoColorSpace *cs) const override
 
- Public Member Functions inherited from KisColorTransformationFilter
 KisColorTransformationFilter (const KoID &id, const KoID &category, const QString &entry)
 
void processImpl (KisPaintDeviceSP device, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const override
 
 ~KisColorTransformationFilter () override
 
- 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
 
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
 
virtual KisFilterConfigurationSP defaultConfiguration (KisResourcesInterfaceSP resourcesInterface) 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 ()
 
- Static Public Member Functions inherited from KisMultiChannelFilter
static int findChannel (const QVector< VirtualChannelInfo > &virtualChannels, const VirtualChannelInfo::Type &channelType)
 
static QVector< VirtualChannelInfogetVirtualChannels (const KoColorSpace *cs, int maxChannels=-1)
 

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 KisMultiChannelFilter
 KisMultiChannelFilter (const KoID &id, const QString &entry)
 
- 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

Filter which applies a relative adjustment to a (virtual) color channel based on the value of another. The amount of adjustment for a given input is controlled by a user-defined curve.

Definition at line 29 of file kis_cross_channel_filter.h.

Constructor & Destructor Documentation

◆ KisCrossChannelFilter()

KisCrossChannelFilter::KisCrossChannelFilter ( )

Definition at line 328 of file kis_cross_channel_filter.cpp.

328 : KisMultiChannelFilter(id(), i18n("&Cross-channel adjustment curves..."))
329{}
KisMultiChannelFilter(const KoID &id, const QString &entry)

◆ ~KisCrossChannelFilter()

KisCrossChannelFilter::~KisCrossChannelFilter ( )
override

Definition at line 331 of file kis_cross_channel_filter.cpp.

332{}

Member Function Documentation

◆ createConfigurationWidget()

KisConfigWidget * KisCrossChannelFilter::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 334 of file kis_cross_channel_filter.cpp.

◆ createTransformation()

KoColorTransformation * KisCrossChannelFilter::createTransformation ( const KoColorSpace * cs,
const KisFilterConfigurationSP config ) const
overridevirtual

Create the color transformation that will be applied on the device.

Implements KisColorTransformationFilter.

Definition at line 365 of file kis_cross_channel_filter.cpp.

366{
367 const KisCrossChannelFilterConfiguration* configBC =
368 dynamic_cast<const KisCrossChannelFilterConfiguration*>(config.data());
369 Q_ASSERT(configBC);
370
371 const QVector<QVector<quint16> > &originalTransfers = configBC->transfers();
372 const QList<KisCubicCurve> &curves = configBC->curves();
373 const QVector<int> &drivers = configBC->driverChannels();
374
375 const QVector<VirtualChannelInfo> virtualChannels =
376 KisMultiChannelFilter::getVirtualChannels(cs, originalTransfers.size());
377
378 if (originalTransfers.size() > int(virtualChannels.size())) {
379 // We got an illegal number of colorchannels :(
380 return 0;
381 }
382
384 // Channel order reversed in order to adjust saturation before hue. This allows mapping grays to colors.
385 for (int i = virtualChannels.size() - 1; i >= 0; i--) {
386 if (!curves[i].isConstant(0.5)) {
387 int channel = mapChannel(virtualChannels[i]);
388 int driverChannel = mapChannel(virtualChannels[drivers[i]]);
389 QHash<QString, QVariant> params;
390 params["channel"] = channel;
391 params["driverChannel"] = driverChannel;
392 params["curve"] = QVariant::fromValue(originalTransfers[i]);
393 params["relative"] = true;
394 params["lumaRed"] = cs->lumaCoefficients()[0];
395 params["lumaGreen"] = cs->lumaCoefficients()[1];
396 params["lumaBlue"] = cs->lumaCoefficients()[2];
397
398 transforms << cs->createColorTransformation("hsv_curve_adjustment", params);
399 }
400 }
401
403}
const QVector< int > driverChannels() const
const QVector< QVector< quint16 > > & transfers() const
const QList< KisCubicCurve > & curves() const
static QVector< VirtualChannelInfo > getVirtualChannels(const KoColorSpace *cs, int maxChannels=-1)
QVector< qreal > lumaCoefficients
KoColorTransformation * createColorTransformation(const QString &id, const QHash< QString, QVariant > &parameters) const
int mapChannel(const VirtualChannelInfo &channel)
static KoColorTransformation * createOptimizedCompositeTransform(const QVector< KoColorTransformation * > transforms)

References KoColorSpace::createColorTransformation(), KoCompositeColorTransformation::createOptimizedCompositeTransform(), KisMultiChannelFilterConfiguration::curves(), KisSharedPtr< T >::data(), KisCrossChannelFilterConfiguration::driverChannels(), KisMultiChannelFilter::getVirtualChannels(), KoColorSpace::lumaCoefficients, mapChannel(), and KisMultiChannelFilterConfiguration::transfers().

◆ factoryConfiguration()

KisFilterConfigurationSP KisCrossChannelFilter::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 KisColorTransformationFilter.

Definition at line 339 of file kis_cross_channel_filter.cpp.

340{
341 return new KisCrossChannelFilterConfiguration(0, nullptr, resourcesInterface);
342}

◆ id()

static KoID KisCrossChannelFilter::id ( )
inlinestatic

Definition at line 40 of file kis_cross_channel_filter.h.

40 {
41 return KoID("crosschannel", i18n("Cross-channel color adjustment"));
42 }
Definition KoID.h:30

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