91 lines
2.6 KiB
Python
91 lines
2.6 KiB
Python
"""
|
|
|
|
Komplexe Batterieübersichtsseite
|
|
|
|
"""
|
|
|
|
import cairo
|
|
from .page import Page
|
|
|
|
class Battery2(Page):
|
|
|
|
def draw_battery(self, ctx, x, y, w, h, level):
|
|
'''
|
|
Das Rechteck ist das komplett umschließende
|
|
Level ist der prozentuale Füllstand
|
|
'''
|
|
pass
|
|
|
|
'''
|
|
// Battery graphic with fill level
|
|
void batteryGraphic(uint x, uint y, float percent, int pcolor, int bcolor){
|
|
// Show battery
|
|
int xb = x; // X position
|
|
int yb = y; // Y position
|
|
int t = 4; // Line thickness
|
|
// Percent limits
|
|
if(percent < 0){
|
|
percent = 0;
|
|
}
|
|
if(percent > 99){
|
|
percent = 99;
|
|
}
|
|
// Battery corpus 100x80 with fill level
|
|
int level = int((100.0 - percent) * (80-(2*t)) / 100.0);
|
|
getdisplay().fillRect(xb, yb, 100, 80, pcolor);
|
|
if(percent < 99){
|
|
getdisplay().fillRect(xb+t, yb+t, 100-(2*t), level, bcolor);
|
|
}
|
|
// Plus pol 20x15
|
|
int xp = xb + 20;
|
|
int yp = yb - 15 + t;
|
|
getdisplay().fillRect(xp, yp, 20, 15, pcolor);
|
|
getdisplay().fillRect(xp+t, yp+t, 20-(2*t), 15-(2*t), bcolor);
|
|
// Minus pol 20x15
|
|
int xm = xb + 60;
|
|
int ym = yb -15 + t;
|
|
getdisplay().fillRect(xm, ym, 20, 15, pcolor);
|
|
getdisplay().fillRect(xm+t, ym+t, 20-(2*t), 15-(2*t), bcolor);
|
|
'''
|
|
|
|
|
|
def draw(self, ctx):
|
|
ctx.select_font_face("Ubuntu", cairo.FontSlant.NORMAL, cairo.FontWeight.BOLD)
|
|
ctx.set_font_size(40)
|
|
ctx.move_to(10, 65)
|
|
ctx.show_text("Bat.")
|
|
|
|
# Batterietyp
|
|
ctx.move_to(90, 65)
|
|
ctx.show_text("AGM")
|
|
|
|
# Kapazität
|
|
ctx.move_to(10, 200)
|
|
ctx.select_font_face("DSEG7 Classic")
|
|
ctx.set_font_size(40)
|
|
ctx.show_text("12")
|
|
|
|
ctx.select_font_face("Ubuntu", cairo.FontSlant.NORMAL, cairo.FontWeight.BOLD)
|
|
ctx.set_font_size(16)
|
|
ctx.show_text("Ah")
|
|
|
|
ctx.move_to(10, 235)
|
|
ctx.show_text("Installed")
|
|
|
|
ctx.move_to(10, 255)
|
|
ctx.show_text("Battery Type")
|
|
|
|
# Batteriegraphik
|
|
# Rechteck mit Füllstand 100x80, oben zwei Pole
|
|
ctx.rectangle(150, 100, 100, 80)
|
|
ctx.stroke()
|
|
# Füllstand
|
|
# Pole
|
|
|
|
|
|
'''
|
|
ctx.line_to(2.5, 1.5)
|
|
|
|
ctx.set_line_width(0.06)
|
|
'''
|