53 lines
1.4 KiB
C++
53 lines
1.4 KiB
C++
#pragma once
|
|
#include "AbsAxis.h"
|
|
|
|
namespace YSG {
|
|
struct AxisRenderState;
|
|
struct AxisTempData;
|
|
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();
|
|
};
|
|
}
|
|
|