def create_diagram(data, conf): diagram = Group(data, conf) s = svg(width = str(diagram.get_content_width()), height = str(diagram.get_content_height())) m = metadata() #creating metadata elements dctitle = dctitleEl() dctype = dctypeEl() dcformat = dcformatEl() cc = ccEl() cc.addElement(dcformat) cc.addElement(dctype) cc.addElement(dctitle) rdf = rdfEl() rdf.addElement(cc) m.addElement(rdf) s.addElement(m) sn = sodipodiNamedViewEl() s.addElement(sn) d = defs() d.addElement(Arrow("small-right-arrow", 3)) d.addElement(Arrow("normal-right-arrow", 5)) d.addElement(Arrow("large-right-arrow", 7)) s.addElement(d) diagram.render_content(s, 0, 0) xml = s.getXML() return s.wrap_xml(xml)
def cap_def(name, children): d = defs() m = BaseElement('marker') m.setAttribute('id', name) m.setAttribute('orient', 'auto') #m.setAttribute('markerUnits', 'strokeWidth') d.addElement(m) for c in children: m.addElement(c) return d
def write(self, path): """ Writes the page to the SVG file with the provided path. """ # Create a new SVG document doc = svg( x=0, y=0, width=mm_to_px(self.width), height=mm_to_px(self.height) ) # Draw all the content: first the background, then the content, # and finally the labels background_group = g() background_group.setAttribute('id', 'background') content_group = g() content_group.setAttribute('id', 'content') label_group = g() label_group.setAttribute('id', 'labels') contour_group = g() contour_group.setAttribute('id', 'contours') my_defs = defs() for c in self.containers: if c.has_background: c.draw_background(background_group) if c.needs_clipping and (c.has_content or c.has_labels): path_id = random_string(16) clprect = rect( x=mm_to_px(c.x), y=mm_to_px(c.y), width=mm_to_px(c.width), height=mm_to_px(c.height) ) clppath = clipPath(id=path_id) clppath.addElement(clprect) my_defs.addElement(clppath) # Draw content with clipping path if c.has_content: container_grp = g() container_grp.set_clip_path('url(#%s)' % path_id) c.draw_content(container_grp) content_group.addElement(container_grp) # The labels on top of the content if c.has_labels: container_grp = g() container_grp.set_clip_path('url(#%s)' % path_id) c.draw_labels(container_grp) label_group.addElement(container_grp) else: if c.has_content: c.draw_content(content_group) if c.has_labels: c.draw_labels(label_group) if c.has_contour: c.draw_contour(contour_group) # Add each of the base groups doc.addElement(my_defs) doc.addElement(background_group) doc.addElement(content_group) doc.addElement(label_group) doc.addElement(contour_group) # Write the SVG document to the file doc.save(path)
def defs(self): d = defs() for party in self.parties: d.addElement(self.chair(party)) return d
def _create_defs(self, definition): d = defs() d.addElement(definition) return d
def __prepareDefsContainer(self): self.__defs = defs(); self.__defs.addElement(Marker(self.__ARROW_MARKER_ID)) self.__SVGObject.addElement(self.__defs);
def defs(self): d = defs() for party in self.parties: d.addElement(self.chair(party['initials'], party['color_1'], party['color_2'])) return d