#pragma once #include "base/Tool.h" static QWidget* create_planisphere_plot() { class Time_Axis; class Planisphere_Plot : public renderive::Latency_Eager_Plot { public: std::shared_ptr x_axis{}; std::shared_ptr y_axis{}; std::shared_ptr planisphere{}; std::shared_ptr msr{}; QMenu* menu{}; void init() override { Latency_Eager_Plot::init(); object_name = "PlanispherePlot"; auto data = create_renderable_node(get_root_renderable(), "Data_Renderable"); auto axis = create_renderable_node(get_root_renderable(), "Axis_Renderable"); auto overlay = create_renderable_node(get_root_renderable(), "Overlay_Renderable"); x_axis = renderive::Axis::Builder(axis, Qt::Horizontal) .set_tick_length(-10) .set_sub_tick_length(-5) .build(); y_axis = renderive::Axis::Builder(axis, Qt::Vertical).build(); planisphere = renderive::Planisphere::Builder(data, x_axis, y_axis) .set_continue_millisecond(2000) .build(); msr = renderive::Multi_Select_Rect::Builder(overlay, x_axis, y_axis).build(); } protected: void resizeEvent(QResizeEvent* event) override { x_axis->set_x(0); x_axis->set_y(height() - 1); x_axis->set_pixel_size(width()); y_axis->set_x(0); y_axis->set_y(0); y_axis->set_pixel_size(height()); planisphere->set_to_axis_center(); } void contextMenuEvent(QContextMenuEvent* event) override { if (!menu) { auto ws = concat_widgets( bw(cw(planisphere.get(), -1), "星座图"), bw(cw(x_axis.get()), "I轴"), bw(cw(y_axis.get()), "Q轴")); menu = create_menu(this, ws); } menu->exec(event->globalPos()); } }; auto w = new Planisphere_Plot; w->init(); return w; }