diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 46f32c4257..df8f76bf05 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -4,7 +4,8 @@ === Shapes -- Add support for edges connected to edges +- Add support for edges connected to edges +- Preserve custom edges rectilinearity === Architectural decision records diff --git a/doc/iterations/2025.4/force_custom_edges_to_stay_rectilinear.adoc b/doc/iterations/2025.4/force_custom_edges_to_stay_rectilinear.adoc new file mode 100644 index 0000000000..4e7efc68cd --- /dev/null +++ b/doc/iterations/2025.4/force_custom_edges_to_stay_rectilinear.adoc @@ -0,0 +1,45 @@ += Force Custom Edges to Stay Rectilinear + +== Problem + +It is possible to add new bendpoints on an edge, but currently moving (or adding) a bendpoint causes the path to lose its rectilinearity. + +== Key Result + +Regardless of the actions performed on an edge, the resulting path must remain rectilinear. + +== Solution + +On edge, bendpoint (black-filled circle) are positioned to each segment corner and intermediate point (grey circle) on middle to each segment. + +image:images/custom-edges-point-types.png[Custom edges point types, 70%] + +Modify the algorithm for moving a bendpoint so that two new bendpoints are created (for one axis) at the positions of the adjacent intermediate point of the moved bendpoint. + +image:images/custom-edges-new-bendpoints-one-axis.png[New benbpoints on one axis, 70%] + +The same approach could be applied on the two axis in the same drag. + +image:images/custom-edges-new-bendpoints-two-axis.png[New bendpoints on two axis, 70%] + +Change the behavior of intermediate points so that they do not create new bendpoints but instead move existing adjacent bendpoints along an axis (x or y). +This axis is perpendicular to the segment in question. + +image:images/custom-edges-intermediate-point-translation.png[Intermediate point translation, 60%] + +To delete a bendpoint, align two segments to form a single segment (a margin will be implemented to facilitate this action). + +image:images/custom-edges-before-bendpoint-suppression.png[Before bendpoint suppression, 50%] + +image:images/custom-edges-after-bendpoint-suppression.png[After bendpoint suppression, 50%] + +== Cutting Backs + +It would be interesting to define the routing of an edge (rectilinear, oblique, etc...). + +== Rabbit Holes + +* Node handles are currently fixed, so it's not possible to modify the first and last edge segments directly. +* When the node is moved, the first bendpoint must be updated to preserve rectilinearity of the edge path. + +== No-Gos diff --git a/doc/iterations/2025.4/images/custom-edges-after-bendpoint-suppression.png b/doc/iterations/2025.4/images/custom-edges-after-bendpoint-suppression.png new file mode 100644 index 0000000000..7133ae3096 Binary files /dev/null and b/doc/iterations/2025.4/images/custom-edges-after-bendpoint-suppression.png differ diff --git a/doc/iterations/2025.4/images/custom-edges-before-bendpoint-suppression.png b/doc/iterations/2025.4/images/custom-edges-before-bendpoint-suppression.png new file mode 100644 index 0000000000..dc766044df Binary files /dev/null and b/doc/iterations/2025.4/images/custom-edges-before-bendpoint-suppression.png differ diff --git a/doc/iterations/2025.4/images/custom-edges-intermediate-point-translation.png b/doc/iterations/2025.4/images/custom-edges-intermediate-point-translation.png new file mode 100644 index 0000000000..a005061d30 Binary files /dev/null and b/doc/iterations/2025.4/images/custom-edges-intermediate-point-translation.png differ diff --git a/doc/iterations/2025.4/images/custom-edges-new-bendpoints-one-axis.png b/doc/iterations/2025.4/images/custom-edges-new-bendpoints-one-axis.png new file mode 100644 index 0000000000..caa6d8c2cf Binary files /dev/null and b/doc/iterations/2025.4/images/custom-edges-new-bendpoints-one-axis.png differ diff --git a/doc/iterations/2025.4/images/custom-edges-new-bendpoints-two-axis.png b/doc/iterations/2025.4/images/custom-edges-new-bendpoints-two-axis.png new file mode 100644 index 0000000000..f52f347bad Binary files /dev/null and b/doc/iterations/2025.4/images/custom-edges-new-bendpoints-two-axis.png differ diff --git a/doc/iterations/2025.4/images/custom-edges-point-types.png b/doc/iterations/2025.4/images/custom-edges-point-types.png new file mode 100644 index 0000000000..1caede816f Binary files /dev/null and b/doc/iterations/2025.4/images/custom-edges-point-types.png differ