hexagram/py/hexagram/thermo.py
XANTRONIX Development 1342a1191c Rename draw_number, draw_value to draw_legend
Rename draw_number, draw_value to draw_legend in main dial and bottom
dial
2024-01-09 00:22:22 -05:00

51 lines
1.3 KiB
Python

import enum
import math
import cairo
from hexagram.dial import BottomDial
class Thermometer(BottomDial):
MIN_VALUE = 48
MAX_VALUE = 127
WARN_VALUE = 116
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_legend(cr, 0.78, self.min_value, "C")
cr.set_source_rgb(1, 0, 0)
self.draw_legend(cr, 0.75, self.max_value, "H", -15, 5)
cr.set_line_width(6.0)
level = self.min_value
incr = (self.max_value - self.min_value) / 8.0
for i in range(0, 9):
level = self.min_value + i * incr
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