mirror of https://codeberg.org/topola/topola.git
layout: use `.update_edge()` instead of `.add_edge()`
We never want to end up with a parallel edge. Lack of edge creation is likely to trigger an assertion, so a bug is more likely to be immediately caught this way.
This commit is contained in:
parent
16e6162b74
commit
644d648f71
|
|
@ -400,7 +400,7 @@ impl Layout {
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(new_inner) = maybe_new_inner {
|
if let Some(new_inner) = maybe_new_inner {
|
||||||
self.geometry.add_edge(
|
self.geometry.update_edge(
|
||||||
new_inner.node_index(),
|
new_inner.node_index(),
|
||||||
bend.node_index(),
|
bend.node_index(),
|
||||||
GeometryLabel::Outer,
|
GeometryLabel::Outer,
|
||||||
|
|
@ -566,9 +566,9 @@ impl Layout {
|
||||||
let seg = GenericIndex::<W>::new(self.geometry.add_node(weight.into()));
|
let seg = GenericIndex::<W>::new(self.geometry.add_node(weight.into()));
|
||||||
|
|
||||||
self.geometry
|
self.geometry
|
||||||
.add_edge(from.node_index(), seg.node_index(), GeometryLabel::Adjacent);
|
.update_edge(from.node_index(), seg.node_index(), GeometryLabel::Adjacent);
|
||||||
self.geometry
|
self.geometry
|
||||||
.add_edge(seg.node_index(), to.node_index(), GeometryLabel::Adjacent);
|
.update_edge(seg.node_index(), to.node_index(), GeometryLabel::Adjacent);
|
||||||
|
|
||||||
self.insert_into_rtree(seg.into());
|
self.insert_into_rtree(seg.into());
|
||||||
self.fail_and_remove_if_infringes_except(seg.into(), infringables)?;
|
self.fail_and_remove_if_infringes_except(seg.into(), infringables)?;
|
||||||
|
|
@ -648,15 +648,15 @@ impl Layout {
|
||||||
{
|
{
|
||||||
let bend = LooseBendIndex::new(self.geometry.add_node(weight.into()));
|
let bend = LooseBendIndex::new(self.geometry.add_node(weight.into()));
|
||||||
|
|
||||||
self.geometry.add_edge(
|
self.geometry.update_edge(
|
||||||
from.node_index(),
|
from.node_index(),
|
||||||
bend.node_index(),
|
bend.node_index(),
|
||||||
GeometryLabel::Adjacent,
|
GeometryLabel::Adjacent,
|
||||||
);
|
);
|
||||||
self.geometry
|
self.geometry
|
||||||
.add_edge(bend.node_index(), to.node_index(), GeometryLabel::Adjacent);
|
.update_edge(bend.node_index(), to.node_index(), GeometryLabel::Adjacent);
|
||||||
self.geometry
|
self.geometry
|
||||||
.add_edge(bend.node_index(), core.node_index(), GeometryLabel::Core);
|
.update_edge(bend.node_index(), core.node_index(), GeometryLabel::Core);
|
||||||
|
|
||||||
self.insert_into_rtree(bend.into());
|
self.insert_into_rtree(bend.into());
|
||||||
self.fail_and_remove_if_infringes_except(bend.into(), infringables)?;
|
self.fail_and_remove_if_infringes_except(bend.into(), infringables)?;
|
||||||
|
|
@ -693,17 +693,17 @@ impl Layout {
|
||||||
|
|
||||||
let bend = LooseBendIndex::new(self.geometry.add_node(weight.into()));
|
let bend = LooseBendIndex::new(self.geometry.add_node(weight.into()));
|
||||||
|
|
||||||
self.geometry.add_edge(
|
self.geometry.update_edge(
|
||||||
from.node_index(),
|
from.node_index(),
|
||||||
bend.node_index(),
|
bend.node_index(),
|
||||||
GeometryLabel::Adjacent,
|
GeometryLabel::Adjacent,
|
||||||
);
|
);
|
||||||
self.geometry
|
self.geometry
|
||||||
.add_edge(bend.node_index(), to.node_index(), GeometryLabel::Adjacent);
|
.update_edge(bend.node_index(), to.node_index(), GeometryLabel::Adjacent);
|
||||||
self.geometry
|
self.geometry
|
||||||
.add_edge(bend.node_index(), core.node_index(), GeometryLabel::Core);
|
.update_edge(bend.node_index(), core.node_index(), GeometryLabel::Core);
|
||||||
self.geometry
|
self.geometry
|
||||||
.add_edge(inner.node_index(), bend.node_index(), GeometryLabel::Outer);
|
.update_edge(inner.node_index(), bend.node_index(), GeometryLabel::Outer);
|
||||||
|
|
||||||
self.insert_into_rtree(bend.into());
|
self.insert_into_rtree(bend.into());
|
||||||
self.fail_and_remove_if_infringes_except(bend.into(), infringables)?;
|
self.fail_and_remove_if_infringes_except(bend.into(), infringables)?;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue