1 #ifndef _RIVE_DRAW_TARGET_BASE_HPP_
2 #define _RIVE_DRAW_TARGET_BASE_HPP_
3 #include "component.hpp"
4 #include "core/field_types/core_uint_type.hpp"
7 class DrawTargetBase : public Component
10 typedef Component Super;
13 static const uint16_t typeKey = 48;
15 /// Helper to quickly determine if a core object extends another without
17 bool isTypeOf(uint16_t typeKey) const override
21 case DrawTargetBase::typeKey:
22 case ComponentBase::typeKey:
29 uint16_t coreType() const override { return typeKey; }
31 static const uint16_t drawableIdPropertyKey = 119;
32 static const uint16_t placementValuePropertyKey = 120;
35 int m_DrawableId = -1;
36 int m_PlacementValue = 0;
38 inline int drawableId() const { return m_DrawableId; }
39 void drawableId(int value)
41 if (m_DrawableId == value)
49 inline int placementValue() const { return m_PlacementValue; }
50 void placementValue(int value)
52 if (m_PlacementValue == value)
56 m_PlacementValue = value;
57 placementValueChanged();
60 Core* clone() const override;
61 void copy(const DrawTargetBase& object)
63 m_DrawableId = object.m_DrawableId;
64 m_PlacementValue = object.m_PlacementValue;
65 Component::copy(object);
68 bool deserialize(uint16_t propertyKey, BinaryReader& reader) override
72 case drawableIdPropertyKey:
73 m_DrawableId = CoreUintType::deserialize(reader);
75 case placementValuePropertyKey:
76 m_PlacementValue = CoreUintType::deserialize(reader);
79 return Component::deserialize(propertyKey, reader);
83 virtual void drawableIdChanged() {}
84 virtual void placementValueChanged() {}