From dbe473224b4df80125ffe99d1260487e3a5670b4 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Mon, 1 Jan 2024 17:10:23 -0500 Subject: [PATCH] A gauge needle, of sorts! --- py/hexagram/dial.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/py/hexagram/dial.py b/py/hexagram/dial.py index ef247f9..b868142 100644 --- a/py/hexagram/dial.py +++ b/py/hexagram/dial.py @@ -55,6 +55,30 @@ class Dial(Gauge): cr.stroke() + def draw_needle(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 - 4 * (math.pi / 180.0) + + angle_start = angle - 4 * (math.pi / 180.0) + angle_end = angle + 4 * (math.pi / 180.0) + + cr.set_source_rgba(1, 1, 1, 0.75) + + cr.move_to(self.x + (min_radius * self.radius) * math.cos(angle_start), + self.y + (min_radius * self.radius) * math.sin(angle_start)) + + cr.line_to(self.x + (max_radius * self.radius) * math.cos(angle), + self.y + (max_radius * self.radius) * math.sin(angle)) + + cr.line_to(self.x + (max_radius * self.radius) * math.cos(angle_end), + self.y + (max_radius * self.radius) * math.sin(angle_end)) + + cr.line_to(self.x + (min_radius * self.radius) * math.cos(angle_end), + self.y + (min_radius * self.radius) * math.sin(angle_end)) + + cr.fill() + def draw_bg(self, cr: cairo.Context): arc = (self.x, self.y,