Exemple #1
0
 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("")
Exemple #2
0
 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("")
Exemple #3
0
 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("")
Exemple #4
0
    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("")
Exemple #5
0
    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("")
Exemple #6
0
 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("")
Exemple #7
0
    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("")
Exemple #8
0
 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("")
Exemple #9
0
 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("")
Exemple #10
0
 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("")
Exemple #11
0
 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("")
Exemple #12
0
    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("")