#ifndef BACKPLOTWIDGET_H #define BACKPLOTWIDGET_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "orbitcameracontroller.h" class BackPlotWidget : public QWidget { Q_OBJECT Qt3DExtras::Qt3DWindow view; OrbitCameraController *camController; Qt3DCore::QEntity* rootEntity = nullptr; Qt3DExtras::QPhongMaterial* axisMaterial; Qt3DExtras::QPhongMaterial* rapidMaterial; Qt3DExtras::QPhongMaterial* pathMaterial; QWidget *containerWdiget; Qt3DCore::QEntity* toolEntity; Qt3DCore::QTransform *toolTransform; std::vector pathEntitys; Qt3DCore::QTransform *touchoffTransform; QVector3D limits; QVector3D touchoffPosition; QHBoxLayout hLayout; static constexpr int NO_FIELD = std::numeric_limits::min(); public: typedef int ViewPos; static constexpr ViewPos VIEW_TOP = 0; static constexpr ViewPos VIEW_FRONT = 1; static constexpr ViewPos VIEW_LEFT = 2; static constexpr ViewPos VIEW_RIGHT = 3; private: static void drawBox(const QVector3D& bottomCloseLeft, const QVector3D& topFarRight, Qt3DRender::QMaterial* material, Qt3DCore::QEntity* parent); static void drawLine(const QVector3D& start, const QVector3D& end, Qt3DRender::QMaterial* material, Qt3DCore::QEntity* parent); static QList getFields(QByteArray command); QByteArray removeComments(const QByteArray& program); void reset(); protected: virtual void resizeEvent(QResizeEvent *event) override; public slots: void positionUpdate(std::vector position); void touchoffUpdate(std::vector position); void programChanged(const QByteArray program); void showView(ViewPos view); public: explicit BackPlotWidget(QWidget *parent = nullptr, double xLimits = 190, double yLimits = 92, double zLimits = 85); signals: }; #endif // BACKPLOTWIDGET_H