Update and fix bitmap

This commit is contained in:
vcaesar 2017-08-24 20:34:45 +08:00
parent 694a63fa66
commit ca3c7a6c9b
4 changed files with 54 additions and 8 deletions

View File

@ -96,9 +96,12 @@ H_INLINE int MMRGBHexSimilarToColor(MMRGBHex h1, MMRGBHex h2, float tolerance)
if (tolerance <= 0.0f) {
return h1 == h2;
} else {
uint8_t d1 = RED_FROM_HEX(h1) - RED_FROM_HEX(h2);
uint8_t d2 = GREEN_FROM_HEX(h1) - GREEN_FROM_HEX(h2);
uint8_t d3 = BLUE_FROM_HEX(h1) - BLUE_FROM_HEX(h2);
// uint8_t d1 = RED_FROM_HEX(h1) - RED_FROM_HEX(h2);
// uint8_t d2 = GREEN_FROM_HEX(h1) - GREEN_FROM_HEX(h2);
// uint8_t d3 = BLUE_FROM_HEX(h1) - BLUE_FROM_HEX(h2);
int d1 = RED_FROM_HEX(h1) - RED_FROM_HEX(h2);
int d2 = GREEN_FROM_HEX(h1) - GREEN_FROM_HEX(h2);
int d3 = BLUE_FROM_HEX(h1) - BLUE_FROM_HEX(h2);
return sqrt((double)(d1 * d1) +
(d2 * d2) +
(d3 * d3)) <= (tolerance * 442.0f);

View File

@ -86,8 +86,8 @@ static int findBitmapInRectAt(MMBitmapRef needle,
while (pointOffset.x <= scanWidth) {
/* Check offset in |haystack| for |needle|. */
if (needleAtOffset(needle, haystack, pointOffset, tolerance)) {
++pointOffset.x;
++pointOffset.y;
// ++pointOffset.x;
// ++pointOffset.y;
*point = pointOffset;
return 0;
}

View File

@ -58,6 +58,25 @@ MMBitmapRef bitmap_deepcopy(MMBitmapRef bitmap){
return bitmap == NULL ? NULL : copyMMBitmap(bitmap);
}
MMPoint bitmap_find_bitmap(MMBitmapRef bitmap, MMBitmapRef sbitmap, float tolerance){
MMPoint point = {-1, -1};
// printf("tolenrance=%f\n", tolerance);
if (!bitmap_ready(sbitmap) || !bitmap_ready(bitmap)) {
printf("bitmap is not ready yet!\n");
return point;
}
MMRect rect = MMBitmapGetBounds(sbitmap);
// printf("x=%d,y=%d,width=%d,height=%d\n", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
if (findBitmapInRect(bitmap, sbitmap, &point,
rect, tolerance) == 0) {
return point;
}
return point;
}
MMPoint aFindBitmap(MMBitmapRef bit_map, MMRect rect){
// MMRect rect;
// rect.size.width = 10;
@ -92,8 +111,6 @@ MMBitmapRef bitmap_open(char *path, uint16_t ttype){
char *bitmap_save(MMBitmapRef bitmap, char *path, uint16_t type){
if (saveMMBitmapToFile(bitmap, path, (MMImageType) type) != 0) {
return "Could not save image to file.";
}else{
saveMMBitmapToFile(bitmap, path, (MMImageType) type);
}
//destroyMMBitmap(bitmap);
return "ok";

View File

@ -55,7 +55,7 @@ import (
)
const (
version string = "v0.45.0.371, Mount Qomolangma!"
version string = "v0.45.0.374, Mount Qomolangma!"
)
// GetVersion get version
@ -571,6 +571,32 @@ func SetKeyboardDelay(x int) {
|______/ |__| |__| |__| |__| /__/ \__\ | _|
*/
// FindBit find the bitmap
func FindBit(args ...interface{}) (int, int) {
var (
bit C.MMBitmapRef
sbit C.MMBitmapRef
tolerance C.float
)
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
}
pos := C.bitmap_find_bitmap(bit, sbit, tolerance)
// fmt.Println("pos----", pos)
return int(pos.x), int(pos.y)
}
// FindBitmap find the bitmap
func FindBitmap(args ...interface{}) (int, int) {
var bit C.MMBitmapRef