hexagram/py/hexagram/thermo.py
2024-01-02 17:25:03 -05:00

51 lines
1.4 KiB
Python

import enum
import math
import cairo
from hexagram.dial import BottomDial
class Thermometer(BottomDial):
MIN_VALUE = 85
MAX_VALUE = 110
WARN_VALUE = 106
FONT_FACE = "Muli"
def __init__(self, x: float, y: float, radius: float):
super().__init__(x, y, radius,
self.MIN_ANGLE,
self.MAX_ANGLE,
self.MIN_VALUE,
self.MAX_VALUE)
def draw_bg(self, cr: cairo.Context):
super().draw_bg(cr)
cr.select_font_face(self.FONT_FACE,
cairo.FontSlant.NORMAL,
cairo.FontWeight.BOLD)
cr.set_font_size(self.radius * 0.1)
cr.set_source_rgb(1, 1, 1)
#self.draw_value(cr, 0.78, self.min_value, "C", -25, 0)
self.draw_value(cr, 0.78, self.min_value, "C")
cr.set_source_rgb(1, 0, 0)
#self.draw_value(cr, 0.75, self.max_value, "H", -5, 0)
self.draw_value(cr, 0.75, self.max_value, "H")
cr.set_line_width(6.0)
level = self.min_value
incr = math.ceil((self.max_value - self.min_value) / 9)
while level <= self.max_value:
if level >= self.WARN_VALUE:
cr.set_source_rgb(0.8, 0, 0)
else:
cr.set_source_rgb(1, 1, 1)
self.draw_mark(cr, 0.83, 0.87, level)
level += incr