#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