Files
Renderive/YSGraphic_Core/Axis/Axis.h
T
2026-07-23 11:39:46 +08:00

53 lines
1.4 KiB
C++

#pragma once
#include "AbsAxis.h"
namespace YSG {
struct AxisRenderState;
struct AxisInputData;
struct AxisPrivate;
class LIB_DECL Axis : public AbsAxis {
Q_Ptr2(Axis)
public:
PROP(int, numberPrecision)
PROP(double, coordStart)
PROP(double, coordLength)
void set_coordRange(Range range);
template <typename That> struct BuilderT;
struct Builder;
};
template <typename That>
struct Axis::BuilderT : AbsAxis::BuilderT<That>{
PROP_BT(int, numberPrecision)
// PROP_BT(double, coordStart)
// PROP_BT(double, coordLength)
That& set_coordRange(Range r) {
That& t = *static_cast<That*>(this);
t.coordStart = std::move(r.lower);
t.coordLength = 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 numberPrecision = 2;
bool useWheel = false;
bool useDrag = false;
};
struct LIB_DECL Axis::Builder : BuilderT<Builder>{
Builder(Plot *plot, Qt::Orientation orientation);
Axis* build();
};
}