src/ui/canvas.h

changeset 200
ca23936b455b
parent 198
eb9d900dc79a
child 201
5d201ee4a9c3
equal deleted inserted replaced
199:6988973515d2 200:ca23936b455b
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*)>;
29 Canvas( 29 Canvas(
30 Model* model, 30 Model* model,
31 Document* document, 31 EditorTabWidget* document,
32 DocumentManager* documents, 32 DocumentManager* documents,
33 const ldraw::ColorTable& colorTable, 33 const ldraw::ColorTable& colorTable,
34 QWidget* parent = nullptr); 34 QWidget* parent = nullptr);
35 void setOverpaintCallback(OverpaintCallback fn); 35 void setOverpaintCallback(OverpaintCallback fn);
36 void drawWorldPoint(QPainter* painter, const glm::vec3& worldPoint) const; 36 void drawWorldPoint(QPainter* painter, const glm::vec3& worldPoint) const;
37 void drawWorldPolyline(QPainter* painter, const std::vector<glm::vec3>& points); 37 void drawWorldPolyline(QPainter* painter, const std::vector<glm::vec3>& points);
38 void drawWorldPolygon(QPainter* painter, const std::vector<glm::vec3>& points); 38 void drawWorldPolygon(QPainter* painter, const std::vector<glm::vec3>& points);
39 Winding worldPolygonWinding(const std::vector<glm::vec3>& points) const; 39 Winding worldPolygonWinding(const std::vector<glm::vec3>& points) const;
40 const std::optional<glm::vec3>& getWorldPosition() const; 40 const std::optional<glm::vec3>& getWorldPosition() const;
41 const QSet<ldraw::id_t> selectedObjects() const; 41 const QSet<ModelId> selectedObjects() const;
42 const glm::mat4& getGridMatrix() const; 42 const glm::mat4& getGridMatrix() const;
43 void closeShape(); 43 void closeShape();
44 glm::vec3 cameraVector() const; 44 glm::vec3 cameraVector() const;
45 std::optional<glm::vec3> worldPosition; 45 std::optional<glm::vec3> worldPosition;
46 DrawState* drawState = nullptr; 46 DrawState* drawState = nullptr;
47 public Q_SLOTS: 47 public Q_SLOTS:
48 void handleSelectionChange(const QSet<ldraw::id_t>& selectedIds, const QSet<ldraw::id_t>& deselectedIds); 48 void handleSelectionChange(const QSet<ModelId>& selectedIds, const QSet<ModelId>& deselectedIds);
49 void rebuildVertices(Document *document); 49 void rebuildVertices(EditorTabWidget *document);
50 void setGridMatrix(const glm::mat4 &newMatrix); 50 void setGridMatrix(const glm::mat4 &newMatrix);
51 protected: 51 protected:
52 void mouseMoveEvent(QMouseEvent* event) override; 52 void mouseMoveEvent(QMouseEvent* event) override;
53 void mousePressEvent(QMouseEvent* event) override; 53 void mousePressEvent(QMouseEvent* event) override;
54 void mouseReleaseEvent(QMouseEvent* event) override; 54 void mouseReleaseEvent(QMouseEvent* event) override;
68 std::optional<VertexProgram> vertexProgram; 68 std::optional<VertexProgram> vertexProgram;
69 glm::mat4 gridMatrix; 69 glm::mat4 gridMatrix;
70 geom::Plane gridPlane; 70 geom::Plane gridPlane;
71 int totalMouseMove = 0; 71 int totalMouseMove = 0;
72 bool isDark = true; 72 bool isDark = true;
73 QSet<ldraw::id_t> selection; 73 QSet<ModelId> selection;
74 OverpaintCallback overpaintCallback = nullptr; 74 OverpaintCallback overpaintCallback = nullptr;
75 Document* document; 75 EditorTabWidget* document;
76 }; 76 };
77 77
78 void adjustGridToView(Canvas* canvas); 78 void adjustGridToView(Canvas* canvas);

mercurial