aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/SkModeColorFilter.cpp15
-rw-r--r--src/core/SkModeColorFilter.h20
-rw-r--r--src/core/SkOpts.h2
-rw-r--r--src/core/SkPM4f.h2
-rw-r--r--src/core/SkXfermode.cpp2
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);