src/ui/canvas.h

changeset 109
40a1cf2f38f5
parent 108
94c92c923713
child 110
d922431eacf7
--- a/src/ui/canvas.h	Sun Jul 25 13:49:37 2021 +0300
+++ b/src/ui/canvas.h	Sun Jul 25 16:26:38 2021 +0300
@@ -1,4 +1,5 @@
 #pragma once
+#include <QPainter>
 #include <QBrush>
 #include <QPen>
 #include "gl/partrenderer.h"
@@ -11,38 +12,17 @@
 public:
 	struct MouseClickInfo;
 	struct MouseMoveInfo;
-	enum PreviewLayerName : std::int8_t
-	{
-		DrawToolPreview
-	};
-	struct PreviewLayer
-	{
-		struct Point
-		{
-			glm::vec3 location;
-			QBrush brush = {};
-			QPen pen = {};
-		};
-		struct Polygon
-		{
-			geom::NPolygon geometry;
-			QBrush brush = {};
-			QPen pen = {};
-		};
-		QVector<Point> points;
-		QVector<Polygon> polygons;
-	};
-	static constexpr int NUM_PREVIEW_LAYERS = 1;
-
+	using OverpaintCallback = std::function<void(Canvas*, QPainter*)>;
 	Canvas(
 		Model* model,
 		DocumentManager* documents,
 		const ldraw::ColorTable& colorTable,
 		QWidget* parent = nullptr);
-	const PreviewLayer& getPreviewLayer(PreviewLayerName name) const;
-	PreviewLayer& modifyPreviewLayer(PreviewLayerName name);
 	void clearSelection();
 	void addToSelection(ldraw::id_t id);
+	void setOverpaintCallback(OverpaintCallback fn);
+	void drawWorldPoint(QPainter* painter, const glm::vec3& worldPoint) const;
+	void drawWorldPolygon(QPainter* painter, const std::vector<glm::vec3>& points);
 public slots:
 	void handleSelectionChange(const QSet<ldraw::id_t>& selectedIds, const QSet<ldraw::id_t>& deselectedIds);
 protected:
@@ -67,7 +47,7 @@
 	geom::Plane gridPlane;
 	int totalMouseMove = 0;
 	QSet<ldraw::id_t> selection;
-	PreviewLayer previewLayers[NUM_PREVIEW_LAYERS];
+	OverpaintCallback overpaintCallback = nullptr;
 };
 
 struct Canvas::MouseClickInfo

mercurial