diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/SkModeColorFilter.cpp | 15 | ||||
-rw-r--r-- | src/core/SkModeColorFilter.h | 20 | ||||
-rw-r--r-- | src/core/SkOpts.h | 2 | ||||
-rw-r--r-- | src/core/SkPM4f.h | 2 | ||||
-rw-r--r-- | src/core/SkXfermode.cpp | 2 |
5 files changed, 14 insertions, 27 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(); diff --git a/src/core/SkModeColorFilter.h b/src/core/SkModeColorFilter.h index 66dda38653..afff93c772 100644 --- a/src/core/SkModeColorFilter.h +++ b/src/core/SkModeColorFilter.h @@ -6,7 +6,6 @@ */ #include "SkColorFilter.h" -#include "SkPM4f.h" #ifndef SkModeColorFilter_DEFINED #define SkModeColorFilter_DEFINED @@ -18,7 +17,6 @@ public: } SkColor getColor() const { return fColor; } - SkBlendMode getMode() const { return fMode; } SkPMColor getPMColor() const { return fPMColor; } bool asColorMode(SkColor*, SkBlendMode*) const override; @@ -35,11 +33,7 @@ public: SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkModeColorFilter) protected: - SkModeColorFilter(SkColor color, SkBlendMode mode) { - fColor = color; - fMode = mode; - this->updateCache(); - } + SkModeColorFilter(SkColor color, SkBlendMode mode); void flatten(SkWriteBuffer&) const override; @@ -48,17 +42,11 @@ protected: sk_sp<SkColorFilter> onMakeColorSpace(SkColorSpaceXformer*) const override; - // cache - SkPM4f fPMColor4f; - private: - SkColor fColor; - SkBlendMode fMode; + SkColor fColor; + SkBlendMode fMode; // cache - SkPMColor fPMColor; - SkXfermodeProc fProc; - - void updateCache(); + SkPMColor fPMColor; friend class SkColorFilter; diff --git a/src/core/SkOpts.h b/src/core/SkOpts.h index 4c744e8d67..a4f1ea284c 100644 --- a/src/core/SkOpts.h +++ b/src/core/SkOpts.h @@ -24,7 +24,7 @@ namespace SkOpts { // Declare function pointers here... // May return nullptr if we haven't specialized the given Mode. - extern SkXfermode* (*create_xfermode)(SkXfermodeProc, SkBlendMode); + extern SkXfermode* (*create_xfermode)(SkBlendMode); typedef void (*BoxBlur)(const SkPMColor*, int, const SkIRect& srcBounds, SkPMColor*, int, int, int, int, int); extern BoxBlur box_blur_xx, box_blur_xy, box_blur_yx; diff --git a/src/core/SkPM4f.h b/src/core/SkPM4f.h index ab2258b328..82a6f1275f 100644 --- a/src/core/SkPM4f.h +++ b/src/core/SkPM4f.h @@ -78,6 +78,4 @@ struct SkPM4f { #endif }; -typedef SkPM4f (*SkXfermodeProc4f)(const SkPM4f& src, const SkPM4f& dst); - #endif diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp index 1d5cac3a86..0dd9e87cdf 100644 --- a/src/core/SkXfermode.cpp +++ b/src/core/SkXfermode.cpp @@ -719,7 +719,7 @@ sk_sp<SkXfermode> SkXfermode::Make(SkBlendMode mode) { once[(int)mode]([mode] { SkXfermodeProc proc = gProcs[(int)mode]; - if (auto xfermode = SkOpts::create_xfermode(proc, mode)) { + if (auto xfermode = SkOpts::create_xfermode(mode)) { cached[(int)mode] = xfermode; } else { cached[(int)mode] = new SkProcCoeffXfermode(proc, mode); |