mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
52 lines
1.6 KiB
C++
52 lines
1.6 KiB
C++
#ifndef AnimationKeypath_hpp
|
|
#define AnimationKeypath_hpp
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace lottie {
|
|
|
|
/// `AnimationKeypath` is an object that describes a keypath search for nodes in the
|
|
/// animation JSON. `AnimationKeypath` matches views and properties inside of `AnimationView`
|
|
/// to their backing `Animation` model by name.
|
|
///
|
|
/// A keypath can be used to set properties on an existing animation, or can be validated
|
|
/// with an existing `Animation`.
|
|
///
|
|
/// `AnimationKeypath` can describe a specific object, or can use wildcards for fuzzy matching
|
|
/// of objects. Acceptable wildcards are either "*" (star) or "**" (double star).
|
|
/// Single star will search a single depth for the next object.
|
|
/// Double star will search any depth.
|
|
///
|
|
/// Read More at https://airbnb.io/lottie/#/ios?id=dynamic-animation-properties
|
|
///
|
|
/// EG:
|
|
/// @"Layer.Shape Group.Stroke 1.Color"
|
|
/// Represents a specific color node on a specific stroke.
|
|
///
|
|
/// @"**.Stroke 1.Color"
|
|
/// Represents the color node for every Stroke named "Stroke 1" in the animation.
|
|
class AnimationKeypath {
|
|
public:
|
|
/// Creates a keypath from a dot-separated string. The string is separated by "."
|
|
/*public init(keypath: String) {
|
|
keys = keypath.components(separatedBy: ".")
|
|
}*/
|
|
|
|
/// Creates a keypath from a list of strings.
|
|
AnimationKeypath(std::vector<std::string> const &keys) :
|
|
_keys(keys) {
|
|
}
|
|
|
|
std::vector<std::string> const &keys() const {
|
|
return _keys;
|
|
}
|
|
|
|
private:
|
|
std::vector<std::string> _keys;
|
|
};
|
|
|
|
}
|
|
|
|
#endif /* AnimationKeypath_hpp */
|