Index: src/effects/SkMatrixConvolutionImageFilter.cpp |
diff --git a/src/effects/SkMatrixConvolutionImageFilter.cpp b/src/effects/SkMatrixConvolutionImageFilter.cpp |
index 03b28969b347c9a1eaa82815de81b975d2776a36..86595f8d700f32bd1ac2e3e09d055d210811eefc 100644 |
--- a/src/effects/SkMatrixConvolutionImageFilter.cpp |
+++ b/src/effects/SkMatrixConvolutionImageFilter.cpp |
@@ -22,6 +22,22 @@ |
#endif |
+namespace { |
+ |
+bool TileModeIsValid(SkMatrixConvolutionImageFilter::TileMode tileMode) { |
+ switch (tileMode) { |
+ case SkMatrixConvolutionImageFilter::kClamp_TileMode: |
+ case SkMatrixConvolutionImageFilter::kRepeat_TileMode: |
+ case SkMatrixConvolutionImageFilter::kClampToBlack_TileMode: |
+ return true; |
+ default: |
+ break; |
+ } |
+ return false; |
+} |
+ |
+} |
+ |
SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(const SkISize& kernelSize, const SkScalar* kernel, SkScalar gain, SkScalar bias, const SkIPoint& target, TileMode tileMode, bool convolveAlpha, SkImageFilter* input) |
: INHERITED(input), |
fKernelSize(kernelSize), |
@@ -51,6 +67,9 @@ SkMatrixConvolutionImageFilter::SkMatrixConvolutionImageFilter(SkFlattenableRead |
fTarget.fY = buffer.readInt(); |
fTileMode = (TileMode) buffer.readInt(); |
fConvolveAlpha = buffer.readBool(); |
Stephen White
2013/09/09 17:43:00
Can readBool() ever get weird values? Or does it i
|
+ buffer.validateData(SkScalarIsFinite(fGain) && |
+ SkScalarIsFinite(fBias) && |
+ TileModeIsValid(fTileMode)); |
} |
void SkMatrixConvolutionImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { |