#pragma once

#include "Common.h"
#include "GraphingEnums.h"

namespace Graphing
{
    struct IEquationOptions : public NonCopyable, public NonMoveable
    {
        virtual ~IEquationOptions() = default;

        virtual Graphing::Color GetGraphColor() const = 0;
        virtual void SetGraphColor(const Graphing::Color& color) = 0;
        virtual void ResetGraphColor() = 0;

        virtual Graphing::Renderer::LineStyle GetLineStyle() const = 0;
        virtual void SetLineStyle(Graphing::Renderer::LineStyle value) = 0;
        virtual void ResetLineStyle() = 0;

        virtual float GetLineWidth() const = 0;
        virtual void SetLineWidth(float value) = 0;
        virtual void ResetLineWidth() = 0;

        virtual float GetSelectedEquationLineWidth() const = 0;
        virtual void SetSelectedEquationLineWidth(float value) = 0;
        virtual void ResetSelectedEquationLineWidth() = 0;

        virtual float GetPointRadius() const = 0;
        virtual void SetPointRadius(float value) = 0;
        virtual void ResetPointRadius() = 0;

        virtual float GetSelectedEquationPointRadius() const = 0;
        virtual void SetSelectedEquationPointRadius(float value) = 0;
        virtual void ResetSelectedEquationPointRadius() = 0;
    };
}