aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkColorFilter.cpp
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-04-19 18:36:09 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-04-19 18:36:09 +0000
commit6b7aee387d3b4b2df5894b51fa1c0baf649c6540 (patch)
tree2bef9aeea8c0894bba365a073963f8ff84e62fc3 /src/core/SkColorFilter.cpp
parent34cec2416c70a2fd8e60a9f0831eaddbde7d72b5 (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.cpp9
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)
{