Remove created dot if drawing new seg or bend fails

This commit is contained in:
Mikolaj Wielgus 2023-09-04 04:51:27 +02:00
parent 84a5b81032
commit 53c24b1a14
1 changed files with 18 additions and 4 deletions

View File

@ -154,9 +154,16 @@ impl<'a> Draw<'a> {
.add_dot(self.layout.primitive(head.dot).weight())?; .add_dot(self.layout.primitive(head.dot).weight())?;
let net = self.layout.primitive(head.dot).weight().net; let net = self.layout.primitive(head.dot).weight().net;
let bend = self let bend = match self
.layout .layout
.add_bend(head.dot, bend_to, around, BendWeight { net, cw })?; .add_bend(head.dot, bend_to, around, BendWeight { net, cw })
{
Err(err) => {
self.layout.remove(bend_to);
return Err(err);
}
Ok(bend) => bend,
};
Ok(Head { Ok(Head {
dot: bend_to, dot: bend_to,
segbend: Some(Segbend { bend, dot, seg }), segbend: Some(Segbend { bend, dot, seg }),
@ -192,9 +199,16 @@ impl<'a> Draw<'a> {
r: width / 2.0, r: width / 2.0,
}, },
})?; })?;
let seg = self let seg = match self
.layout .layout
.add_seg(head.dot, to_index, SegWeight { net, width })?; .add_seg(head.dot, to_index, SegWeight { net, width })
{
Err(err) => {
self.layout.remove(to_index);
return Err(err);
}
Ok(bend) => bend,
};
Ok(( Ok((
Head { Head {
dot: to_index, dot: to_index,