#pragma once

#include "../renderable/Renderable.h"
#include "Axis_Types.h"

#include <string>

namespace renderive {

class LIB_DECL Abs_Axis : public Renderable {
public:
    Abs_Axis();
    ~Abs_Axis() override;

    [[nodiscard]] virtual Axis_Transform transform() const = 0;
    [[nodiscard]] virtual Axis_Transform transform(const Render_State_View& state) const noexcept = 0;
    [[nodiscard]] int pixel_sample_count(Range range) const;
    [[nodiscard]] virtual double tick_step(Range range) const = 0;
    [[nodiscard]] int sub_tick_count(double major_step) const noexcept;
    [[nodiscard]] virtual std::string tick_label(double tick) const = 0;
};

} // namespace renderive
