src/document.h

changeset 217
6d95c1a41e6e
parent 215
34c6e7bc4ee1
child 222
72b456f2f3c2
--- a/src/document.h	Mon Jun 13 02:18:25 2022 +0300
+++ b/src/document.h	Tue Jun 14 17:55:50 2022 +0300
@@ -22,6 +22,7 @@
 #include <QToolBar>
 #include "model.h"
 #include "vertexmap.h"
+#include "gl/common.h"
 
 enum EditingMode
 {
@@ -31,15 +32,6 @@
 
 Q_DECLARE_METATYPE(EditingMode);
 
-struct DrawState
-{
-	std::vector<glm::vec3> polygon;
-	std::vector<glm::vec3> previewPolygon;
-	glm::vec3 previewPoint;
-	bool isconcave = false;
-	EditingMode mode = SelectMode;
-};
-
 struct AppendToModel
 {
 	ModelElement newElement;
@@ -54,30 +46,37 @@
 
 Q_DECLARE_METATYPE(ModelAction)
 
-class EditTools : public QObject
+class EditTools final : public QObject, public RenderLayer
 {
 	Q_OBJECT
+	std::vector<glm::vec3> polygon;
+	std::vector<glm::vec3> previewPolygon;
+	glm::vec3 previewPoint;
+	bool isconcave = false;
+	EditingMode mode = SelectMode;
+	glm::mat4 mvpMatrix;
+	glm::mat4 gridMatrix{1};
+	Plane gridPlane;
+	opt<glm::vec3> worldPosition;
 public:
-	explicit EditTools(
-		Model* model,
-		const ColorTable& colorTable,
-		QObject *parent = nullptr);
+	explicit EditTools(QObject *parent = nullptr);
 	~EditTools() override;
 	void applyToVertices(VertexMap::ApplyFunction fn) const;
 	const QSet<ModelId> selectedObjects() const;
-	const ColorTable& colorTable;
-	Model* const model;
 	EditingMode currentEditingMode() const;
 	Q_SLOT void setEditMode(EditingMode mode);
-	Q_SLOT void canvasMouseClick(QMouseEvent* event);
-	Q_SLOT void canvasMouseMove(QMouseEvent* event);
+	Q_SLOT void setGridMatrix(const glm::mat4& gridMatrix);
 Q_SIGNALS:
 	void newStatusText(const QString& newStatusText);
-	void splitterChanged();
 	void modelAction(const ModelAction& action);
-	void drawStateChanged(const DrawState& drawState);
+	void select(const QSet<ModelId>& ids, bool retain);
+protected:
+	void mvpMatrixChanged(const glm::mat4& matrix) override;
+	void mouseMoved(const QMouseEvent* event) override;
+	void mouseClick(const QMouseEvent* event) override;
+	void overpaint(QPainter* painter) override;
 private:
 	void closeShape();
-	DrawState drawState;
-	VertexMap vertexMap;
+	void updatePreviewPolygon();
+	void removeLastPoint();
 };

mercurial