#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