diff options
author | robertphillips <robertphillips@google.com> | 2016-03-23 16:38:05 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-23 16:38:05 -0700 |
commit | eac3e96fddca9bef9cd8cff914fd64de4877c53c (patch) | |
tree | 9ae4beff0b55afbe7cb6471b561ac309c80b2244 /src/effects | |
parent | 222f8ff12914d71e439de84df57de6550e09098e (diff) |
Revert of Switch SkColorFilterImageFilter over to new onFilterImage interface (patchset #5 id:80001 of https://codereview.chromium.org/1782083002/ )
Reason for revert:
seems to be breaking the 10k skp bot
Original issue's description:
> Switch SkColorFilterImageFilter over to new onFilterImage interface
>
> TBR=bsalomon@google.com
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1782083002
>
> Committed: https://skia.googlesource.com/skia/+/ec950c4d215c6141b31b98ed6a8182a97baeb8b9
TBR=senorblanco@google.com,senorblanco@chromium.org,bsalomon@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/1829993003
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/SkColorFilterImageFilter.cpp | 62 |
1 files changed, 27 insertions, 35 deletions
diff --git a/src/effects/SkColorFilterImageFilter.cpp b/src/effects/SkColorFilterImageFilter.cpp index a93997fabd..6eb66533d9 100644 --- a/src/effects/SkColorFilterImageFilter.cpp +++ b/src/effects/SkColorFilterImageFilter.cpp @@ -6,17 +6,18 @@ */ #include "SkColorFilterImageFilter.h" - +#include "SkBitmap.h" #include "SkCanvas.h" +#include "SkColorMatrixFilter.h" +#include "SkDevice.h" #include "SkColorFilter.h" #include "SkReadBuffer.h" -#include "SkSpecialImage.h" -#include "SkSpecialSurface.h" +#include "SkTableColorFilter.h" #include "SkWriteBuffer.h" SkImageFilter* SkColorFilterImageFilter::Create(SkColorFilter* cf, SkImageFilter* input, const CropRect* cropRect) { - if (!cf) { + if (nullptr == cf) { return nullptr; } @@ -35,10 +36,8 @@ SkImageFilter* SkColorFilterImageFilter::Create(SkColorFilter* cf, SkImageFilter } SkColorFilterImageFilter::SkColorFilterImageFilter(SkColorFilter* cf, - SkImageFilter* input, - const CropRect* cropRect) - : INHERITED(1, &input, cropRect) - , fColorFilter(SkRef(cf)) { + SkImageFilter* input, const CropRect* cropRect) + : INHERITED(1, &input, cropRect), fColorFilter(SkRef(cf)) { } SkFlattenable* SkColorFilterImageFilter::CreateProc(SkReadBuffer& buffer) { @@ -52,46 +51,39 @@ void SkColorFilterImageFilter::flatten(SkWriteBuffer& buffer) const { buffer.writeFlattenable(fColorFilter.get()); } -SkSpecialImage* SkColorFilterImageFilter::onFilterImage(SkSpecialImage* source, const Context& ctx, - SkIPoint* offset) const { - SkIPoint inputOffset = SkIPoint::Make(0, 0); - SkAutoTUnref<SkSpecialImage> input(this->filterInput(0, source, ctx, &inputOffset)); - if (!input) { - return nullptr; +bool SkColorFilterImageFilter::onFilterImageDeprecated(Proxy* proxy, const SkBitmap& source, + const Context& ctx, + SkBitmap* result, + SkIPoint* offset) const { + SkBitmap src = source; + SkIPoint srcOffset = SkIPoint::Make(0, 0); + if (!this->filterInputDeprecated(0, proxy, source, ctx, &src, &srcOffset)) { + return false; } SkIRect bounds; - const SkIRect inputBounds = SkIRect::MakeXYWH(inputOffset.fX, inputOffset.fY, - input->width(), input->height()); - if (!this->applyCropRect(ctx, inputBounds, &bounds)) { - return nullptr; + SkIRect srcBounds = src.bounds(); + srcBounds.offset(srcOffset); + if (!this->applyCropRect(ctx, srcBounds, &bounds)) { + return false; } - SkImageInfo info = SkImageInfo::MakeN32(bounds.width(), bounds.height(), kPremul_SkAlphaType); - sk_sp<SkSpecialSurface> surf(source->makeSurface(info)); - if (!surf) { - return nullptr; + SkAutoTUnref<SkBaseDevice> device(proxy->createDevice(bounds.width(), bounds.height())); + if (nullptr == device.get()) { + return false; } - - SkCanvas* canvas = surf->getCanvas(); - SkASSERT(canvas); - - // TODO: it seems like this clear shouldn't be necessary (see skbug.com/5075) - canvas->clear(0x0); - + SkCanvas canvas(device.get()); SkPaint paint; paint.setXfermodeMode(SkXfermode::kSrc_Mode); paint.setColorFilter(fColorFilter); + canvas.drawBitmap(src, SkIntToScalar(srcOffset.fX - bounds.fLeft), + SkIntToScalar(srcOffset.fY - bounds.fTop), &paint); - input->draw(canvas, - SkIntToScalar(inputOffset.fX - bounds.fLeft), - SkIntToScalar(inputOffset.fY - bounds.fTop), - &paint); - + *result = device.get()->accessBitmap(false); offset->fX = bounds.fLeft; offset->fY = bounds.fTop; - return surf->makeImageSnapshot().release(); + return true; } bool SkColorFilterImageFilter::onIsColorFilterNode(SkColorFilter** filter) const { |