From b7f4fc7a2248daf8016430a6082e35b6fafc5f9c Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Sun, 31 Dec 2023 23:39:31 -0500 Subject: [PATCH] Woop, got marks!!! --- py/hexagram/cluster.py | 2 +- py/hexagram/dial.py | 12 ++++++++++++ py/hexagram/speedo.py | 9 ++++++++- py/hexagram/tacho.py | 8 +++++++- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/py/hexagram/cluster.py b/py/hexagram/cluster.py index 008a6ec..2d4e1d4 100644 --- a/py/hexagram/cluster.py +++ b/py/hexagram/cluster.py @@ -72,7 +72,7 @@ class Cluster(): self.speedo = Speedo(self.HEIGHT / 2, self.HEIGHT / 2, self.HEIGHT / 2, - 180.0) + 200.0) self.tacho = Tacho(self.WIDTH - self.HEIGHT / 2, self.HEIGHT / 2, diff --git a/py/hexagram/dial.py b/py/hexagram/dial.py index 406a99f..ef247f9 100644 --- a/py/hexagram/dial.py +++ b/py/hexagram/dial.py @@ -43,6 +43,18 @@ class Dial(Gauge): cr.show_text(text) cr.stroke() + def draw_mark(self, cr: cairo.Context, min_radius: float, max_radius: float, value: float): + angle = self.min_angle + \ + ((self.max_angle - self.min_angle) * (value / self.max_value)) - self.ANGLE_OFFSET + + cr.move_to(self.x + (min_radius * self.radius) * math.cos(angle), + self.y + (min_radius * self.radius) * math.sin(angle)) + + cr.line_to(self.x + (max_radius * self.radius) * math.cos(angle), + self.y + (max_radius * self.radius) * math.sin(angle)) + + cr.stroke() + def draw_bg(self, cr: cairo.Context): arc = (self.x, self.y, diff --git a/py/hexagram/speedo.py b/py/hexagram/speedo.py index 59865f8..c1b00ee 100644 --- a/py/hexagram/speedo.py +++ b/py/hexagram/speedo.py @@ -29,7 +29,14 @@ class Speedo(Dial): cairo.FontWeight.BOLD) cr.set_font_size(self.radius * 0.1) + cr.set_source_rgb(1, 1, 1) + for speed in range(0, int(self.max_value)+1, 5): + min_radius = 0.81 if speed % 10 == 0 else 0.82 + + cr.set_line_width(6.0 if speed % 10 == 0 else 2.0) + self.draw_mark(cr, min_radius, 0.87, speed) + for speed in range(0, int(self.max_value)+1, 20): - self.draw_number(cr, 0.75, speed, "%d" % int(speed)) + self.draw_number(cr, 0.65, speed, "%d" % int(speed)) diff --git a/py/hexagram/tacho.py b/py/hexagram/tacho.py index 8fe0b91..8fa5180 100644 --- a/py/hexagram/tacho.py +++ b/py/hexagram/tacho.py @@ -35,8 +35,14 @@ class Tacho(Dial): cr.set_font_size(self.radius * 0.15) cr.set_source_rgb(1, 1, 1) + for speed in range(0, int(self.max_value)+1, 500): + min_radius = 0.81 if speed % 1000 == 0 else 0.82 + + cr.set_line_width(6.0 if speed % 1000 == 0 else 2.0) + self.draw_mark(cr, min_radius, 0.87, speed) + for speed in range(0, int(self.max_value)+1, 1000): if speed >= 7000: cr.set_source_rgb(1.0, 0.1, 0.1) - self.draw_number(cr, 0.78, speed, "%d" % int(speed / 1000)) + self.draw_number(cr, 0.65, speed, "%d" % int(speed / 1000))