Index: src/effects/SkArithmeticMode.cpp |
diff --git a/src/effects/SkArithmeticMode.cpp b/src/effects/SkArithmeticMode.cpp |
index 87af82efdbc6d51a1c014c1f8cbfdd9c37012014..8a0c429509bc047d5906ffa9907e18e4e4a43dc7 100644 |
--- a/src/effects/SkArithmeticMode.cpp |
+++ b/src/effects/SkArithmeticMode.cpp |
@@ -11,12 +11,21 @@ |
#include "SkWriteBuffer.h" |
#include "SkString.h" |
#include "SkUnPreMultiply.h" |
+#include "SkValue.h" |
#if SK_SUPPORT_GPU |
#include "SkArithmeticMode_gpu.h" |
#endif |
static const bool gUseUnpremul = false; |
+enum { |
+ ArithmeticXfermode_K0, |
+ ArithmeticXfermode_K1, |
+ ArithmeticXfermode_K2, |
+ ArithmeticXfermode_K3, |
+ ArithmeticXfermode_EnforcePMColor |
+}; |
+ |
class SkArithmeticMode_scalar : public SkXfermode { |
public: |
static SkArithmeticMode_scalar* Create(SkScalar k1, SkScalar k2, SkScalar k3, SkScalar k4, |
@@ -37,6 +46,18 @@ public: |
bool asXPFactory(GrXPFactory**) const override; |
#endif |
+ |
+ SkValue asValue() const override { |
+ auto value = SkValue::Object(SkValue::ArithmeticXfermode); |
+ value.set(ArithmeticXfermode_K0, SkValue::FromF32(fK[0])); |
+ value.set(ArithmeticXfermode_K1, SkValue::FromF32(fK[1])); |
+ value.set(ArithmeticXfermode_K2, SkValue::FromF32(fK[2])); |
+ value.set(ArithmeticXfermode_K3, SkValue::FromF32(fK[3])); |
+ value.set(ArithmeticXfermode_EnforcePMColor, |
+ SkValue::FromS32(fEnforcePMColor ? 1 : 0)); |
+ return value; |
+ } |
+ |
private: |
SkArithmeticMode_scalar(SkScalar k1, SkScalar k2, SkScalar k3, SkScalar k4, bool enforcePMColor) { |
fK[0] = k1; |