From 0163023aef4b2f99933ca201da45eba6aef93050 Mon Sep 17 00:00:00 2001 From: Florian Festi Date: Sun, 21 Feb 2016 18:32:12 +0100 Subject: [PATCH] Add CompoundEdge --- boxes.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/boxes.py b/boxes.py index a08e8dc..e5aa832 100755 --- a/boxes.py +++ b/boxes.py @@ -152,6 +152,26 @@ class OutSetEdge(Edge): def width(self): return self.boxes.thickness +class CompoundEdge(Edge): + def __init__(self, boxes, types, lengths): + Edge.__init__(self, boxes, None) + self.types = [self.edges.get(edge, edge) for edge in types] + self.lengths = lengths + self.length = sum(lengths) + + def width(self): + return self.types[0].width() + + def margin(self): + return max((e.margin() for e in self.types)) + + def __call__(self, length, **kw): + if length and abs(length - self.length) > 1E-5: + raise ValueError("Wrong length for CompoundEdge") + for e, l in zip(self.types, self.lengths): + # XXX different margins??? + e(l) + class Slot(Edge): def __init__(self, boxes, depth): Edge.__init__(self, boxes, None)