Example #1
0
    def paint_text(self, surface, parent_offset):
        parent_offset = Point(parent_offset)
        mid = len(self.line.current)/2
        midvalues = self.line.current[mid:mid+2]
        if len(midvalues) < 2:
            # not enough control points to figure out where to put text
            return
        midsrc, middst = midvalues
        angle = ((middst - midsrc).angle() % (2*math.pi))

        if 1*(2*math.pi)/4 < angle < 3*(2*math.pi)/4:
            angle += math.pi
            angle %= 2*math.pi

        t = self.rendered_text
        text_centering_vector = Point((-t.get_width()/2, -t.get_height()))
        text_centering_length = text_centering_vector.norm()
        text_centering_angle = text_centering_vector.angle()

        rt, coors = rotate_surface(t, angle)

        # coors[0] is where the original topleft is in the
        # rotated surface:
        topleft = coors[0]

        desired_topleft = midsrc + from_polar(text_centering_angle+angle,
                                              text_centering_length)
                
        pos = tuple(desired_topleft - topleft + parent_offset)
        draw.blit(surface, rt, map(int, pos))
Example #2
0
 def update_edges_lines(self, widget, node):
     center = Point(widget.final_rect().center)
     for edge in node.connections['in']:
         edge_w = self.edge_widgets[edge]
         edge_w.line.final[-1] = center.copy()
         edge_w.line.reset()
     for edge in node.connections['out']:
         edge_w = self.edge_widgets[edge]
         edge_w.line.final[0] = center.copy()
         edge_w.line.reset()