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

#include <kis_emboss_filter.h>

+ Inheritance diagram for KisEmbossFilter:

Public Member Functions

KisConfigWidgetcreateConfigurationWidget (QWidget *parent, const KisPaintDeviceSP dev, bool useForMasks) const override
 
 KisEmbossFilter ()
 
void processImpl (KisPaintDeviceSP device, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater) const 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
 
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 ()
 

Protected Member Functions

KisFilterConfigurationSP defaultConfiguration (KisResourcesInterfaceSP resourcesInterface) const override
 
- 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 ()
 

Private Member Functions

int Lim_Max (int Now, int Up, int Max) const
 

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 15 of file kis_emboss_filter.h.

Constructor & Destructor Documentation

◆ KisEmbossFilter()

KisEmbossFilter::KisEmbossFilter ( )

Definition at line 43 of file kis_emboss_filter.cpp.

43 : KisFilter(id(), FiltersCategoryEmbossId, i18n("&Emboss with Variable Depth..."))
44{
49}
@ TO_RGBA8
KisFilter(const KoID &id, const KoID &category, const QString &entry)
Definition kis_filter.cc:22
const KoID FiltersCategoryEmbossId("emboss_filters", ki18nc("The category of emboss filters. Verb.", "Emboss"))
void setSupportsThreading(bool v)
void setSupportsAdjustmentLayers(bool v)
void setSupportsPainting(bool v)
void setColorSpaceIndependence(ColorSpaceIndependence v)

References KisBaseProcessor::setColorSpaceIndependence(), KisBaseProcessor::setSupportsAdjustmentLayers(), KisBaseProcessor::setSupportsPainting(), KisBaseProcessor::setSupportsThreading(), and TO_RGBA8.

Member Function Documentation

◆ createConfigurationWidget()

KisConfigWidget * KisEmbossFilter::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 139 of file kis_emboss_filter.cpp.

140{
141 Q_UNUSED(dev);
142
144 param.push_back(KisIntegerWidgetParam(10, 300, 30, i18nc("Emboss depth", "Depth"), "depth"));
145 KisConfigWidget * w = new KisMultiIntegerFilterWidget(id().id(), parent, id().id(), param);
146 Q_CHECK_PTR(w);
147 return w;
148}
std::vector< KisIntegerWidgetParam > vKisIntegerWidgetParam

◆ defaultConfiguration()

KisFilterConfigurationSP KisEmbossFilter::defaultConfiguration ( KisResourcesInterfaceSP resourcesInterface) const
overrideprotectedvirtual

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 51 of file kis_emboss_filter.cpp.

52{
53 KisFilterConfigurationSP config = factoryConfiguration(resourcesInterface);
54 config->setProperty("depth", 30);
55 return config;
56}
virtual KisFilterConfigurationSP factoryConfiguration(KisResourcesInterfaceSP resourcesInterface) const

References KisBaseProcessor::factoryConfiguration().

◆ id()

static KoID KisEmbossFilter::id ( )
inlinestatic

Definition at line 26 of file kis_emboss_filter.h.

26 {
27 return KoID("emboss", i18n("Emboss with Variable Depth"));
28 }
Definition KoID.h:30

◆ Lim_Max()

int KisEmbossFilter::Lim_Max ( int Now,
int Up,
int Max ) const
inlineprivate

Definition at line 131 of file kis_emboss_filter.cpp.

132{
133 --Max;
134 while (Now > Max - Up)
135 --Up;
136 return (Up);
137}

◆ processImpl()

void KisEmbossFilter::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 71 of file kis_emboss_filter.cpp.

76{
77 QPoint srcTopLeft = applyRect.topLeft();
78 Q_ASSERT(device);
79
80 //read the filter configuration values from the KisFilterConfiguration object
81 quint32 embossdepth = config ? config->getInt("depth", 30) : 30;
82
83 //the actual filter function from digikam. It needs a pointer to a quint8 array
84 //with the actual pixel data.
85
86 float Depth = embossdepth / 10.0;
87 int R = 0, G = 0, B = 0;
88 uchar Gray = 0;
89 int Width = applyRect.width();
90 int Height = applyRect.height();
91
92 KisSequentialIteratorProgress it(device, applyRect, progressUpdater);
93 QColor color1;
94 QColor color2;
96 while (it.nextPixel()) {
97
98 // XXX: COLORSPACE_INDEPENDENCE or at least work IN RGB16A
99 device->colorSpace()->toQColor(it.oldRawData(), &color1);
100 acc->moveTo(srcTopLeft.x() + it.x() + Lim_Max(it.x(), 1, Width), srcTopLeft.y() + it.y() + Lim_Max(it.y(), 1, Height));
101
102 device->colorSpace()->toQColor(acc->oldRawData(), &color2);
103
104 R = abs((int)((color1.red() - color2.red()) * (int)Depth + (quint8_MAX / 2)));
105 G = abs((int)((color1.green() - color2.green()) * (int)Depth + (quint8_MAX / 2)));
106 B = abs((int)((color1.blue() - color2.blue()) * (int)Depth + (quint8_MAX / 2)));
107
108 Gray = CLAMP((R + G + B) / 3, 0, quint8_MAX);
109
110 device->colorSpace()->fromQColor(QColor(Gray, Gray, Gray, color1.alpha()), it.rawData());
111 }
112}
Eigen::Matrix< double, 4, 2 > R
virtual const quint8 * oldRawData() const =0
int Lim_Max(int Now, int Up, int Max) const
const KoColorSpace * colorSpace() const
KisRandomAccessorSP createRandomAccessorNG()
virtual void moveTo(qint32 x, qint32 y)=0
virtual void toQColor(const quint8 *src, QColor *c) const =0
virtual void fromQColor(const QColor &color, quint8 *dst) const =0
#define CLAMP(x, l, h)
const quint8 quint8_MAX
Definition kis_global.h:24
Point abs(const Point &pt)

References B, CLAMP, KisPaintDevice::colorSpace(), KisPaintDevice::createRandomAccessorNG(), KoColorSpace::fromQColor(), G, Lim_Max(), KisRandomConstAccessorNG::moveTo(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::nextPixel(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::oldRawData(), KisBaseConstAccessor::oldRawData(), quint8_MAX, R, KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::rawData(), KoColorSpace::toQColor(), KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::x(), and KisSequentialIteratorBase< IteratorPolicy, SourcePolicy, ProgressPolicy >::y().


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