#pragma once

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

class QuadraticBezierCurve : public Curve
{
public:
    QuadraticBezierCurve(const Point& startPoint, const Point& endPoint, const Point& controlPoint);

    Point getFirstPoint() const override;

    Point getControlPoint() const;

    Point getEndPoint() const override;

    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 mControlPoint;
};
