add an cbitmap example [#169]

This commit is contained in:
vcaesar 2018-10-07 12:18:57 -04:00
parent 992b30aac4
commit 0b009ab521

53
examples/cbitmap/main.go Normal file
View File

@ -0,0 +1,53 @@
package main
import (
"github.com/go-vgo/robotgo"
)
func main() {
bmp, free := loadBitmaps("start.png", "chest.png", "eat.png")
defer free()
for {
clickBitmap(bmp["start.png"], false)
clickBitmap(bmp["chest.png"], true)
clickBitmap(bmp["eat.png"], false)
}
}
func loadBitmaps(files ...string) (bitmaps map[string]robotgo.Bitmap, free func()) {
freeFuncs := make([]func(), 0)
bitmaps = make(map[string]robotgo.Bitmap)
for _, f := range files {
bitmap, freeFunc := readBitmap(f)
bitmaps[f] = bitmap
freeFuncs = append(freeFuncs, freeFunc)
}
free = func() {
for key := range freeFuncs {
freeFuncs[key]()
}
}
return bitmaps, free
}
func readBitmap(file string) (bitmap robotgo.Bitmap, free func()) {
cBitmap := robotgo.OpenBitmap(file)
bitmap = robotgo.ToBitmap(cBitmap)
free = func() {
robotgo.FreeBitmap(cBitmap)
}
return bitmap, free
}
func clickBitmap(bmp robotgo.Bitmap, doubleClick bool) bool {
fx, fy := robotgo.FindBitmap(robotgo.ToCBitmap(bmp))
if fx != -1 && fy != -1 {
robotgo.MoveMouse(fx, fy)
robotgo.MouseClick("left", doubleClick)
return true
}
return false
}