#ifndef _RIVE_DRAW_TARGET_HPP_
#define _RIVE_DRAW_TARGET_HPP_

#include "rive/draw_target_placement.hpp"
#include "rive/generated/draw_target_base.hpp"
#include <stdio.h>

namespace rive
{
class Drawable;
class Artboard;
class DrawTarget : public DrawTargetBase
{
    friend class Artboard;

private:
    Drawable* m_Drawable = nullptr;

    // Controlled by the artboard.
    Drawable* first = nullptr;
    Drawable* last = nullptr;

public:
    Drawable* drawable() const { return m_Drawable; }
    StatusCode onAddedDirty(CoreContext* context) override;
    StatusCode onAddedClean(CoreContext* context) override;

    DrawTargetPlacement placement() const
    {
        return (DrawTargetPlacement)placementValue();
    }

protected:
    void placementValueChanged() override;
};
} // namespace rive

#endif