ToolKit: transform function
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/disintegration/imaging"
|
||||||
"github.com/mcuadros/go-rpi-rgb-led-matrix"
|
"github.com/mcuadros/go-rpi-rgb-led-matrix"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -13,6 +14,7 @@ var (
|
|||||||
chain = flag.Int("led-chain", 2, "number of displays daisy-chained")
|
chain = flag.Int("led-chain", 2, "number of displays daisy-chained")
|
||||||
brightness = flag.Int("brightness", 100, "brightness (0-100)")
|
brightness = flag.Int("brightness", 100, "brightness (0-100)")
|
||||||
image = flag.String("image", "", "image path")
|
image = flag.String("image", "", "image path")
|
||||||
|
rotate = flag.Int("rotate", 0, "rotate angle, 90, 180, 270")
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -30,6 +32,15 @@ func main() {
|
|||||||
tk := rgbmatrix.NewToolKit(m)
|
tk := rgbmatrix.NewToolKit(m)
|
||||||
defer tk.Close()
|
defer tk.Close()
|
||||||
|
|
||||||
|
switch *rotate {
|
||||||
|
case 90:
|
||||||
|
tk.Transform = imaging.Rotate90
|
||||||
|
case 180:
|
||||||
|
tk.Transform = imaging.Rotate180
|
||||||
|
case 270:
|
||||||
|
tk.Transform = imaging.Rotate270
|
||||||
|
}
|
||||||
|
|
||||||
close, err := tk.PlayGIF(f)
|
close, err := tk.PlayGIF(f)
|
||||||
fatal(err)
|
fatal(err)
|
||||||
|
|
||||||
|
|||||||
17
toolkit.go
17
toolkit.go
@@ -9,13 +9,24 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type ToolKit struct {
|
type ToolKit struct {
|
||||||
Canvas *Canvas
|
Canvas *Canvas
|
||||||
|
Transform func(img image.Image) *image.NRGBA
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewToolKit(m Matrix) *ToolKit {
|
||||||
|
return &ToolKit{
|
||||||
|
Canvas: NewCanvas(m),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (tk *ToolKit) PlayImage(i image.Image, delay time.Duration) error {
|
func (tk *ToolKit) PlayImage(i image.Image, delay time.Duration) error {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
defer func() { time.Sleep(delay - time.Since(start)) }()
|
defer func() { time.Sleep(delay - time.Since(start)) }()
|
||||||
|
|
||||||
|
if tk.Transform != nil {
|
||||||
|
i = tk.Transform(i)
|
||||||
|
}
|
||||||
|
|
||||||
draw.Draw(tk.Canvas, tk.Canvas.Bounds(), i, image.ZP, draw.Over)
|
draw.Draw(tk.Canvas, tk.Canvas.Bounds(), i, image.ZP, draw.Over)
|
||||||
return tk.Canvas.Render()
|
return tk.Canvas.Render()
|
||||||
}
|
}
|
||||||
@@ -64,3 +75,7 @@ func (tk *ToolKit) PlayGIF(r io.Reader) (chan bool, error) {
|
|||||||
|
|
||||||
return tk.PlayImages(images, delay, gif.LoopCount), nil
|
return tk.PlayImages(images, delay, gif.LoopCount), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (tk *ToolKit) Close() error {
|
||||||
|
return tk.Canvas.Close()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user