70 lines
1.3 KiB
Go
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)
|
|
}
|