From 88bcd6d6b13843fba7d02990f65e59acdf812b7f Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Sat, 6 Jan 2024 00:20:11 -0500 Subject: [PATCH] Add radial gradient to main gauges --- py/hexagram/dial.py | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/py/hexagram/dial.py b/py/hexagram/dial.py index 75af4c6..311dc1f 100644 --- a/py/hexagram/dial.py +++ b/py/hexagram/dial.py @@ -62,9 +62,7 @@ class Dial(Gauge): cr.stroke() - def draw_needle(self, cr: cairo.Context, min_radius: float, max_radius: float, value: float): - angle = self.angle(value) - + def draw_needle(self, cr: cairo.Context, min_radius: float, max_radius: float, angle: float): cr.set_source_rgba(1, 0.4, 1, 0.75) cr.set_line_width(8) @@ -101,7 +99,26 @@ class Dial(Gauge): cr.stroke() def draw_fg(self, cr: cairo.Context): - self.draw_needle(cr, 0.5, 0.89, self.value) + gradient = cairo.RadialGradient(self.x, + self.y, + self.radius, + self.x, + self.y, + self.radius / 2) + gradient.add_color_stop_rgba(0, 1, 0.4, 1, 0.75) + gradient.add_color_stop_rgba(1, 0, 0.0, 0, 0.50) + + angle = self.angle(self.value) + cr.set_line_width(self.radius * 0.375) + cr.set_source(gradient) + + cr.arc(self.x, self.y, self.radius * 0.713, + self.min_angle - self.ANGLE_OFFSET - (math.pi / 180.0) * 1.5, + angle) + + cr.stroke() + + self.draw_needle(cr, 0.5, 0.89, angle) class BottomDial(Dial): MIN_ANGLE = 144.0 * (math.pi / 180.0) @@ -133,4 +150,4 @@ class BottomDial(Dial): min_radius = 0.8 max_radius = 0.9 - self.draw_needle(cr, min_radius, max_radius, self.value) + self.draw_needle(cr, min_radius, max_radius, self.angle(self.value))