Add radial gradient to main gauges
This commit is contained in:
parent
e80cf1f313
commit
88bcd6d6b1
1 changed files with 22 additions and 5 deletions
|
@ -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))
|
||||
|
|
Loading…
Add table
Reference in a new issue