OBP60v/pages/apparentwind.py

57 lines
1.5 KiB
Python

import os
import cairo
import math
from .page import Page
class ApparentWind(Page):
def __init__(self, pageno, cfg, boatdata):
super().__init__(pageno, cfg, boatdata)
self.buttonlabel[1] = 'MODE'
self.mode = 'L' # (W)ind (L)ens
self.symbol = cairo.ImageSurface.create_from_png(os.path.join(cfg['imgpath'], "front.png"))
def handle_key(self, buttonid):
if buttonid == 1:
if self.mode == 'W':
self.mode = 'L'
else:
self.mode = 'W'
return True
return False
def draw_wind(self, ctx):
# Name
ctx.set_font_size(40)
ctx.move_to(20, 100)
ctx.show_text("Apparent Wind")
def draw_lens(self, ctx):
ctx.save()
ctx.set_source_surface(self.symbol, 140, 30)
ctx.paint()
ctx.restore()
ctx.set_line_width(2)
# Analoginstrument
cx = 200
cy = 150
r = 135
ctx.arc(cx, cy, r, math.radians(110), math.radians(250))
ctx.stroke()
ctx.arc(cx, cy, r, math.radians(-70), math.radians(70))
ctx.stroke()
# Windstärke als Digitalwert
ctx.select_font_face("DSEG7 Classic")
ctx.set_font_size(40)
self.draw_text_center(ctx, cx, cy + 80, "14.3", fix1=True)
def draw(self, ctx):
ctx.select_font_face("Ubuntu", cairo.FontSlant.NORMAL, cairo.FontWeight.BOLD)
if self.mode == 'W':
self.draw_wind(ctx)
else:
self.draw_lens(ctx)