[Adaptation Layer] Added rive-tizen adaptation layer class.
[platform/core/uifw/rive-tizen.git] / submodule / include / animation / state_machine.hpp
1 #ifndef _RIVE_STATE_MACHINE_HPP_
2 #define _RIVE_STATE_MACHINE_HPP_
3 #include "generated/animation/state_machine_base.hpp"
4 #include <stdio.h>
5 #include <vector>
6
7 namespace rive
8 {
9         class StateMachineLayer;
10         class StateMachineInput;
11         class StateMachineImporter;
12         class StateMachine : public StateMachineBase
13         {
14                 friend class StateMachineImporter;
15
16         private:
17                 std::vector<StateMachineLayer*> m_Layers;
18                 std::vector<StateMachineInput*> m_Inputs;
19
20                 void addLayer(StateMachineLayer* layer);
21                 void addInput(StateMachineInput* input);
22
23         public:
24                 ~StateMachine();
25                 StatusCode import(ImportStack& importStack) override;
26
27                 size_t layerCount() const { return m_Layers.size(); }
28                 size_t inputCount() const { return m_Inputs.size(); }
29
30                 const StateMachineInput* input(std::string name) const;
31                 const StateMachineInput* input(size_t index) const;
32                 const StateMachineLayer* layer(std::string name) const;
33                 const StateMachineLayer* layer(size_t index) const;
34
35                 StatusCode onAddedDirty(CoreContext* context) override;
36                 StatusCode onAddedClean(CoreContext* context) override;
37         };
38 } // namespace rive
39
40 #endif