diff --git a/py/hexagram/dial.py b/py/hexagram/dial.py index 3049ff8..91e2559 100644 --- a/py/hexagram/dial.py +++ b/py/hexagram/dial.py @@ -47,8 +47,12 @@ class Dial(Gauge): def draw_legend(self, cr: cairo.Context, radius: float, value: float, text: str): angle = self.angle(value) - cr.move_to(self.x + radius * self.radius * math.cos(angle) - 20, - self.y + radius * self.radius * math.sin(angle) + 5) + extents = cr.text_extents(text) + width = extents[2] - extents[0] + height = extents[3] - extents[1] + + cr.move_to(self.x + radius * self.radius * math.cos(angle) - width / 1.5, + self.y + radius * self.radius * math.sin(angle) + height / 4) cr.show_text(text) cr.stroke() diff --git a/py/hexagram/tacho.py b/py/hexagram/tacho.py index b1df76c..2812171 100644 --- a/py/hexagram/tacho.py +++ b/py/hexagram/tacho.py @@ -22,16 +22,6 @@ class Tacho(Dial): self.gear: Gear = Gear.N self.shift_mode: ShiftMode = ShiftMode.NORMAL - def draw_legend(self, cr: cairo.Context, radius: float, value: float, text: str): - scale = value / self.max_value - angle = self.min_angle + ((self.max_angle - self.min_angle) * scale) - Dial.ANGLE_OFFSET - - cr.move_to(self.x + radius * self.radius * math.cos(angle) - 8, - self.y + radius * self.radius * math.sin(angle) + 15) - - cr.show_text(text) - cr.stroke() - def draw_bg(self, cr: cairo.Context): super().draw_bg(cr) @@ -57,7 +47,7 @@ class Tacho(Dial): if speed >= self.redline: cr.set_source_rgb(1.0, 0.1, 0.1) - self.draw_legend(cr, 0.69, speed, "%d" % int(speed / 1000)) + self.draw_legend(cr, 0.675, speed, "%d" % int(speed / 1000)) def gear_text(self): text = ''