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

#include <kis_ls_overlay_filter.h>

+ Inheritance diagram for KisLsOverlayFilter:

Public Types

enum  Mode { Color , Gradient , Pattern }
 

Public Member Functions

QRect changedRect (const QRect &rect, KisPSDLayerStyleSP style, KisLayerStyleFilterEnvironment *env) const override
 
KisLayerStyleFilterclone () const override
 
 KisLsOverlayFilter (Mode mode)
 
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 applyOverlay (KisPaintDeviceSP srcDevice, KisMultipleProjection *dst, const QRect &applyRect, const psd_layer_effects_overlay_base *config, KisResourcesInterfaceSP resourcesInterface, KisLayerStyleFilterEnvironment *env) const
 
const psd_layer_effects_overlay_basegetOverlayStruct (KisPSDLayerStyleSP style) const
 
 KisLsOverlayFilter (const KisLsOverlayFilter &rhs)
 

Private Attributes

Mode m_mode
 

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 17 of file kis_ls_overlay_filter.h.

Member Enumeration Documentation

◆ Mode

Enumerator
Color 
Gradient 
Pattern 

Definition at line 20 of file kis_ls_overlay_filter.h.

Constructor & Destructor Documentation

◆ KisLsOverlayFilter() [1/2]

KisLsOverlayFilter::KisLsOverlayFilter ( Mode mode)

Definition at line 37 of file kis_ls_overlay_filter.cpp.

38 : KisLayerStyleFilter(KoID("lsoverlay", i18n("Overlay (style)"))),
39 m_mode(mode)
40{
41}
Definition KoID.h:30
KisLayerStyleFilter(const KoID &id)

◆ KisLsOverlayFilter() [2/2]

KisLsOverlayFilter::KisLsOverlayFilter ( const KisLsOverlayFilter & rhs)
private

Definition at line 43 of file kis_ls_overlay_filter.cpp.

45 m_mode(rhs.m_mode)
46{
47}

Member Function Documentation

◆ applyOverlay()

void KisLsOverlayFilter::applyOverlay ( KisPaintDeviceSP srcDevice,
KisMultipleProjection * dst,
const QRect & applyRect,
const psd_layer_effects_overlay_base * config,
KisResourcesInterfaceSP resourcesInterface,
KisLayerStyleFilterEnvironment * env ) const
private

Definition at line 54 of file kis_ls_overlay_filter.cpp.

60{
61 if (applyRect.isEmpty()) return;
62
63 const QString compositeOp = config->blendMode();
64 const quint8 opacityU8 = quint8(qRound(255.0 / 100.0 * config->opacity()));
65
67 compositeOp,
68 opacityU8,
69 QBitArray(),
70 srcDevice);
71
72 KisLsUtils::fillOverlayDevice(dstDevice, applyRect, config, resourcesInterface, env);
73}
KisPaintDeviceSP getProjection(const QString &id, const QString &compositeOpId, quint8 opacity, const QBitArray &channelFlags, KisPaintDeviceSP prototype)
qint32 opacity() const
Definition psd.h:281
QString blendMode() const
Definition psd.h:266
void fillOverlayDevice(KisPaintDeviceSP fillDevice, const QRect &applyRect, const psd_layer_effects_overlay_base *config, KisResourcesInterfaceSP resourcesInterface, KisLayerStyleFilterEnvironment *env)

References psd_layer_effects_shadow_base::blendMode(), KisMultipleProjection::defaultProjectionId(), KisLsUtils::fillOverlayDevice(), KisMultipleProjection::getProjection(), and psd_layer_effects_shadow_base::opacity().

◆ changedRect()

QRect KisLsOverlayFilter::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 115 of file kis_ls_overlay_filter.cpp.

116{
117 Q_UNUSED(style);
118 Q_UNUSED(env);
119 return rect;
120}

◆ clone()

KisLayerStyleFilter * KisLsOverlayFilter::clone ( ) const
overridevirtual

Implements KisLayerStyleFilter.

Definition at line 49 of file kis_ls_overlay_filter.cpp.

50{
51 return new KisLsOverlayFilter(*this);
52}

References KisLsOverlayFilter().

◆ getOverlayStruct()

const psd_layer_effects_overlay_base * KisLsOverlayFilter::getOverlayStruct ( KisPSDLayerStyleSP style) const
private

Definition at line 76 of file kis_ls_overlay_filter.cpp.

77{
78 const psd_layer_effects_overlay_base *config = 0;
79
80 if (m_mode == Color) {
81 config = style->colorOverlay();
82 } else if (m_mode == Gradient) {
83 config = style->gradientOverlay();
84 } else if (m_mode == Pattern) {
85 config = style->patternOverlay();
86 }
87
88 return config;
89}

References Gradient, m_mode, and Pattern.

◆ neededRect()

QRect KisLsOverlayFilter::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 108 of file kis_ls_overlay_filter.cpp.

109{
110 Q_UNUSED(style);
111 Q_UNUSED(env);
112 return rect;
113}

◆ processDirectly()

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

Implements KisLayerStyleFilter.

Definition at line 91 of file kis_ls_overlay_filter.cpp.

97{
98 Q_UNUSED(env);
99 Q_UNUSED(blower);
101
103 if (!KisLsUtils::checkEffectEnabled(config, dst)) return;
104
105 applyOverlay(src, dst, applyRect, config, style->resourcesInterface(), env);
106}
const psd_layer_effects_overlay_base * getOverlayStruct(KisPSDLayerStyleSP style) const
void applyOverlay(KisPaintDeviceSP srcDevice, KisMultipleProjection *dst, const QRect &applyRect, const psd_layer_effects_overlay_base *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 applyOverlay(), KisLsUtils::checkEffectEnabled(), getOverlayStruct(), and KIS_ASSERT_RECOVER_RETURN.

Member Data Documentation

◆ m_mode

Mode KisLsOverlayFilter::m_mode
private

Definition at line 53 of file kis_ls_overlay_filter.h.


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