Commit 84321d81 authored by fs's avatar fs Committed by Commit bot

Clamp radii in FEMorphology::createImageFilter

Sk{Dilate,Erode}ImageFilter::Make take the radii as integers (int), so
make sure to convert the float FEMorphology stores avoiding overflow.

BUG=675164

Review-Url: https://codereview.chromium.org/2585233002
Cr-Commit-Position: refs/heads/master@{#439474}
parent 2fd59389
...@@ -92,10 +92,8 @@ FloatRect FEMorphology::mapEffect(const FloatRect& rect) const { ...@@ -92,10 +92,8 @@ FloatRect FEMorphology::mapEffect(const FloatRect& rect) const {
sk_sp<SkImageFilter> FEMorphology::createImageFilter() { sk_sp<SkImageFilter> FEMorphology::createImageFilter() {
sk_sp<SkImageFilter> input( sk_sp<SkImageFilter> input(
SkiaImageFilterBuilder::build(inputEffect(0), operatingColorSpace())); SkiaImageFilterBuilder::build(inputEffect(0), operatingColorSpace()));
SkScalar radiusX = int radiusX = clampTo<int>(getFilter()->applyHorizontalScale(m_radiusX));
SkFloatToScalar(getFilter()->applyHorizontalScale(m_radiusX)); int radiusY = clampTo<int>(getFilter()->applyVerticalScale(m_radiusY));
SkScalar radiusY =
SkFloatToScalar(getFilter()->applyVerticalScale(m_radiusY));
SkImageFilter::CropRect rect = getCropRect(); SkImageFilter::CropRect rect = getCropRect();
if (m_type == FEMORPHOLOGY_OPERATOR_DILATE) if (m_type == FEMORPHOLOGY_OPERATOR_DILATE)
return SkDilateImageFilter::Make(radiusX, radiusY, std::move(input), &rect); return SkDilateImageFilter::Make(radiusX, radiusY, std::move(input), &rect);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment