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

#include <kis_ls_satin_filter.h>

+ Inheritance diagram for KisLsSatinFilter:

Public Member Functions

QRect changedRect (const QRect &rect, KisPSDLayerStyleSP style, KisLayerStyleFilterEnvironment *env) const override
 
KisLayerStyleFilterclone () const override
 
 KisLsSatinFilter ()
 
QRect neededRect (const QRect &rect, KisPSDLayerStyleSP style, KisLayerStyleFilterEnvironment *env) const override
 
void processDirectly (KisPaintDeviceSP src, KisMultipleProjection *dst, KisLayerStyleKnockoutBlower *blower, const QRect &applyRect, KisPSDLayerStyleSP style, KisLayerStyleFilterEnvironment *env) const override
 
- Public Member Functions inherited from KisLayerStyleFilter
QString id () const
 
 KisLayerStyleFilter (const KoID &id)
 
virtual ~KisLayerStyleFilter ()
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KisShared
bool deref ()
 
bool ref ()
 
int refCount ()
 
QAtomicInt * sharedWeakReference ()
 

Private Member Functions

void applySatin (KisPaintDeviceSP srcDevice, KisMultipleProjection *dst, const QRect &applyRect, const psd_layer_effects_context *context, const psd_layer_effects_satin *config, KisResourcesInterfaceSP resourcesInterface, KisLayerStyleFilterEnvironment *env) const
 
 KisLsSatinFilter (const KisLsSatinFilter &rhs)
 

Additional Inherited Members

- Public Attributes inherited from KisLayerStyleFilter
KoID id
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 
- Protected Member Functions inherited from KisLayerStyleFilter
 KisLayerStyleFilter (const KisLayerStyleFilter &rhs)
 
- Protected Member Functions inherited from KisShared
 KisShared ()
 
 ~KisShared ()
 

Detailed Description

Definition at line 16 of file kis_ls_satin_filter.h.

Constructor & Destructor Documentation

◆ KisLsSatinFilter() [1/2]

KisLsSatinFilter::KisLsSatinFilter ( )

Definition at line 33 of file kis_ls_satin_filter.cpp.

34 : KisLayerStyleFilter(KoID("lssatin", i18n("Satin (style)")))
35{
36}
Definition KoID.h:30
KisLayerStyleFilter(const KoID &id)

◆ KisLsSatinFilter() [2/2]

KisLsSatinFilter::KisLsSatinFilter ( const KisLsSatinFilter & rhs)
private

Definition at line 38 of file kis_ls_satin_filter.cpp.

40{
41}

Member Function Documentation

◆ applySatin()

void KisLsSatinFilter::applySatin ( KisPaintDeviceSP srcDevice,
KisMultipleProjection * dst,
const QRect & applyRect,
const psd_layer_effects_context * context,
const psd_layer_effects_satin * config,
KisResourcesInterfaceSP resourcesInterface,
KisLayerStyleFilterEnvironment * env ) const
private

Contour correction

Definition at line 122 of file kis_ls_satin_filter.cpp.

129{
130 if (applyRect.isEmpty()) return;
131
132 SatinRectsData d(applyRect, context, config, SatinRectsData::NEED_RECT);
133
135 KisSelectionSP baseSelection = s1.selection();
136 KisLsUtils::selectionFromAlphaChannel(srcDevice, baseSelection, d.blurNeedRect);
137
138 KisPixelSelectionSP selection = baseSelection->pixelSelection();
139
141 KisPixelSelectionSP tempSelection = s2.selection()->pixelSelection();
142 tempSelection->makeCloneFromRough(selection, selection->selectedRect());
143
144 //KIS_DUMP_DEVICE_2(tempSelection, QRect(0,0,64,64), "00_selection", "dd");
145
146 KisLsUtils::applyGaussianWithTransaction(tempSelection, d.satinNeedRect, d.blur_size);
147
148 //KIS_DUMP_DEVICE_2(tempSelection, QRect(0,0,64,64), "01_gauss", "dd");
149
154 d.satinNeedRect,
155 config->contourLookupTable(),
156 config->antiAliased(),
157 config->edgeHidden());
158
159 //KIS_DUMP_DEVICE_2(tempSelection, QRect(0,0,64,64), "02_contour", "dd");
160
162 tempSelection,
163 config->invert(),
164 d.offset,
165 d.dstRect);
166
167 //KIS_DUMP_DEVICE_2(selection, QRect(0,0,64,64), "03_blended", "dd");
168
170 baseSelection,
171 srcDevice,
172 dst,
173 d.srcRect,
174 d.dstRect,
175 context,
176 config,
177 resourcesInterface,
178 env);
179}
QPointF s1
QPointF s2
void makeCloneFromRough(KisPaintDeviceSP src, const QRect &minimalRect)
bool edgeHidden() const
Definition psd.h:336
const quint8 * contourLookupTable() const
Definition psd.h:311
bool antiAliased() const
Definition psd.h:316
void blendAndOffsetSatinSelection(KisPixelSelectionSP dstSelection, KisPixelSelectionSP srcSelection, const bool invert, const QPoint &offset, const QRect &applyRect)
void applyContourCorrection(KisPixelSelectionSP selection, const QRect &applyRect, const quint8 *lookup_table, bool antiAliased, bool edgeHidden)
void selectionFromAlphaChannel(KisPaintDeviceSP srcDevice, KisSelectionSP dstSelection, const QRect &srcRect)
void applyGaussianWithTransaction(KisPixelSelectionSP selection, const QRect &applyRect, qreal radius)
void applyFinalSelection(const QString &projectionId, KisSelectionSP baseSelection, KisPaintDeviceSP srcDevice, KisMultipleProjection *dst, const QRect &, const QRect &dstRect, const psd_layer_effects_context *, const psd_layer_effects_shadow_base *config, KisResourcesInterfaceSP resourcesInterface, const KisLayerStyleFilterEnvironment *env)
KisPixelSelectionSP pixelSelection
bool invert() const
Definition psd.h:650

References psd_layer_effects_shadow_base::antiAliased(), KisLsUtils::applyContourCorrection(), KisLsUtils::applyFinalSelection(), KisLsUtils::applyGaussianWithTransaction(), blendAndOffsetSatinSelection(), KisLayerStyleFilterEnvironment::cachedSelection(), psd_layer_effects_shadow_base::contourLookupTable(), KisMultipleProjection::defaultProjectionId(), psd_layer_effects_shadow_base::edgeHidden(), psd_layer_effects_satin::invert(), KisPaintDevice::makeCloneFromRough(), SatinRectsData::NEED_RECT, KisSelection::pixelSelection, s1, s2, KisPixelSelection::selectedRect(), and KisLsUtils::selectionFromAlphaChannel().

◆ changedRect()

QRect KisLsSatinFilter::changedRect ( const QRect & rect,
KisPSDLayerStyleSP style,
KisLayerStyleFilterEnvironment * env ) 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.

Implements KisLayerStyleFilter.

Definition at line 208 of file kis_ls_satin_filter.cpp.

209{
210 const psd_layer_effects_satin *config = style->satin();
211 if (!config->effectEnabled()) return rect;
212
214 SatinRectsData d(rect, style->context(), w.config, SatinRectsData::CHANGE_RECT);
215 return style->context()->keep_original ?
216 d.finalChangeRect() : rect | d.finalChangeRect();
217}
bool effectEnabled() const
Definition psd.h:261

References SatinRectsData::CHANGE_RECT, KisLayerStyleFilterEnvironment::currentLevelOfDetail(), and psd_layer_effects_shadow_base::effectEnabled().

◆ clone()

KisLayerStyleFilter * KisLsSatinFilter::clone ( ) const
overridevirtual

Implements KisLayerStyleFilter.

Definition at line 43 of file kis_ls_satin_filter.cpp.

44{
45 return new KisLsSatinFilter(*this);
46}

References KisLsSatinFilter().

◆ neededRect()

QRect KisLsSatinFilter::neededRect ( const QRect & rect,
KisPSDLayerStyleSP style,
KisLayerStyleFilterEnvironment * env ) const
overridevirtual

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

Implements KisLayerStyleFilter.

Definition at line 198 of file kis_ls_satin_filter.cpp.

199{
200 const psd_layer_effects_satin *config = style->satin();
201 if (!config->effectEnabled()) return rect;
202
204 SatinRectsData d(rect, style->context(), w.config, SatinRectsData::NEED_RECT);
205 return rect | d.finalNeedRect();
206}

References KisLayerStyleFilterEnvironment::currentLevelOfDetail(), psd_layer_effects_shadow_base::effectEnabled(), and SatinRectsData::NEED_RECT.

◆ processDirectly()

void KisLsSatinFilter::processDirectly ( KisPaintDeviceSP src,
KisMultipleProjection * dst,
KisLayerStyleKnockoutBlower * blower,
const QRect & applyRect,
KisPSDLayerStyleSP style,
KisLayerStyleFilterEnvironment * env ) const
overridevirtual

Implements KisLayerStyleFilter.

Definition at line 181 of file kis_ls_satin_filter.cpp.

187{
188 Q_UNUSED(blower);
190
191 const psd_layer_effects_satin *config = style->satin();
192 if (!KisLsUtils::checkEffectEnabled(config, dst)) return;
193
195 applySatin(src, dst, applyRect, style->context(), w.config, style->resourcesInterface(), env);
196}
void applySatin(KisPaintDeviceSP srcDevice, KisMultipleProjection *dst, const QRect &applyRect, const psd_layer_effects_context *context, const psd_layer_effects_satin *config, KisResourcesInterfaceSP resourcesInterface, KisLayerStyleFilterEnvironment *env) const
#define KIS_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:75
bool checkEffectEnabled(const psd_layer_effects_shadow_base *config, KisMultipleProjection *dst)

References applySatin(), KisLsUtils::checkEffectEnabled(), KisLayerStyleFilterEnvironment::currentLevelOfDetail(), and KIS_ASSERT_RECOVER_RETURN.


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