aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-03-18 12:42:26 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-03-18 12:42:26 -0700
commit58fc94e55fb52704f86aa6fde97719131a3c9ed4 (patch)
treedc8074968cc98643982438862d46acb7032a738a /src/effects
parentd2497f35ce9e9e70ab6c7acd82b212c80cb86d3a (diff)
allow more options for shader blitprocs
Diffstat (limited to 'src/effects')
-rw-r--r--src/effects/gradients/Sk4fLinearGradient.cpp24
-rw-r--r--src/effects/gradients/Sk4fLinearGradient.h8
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;
};