Example #1
0
def draw_cards(diameter,
               fill_color=colors.white,
               border_width=0,
               border_color=colors.white):
    """Function called to draw a card's border."""

    # card's drawing
    drawing = Drawing(diameter, diameter)

    # card's border with margin
    circle = Circle(diameter / 2,
                    diameter / 2,
                    diameter / 2,
                    fillColor=border_color,
                    strokeOpacity=0)
    drawing.add(circle)

    # card's fill
    circle = Circle(diameter / 2,
                    diameter / 2,
                    diameter / 2 - border_width,
                    fillColor=fill_color,
                    strokeOpacity=0)
    drawing.add(circle)

    return drawing
Example #2
0
def solid_shapes():
    drawing = Drawing(width=400, height=200)
    
    rectangle = Rect(10, 10, 100, 100)
    rectangle.fillColor = colors.blue
    drawing.add(rectangle)
    
    ellipse = Ellipse(100, 50, 50, 25)
    ellipse.fillColor = colors.red
    drawing.add(ellipse)
    
    circle = Circle(50, 170, 25)
    circle.fillColor = colors.green
    drawing.add(circle)
    
    wedge = Wedge(150, 150, 65, 
                  startangledegrees=0, 
                  endangledegrees=45)
    wedge.fillColor = colors.yellow
    drawing.add(wedge)
    
    poly = Polygon(points=[250, 150, 
                           280, 150, 
                           280, 100, 
                           250, 100
                           ])
    poly.fillColor = colors.purple
    drawing.add(poly)
    
    
    drawing.save(formats=['pdf'], outDir='.', fnRoot='solid_shapes')
Example #3
0
def genText2(width, height):

    # Text background
    rWidth = width * 89 / 100
    rHeight = height * 95 / 100
    backgroundRect = Rect(
        x=0, y=0, # Start point
        width=rWidth, height=rHeight, 
        #rx=2, # controls round corners
        strokeWidth=3, strokeColor=colors.orange,
        fillColor=colors.ivory,    
    )
    # bottom left circle
    circle1 = Circle(
        cx=0, cy=0, # x and y for center
        r=4, # radius
        fillColor=colors.red,
    )
    # bottom right circle
    circle2 = Circle(
        cx=rWidth, cy=0, # x and y for center
        r=4, # radius
        fillColor=colors.red,
    ) 
    # top left circle 
    circle3 = Circle(
        cx=0, cy=rHeight, # x and y for center
        r=4, # radius
        fillColor=colors.red,
    )  
    # top right circle
    circle4 = Circle(
        cx=rWidth, cy=rHeight, # x and y for center
        r=4, # radius
        fillColor=colors.red,
    )   

    drawing = Drawing()
    drawing.add(backgroundRect)
    drawing.add(circle1)
    drawing.add(circle2)
    drawing.add(circle3)
    drawing.add(circle4)    

    # Text
    title = 'Terror has just began!'
    text = 'Sofas are now in extinction and if we don\'t stop him... He will destroy sofas at ISS (International Space Station) and even on Mars!!!'

    tableText = genTextCol(width, height, title, text)

    res = Table([
        [drawing, tableText]
    ], [0, width], height)

    res.setStyle([
        styles.LEFT_PADDING_ZERO_ALL,
        styles.BOTTOM_PADDING_ZERO_ALL,
    ])

    return res
Example #4
0
    def _Flag_Turkey(self):
        s = _size
        g = Group()

        box = Rect(0, 0, s*2, s,
            fillColor = colors.red,
                        strokeColor = colors.black,
            strokeWidth=0)
        g.add(box)

        whitecircle = Circle(cx=((s*0.35)*2), cy=s/2, r=s*0.3,
            fillColor = colors.mintcream,
            strokeColor = None,
            strokeWidth=0)
        g.add(whitecircle)

        redcircle = Circle(cx=((s*0.39)*2), cy=s/2, r=s*0.24,
            fillColor = colors.red,
            strokeColor = None,
            strokeWidth=0)
        g.add(redcircle)

        ws = Star()
        ws.angle = 15
        ws.size = s/5
        ws.x = (s*0.5)*2+ws.size/2
        ws.y = (s*0.5)
        ws.fillColor = colors.mintcream
        ws.strokeColor = None
        g.add(ws)
        return g
 def draw(self):
     self.drawing.add(
         Rect(0,
              0,
              self.get_pageSize()[0],
              self.get_pageSize()[1],
              fillColor=self.colorBackground,
              strokeWidth=0))  # fill background color
     off = (self.margins[0] + self.dotSize, self.margins[1] + self.dotSize)
     self.drawing.add(
         Circle(off[0],
                off[1],
                self.dotSize,
                fillColor=self.colorForeground,
                strokeColor=self.colorForeground,
                strokeWidth=0))  # big corner dot
     for c in range(0, self.gridCount[0]):
         for r in range(0, self.gridCount[1]):
             xy = (off[0] + c * self.gridSpacing[0],
                   off[1] + r * self.gridSpacing[1])
             self.drawing.add(
                 Circle(xy[0],
                        xy[1],
                        self.dotSize / 2,
                        fillColor=self.colorForeground,
                        strokeColor=self.colorForeground,
                        strokeWidth=0))
             self.drawing.add(
                 Circle(xy[0],
                        xy[1],
                        .03 * self.dotSize,
                        fillColor=self.colorBackground,
                        strokeColor=self.colorBackground,
                        strokeWidth=0))
Example #6
0
def makeEmptyCircle(x, y, size, color):
    "Make a hollow circle marker."

    d = size / 2.0
    circle = Circle(x, y, d)
    circle.strokeColor = color
    circle.fillColor = colors.white

    return circle
Example #7
0
def makeFilledCircle(x, y, size, color):
    "Make a hollow circle marker."

    d = size / 2.0
    circle = Circle(x, y, d)
    circle.strokeColor = color
    circle.fillColor = color

    return circle
def makeEmptyCircle(x, y, size, color):
    "Make a hollow circle marker."

    d = size/2.0
    circle = Circle(x, y, d)
    circle.strokeColor = color
    circle.fillColor = colors.white

    return circle
def makeFilledCircle(x, y, size, color):
    "Make a hollow circle marker."

    d = size/2.0
    circle = Circle(x, y, d)
    circle.strokeColor = color
    circle.fillColor = color

    return circle
def create_circle():
    drawing = Drawing(width=400, height=200)
    circle = Circle(50, 170, 25)
    circle.fillColor = colors.green
    circle.strokeColor = colors.red
    circle.strokeWidth = 5
    drawing.add(circle)

    drawing.save(formats=['pdf'], outDir='.', fnRoot='circle')
def group_demo():
    drawing = Drawing(width=400, height=200)
    radius = 25
    circles = Group(Circle(50, 40, radius, fillColor=colors.blue),
                    Circle(75, 40, radius, fillColor=colors.red),
                    Circle(100, 40, radius, fillColor=colors.green),
                    Circle(125, 40, radius, fillColor=colors.yellow),
                    String(75, 5, 'Circles'))
    drawing.add(circles)

    more_circles = Group(circles)
    more_circles.translate(75, 55)
    more_circles.rotate(35)
    drawing.add(more_circles)

    drawing.save(formats=['pdf'], outDir='.', fnRoot='group_demo')
Example #12
0
 def _Flag_Japan(self):
     s = _size
     g = Group()
     w = self._width = s*1.5
     g.add(Rect(0,0,w,s,fillColor=colors.mintcream,strokeColor=None, strokeWidth=0))
     g.add(Circle(cx=w/2,cy=s/2,r=0.3*w,fillColor=colors.red,strokeColor=None, strokeWidth=0))
     return g
Example #13
0
def get_key_symbol(x, y, element_type, color):
    return {
        "line": Line(x, y + 3, x + 10, y + 3, strokeColor=color,
                     strokeWidth=3),
        "circle": Circle(x + 6, y + 3, 2, fillColor=color, strokeColor=color),
        "rect": Rect(x + 6, y, 4, 4, fillColor=color, strokeColor=color),
    }[element_type]
Example #14
0
    def convertCircle(self, node):
        # not rendered if r == 0, error if r < 0.
        getAttr = node.getAttribute
        cx, cy, r = map(getAttr, ("cx", "cy", 'r'))
        cx, cy, r = map(self.attrConverter.convertLength, (cx, cy, r))
        shape = Circle(cx, cy, r)

        return shape
Example #15
0
 def _Circle(self):
     x, y = self.x + self.dx, self.y + self.dy
     s = Circle(x,
                y,
                self.size / 2.0,
                fillColor=self.fillColor,
                strokeColor=self.strokeColor,
                strokeWidth=self.strokeWidth)
     return s
Example #16
0
def circle(x,
           y,
           r,
           fill_color="#000000",
           border_color="#000000",
           border_width=1):
    return Circle(x,
                  y,
                  r,
                  fillColor=fill_color,
                  strokeColor=border_color,
                  strokeWidth=border_width)
Example #17
0
 def draw(self):
     off = (self.margins[0] + self.dotSize, self.margins[1] + self.dotSize)
     self.drawing.add(
         Circle(off[0],
                off[1],
                self.dotSize,
                fillColor=black,
                strokeWidth=0))  # big corner dot
     for c in range(0, self.gridCount[0]):
         for r in range(0, self.gridCount[1]):
             xy = (off[0] + c * self.gridSpacing[0],
                   off[1] + r * self.gridSpacing[1])
             self.drawing.add(
                 Circle(xy[0],
                        xy[1],
                        self.dotSize / 2,
                        fillColor=black,
                        strokeWidth=0))
             self.drawing.add(
                 Circle(xy[0],
                        xy[1],
                        .03 * self.dotSize,
                        fillColor=white,
                        strokeWidth=0))
Example #18
0
    def demo(self):
        """This shows a label positioned with its top right corner
        at the top centre of the drawing, and rotated 45 degrees."""

        d = Drawing(200, 100)

        # mark the origin of the label
        d.add(Circle(100, 90, 5, fillColor=colors.green))

        lab = Label()
        lab.setOrigin(100, 90)
        lab.boxAnchor = 'ne'
        lab.angle = 45
        lab.dx = 0
        lab.dy = -20
        lab.boxStrokeColor = colors.green
        lab.setText('Another\nMulti-Line\nString')
        d.add(lab)

        return d
Example #19
0
def border():
    draw = Drawing(1, 1)
    rect = Polygon(points=[
        -12, cm / 6, (PAGE_WIDTH - (RIGHT_MARGIN + LEFT_MARGIN)), cm / 6,
        PAGE_WIDTH - (RIGHT_MARGIN + LEFT_MARGIN),
        -1 * (PAGE_HEIGHT - (TOP_MARGIN + BOTTOM_MARGIN + cm / 2)), -12,
        -1 * (PAGE_HEIGHT - (TOP_MARGIN + BOTTOM_MARGIN + cm / 2))
    ],
                   strokeColor=Color(*charts.BG_COLOR))
    rect.fillColor = Color(*charts.BG_COLOR, 0.1)
    draw.add(rect)
    draw.add(Circle(100, 90, 5, fillColor=colors.green))
    lab = Label()
    lab.setOrigin(350, -50)
    lab.boxAnchor = 'ne'
    lab.fillColor = Color(*charts.BG_COLOR, 0.15)
    lab.fontSize = 72
    lab.angle = 60
    lab.dx = 0
    lab.dy = 0
    lab.setText('Wisdom Tests')
    draw.add(lab)
    return draw
Example #20
0
def draw_tour(gene, file_name, text=""):
    d = Drawing(draw_size, draw_size)
    tour_xy = []
    for i in range(CITY_NUM):
        tour_i = gene[i]
        if i == 0:
            color = "red"
        else:
            color = "black"
        c = Circle(city_pos[tour_i][0],
                   city_pos[tour_i][1],
                   5,
                   fillColor=color)
        d.add(c)
        tour_xy.append(city_pos[tour_i])
    tour_xy.append(city_pos[gene[0]])
    l = PolyLine(tour_xy[1:], strokeColor="blue")
    d.add(l)
    l = PolyLine(tour_xy[:2], strokeColor="red")
    d.add(l)
    if text != "":
        s = String(center, 10, text, textAnchor="middle")
        d.add(s)
    renderPDF.drawToFile(d, "{}.pdf".format(file_name))
Example #21
0
    def add_dots(self, x, y, X, Y, row_cuts, col_cuts, box):
        dx = self.dx
        dy = self.dy

        drawing = Drawing(self.W, self.H)

        for j in range(1, Y + 1):
            for i in range(1, X + 1):
                if i <= x and j <= y:
                    stroke_color = colors.Color(211 / 255., 211 / 255.,
                                                211 / 255., 1)
                    fill_color = colors.Color(180 / 255., 180 / 255.,
                                              180 / 255., 1)
                else:
                    stroke_color = colors.Color(241 / 255., 241 / 255.,
                                                241 / 255., 1)
                    fill_color = colors.Color(241 / 255., 241 / 255.,
                                              241 / 255., 1)
                ddx = self.dot_grid_delta(i, x) * 1
                ddy = self.dot_grid_delta(j, y) * 1
                #drawing.add(Circle(i*dx-dx/2+ddx, -j*dy-ddy, max((dx/2-1), 1), fillColor=fill_color,strokeColor=None))
                drawing.add(
                    Circle(i * dx - dx / 2 + ddx,
                           -j * dy - ddy + int(dy) / 2,
                           max((dx / 2 - 1), 1),
                           fillColor=fill_color,
                           strokeColor=None))

                if x > i > 1 and col_cuts and sorted(
                        PrimeFactors(x).factors.keys())[-1] in PrimeFactors(
                            i).factors:
                    drawing.add(
                        Line(i * dx + ddx / 2,
                             -j * dy - dy / 2 - 1,
                             i * dx + ddx / 2,
                             -j * dy + dy / 2 + 1,
                             strokeColor=colors.white))
                    drawing.add(
                        Line(i * dx + ddx / 2,
                             -j * dy - dy / 2 - 1,
                             i * dx + ddx / 2,
                             -j * dy + dy / 2 + 1,
                             strokeColor=stroke_color))
                if y > j > 1 and row_cuts and sorted(
                        PrimeFactors(y).factors.keys())[-1] in PrimeFactors(
                            j).factors.keys():
                    drawing.add(
                        Line(i * dx - dx,
                             -j * dy - dy / 2 - ddy / 2,
                             i * dx,
                             -j * dy - dy / 2 - ddy / 2,
                             strokeColor=colors.white))
                    drawing.add(
                        Line(i * dx - dx,
                             -j * dy - dy / 2 - ddy / 2,
                             i * dx,
                             -j * dy - dy / 2 - ddy / 2,
                             strokeColor=stroke_color))

        if box and x > 1 and y > 1:
            i = sorted(PrimeFactors(x).factors.keys())[-1]
            j = sorted(PrimeFactors(y).factors.keys())[-1]
            fill_color = colors.Color(21 / 255., 21 / 255., 21 / 255., 0.05)
            drawing.add(
                Rect(0,
                     -dy / 2,
                     i * dx - dx / 4,
                     -j * dy,
                     fillColor=fill_color,
                     strokeColor=None))
        return drawing
Example #22
0
 def __init__(self, width=400, height=400, *args, **kw):
     Drawing.__init__(self, width, height, *args, **kw)
     self.transform = (1, 0, 0, 1, 0, 0)
     self.add(
         Polygon(points=[
             108.3032, 252.9412, 200, 288.2353, 291.6968, 252.9412,
             306.9796, 138.2353, 200, 58.82353, 93.02039, 138.2353,
             108.3032, 252.9412
         ],
                 fillColor=Color(1, .752941, .796078, 1),
                 fillOpacity=None,
                 strokeColor=None,
                 strokeWidth=0,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             85.37899, 266.1765, 200, 252.9412, 261.1312, 235.2941, 276.414,
             155.8824, 200, 94.11765, 131.2274, 160.2941, 85.37899, 266.1765
         ],
                 fillColor=Color(.678431, .847059, .901961, 1),
                 fillOpacity=None,
                 strokeColor=None,
                 strokeWidth=0,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             138.8688, 235.2941, 200, 261.7647, 261.1312, 235.2941,
             329.9038, 125, 200, 164.7059, 108.3032, 147.0588, 138.8688,
             235.2941
         ],
                 fillColor=Color(.596078, .984314, .596078, 1),
                 fillOpacity=None,
                 strokeColor=None,
                 strokeWidth=0,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         PolyLine(points=[
             108.3032, 252.9412, 200, 288.2353, 291.6968, 252.9412,
             306.9796, 138.2353, 200, 58.82353, 93.02039, 138.2353,
             108.3032, 252.9412
         ],
                  strokeColor=Color(1, 0, 0, 1),
                  strokeWidth=1,
                  strokeLineCap=0,
                  strokeLineJoin=0,
                  strokeMiterLimit=0,
                  strokeDashArray=None,
                  strokeOpacity=None))
     self.add(
         PolyLine(points=[
             85.37899, 266.1765, 200, 252.9412, 261.1312, 235.2941, 276.414,
             155.8824, 200, 94.11765, 131.2274, 160.2941, 85.37899, 266.1765
         ],
                  strokeColor=Color(0, 0, 1, 1),
                  strokeWidth=1,
                  strokeLineCap=0,
                  strokeLineJoin=0,
                  strokeMiterLimit=0,
                  strokeDashArray=None,
                  strokeOpacity=None))
     self.add(
         PolyLine(points=[
             138.8688, 235.2941, 200, 261.7647, 261.1312, 235.2941,
             329.9038, 125, 200, 164.7059, 108.3032, 147.0588, 138.8688,
             235.2941
         ],
                  strokeColor=Color(0, .501961, 0, 1),
                  strokeWidth=1,
                  strokeLineCap=0,
                  strokeLineJoin=0,
                  strokeMiterLimit=0,
                  strokeDashArray=None,
                  strokeOpacity=None))
     self.add(
         Line(200,
              200,
              200,
              350,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=.5,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(200,
              200,
              329.9038,
              275,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=.5,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(200,
              200,
              329.9038,
              125,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=.5,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(200,
              200,
              200,
              50,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=.5,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(200,
              200,
              70.09619,
              125,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=.5,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(200,
              200,
              70.09619,
              275,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=.5,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Polygon(points=[
             197, 288.2353, 200, 291.2353, 203, 288.2353, 200, 285.2353
         ],
                 fillColor=Color(1, .752941, .796078, 1),
                 fillOpacity=None,
                 strokeColor=Color(1, 0, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             288.6968, 252.9412, 291.6968, 255.9412, 294.6968, 252.9412,
             291.6968, 249.9412
         ],
                 fillColor=Color(1, .752941, .796078, 1),
                 fillOpacity=None,
                 strokeColor=Color(1, 0, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             303.9796, 138.2353, 306.9796, 141.2353, 309.9796, 138.2353,
             306.9796, 135.2353
         ],
                 fillColor=Color(1, .752941, .796078, 1),
                 fillOpacity=None,
                 strokeColor=Color(1, 0, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             197, 58.82353, 200, 61.82353, 203, 58.82353, 200, 55.82353
         ],
                 fillColor=Color(1, .752941, .796078, 1),
                 fillOpacity=None,
                 strokeColor=Color(1, 0, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             90.02039, 138.2353, 93.02039, 141.2353, 96.02039, 138.2353,
             93.02039, 135.2353
         ],
                 fillColor=Color(1, .752941, .796078, 1),
                 fillOpacity=None,
                 strokeColor=Color(1, 0, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             105.3032, 252.9412, 108.3032, 255.9412, 111.3032, 252.9412,
             108.3032, 249.9412
         ],
                 fillColor=Color(1, .752941, .796078, 1),
                 fillOpacity=None,
                 strokeColor=Color(1, 0, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Circle(200,
                252.9412,
                2.5,
                fillColor=Color(1, 1, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.5,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(261.1312,
                235.2941,
                2.5,
                fillColor=Color(1, 1, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.5,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(276.414,
                155.8824,
                2.5,
                fillColor=Color(1, 1, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.5,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(200,
                94.11765,
                2.5,
                fillColor=Color(1, 1, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.5,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(131.2274,
                160.2941,
                2.5,
                fillColor=Color(1, 1, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.5,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(85.37899,
                266.1765,
                2.5,
                fillColor=Color(1, 1, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.5,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Polygon(points=[
             197, 261.7647, 200, 264.7647, 203, 261.7647, 200, 258.7647
         ],
                 fillColor=Color(.596078, .984314, .596078, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, .501961, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             258.1312, 235.2941, 261.1312, 238.2941, 264.1312, 235.2941,
             261.1312, 232.2941
         ],
                 fillColor=Color(.596078, .984314, .596078, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, .501961, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             326.9038, 125, 329.9038, 128, 332.9038, 125, 329.9038, 122
         ],
                 fillColor=Color(.596078, .984314, .596078, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, .501961, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             197, 164.7059, 200, 167.7059, 203, 164.7059, 200, 161.7059
         ],
                 fillColor=Color(.596078, .984314, .596078, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, .501961, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             105.3032, 147.0588, 108.3032, 150.0588, 111.3032, 147.0588,
             108.3032, 144.0588
         ],
                 fillColor=Color(.596078, .984314, .596078, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, .501961, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Polygon(points=[
             135.8688, 235.2941, 138.8688, 238.2941, 141.8688, 235.2941,
             138.8688, 232.2941
         ],
                 fillColor=Color(.596078, .984314, .596078, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, .501961, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 200, 357.5)
     v0.add(
         String(-3.61,
                -4,
                'U',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 336.399, 278.75)
     v0.add(
         String(-3.61,
                -4,
                'V',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 336.399, 121.25)
     v0.add(
         String(-4.72,
                -4,
                'W',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 200, 42.5)
     v0.add(
         String(-3.61,
                -4,
                'X',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 63.601, 121.25)
     v0.add(
         String(-3.61,
                -4,
                'Y',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 63.601, 278.75)
     v0.add(
         String(-3.055,
                -4,
                'Z',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 200, 283.2353)
     v0.add(
         String(-8.605,
                -4,
                'zero',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 287.3667, 250.4412)
     v0.add(
         String(-7.22,
                -4,
                'one',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 200, 63.82353)
     v0.add(
         String(-13.885,
                -4,
                'special',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 200, 247.9412)
     v0.add(
         String(-10.83,
                -4,
                'Earth',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 325.5737, 127.5)
     v0.add(
         String(-10.275,
                -4,
                'Mars',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
Example #23
0
 def convert_circle(self, node):
     return Circle(*self._length_attrs(node, "cx", "cy", "r"))
Example #24
0
ts = [('ALIGN', (1, 1), (-1, -1), 'CENTER'),
      ('LINEABOVE', (0, 0), (-1, 0), 1, colors.purple),
      ('LINEBELOW', (0, 0), (-1, 0), 1, colors.purple),
      ('FONT', (0, 0), (-1, 0), 'Times-Bold'),
      ('LINEABOVE', (0, -1), (-1, -1), 1, colors.purple),
      ('LINEBELOW', (0, -1), (-1, -1), 0.5, colors.purple, 1, None, None, 4,
       1), ('LINEBELOW', (0, -1), (-1, -1), 1, colors.red),
      ('FONT', (0, -1), (-1, -1), 'Times-Bold'),
      ('BACKGROUND', (1, 1), (-2, -2), colors.green),
      ('TEXTCOLOR', (0, 0), (1, -1), colors.red)]

table = Table(lista, style=ts)
elements.append(table)

d = Drawing(20, 20)
d.add(Circle(10, 10, 5, strokeColor="#FF0000", fillColor='#FF0000'))
d.background = Rect(0,
                    0,
                    20,
                    20,
                    strokeWidth=0.25,
                    strokeColor="#868686",
                    fillColor=None)

table2 = Table([['AAA', d]] * 10,
               style=[('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
                      ('BOX', (0, 0), (-1, -1), 0.25, colors.black)])

elements.append(table2)

doc = SimpleDocTemplate(PATH_OUT + 'Report_File.pdf')
Example #25
0
 def __init__(self, width=400, height=200, *args, **kw):
     Drawing.__init__(self, width, height, *args, **kw)
     self.transform = (1, 0, 0, 1, 0, 0)
     self.add(
         Line(90,
              100,
              110,
              100,
              strokeColor=Color(0, .501961, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(100,
              90,
              100,
              110,
              strokeColor=Color(0, .501961, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Circle(100,
                100,
                10,
                fillColor=Color(1, 0, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.526316,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Ellipse(96.66667,
                 103.3333,
                 .666667,
                 2,
                 fillColor=Color(0, 0, 0, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, 0, 0, 1),
                 strokeWidth=.526316,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Ellipse(103.3333,
                 103.3333,
                 .666667,
                 2,
                 fillColor=Color(0, 0, 0, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, 0, 0, 1),
                 strokeWidth=.526316,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         PolyLine(points=[
             93.73538, 97.71987, 93.77613, 97.61088, 93.81877, 97.50262,
             93.8633, 97.39513, 93.9097, 97.28842, 93.95795, 97.18254,
             94.00804, 97.07753, 94.05996, 96.9734, 94.11368, 96.87019,
             94.1692, 96.76794, 94.2265, 96.66667, 94.28555, 96.56641,
             94.34635, 96.4672, 94.40886, 96.36907, 94.47308, 96.27205,
             94.53899, 96.17616, 94.60655, 96.08143, 94.67576, 95.9879,
             94.74659, 95.89559, 94.81903, 95.80453, 94.89304, 95.71475,
             94.9686, 95.62627, 95.0457, 95.53913, 95.12431, 95.45334,
             95.2044, 95.36894, 95.28595, 95.28595, 95.36894, 95.2044,
             95.45334, 95.12431, 95.53913, 95.0457, 95.62627, 94.9686,
             95.71475, 94.89304, 95.80453, 94.81903, 95.89559, 94.74659,
             95.9879, 94.67576, 96.08143, 94.60655, 96.17616, 94.53899,
             96.27205, 94.47308, 96.36907, 94.40886, 96.4672, 94.34635,
             96.56641, 94.28555, 96.66667, 94.2265, 96.76794, 94.1692,
             96.87019, 94.11368, 96.9734, 94.05996, 97.07753, 94.00804,
             97.18254, 93.95795, 97.28842, 93.9097, 97.39513, 93.8633,
             97.50262, 93.81877, 97.61088, 93.77613, 97.71987, 93.73538,
             97.82955, 93.69654, 97.93989, 93.65962, 98.05086, 93.62463,
             98.16242, 93.59159, 98.27454, 93.56049, 98.38719, 93.53136,
             98.50033, 93.5042, 98.61392, 93.47902, 98.72794, 93.45582,
             98.84235, 93.43461, 98.9571, 93.41541, 99.07218, 93.39821,
             99.18754, 93.38303, 99.30314, 93.36985, 99.41896, 93.3587,
             99.53496, 93.34957, 99.65109, 93.34247, 99.76734, 93.33739,
             99.88365, 93.33435, 100, 93.33333, 100.1163, 93.33435,
             100.2327, 93.33739, 100.3489, 93.34247, 100.465, 93.34957,
             100.581, 93.3587, 100.6969, 93.36985, 100.8125, 93.38303,
             100.9278, 93.39821, 101.0429, 93.41541, 101.1577, 93.43461,
             101.2721, 93.45582, 101.3861, 93.47902, 101.4997, 93.5042,
             101.6128, 93.53136, 101.7255, 93.56049, 101.8376, 93.59159,
             101.9491, 93.62463, 102.0601, 93.65962, 102.1705, 93.69654,
             102.2801, 93.73538, 102.3891, 93.77613, 102.4974, 93.81877,
             102.6049, 93.8633, 102.7116, 93.9097, 102.8175, 93.95795,
             102.9225, 94.00804, 103.0266, 94.05996, 103.1298, 94.11368,
             103.2321, 94.1692, 103.3333, 94.2265, 103.4336, 94.28555,
             103.5328, 94.34635, 103.6309, 94.40886, 103.728, 94.47308,
             103.8238, 94.53899, 103.9186, 94.60655, 104.0121, 94.67576,
             104.1044, 94.74659, 104.1955, 94.81903, 104.2853, 94.89304,
             104.3737, 94.9686, 104.4609, 95.0457, 104.5467, 95.12431,
             104.6311, 95.2044, 104.714, 95.28595, 104.7956, 95.36894,
             104.8757, 95.45334, 104.9543, 95.53913, 105.0314, 95.62627,
             105.107, 95.71475, 105.181, 95.80453, 105.2534, 95.89559,
             105.3242, 95.9879, 105.3934, 96.08143, 105.461, 96.17616,
             105.5269, 96.27205, 105.5911, 96.36907, 105.6537, 96.4672,
             105.7144, 96.56641, 105.7735, 96.66667, 105.8308, 96.76794,
             105.8863, 96.87019, 105.94, 96.9734, 105.992, 97.07753,
             106.0421, 97.18254, 106.0903, 97.28842, 106.1367, 97.39513,
             106.1812, 97.50262, 106.2239, 97.61088, 106.2646, 97.71987
         ],
                  strokeColor=Color(0, 0, 0, 1),
                  strokeWidth=.526316,
                  strokeLineCap=0,
                  strokeLineJoin=0,
                  strokeMiterLimit=0,
                  strokeDashArray=None,
                  strokeOpacity=None,
                  fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (2, 0, 0, 2, 100, -100)
     v0.add(
         Line(90,
              100,
              110,
              100,
              strokeColor=Color(0, .501961, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     v0.add(
         Line(100,
              90,
              100,
              110,
              strokeColor=Color(0, .501961, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     v0.add(
         Circle(100,
                100,
                10,
                fillColor=Color(0, 0, 1, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.526316,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     v0.add(
         Ellipse(96.66667,
                 103.3333,
                 .666667,
                 2,
                 fillColor=Color(0, 0, 0, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, 0, 0, 1),
                 strokeWidth=.526316,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     v0.add(
         Ellipse(103.3333,
                 103.3333,
                 .666667,
                 2,
                 fillColor=Color(0, 0, 0, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, 0, 0, 1),
                 strokeWidth=.526316,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     v0.add(
         PolyLine(points=[
             93.73538, 97.71987, 93.77613, 97.61088, 93.81877, 97.50262,
             93.8633, 97.39513, 93.9097, 97.28842, 93.95795, 97.18254,
             94.00804, 97.07753, 94.05996, 96.9734, 94.11368, 96.87019,
             94.1692, 96.76794, 94.2265, 96.66667, 94.28555, 96.56641,
             94.34635, 96.4672, 94.40886, 96.36907, 94.47308, 96.27205,
             94.53899, 96.17616, 94.60655, 96.08143, 94.67576, 95.9879,
             94.74659, 95.89559, 94.81903, 95.80453, 94.89304, 95.71475,
             94.9686, 95.62627, 95.0457, 95.53913, 95.12431, 95.45334,
             95.2044, 95.36894, 95.28595, 95.28595, 95.36894, 95.2044,
             95.45334, 95.12431, 95.53913, 95.0457, 95.62627, 94.9686,
             95.71475, 94.89304, 95.80453, 94.81903, 95.89559, 94.74659,
             95.9879, 94.67576, 96.08143, 94.60655, 96.17616, 94.53899,
             96.27205, 94.47308, 96.36907, 94.40886, 96.4672, 94.34635,
             96.56641, 94.28555, 96.66667, 94.2265, 96.76794, 94.1692,
             96.87019, 94.11368, 96.9734, 94.05996, 97.07753, 94.00804,
             97.18254, 93.95795, 97.28842, 93.9097, 97.39513, 93.8633,
             97.50262, 93.81877, 97.61088, 93.77613, 97.71987, 93.73538,
             97.82955, 93.69654, 97.93989, 93.65962, 98.05086, 93.62463,
             98.16242, 93.59159, 98.27454, 93.56049, 98.38719, 93.53136,
             98.50033, 93.5042, 98.61392, 93.47902, 98.72794, 93.45582,
             98.84235, 93.43461, 98.9571, 93.41541, 99.07218, 93.39821,
             99.18754, 93.38303, 99.30314, 93.36985, 99.41896, 93.3587,
             99.53496, 93.34957, 99.65109, 93.34247, 99.76734, 93.33739,
             99.88365, 93.33435, 100, 93.33333, 100.1163, 93.33435,
             100.2327, 93.33739, 100.3489, 93.34247, 100.465, 93.34957,
             100.581, 93.3587, 100.6969, 93.36985, 100.8125, 93.38303,
             100.9278, 93.39821, 101.0429, 93.41541, 101.1577, 93.43461,
             101.2721, 93.45582, 101.3861, 93.47902, 101.4997, 93.5042,
             101.6128, 93.53136, 101.7255, 93.56049, 101.8376, 93.59159,
             101.9491, 93.62463, 102.0601, 93.65962, 102.1705, 93.69654,
             102.2801, 93.73538, 102.3891, 93.77613, 102.4974, 93.81877,
             102.6049, 93.8633, 102.7116, 93.9097, 102.8175, 93.95795,
             102.9225, 94.00804, 103.0266, 94.05996, 103.1298, 94.11368,
             103.2321, 94.1692, 103.3333, 94.2265, 103.4336, 94.28555,
             103.5328, 94.34635, 103.6309, 94.40886, 103.728, 94.47308,
             103.8238, 94.53899, 103.9186, 94.60655, 104.0121, 94.67576,
             104.1044, 94.74659, 104.1955, 94.81903, 104.2853, 94.89304,
             104.3737, 94.9686, 104.4609, 95.0457, 104.5467, 95.12431,
             104.6311, 95.2044, 104.714, 95.28595, 104.7956, 95.36894,
             104.8757, 95.45334, 104.9543, 95.53913, 105.0314, 95.62627,
             105.107, 95.71475, 105.181, 95.80453, 105.2534, 95.89559,
             105.3242, 95.9879, 105.3934, 96.08143, 105.461, 96.17616,
             105.5269, 96.27205, 105.5911, 96.36907, 105.6537, 96.4672,
             105.7144, 96.56641, 105.7735, 96.66667, 105.8308, 96.76794,
             105.8863, 96.87019, 105.94, 96.9734, 105.992, 97.07753,
             106.0421, 97.18254, 106.0903, 97.28842, 106.1367, 97.39513,
             106.1812, 97.50262, 106.2239, 97.61088, 106.2646, 97.71987
         ],
                  strokeColor=Color(0, 0, 0, 1),
                  strokeWidth=.526316,
                  strokeLineCap=0,
                  strokeLineJoin=0,
                  strokeMiterLimit=0,
                  strokeDashArray=None,
                  strokeOpacity=None,
                  fillColor=Color(0, 0, 0, 1)))
Example #26
0
 def __init__(self, width=400, height=200, *args, **kw):
     Drawing.__init__(self, width, height, *args, **kw)
     self.transform = (1, 0, 0, 1, 0, 0)
     self.add(
         Line(10,
              10,
              390,
              190,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Circle(100,
                100,
                20,
                fillColor=Color(0, .501961, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(200,
                100,
                40,
                fillColor=Color(0, .501961, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(300,
                100,
                30,
                fillColor=Color(0, .501961, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Wedge(330,
               100,
               40,
               -10,
               40,
               yradius=None,
               annular=False,
               fillColor=Color(0, .501961, 0, 1),
               fillOpacity=None,
               strokeColor=Color(0, 0, 0, 1),
               strokeWidth=1,
               strokeLineCap=0,
               strokeLineJoin=0,
               strokeMiterLimit=0,
               strokeDashArray=None,
               strokeOpacity=None))
     self.add(
         PolyLine(points=[
             120, 10, 130, 20, 140, 10, 150, 20, 160, 10, 170, 20, 180, 10,
             190, 20, 200, 10
         ],
                  strokeColor=Color(0, 0, 0, 1),
                  strokeWidth=1,
                  strokeLineCap=0,
                  strokeLineJoin=0,
                  strokeMiterLimit=0,
                  strokeDashArray=None,
                  strokeOpacity=None,
                  fillColor=Color(0, .501961, 0, 1)))
     self.add(
         Polygon(points=[300, 20, 350, 20, 390, 80, 300, 75, 330, 40],
                 fillColor=Color(0, .501961, 0, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, 0, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Ellipse(50,
                 150,
                 40,
                 20,
                 fillColor=Color(0, .501961, 0, 1),
                 fillOpacity=None,
                 strokeColor=Color(0, 0, 0, 1),
                 strokeWidth=1,
                 strokeLineCap=0,
                 strokeLineJoin=0,
                 strokeMiterLimit=0,
                 strokeDashArray=None,
                 strokeOpacity=None))
     self.add(
         Rect(120,
              150,
              60,
              30,
              rx=0,
              ry=0,
              fillColor=Color(0, .501961, 0, 1),
              fillOpacity=None,
              strokeColor=Color(1, 1, 0, 1),
              strokeWidth=10,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Rect(220,
              150,
              60,
              30,
              rx=10,
              ry=10,
              fillColor=Color(0, .501961, 0, 1),
              fillOpacity=None,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         String(10,
                50,
                'Basic Shapes',
                textAnchor='start',
                fontName='Helvetica',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
Example #27
0
 def __init__(self, width=400, height=200, *args, **kw):
     Drawing.__init__(self, width, height, *args, **kw)
     self.transform = (1, 0, 0, 1, 0, 0)
     self.add(
         Rect(50,
              50,
              300,
              125,
              rx=0,
              ry=0,
              fillColor=None,
              fillOpacity=None,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(50,
              50,
              350,
              50,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(110,
              50,
              110,
              45,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(170,
              50,
              170,
              45,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(200,
              50,
              200,
              45,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(230,
              50,
              230,
              45,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(290,
              50,
              290,
              45,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(350,
              50,
              350,
              45,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 110, 45)
     v0.add(
         String(-6.25,
                -10,
                '1.0',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 170, 45)
     v0.add(
         String(-6.25,
                -10,
                '2.0',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 200, 45)
     v0.add(
         String(-6.25,
                -10,
                '2.5',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 230, 45)
     v0.add(
         String(-6.25,
                -10,
                '3.0',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 290, 45)
     v0.add(
         String(-6.25,
                -10,
                '4.0',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 350, 45)
     v0.add(
         String(-6.25,
                -10,
                '5.0',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     self.add(
         Line(50,
              50,
              50,
              175,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=0,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(50,
              67.85714,
              45,
              67.85714,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(50,
              85.71429,
              45,
              85.71429,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(50,
              103.5714,
              45,
              103.5714,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(50,
              139.2857,
              45,
              139.2857,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     self.add(
         Line(50,
              157.1429,
              45,
              157.1429,
              strokeColor=Color(0, 0, 0, 1),
              strokeWidth=1,
              strokeLineCap=0,
              strokeLineJoin=0,
              strokeMiterLimit=10,
              strokeDashArray=None,
              strokeOpacity=None))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 45, 67.85714)
     v0.add(
         String(-5,
                -4,
                '1',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 45, 85.71429)
     v0.add(
         String(-5,
                -4,
                '2',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 45, 103.5714)
     v0.add(
         String(-5,
                -4,
                '3',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 45, 139.2857)
     v0.add(
         String(-5,
                -4,
                '5',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 45, 157.1429)
     v0.add(
         String(-5,
                -4,
                '6',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     self.add(
         PolyLine(points=[
             110, 67.85714, 170, 85.71429, 200, 67.85714, 230, 103.5714,
             290, 139.2857
         ],
                  strokeColor=Color(1, 0, 0, 1),
                  strokeWidth=1,
                  strokeLineCap=0,
                  strokeLineJoin=1,
                  strokeMiterLimit=0,
                  strokeDashArray=None,
                  strokeOpacity=None))
     self.add(
         PolyLine(points=[
             110, 85.71429, 170, 103.5714, 200, 85.71429, 260, 139.2857,
             290, 157.1429
         ],
                  strokeColor=Color(0, 0, 1, 1),
                  strokeWidth=1,
                  strokeLineCap=0,
                  strokeLineJoin=1,
                  strokeMiterLimit=0,
                  strokeDashArray=None,
                  strokeOpacity=None))
     self.add(
         Circle(110,
                67.85714,
                2.5,
                fillColor=Color(1, 0, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(170,
                85.71429,
                2.5,
                fillColor=Color(1, 0, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(200,
                67.85714,
                2.5,
                fillColor=Color(1, 0, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(230,
                103.5714,
                2.5,
                fillColor=Color(1, 0, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(290,
                139.2857,
                2.5,
                fillColor=Color(1, 0, 0, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 110, 77.85714)
     v0.add(
         String(-3.75,
                -4,
                ' 1',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 170, 95.71429)
     v0.add(
         String(-3.75,
                -4,
                ' 2',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 200, 77.85714)
     v0.add(
         String(-3.75,
                -4,
                ' 1',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 230, 113.5714)
     v0.add(
         String(-3.75,
                -4,
                ' 3',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 290, 149.2857)
     v0.add(
         String(-3.75,
                -4,
                ' 5',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     self.add(
         Circle(110,
                85.71429,
                2.5,
                fillColor=Color(0, 0, 1, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(170,
                103.5714,
                2.5,
                fillColor=Color(0, 0, 1, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(200,
                85.71429,
                2.5,
                fillColor=Color(0, 0, 1, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(260,
                139.2857,
                2.5,
                fillColor=Color(0, 0, 1, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     self.add(
         Circle(290,
                157.1429,
                2.5,
                fillColor=Color(0, 0, 1, 1),
                fillOpacity=None,
                strokeColor=Color(0, 0, 0, 1),
                strokeWidth=.1,
                strokeLineCap=0,
                strokeLineJoin=0,
                strokeMiterLimit=0,
                strokeDashArray=None,
                strokeOpacity=None))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 110, 95.71429)
     v0.add(
         String(-3.75,
                -4,
                ' 2',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 170, 113.5714)
     v0.add(
         String(-3.75,
                -4,
                ' 3',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 200, 95.71429)
     v0.add(
         String(-3.75,
                -4,
                ' 2',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 260, 149.2857)
     v0.add(
         String(-3.75,
                -4,
                ' 5',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
     v0 = self._nn(Group())
     v0.transform = (1, 0, 0, 1, 290, 167.1429)
     v0.add(
         String(-3.75,
                -4,
                ' 6',
                textAnchor='start',
                fontName='Times-Roman',
                fontSize=10,
                fillColor=Color(0, 0, 0, 1)))
Example #28
0
    def _Flag_Brazil(self):
        s = _size  # abbreviate as we will use this a lot
        g = Group()

        m = s / 14
        self._width = w = (m * 20)

        def addStar(x, y, size, g=g, w=w, s=s, m=m):
            st = Star()
            st.fillColor = colors.mintcream
            st.size = size * m
            st.x = (w / 2) + (x * (0.35 * m))
            st.y = (s / 2) + (y * (0.35 * m))
            g.add(st)

        g.add(
            Rect(0,
                 0,
                 w,
                 s,
                 fillColor=colors.green,
                 strokeColor=None,
                 strokeWidth=0))
        g.add(
            Polygon(points=[
                1.7 * m, (s / 2), (w / 2), s - (1.7 * m), w - (1.7 * m),
                (s / 2), (w / 2), 1.7 * m
            ],
                    fillColor=colors.yellow,
                    strokeColor=None,
                    strokeWidth=0))
        g.add(
            Circle(cx=w / 2,
                   cy=s / 2,
                   r=3.5 * m,
                   fillColor=colors.blue,
                   strokeColor=None,
                   strokeWidth=0))
        g.add(
            Wedge((w / 2) - (2 * m),
                  0,
                  8.5 * m,
                  50,
                  98.1,
                  8.5 * m,
                  fillColor=colors.mintcream,
                  strokeColor=None,
                  strokeWidth=0))
        g.add(
            Wedge((w / 2), (s / 2),
                  3.501 * m,
                  156,
                  352,
                  3.501 * m,
                  fillColor=colors.mintcream,
                  strokeColor=None,
                  strokeWidth=0))
        g.add(
            Wedge((w / 2) - (2 * m),
                  0,
                  8 * m,
                  48.1,
                  100,
                  8 * m,
                  fillColor=colors.blue,
                  strokeColor=None,
                  strokeWidth=0))
        g.add(
            Rect(0,
                 0,
                 w, (s / 4) + 1.7 * m,
                 fillColor=colors.green,
                 strokeColor=None,
                 strokeWidth=0))
        g.add(
            Polygon(points=[
                1.7 * m, (s / 2), (w / 2), s / 2 - 2 * m, w - (1.7 * m),
                (s / 2), (w / 2), 1.7 * m
            ],
                    fillColor=colors.yellow,
                    strokeColor=None,
                    strokeWidth=0))
        g.add(
            Wedge(w / 2,
                  s / 2,
                  3.502 * m,
                  166,
                  342.1,
                  3.502 * m,
                  fillColor=colors.blue,
                  strokeColor=None,
                  strokeWidth=0))

        addStar(3.2, 3.5, 0.3)
        addStar(-8.5, 1.5, 0.3)
        addStar(-7.5, -3, 0.3)
        addStar(-4, -5.5, 0.3)
        addStar(0, -4.5, 0.3)
        addStar(7, -3.5, 0.3)
        addStar(-3.5, -0.5, 0.25)
        addStar(0, -1.5, 0.25)
        addStar(1, -2.5, 0.25)
        addStar(3, -7, 0.25)
        addStar(5, -6.5, 0.25)
        addStar(6.5, -5, 0.25)
        addStar(7, -4.5, 0.25)
        addStar(-5.5, -3.2, 0.25)
        addStar(-6, -4.2, 0.25)
        addStar(-1, -2.75, 0.2)
        addStar(2, -5.5, 0.2)
        addStar(4, -5.5, 0.2)
        addStar(5, -7.5, 0.2)
        addStar(5, -5.5, 0.2)
        addStar(6, -5.5, 0.2)
        addStar(-8.8, -3.2, 0.2)
        addStar(2.5, 0.5, 0.2)
        addStar(-0.2, -3.2, 0.14)
        addStar(-7.2, -2, 0.14)
        addStar(0, -8, 0.1)

        sTmp = "ORDEM E PROGRESSO"
        nTmp = len(sTmp)
        delta = 0.850848010347 / nTmp
        radius = 7.9 * m
        centerx = (w / 2) - (2 * m)
        centery = 0
        for i in range(nTmp):
            rad = 2 * pi - i * delta - 4.60766922527
            x = cos(rad) * radius + centerx
            y = sin(rad) * radius + centery
            if i == 6:
                z = 0.35 * m
            else:
                z = 0.45 * m
            g2 = Group(
                String(x,
                       y,
                       sTmp[i],
                       fontName='Helvetica-Bold',
                       fontSize=z,
                       strokeColor=None,
                       fillColor=colors.green))
            g2.rotate(rad)
            g.add(g2)
        return g
Example #29
0
    def render(self, node, parent=None):
        if parent is None:
            parent = self.mainGroup

        # ignore if display = none
        display = node.get('display')
        if display == "none":
            return

        if node.tag == self.SVG_ROOT:
            self.level += 1

            if not self.drawing is None:
                raise SVGError('drawing already created!')

            self.root = node

            # default styles
            style = {
                'color': 'none',
                'fill': 'none',
                'stroke': 'none',
                'font-family': 'Helvetica',
                'font-size': '12'
            }

            self.styles[self.level] = style

            # iterate children
            for child in node:
                self.render(child, self.mainGroup)

            # create drawing
            width = node.get('width', '100%')
            height = node.get('height', '100%')

            if node.get("viewBox"):
                try:
                    minx, miny, width, height = node.get("viewBox").split()
                except ValueError:
                    raise SVGError("viewBox values not valid")

            if width.endswith('%') and height.endswith('%'):
                # handle relative size
                wscale = parseLength(width) / 100.
                hscale = parseLength(height) / 100.

                xL, yL, xH, yH = self.mainGroup.getBounds()
                self.drawing = Drawing(xH * wscale + xL, yH * hscale + yL)

            else:
                self.drawing = Drawing(parseLength(width), parseLength(height))

            height = self.drawing.height
            self.mainGroup.scale(1, -1)
            self.mainGroup.translate(0, -height)
            self.drawing.add(self.mainGroup)

            self.level -= 1

            return self.drawing

        elif node.tag in (self.SVG_G, self.SVG_A):
            self.level += 1

            # set this levels style
            style = self.styles[self.level - 1].copy()
            style = self.nodeStyle(node, style)
            self.styles[self.level] = style

            group = Group()

            # iterate children
            for child in node:
                self.render(child, group)

            parent.add(group)

            transforms = node.get('transform')
            if transforms:
                for op in parseTransform.iterparse(transforms):
                    self.applyTransformOnGroup(group, op)

            self.level -= 1

        elif node.tag == self.SVG_USE:
            self.level += 1

            # set this levels style
            style = self.styles[self.level - 1].copy()
            style = self.nodeStyle(node, style)
            self.styles[self.level] = style

            group = Group()

            # link id
            link_id = node.get(self.LINK).lstrip('#')

            # find linked node in defs or symbol section
            target = None
            for defs in self.root.getiterator(self.SVG_DEFS):
                for element in defs:
                    if element.get('id') == link_id:
                        target = element
                        break

            if target is None:
                for defs in self.root.getiterator(self.SVG_SYMBOL):
                    for element in defs:
                        if element.get('id') == link_id:
                            target = element
                            break

                if target is None:
                    msg = "Could not find use node '%s'" % link_id
                    raise SVGError(msg)

            self.render(target, group)

            parent.add(group)

            # apply transform
            transforms = node.get('transform')
            if transforms:
                for op in parseTransform.iterparse(transforms):
                    self.applyTransformOnGroup(group, op)

            # apply 'x' and 'y' attribute as translation of defs object
            if node.get('x') or node.get('y'):
                dx = parseLength(node.get('x', '0'))
                dy = parseLength(node.get('y', '0'))

                self.applyTransformOnGroup(group, ('translate', (dx, dy)))

            self.level -= 1

        elif node.tag == self.SVG_LINE:
            # get coordinates
            x1 = parseLength(node.get('x1', '0'))
            y1 = parseLength(node.get('y1', '0'))
            x2 = parseLength(node.get('x2', '0'))
            y2 = parseLength(node.get('y2', '0'))

            shape = Line(x1, y1, x2, y2)
            self.addShape(parent, node, shape)

        elif node.tag == self.SVG_RECT:
            # get coordinates
            x = parseLength(node.get('x', '0'))
            y = parseLength(node.get('y', '0'))
            width = parseLength(node.get('width'))
            height = parseLength(node.get('height'))

            rx = parseLength(node.get('rx', '0'))
            ry = parseLength(node.get('ry', '0'))

            shape = Rect(x, y, width, height, rx=rx, ry=ry)
            self.addShape(parent, node, shape)

        elif node.tag == self.SVG_CIRCLE:
            cx = parseLength(node.get('cx', '0'))
            cy = parseLength(node.get('cy', '0'))
            r = parseLength(node.get('r'))

            if r > 0.:
                shape = Circle(cx, cy, r)
                self.addShape(parent, node, shape)

        elif node.tag == self.SVG_ELLIPSE:
            cx = parseLength(node.get('cx', '0'))
            cy = parseLength(node.get('cy', '0'))
            rx = parseLength(node.get('rx'))
            ry = parseLength(node.get('ry'))

            if rx > 0. and ry > 0.:
                shape = Ellipse(cx, cy, rx, ry)
                self.addShape(parent, node, shape)

        elif node.tag == self.SVG_POLYLINE:
            # convert points
            points = node.get('points').strip()
            if len(points) == 0:
                return

            points = list(map(parseLength, re.split('[ ,]+', points)))

            # Need to use two shapes, because standard RLG polylines
            # do not support filling...
            group = Group()
            shape = Polygon(points)
            self.applyStyleToShape(shape, node)
            shape.strokeColor = None
            group.add(shape)

            shape = PolyLine(points)
            self.applyStyleToShape(shape, node)
            group.add(shape)

            self.addShape(parent, node, group)

        elif node.tag == self.SVG_POLYGON:
            # convert points
            points = node.get('points').strip()
            if len(points) == 0:
                return

            points = list(map(parseLength, re.split('[ ,]+', points)))

            shape = Polygon(points)
            self.addShape(parent, node, shape)

        elif node.tag == self.SVG_IMAGE:
            x = parseLength(node.get('x', '0'))
            y = parseLength(node.get('y', '0'))
            width = parseLength(node.get('width', '0'))
            height = parseLength(node.get('height', '0'))

            # link id
            link_id = node.get(self.LINK)

            filename = os.path.join(os.path.dirname(self.filename), link_id)
            shape = Image(x, y, width, height, filename)

            self.addShape(parent, node, shape)

        elif node.tag == self.SVG_TEXT:
            # Todo:
            # - rotation not handled
            # - baseshift not handled
            # - embedded span node not handled
            #
            def parsePos(node, subnode, name, default='0'):
                values = subnode.get(name)
                if values is None:
                    if node is not None:
                        values = node.get(name, default)
                    else:
                        values = default

                return list(map(parseLength, values.split()))

            def getPos(values, i, default=None):
                if i >= len(values):
                    if default is None:
                        return values[-1]
                    else:
                        return default
                else:
                    return values[i]

            def handleText(node, subnode, text):
                # get position variables
                xs = parsePos(node, subnode, 'x')
                dxs = parsePos(node, subnode, 'dx')
                ys = parsePos(node, subnode, 'y')
                dys = parsePos(node, subnode, 'dy')

                if sum(map(len, (xs, ys, dxs, dys))) == 4:
                    # single value
                    shape = String(xs[0] + dxs[0], -ys[0] - dys[0], text)
                    self.applyStyleToShape(shape, subnode)
                    group.add(shape)

                else:
                    # multiple values
                    for i, c in enumerate(text):
                        x = getPos(xs, i)
                        dx = getPos(dxs, i, 0)
                        y = getPos(ys, i)
                        dy = getPos(dys, i, 0)

                        shape = String(x + dx, -y - dy, c)
                        self.applyStyleToShape(shape, subnode)
                        group.add(shape)

            if node.text and node.text.strip():
                group = Group()

                handleText(None, node, node.text.strip())

                group.scale(1, -1)

                self.addShape(parent, node, group)

            if len(node) > 0:
                group = Group()

                self.level += 1

                # set this levels style
                style = self.styles[self.level - 1].copy()
                nodestylestyle = self.nodeStyle(node, style)
                self.styles[self.level] = nodestylestyle

                for subnode in node:
                    if subnode.tag == self.SVG_TSPAN:
                        handleText(node, subnode, subnode.text.strip())

                self.level -= 1

                group.scale(1, -1)
                self.addShape(parent, node, group)

        elif node.tag == self.SVG_PATH:

            def convertQuadratic(Q0, Q1, Q2):
                C1 = (Q0[0] + 2. / 3 * (Q1[0] - Q0[0]),
                      Q0[1] + 2. / 3 * (Q1[1] - Q0[1]))
                C2 = (C1[0] + 1. / 3 * (Q2[0] - Q0[0]),
                      C1[1] + 1. / 3 * (Q2[1] - Q0[1]))
                C3 = Q2
                return C1[0], C1[1], C2[0], C2[1], C3[0], C3[1]

            def prevCtrl(lastOp, lastArgs, currentX, currentY):
                # fetch last controll point
                if lastOp in 'CScsQqTt':
                    x, y = lastArgs[-2]

                    # mirror about current point
                    return currentX + (currentX - x), currentY + (currentY - y)

                else:
                    # defaults to current point
                    return currentX, currentY

            # store sub paths in 'paths' list
            shape = Path()

            # keep track of current point and path start point
            startX, startY = 0., 0.
            currentX, currentY = 0., 0.

            # keep track of last operation
            lastOp = None
            lastArgs = None

            # avoid empty path data
            data = node.get('d')
            if data is None or len(data) == 0:
                return

            for op, args in parsePath.iterparse(data):
                if op == 'z' or op == 'Z':
                    # close path or subpath
                    shape.closePath()

                    # next sub path starts at begining of current path
                    currentX, currentY = startX, startY

                elif op == 'M':
                    # moveto absolute
                    if lastOp is not None and lastOp not in ('z', 'Z'):
                        # close sub path
                        shape.closePath()

                    x, y = args[0]
                    shape.moveTo(x, y)

                    startX, startY = x, y

                    # multiple moveto arge result in line
                    for x, y in args[1:]:
                        shape.lineTo(x, y)

                    currentX, currentY = x, y

                elif op == 'm':
                    if lastOp is not None and lastOp not in ('z', 'Z'):
                        # close sub path
                        shape.closePath()

                    # moveto relative
                    rx, ry = args[0]
                    x, y = currentX + rx, currentY + ry
                    shape.moveTo(x, y)

                    startX, startY = x, y
                    currentX, currentY = x, y

                    # multiple moveto arge result in line
                    for rx, ry in args[1:]:
                        x, y = currentX + rx, currentY + ry
                        shape.lineTo(x, y)
                        currentX, currentY = x, y

                elif op == 'L':
                    # lineto absolute
                    for x, y in args:
                        shape.lineTo(x, y)

                    currentX, currentY = x, y

                elif op == 'l':
                    # lineto relative
                    for rx, ry in args:
                        x, y = currentX + rx, currentY + ry
                        shape.lineTo(x, y)
                        currentX, currentY = x, y

                elif op == 'V':
                    # vertical line absolute
                    for y in args:
                        shape.lineTo(currentX, y)

                    currentY = y

                elif op == 'v':
                    # vertical line relative
                    for ry in args:
                        y = currentY + ry
                        shape.lineTo(currentX, y)
                        currentY = y

                elif op == 'H':
                    # horisontal line absolute
                    for x in args:
                        shape.lineTo(x, currentY)
                    currentX = x

                elif op == 'h':
                    # horisontal line relative
                    for rx in args:
                        x = currentX + rx
                        shape.lineTo(x, currentY)
                    currentX = x

                elif op == 'C':
                    # cubic bezier absolute
                    for p1, p2, p3 in zip(*([iter(args)] * 3)):
                        shape.curveTo(*(p1 + p2 + p3))
                        currentX, currentY = p3

                elif op == 'c':
                    # cubic bezier relative
                    for pnts in zip(*([iter(args)] * 3)):
                        (x1, y1), (x2, y2), (x3, y3) = pnts
                        pnts = tuple(
                            (p[0] + currentX, p[1] + currentY) for p in pnts)
                        shape.curveTo(*(pnts[0] + pnts[1] + pnts[2]))
                        currentX, currentY = pnts[2]
                        lastOp = op
                        lastArgs = pnts
                    continue

                elif op == 'S':
                    # shorthand cubic bezier absolute
                    for p2, p3 in zip(*([iter(args)] * 2)):
                        x1, y1 = prevCtrl(lastOp, lastArgs, currentX, currentY)
                        x2, y2 = p2
                        x3, y3 = p3
                        shape.curveTo(x1, y1, x2, y2, x3, y3)
                        lastOp = op
                        lastArgs = (x2, y2), (x3, y3)
                        currentX, currentY = x3, y3
                    continue

                elif op == 's':
                    # shorthand cubic bezier relative
                    for p2, p3 in zip(*([iter(args)] * 2)):
                        x1, y1 = prevCtrl(lastOp, lastArgs, currentX, currentY)
                        x2, y2 = p2
                        x2, y2 = x2 + currentX, y2 + currentY
                        x3, y3 = p3
                        x3, y3 = x3 + currentX, y3 + currentY
                        shape.curveTo(x1, y1, x2, y2, x3, y3)
                        currentX, currentY = x3, y3
                        lastOp = op
                        lastArgs = (x1, y1), (x2, y2), (x3, y3)
                    continue

                elif op == 'Q':
                    # quadratic bezier absolute
                    for p2, p3 in zip(*([iter(args)] * 2)):
                        x1, y1 = currentX, currentY
                        x2, y2 = p2
                        x3, y3 = p3
                        ctrls = convertQuadratic((x1, y1), (x2, y2), (x3, y3))
                        shape.curveTo(*ctrls)
                        currentX, currentY = x3, y3
                    lastOp = op
                    lastArgs = (x2, y2), (x3, y3)
                    continue

                elif op == 'q':
                    # quadratic bezier relative
                    for p2, p3 in zip(*([iter(args)] * 2)):
                        x1, y1 = currentX, currentY
                        x2, y2 = p2
                        x2, y2 = x2 + currentX, y2 + currentY
                        x3, y3 = p3
                        x3, y3 = x3 + currentX, y3 + currentY
                        ctrls = convertQuadratic((x1, y1), (x2, y2), (x3, y3))
                        shape.curveTo(*ctrls)
                        currentX, currentY = x3, y3

                    lastOp = op
                    lastArgs = (x2, y2), (x3, y3)
                    continue

                elif op == 'T':
                    # shorthand quadratic bezier absolute
                    for i in range(len(args)):
                        x1, y1 = currentX, currentY
                        x2, y2 = prevCtrl(lastOp, lastArgs, currentX, currentY)
                        x3, y3 = args[i]
                        ctrls = convertQuadratic((x1, y1), (x2, y2), (x3, y3))
                        shape.curveTo(*ctrls)
                        currentX, currentY = x3, y3
                        lastOp = op
                        lastArgs = (x2, y2), (x3, y3)

                    continue

                elif op == 't':
                    # shorthand quadratic bezier relative
                    for i in range(len(args)):
                        x1, y1 = currentX, currentY
                        x2, y2 = prevCtrl(lastOp, lastArgs, currentX, currentY)
                        x3, y3 = args[i]
                        x3, y3 = x3 + currentX, y3 + currentY
                        ctrls = convertQuadratic((x1, y1), (x2, y2), (x3, y3))
                        shape.curveTo(*ctrls)
                        currentX, currentY = x3, y3
                        lastOp = op
                        lastArgs = (x2, y2), (x3, y3)

                    continue

                elif op == 'A' or op == 'a':
                    # elliptic arc missing
                    continue

                lastOp = op
                lastArgs = args

            # check if fill applies to path
            fill = None
            if node.get('fill'):
                # inline style
                fill = node.get('fill')
            else:
                # try local style
                if node.get('style'):
                    style = parseStyle.parse(node.get('style'))

                    if 'fill' in style:
                        fill = style['fill']

                # try global style
                if fill is None:
                    style = self.styles[self.level]

                    if 'fill' in style:
                        fill = style['fill']
                    else:
                        fill = 'none'

            # hack because RLG has no "semi-closed" paths...
            if lastOp == 'z' or lastOp == 'Z' or fill == 'none':
                self.addShape(parent, node, shape)

            else:
                group = Group()
                strokeshape = shape.copy()
                self.addShape(group, node, strokeshape, fill='none')
                shape.closePath()
                self.addShape(group, node, shape, stroke='none')
                self.addShape(parent, node, group)

        elif node.tag == self.SVG_TITLE or node.tag == self.SVG_DESC:
            # Skip non-graphics elements
            return
Example #30
0
    def draw(self):
        g = Group()

        #box
        g.add(
            Rect(self.x,
                 self.y,
                 len(self.xlabels) * self.gridDivWidth,
                 len(self.ylabels) * self.gridDivWidth,
                 strokeColor=self.gridColor,
                 strokeWidth=self.strokeWidth,
                 fillColor=None))

        #internal gridding
        for f in range(1, len(self.ylabels)):
            #horizontal
            g.add(
                Line(strokeColor=self.gridColor,
                     strokeWidth=self.strokeWidth,
                     x1=self.x,
                     y1=self.y + f * self.gridDivWidth,
                     x2=self.x + len(self.xlabels) * self.gridDivWidth,
                     y2=self.y + f * self.gridDivWidth))
        for f in range(1, len(self.xlabels)):
            #vertical
            g.add(
                Line(strokeColor=self.gridColor,
                     strokeWidth=self.strokeWidth,
                     x1=self.x + f * self.gridDivWidth,
                     y1=self.y,
                     x2=self.x + f * self.gridDivWidth,
                     y2=self.y + len(self.ylabels) * self.gridDivWidth))

        # draw the 'dot'
        g.add(
            Circle(strokeColor=self.gridColor,
                   strokeWidth=self.strokeWidth,
                   fillColor=self.dotColor,
                   cx=self.x + (self.dotXPosition * self.gridDivWidth),
                   cy=self.y + (self.dotYPosition * self.gridDivWidth),
                   r=self.dotDiameter / 2.0))

        #used for centering y-labels (below)
        ascent = getFont(self.labelFontName).face.ascent
        if ascent == 0:
            ascent = 0.718  # default (from helvetica)
        ascent = ascent * self.labelFontSize  # normalize

        #do y-labels
        if self.ylabels != None:
            for f in range(len(self.ylabels) - 1, -1, -1):
                if self.ylabels[f] != None:
                    g.add(
                        String(strokeColor=self.gridColor,
                               text=self.ylabels[f],
                               fontName=self.labelFontName,
                               fontSize=self.labelFontSize,
                               fillColor=_PCMYK_black,
                               x=self.x - self.labelOffset,
                               y=self.y + (f * self.gridDivWidth +
                                           (self.gridDivWidth - ascent) / 2.0),
                               textAnchor='end'))

        #do x-labels
        if self.xlabels != None:
            for f in range(0, len(self.xlabels)):
                if self.xlabels[f] != None:
                    l = Label()
                    l.x = self.x + (f * self.gridDivWidth
                                    ) + (self.gridDivWidth + ascent) / 2.0
                    l.y = self.y + (len(self.ylabels) *
                                    self.gridDivWidth) + self.labelOffset
                    l.angle = 90
                    l.textAnchor = 'start'
                    l.fontName = self.labelFontName
                    l.fontSize = self.labelFontSize
                    l.fillColor = _PCMYK_black
                    l.setText(self.xlabels[f])
                    l.boxAnchor = 'sw'
                    l.draw()
                    g.add(l)

        return g
Example #31
0
    def __init__(self, width=1000, height=400, *args, **kwargs):
        Drawing.__init__(self, width, height, *args, **kwargs)
        # background color
        self.background = Rect(0,
                               0,
                               self.width,
                               self.height,
                               strokeWidth=0,
                               fillColor=colors.lightgrey)
        # end here
        self.add(Circle(500, 200, 180), name='circle_perfect')
        self.add(Circle(500, 200, 145), name='circle_good')
        self.add(Circle(500, 200, 115), name='circle_medium')
        self.add(Circle(500, 200, 85), name='circle_bad')
        self.add(Circle(500, 200, 50), name='circle_awful')
        self.add(Circle(500, 200, 20), name='circle_center')
        self.add(SpiderChart(), name='background_chart')
        self.add(SpiderChart(), name='chart')

        # QR code
        qrw = QrCodeWidget('Well met')

        # QR size
        qrw.barHeight = 150
        qrw.barWidth = 150

        # QR position
        qrw.y = 100
        qrw.x = 10

        self.add(qrw)
        # end here

        # barcode
        barcode_group = Group()
        barcode = createBarcodeDrawing('EAN13',
                                       value='1234567890',
                                       width=200,
                                       height=100)

        barcode_group.add(barcode)
        barcode_group.shift(10, 10)  # barcode position
        self.add(barcode_group)
        # end here

        self.add(String(470, 386, 'Аналіз крові'), name='text0')
        self.add(String(605, 352, 'Антропометрія'), name='text1')
        self.add(String(670, 275, 'Постава'), name='text2')
        self.add(String(685, 170, 'Композиція тіла'), name='text3')
        self.add(String(645, 75, 'Електрокардіограмма'), name='text4')
        self.add(String(550, 10, 'Варіаційна пульсометрія'), name='text5')
        self.add(String(350, 10, 'Система дихання'), name='text6')
        self.add(String(220, 75, 'Кистьова динамометрія'), name='text7')
        self.add(String(225, 170, 'Основний обмін'), name='text8')
        self.add(String(160, 275, 'Карідореспіраторний профіль'), name='text9')
        self.add(String(330, 350, 'Психотест'), name='text10')

        # info
        self.add(String(840, 366, 'Чудово'), name='info_perfect')
        self.circle_perfect.fillColor = colors.Color(0, 0, 255, alpha=0.3)
        self.circle_perfect.strokeColor = colors.transparent
        self.info_perfect.fontName = 'HelveticaNeueC'
        self.info_perfect.fontSize = 12
        self.add(Rect(800, 356, 30, 30), name='rect_perfect')
        self.rect_perfect.fillColor = colors.Color(0, 0, 255, alpha=0.3)
        self.rect_perfect.strokeColor = colors.transparent

        self.add(String(840, 326, 'Добре'), name='info_good')
        self.circle_good.fillColor = colors.Color(0, 255, 0, alpha=0.5)
        self.circle_good.strokeColor = colors.transparent
        self.info_good.fontName = 'HelveticaNeueC'
        self.info_good.fontSize = 12
        self.add(Rect(800, 316, 30, 30), name='rect_good')
        self.rect_good.fillColor = colors.Color(0, 255, 0, alpha=0.5)
        self.rect_good.strokeColor = colors.transparent

        self.add(String(840, 286, 'Задовільно'), name='info_medium')
        self.circle_medium.fillColor = colors.yellow
        self.circle_medium.strokeColor = colors.transparent
        self.info_medium.fontName = 'HelveticaNeueC'
        self.info_medium.fontSize = 12
        self.add(Rect(800, 276, 30, 30), name='rect_medium')
        self.rect_medium.fillColor = colors.yellow
        self.rect_medium.strokeColor = colors.transparent

        self.add(String(840, 246, 'Погано'), name='info_bad')
        self.circle_bad.fillColor = colors.orange
        self.circle_bad.strokeColor = colors.transparent
        self.info_bad.fontName = 'HelveticaNeueC'
        self.info_bad.fontSize = 12
        self.add(Rect(800, 236, 30, 30), name='rect_bad')
        self.rect_bad.fillColor = colors.orange
        self.rect_bad.strokeColor = colors.transparent

        self.add(String(840, 206, 'Дуже погано'), name='info_awful')
        self.circle_awful.fillColor = colors.red
        self.circle_awful.strokeColor = colors.transparent
        self.info_awful.fontName = 'HelveticaNeueC'
        self.info_awful.fontSize = 12
        self.add(Rect(800, 196, 30, 30), name='rect_awful')
        self.rect_awful.fillColor = colors.red
        self.rect_awful.strokeColor = colors.transparent

        # end here

        self.chart.x = 20
        self.chart.y = 40
        self.chart.width = self.width - 40
        self.chart.height = self.height - 80

        self.background_chart.x = 10
        self.background_chart.y = 20
        self.background_chart.width = self.width - 20
        self.background_chart.height = self.height - 40

        # ruin has com to my code TODO rework this garbage
        self.text0.fontName = 'HelveticaNeueC'
        self.text0.fontSize = 12
        self.text1.fontName = 'HelveticaNeueC'
        self.text1.fontSize = 12
        self.text2.fontName = 'HelveticaNeueC'
        self.text2.fontSize = 12
        self.text3.fontName = 'HelveticaNeueC'
        self.text3.fontSize = 12
        self.text4.fontName = 'HelveticaNeueC'
        self.text4.fontSize = 12
        self.text5.fontName = 'HelveticaNeueC'
        self.text5.fontSize = 12
        self.text6.fontName = 'HelveticaNeueC'
        self.text6.fontSize = 12
        self.text7.fontName = 'HelveticaNeueC'
        self.text7.fontSize = 12
        self.text8.fontName = 'HelveticaNeueC'
        self.text8.fontSize = 12
        self.text9.fontName = 'HelveticaNeueC'
        self.text9.fontSize = 12
        self.text10.fontName = 'HelveticaNeueC'
        self.text10.fontSize = 12
        # end here aaaaaaaaaaaaaaaaaa

        self.chart.labels = [
            ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '
        ]
        self.background_chart.labels = [
            ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '
        ]

        self.chart.data = [
            [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],  # style
            [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],  # style
            [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],  # style
            [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],  # style
            [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # style
            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],  # values
        ]

        self.background_chart.data = [
            [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5],  # style
            [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],  # style
            [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3],  # style
            [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],  # style
            [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],  # style
        ]

        # style
        self.chart.strands.strokeColor = colors.transparent
        self.background_chart.strands.strokeColor = colors.transparent
        self.background_chart.spokes.strokeColor = colors.lightgrey
        # self.chart.strands[1].strokeWidth = 15
        # self.chart.strands[1].strokeColor = colors.lightgreen
        # self.chart.strands[2].strokeWidth = 15
        # self.chart.strands[2].strokeColor = colors.yellow
        # self.chart.strands[3].strokeWidth = 15
        # self.chart.strands[3].strokeColor = colors.orange
        # self.chart.strands[4].strokeWidth = 15
        # self.chart.strands[4].strokeColor = colors.red

        # self.background_chart.strands[0].fillColor = colors.Color(0, 0, 255, alpha=0.3)
        # self.background_chart.strands[1].fillColor = colors.Color(0, 255, 0, alpha=0.5)
        # self.background_chart.strands[2].fillColor = colors.yellow
        # self.background_chart.strands[3].fillColor = colors.orange
        # self.background_chart.strands[4].fillColor = colors.red

        # self.chart.strands[0].strokeColor = colors.blue
        # self.chart.strands[0].strokeDashArray = (4, 4)
        # self.chart.strands[0].symbol = makeMarker("Circle")
        # self.chart.strands[0].strokeWidth = 0.5
        # self.chart.strands[0].symbol.fillColor = colors.black

        #end here

        self.chart.strandLabels.format = 'values'

        # main graph style
        self.chart.strands[5].strokeColor = colors.darkblue
        self.chart.spokes.strokeColor = colors.transparent

        self.chart.strands[5].symbol = makeMarker('FilledCircle', size=11)
        # self.chart.strandLabels.dR = -20
        self.chart.strands[5].symbol.fillColor = colors.white
        self.chart.strands[5].strokeWidth = 2
Example #32
0
	def __init__(self,width=400,height=200,*args,**kw):
		Drawing.__init__(self,width,height,*args,**kw)
		self.transform = (1,0,0,1,0,0)
		self.add(Rect(50,50,300,125,rx=0,ry=0,fillColor=None,fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[68.75,77.08333,106.25,60.41667,143.75,91.66667,181.25,95.83333,218.75,127.0833,256.25,143.75,293.75,89.58333,331.25,58.33333],strokeColor=Color(1,0,0,1),strokeWidth=2,strokeLineCap=0,strokeLineJoin=1,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[68.75,60.41667,106.25,91.66667,143.75,145.8333,181.25,129.1667,218.75,97.91667,256.25,93.75,293.75,62.5,331.25,79.16667],strokeColor=Color(0,.501961,0,1),strokeWidth=4,strokeLineCap=0,strokeLineJoin=1,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,68.75,87.08333)
		v0.add(String(-5,-4,'13',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,106.25,70.41667)
		v0.add(String(-3.75,-4,' 5',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,143.75,101.6667)
		v0.add(String(-5,-4,'20',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,181.25,105.8333)
		v0.add(String(-5,-4,'22',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,218.75,137.0833)
		v0.add(String(-5,-4,'37',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,256.25,153.75)
		v0.add(String(-5,-4,'45',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,293.75,99.58333)
		v0.add(String(-5,-4,'19',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,331.25,68.33333)
		v0.add(String(-3.75,-4,' 4',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		self.add(Circle(68.75,60.41667,5,fillColor=None,fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(68.75,60.41667,4.8,fillColor=Color(1,.270588,0,1),fillOpacity=None,strokeColor=None,strokeWidth=0,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Rect(64.75,59.41667,8,2,rx=0,ry=0,fillColor=Color(.972549,.972549,1,1),fillOpacity=None,strokeColor=Color(.972549,.972549,1,1),strokeWidth=0,strokeLineCap=1,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(106.25,91.66667,5,fillColor=None,fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(106.25,91.66667,4.8,fillColor=Color(1,.270588,0,1),fillOpacity=None,strokeColor=None,strokeWidth=0,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Rect(102.25,90.66667,8,2,rx=0,ry=0,fillColor=Color(.972549,.972549,1,1),fillOpacity=None,strokeColor=Color(.972549,.972549,1,1),strokeWidth=0,strokeLineCap=1,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(143.75,145.8333,5,fillColor=None,fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(143.75,145.8333,4.8,fillColor=Color(1,.270588,0,1),fillOpacity=None,strokeColor=None,strokeWidth=0,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Rect(139.75,144.8333,8,2,rx=0,ry=0,fillColor=Color(.972549,.972549,1,1),fillOpacity=None,strokeColor=Color(.972549,.972549,1,1),strokeWidth=0,strokeLineCap=1,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(181.25,129.1667,5,fillColor=None,fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(181.25,129.1667,4.8,fillColor=Color(1,.270588,0,1),fillOpacity=None,strokeColor=None,strokeWidth=0,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Rect(177.25,128.1667,8,2,rx=0,ry=0,fillColor=Color(.972549,.972549,1,1),fillOpacity=None,strokeColor=Color(.972549,.972549,1,1),strokeWidth=0,strokeLineCap=1,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(218.75,97.91667,5,fillColor=None,fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(218.75,97.91667,4.8,fillColor=Color(1,.270588,0,1),fillOpacity=None,strokeColor=None,strokeWidth=0,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Rect(214.75,96.91667,8,2,rx=0,ry=0,fillColor=Color(.972549,.972549,1,1),fillOpacity=None,strokeColor=Color(.972549,.972549,1,1),strokeWidth=0,strokeLineCap=1,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(256.25,93.75,5,fillColor=None,fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(256.25,93.75,4.8,fillColor=Color(1,.270588,0,1),fillOpacity=None,strokeColor=None,strokeWidth=0,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Rect(252.25,92.75,8,2,rx=0,ry=0,fillColor=Color(.972549,.972549,1,1),fillOpacity=None,strokeColor=Color(.972549,.972549,1,1),strokeWidth=0,strokeLineCap=1,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(293.75,62.5,5,fillColor=None,fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(293.75,62.5,4.8,fillColor=Color(1,.270588,0,1),fillOpacity=None,strokeColor=None,strokeWidth=0,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Rect(289.75,61.5,8,2,rx=0,ry=0,fillColor=Color(.972549,.972549,1,1),fillOpacity=None,strokeColor=Color(.972549,.972549,1,1),strokeWidth=0,strokeLineCap=1,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(331.25,79.16667,5,fillColor=None,fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Circle(331.25,79.16667,4.8,fillColor=Color(1,.270588,0,1),fillOpacity=None,strokeColor=None,strokeWidth=0,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Rect(327.25,78.16667,8,2,rx=0,ry=0,fillColor=Color(.972549,.972549,1,1),fillOpacity=None,strokeColor=Color(.972549,.972549,1,1),strokeWidth=0,strokeLineCap=1,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,68.75,70.41667)
		v0.add(String(-3.75,-4,' 5',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,106.25,101.6667)
		v0.add(String(-5,-4,'20',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,143.75,155.8333)
		v0.add(String(-5,-4,'46',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,181.25,139.1667)
		v0.add(String(-5,-4,'38',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,218.75,107.9167)
		v0.add(String(-5,-4,'23',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,256.25,103.75)
		v0.add(String(-5,-4,'21',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,293.75,72.5)
		v0.add(String(-3.75,-4,' 6',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,331.25,89.16667)
		v0.add(String(-5,-4,'14',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		self.add(Circle(68.75,77.08333,2.5,fillColor=Color(1,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(67.91667,77.91667,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(69.58333,77.91667,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[67.18385,76.5133,67.19403,76.48605,67.20469,76.45899,67.21583,76.43211,67.22742,76.40544,67.23949,76.37897,67.25201,76.35271,67.26499,76.32668,67.27842,76.30088,67.2923,76.27532,67.30662,76.25,67.32139,76.22494,67.33659,76.20013,67.35222,76.1756,67.36827,76.15135,67.38475,76.12737,67.40164,76.10369,67.41894,76.08031,67.43665,76.05723,67.45476,76.03447,67.47326,76.01202,67.49215,75.9899,67.51143,75.96812,67.53108,75.94667,67.5511,75.92557,67.57149,75.90482,67.59224,75.88443,67.61334,75.86441,67.63478,75.84476,67.65657,75.82548,67.67869,75.80659,67.70113,75.78809,67.7239,75.76998,67.74697,75.75227,67.77036,75.73497,67.79404,75.71808,67.81801,75.7016,67.84227,75.68555,67.8668,75.66992,67.8916,75.65472,67.91667,75.63996,67.94198,75.62563,67.96755,75.61175,67.99335,75.59832,68.01938,75.58534,68.04564,75.57282,68.07211,75.56076,68.09878,75.54916,68.12566,75.53803,68.15272,75.52737,68.17997,75.51718,68.20739,75.50747,68.23497,75.49824,68.26271,75.48949,68.2906,75.48123,68.31863,75.47346,68.3468,75.46617,68.37508,75.45938,68.40348,75.45309,68.43199,75.44729,68.46059,75.44199,68.48928,75.43719,68.51804,75.43289,68.54688,75.42909,68.57579,75.4258,68.60474,75.42301,68.63374,75.42073,68.66277,75.41895,68.69183,75.41768,68.72091,75.41692,68.75,75.41667,68.77909,75.41692,68.80817,75.41768,68.83723,75.41895,68.86626,75.42073,68.89526,75.42301,68.92421,75.4258,68.95312,75.42909,68.98196,75.43289,69.01072,75.43719,69.03941,75.44199,69.06801,75.44729,69.09652,75.45309,69.12492,75.45938,69.1532,75.46617,69.18137,75.47346,69.2094,75.48123,69.23729,75.48949,69.26503,75.49824,69.29261,75.50747,69.32003,75.51718,69.34728,75.52737,69.37434,75.53803,69.40122,75.54916,69.42789,75.56076,69.45436,75.57282,69.48062,75.58534,69.50665,75.59832,69.53245,75.61175,69.55802,75.62563,69.58333,75.63996,69.6084,75.65472,69.6332,75.66992,69.65773,75.68555,69.68199,75.7016,69.70596,75.71808,69.72964,75.73497,69.75303,75.75227,69.7761,75.76998,69.79887,75.78809,69.82131,75.80659,69.84343,75.82548,69.86522,75.84476,69.88666,75.86441,69.90776,75.88443,69.92851,75.90482,69.9489,75.92557,69.96892,75.94667,69.98857,75.96812,70.00785,75.9899,70.02674,76.01202,70.04524,76.03447,70.06335,76.05723,70.08106,76.08031,70.09836,76.10369,70.11525,76.12737,70.13173,76.15135,70.14778,76.1756,70.16341,76.20013,70.17861,76.22494,70.19338,76.25,70.2077,76.27532,70.22158,76.30088,70.23501,76.32668,70.24799,76.35271,70.26051,76.37897,70.27258,76.40544,70.28417,76.43211,70.29531,76.45899,70.30597,76.48605,70.31615,76.5133],strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None,fillColor=Color(0,0,0,1)))
		self.add(Circle(106.25,60.41667,2.5,fillColor=Color(1,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(105.4167,61.25,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(107.0833,61.25,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[104.6838,59.84663,104.694,59.81939,104.7047,59.79232,104.7158,59.76545,104.7274,59.73877,104.7395,59.7123,104.752,59.68605,104.765,59.66002,104.7784,59.63421,104.7923,59.60865,104.8066,59.58333,104.8214,59.55827,104.8366,59.53347,104.8522,59.50893,104.8683,59.48468,104.8847,59.46071,104.9016,59.43702,104.9189,59.41364,104.9366,59.39056,104.9548,59.3678,104.9733,59.34535,104.9922,59.32323,105.0114,59.30145,105.0311,59.28,105.0511,59.2589,105.0715,59.23816,105.0922,59.21777,105.1133,59.19774,105.1348,59.17809,105.1566,59.15882,105.1787,59.13993,105.2011,59.12142,105.2239,59.10332,105.247,59.08561,105.2704,59.06831,105.294,59.05141,105.318,59.03494,105.3423,59.01888,105.3668,59.00325,105.3916,58.98805,105.4167,58.97329,105.442,58.95897,105.4675,58.94509,105.4933,58.93166,105.5194,58.91868,105.5456,58.90615,105.5721,58.89409,105.5988,58.88249,105.6257,58.87136,105.6527,58.8607,105.68,58.85051,105.7074,58.8408,105.735,58.83157,105.7627,58.82283,105.7906,58.81456,105.8186,58.80679,105.8468,58.79951,105.8751,58.79272,105.9035,58.78642,105.932,58.78062,105.9606,58.77532,105.9893,58.77052,106.018,58.76622,106.0469,58.76242,106.0758,58.75913,106.1047,58.75634,106.1337,58.75406,106.1628,58.75228,106.1918,58.75102,106.2209,58.75025,106.25,58.75,106.2791,58.75025,106.3082,58.75102,106.3372,58.75228,106.3663,58.75406,106.3953,58.75634,106.4242,58.75913,106.4531,58.76242,106.482,58.76622,106.5107,58.77052,106.5394,58.77532,106.568,58.78062,106.5965,58.78642,106.6249,58.79272,106.6532,58.79951,106.6814,58.80679,106.7094,58.81456,106.7373,58.82283,106.765,58.83157,106.7926,58.8408,106.82,58.85051,106.8473,58.8607,106.8743,58.87136,106.9012,58.88249,106.9279,58.89409,106.9544,58.90615,106.9806,58.91868,107.0067,58.93166,107.0325,58.94509,107.058,58.95897,107.0833,58.97329,107.1084,58.98805,107.1332,59.00325,107.1577,59.01888,107.182,59.03494,107.206,59.05141,107.2296,59.06831,107.253,59.08561,107.2761,59.10332,107.2989,59.12142,107.3213,59.13993,107.3434,59.15882,107.3652,59.17809,107.3867,59.19774,107.4078,59.21777,107.4285,59.23816,107.4489,59.2589,107.4689,59.28,107.4886,59.30145,107.5078,59.32323,107.5267,59.34535,107.5452,59.3678,107.5634,59.39056,107.5811,59.41364,107.5984,59.43702,107.6153,59.46071,107.6317,59.48468,107.6478,59.50893,107.6634,59.53347,107.6786,59.55827,107.6934,59.58333,107.7077,59.60865,107.7216,59.63421,107.735,59.66002,107.748,59.68605,107.7605,59.7123,107.7726,59.73877,107.7842,59.76545,107.7953,59.79232,107.806,59.81939,107.8162,59.84663],strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None,fillColor=Color(0,0,0,1)))
		self.add(Circle(143.75,91.66667,2.5,fillColor=Color(1,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(142.9167,92.5,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(144.5833,92.5,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[142.1838,91.09663,142.194,91.06939,142.2047,91.04232,142.2158,91.01545,142.2274,90.98877,142.2395,90.9623,142.252,90.93605,142.265,90.91002,142.2784,90.88421,142.2923,90.85865,142.3066,90.83333,142.3214,90.80827,142.3366,90.78347,142.3522,90.75893,142.3683,90.73468,142.3847,90.71071,142.4016,90.68702,142.4189,90.66364,142.4366,90.64056,142.4548,90.6178,142.4733,90.59535,142.4922,90.57323,142.5114,90.55145,142.5311,90.53,142.5511,90.5089,142.5715,90.48816,142.5922,90.46777,142.6133,90.44774,142.6348,90.42809,142.6566,90.40882,142.6787,90.38993,142.7011,90.37142,142.7239,90.35332,142.747,90.33561,142.7704,90.31831,142.794,90.30141,142.818,90.28494,142.8423,90.26888,142.8668,90.25325,142.8916,90.23805,142.9167,90.22329,142.942,90.20897,142.9675,90.19509,142.9933,90.18166,143.0194,90.16868,143.0456,90.15615,143.0721,90.14409,143.0988,90.13249,143.1257,90.12136,143.1527,90.1107,143.18,90.10051,143.2074,90.0908,143.235,90.08157,143.2627,90.07283,143.2906,90.06456,143.3186,90.05679,143.3468,90.04951,143.3751,90.04272,143.4035,90.03642,143.432,90.03062,143.4606,90.02532,143.4893,90.02052,143.518,90.01622,143.5469,90.01242,143.5758,90.00913,143.6047,90.00634,143.6337,90.00406,143.6628,90.00228,143.6918,90.00102,143.7209,90.00025,143.75,90,143.7791,90.00025,143.8082,90.00102,143.8372,90.00228,143.8663,90.00406,143.8953,90.00634,143.9242,90.00913,143.9531,90.01242,143.982,90.01622,144.0107,90.02052,144.0394,90.02532,144.068,90.03062,144.0965,90.03642,144.1249,90.04272,144.1532,90.04951,144.1814,90.05679,144.2094,90.06456,144.2373,90.07283,144.265,90.08157,144.2926,90.0908,144.32,90.10051,144.3473,90.1107,144.3743,90.12136,144.4012,90.13249,144.4279,90.14409,144.4544,90.15615,144.4806,90.16868,144.5067,90.18166,144.5325,90.19509,144.558,90.20897,144.5833,90.22329,144.6084,90.23805,144.6332,90.25325,144.6577,90.26888,144.682,90.28494,144.706,90.30141,144.7296,90.31831,144.753,90.33561,144.7761,90.35332,144.7989,90.37142,144.8213,90.38993,144.8434,90.40882,144.8652,90.42809,144.8867,90.44774,144.9078,90.46777,144.9285,90.48816,144.9489,90.5089,144.9689,90.53,144.9886,90.55145,145.0078,90.57323,145.0267,90.59535,145.0452,90.6178,145.0634,90.64056,145.0811,90.66364,145.0984,90.68702,145.1153,90.71071,145.1317,90.73468,145.1478,90.75893,145.1634,90.78347,145.1786,90.80827,145.1934,90.83333,145.2077,90.85865,145.2216,90.88421,145.235,90.91002,145.248,90.93605,145.2605,90.9623,145.2726,90.98877,145.2842,91.01545,145.2953,91.04232,145.306,91.06939,145.3162,91.09663],strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None,fillColor=Color(0,0,0,1)))
		self.add(Circle(181.25,95.83333,2.5,fillColor=Color(1,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(180.4167,96.66667,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(182.0833,96.66667,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[179.6838,95.2633,179.694,95.23605,179.7047,95.20899,179.7158,95.18211,179.7274,95.15544,179.7395,95.12897,179.752,95.10271,179.765,95.07668,179.7784,95.05088,179.7923,95.02532,179.8066,95,179.8214,94.97494,179.8366,94.95013,179.8522,94.9256,179.8683,94.90135,179.8847,94.87737,179.9016,94.85369,179.9189,94.83031,179.9366,94.80723,179.9548,94.78447,179.9733,94.76202,179.9922,94.7399,180.0114,94.71812,180.0311,94.69667,180.0511,94.67557,180.0715,94.65482,180.0922,94.63443,180.1133,94.61441,180.1348,94.59476,180.1566,94.57548,180.1787,94.55659,180.2011,94.53809,180.2239,94.51998,180.247,94.50227,180.2704,94.48497,180.294,94.46808,180.318,94.4516,180.3423,94.43555,180.3668,94.41992,180.3916,94.40472,180.4167,94.38996,180.442,94.37563,180.4675,94.36175,180.4933,94.34832,180.5194,94.33534,180.5456,94.32282,180.5721,94.31076,180.5988,94.29916,180.6257,94.28803,180.6527,94.27737,180.68,94.26718,180.7074,94.25747,180.735,94.24824,180.7627,94.23949,180.7906,94.23123,180.8186,94.22346,180.8468,94.21617,180.8751,94.20938,180.9035,94.20309,180.932,94.19729,180.9606,94.19199,180.9893,94.18719,181.018,94.18289,181.0469,94.17909,181.0758,94.1758,181.1047,94.17301,181.1337,94.17073,181.1628,94.16895,181.1918,94.16768,181.2209,94.16692,181.25,94.16667,181.2791,94.16692,181.3082,94.16768,181.3372,94.16895,181.3663,94.17073,181.3953,94.17301,181.4242,94.1758,181.4531,94.17909,181.482,94.18289,181.5107,94.18719,181.5394,94.19199,181.568,94.19729,181.5965,94.20309,181.6249,94.20938,181.6532,94.21617,181.6814,94.22346,181.7094,94.23123,181.7373,94.23949,181.765,94.24824,181.7926,94.25747,181.82,94.26718,181.8473,94.27737,181.8743,94.28803,181.9012,94.29916,181.9279,94.31076,181.9544,94.32282,181.9806,94.33534,182.0067,94.34832,182.0325,94.36175,182.058,94.37563,182.0833,94.38996,182.1084,94.40472,182.1332,94.41992,182.1577,94.43555,182.182,94.4516,182.206,94.46808,182.2296,94.48497,182.253,94.50227,182.2761,94.51998,182.2989,94.53809,182.3213,94.55659,182.3434,94.57548,182.3652,94.59476,182.3867,94.61441,182.4078,94.63443,182.4285,94.65482,182.4489,94.67557,182.4689,94.69667,182.4886,94.71812,182.5078,94.7399,182.5267,94.76202,182.5452,94.78447,182.5634,94.80723,182.5811,94.83031,182.5984,94.85369,182.6153,94.87737,182.6317,94.90135,182.6478,94.9256,182.6634,94.95013,182.6786,94.97494,182.6934,95,182.7077,95.02532,182.7216,95.05088,182.735,95.07668,182.748,95.10271,182.7605,95.12897,182.7726,95.15544,182.7842,95.18211,182.7953,95.20899,182.806,95.23605,182.8162,95.2633],strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None,fillColor=Color(0,0,0,1)))
		self.add(Circle(218.75,127.0833,2.5,fillColor=Color(1,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(217.9167,127.9167,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(219.5833,127.9167,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[217.1838,126.5133,217.194,126.4861,217.2047,126.459,217.2158,126.4321,217.2274,126.4054,217.2395,126.379,217.252,126.3527,217.265,126.3267,217.2784,126.3009,217.2923,126.2753,217.3066,126.25,217.3214,126.2249,217.3366,126.2001,217.3522,126.1756,217.3683,126.1513,217.3847,126.1274,217.4016,126.1037,217.4189,126.0803,217.4366,126.0572,217.4548,126.0345,217.4733,126.012,217.4922,125.9899,217.5114,125.9681,217.5311,125.9467,217.5511,125.9256,217.5715,125.9048,217.5922,125.8844,217.6133,125.8644,217.6348,125.8448,217.6566,125.8255,217.6787,125.8066,217.7011,125.7881,217.7239,125.77,217.747,125.7523,217.7704,125.735,217.794,125.7181,217.818,125.7016,217.8423,125.6855,217.8668,125.6699,217.8916,125.6547,217.9167,125.64,217.942,125.6256,217.9675,125.6118,217.9933,125.5983,218.0194,125.5853,218.0456,125.5728,218.0721,125.5608,218.0988,125.5492,218.1257,125.538,218.1527,125.5274,218.18,125.5172,218.2074,125.5075,218.235,125.4982,218.2627,125.4895,218.2906,125.4812,218.3186,125.4735,218.3468,125.4662,218.3751,125.4594,218.4035,125.4531,218.432,125.4473,218.4606,125.442,218.4893,125.4372,218.518,125.4329,218.5469,125.4291,218.5758,125.4258,218.6047,125.423,218.6337,125.4207,218.6628,125.419,218.6918,125.4177,218.7209,125.4169,218.75,125.4167,218.7791,125.4169,218.8082,125.4177,218.8372,125.419,218.8663,125.4207,218.8953,125.423,218.9242,125.4258,218.9531,125.4291,218.982,125.4329,219.0107,125.4372,219.0394,125.442,219.068,125.4473,219.0965,125.4531,219.1249,125.4594,219.1532,125.4662,219.1814,125.4735,219.2094,125.4812,219.2373,125.4895,219.265,125.4982,219.2926,125.5075,219.32,125.5172,219.3473,125.5274,219.3743,125.538,219.4012,125.5492,219.4279,125.5608,219.4544,125.5728,219.4806,125.5853,219.5067,125.5983,219.5325,125.6118,219.558,125.6256,219.5833,125.64,219.6084,125.6547,219.6332,125.6699,219.6577,125.6855,219.682,125.7016,219.706,125.7181,219.7296,125.735,219.753,125.7523,219.7761,125.77,219.7989,125.7881,219.8213,125.8066,219.8434,125.8255,219.8652,125.8448,219.8867,125.8644,219.9078,125.8844,219.9285,125.9048,219.9489,125.9256,219.9689,125.9467,219.9886,125.9681,220.0078,125.9899,220.0267,126.012,220.0452,126.0345,220.0634,126.0572,220.0811,126.0803,220.0984,126.1037,220.1153,126.1274,220.1317,126.1513,220.1478,126.1756,220.1634,126.2001,220.1786,126.2249,220.1934,126.25,220.2077,126.2753,220.2216,126.3009,220.235,126.3267,220.248,126.3527,220.2605,126.379,220.2726,126.4054,220.2842,126.4321,220.2953,126.459,220.306,126.4861,220.3162,126.5133],strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None,fillColor=Color(0,0,0,1)))
		self.add(Circle(256.25,143.75,2.5,fillColor=Color(1,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(255.4167,144.5833,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(257.0833,144.5833,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[254.6838,143.18,254.694,143.1527,254.7047,143.1257,254.7158,143.0988,254.7274,143.0721,254.7395,143.0456,254.752,143.0194,254.765,142.9933,254.7784,142.9675,254.7923,142.942,254.8066,142.9167,254.8214,142.8916,254.8366,142.8668,254.8522,142.8423,254.8683,142.818,254.8847,142.794,254.9016,142.7704,254.9189,142.747,254.9366,142.7239,254.9548,142.7011,254.9733,142.6787,254.9922,142.6566,255.0114,142.6348,255.0311,142.6133,255.0511,142.5922,255.0715,142.5715,255.0922,142.5511,255.1133,142.5311,255.1348,142.5114,255.1566,142.4922,255.1787,142.4733,255.2011,142.4548,255.2239,142.4366,255.247,142.4189,255.2704,142.4016,255.294,142.3847,255.318,142.3683,255.3423,142.3522,255.3668,142.3366,255.3916,142.3214,255.4167,142.3066,255.442,142.2923,255.4675,142.2784,255.4933,142.265,255.5194,142.252,255.5456,142.2395,255.5721,142.2274,255.5988,142.2158,255.6257,142.2047,255.6527,142.194,255.68,142.1838,255.7074,142.1741,255.735,142.1649,255.7627,142.1562,255.7906,142.1479,255.8186,142.1401,255.8468,142.1328,255.8751,142.126,255.9035,142.1198,255.932,142.114,255.9606,142.1087,255.9893,142.1039,256.018,142.0996,256.0469,142.0958,256.0758,142.0925,256.1047,142.0897,256.1337,142.0874,256.1628,142.0856,256.1918,142.0843,256.2209,142.0836,256.25,142.0833,256.2791,142.0836,256.3082,142.0843,256.3372,142.0856,256.3663,142.0874,256.3953,142.0897,256.4242,142.0925,256.4531,142.0958,256.482,142.0996,256.5107,142.1039,256.5394,142.1087,256.568,142.114,256.5965,142.1198,256.6249,142.126,256.6532,142.1328,256.6814,142.1401,256.7094,142.1479,256.7373,142.1562,256.765,142.1649,256.7926,142.1741,256.82,142.1838,256.8473,142.194,256.8743,142.2047,256.9012,142.2158,256.9279,142.2274,256.9544,142.2395,256.9806,142.252,257.0067,142.265,257.0325,142.2784,257.058,142.2923,257.0833,142.3066,257.1084,142.3214,257.1332,142.3366,257.1577,142.3522,257.182,142.3683,257.206,142.3847,257.2296,142.4016,257.253,142.4189,257.2761,142.4366,257.2989,142.4548,257.3213,142.4733,257.3434,142.4922,257.3652,142.5114,257.3867,142.5311,257.4078,142.5511,257.4285,142.5715,257.4489,142.5922,257.4689,142.6133,257.4886,142.6348,257.5078,142.6566,257.5267,142.6787,257.5452,142.7011,257.5634,142.7239,257.5811,142.747,257.5984,142.7704,257.6153,142.794,257.6317,142.818,257.6478,142.8423,257.6634,142.8668,257.6786,142.8916,257.6934,142.9167,257.7077,142.942,257.7216,142.9675,257.735,142.9933,257.748,143.0194,257.7605,143.0456,257.7726,143.0721,257.7842,143.0988,257.7953,143.1257,257.806,143.1527,257.8162,143.18],strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None,fillColor=Color(0,0,0,1)))
		self.add(Circle(293.75,89.58333,2.5,fillColor=Color(1,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(292.9167,90.41667,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(294.5833,90.41667,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[292.1838,89.0133,292.194,88.98605,292.2047,88.95899,292.2158,88.93211,292.2274,88.90544,292.2395,88.87897,292.252,88.85271,292.265,88.82668,292.2784,88.80088,292.2923,88.77532,292.3066,88.75,292.3214,88.72494,292.3366,88.70013,292.3522,88.6756,292.3683,88.65135,292.3847,88.62737,292.4016,88.60369,292.4189,88.58031,292.4366,88.55723,292.4548,88.53447,292.4733,88.51202,292.4922,88.4899,292.5114,88.46812,292.5311,88.44667,292.5511,88.42557,292.5715,88.40482,292.5922,88.38443,292.6133,88.36441,292.6348,88.34476,292.6566,88.32548,292.6787,88.30659,292.7011,88.28809,292.7239,88.26998,292.747,88.25227,292.7704,88.23497,292.794,88.21808,292.818,88.2016,292.8423,88.18555,292.8668,88.16992,292.8916,88.15472,292.9167,88.13996,292.942,88.12563,292.9675,88.11175,292.9933,88.09832,293.0194,88.08534,293.0456,88.07282,293.0721,88.06076,293.0988,88.04916,293.1257,88.03803,293.1527,88.02737,293.18,88.01718,293.2074,88.00747,293.235,87.99824,293.2627,87.98949,293.2906,87.98123,293.3186,87.97346,293.3468,87.96617,293.3751,87.95938,293.4035,87.95309,293.432,87.94729,293.4606,87.94199,293.4893,87.93719,293.518,87.93289,293.5469,87.92909,293.5758,87.9258,293.6047,87.92301,293.6337,87.92073,293.6628,87.91895,293.6918,87.91768,293.7209,87.91692,293.75,87.91667,293.7791,87.91692,293.8082,87.91768,293.8372,87.91895,293.8663,87.92073,293.8953,87.92301,293.9242,87.9258,293.9531,87.92909,293.982,87.93289,294.0107,87.93719,294.0394,87.94199,294.068,87.94729,294.0965,87.95309,294.1249,87.95938,294.1532,87.96617,294.1814,87.97346,294.2094,87.98123,294.2373,87.98949,294.265,87.99824,294.2926,88.00747,294.32,88.01718,294.3473,88.02737,294.3743,88.03803,294.4012,88.04916,294.4279,88.06076,294.4544,88.07282,294.4806,88.08534,294.5067,88.09832,294.5325,88.11175,294.558,88.12563,294.5833,88.13996,294.6084,88.15472,294.6332,88.16992,294.6577,88.18555,294.682,88.2016,294.706,88.21808,294.7296,88.23497,294.753,88.25227,294.7761,88.26998,294.7989,88.28809,294.8213,88.30659,294.8434,88.32548,294.8652,88.34476,294.8867,88.36441,294.9078,88.38443,294.9285,88.40482,294.9489,88.42557,294.9689,88.44667,294.9886,88.46812,295.0078,88.4899,295.0267,88.51202,295.0452,88.53447,295.0634,88.55723,295.0811,88.58031,295.0984,88.60369,295.1153,88.62737,295.1317,88.65135,295.1478,88.6756,295.1634,88.70013,295.1786,88.72494,295.1934,88.75,295.2077,88.77532,295.2216,88.80088,295.235,88.82668,295.248,88.85271,295.2605,88.87897,295.2726,88.90544,295.2842,88.93211,295.2953,88.95899,295.306,88.98605,295.3162,89.0133],strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None,fillColor=Color(0,0,0,1)))
		self.add(Circle(331.25,58.33333,2.5,fillColor=Color(1,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(330.4167,59.16667,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Ellipse(332.0833,59.16667,.166667,.5,fillColor=Color(0,0,0,1),fillOpacity=None,strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(PolyLine(points=[329.6838,57.7633,329.694,57.73605,329.7047,57.70899,329.7158,57.68211,329.7274,57.65544,329.7395,57.62897,329.752,57.60271,329.765,57.57668,329.7784,57.55088,329.7923,57.52532,329.8066,57.5,329.8214,57.47494,329.8366,57.45013,329.8522,57.4256,329.8683,57.40135,329.8847,57.37737,329.9016,57.35369,329.9189,57.33031,329.9366,57.30723,329.9548,57.28447,329.9733,57.26202,329.9922,57.2399,330.0114,57.21812,330.0311,57.19667,330.0511,57.17557,330.0715,57.15482,330.0922,57.13443,330.1133,57.11441,330.1348,57.09476,330.1566,57.07548,330.1787,57.05659,330.2011,57.03809,330.2239,57.01998,330.247,57.00227,330.2704,56.98497,330.294,56.96808,330.318,56.9516,330.3423,56.93555,330.3668,56.91992,330.3916,56.90472,330.4167,56.88996,330.442,56.87563,330.4675,56.86175,330.4933,56.84832,330.5194,56.83534,330.5456,56.82282,330.5721,56.81076,330.5988,56.79916,330.6257,56.78803,330.6527,56.77737,330.68,56.76718,330.7074,56.75747,330.735,56.74824,330.7627,56.73949,330.7906,56.73123,330.8186,56.72346,330.8468,56.71617,330.8751,56.70938,330.9035,56.70309,330.932,56.69729,330.9606,56.69199,330.9893,56.68719,331.018,56.68289,331.0469,56.67909,331.0758,56.6758,331.1047,56.67301,331.1337,56.67073,331.1628,56.66895,331.1918,56.66768,331.2209,56.66692,331.25,56.66667,331.2791,56.66692,331.3082,56.66768,331.3372,56.66895,331.3663,56.67073,331.3953,56.67301,331.4242,56.6758,331.4531,56.67909,331.482,56.68289,331.5107,56.68719,331.5394,56.69199,331.568,56.69729,331.5965,56.70309,331.6249,56.70938,331.6532,56.71617,331.6814,56.72346,331.7094,56.73123,331.7373,56.73949,331.765,56.74824,331.7926,56.75747,331.82,56.76718,331.8473,56.77737,331.8743,56.78803,331.9012,56.79916,331.9279,56.81076,331.9544,56.82282,331.9806,56.83534,332.0067,56.84832,332.0325,56.86175,332.058,56.87563,332.0833,56.88996,332.1084,56.90472,332.1332,56.91992,332.1577,56.93555,332.182,56.9516,332.206,56.96808,332.2296,56.98497,332.253,57.00227,332.2761,57.01998,332.2989,57.03809,332.3213,57.05659,332.3434,57.07548,332.3652,57.09476,332.3867,57.11441,332.4078,57.13443,332.4285,57.15482,332.4489,57.17557,332.4689,57.19667,332.4886,57.21812,332.5078,57.2399,332.5267,57.26202,332.5452,57.28447,332.5634,57.30723,332.5811,57.33031,332.5984,57.35369,332.6153,57.37737,332.6317,57.40135,332.6478,57.4256,332.6634,57.45013,332.6786,57.47494,332.6934,57.5,332.7077,57.52532,332.7216,57.55088,332.735,57.57668,332.748,57.60271,332.7605,57.62897,332.7726,57.65544,332.7842,57.68211,332.7953,57.70899,332.806,57.73605,332.8162,57.7633],strokeColor=Color(0,0,0,1),strokeWidth=.131579,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None,fillColor=Color(0,0,0,1)))
		self.add(Line(50,50,350,50,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(50,50,50,45,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(87.5,50,87.5,45,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(125,50,125,45,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(162.5,50,162.5,45,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(200,50,200,45,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(237.5,50,237.5,45,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(275,50,275,45,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(312.5,50,312.5,45,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(350,50,350,45,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,68.75,45)
		v0.add(String(-6.665,-10,'Jan',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,106.25,45)
		v0.add(String(-7.5,-10,'Feb',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,143.75,45)
		v0.add(String(-8.33,-10,'Mar',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,181.25,45)
		v0.add(String(-7.775,-10,'Apr',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,218.75,45)
		v0.add(String(-9.165,-10,'May',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,256.25,45)
		v0.add(String(-6.945,-10,'Jun',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,293.75,45)
		v0.add(String(-5.835,-10,'Jul',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,331.25,45)
		v0.add(String(-8.61,-10,'Aug',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		self.add(Line(50,50,50,175,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=0,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(50,50,45,50,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(50,81.25,45,81.25,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(50,112.5,45,112.5,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(50,143.75,45,143.75,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		self.add(Line(50,175,45,175,strokeColor=Color(0,0,0,1),strokeWidth=1,strokeLineCap=0,strokeLineJoin=0,strokeMiterLimit=10,strokeDashArray=None,strokeOpacity=None))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,45,50)
		v0.add(String(-5,-4,'0',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,45,81.25)
		v0.add(String(-10,-4,'15',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,45,112.5)
		v0.add(String(-10,-4,'30',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,45,143.75)
		v0.add(String(-10,-4,'45',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))
		v0=self._nn(Group())
		v0.transform = (1,0,0,1,45,175)
		v0.add(String(-10,-4,'60',textAnchor='start',fontName='Times-Roman',fontSize=10,fillColor=Color(0,0,0,1)))