diff options
Diffstat (limited to 'experimental/skotty/SkottyProperties.h')
-rw-r--r-- | experimental/skotty/SkottyProperties.h | 46 |
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 |