[skif] Remove legacy DropShadow implementation
Bug: skia:9282
Change-Id: I813d65459d23469e42f0155f4ff517f9dbdb846c
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/721820
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/effects/imagefilters/SkDropShadowImageFilter.cpp b/src/effects/imagefilters/SkDropShadowImageFilter.cpp
index b1a348b..6d601bd 100644
--- a/src/effects/imagefilters/SkDropShadowImageFilter.cpp
+++ b/src/effects/imagefilters/SkDropShadowImageFilter.cpp
@@ -7,210 +7,6 @@
#include "include/effects/SkImageFilters.h"
-#if defined(SK_USE_LEGACY_DROPSHADOW_IMAGEFILTER)
-
-
-#include "include/core/SkBlendMode.h"
-#include "include/core/SkCanvas.h"
-#include "include/core/SkColor.h"
-#include "include/core/SkColorFilter.h"
-#include "include/core/SkFlattenable.h"
-#include "include/core/SkImageFilter.h"
-#include "include/core/SkMatrix.h"
-#include "include/core/SkPaint.h"
-#include "include/core/SkPoint.h"
-#include "include/core/SkRect.h"
-#include "include/core/SkRefCnt.h"
-#include "include/core/SkSamplingOptions.h"
-#include "include/core/SkScalar.h"
-#include "include/core/SkTypes.h"
-#include "include/private/base/SkTo.h"
-#include "src/core/SkImageFilterTypes.h"
-#include "src/core/SkImageFilter_Base.h"
-#include "src/core/SkReadBuffer.h"
-#include "src/core/SkSpecialImage.h"
-#include "src/core/SkSpecialSurface.h"
-#include "src/core/SkWriteBuffer.h"
-
-#include <utility>
-
-namespace {
-
-class SkDropShadowImageFilter final : public SkImageFilter_Base {
-public:
- SkDropShadowImageFilter(SkScalar dx, SkScalar dy, SkScalar sigmaX, SkScalar sigmaY,
- SkColor color, bool shadowOnly, sk_sp<SkImageFilter> input,
- const SkRect* cropRect)
- : INHERITED(&input, 1, cropRect)
- , fDx(dx)
- , fDy(dy)
- , fSigmaX(sigmaX)
- , fSigmaY(sigmaY)
- , fColor(color)
- , fShadowOnly(shadowOnly) {}
-
- static sk_sp<SkImageFilter> Make(SkScalar dx, SkScalar dy, SkScalar sigmaX, SkScalar sigmaY,
- SkColor color, bool shadowOnly, sk_sp<SkImageFilter> input,
- const SkRect* cropRect) {
- return sk_sp<SkImageFilter>(new SkDropShadowImageFilter(
- dx, dy, sigmaX, sigmaY, color, shadowOnly, std::move(input), cropRect));
- }
-
- SkRect computeFastBounds(const SkRect&) const override;
-
-protected:
- void flatten(SkWriteBuffer&) const override;
- sk_sp<SkSpecialImage> onFilterImage(const skif::Context&, SkIPoint* offset) const override;
- SkIRect onFilterNodeBounds(const SkIRect& src, const SkMatrix& ctm,
- MapDirection, const SkIRect* inputRect) const override;
-
-private:
- friend void ::SkRegisterLegacyDropShadowImageFilterFlattenable();
- SK_FLATTENABLE_HOOKS(SkDropShadowImageFilter)
-
- SkScalar fDx, fDy, fSigmaX, fSigmaY;
- SkColor fColor;
- bool fShadowOnly;
-
- using INHERITED = SkImageFilter_Base;
-};
-
-} // end namespace
-
-sk_sp<SkImageFilter> SkImageFilters::DropShadow(
- SkScalar dx, SkScalar dy, SkScalar sigmaX, SkScalar sigmaY, SkColor color,
- sk_sp<SkImageFilter> input, const CropRect& cropRect) {
- return SkDropShadowImageFilter::Make(dx, dy, sigmaX, sigmaY, color, /* shadowOnly */ false,
- std::move(input), cropRect);
-}
-
-sk_sp<SkImageFilter> SkImageFilters::DropShadowOnly(
- SkScalar dx, SkScalar dy, SkScalar sigmaX, SkScalar sigmaY, SkColor color,
- sk_sp<SkImageFilter> input, const CropRect& cropRect) {
- return SkDropShadowImageFilter::Make(dx, dy, sigmaX, sigmaY, color, /* shadowOnly */ true,
- std::move(input), cropRect);
-}
-
-void SkRegisterLegacyDropShadowImageFilterFlattenable() {
- SK_REGISTER_FLATTENABLE(SkDropShadowImageFilter);
- // TODO (michaelludwig) - Remove after grace period for SKPs to stop using old name
- SkFlattenable::Register("SkDropShadowImageFilterImpl", SkDropShadowImageFilter::CreateProc);
-}
-
-sk_sp<SkFlattenable> SkDropShadowImageFilter::CreateProc(SkReadBuffer& buffer) {
- SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1);
- SkScalar dx = buffer.readScalar();
- SkScalar dy = buffer.readScalar();
- SkScalar sigmaX = buffer.readScalar();
- SkScalar sigmaY = buffer.readScalar();
- SkColor color = buffer.readColor();
-
- // For backwards compatibility, the shadow mode had been saved as an enum cast to a 32LE int,
- // where shadow-and-foreground was 0 and shadow-only was 1. Other than the number of bits, this
- // is equivalent to the bool that SkDropShadowImageFilter now uses.
- bool shadowOnly = SkToBool(buffer.read32LE(1));
- return SkDropShadowImageFilter::Make(dx, dy, sigmaX, sigmaY, color, shadowOnly,
- common.getInput(0), common.cropRect());
-}
-
-void SkDropShadowImageFilter::flatten(SkWriteBuffer& buffer) const {
- this->INHERITED::flatten(buffer);
- buffer.writeScalar(fDx);
- buffer.writeScalar(fDy);
- buffer.writeScalar(fSigmaX);
- buffer.writeScalar(fSigmaY);
- buffer.writeColor(fColor);
- // See CreateProc, but we save the bool as an int to match previous enum serialization.
- buffer.writeInt(fShadowOnly);
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-sk_sp<SkSpecialImage> SkDropShadowImageFilter::onFilterImage(const skif::Context& ctx,
- SkIPoint* offset) const {
- SkIPoint inputOffset = SkIPoint::Make(0, 0);
- sk_sp<SkSpecialImage> input(this->filterInput(0, ctx, &inputOffset));
- if (!input) {
- return nullptr;
- }
-
- const SkIRect inputBounds = SkIRect::MakeXYWH(inputOffset.x(), inputOffset.y(),
- input->width(), input->height());
- SkIRect bounds;
- if (!this->applyCropRect(ctx, inputBounds, &bounds)) {
- return nullptr;
- }
-
- sk_sp<SkSpecialSurface> surf(ctx.makeSurface(bounds.size()));
- if (!surf) {
- return nullptr;
- }
-
- SkCanvas* canvas = surf->getCanvas();
- SkASSERT(canvas);
-
- canvas->clear(0x0);
-
- SkVector sigma = SkVector::Make(fSigmaX, fSigmaY);
- ctx.ctm().mapVectors(&sigma, 1);
- sigma.fX = SkScalarAbs(sigma.fX);
- sigma.fY = SkScalarAbs(sigma.fY);
-
- SkPaint paint;
- paint.setAntiAlias(true);
- paint.setImageFilter(SkImageFilters::Blur(sigma.fX, sigma.fY, nullptr));
- paint.setColorFilter(SkColorFilters::Blend(fColor, SkBlendMode::kSrcIn));
-
- SkVector offsetVec = SkVector::Make(fDx, fDy);
- ctx.ctm().mapVectors(&offsetVec, 1);
-
- canvas->translate(SkIntToScalar(inputOffset.fX) - SkIntToScalar(bounds.fLeft),
- SkIntToScalar(inputOffset.fY) - SkIntToScalar(bounds.fTop));
- input->draw(canvas, offsetVec.fX, offsetVec.fY, SkSamplingOptions(), &paint);
-
- if (!fShadowOnly) {
- input->draw(canvas, 0, 0);
- }
- offset->fX = bounds.fLeft;
- offset->fY = bounds.fTop;
- return surf->makeImageSnapshot();
-}
-
-SkRect SkDropShadowImageFilter::computeFastBounds(const SkRect& src) const {
- SkRect bounds = this->getInput(0) ? this->getInput(0)->computeFastBounds(src) : src;
- SkRect shadowBounds = bounds;
- shadowBounds.offset(fDx, fDy);
- shadowBounds.outset(fSigmaX * 3, fSigmaY * 3);
- if (!fShadowOnly) {
- bounds.join(shadowBounds);
- } else {
- bounds = shadowBounds;
- }
- return bounds;
-}
-
-SkIRect SkDropShadowImageFilter::onFilterNodeBounds(
- const SkIRect& src, const SkMatrix& ctm, MapDirection dir, const SkIRect* inputRect) const {
- SkVector offsetVec = SkVector::Make(fDx, fDy);
- if (kReverse_MapDirection == dir) {
- offsetVec.negate();
- }
- ctm.mapVectors(&offsetVec, 1);
- SkIRect dst = src.makeOffset(SkScalarCeilToInt(offsetVec.x()),
- SkScalarCeilToInt(offsetVec.y()));
- SkVector sigma = SkVector::Make(fSigmaX, fSigmaY);
- ctm.mapVectors(&sigma, 1);
- dst.outset(
- SkScalarCeilToInt(SkScalarAbs(sigma.x() * 3)),
- SkScalarCeilToInt(SkScalarAbs(sigma.y() * 3)));
- if (!fShadowOnly) {
- dst.join(src);
- }
- return dst;
-}
-
-#else
-
#include "include/core/SkBlendMode.h"
#include "include/core/SkColor.h"
#include "include/core/SkColorFilter.h"
@@ -309,5 +105,3 @@
SkFlattenable::Register("SkDropShadowImageFilter", legacy_drop_shadow_create_proc);
SkFlattenable::Register("SkDropShadowImageFilterImpl", legacy_drop_shadow_create_proc);
}
-
-#endif // SK_USE_LEGACY_DROPSHADOW_IMAGEFILTER