blob: 20849a5031093b4161bab0759278bfd31c113ee8 [file]
#ifndef _RIVE_DRAW_RULES_HPP_
#define _RIVE_DRAW_RULES_HPP_
#include "rive/generated/draw_rules_base.hpp"
#ifdef WITH_RIVE_EDITOR
#include "rive/editor/object_arena.hpp"
#endif
#include <stdio.h>
namespace rive
{
class DrawTarget;
class DrawRules : public DrawRulesBase
{
private:
DrawTarget* m_ActiveTarget = nullptr;
#ifdef WITH_RIVE_EDITOR
// Slice 6 Phase E dual-storage. See targeted_constraint.hpp.
CoreHandle m_ActiveTargetHandle;
#endif
public:
#ifdef WITH_RIVE_EDITOR
// Body in editor_native/native/src/editor/draw_rules_editor.cpp.
DrawTarget* activeTarget() const;
void setActiveTargetForEditor(DrawTarget* t);
#else
inline DrawTarget* activeTarget() const { return m_ActiveTarget; }
#endif
StatusCode onAddedDirty(CoreContext* context) override;
StatusCode onAddedClean(CoreContext* context) override;
protected:
void drawTargetIdChanged() override;
};
} // namespace rive
#endif