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

#include <wavefilter.h>

+ Inheritance diagram for KisFilterWave:

Public Member Functions

QRect changedRect (const QRect &rect, const KisFilterConfigurationSP config=0, int lod=0) const override
 
KisConfigWidgetcreateConfigurationWidget (QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const override
 
KisFilterConfigurationSP defaultConfiguration (KisResourcesInterfaceSP resourcesInterface) const override
 
 KisFilterWave ()
 
QRect neededRect (const QRect &rect, const KisFilterConfigurationSP config=0, int lod=0) const override
 
void processImpl (KisPaintDeviceSP device, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const override
 
- Public Member Functions inherited from KisFilter
virtual bool configurationAllowedForMask (KisFilterConfigurationSP config) const
 
virtual void fixLoadedFilterConfigurationForMasks (KisFilterConfigurationSP config) const
 
 KisFilter (const KoID &id, const KoID &category, const QString &entry)
 
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
 
virtual KisFilterConfigurationSP factoryConfiguration (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 ()
 

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 26 of file wavefilter.h.

Constructor & Destructor Documentation

◆ KisFilterWave()

KisFilterWave::KisFilterWave ( )

Definition at line 97 of file wavefilter.cpp.

97 : KisFilter(id(), FiltersCategoryOtherId, i18n("&Wave..."))
98{
100 setSupportsPainting(false);
102}
@ FULLY_INDEPENDENT
KisFilter(const KoID &id, const KoID &category, const QString &entry)
Definition kis_filter.cc:22
const KoID FiltersCategoryOtherId("other_filters", ki18nc("The category of filters that do not fit in a category. Noun.", "Other"))
void setSupportsAdjustmentLayers(bool v)
void setSupportsPainting(bool v)
void setColorSpaceIndependence(ColorSpaceIndependence v)

References FULLY_INDEPENDENT, KisBaseProcessor::setColorSpaceIndependence(), KisBaseProcessor::setSupportsAdjustmentLayers(), and KisBaseProcessor::setSupportsPainting().

Member Function Documentation

◆ changedRect()

QRect KisFilterWave::changedRect ( const QRect & rect,
const KisFilterConfigurationSP config = 0,
int lod = 0 ) const
overridevirtual

Similar to neededRect : some filters will alter a lot of pixels that are near to each other at the same time. So when you changed a single rectangle in a device, the actual rectangle that will feel the influence of this change might be bigger. Use this function to determine that rect.

Reimplemented from KisFilter.

Definition at line 167 of file wavefilter.cpp.

168{
169 Q_UNUSED(lod);
170
171 QVariant value;
172 int horizontalamplitude = (config && config->getProperty("horizontalamplitude", value)) ? value.toInt() : 4;
173 int verticalamplitude = (config && config->getProperty("verticalamplitude", value)) ? value.toInt() : 4;
174 return rect.adjusted(-horizontalamplitude, -verticalamplitude, horizontalamplitude, verticalamplitude);
175}
float value(const T *src, size_t ch)

References value().

◆ createConfigurationWidget()

KisConfigWidget * KisFilterWave::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 118 of file wavefilter.cpp.

119{
120 return new KisWdgWave((KisFilter*)this, (QWidget*)parent);
121}

◆ defaultConfiguration()

KisFilterConfigurationSP KisFilterWave::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 104 of file wavefilter.cpp.

105{
106 KisFilterConfigurationSP config = factoryConfiguration(resourcesInterface);
107 config->setProperty("horizontalwavelength", 50);
108 config->setProperty("horizontalshift", 50);
109 config->setProperty("horizontalamplitude", 4);
110 config->setProperty("horizontalshape", 0);
111 config->setProperty("verticalwavelength", 50);
112 config->setProperty("verticalshift", 50);
113 config->setProperty("verticalamplitude", 4);
114 config->setProperty("verticalshape", 0);
115 return config;
116}
virtual KisFilterConfigurationSP factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const

References KisBaseProcessor::factoryConfiguration().

◆ id()

static KoID KisFilterWave::id ( )
inlinestatic

Definition at line 38 of file wavefilter.h.

38 {
39 return KoID("wave", i18n("Wave"));
40 }
Definition KoID.h:30

◆ neededRect()

QRect KisFilterWave::neededRect ( const QRect & rect,
const KisFilterConfigurationSP config = 0,
int lod = 0 ) const
overridevirtual

Some filters need pixels outside the current processing rect to compute the new value (for instance, convolution filters)

Reimplemented from KisFilter.

Definition at line 177 of file wavefilter.cpp.

178{
179 return changedRect(rect, config, lod);
180}
QRect changedRect(const QRect &rect, const KisFilterConfigurationSP config=0, int lod=0) const override

References changedRect().

◆ processImpl()

void KisFilterWave::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 123 of file wavefilter.cpp.

128{
129 Q_ASSERT(device.data() != 0);
130
131 QVariant value;
132 int horizontalwavelength = (config && config->getProperty("horizontalwavelength", value)) ? value.toInt() : 50;
133 int horizontalshift = (config && config->getProperty("horizontalshift", value)) ? value.toInt() : 50;
134 int horizontalamplitude = (config && config->getProperty("horizontalamplitude", value)) ? value.toInt() : 4;
135 int horizontalshape = (config && config->getProperty("horizontalshape", value)) ? value.toInt() : 0;
136 int verticalwavelength = (config && config->getProperty("verticalwavelength", value)) ? value.toInt() : 50;
137 int verticalshift = (config && config->getProperty("verticalshift", value)) ? value.toInt() : 50;
138 int verticalamplitude = (config && config->getProperty("verticalamplitude", value)) ? value.toInt() : 4;
139 int verticalshape = (config && config->getProperty("verticalshape", value)) ? value.toInt() : 0;
140
141 KisWaveCurve* verticalWave;
142 if (verticalshape == 1)
143 verticalWave = new KisTriangleWaveCurve(verticalamplitude, verticalwavelength, verticalshift);
144 else
145 verticalWave = new KisSinusoidalWaveCurve(verticalamplitude, verticalwavelength, verticalshift);
146
147 KisWaveCurve* horizontalWave;
148 if (horizontalshape == 1)
149 horizontalWave = new KisTriangleWaveCurve(horizontalamplitude, horizontalwavelength, horizontalshift);
150 else
151 horizontalWave = new KisSinusoidalWaveCurve(horizontalamplitude, horizontalwavelength, horizontalshift);
152
153 KisSequentialIteratorProgress destination(device, applyRect, progressUpdater);
155
156 while (destination.nextPixel()) {
157 double xv = horizontalWave->valueAt(destination.y(), destination.x());
158 double yv = verticalWave->valueAt(destination.x(), destination.y());
159 source->moveTo(QPointF(xv, yv));
160 source->sampledOldRawData(destination.rawData());
161 }
162
163 delete verticalWave;
164 delete horizontalWave;
165}
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
KisRandomSubAccessorSP createRandomSubAccessor() const
virtual double valueAt(int x, int y)=0

References KisPaintDevice::createRandomSubAccessor(), KisSharedPtr< T >::data(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::nextPixel(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::rawData(), source(), value(), KisWaveCurve::valueAt(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::x(), and KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::y().


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