def draw_partition(self, box, context, bounding_box): """ By default vertical partition is drawn. It is open on the bottom. """ assert self.canvas cr = context.cairo cr.set_line_width(context.style["line-width"]) if self.subject and not self.subject.isDimension and self._toplevel: cr.move_to(0, 0) cr.line_to(bounding_box.width, 0) h = self._header_size[1] # draw outside lines if this item is toplevel partition if self._toplevel: cr.move_to(0, bounding_box.height) cr.line_to(0, h) cr.line_to(bounding_box.width, h) cr.line_to(bounding_box.width, bounding_box.height) if self._subpart: # header line for all subparitions hd = h + self._hdmax cr.move_to(0, hd) cr.line_to(bounding_box.width, hd) if self._subpart: # draw inside lines for all children but last one dp = 0 for sl in self.canvas.get_children(self)[:-1]: dp += sl.width cr.move_to(dp, h) cr.line_to(dp, bounding_box.height) stroke(context) if context.hovered or context.dropzone: with cairo_state(cr): cr.set_dash((1.0, 5.0), 0) cr.set_line_width(1.0) cr.rectangle(0, 0, bounding_box.width, bounding_box.height) draw_highlight(context) cr.stroke()
def draw_final_state(box, context, bounding_box): cr = context.cairo r = 15 d = r * 2 path_ellipse(cr, r, r, d, d) cr.set_line_width(0.01) cr.set_line_width(2) stroke(context) stroke_color = context.style["color"] if stroke_color: cr.set_source_rgba(*stroke_color) d = 20 path_ellipse(cr, r, r, d, d) cr.set_line_width(0.01) cr.fill()
def draw_node(box, context, bounding_box): cr = context.cairo d = 10 w = bounding_box.width h = bounding_box.height cr.rectangle(0, 0, w, h) cr.move_to(0, 0) cr.line_to(d, -d) cr.line_to(w + d, -d) cr.line_to(w + d, h - d) cr.line_to(w, h) cr.move_to(w, 0) cr.line_to(w + d, -d) stroke(context)
def draw_state(box, context, bounding_box): cr = context.cairo dx = 15 dy = 8 ddx = 0.4 * dx ddy = 0.4 * dy width = bounding_box.width height = bounding_box.height cr.move_to(0, dy) cr.curve_to(0, ddy, ddx, 0, dx, 0) cr.line_to(width - dx, 0) cr.curve_to(width - ddx, 0, width, ddy, width, dy) cr.line_to(width, height - dy) cr.curve_to(width, height - ddy, width - ddx, height, width - dx, height) cr.line_to(dx, height) cr.curve_to(ddx, height, 0, height - ddy, 0, height - dy) cr.close_path() stroke(context)
def draw_activity_final_node(_box, context, _bounding_box): cr = context.cairo stroke_color = context.style["color"] if stroke_color: cr.set_source_rgba(*stroke_color) inner_radius = 10 outer_radius = 15 r = outer_radius + 1 d = r * 2 path_ellipse(cr, r, r, d, d) cr.set_line_width(0.01) cr.set_line_width(2) stroke(context) d = inner_radius * 2 path_ellipse(cr, r, r, d, d) cr.set_line_width(0.01) cr.fill()
def draw_person(box, context, bounding_box): cr = context.cairo d = context.style.get("border-radius", 24) x, y, width, height = bounding_box x1 = width + x y1 = height + y d_head = width * 0.19 cr.move_to(x, d) cr.arc(d, d, d, pi, 1.5 * pi) cr.line_to(x + width / 2 - d_head / 2, y) cr.arc(x + width / 2, -d_head * 0.866, d_head, 2 / 3 * pi, 1 / 3 * pi) cr.line_to(x1 - d, y) cr.arc(x1 - d, d, d, 1.5 * pi, y) cr.line_to(x1, y1 - d) cr.arc(x1 - d, y1 - d, d, 0, 0.5 * pi) cr.line_to(d, y1) cr.arc(d, y1 - d, d, 0.5 * pi, pi) cr.close_path() stroke(context)
def draw_actor(box, context, bounding_box): """Draw actor's icon creature.""" cr = context.cairo fx = bounding_box.width / (ARM * 2) fy = bounding_box.height / (HEAD + NECK + BODY + ARM) x = ARM * fx y = (HEAD / 2) * fy cy = HEAD * fy cr.move_to(x + HEAD * fy / 2.0, y) cr.arc(x, y, HEAD * fy / 2.0, 0, 2 * pi) cr.move_to(x, y + cy / 2) cr.line_to(ARM * fx, (HEAD + NECK + BODY) * fy) cr.move_to(0, (HEAD + NECK) * fy) cr.line_to(ARM * 2 * fx, (HEAD + NECK) * fy) cr.move_to(0, (HEAD + NECK + BODY + ARM) * fy) cr.line_to(ARM * fx, (HEAD + NECK + BODY) * fy) cr.line_to(ARM * 2 * fx, (HEAD + NECK + BODY + ARM) * fy) stroke(context, fill=False)
def draw(self, context): cr = context.cairo nw = self._handles[NW] cr.rectangle(nw.pos.x, nw.pos.y, self.width, self.height) stroke(context)
def draw(self, context): cr = context.cairo nw = self._handles[NW] cr.rectangle(nw.pos.x, nw.pos.y, self.width, self.height) stroke(DrawContext.from_context(context, self.style))