src/layers/edittools.cpp

changeset 374
75efc3ba5a56
parent 372
b2914aaeec1a
child 379
8d88adffb779
--- a/src/layers/edittools.cpp	Mon Apr 10 14:46:36 2023 +0300
+++ b/src/layers/edittools.cpp	Tue Apr 11 11:11:28 2023 +0300
@@ -35,15 +35,15 @@
 {
 }
 
-void EditTools::setEditMode(EditingMode newMode)
+void EditTools::setEditMode(editing_mode_e newMode)
 {
 	this->mode = newMode;
 	switch (this->mode) {
-	case SelectMode:
+	case editing_mode_e::select:
 		Q_EMIT this->suggestCursor(Qt::ArrowCursor);
 		break;
-	case DrawMode:
-	case CircleMode:
+	case editing_mode_e::draw:
+	case editing_mode_e::circle:
 		Q_EMIT this->suggestCursor(Qt::CrossCursor);
 		break;
 	}
@@ -108,18 +108,18 @@
 	std::vector<std::vector<glm::vec3>> result;
 	if (const AppendToModel* append = std::get_if<AppendToModel>(&action)) {
 		const ModelElement& newElement = append->newElement;
-		if (const LineSegment* seg = std::get_if<Colored<LineSegment>>(&newElement)) {
-			result.push_back({seg->p1, seg->p2});
+		if (const Colored<LineSegment>* seg = std::get_if<Colored<LineSegment>>(&newElement)) {
+			result.push_back({seg->element.p1, seg->element.p2});
 		}
-		else if (const Triangle* tri = std::get_if<Colored<Triangle>>(&newElement)) {
-			result.push_back({tri->p1, tri->p2, tri->p3});
+		else if (const Colored<Triangle>* tri = std::get_if<Colored<Triangle>>(&newElement)) {
+			result.push_back({tri->element.p1, tri->element.p2, tri->element.p3});
 		}
-		else if (const Quadrilateral* quad = std::get_if<Colored<Quadrilateral>>(&newElement)) {
-			result.push_back({quad->p1, quad->p2, quad->p3, quad->p4});
+		else if (const Colored<Quadrilateral>* quad = std::get_if<Colored<Quadrilateral>>(&newElement)) {
+			result.push_back({quad->element.p1, quad->element.p2, quad->element.p3, quad->element.p4});
 		}
-		else if (const CircularPrimitive* circ = std::get_if<Colored<CircularPrimitive>>(&newElement)) {
+		else if (const Colored<CircularPrimitive>* circ = std::get_if<Colored<CircularPrimitive>>(&newElement)) {
 			// rasterize the circle down to polygons, and append them to the result.
-			rasterize(*circ, [&](const PlainPolygonElement& poly, const ColorIndex color){
+			rasterize(circ->element, [&](const PlainPolygonElement& poly, const ColorIndex color){
 				AppendToModel append{elementFromPolygonAndColor(poly, color)};
 				const auto& subpoints = polygonsToBeInserted(append);
 				std::copy(subpoints.begin(), subpoints.end(), std::back_inserter(result));
@@ -183,12 +183,12 @@
 const std::vector<ModelAction> EditTools::modelActions() const
 {
 	switch(this->mode) {
-	case SelectMode:
+	case editing_mode_e::select:
 		return {};
-	case DrawMode:
-		return drawModeActions();
-	case CircleMode:
-		return circleModeActions();
+	case editing_mode_e::draw:
+		return this->drawModeActions();
+	case editing_mode_e::circle:
+		return this->circleModeActions();
 	}
 }
 
@@ -217,7 +217,7 @@
 	for (const glm::vec3& point : this->inputPolygon) {
 		drawWorldPoint(painter, point, this->renderer);
 	}
-	if (this->mode == CircleMode and this->inputPolygon.polygonSize() >= 2) {
+	if (this->mode == editing_mode_e::circle and this->inputPolygon.polygonSize() >= 2) {
 		const glm::vec3 circleOrigin = this->inputPolygon[0];
 		const QPointF originScreen = this->renderer->modelToScreenCoordinates(circleOrigin);
 		const auto extremity = [this, &originScreen](const glm::vec3& p){
@@ -282,7 +282,7 @@
 	}
 }
 
-EditingMode EditTools::currentEditingMode() const
+editing_mode_e EditTools::currentEditingMode() const
 {
 	return this->mode;
 }
@@ -290,13 +290,13 @@
 void EditTools::mouseClick(const QMouseEvent* event)
 {
 	switch(this->mode) {
-	case SelectMode:
+	case editing_mode_e::select:
 		if (event->button() == Qt::LeftButton) {
 			const std::int32_t highlighted = this->renderer->pick(event->pos());
 			Q_EMIT this->select({highlighted}, false);
 		}
 		break;
-	case DrawMode:
+	case editing_mode_e::draw:
 		if (event->button() == Qt::LeftButton and this->worldPosition.has_value()) {
 			if (this->inputPolygon.currentPointOnExistingPoint()) {
 				this->closeShape();
@@ -306,7 +306,7 @@
 			}
 		}
 		break;
-	case CircleMode:
+	case editing_mode_e::circle:
 		if (event->button() == Qt::LeftButton) {
 			if (this->inputPolygon.bufferSize() == 3) {
 				this->closeShape();
@@ -370,10 +370,10 @@
 bool EditTools::usePolygon() const
 {
 	switch (this->mode) {
-	case SelectMode:
+	case editing_mode_e::select:
 		return false;
-	case DrawMode:
-	case CircleMode:
+	case editing_mode_e::draw:
+	case editing_mode_e::circle:
 		return true;
 	}
 	return {};

mercurial