blob: a743f77ce7f7b2c472c3f64b730efdfce50bd5cd [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