aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkModeColorFilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/SkModeColorFilter.cpp')
-rw-r--r--src/core/SkModeColorFilter.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/core/SkModeColorFilter.cpp b/src/core/SkModeColorFilter.cpp
index edf38d269f..7e93747f10 100644
--- a/src/core/SkModeColorFilter.cpp
+++ b/src/core/SkModeColorFilter.cpp
@@ -24,6 +24,13 @@
//////////////////////////////////////////////////////////////////////////////////////////////////
+SkModeColorFilter::SkModeColorFilter(SkColor color, SkBlendMode mode) {
+ fColor = color;
+ fMode = mode;
+ // cache
+ fPMColor = SkPreMultiplyColor(fColor);
+}
+
#ifndef SK_IGNORE_TO_STRING
void SkModeColorFilter::toString(SkString* str) const {
str->append("SkModeColorFilter: color: 0x");
@@ -57,7 +64,7 @@ uint32_t SkModeColorFilter::getFlags() const {
void SkModeColorFilter::filterSpan(const SkPMColor shader[], int count, SkPMColor result[]) const {
SkPMColor color = fPMColor;
- SkXfermodeProc proc = fProc;
+ SkXfermodeProc proc = SkXfermode::GetProc(fMode);
for (int i = 0; i < count; i++) {
result[i] = proc(color, shader[i]);
@@ -69,12 +76,6 @@ void SkModeColorFilter::flatten(SkWriteBuffer& buffer) const {
buffer.writeUInt((int)fMode);
}
-void SkModeColorFilter::updateCache() {
- fPMColor = SkPreMultiplyColor(fColor);
- fProc = SkXfermode::GetProc(fMode);
- fPMColor4f = SkColor4f::FromColor(fColor).premul();
-}
-
sk_sp<SkFlattenable> SkModeColorFilter::CreateProc(SkReadBuffer& buffer) {
SkColor color = buffer.readColor();
SkBlendMode mode = (SkBlendMode)buffer.readUInt();