diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkImageFilter.h | 11 | ||||
-rw-r--r-- | include/effects/SkColorFilterImageFilter.h | 2 | ||||
-rw-r--r-- | include/effects/SkLightingImageFilter.h | 2 | ||||
-rw-r--r-- | include/effects/SkMatrixConvolutionImageFilter.h | 2 | ||||
-rw-r--r-- | include/effects/SkPaintImageFilter.h | 2 |
5 files changed, 12 insertions, 7 deletions
diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h index d1b1483386..4493d282dd 100644 --- a/include/core/SkImageFilter.h +++ b/include/core/SkImageFilter.h @@ -88,12 +88,16 @@ public: /** * Apply this cropRect to the imageBounds. If a given edge of the cropRect is not - * set, then the corresponding edge from imageBounds will be used. + * set, then the corresponding edge from imageBounds will be used. If "embiggen" + * is true, the crop rect is allowed to enlarge the size of the rect, otherwise + * it may only reduce the rect. Filters that can affect transparent black should + * pass "true", while all other filters should pass "false". * * Note: imageBounds is in "device" space, as the output cropped rectangle will be, * so the matrix is ignored for those. It is only applied the croprect's bounds. */ - void applyTo(const SkIRect& imageBounds, const SkMatrix&, SkIRect* cropped) const; + void applyTo(const SkIRect& imageBounds, const SkMatrix&, bool embiggen, + SkIRect* cropped) const; private: SkRect fRect; @@ -249,7 +253,7 @@ public: virtual SkRect computeFastBounds(const SkRect&) const; // Can this filter DAG compute the resulting bounds of an object-space rectangle? - virtual bool canComputeFastBounds() const; + bool canComputeFastBounds() const; /** * If this filter can be represented by another filter + a localMatrix, return that filter, @@ -466,6 +470,7 @@ private: SkBitmap* result, SkIPoint* offset) const; bool usesSrcInput() const { return fUsesSrcInput; } + virtual bool affectsTransparentBlack() const { return false; } typedef SkFlattenable INHERITED; int fInputCount; diff --git a/include/effects/SkColorFilterImageFilter.h b/include/effects/SkColorFilterImageFilter.h index 90e6e4bd71..ebe263930d 100644 --- a/include/effects/SkColorFilterImageFilter.h +++ b/include/effects/SkColorFilterImageFilter.h @@ -25,7 +25,7 @@ protected: sk_sp<SkSpecialImage> onFilterImage(SkSpecialImage* source, const Context&, SkIPoint* offset) const override; bool onIsColorFilterNode(SkColorFilter**) const override; - bool canComputeFastBounds() const override; + bool affectsTransparentBlack() const override; private: SkColorFilterImageFilter(SkColorFilter* cf, diff --git a/include/effects/SkLightingImageFilter.h b/include/effects/SkLightingImageFilter.h index 33cfceccb2..fb356c52e4 100644 --- a/include/effects/SkLightingImageFilter.h +++ b/include/effects/SkLightingImageFilter.h @@ -49,7 +49,7 @@ protected: void flatten(SkWriteBuffer&) const override; const SkImageFilterLight* light() const { return fLight.get(); } SkScalar surfaceScale() const { return fSurfaceScale; } - bool canComputeFastBounds() const override { return false; } + bool affectsTransparentBlack() const override { return true; } private: typedef SkImageFilter INHERITED; diff --git a/include/effects/SkMatrixConvolutionImageFilter.h b/include/effects/SkMatrixConvolutionImageFilter.h index a4abb0d0cf..092af08f0c 100644 --- a/include/effects/SkMatrixConvolutionImageFilter.h +++ b/include/effects/SkMatrixConvolutionImageFilter.h @@ -80,7 +80,7 @@ protected: bool onFilterImageDeprecated(Proxy*, const SkBitmap& src, const Context&, SkBitmap* result, SkIPoint* loc) const override; SkIRect onFilterNodeBounds(const SkIRect&, const SkMatrix&, MapDirection) const override; - bool canComputeFastBounds() const override; + bool affectsTransparentBlack() const override; #if SK_SUPPORT_GPU bool asFragmentProcessor(GrFragmentProcessor**, GrTexture*, const SkMatrix&, diff --git a/include/effects/SkPaintImageFilter.h b/include/effects/SkPaintImageFilter.h index 2876c0431b..35a76b80fb 100644 --- a/include/effects/SkPaintImageFilter.h +++ b/include/effects/SkPaintImageFilter.h @@ -26,7 +26,7 @@ public: return sk_sp<SkImageFilter>(new SkPaintImageFilter(paint, cropRect)); } - bool canComputeFastBounds() const override; + bool affectsTransparentBlack() const override; SK_TO_STRING_OVERRIDE() SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPaintImageFilter) |