Files
bitcoin-ticker-pi/display/display.go
T

70 lines
1.3 KiB
Go

package display
import (
"image"
"image/draw"
"git.dvdt.dev/david/bitcoin-ticker-pi/fonts"
rgbmatrix "git.dvdt.dev/david/bitcoin-ticker-pi/go-rpi-rgb-led-matrix"
)
type Display struct {
canvas *rgbmatrix.Canvas
topleft, topright, main, bottom *Slot
}
func New(canvas *rgbmatrix.Canvas, topleft, topright, main, bottom *Slot) *Display {
return &Display{
canvas: canvas,
topleft: topleft,
topright: topright,
main: main,
bottom: bottom,
}
}
func (d *Display) UpdateTopLeft(text []Segment) error {
err := d.topleft.Update(text)
if err != nil {
return err
}
d.topleft.Draw(d.canvas)
return nil
}
func (d *Display) UpdateTopRight(text []Segment) error {
err := d.topright.Update(text)
if err != nil {
return err
}
d.topright.Draw(d.canvas)
return nil
}
func (d *Display) UpdateMain(text []Segment) error {
err := d.main.Update(text)
if err != nil {
return err
}
d.main.Draw(d.canvas)
return nil
}
func (d *Display) UpdateBottom(text []Segment) error {
err := d.bottom.Update(text)
if err != nil {
return err
}
d.bottom.Draw(d.canvas)
return nil
}
func (d *Display) Render() error {
return d.canvas.Render()
}
func (d *Display) Clear() {
draw.Draw(d.canvas, d.canvas.Bounds(), &image.Uniform{fonts.Black}, image.ZP, draw.Src)
}