コード例 #1
0
ファイル: painter.py プロジェクト: uservinu/RAFCON
    def paint(self, context, selected):
        view = self.view
        item = self.item
        cr = context.cairo
        h = item.handles()
        side_length = get_side_length_of_resize_handle(self.view,
                                                       item.parent) / 1.5
        for h1, h2 in zip(h[1:-2], h[2:-1]):
            p1, p2 = h1.pos, h2.pos
            cx = (p1.x + p2.x) / 2
            cy = (p1.y + p2.y) / 2
            cr.save()
            cr.set_line_width(self.view.get_zoom_factor() / 4.)
            cr.identity_matrix()
            m = Matrix(*view.get_matrix_i2v(item))

            cr.set_antialias(ANTIALIAS_NONE)
            cr.translate(*m.transform_point(cx, cy))
            cr.rectangle(-side_length / 2., -side_length / 2., side_length,
                         side_length)
            cr.set_source_rgba(*get_col_rgba(self.fill_color))
            cr.fill_preserve()
            cr.set_source_rgba(*get_col_rgba(self.border_color))
            cr.set_line_width(1)
            cr.stroke()
            cr.restore()
コード例 #2
0
    def _check_for_resize_handle(self, handle, pos, distance):
        side_length_handle = get_side_length_of_resize_handle(
            self.view, self.item)

        v2i = self.view.get_matrix_v2i(self.item)
        side_length_handle = v2i.transform_distance(side_length_handle, 0)[0]
        x, y = v2i.transform_point(*pos)

        hx, hy = handle.pos
        max_center_distance = side_length_handle / 2 + distance
        if hx - max_center_distance <= x <= hx + max_center_distance and \
                hy - max_center_distance <= y <= hy + max_center_distance:
            return self.item, handle
        return None, None
コード例 #3
0
ファイル: painter.py プロジェクト: idincern/RAFCON
    def _draw_item(self, item, cairo, area=None):
        cairo = gaphas.painter.CairoBoundingBoxContext(cairo)
        super(gaphas.painter.BoundingBoxPainter, self)._draw_item(item, cairo)
        bounds = cairo.get_bounds()

        view = self.view
        if isinstance(item, (StateView, NameView)):
            i2v = view.get_matrix_i2v(item).transform_point
            for index, handle in enumerate(item.handles()):
                if index >= 4:
                    break
                side_length = get_side_length_of_resize_handle(view, item)
                cx, cy = i2v(*handle.pos)
                bounds += (cx - side_length / 2, cy - side_length / 2, side_length, side_length)
        elif isinstance(item, ConnectionView):
            i2v = view.get_matrix_i2v(item).transform_point
            for h in item.handles():
                cx, cy = i2v(*h.pos)
                bounds += (cx, cy, 1, 1)

        bounds.expand(1)
        view.set_item_bounding_box(item, bounds)
コード例 #4
0
ファイル: painter.py プロジェクト: DLR-RM/RAFCON
 def _get_handle_side_length(self, item):
     return get_side_length_of_resize_handle(self.view, item)