#pragma once

#include "AbstractGeometricItem.h"

#include <string>

class PathElement : public AbstractGeometricItem
{
public:
    enum class PostscriptPositioning
    {
        RELATIVE_TO,
        ABSOLUTE_TO
    };

    ~PathElement();

    virtual Point getFirstPoint() const = 0;

    virtual Point getEndPoint() const = 0;

    void setPostscriptPositioning(PostscriptPositioning positioning)
    {
        mPostscriptPositioning = positioning;
    }

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

protected:
    PostscriptPositioning mPostscriptPositioning{ PostscriptPositioning::RELATIVE_TO};
};
