| #ifndef _RIVE_KEYED_PROPERTY_HPP_ | |
| #define _RIVE_KEYED_PROPERTY_HPP_ | |
| #include "rive/generated/animation/keyed_property_base.hpp" | |
| #include <vector> | |
| namespace rive | |
| { | |
| class KeyFrame; | |
| class KeyedCallbackReporter; | |
| class KeyedProperty : public KeyedPropertyBase | |
| { | |
| public: | |
| KeyedProperty(); | |
| ~KeyedProperty() override; | |
| void addKeyFrame(std::unique_ptr<KeyFrame>); | |
| StatusCode onAddedClean(CoreContext* context) override; | |
| StatusCode onAddedDirty(CoreContext* context) override; | |
| /// Report any keyframes that occured between secondsFrom and secondsTo. | |
| void reportKeyedCallbacks(KeyedCallbackReporter* reporter, | |
| uint32_t objectId, | |
| float secondsFrom, | |
| float secondsTo, | |
| int secondsFromExactOffset) const; | |
| /// Apply interpolating key frames. | |
| void apply(Core* object, float time, float mix); | |
| StatusCode import(ImportStack& importStack) override; | |
| private: | |
| int closestFrameIndex(float seconds, int exactOffset = 0) const; | |
| std::vector<std::unique_ptr<KeyFrame>> m_keyFrames; | |
| }; | |
| } // namespace rive | |
| #endif |