Add radial gradient to main gauges

This commit is contained in:
XANTRONIX Development 2024-01-06 00:20:11 -05:00
parent e80cf1f313
commit 88bcd6d6b1

View file

@ -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))