| Index: src/effects/SkRectShaderImageFilter.cpp
|
| diff --git a/src/effects/SkRectShaderImageFilter.cpp b/src/effects/SkRectShaderImageFilter.cpp
|
| index a00994e75b64ffe5b5145822ac9a6c8db054a467..aab6390ec2125dbaa90c5fc9a6a927f61e56d92f 100644
|
| --- a/src/effects/SkRectShaderImageFilter.cpp
|
| +++ b/src/effects/SkRectShaderImageFilter.cpp
|
| @@ -8,7 +8,7 @@
|
| #include "SkRectShaderImageFilter.h"
|
| #include "SkBitmap.h"
|
| #include "SkCanvas.h"
|
| -#include "SkDevice.h"
|
| +#include "SkSurface.h"
|
| #include "SkReadBuffer.h"
|
| #include "SkWriteBuffer.h"
|
| #include "SkShader.h"
|
| @@ -50,21 +50,20 @@ SkRectShaderImageFilter::~SkRectShaderImageFilter() {
|
| }
|
|
|
| bool SkRectShaderImageFilter::onFilterImage(Proxy* proxy,
|
| - const SkBitmap& source,
|
| + SkImage& source,
|
| const Context& ctx,
|
| - SkBitmap* result,
|
| + SkAutoTUnref<SkImage>& result,
|
| SkIPoint* offset) const {
|
| SkIRect bounds;
|
| if (!this->applyCropRect(ctx, source, SkIPoint::Make(0, 0), &bounds)) {
|
| return false;
|
| }
|
|
|
| - SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(bounds.width(),
|
| - bounds.height()));
|
| - if (NULL == device.get()) {
|
| + SkAutoTUnref<SkSurface> surface(proxy->createSurface(bounds.width(),
|
| + bounds.height()));
|
| + if (NULL == surface) {
|
| return false;
|
| }
|
| - SkCanvas canvas(device.get());
|
|
|
| SkPaint paint;
|
| SkMatrix matrix(ctx.ctm());
|
| @@ -72,9 +71,14 @@ bool SkRectShaderImageFilter::onFilterImage(Proxy* proxy,
|
| SkSafeUnref(paint.setShader(SkShader::CreateLocalMatrixShader(fShader, matrix)));
|
|
|
| SkRect rect = SkRect::MakeWH(SkIntToScalar(bounds.width()), SkIntToScalar(bounds.height()));
|
| - canvas.drawRect(rect, paint);
|
| + surface->getCanvas()->drawRect(rect, paint);
|
| +
|
| + SkImage* image = surface->newImageSnapshot(SkSurface::kYes_Budgeted);
|
| + if (NULL == image) {
|
| + return false;
|
| + }
|
| + result.reset(image);
|
|
|
| - *result = device.get()->accessBitmap(false);
|
| offset->fX = bounds.fLeft;
|
| offset->fY = bounds.fTop;
|
| return true;
|
|
|