submodule: add rive-cpp to rive-tizen as submodule
[platform/core/uifw/rive-tizen.git] / submodule / include / transform_component.hpp
1 #ifndef _RIVE_TRANSFORM_COMPONENT_HPP_
2 #define _RIVE_TRANSFORM_COMPONENT_HPP_
3 #include "generated/transform_component_base.hpp"
4 #include "math/mat2d.hpp"
5
6 namespace rive
7 {
8         class TransformComponent : public TransformComponentBase
9         {
10         private:
11                 Mat2D m_Transform;
12                 Mat2D m_WorldTransform;
13                 float m_RenderOpacity = 0.0f;
14                 TransformComponent* m_ParentTransformComponent = nullptr;
15
16         public:
17                 StatusCode onAddedClean(CoreContext* context) override;
18                 void buildDependencies() override;
19                 void update(ComponentDirt value) override;
20                 void updateTransform();
21                 void updateWorldTransform();
22                 void markTransformDirty();
23                 void markWorldTransformDirty();
24
25                 /// Opacity inherited by any child of this transform component. This'll
26                 /// later get overridden by effect layers.
27                 virtual float childOpacity() { return m_RenderOpacity; }
28                 float renderOpacity() const { return m_RenderOpacity; }
29
30                 const Mat2D& transform() const;
31                 const Mat2D& worldTransform() const;
32
33                 virtual float x() const = 0;
34                 virtual float y() const = 0;
35
36                 void rotationChanged() override;
37                 void scaleXChanged() override;
38                 void scaleYChanged() override;
39                 void opacityChanged() override;
40         };
41 } // namespace rive
42
43 #endif