#pragma once

#include "Color.h"

class GeometryElement
{
public:
    enum class Type
    {
        Path,
        Rectangle,
        Circle,
        Arc
    };

private:
    ColorUPtr mFillColor;
    ColorUPtr mStrokeColor;
    unsigned mStrokeThickness;
    Type mType;

public:

    GeometryElement();
    virtual ~GeometryElement() = default;

    Color* GetFillColor() const;
    Color* GetStrokeColor() const;
    unsigned GetStrokeThickness() const;
    virtual Type GetType() = 0;

    void SetFillColor(ColorUPtr color);
    void SetStrokeColor(ColorUPtr color);
    void SetStrokeThickness(unsigned thickness);
};

using GeometryElementUPtr = std::unique_ptr<GeometryElement>;
