diff options
author | 2016-03-18 12:42:26 -0700 | |
---|---|---|
committer | 2016-03-18 12:42:26 -0700 | |
commit | 58fc94e55fb52704f86aa6fde97719131a3c9ed4 (patch) | |
tree | dc8074968cc98643982438862d46acb7032a738a /src/effects | |
parent | d2497f35ce9e9e70ab6c7acd82b212c80cb86d3a (diff) |
allow more options for shader blitprocs
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1810383004
Review URL: https://codereview.chromium.org/1810383004
Diffstat (limited to 'src/effects')
-rw-r--r-- | src/effects/gradients/Sk4fLinearGradient.cpp | 24 | ||||
-rw-r--r-- | src/effects/gradients/Sk4fLinearGradient.h | 8 |
2 files changed, 16 insertions, 16 deletions
diff --git a/src/effects/gradients/Sk4fLinearGradient.cpp b/src/effects/gradients/Sk4fLinearGradient.cpp index 82b2fcc69b..84b266accd 100644 --- a/src/effects/gradients/Sk4fLinearGradient.cpp +++ b/src/effects/gradients/Sk4fLinearGradient.cpp @@ -442,32 +442,34 @@ LinearGradient4fContext::mapTs(int x, int y, SkScalar ts[], int count) const { } } -SkShader::Context::BlitProc SkLinearGradient:: -LinearGradient4fContext::onChooseBlitProc(const SkImageInfo& info, BlitState* state) { +bool SkLinearGradient::LinearGradient4fContext::onChooseBlitProcs(const SkImageInfo& info, + BlitState* state) { SkXfermode::Mode mode; if (!SkXfermode::AsMode(state->fXfer, &mode)) { - return nullptr; + return false; } const SkGradientShaderBase& shader = static_cast<const SkGradientShaderBase&>(fShader); if (mode != SkXfermode::kSrc_Mode && !(mode == SkXfermode::kSrcOver_Mode && shader.colorsAreOpaque())) { - return nullptr; + return false; } switch (info.colorType()) { case kN32_SkColorType: - return D32_BlitProc; + state->fBlitBW = D32_BlitBW; + return true; case kRGBA_F16_SkColorType: - return D64_BlitProc; + state->fBlitBW = D64_BlitBW; + return true; default: - return nullptr; + return false; } } void SkLinearGradient:: -LinearGradient4fContext::D32_BlitProc(BlitState* state, int x, int y, const SkPixmap& dst, - int count, const SkAlpha aa[]) { +LinearGradient4fContext::D32_BlitBW(BlitState* state, int x, int y, const SkPixmap& dst, + int count) { // FIXME: ignoring coverage for now const LinearGradient4fContext* ctx = static_cast<const LinearGradient4fContext*>(state->fCtx); @@ -492,8 +494,8 @@ LinearGradient4fContext::D32_BlitProc(BlitState* state, int x, int y, const SkPi } void SkLinearGradient:: -LinearGradient4fContext::D64_BlitProc(BlitState* state, int x, int y, const SkPixmap& dst, - int count, const SkAlpha aa[]) { +LinearGradient4fContext::D64_BlitBW(BlitState* state, int x, int y, const SkPixmap& dst, + int count) { // FIXME: ignoring coverage for now const LinearGradient4fContext* ctx = static_cast<const LinearGradient4fContext*>(state->fCtx); diff --git a/src/effects/gradients/Sk4fLinearGradient.h b/src/effects/gradients/Sk4fLinearGradient.h index 9bce47c33d..30292c361f 100644 --- a/src/effects/gradients/Sk4fLinearGradient.h +++ b/src/effects/gradients/Sk4fLinearGradient.h @@ -22,7 +22,7 @@ public: protected: void mapTs(int x, int y, SkScalar ts[], int count) const override; - BlitProc onChooseBlitProc(const SkImageInfo&, BlitState*) override; + bool onChooseBlitProcs(const SkImageInfo&, BlitState*) override; private: using INHERITED = GradientShaderBase4fContext; @@ -40,10 +40,8 @@ private: bool isFast() const { return fDstToPosClass == kLinear_MatrixClass; } - static void D32_BlitProc(BlitState* state, int x, int y, const SkPixmap& dst, - int count, const SkAlpha aa[]); - static void D64_BlitProc(BlitState*, int x, int y, const SkPixmap& dst, - int count, const SkAlpha aa[]); + static void D32_BlitBW(BlitState*, int x, int y, const SkPixmap& dst, int count); + static void D64_BlitBW(BlitState*, int x, int y, const SkPixmap& dst, int count); mutable const Interval* fCachedInterval; }; |