def add_header_colors(self, doc): # Define colors for i, node in enumerate(self.nodes): doc.append( "\\definecolor{dotColor%s}{HTML}{%s}" % (int2name(i), hex2html(self.dotColor(node.data.data, i)))) doc.append("") for i, node in enumerate(self.nodes): doc.append( "\\definecolor{labelBgColor%s}{HTML}{%s}" % (int2name(i), hex2html(self.labelBgColor(node.data.data, i)))) doc.append("") for i, node in enumerate(self.nodes): doc.append("\\definecolor{labelTextColor%s}{HTML}{%s}" % ( int2name(i), hex2html(self.labelTextColor(node.data.data, i)), )) doc.append("") for i, node in enumerate(self.nodes): doc.append( "\\definecolor{linkColor%s}{HTML}{%s}" % (int2name(i), hex2html(self.linkColor(node.data.data, i)))) doc.append("") for i, node in enumerate(self.nodes): if not self.options["showBorder"]: return doc.append( "\\definecolor{borderColor%s}{HTML}{%s}" % (int2name(i), hex2html(self.borderColor(node.data.data, i)))) doc.append("")
def add_header_colors(self, doc): # Define colors tex_hex = lambda code: code[1:] if code[0:1] == "#" else code[0:] for i, node in enumerate(self.nodes): doc.append( "\\definecolor{dotColor%s}{HTML}{%s}" % (int2name(i), tex_hex(self.dotColor(node.data.data, i)))) doc.append("") for i, node in enumerate(self.nodes): doc.append( "\\definecolor{labelBgColor%s}{HTML}{%s}" % (int2name(i), tex_hex(self.labelBgColor(node.data.data, i)))) doc.append("") for i, node in enumerate(self.nodes): doc.append("\\definecolor{labelTextColor%s}{HTML}{%s}" % ( int2name(i), tex_hex(self.labelTextColor(node.data.data, i)), )) doc.append("") for i, node in enumerate(self.nodes): doc.append( "\\definecolor{linkColor%s}{HTML}{%s}" % (int2name(i), tex_hex(self.linkColor(node.data.data, i)))) doc.append("") for i, node in enumerate(self.nodes): if not self.options["showBorder"]: return doc.append( "\\definecolor{borderColor%s}{HTML}{%s}" % (int2name(i), tex_hex(self.borderColor(node.data.data, i)))) doc.append("")
def add_header_colors(self, doc): # Define colors for i, node in enumerate(self.nodes): rgb = hex2rgbf(self.dotColor(node.data.data, i)) doc.append("\\definecolor{dotColor%s}{rgb}{%f,%f,%f}" % (int2name(i), rgb[0], rgb[1], rgb[2])) doc.append("") for i, node in enumerate(self.nodes): rgb = hex2rgbf(self.labelBgColor(node.data.data, i)) doc.append("\\definecolor{labelBgColor%s}{rgb}{%f,%f,%f}" % (int2name(i), rgb[0], rgb[1], rgb[2])) doc.append("") for i, node in enumerate(self.nodes): rgb = hex2rgbf(self.labelTextColor(node.data.data, i)) doc.append("\\definecolor{labelTextColor%s}{rgb}{%f,%f,%f}" % (int2name(i), rgb[0], rgb[1], rgb[2])) doc.append("") for i, node in enumerate(self.nodes): rgb = hex2rgbf(self.linkColor(node.data.data, i)) doc.append("\\definecolor{linkColor%s}{rgb}{%f,%f,%f}" % (int2name(i), rgb[0], rgb[1], rgb[2])) doc.append("") for i, node in enumerate(self.nodes): if not self.options['showBorder']: return rgb = hex2rgbf(self.borderColor(node.data.data, i)) doc.append("\\definecolor{borderColor%s}{rgb}{%f,%f,%f}" % (int2name(i), rgb[0], rgb[1], rgb[2])) doc.append("")
def add_header_labels(self, doc): # Define labels if self.direction in ["left", "right"]: nodeHeight = max((n.w for n in self.nodes)) else: nodeHeight = max((n.h for n in self.nodes)) for i, node in enumerate(self.nodes): doc.append("\\def\\label%sx{%.8f}" % (int2name(i), self.nodePos(node, nodeHeight)[0])) doc.append("\\def\\label%sy{%.8f}" % (int2name(i), self.nodePos(node, nodeHeight)[1])) doc.append("")
def add_header_labels(self, doc): # Define labels if self.direction in ['left', 'right']: nodeHeight = max((n.w for n in self.nodes)) else: nodeHeight = max((n.h for n in self.nodes)) for i, node in enumerate(self.nodes): doc.append("\\def\\label%sx{%.8f}" % (int2name(i), self.nodePos(node, nodeHeight)[0])) doc.append("\\def\\label%sy{%.8f}" % (int2name(i), self.nodePos(node, nodeHeight)[1])) doc.append("")
def add_header_text(self, doc): # Define text for i, node in enumerate(self.nodes): if node.data.text: doc.append("\\def\\text%s{%s}" % (int2name(i), uni2tex(node.data.text))) doc.append("")
def add_labels(self, doc): doc.append("% label layer") doc.append("\\begin{scope}") if self.direction in ['left', 'right']: nodeHeight = max((n.w for n in self.nodes)) else: nodeHeight = max((n.h for n in self.nodes)) for i, node in enumerate(self.nodes): ID = int2name(i) txt = "\\text%s" % ID if node.data.text else "" doc.append("\\begin{scope}[shift={(%i, %i)}]" % (self.nodePos(node, nodeHeight))) if self.options['showBorder']: doc.append("\\draw[%s, borderColor%s, fill=labelBgColor%s, " "rounded corners=2pt]\n" "(0, 0) rectangle (%s, %s) node[midway, yshift=-.75bp," " anchor=center, text=labelTextColor%s] {\\strut %s};" % (self.options['latex']['borderThickness'], ID, ID, str(node.w), str(node.h), ID, txt)) else: doc.append("\\fill[color=labelBgColor%s, rounded corners=2pt]\n" "(0, 0) rectangle (%s, %s) node[midway, yshift=-.75bp, " "anchor=center, text=labelTextColor%s] {\\strut %s};" % (ID, str(node.w), str(node.h), ID, txt)) doc.append("\\end{scope}") doc.append("\\end{scope}") doc.append("")
def add_links(self, doc): doc.append("% link layer") doc.append("\\begin{scope}") for i, node in enumerate(self.nodes): ID = int2name(i) lineSteps = self.renderer.generatePath(node, tikz=True) txt = "" currentPos = ('0', '0') lineopts = "color=linkColor%s, %s" % (ID, self.options['latex']['linkThickness']) for step in lineSteps: if step.startswith('M'): currentPos = step.split(' ')[1:] elif step.startswith('C'): points = step.split(' ')[1:] if txt: txt += "\n" txt += "\\draw[%s] (%s, %s) .. " % (lineopts, currentPos[0], currentPos[1]) txt += "controls\n(%s, %s) " % (points[0], points[1]) txt += "and (%s, %s) " % (points[2], points[3]) txt += ".. (%s, %s);" % (points[4], points[5]) currentPos = (points[4], points[5]) elif step.startswith('L'): points = step.split(' ')[1:] if txt: txt += "\n" txt += "\\draw[%s] (%s, %s) -- (%s, %s);" % (lineopts, currentPos[0], currentPos[1], points[0], points[1]) currentPos = (points[0], points[1]) doc.append(txt) doc.append("\\end{scope}") doc.append("")
def add_header_text(self, doc): # Define text for i, node in enumerate(self.nodes): if node.data.text: doc.append("\\def\\text%s{%s}" % (int2name(i), uni2tex(node.data.text))) doc.append("")
def add_dots(self, doc): doc.append("% dots") doc.append("\\begin{scope}") for i, node in enumerate(self.nodes): ID = int2name(i) # factor 2 added for visual similarity between pdf and svg txt = ("\\draw node [circle, inner sep=0pt, minimum " "size=%sbp, \nfill=dotColor%s] at " % (str(2 * self.options["dotRadius"]), ID)) if self.direction in ["up", "down"]: txt += "(%f, 0) {};" % (node.getRoot().idealPos) else: txt += "(0, %f) {};" % (node.getRoot().idealPos) doc.append(txt) doc.append("\\end{scope}") doc.append("")
def add_dots(self, doc): doc.append("% dots") doc.append("\\begin{scope}") for i, node in enumerate(self.nodes): ID = int2name(i) # factor 2 added for visual similarity between pdf and svg txt = ("\\draw node [circle, inner sep=0pt, minimum " "size=%sbp, \nfill=dotColor%s] at " % (str(2*self.options['dotRadius']), ID)) if self.direction in ['up', 'down']: txt += "(%f, 0) {};" % (node.getRoot().idealPos) else: txt += "(0, %f) {};" % (node.getRoot().idealPos) doc.append(txt) doc.append("\\end{scope}") doc.append("")
def add_labels(self, doc): doc.append("% label layer") doc.append("\\begin{scope}") if self.direction in ['left', 'right']: nodeHeight = max((n.w for n in self.nodes)) else: nodeHeight = max((n.h for n in self.nodes)) for i, node in enumerate(self.nodes): ID = int2name(i) txt = "\\text%s" % ID if node.data.text else "" doc.append("\\begin{scope}[shift={(%i, %i)}]" % (self.nodePos(node, nodeHeight))) doc.append("\\fill[color=labelBgColor%s, rounded corners=2pt]\n" "(0, 0) rectangle (%s, %s) node[pos=0.5, " "text=labelTextColor%s] {%s};" % (ID, str(node.w), str(node.h), ID, txt)) doc.append("\\end{scope}") doc.append("\\end{scope}") doc.append("")