Files
Renderive/YSGraphic_Core/Axis/Axis.h
T
2026-07-24 10:54:44 +08:00

61 lines
1.6 KiB
C++

#pragma once
#include "Abs_Axis.h"
namespace YSG {
struct Axis_Render_State;
struct Axis_Input_Data;
struct Axis_Private;
/// 普通数值轴。
class LIB_DECL Axis : public Abs_Axis {
public:
/// 返回私有渲染数据。
Axis_Private* d();
Render_Data* create_render_data() override;
Render_State* create_render_state() override;
Input_Data* create_input_data() override;
protected:
Axis();
public:
PROP(int, number_precision)
PROP(double, coord_start)
PROP(double, coord_length)
/// 设置轴坐标范围。
void set_coord_range(Range range);
template <typename That>
struct BuilderT;
struct Builder;
};
template <typename That>
struct Axis::BuilderT : Abs_Axis::BuilderT<That> {
PROP_BT(int, number_precision)
// PROP_BT(double, coord_start)
// PROP_BT(double, coord_length)
That& set_coord_range(Range r) {
That& t = *static_cast<That*>(this);
t.coord_start = std::move(r.lower);
t.coord_length = std::move(r.length());
return t;
}
That& set_use_wheel(bool useWheel) {
That& t = *static_cast<That*>(this);
this->useWheel = useWheel;
return t;
}
That& set_use_drag(bool useDrag) {
That& t = *static_cast<That*>(this);
this->useDrag = useDrag;
return t;
}
protected:
void set(Axis* ret);
int number_precision = 2;
bool useWheel = false;
bool useDrag = false;
};
struct LIB_DECL Axis::Builder : BuilderT<Builder> {
/// 创建数值轴构造器。
Builder(Plot* plot, Qt::Orientation orientation);
/// 构建并返回数值轴对象。
Axis* build();
};
} // namespace YSG