Index: Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp |
diff --git a/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp b/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp |
index e8e754455a908f2233b52b609c984f91f9444a7e..6d1adbb788154bd15c15c269fa27882085c37273 100644 |
--- a/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp |
+++ b/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp |
@@ -38,16 +38,6 @@ |
#include "platform/graphics/filters/SourceGraphic.h" |
#include "public/platform/WebPoint.h" |
-namespace { |
- |
-PassRefPtr<SkImageFilter> createMatrixImageFilter(SkScalar matrix[20], SkImageFilter* input) |
-{ |
- RefPtr<SkColorFilter> colorFilter(adoptRef(new SkColorMatrixFilter(matrix))); |
- return adoptRef(SkColorFilterImageFilter::Create(colorFilter.get(), input)); |
-} |
- |
-}; |
- |
namespace WebCore { |
SkiaImageFilterBuilder::SkiaImageFilterBuilder() |
@@ -99,12 +89,7 @@ bool SkiaImageFilterBuilder::buildFilterOperations(const FilterOperations& opera |
return false; |
ColorSpace currentColorSpace = ColorSpaceDeviceRGB; |
- |
- RefPtr<SkImageFilter> noopFilter; |
- SkScalar matrix[20]; |
- memset(matrix, 0, 20 * sizeof(SkScalar)); |
- matrix[0] = matrix[6] = matrix[12] = matrix[18] = 1.f; |
- noopFilter = createMatrixImageFilter(matrix, 0); |
+ SkImageFilter* const nullFilter = 0; |
for (size_t i = 0; i < operations.size(); ++i) { |
const FilterOperation& op = *operations.at(i); |
@@ -114,16 +99,16 @@ bool SkiaImageFilterBuilder::buildFilterOperations(const FilterOperations& opera |
ReferenceFilter* referenceFilter = toReferenceFilterOperation(op).filter(); |
if (referenceFilter && referenceFilter->lastEffect()) { |
FilterEffect* filterEffect = referenceFilter->lastEffect(); |
- // Link SourceGraphic to a noop filter that serves as a placholder for |
- // the previous filter in the chain. We don't know what color space the |
- // interior nodes will request, so we have to populate the map with both |
- // options. (Only one of these will actually have a color transform on it.) |
+ // Prepopulate the map with two entries for SourceGraphic: one with a null |
+ // image filter, and the other with a colorspace conversion filter. |
+ // We don't know what color space the interior nodes will request, so we have to |
+ // populate the map with both options. |
FilterHashKey deviceKey(referenceFilter->sourceGraphic(), ColorSpaceDeviceRGB); |
FilterHashKey linearKey(referenceFilter->sourceGraphic(), ColorSpaceLinearRGB); |
FilterHashKey deviceKeyWithValidation(referenceFilter->sourceGraphic(), static_cast<int>(ColorSpaceDeviceRGB) | static_cast<int>(PMColorValidationFlag)); |
FilterHashKey linearKeyWithValidation(referenceFilter->sourceGraphic(), static_cast<int>(ColorSpaceLinearRGB) | static_cast<int>(PMColorValidationFlag)); |
- RefPtr<SkImageFilter> deviceFilter = transformColorSpace(noopFilter.get(), currentColorSpace, ColorSpaceDeviceRGB); |
- RefPtr<SkImageFilter> linearFilter = transformColorSpace(noopFilter.get(), currentColorSpace, ColorSpaceLinearRGB); |
+ RefPtr<SkImageFilter> deviceFilter = transformColorSpace(nullFilter, currentColorSpace, ColorSpaceDeviceRGB); |
+ RefPtr<SkImageFilter> linearFilter = transformColorSpace(nullFilter, currentColorSpace, ColorSpaceLinearRGB); |
m_map.set(deviceKey, deviceFilter); |
m_map.set(linearKey, linearFilter); |
// The PM color validated filters might be requested, but the SourceGraphic inputs are always valid, |
@@ -206,10 +191,8 @@ bool SkiaImageFilterBuilder::buildFilterOperations(const FilterOperations& opera |
} |
if (currentColorSpace != ColorSpaceDeviceRGB) { |
// Transform to device color space at the end of processing, if required |
- RefPtr<SkImageFilter> filter; |
- filter = transformColorSpace(noopFilter.get(), currentColorSpace, ColorSpaceDeviceRGB); |
- if (filter != noopFilter) |
- filters->appendReferenceFilter(filter.get()); |
+ RefPtr<SkImageFilter> filter = transformColorSpace(nullFilter, currentColorSpace, ColorSpaceDeviceRGB); |
+ filters->appendReferenceFilter(filter.get()); |
} |
return true; |
} |