def __init__(self, node, metrics=None): super(Actor, self).__init__(node, metrics) m = metrics.cell(node) if node.label: font = metrics.font_for(self.node) textsize = metrics.textsize(node.label, font) shortside = min(m.width, m.height - textsize.height) else: textsize = Size(0, 0) shortside = min(m.width, m.height) r = self.radius = shortside // 8 # radius of actor's head self.center = metrics.cell(node).center self.connectors[0] = XY(self.center.x, self.center.y - r * 9 // 2) self.connectors[1] = XY(self.center.x + r * 4, self.center.y) self.connectors[2] = XY(self.center.x, self.center.y + r * 4 + textsize.height) self.connectors[3] = XY(self.center.x - r * 4, self.center.y) self.textbox = Box(m.left.x, self.center.y + r * 4, m.right.x, self.connectors[2].y)
def test_size_resize(self): size = Size(10, 20) resized = size.resize(width=50, height=50) self.assertEqual((50, 50), resized) resized = size.resize(width=50) self.assertEqual((50, 100), resized) resized = size.resize(height=50) self.assertEqual((25, 50), resized) resized = size.resize(scale=50) self.assertEqual((5, 10), resized) resized = size.resize(width=50, scale=50) self.assertEqual((25, 50), resized) resized = size.resize(height=50, scale=50) self.assertEqual((12.5, 25), resized) resized = size.resize(width=50, height=50, scale=50) self.assertEqual((25, 25), resized)
def test_size_to_integer_point(self): size = Size(1.5, 2.5) self.assertEqual((1, 2), size.to_integer_point())