aboutsummaryrefslogtreecommitdiffhomepage
path: root/experimental/skotty/SkottyProperties.h
diff options
context:
space:
mode:
Diffstat (limited to 'experimental/skotty/SkottyProperties.h')
-rw-r--r--experimental/skotty/SkottyProperties.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/experimental/skotty/SkottyProperties.h b/experimental/skotty/SkottyProperties.h
index cb64ed748b..cd22810c2e 100644
--- a/experimental/skotty/SkottyProperties.h
+++ b/experimental/skotty/SkottyProperties.h
@@ -22,8 +22,11 @@
namespace sksg {
class Color;
+class Gradient;
+class LinearGradient;
class Matrix;
class Path;
+class RadialGradient;
class RRect;
class RenderNode;;
}
@@ -130,6 +133,49 @@ private:
using INHERITED = SkRefCnt;
};
+class CompositeGradient : public SkRefCnt {
+public:
+ COMPOSITE_PROPERTY(StartPoint, SkPoint , SkPoint::Make(0, 0) )
+ COMPOSITE_PROPERTY(EndPoint , SkPoint , SkPoint::Make(0, 0) )
+ COMPOSITE_PROPERTY(ColorStops, std::vector<SkScalar>, std::vector<SkScalar>())
+
+protected:
+ CompositeGradient(sk_sp<sksg::Gradient>, size_t stopCount);
+
+ const SkPoint& startPoint() const { return fStartPoint; }
+ const SkPoint& endPoint() const { return fEndPoint; }
+
+ sk_sp<sksg::Gradient> fGradient;
+ size_t fStopCount;
+
+ virtual void onApply() = 0;
+
+private:
+ void apply();
+
+ using INHERITED = SkRefCnt;
+};
+
+class CompositeLinearGradient final : public CompositeGradient {
+public:
+ CompositeLinearGradient(sk_sp<sksg::LinearGradient>, size_t stopCount);
+
+private:
+ void onApply() override;
+
+ using INHERITED = CompositeGradient;
+};
+
+class CompositeRadialGradient final : public CompositeGradient {
+public:
+ CompositeRadialGradient(sk_sp<sksg::RadialGradient>, size_t stopCount);
+
+private:
+ void onApply() override;
+
+ using INHERITED = CompositeGradient;
+};
+
#undef COMPOSITE_PROPERTY
} // namespace skotty