Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Unified Diff: third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp

Issue 1870793004: Move common logic between BoxReflectFilterOperation and FEBoxReflect into BoxReflection. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@no-filter-outsets-2
Patch Set: merge with master Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp b/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
index 1442d43847f1cc2b86fa2c0ad8d4e14d2004e09c..8d76b2236353915cee6d19aad92d869c2af1c0b6 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
@@ -30,6 +30,7 @@
#include "SkColorMatrixFilter.h"
#include "SkTableColorFilter.h"
#include "platform/geometry/IntPoint.h"
+#include "platform/graphics/BoxReflection.h"
#include "platform/graphics/filters/FilterEffect.h"
#include "platform/graphics/filters/FilterOperations.h"
#include "platform/graphics/filters/SourceGraphic.h"
@@ -165,9 +166,8 @@ void SkiaImageFilterBuilder::buildFilterOperations(const FilterOperations& opera
case FilterOperation::BOX_REFLECT: {
// TODO(jbroman): Consider explaining box reflect to the compositor,
// instead of calling this a "reference filter".
- const auto& reflectOperation = toBoxReflectFilterOperation(op);
- RefPtr<SkImageFilter> imageFilter = buildBoxReflectFilter(
- reflectOperation.direction(), reflectOperation.offset(), nullptr, nullFilter);
+ const auto& reflection = toBoxReflectFilterOperation(op).reflection();
+ RefPtr<SkImageFilter> imageFilter = buildBoxReflectFilter(reflection, nullFilter);
filters->appendReferenceFilter(imageFilter.get());
break;
}
@@ -187,37 +187,15 @@ PassRefPtr<SkImageFilter> SkiaImageFilterBuilder::buildTransform(const AffineTra
return adoptRef(SkImageFilter::CreateMatrixFilter(affineTransformToSkMatrix(transform), kHigh_SkFilterQuality, input));
}
-SkMatrix SkiaImageFilterBuilder::matrixForBoxReflectFilter(ReflectionDirection direction, float offset)
+PassRefPtr<SkImageFilter> SkiaImageFilterBuilder::buildBoxReflectFilter(const BoxReflection& reflection, PassRefPtr<SkImageFilter> passedInput)
{
- SkMatrix flipMatrix;
- switch (direction) {
- case VerticalReflection:
- flipMatrix.setScale(1, -1);
- flipMatrix.postTranslate(0, offset);
- break;
- case HorizontalReflection:
- flipMatrix.setScale(-1, 1);
- flipMatrix.postTranslate(offset, 0);
- break;
- default:
- // MSVC requires that SkMatrix be initialized in this unreachable case.
- NOTREACHED();
- flipMatrix.reset();
- break;
- }
- return flipMatrix;
-}
-
-PassRefPtr<SkImageFilter> SkiaImageFilterBuilder::buildBoxReflectFilter(ReflectionDirection direction, float offset, Image* maskImage, SkImageFilter* input)
-{
- RefPtr<SkImageFilter> maskedInput = input;
+ sk_sp<SkImageFilter> input = toSkSp(passedInput);
+ sk_sp<SkImageFilter> maskedInput = input;
// TODO(jbroman): If a mask image is provided, mask!
- SkMatrix flipMatrix = matrixForBoxReflectFilter(direction, offset);
- RefPtr<SkImageFilter> flipImageFilter = adoptRef(SkImageFilter::CreateMatrixFilter(
- flipMatrix, kLow_SkFilterQuality, maskedInput.get()));
-
- return fromSkSp(SkXfermodeImageFilter::Make(nullptr, flipImageFilter.get(), input, nullptr));
+ sk_sp<SkImageFilter> flipImageFilter = SkImageFilter::MakeMatrixFilter(
+ reflection.reflectionMatrix(), kLow_SkFilterQuality, std::move(maskedInput));
+ return fromSkSp(SkXfermodeImageFilter::Make(nullptr, std::move(flipImageFilter), std::move(input), nullptr));
}
} // namespace blink
« no previous file with comments | « third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698