#pragma once

#include "Curve.h"
#include "Point.h"

namespace ntk{
class Arc : public Curve
{
public:
	Arc(const Point& startPoint, const Point& endPoint, double rX, double rY, double rotation = 0, bool largeArc = false, bool sweep = false);

	Point getFirstPoint() const override;

	Point getEndPoint() const override;

	Bounds getBounds() const override;

	const Point& getLocation() const override;

	Type getType() const override;

	CurveType getCurveType() const override;

	double getRx() const;

	double getRy() const;

	double getRotation() const;

	bool getUseLargeArc() const;

	bool getSweepParam() const;

	void sample(SparseGrid<bool>*) const override;

	std::string toPostScriptString(std::size_t precision = 0) const override;

private:
	Point mStartPoint;
	Point mEndPoint;
	double mRx{ 0.0 };
	double mRy{ 0.0 };
	double mRotation{ 0 };
	bool mLargeArc{ false };
	bool mSweep{ false };
};
}
