111 ldraw::quadrilateralid_t quadrilateral_id, |
111 ldraw::quadrilateralid_t quadrilateral_id, |
112 ldraw::Diagonal splitType |
112 ldraw::Diagonal splitType |
113 ) -> std::optional<std::pair<ldraw::triangleid_t, ldraw::triangleid_t>> |
113 ) -> std::optional<std::pair<ldraw::triangleid_t, ldraw::triangleid_t>> |
114 { |
114 { |
115 std::optional<std::pair<ldraw::triangleid_t, ldraw::triangleid_t>> result; |
115 std::optional<std::pair<ldraw::triangleid_t, ldraw::triangleid_t>> result; |
116 QModelIndex index; |
116 const auto resolved = editor.model().get2(quadrilateral_id); |
117 const ldraw::Quadrilateral* quadrilateral = editor.model().get(quadrilateral_id, &index); |
117 if (resolved.object != nullptr) |
118 if (quadrilateral != nullptr) |
|
119 { |
118 { |
120 const ldraw::Color color = quadrilateral->colorIndex; |
119 const ldraw::Color color = resolved.object->colorIndex; |
121 const std::array<geom::Triangle, 2> split = splitTriangles(splitType, quadrilateral->points); |
120 const std::array<geom::Triangle, 2> split = splitTriangles(splitType, resolved.object->points); |
122 const int position = index.row(); |
121 const int position = resolved.index.row(); |
123 editor.remove(position); |
122 editor.remove(position); |
124 result = std::make_pair( |
123 result = std::make_pair( |
125 editor.insert<ldraw::Triangle>(position, split[0].points, color), |
124 editor.insert<ldraw::Triangle>(position, split[0].points, color), |
126 editor.insert<ldraw::Triangle>(position, split[1].points, color)); |
125 editor.insert<ldraw::Triangle>(position, split[1].points, color)); |
127 } |
126 } |