add more find bitmap

This commit is contained in:
vcaesar 2017-11-04 21:57:09 +08:00
parent b8e7e584a7
commit 02ca8ea6fe
2 changed files with 62 additions and 1 deletions

View File

@ -77,6 +77,27 @@ MMPoint bitmap_find_bitmap(MMBitmapRef bitmap, MMBitmapRef sbitmap, float tolera
return point;
}
MMPoint *find_every_bitmap(MMBitmapRef bitmap, MMBitmapRef sbitmap, float tolerance, MMPoint *list){
if (!bitmap_ready(bitmap) || !bitmap_ready(sbitmap)) return NULL;
MMPoint point;
MMPointArrayRef pointArray;
MMRect rect = MMBitmapGetBounds(bitmap);
if (findBitmapInRect(bitmap, sbitmap, &point,
rect, tolerance) == 0) {
return NULL;
}
pointArray = findAllBitmapInRect(bitmap, sbitmap, rect, tolerance);
if (pointArray == NULL) return NULL;
memcpy(list, pointArray->array, sizeof(MMPoint) * pointArray->count);
destroyMMPointArray(pointArray);
return list;
}
MMPoint aFindBitmap(MMBitmapRef bit_map, MMRect rect){
// MMRect rect;
// rect.size.width = 10;

View File

@ -55,7 +55,7 @@ import (
)
const (
version string = "v0.46.0.401, Pyrenees Mountains!"
version string = "v0.46.0.402, Pyrenees Mountains!"
)
// GetVersion get version
@ -597,6 +597,46 @@ func FindBitmap(args ...interface{}) (int, int) {
return int(pos.x), int(pos.y)
}
// FindEveryBitmap find the every bitmap
func FindEveryBitmap(args ...interface{}) (int, int) {
var (
bit C.MMBitmapRef
sbit C.MMBitmapRef
tolerance C.float
lpos C.MMPoint
)
bit = args[0].(C.MMBitmapRef)
if len(args) > 1 {
sbit = args[1].(C.MMBitmapRef)
} else {
sbit = CaptureScreen()
}
if len(args) > 2 {
tolerance = C.float(args[2].(float32))
} else {
tolerance = 0.5
}
if len(args) > 3 {
lpos.x = C.size_t(args[3].(int))
lpos.y = 0
} else {
lpos.x = 0
lpos.y = 0
}
if len(args) > 4 {
lpos.x = C.size_t(args[3].(int))
lpos.y = C.size_t(args[4].(int))
}
pos := C.find_every_bitmap(bit, sbit, tolerance, &lpos)
// fmt.Println("pos----", pos)
return int(pos.x), int(pos.y)
}
// FindBit find the bitmap
func FindBit(args ...interface{}) (int, int) {
var bit C.MMBitmapRef