From d650417b9d30fd755a120595bae18b542570af9b Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Tue, 9 Jan 2024 12:57:16 -0500 Subject: [PATCH] Consolidate draw_legend() to Dial class --- py/hexagram/dial.py | 8 ++++++-- py/hexagram/tacho.py | 12 +----------- 2 files changed, 7 insertions(+), 13 deletions(-) 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 = ''