src/ui/canvas.h

changeset 197
0e729e681a2c
parent 191
d355d4c52d51
child 198
eb9d900dc79a
equal deleted inserted replaced
196:6bcb284679d4 197:0e729e681a2c
17 { 17 {
18 std::vector<glm::vec3> polygon; 18 std::vector<glm::vec3> polygon;
19 std::vector<glm::vec3> previewPolygon; 19 std::vector<glm::vec3> previewPolygon;
20 glm::vec3 previewPoint; 20 glm::vec3 previewPoint;
21 bool isconcave = false; 21 bool isconcave = false;
22 EditingMode mode = SelectMode;
22 }; 23 };
23
24 class Canvas : public PartRenderer 24 class Canvas : public PartRenderer
25 { 25 {
26 Q_OBJECT 26 Q_OBJECT
27 public: 27 public:
28 using OverpaintCallback = std::function<void(Canvas*, QPainter*)>; 28 using OverpaintCallback = std::function<void(Canvas*, QPainter*)>;
42 const std::optional<glm::vec3>& getWorldPosition() const; 42 const std::optional<glm::vec3>& getWorldPosition() const;
43 const QSet<ldraw::id_t> selectedObjects() const; 43 const QSet<ldraw::id_t> selectedObjects() const;
44 const glm::mat4& getGridMatrix() const; 44 const glm::mat4& getGridMatrix() const;
45 void closeShape(); 45 void closeShape();
46 glm::vec3 cameraVector() const; 46 glm::vec3 cameraVector() const;
47 DrawState drawState; 47 std::optional<glm::vec3> worldPosition;
48 EditingMode mode = SelectMode; 48 DrawState* drawState = nullptr;
49 public Q_SLOTS: 49 public Q_SLOTS:
50 void handleSelectionChange(const QSet<ldraw::id_t>& selectedIds, const QSet<ldraw::id_t>& deselectedIds); 50 void handleSelectionChange(const QSet<ldraw::id_t>& selectedIds, const QSet<ldraw::id_t>& deselectedIds);
51 void rebuildVertices(Document *document); 51 void rebuildVertices(Document *document);
52 void setGridMatrix(const glm::mat4 &newMatrix); 52 void setGridMatrix(const glm::mat4 &newMatrix);
53 protected: 53 protected:
57 void initializeGL() override; 57 void initializeGL() override;
58 void paintGL() override; 58 void paintGL() override;
59 Q_SIGNALS: 59 Q_SIGNALS:
60 void newStatusText(const QString& newStatusText); 60 void newStatusText(const QString& newStatusText);
61 void selectionChanged(const QSet<ldraw::id_t>& newSelection); 61 void selectionChanged(const QSet<ldraw::id_t>& newSelection);
62 void mouseClick(Canvas* canvas, QMouseEvent* event); 62 void mouseClick(QMouseEvent* event);
63 void mouseMove(Canvas* canvas, QMouseEvent* event); 63 void mouseMove(QMouseEvent* event);
64 private: 64 private:
65 bool isGridPerpendicularToScreen(float threshold) const; 65 bool isGridPerpendicularToScreen(float threshold) const;
66 QVector<QPointF> convertWorldPointsToScreenPoints(const std::vector<glm::vec3>& worldPoints) const; 66 QVector<QPointF> convertWorldPointsToScreenPoints(const std::vector<glm::vec3>& worldPoints) const;
67 Q_SLOT void updateCanvasRenderPreferences(); 67 Q_SLOT void updateCanvasRenderPreferences();
68 void renderAxesLabels(QPainter& painter); 68 void renderAxesLabels(QPainter& painter);
69 std::optional<GridProgram> gridProgram; 69 std::optional<GridProgram> gridProgram;
70 std::optional<AxesProgram> axesProgram; 70 std::optional<AxesProgram> axesProgram;
71 std::optional<VertexProgram> vertexProgram; 71 std::optional<VertexProgram> vertexProgram;
72 std::optional<glm::vec3> worldPosition;
73 glm::mat4 gridMatrix; 72 glm::mat4 gridMatrix;
74 geom::Plane gridPlane; 73 geom::Plane gridPlane;
75 int totalMouseMove = 0; 74 int totalMouseMove = 0;
76 bool isDark = true; 75 bool isDark = true;
77 QSet<ldraw::id_t> selection; 76 QSet<ldraw::id_t> selection;

mercurial