submodule: add rive-cpp to rive-tizen as submodule
[platform/core/uifw/rive-tizen.git] / submodule / include / shapes / paint / linear_gradient.hpp
1 #ifndef _RIVE_LINEAR_GRADIENT_HPP_
2 #define _RIVE_LINEAR_GRADIENT_HPP_
3 #include "generated/shapes/paint/linear_gradient_base.hpp"
4 #include "math/vec2d.hpp"
5 #include "shapes/paint/shape_paint_mutator.hpp"
6 #include <vector>
7 namespace rive
8 {
9         class Node;
10         class GradientStop;
11
12         class LinearGradient : public LinearGradientBase, public ShapePaintMutator
13         {
14         private:
15                 std::vector<GradientStop*> m_Stops;
16                 bool m_PaintsInWorldSpace;
17                 Node* m_ShapePaintContainer = nullptr;
18
19         public:
20                 StatusCode onAddedDirty(CoreContext* context) override;
21                 StatusCode onAddedClean(CoreContext* context) override
22                 {
23                         return StatusCode::Ok;
24                 }
25                 void addStop(GradientStop* stop);
26                 void update(ComponentDirt value) override;
27                 bool paintsInWorldSpace() const;
28                 void paintsInWorldSpace(bool value);
29                 void markGradientDirty();
30                 void markStopsDirty();
31
32         protected:
33                 void buildDependencies() override;
34                 void startXChanged() override;
35                 void startYChanged() override;
36                 void endXChanged() override;
37                 void endYChanged() override;
38                 void opacityChanged() override;
39                 void renderOpacityChanged() override;
40                 virtual void makeGradient(const Vec2D& start, const Vec2D& end);
41         };
42 } // namespace rive
43
44 #endif