+ def show_text(self, txt, pos, align=0, angle=None, offset=(0,0)):
+ ctx = self.ctx
+
+ xoff, yoff, tw, th = ctx.text_extents(txt)[:4]
+ if align > 0:
+ ctx.move_to(pos[0]+offset[0]-xoff, pos[1]+offset[1]-yoff)
+ elif align < 0:
+ ctx.move_to(pos[0]+offset[0]-xoff-tw, pos[1]+offset[1]-yoff)
+ else:
+ ctx.move_to(pos[0]+offset[0]-xoff-tw/2, pos[1]+offset[1]-yoff)
+ ctx.save()
+ if angle:
+ ctx.rotate(math.radians(angle))
+ ctx.show_text(txt)
+ ctx.restore()
+
+ def set_font(self, fontsize, color, bold=False, italic=False):
+ ctx = self.ctx
+ font = self.font
+ slant = C.FONT_SLANT_ITALIC if italic else C.FONT_SLANT_NORMAL
+ weight = C.FONT_WEIGHT_BOLD if bold else C.FONT_WEIGHT_NORMAL
+
+ ctx.select_font_face(font, slant, weight)
+ ctx.set_font_size(fontsize)
+ if len(color) == 1:
+ ctx.set_source_rgb(color[0], color[0], color[0])
+ elif len(color) == 3:
+ ctx.set_source_rgb(color[0], color[1], color[2])
+ elif len(color) == 4:
+ ctx.set_source_rgba(color[0], color[1], color[2], color[3])
+ else:
+ ctx.set_source_rgb(1, 1, 1)
+