71 const int directionCoeff = direction ==
NEED_RECT ? -1 : 1;
112 const QRect &applyRect,
118 if (applyRect.isEmpty())
return;
140 knockOutSelection =
s2.selection()->pixelSelection();
141 knockOutSelection->makeCloneFromRough(selection, selection->
selectedRect());
192 if (shadow->
noise() > 0) {
201 if (!d.offset.isNull()) {
212 d.srcRect : d.spreadNeedRect;
214 knockOutRect &= d.dstRect;
218 gc.
bitBlt(knockOutRect.topLeft(), knockOutSelection, knockOutRect);
240 config = style->dropShadow();
242 config = style->innerShadow();
244 config = style->outerGlow();
246 config = style->innerGlow();
255 const QRect &applyRect,
266 applyDropShadow(src, dst, applyRect, style->context(), w.config, style->resourcesInterface(), env);
276 return rect | d.finalNeedRect();
286 return style->context()->keep_original ?
287 d.finalChangeRect() :
rect | d.finalChangeRect();
const QString COMPOSITE_ERASE
QRect changedRect(const QRect &rect, KisPSDLayerStyleSP style, KisLayerStyleFilterEnvironment *env) const override
KisLsDropShadowFilter(Mode mode=DropShadow)
const psd_layer_effects_shadow_base * getShadowStruct(KisPSDLayerStyleSP style) const
void applyDropShadow(KisPaintDeviceSP srcDevice, KisMultipleProjection *dst, const QRect &applyRect, const psd_layer_effects_context *context, const psd_layer_effects_shadow_base *shadow, KisResourcesInterfaceSP resourcesInterface, KisLayerStyleFilterEnvironment *env) const
KisLayerStyleFilter * clone() const override
void processDirectly(KisPaintDeviceSP src, KisMultipleProjection *dst, KisLayerStyleKnockoutBlower *blower, const QRect &applyRect, KisPSDLayerStyleSP style, KisLayerStyleFilterEnvironment *env) const override
QRect neededRect(const QRect &rect, KisPSDLayerStyleSP style, KisLayerStyleFilterEnvironment *env) const override
static QString defaultProjectionId()
void bitBlt(qint32 dstX, qint32 dstY, const KisPaintDeviceSP srcDev, qint32 srcX, qint32 srcY, qint32 srcWidth, qint32 srcHeight)
void setCompositeOpId(const KoCompositeOp *op)
psd_glow_source source() const
bool effectEnabled() const
psd_technique_type technique() const
bool invertsSelection() const
QPoint calculateOffset(const psd_layer_effects_context *context) const
const quint8 * contourLookupTable() const
#define KIS_ASSERT_RECOVER_RETURN(cond)
T kisGrowRect(const T &rect, U offset)
void applyContourCorrection(KisPixelSelectionSP selection, const QRect &applyRect, const quint8 *lookup_table, bool antiAliased, bool edgeHidden)
const int noiseNeedBorder
QRect growRectFromRadius(const QRect &rc, int radius)
void adjustRange(KisPixelSelectionSP selection, const QRect &applyRect, const int range)
void findEdge(KisPixelSelectionSP selection, const QRect &applyRect, const bool edgeHidden)
void applyNoise(KisPixelSelectionSP selection, const QRect &applyRect, int noise, const psd_layer_effects_context *context, KisLayerStyleFilterEnvironment *env)
bool checkEffectEnabled(const psd_layer_effects_shadow_base *config, KisMultipleProjection *dst)
void selectionFromAlphaChannel(KisPaintDeviceSP srcDevice, KisSelectionSP dstSelection, const QRect &srcRect)
static const int FULL_PERCENT_RANGE
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)
int currentLevelOfDetail() const
KisCachedSelection * cachedSelection()
void moveTo(const QPoint &pt) override
QRect selectedRect() const
KisPixelSelectionSP pixelSelection
QRect finalNeedRect() const
ShadowRectsData(const QRect &applyRect, const psd_layer_effects_context *context, const psd_layer_effects_shadow_base *shadow, Direction direction)
QRect finalChangeRect() const