src/modeleditcontext.cpp

changeset 116
aad3e897bc32
parent 112
5760cbb32bc0
child 133
e39326ee48dc
equal deleted inserted replaced
115:ed884a2fb009 116:aad3e897bc32
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 }

mercurial