def __init__(self, svg, element, parent): SVGRenderableElement.__init__(self, svg, element, parent) self.svg = svg self.target = element.get(XLINK_NS + "href", None) self.x = parse_float(element.get('x', '0')) self.y = parse_float(element.get('y', '0')) self.transform = self.transform * Matrix.translation(self.x, self.y) #clip off "#" if self.target: self.target = self.target[1:]
def _render_marker(self, a, b, marker, reverse=False): if marker.orient == 'auto': angle = (a - b).angle() else: angle = marker.orient if reverse: angle += math.pi sx = (marker.marker_width / marker.vb_w) * self.style.stroke_width sy = (marker.marker_height / marker.vb_h) * self.style.stroke_width rx = marker.ref_x ry = marker.ref_y with Matrix.transform(a.x, a.y, theta=angle): with Matrix.scale(sx, sy): with Matrix.translation(-rx, -ry): marker.render()