X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fthird_party%2Fskia%2Fsrc%2Feffects%2FSkMergeImageFilter.cpp;h=5f662440840caae1cd4b3aeea8b267a19fe5949f;hb=ff3e2503a20db9193d323c1d19c38c68004dec4a;hp=93e23356101c71430716d530113f224b2abf9d0a;hpb=172ee7c03df346ff158858709f7f6494e695e0e4;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/third_party/skia/src/effects/SkMergeImageFilter.cpp b/src/third_party/skia/src/effects/SkMergeImageFilter.cpp index 93e2335..5f66244 100755 --- a/src/third_party/skia/src/effects/SkMergeImageFilter.cpp +++ b/src/third_party/skia/src/effects/SkMergeImageFilter.cpp @@ -8,7 +8,8 @@ #include "SkMergeImageFilter.h" #include "SkCanvas.h" #include "SkDevice.h" -#include "SkFlattenableBuffers.h" +#include "SkReadBuffer.h" +#include "SkWriteBuffer.h" #include "SkValidationUtils.h" /////////////////////////////////////////////////////////////////////////////// @@ -53,6 +54,7 @@ SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* first, SkImageFilter* seco SkMergeImageFilter::SkMergeImageFilter(SkImageFilter* filters[], int count, const SkXfermode::Mode modes[], const CropRect* cropRect) : INHERITED(count, filters, cropRect) { + SkASSERT(count >= 0); this->initModes(modes); } @@ -63,41 +65,9 @@ SkMergeImageFilter::~SkMergeImageFilter() { } } -bool SkMergeImageFilter::onFilterBounds(const SkIRect& src, const SkMatrix& ctm, - SkIRect* dst) { - if (countInputs() < 1) { - return false; - } - - SkIRect totalBounds; - - int inputCount = countInputs(); - for (int i = 0; i < inputCount; ++i) { - SkImageFilter* filter = getInput(i); - SkIRect r; - if (filter) { - if (!filter->filterBounds(src, ctm, &r)) { - return false; - } - } else { - r = src; - } - if (0 == i) { - totalBounds = r; - } else { - totalBounds.join(r); - } - } - - // don't modify dst until now, so we don't accidentally change it in the - // loop, but then return false on the next filter. - *dst = totalBounds; - return true; -} - bool SkMergeImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& src, const SkMatrix& ctm, - SkBitmap* result, SkIPoint* loc) { + SkBitmap* result, SkIPoint* offset) const { if (countInputs() < 1) { return false; } @@ -141,13 +111,13 @@ bool SkMergeImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& src, canvas.drawSprite(*srcPtr, pos.x() - x0, pos.y() - y0, &paint); } - loc->fX += bounds.left(); - loc->fY += bounds.top(); + offset->fX = bounds.left(); + offset->fY = bounds.top(); *result = dst->accessBitmap(false); return true; } -void SkMergeImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { +void SkMergeImageFilter::flatten(SkWriteBuffer& buffer) const { this->INHERITED::flatten(buffer); buffer.writeBool(fModes != NULL); @@ -156,16 +126,19 @@ void SkMergeImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const { } } -SkMergeImageFilter::SkMergeImageFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) { +SkMergeImageFilter::SkMergeImageFilter(SkReadBuffer& buffer) + : INHERITED(-1, buffer) { bool hasModes = buffer.readBool(); if (hasModes) { this->initAllocModes(); int nbInputs = countInputs(); size_t size = nbInputs * sizeof(fModes[0]); SkASSERT(buffer.getArrayCount() == size); - buffer.readByteArray(fModes, size); - for (int i = 0; i < nbInputs; ++i) { - buffer.validate(SkIsValidMode((SkXfermode::Mode)fModes[i])); + if (buffer.validate(buffer.getArrayCount() == size) && + buffer.readByteArray(fModes, size)) { + for (int i = 0; i < nbInputs; ++i) { + buffer.validate(SkIsValidMode((SkXfermode::Mode)fModes[i])); + } } } else { fModes = 0;