mirror of
https://github.com/go-vgo/robotgo.git
synced 2025-06-01 14:43:55 +00:00
Update and fix bitmap
This commit is contained in:
parent
694a63fa66
commit
ca3c7a6c9b
@ -96,9 +96,12 @@ H_INLINE int MMRGBHexSimilarToColor(MMRGBHex h1, MMRGBHex h2, float tolerance)
|
|||||||
if (tolerance <= 0.0f) {
|
if (tolerance <= 0.0f) {
|
||||||
return h1 == h2;
|
return h1 == h2;
|
||||||
} else {
|
} else {
|
||||||
uint8_t d1 = RED_FROM_HEX(h1) - RED_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 d2 = GREEN_FROM_HEX(h1) - GREEN_FROM_HEX(h2);
|
||||||
uint8_t d3 = BLUE_FROM_HEX(h1) - BLUE_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) +
|
return sqrt((double)(d1 * d1) +
|
||||||
(d2 * d2) +
|
(d2 * d2) +
|
||||||
(d3 * d3)) <= (tolerance * 442.0f);
|
(d3 * d3)) <= (tolerance * 442.0f);
|
||||||
|
@ -86,8 +86,8 @@ static int findBitmapInRectAt(MMBitmapRef needle,
|
|||||||
while (pointOffset.x <= scanWidth) {
|
while (pointOffset.x <= scanWidth) {
|
||||||
/* Check offset in |haystack| for |needle|. */
|
/* Check offset in |haystack| for |needle|. */
|
||||||
if (needleAtOffset(needle, haystack, pointOffset, tolerance)) {
|
if (needleAtOffset(needle, haystack, pointOffset, tolerance)) {
|
||||||
++pointOffset.x;
|
// ++pointOffset.x;
|
||||||
++pointOffset.y;
|
// ++pointOffset.y;
|
||||||
*point = pointOffset;
|
*point = pointOffset;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -58,6 +58,25 @@ MMBitmapRef bitmap_deepcopy(MMBitmapRef bitmap){
|
|||||||
return bitmap == NULL ? NULL : copyMMBitmap(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){
|
MMPoint aFindBitmap(MMBitmapRef bit_map, MMRect rect){
|
||||||
// MMRect rect;
|
// MMRect rect;
|
||||||
// rect.size.width = 10;
|
// 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){
|
char *bitmap_save(MMBitmapRef bitmap, char *path, uint16_t type){
|
||||||
if (saveMMBitmapToFile(bitmap, path, (MMImageType) type) != 0) {
|
if (saveMMBitmapToFile(bitmap, path, (MMImageType) type) != 0) {
|
||||||
return "Could not save image to file.";
|
return "Could not save image to file.";
|
||||||
}else{
|
|
||||||
saveMMBitmapToFile(bitmap, path, (MMImageType) type);
|
|
||||||
}
|
}
|
||||||
//destroyMMBitmap(bitmap);
|
//destroyMMBitmap(bitmap);
|
||||||
return "ok";
|
return "ok";
|
||||||
|
28
robotgo.go
28
robotgo.go
@ -55,7 +55,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
version string = "v0.45.0.371, Mount Qomolangma!"
|
version string = "v0.45.0.374, Mount Qomolangma!"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GetVersion get version
|
// 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
|
// FindBitmap find the bitmap
|
||||||
func FindBitmap(args ...interface{}) (int, int) {
|
func FindBitmap(args ...interface{}) (int, int) {
|
||||||
var bit C.MMBitmapRef
|
var bit C.MMBitmapRef
|
||||||
|
Loading…
Reference in New Issue
Block a user