| Index: src/core/SkImageFilter.cpp
|
| diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp
|
| index 4a380c52eb7a9549c4c7792a75c6c2367e13743e..6613f09b93b7fd0ba2f06aa3ebe7db4ed04f89fd 100644
|
| --- a/src/core/SkImageFilter.cpp
|
| +++ b/src/core/SkImageFilter.cpp
|
| @@ -93,7 +93,7 @@ void SkImageFilter::flatten(SkWriteBuffer& buffer) const {
|
| }
|
|
|
| bool SkImageFilter::filterImage(Proxy* proxy, const SkBitmap& src,
|
| - const SkMatrix& ctm,
|
| + const Context& context,
|
| SkBitmap* result, SkIPoint* offset) const {
|
| SkASSERT(result);
|
| SkASSERT(offset);
|
| @@ -101,8 +101,8 @@ bool SkImageFilter::filterImage(Proxy* proxy, const SkBitmap& src,
|
| * Give the proxy first shot at the filter. If it returns false, ask
|
| * the filter to do it.
|
| */
|
| - return (proxy && proxy->filterImage(this, src, ctm, result, offset)) ||
|
| - this->onFilterImage(proxy, src, ctm, result, offset);
|
| + return (proxy && proxy->filterImage(this, src, context, result, offset)) ||
|
| + this->onFilterImage(proxy, src, context, result, offset);
|
| }
|
|
|
| bool SkImageFilter::filterBounds(const SkIRect& src, const SkMatrix& ctm,
|
| @@ -134,7 +134,7 @@ void SkImageFilter::computeFastBounds(const SkRect& src, SkRect* dst) const {
|
| }
|
| }
|
|
|
| -bool SkImageFilter::onFilterImage(Proxy*, const SkBitmap&, const SkMatrix&,
|
| +bool SkImageFilter::onFilterImage(Proxy*, const SkBitmap&, const Context&,
|
| SkBitmap*, SkIPoint*) const {
|
| return false;
|
| }
|
| @@ -143,21 +143,21 @@ bool SkImageFilter::canFilterImageGPU() const {
|
| return this->asNewEffect(NULL, NULL, SkMatrix::I(), SkIRect());
|
| }
|
|
|
| -bool SkImageFilter::filterImageGPU(Proxy* proxy, const SkBitmap& src, const SkMatrix& ctm,
|
| +bool SkImageFilter::filterImageGPU(Proxy* proxy, const SkBitmap& src, const Context& ctx,
|
| SkBitmap* result, SkIPoint* offset) const {
|
| #if SK_SUPPORT_GPU
|
| SkBitmap input = src;
|
| SkASSERT(fInputCount == 1);
|
| SkIPoint srcOffset = SkIPoint::Make(0, 0);
|
| if (this->getInput(0) &&
|
| - !this->getInput(0)->getInputResultGPU(proxy, src, ctm, &input, &srcOffset)) {
|
| + !this->getInput(0)->getInputResultGPU(proxy, src, ctx, &input, &srcOffset)) {
|
| return false;
|
| }
|
| GrTexture* srcTexture = input.getTexture();
|
| SkIRect bounds;
|
| src.getBounds(&bounds);
|
| bounds.offset(srcOffset);
|
| - if (!this->applyCropRect(&bounds, ctm)) {
|
| + if (!this->applyCropRect(&bounds, ctx.ctm())) {
|
| return false;
|
| }
|
| SkRect srcRect = SkRect::Make(bounds);
|
| @@ -179,7 +179,7 @@ bool SkImageFilter::filterImageGPU(Proxy* proxy, const SkBitmap& src, const SkMa
|
| offset->fX = bounds.left();
|
| offset->fY = bounds.top();
|
| bounds.offset(-srcOffset);
|
| - SkMatrix matrix(ctm);
|
| + SkMatrix matrix(ctx.ctm());
|
| matrix.postTranslate(SkIntToScalar(-bounds.left()), SkIntToScalar(-bounds.top()));
|
| this->asNewEffect(&effect, srcTexture, matrix, bounds);
|
| SkASSERT(effect);
|
| @@ -253,7 +253,7 @@ void SkImageFilter::WrapTexture(GrTexture* texture, int width, int height, SkBit
|
| }
|
|
|
| bool SkImageFilter::getInputResultGPU(SkImageFilter::Proxy* proxy,
|
| - const SkBitmap& src, const SkMatrix& ctm,
|
| + const SkBitmap& src, const Context& ctx,
|
| SkBitmap* result, SkIPoint* offset) const {
|
| // Ensure that GrContext calls under filterImage and filterImageGPU below will see an identity
|
| // matrix with no clip and that the matrix, clip, and render target set before this function was
|
| @@ -261,9 +261,9 @@ bool SkImageFilter::getInputResultGPU(SkImageFilter::Proxy* proxy,
|
| GrContext* context = src.getTexture()->getContext();
|
| GrContext::AutoWideOpenIdentityDraw awoid(context, NULL);
|
| if (this->canFilterImageGPU()) {
|
| - return this->filterImageGPU(proxy, src, ctm, result, offset);
|
| + return this->filterImageGPU(proxy, src, ctx, result, offset);
|
| } else {
|
| - if (this->filterImage(proxy, src, ctm, result, offset)) {
|
| + if (this->filterImage(proxy, src, ctx, result, offset)) {
|
| if (!result->getTexture()) {
|
| SkImageInfo info;
|
| if (!result->asImageInfo(&info)) {
|
|
|