#include #include "Planisphere_p.h" #include "../Axis/AbsAxis_p.h" namespace YSG { Q_Ptr_cpp(Planisphere) PROP_P(Planisphere, Axis*, IAxis) PROP_P(Planisphere, Axis*, QAxis) PROP_P(Planisphere, Range, IRange) PROP_P(Planisphere, Range, QRange) PROP_P(Planisphere, QColor, pointColor) PROP_P(Planisphere, QColor, anchorColor) PROP_P(Planisphere, int, continueMillisecond) PROP_P(Planisphere, Planisphere_Type, type) void Planisphere::giveData(QPointF pos) { if(!ok()) return; if(!mPlot->isVisible()) return; INIT_SET(Planisphere) td->mDataList.push_back({pos}); } Planisphere::Builder::Builder(Axis* IAxis, Axis* QAxis) { ASSERT(IAxis->mPlot != nullptr, "Afterglow build error! IAxis->mPlot == nullptr"); ASSERT(IAxis->mPlot == QAxis->mPlot, "Afterglow build error! IAxis->mPlot != QAxis->mPlot"); plot = IAxis->mPlot; this->IAxis = IAxis; this->QAxis = QAxis; } Planisphere* Planisphere::Builder::build() { auto ret = new Planisphere(); ret->init(plot, layerName); PlanispherePrivate* pd = ret->d(); PlanisphereRenderState* sc = pd->renderStateCache(); PROP_R(Axis*, IAxis) PROP_R(Axis*, QAxis) PROP_R(Range, IRange) PROP_R(Range, QRange) PROP_R(QColor, pointColor) PROP_R(QColor, anchorColor) PROP_R(int, continueMillisecond) PROP_R(Planisphere_Type, type) return ret; } void Planisphere::setToAxisCenter() { PlanisphereRenderState *s = d()->renderStateCache(); double w = mPlot->width(), h = mPlot->height(); double l = w < h ? w : h; double iL = s->IAxis->coordRange().size()/w * l/2; double qL = s->QAxis->coordRange().size()/h * l/2; double im = s->IAxis->coordRange().middle(), qm = s->IAxis->coordRange().middle(); set_IRange({im-iL, im+iL}); set_QRange({qm-qL, qm+qL}); } }