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

#include <kis_convolution_filter.h>

+ Inheritance diagram for KisConvolutionFilter:

Public Member Functions

QRect changedRect (const QRect &rect, const KisFilterConfigurationSP _config, int lod) const override
 
 KisConvolutionFilter (const KoID &id, const KoID &category, const QString &entry)
 
QRect neededRect (const QRect &rect, const KisFilterConfigurationSP _config, int lod) 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 KisConfigWidgetcreateConfigurationWidget (QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const
 
virtual KisFilterConfigurationSP defaultConfiguration (KisResourcesInterfaceSP resourcesInterface) 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 ()
 

Protected Member Functions

void setIgnoreAlpha (bool v)
 
- 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 ()
 

Protected Attributes

bool m_ignoreAlpha {false}
 
KisConvolutionKernelSP m_matrix
 

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
 

Detailed Description

Definition at line 17 of file kis_convolution_filter.h.

Constructor & Destructor Documentation

◆ KisConvolutionFilter()

KisConvolutionFilter::KisConvolutionFilter ( const KoID & id,
const KoID & category,
const QString & entry )

Definition at line 24 of file kis_convolution_filter.cpp.

26{
29}
@ FULLY_INDEPENDENT
void setSupportsLevelOfDetail(bool value)
KisFilter(const KoID &id, const KoID &category, const QString &entry)
Definition kis_filter.cc:22
void setColorSpaceIndependence(ColorSpaceIndependence v)

References FULLY_INDEPENDENT, KisBaseProcessor::setColorSpaceIndependence(), and KisFilter::setSupportsLevelOfDetail().

Member Function Documentation

◆ changedRect()

QRect KisConvolutionFilter::changedRect ( const QRect & rect,
const KisFilterConfigurationSP config,
int lod ) 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 69 of file kis_convolution_filter.cpp.

70{
71 return neededRect(rect, _config, lod);
72}
QRect neededRect(const QRect &rect, const KisFilterConfigurationSP _config, int lod) const override

References neededRect().

◆ neededRect()

QRect KisConvolutionFilter::neededRect ( const QRect & rect,
const KisFilterConfigurationSP config,
int lod ) 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 58 of file kis_convolution_filter.cpp.

59{
60 Q_UNUSED(_config);
61
63
64 const int windowsize = qMax(m_matrix->width(), m_matrix->height());
65 const int margin = qCeil(t.scale(0.5 * windowsize)) + 1;
66 return kisGrowRect(rect, margin);
67}
KisConvolutionKernelSP m_matrix
T kisGrowRect(const T &rect, U offset)
Definition kis_global.h:186

References KisConvolutionKernel::height(), kisGrowRect(), m_matrix, KisLodTransformScalar::scale(), and KisConvolutionKernel::width().

◆ processImpl()

void KisConvolutionFilter::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 32 of file kis_convolution_filter.cpp.

36{
37 Q_UNUSED(config);
38
39 QPoint srcTopLeft = applyRect.topLeft();
40 Q_ASSERT(device != 0);
41
42 KisConvolutionPainter painter(device);
43
44 QBitArray channelFlags;
45 if (config) {
46 channelFlags = config->channelFlags();
47 }
48 if (channelFlags.isEmpty() || !config) {
49 channelFlags = QBitArray(device->colorSpace()->channelCount(), true);
50 }
51
52 painter.setChannelFlags(channelFlags);
53 painter.setProgress(progressUpdater);
54 painter.applyMatrix(m_matrix, device, srcTopLeft, srcTopLeft, applyRect.size(), BORDER_REPEAT);
55
56}
The KisConvolutionPainter class applies a convolution kernel to a paint device.
const KoColorSpace * colorSpace() const
virtual quint32 channelCount() const =0

References KisConvolutionPainter::applyMatrix(), BORDER_REPEAT, KoColorSpace::channelCount(), KisPaintDevice::colorSpace(), m_matrix, KisPainter::setChannelFlags(), and KisPainter::setProgress().

◆ setIgnoreAlpha()

void KisConvolutionFilter::setIgnoreAlpha ( bool v)
protected

Definition at line 74 of file kis_convolution_filter.cpp.

75{
77}
qreal v

References m_ignoreAlpha, and v.

Member Data Documentation

◆ m_ignoreAlpha

bool KisConvolutionFilter::m_ignoreAlpha {false}
protected

Definition at line 36 of file kis_convolution_filter.h.

36{false};

◆ m_matrix

KisConvolutionKernelSP KisConvolutionFilter::m_matrix
protected

Definition at line 35 of file kis_convolution_filter.h.


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