#ifndef _RIVE_COMMAND_PATH_HPP_
#define _RIVE_COMMAND_PATH_HPP_

#include "math/mat2d.hpp"

namespace rive
{
	enum class FillRule
	{
		nonZero,
		evenOdd
	};

	class RenderPath;

	/// Abstract path used to build up commands used for rendering.
	class CommandPath
	{
	public:
		virtual ~CommandPath() {}
		virtual void reset() = 0;
		virtual void fillRule(FillRule value) = 0;
		virtual void addPath(CommandPath* path, const Mat2D& transform) = 0;

		virtual void moveTo(float x, float y) = 0;
		virtual void lineTo(float x, float y) = 0;
		virtual void
		cubicTo(float ox, float oy, float ix, float iy, float x, float y) = 0;
		virtual void close() = 0;

		void addRect(float x, float y, float width, float height)
		{
			moveTo(x, y);
			lineTo(x + width, y);
			lineTo(x + width, y + height);
			lineTo(x, y + height);
			close();
		}

		virtual RenderPath* renderPath() = 0;
	};
} // namespace rive
#endif