diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-04-19 18:36:09 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2011-04-19 18:36:09 +0000 |
commit | 6b7aee387d3b4b2df5894b51fa1c0baf649c6540 (patch) | |
tree | 2bef9aeea8c0894bba365a073963f8ff84e62fc3 /src/core/SkColorFilter.cpp | |
parent | 34cec2416c70a2fd8e60a9f0831eaddbde7d72b5 (diff) |
optimize when we have a colorfilter, but no shader or xfermode
git-svn-id: http://skia.googlecode.com/svn/trunk@1152 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkColorFilter.cpp')
-rw-r--r-- | src/core/SkColorFilter.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/core/SkColorFilter.cpp b/src/core/SkColorFilter.cpp index 6bc6d08d05..0508be78e6 100644 --- a/src/core/SkColorFilter.cpp +++ b/src/core/SkColorFilter.cpp @@ -17,6 +17,7 @@ #include "SkColorFilter.h" #include "SkShader.h" +#include "SkUnPreMultiply.h" bool SkColorFilter::asColorMode(SkColor* color, SkXfermode::Mode* mode) { return false; @@ -31,7 +32,13 @@ void SkColorFilter::filterSpan16(const uint16_t s[], int count, uint16_t d[]) memcpy(d, s, count * sizeof(uint16_t)); } -////////////////////////////////////////////////////////////////////////////// +SkColor SkColorFilter::filterColor(SkColor c) { + SkPMColor dst, src = SkPreMultiplyColor(c); + this->filterSpan(&src, 1, &dst); + return SkUnPreMultiply::PMColorToColor(dst); +} + +/////////////////////////////////////////////////////////////////////////////// SkFilterShader::SkFilterShader(SkShader* shader, SkColorFilter* filter) { |