#pragma once // qt #include // optical design #include "opticaldesign.h" class GraphicsScene : public QGraphicsScene { Q_OBJECT public: explicit GraphicsScene(QObject* parent = nullptr); ~GraphicsScene() override = default; public slots: // TODO: store design in scene? void update(OpticalDesign* design); private: QGraphicsLineItem* m_lineOfActionItem{nullptr}; QGraphicsEllipseItem* m_lenseItem{nullptr}; QGraphicsRectItem* m_lenseBodyItem{nullptr}; QGraphicsLineItem* m_opticalAxisItem{nullptr}; QGraphicsLineItem* m_lenseVerticalPlaneItem{nullptr}; QGraphicsRectItem* m_laserBodyItem{nullptr}; QGraphicsLineItem* m_laserPlaneItem{nullptr}; QGraphicsLineItem* m_desiredLaserPlaneItem{nullptr}; QGraphicsLineItem* m_reverseLaserPlaneItem{nullptr}; QGraphicsLineItem* m_desiredImagePlaneItem{nullptr}; QGraphicsLineItem* m_yzSensorItem{nullptr}; QGraphicsRectItem* m_xzSensorItem{nullptr}; QGraphicsLineItem* m_actualRangeItem{nullptr}; QGraphicsPolygonItem* m_desiredRangeAreaItem{nullptr}; QGraphicsPolygonItem* m_actualRangeAreaItem{nullptr}; QGraphicsPolygonItem* m_xzActualRangeAreaItem{nullptr}; QGraphicsRectItem* m_scannerBodyFrontWallItem{nullptr}; /*! * \brief m_xzHardwareLaserPlaneItem - actual laser-illuminated area, * limited by its angle */ QGraphicsPolygonItem* m_xzHardwareLaserPlaneItem{nullptr}; // debug QGraphicsEllipseItem* m_sensorLenseIntersectionItem{nullptr}; QGraphicsEllipseItem* m_lenseLaserIntersectionItem{nullptr}; QGraphicsPolygonItem* m_xzDebugItem{nullptr}; };