up-to-date submodule(rive-cpp)
[platform/core/uifw/rive-tizen.git] / submodule / src / animation / linear_animation.cpp
1 #include "animation/linear_animation.hpp"
2 #include "animation/keyed_object.hpp"
3 #include "artboard.hpp"
4 #include "importers/artboard_importer.hpp"
5 #include "importers/import_stack.hpp"
6
7 using namespace rive;
8
9 LinearAnimation::~LinearAnimation()
10 {
11         for (auto object : m_KeyedObjects)
12         {
13                 delete object;
14         }
15 }
16
17 StatusCode LinearAnimation::onAddedDirty(CoreContext* context)
18 {
19         StatusCode code;
20         for (auto object : m_KeyedObjects)
21         {
22                 if ((code = object->onAddedDirty(context)) != StatusCode::Ok)
23                 {
24                         return code;
25                 }
26         }
27         return StatusCode::Ok;
28 }
29
30 StatusCode LinearAnimation::onAddedClean(CoreContext* context)
31 {
32         StatusCode code;
33         for (auto object : m_KeyedObjects)
34         {
35                 if ((code = object->onAddedClean(context)) != StatusCode::Ok)
36                 {
37                         return code;
38                 }
39         }
40         return StatusCode::Ok;
41 }
42
43 void LinearAnimation::addKeyedObject(KeyedObject* object)
44 {
45         m_KeyedObjects.push_back(object);
46 }
47
48 void LinearAnimation::apply(Artboard* artboard, float time, float mix)
49 {
50         for (auto object : m_KeyedObjects)
51         {
52                 object->apply(artboard, time, mix);
53         }
54 }
55
56 StatusCode LinearAnimation::import(ImportStack& importStack)
57 {
58         auto artboardImporter =
59             importStack.latest<ArtboardImporter>(ArtboardBase::typeKey);
60         if (artboardImporter == nullptr)
61         {
62                 return StatusCode::MissingObject;
63         }
64         artboardImporter->addAnimation(this);
65         return Super::import(importStack);
66 }