def draw_rectangle(canvas, position, size, color=Color(), width=1.0, center=False, stroke=True): cr = canvas.cr cr.save() position = Vector.vectorize(position) size = Size.make_size(size) if center: position.x -= size.width / 2 position.y -= size.height / 2 DrawingUtils.set_color(canvas, color) cr.rectangle(position.x, position.y, size.width, size.height) if stroke: cr.set_line_width(width) cr.stroke() else: cr.fill() cr.restore()
def __init__(self, position=(0, 0), size=(0, 0)): self.position = Vector.vectorize(position) self.size = Size.make_size(size) self.x = self.position.x self.y = self.position.y self.width = self.size.width self.height = self.size.height
def draw_image_from_surface(canvas, position, img, size=None, center=False): """ Draws an image given by a cairo.ImageSurface object. @type canvas: canvas.Canvas @type position: vector.Vector @type img: cairo.ImageSurface @type size: size.Size @type center: boolean """ if not size: size = Size(img.get_width(), img.get_height()) else: size = Size.make_size(size) position = Vector.vectorize(position) width = img.get_width() height = img.get_height() cr = canvas.cr cr.save() if center: cr.translate(position.x - size.width / 2.0, position.y - size.height / 2.0) else: cr.translate(position.x, position.y) x_ratio = float(size.width) / width y_ratio = float(size.height) / height cr.scale(x_ratio, y_ratio) cr.set_source_surface(img) cr.get_source().set_filter(cairo.FILTER_FAST) cr.paint() cr.restore()
def draw_rectangle(canvas, position, size, color=Color(), width=1.0, center=False, stroke=True): cr = canvas.cr cr.save() position = Vector.vectorize(position) size = Size.make_size(size) if center: position.x -= size.width / 2 position.y -= size.height / 2 DrawingUtils.set_color(canvas, color) cr.rectangle(position.x, position.y, size.width, size.height) if stroke: cr.set_line_width(width) cr.stroke() else: cr.fill() cr.restore()
def draw_image_from_surface(canvas, position, img, size=None, center=False): """ Draws an image given by a cairo.ImageSurface object. @type canvas: canvas.Canvas @type position: vector.Vector @type img: cairo.ImageSurface @type size: size.Size @type center: boolean """ if not size: size = Size(img.get_width(), img.get_height()) else: size = Size.make_size(size) position = Vector.vectorize(position) width = img.get_width() height = img.get_height() cr = canvas.cr cr.save() if center: cr.translate(position.x - size.width / 2.0, position.y - size.height / 2.0) else: cr.translate(position.x, position.y) x_ratio = float(size.width) / width y_ratio = float(size.height) / height cr.scale(x_ratio, y_ratio) cr.set_source_surface(img) cr.get_source().set_filter(cairo.FILTER_FAST) cr.paint() cr.restore()
def scaled(self, scale): return RectangleBBox(self.position, self.size + Size.make_size(scale))