-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtext.go
86 lines (69 loc) · 1.79 KB
/
text.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package main
import (
"fmt"
"github.com/draeron/golaunchpad/examples/common"
"github.com/draeron/golaunchpad/pkg/launchpad"
"github.com/draeron/golaunchpad/pkg/launchpad/button"
"github.com/draeron/golaunchpad/pkg/launchpad/event"
"github.com/draeron/gopkgs/color"
"github.com/draeron/gopkgs/logger"
)
var log = logger.NewLogrus("main")
var pad launchpad.Controller
func main() {
log.Info("starting text example")
defer log.Info("exiting text example")
pad = common.Setup()
defer pad.Close()
setup()
common.WaitExit()
pad.DisplayText("", false, 0x40, color.White)
}
func setup() {
pad.SetColorAll(color.Black)
for _, b := range button.Rows() {
pad.SetColor(b, colorFromRow(b))
}
pad.SetColor(button.Up, color.LightGray)
pad.SetColor(button.Down, color.LightGray)
pad.SetColor(button.User, color.LightGray)
go func() {
ch := make(chan event.Event, 10)
pad.Subscribe(ch)
lastColor := color.Black.RGB()
speed := byte(15)
loop := false
for e := range ch {
if e.Type == event.Pressed {
switch {
case e.Btn == button.User:
loop = !loop
pad.DisplayText("", loop, speed, lastColor)
if loop {
pad.SetColor(button.User, color.Green)
} else {
pad.SetColor(button.User, color.White)
}
case e.Btn.IsRow():
lastColor = colorFromRow(e.Btn)
pad.DisplayText("", loop, speed, lastColor)
case e.Btn.IsArrow():
switch e.Btn {
case button.Up:
speed++
case button.Down:
speed--
}
pad.DisplayText("", loop, speed, lastColor)
case e.Btn.IsPad():
x, y := e.Btn.Coord()
lastColor = common.RandColor()
pad.DisplayText(fmt.Sprintf("X: %d, Y: %d", x, y), loop, speed, lastColor)
}
}
}
}()
}
func colorFromRow(b button.Button) color.RGB {
return color.Palette[b-button.Row1]
}