Allow left, center, and right alignment of text
This commit is contained in:
@@ -1,8 +1,17 @@
|
||||
.PHONY: setup run build install
|
||||
|
||||
setup:
|
||||
cd go-rpi-rgb-led-matrix/lib/rpi-rgb-led-matrix && make
|
||||
|
||||
run:
|
||||
rundev:
|
||||
sudo go run cmd/rpi/main.go --led-slowdown-gpio=2 --led-pwm-dither-bits=1
|
||||
|
||||
build:
|
||||
go build cmd/rpi/main.go
|
||||
go build -o blockyclock cmd/rpi/main.go
|
||||
|
||||
install:
|
||||
$(MAKE) setup && \
|
||||
$(MAKE) build && \
|
||||
sudo mv blockyclock /usr/bin && \
|
||||
sudo cp blockyclock.service /lib/systemd/system/ && \
|
||||
sudo systemctl enable --now blockyclock.service
|
||||
|
||||
+5
-6
@@ -16,7 +16,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
RefreshRateHz = 1
|
||||
RefreshRateHz = 120
|
||||
MempoolURL = "mempool.space"
|
||||
)
|
||||
|
||||
@@ -29,10 +29,10 @@ func main() {
|
||||
c := rgbmatrix.NewCanvas(m)
|
||||
|
||||
d := display.New(c,
|
||||
display.NewSlot(9, 5, 4, 0, 0),
|
||||
display.NewSlot(5, 5, 4, 44, 0),
|
||||
display.NewSlot(7, 13, 8, 5, 9),
|
||||
display.NewSlot(12, 5, 4, 7, 27),
|
||||
display.NewSlot(display.Left, 9, 5, 4, 0, 0),
|
||||
display.NewSlot(display.Right, 5, 5, 4, 44, 0),
|
||||
display.NewSlot(display.Center, 8, 13, 8, 0, 9),
|
||||
display.NewSlot(display.Center, 16, 5, 4, 0, 27),
|
||||
)
|
||||
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
@@ -85,7 +85,6 @@ func main() {
|
||||
for {
|
||||
select {
|
||||
case m := <-msgs:
|
||||
fmt.Printf("%+v\n", m)
|
||||
if m.Fees != nil {
|
||||
feesMutex.Lock()
|
||||
fees = *m.Fees
|
||||
|
||||
+27
-3
@@ -9,6 +9,14 @@ import (
|
||||
rgbmatrix "git.dvdt.dev/david/bitcoin-ticker-pi/go-rpi-rgb-led-matrix"
|
||||
)
|
||||
|
||||
type Alignment uint8
|
||||
|
||||
const (
|
||||
Left Alignment = iota
|
||||
Center
|
||||
Right
|
||||
)
|
||||
|
||||
var (
|
||||
ErrUnsupportedSlotHeight = errors.New("unsupported slot height")
|
||||
)
|
||||
@@ -33,15 +41,17 @@ func drawRow(canvas *rgbmatrix.Canvas, row []color.RGBA, x, y int) {
|
||||
}
|
||||
|
||||
type Slot struct {
|
||||
alignment Alignment
|
||||
segmentLimit int
|
||||
segmentHeight int
|
||||
segmentWidth int
|
||||
x, y int
|
||||
x, xoffset, y int
|
||||
text []Segment
|
||||
}
|
||||
|
||||
func NewSlot(limit, height, width, x, y int) *Slot {
|
||||
func NewSlot(alignment Alignment, limit, height, width, x, y int) *Slot {
|
||||
return &Slot{
|
||||
alignment: alignment,
|
||||
segmentLimit: limit,
|
||||
segmentHeight: height,
|
||||
segmentWidth: width,
|
||||
@@ -61,6 +71,20 @@ func (s *Slot) Update(text []Segment) error {
|
||||
}...)
|
||||
}
|
||||
|
||||
// Default to left alignment.
|
||||
s.xoffset = 0
|
||||
if s.alignment == Center {
|
||||
s.xoffset = ((s.segmentLimit * s.segmentWidth) - (len(text) * s.segmentWidth)) / 2
|
||||
}
|
||||
if s.alignment == Right {
|
||||
s.xoffset = (s.segmentLimit * s.segmentWidth) - (len(text) * s.segmentWidth)
|
||||
}
|
||||
|
||||
fmt.Printf("segmentLimit: %d\n", s.segmentLimit)
|
||||
fmt.Printf("segmentWidth: %d\n", s.segmentWidth)
|
||||
fmt.Printf("len(text): %d\n", len(text))
|
||||
fmt.Printf("xoffset value: %d\n", s.xoffset)
|
||||
|
||||
var font fonts.Font
|
||||
switch s.segmentHeight {
|
||||
case 5:
|
||||
@@ -88,6 +112,6 @@ func (s *Slot) Update(text []Segment) error {
|
||||
|
||||
func (s *Slot) Draw(canvas *rgbmatrix.Canvas) {
|
||||
for i, segment := range s.text {
|
||||
segment.Draw(canvas, s.x+(i*s.segmentWidth), s.y)
|
||||
segment.Draw(canvas, s.x+(i*s.segmentWidth)+s.xoffset, s.y)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -21,7 +21,7 @@ var (
|
||||
{0, 1, 1, 1, 1, 1, 0, 0},
|
||||
{1, 1, 1, 0, 1, 1, 1, 0},
|
||||
{1, 1, 0, 0, 0, 1, 1, 0},
|
||||
{0, 0, 0, 0, 1, 1, 1, 0},
|
||||
{0, 0, 0, 0, 0, 1, 1, 0},
|
||||
{0, 0, 0, 0, 1, 1, 1, 0},
|
||||
{0, 0, 0, 1, 1, 1, 0, 0},
|
||||
{0, 0, 1, 1, 1, 0, 0, 0},
|
||||
@@ -68,11 +68,11 @@ var (
|
||||
{1, 1, 0, 0, 0, 0, 0, 0},
|
||||
{1, 1, 0, 0, 0, 0, 0, 0},
|
||||
{1, 1, 0, 0, 0, 0, 0, 0},
|
||||
{1, 1, 0, 0, 0, 0, 0, 0},
|
||||
{1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{1, 1, 1, 1, 1, 1, 1, 0},
|
||||
{0, 0, 0, 0, 1, 1, 1, 0},
|
||||
{0, 0, 0, 0, 0, 1, 1, 0},
|
||||
{0, 0, 0, 0, 0, 1, 1, 0},
|
||||
{0, 0, 0, 0, 1, 1, 1, 0},
|
||||
{1, 1, 1, 1, 1, 1, 0, 0},
|
||||
{1, 1, 1, 1, 1, 0, 0, 0},
|
||||
|
||||
+4
-4
@@ -63,7 +63,7 @@ var (
|
||||
{1, 0, 1, 0},
|
||||
{1, 1, 1, 0},
|
||||
{0, 0, 1, 0},
|
||||
{0, 1, 1, 0},
|
||||
{1, 1, 0, 0},
|
||||
},
|
||||
"0": {
|
||||
{0, 1, 0, 0},
|
||||
@@ -73,10 +73,10 @@ var (
|
||||
{0, 1, 0, 0},
|
||||
},
|
||||
"satoshi": {
|
||||
{0, 0, 1, 0},
|
||||
{0, 1, 0, 0},
|
||||
{1, 1, 1, 0},
|
||||
{1, 1, 1, 0},
|
||||
{1, 1, 1, 0},
|
||||
{1, 1, 1, 1},
|
||||
{0, 0, 1, 0},
|
||||
{0, 1, 0, 0},
|
||||
},
|
||||
"dollar": {
|
||||
|
||||
Reference in New Issue
Block a user