blob: bc01f18e72e4e8d4dd4c554aeee1dcb30569e6cb [file]
#ifndef _RIVE_CUSTOM_PROPERTY_HPP_
#define _RIVE_CUSTOM_PROPERTY_HPP_
#include "rive/generated/custom_property_base.hpp"
#include <stdio.h>
namespace rive
{
// What scripts see as a property's kind.
enum class CustomPropertyKind : uint32_t
{
number,
boolean,
string,
color,
enumeration,
trigger,
};
class CustomProperty : public CustomPropertyBase
{
public:
static constexpr uint32_t noNameId = (uint32_t)-1;
StatusCode onAddedClean(CoreContext* context) override;
// Script inputs keep their name and no id, so they never tag.
bool tagsParent() const { return nameId() != noNameId; }
// The child as a property tagging its parent, null for anything else.
static CustomProperty* tagging(Component* child)
{
return child->is<CustomProperty>() &&
child->as<CustomProperty>()->tagsParent()
? child->as<CustomProperty>()
: nullptr;
}
CustomPropertyKind kind() const;
};
} // namespace rive
#endif