Chromium Code Reviews| Index: src/effects/SkMergeImageFilter.cpp |
| diff --git a/src/effects/SkMergeImageFilter.cpp b/src/effects/SkMergeImageFilter.cpp |
| index 4022da3096d4c49a9696991b9c0a6172c32c42c6..d42e33bc9fb2a580af352075075b5c51f6d472d8 100755 |
| --- a/src/effects/SkMergeImageFilter.cpp |
| +++ b/src/effects/SkMergeImageFilter.cpp |
| @@ -105,15 +105,41 @@ bool SkMergeImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& src, |
| return true; |
| } |
| +SkFlattenable* SkMergeImageFilter::CreateProc(SkReadBuffer& buffer) { |
| + Common common; |
| + if (!common.unflatten(buffer)) { |
|
Stephen White
2014/08/20 21:23:15
Let's explicitly pass -1 here.
reed1
2014/08/20 22:04:15
Done.
|
| + return NULL; |
| + } |
| + |
| + const int count = common.inputCount(); |
| + bool hasModes = buffer.readBool(); |
| + if (hasModes) { |
| + SkAutoSTArray<4, SkXfermode::Mode> modes(count); |
| + SkAutoSTArray<4, uint8_t> modes8(count); |
| + if (!buffer.readByteArray(modes8.get(), count)) { |
| + return NULL; |
| + } |
| + for (int i = 0; i < count; ++i) { |
| + modes[i] = (SkXfermode::Mode)modes8[i]; |
| + buffer.validate(SkIsValidMode(modes[i])); |
| + } |
| + if (!buffer.isValid()) { |
| + return NULL; |
| + } |
| + return Create(common.inputs(), count, modes.get(), &common.cropRect()); |
| + } |
| + return Create(common.inputs(), count, NULL, &common.cropRect()); |
| +} |
| + |
| void SkMergeImageFilter::flatten(SkWriteBuffer& buffer) const { |
| this->INHERITED::flatten(buffer); |
| - |
| buffer.writeBool(fModes != NULL); |
| if (fModes) { |
| buffer.writeByteArray(fModes, countInputs() * sizeof(fModes[0])); |
| } |
| } |
| +#ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING |
| SkMergeImageFilter::SkMergeImageFilter(SkReadBuffer& buffer) |
| : INHERITED(-1, buffer) { |
| bool hasModes = buffer.readBool(); |
| @@ -132,3 +158,4 @@ SkMergeImageFilter::SkMergeImageFilter(SkReadBuffer& buffer) |
| fModes = 0; |
| } |
| } |
| +#endif |