#pragma once

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

class CubicBezierCurve : public Curve
{
public:
	CubicBezierCurve(const Point& startPoint, const Point& endPoint, const Point& startControlPoint, const Point& endControlPoint);

	Point getFirstPoint() const override;

	Point getEndPoint() const override;

	const Point& getStartControlPoint() const;

	const Point& getEndControlPoint() const;

	Bounds getBounds() const override;

	const Point& getLocation() const override;

	Type getType() const override;

	CurveType getCurveType() const override;

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

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

private:
	Point mStartPoint;
	Point mEndPoint;
	Point mStartControlPoint;
	Point mEndControlPoint;
};
