22 void setOverpaintCallback(OverpaintCallback fn); |
22 void setOverpaintCallback(OverpaintCallback fn); |
23 void drawWorldPoint(QPainter* painter, const glm::vec3& worldPoint) const; |
23 void drawWorldPoint(QPainter* painter, const glm::vec3& worldPoint) const; |
24 void drawWorldPolyline(QPainter* painter, const std::vector<glm::vec3>& points); |
24 void drawWorldPolyline(QPainter* painter, const std::vector<glm::vec3>& points); |
25 void drawWorldPolygon(QPainter* painter, const std::vector<glm::vec3>& points); |
25 void drawWorldPolygon(QPainter* painter, const std::vector<glm::vec3>& points); |
26 Winding worldPolygonWinding(const std::vector<glm::vec3>& points) const; |
26 Winding worldPolygonWinding(const std::vector<glm::vec3>& points) const; |
27 const std::optional<glm::vec3>& getWorldPosition() const; |
27 const std::optional<glm::vec3>& getWorldPosition() const; |
28 void adjustGridToView(); |
28 void adjustGridToView(); |
29 const QSet<ldraw::id_t> selectedObjects() const; |
29 const QSet<ldraw::id_t> selectedObjects() const; |
30 const glm::mat4& getGridMatrix() const; |
30 const glm::mat4& getGridMatrix() const; |
31 public Q_SLOTS: |
31 public Q_SLOTS: |
32 void handleSelectionChange(const QSet<ldraw::id_t>& selectedIds, const QSet<ldraw::id_t>& deselectedIds); |
32 void handleSelectionChange(const QSet<ldraw::id_t>& selectedIds, const QSet<ldraw::id_t>& deselectedIds); |
33 void rebuildVertices(Document *document); |
33 void rebuildVertices(Document *document); |
|
34 void setGridMatrix(const glm::mat4 &newMatrix); |
34 protected: |
35 protected: |
35 void mouseMoveEvent(QMouseEvent* event) override; |
36 void mouseMoveEvent(QMouseEvent* event) override; |
36 void mousePressEvent(QMouseEvent* event) override; |
37 void mousePressEvent(QMouseEvent* event) override; |
37 void mouseReleaseEvent(QMouseEvent* event) override; |
38 void mouseReleaseEvent(QMouseEvent* event) override; |
38 void initializeGL() override; |
39 void initializeGL() override; |
41 void newStatusText(const QString& newStatusText); |
42 void newStatusText(const QString& newStatusText); |
42 void selectionChanged(const QSet<ldraw::id_t>& newSelection); |
43 void selectionChanged(const QSet<ldraw::id_t>& newSelection); |
43 void mouseClick(Canvas* canvas, QMouseEvent* event); |
44 void mouseClick(Canvas* canvas, QMouseEvent* event); |
44 void mouseMove(Canvas* canvas, QMouseEvent* event); |
45 void mouseMove(Canvas* canvas, QMouseEvent* event); |
45 private: |
46 private: |
46 void setGridMatrix(const glm::mat4 &newMatrix); |
|
47 glm::vec3 cameraVector() const; |
47 glm::vec3 cameraVector() const; |
48 bool isGridPerpendicularToScreen(float threshold) const; |
48 bool isGridPerpendicularToScreen(float threshold) const; |
49 QVector<QPointF> convertWorldPointsToScreenPoints(const std::vector<glm::vec3>& worldPoints) const; |
49 QVector<QPointF> convertWorldPointsToScreenPoints(const std::vector<glm::vec3>& worldPoints) const; |
50 Q_SLOT void updateCanvasRenderPreferences(); |
50 Q_SLOT void updateCanvasRenderPreferences(); |
51 void renderAxesLabels(QPainter& painter); |
51 void renderAxesLabels(QPainter& painter); |