diff options
author | 2016-01-21 15:29:10 -0800 | |
---|---|---|
committer | 2016-01-21 15:29:10 -0800 | |
commit | 353c148d8e8c9031daca34c6f9d6bcc6f08706c7 (patch) | |
tree | 2688f89d13fd991cefaf2a6e9cd79e48fa31417c /src/core/SkShader.cpp | |
parent | 07caf56e723ec04a024f952177f7f4daba06c82c (diff) |
experiment: float color components
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1617813002
Review URL: https://codereview.chromium.org/1617813002
Diffstat (limited to 'src/core/SkShader.cpp')
-rw-r--r-- | src/core/SkShader.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/core/SkShader.cpp b/src/core/SkShader.cpp index bd3876a69b..856b659213 100644 --- a/src/core/SkShader.cpp +++ b/src/core/SkShader.cpp @@ -117,6 +117,10 @@ SkShader::Context::ShadeProc SkShader::Context::asAShadeProc(void** ctx) { return nullptr; } +void SkShader::Context::shadeSpan4f(int x, int y, SkPM4f[], int count) { + SkASSERT(false && "shadeSpan4f called but not implemented"); +} + #include "SkColorPriv.h" #define kTempColorQuadCount 6 // balance between speed (larger) and saving stack-space @@ -279,7 +283,11 @@ SkColorShader::ColorShaderContext::ColorShaderContext(const SkColorShader& shade } fPMColor = SkPackARGB32(a, r, g, b); - fFlags = kConstInY32_Flag; + SkColor4f c4 = SkColor4f::FromColor(shader.fColor); + c4.fA *= rec.fPaint->getAlpha() / 255.0f; + fPM4f = c4.premul(); + + fFlags = kConstInY32_Flag | kSupports4f_Flag; if (255 == a) { fFlags |= kOpaqueAlpha_Flag; } @@ -293,6 +301,12 @@ void SkColorShader::ColorShaderContext::shadeSpanAlpha(int x, int y, uint8_t alp memset(alpha, SkGetPackedA32(fPMColor), count); } +void SkColorShader::ColorShaderContext::shadeSpan4f(int x, int y, SkPM4f span[], int count) { + for (int i = 0; i < count; ++i) { + span[i] = fPM4f; + } +} + SkShader::GradientType SkColorShader::asAGradient(GradientInfo* info) const { if (info) { if (info->fColors && info->fColorCount >= 1) { |