diff -r e34d6a30b96d -r 75efc3ba5a56 src/layers/edittools.cpp --- 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> result; if (const AppendToModel* append = std::get_if(&action)) { const ModelElement& newElement = append->newElement; - if (const LineSegment* seg = std::get_if>(&newElement)) { - result.push_back({seg->p1, seg->p2}); + if (const Colored* seg = std::get_if>(&newElement)) { + result.push_back({seg->element.p1, seg->element.p2}); } - else if (const Triangle* tri = std::get_if>(&newElement)) { - result.push_back({tri->p1, tri->p2, tri->p3}); + else if (const Colored* tri = std::get_if>(&newElement)) { + result.push_back({tri->element.p1, tri->element.p2, tri->element.p3}); } - else if (const Quadrilateral* quad = std::get_if>(&newElement)) { - result.push_back({quad->p1, quad->p2, quad->p3, quad->p4}); + else if (const Colored* quad = std::get_if>(&newElement)) { + result.push_back({quad->element.p1, quad->element.p2, quad->element.p3, quad->element.p4}); } - else if (const CircularPrimitive* circ = std::get_if>(&newElement)) { + else if (const Colored* circ = std::get_if>(&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 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 {};