From 5bf71e637e6fc943fdc5ddde1eb3431f40e4bc8e Mon Sep 17 00:00:00 2001 From: vcaesar Date: Tue, 26 Jan 2021 12:59:47 -0400 Subject: [PATCH] add find every color code --- bitmap/goBitmap.h | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/bitmap/goBitmap.h b/bitmap/goBitmap.h index 2a17bbd..424ad09 100644 --- a/bitmap/goBitmap.h +++ b/bitmap/goBitmap.h @@ -60,8 +60,7 @@ MMPoint find_bitmap(MMBitmapRef bitmap, MMBitmapRef sbit, float tolerance){ // 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, sbit, &point, - rect, tolerance) == 0) { + if (findBitmapInRect(bitmap, sbit, &point, rect, tolerance) == 0) { return point; } @@ -69,19 +68,18 @@ MMPoint find_bitmap(MMBitmapRef bitmap, MMBitmapRef sbit, float tolerance){ } MMPoint *find_every_bitmap(MMBitmapRef bitmap, MMBitmapRef sbit, float tolerance, MMPoint *list){ - if (!bitmap_ready(bitmap) || !bitmap_ready(sbit)) return NULL; + if (!bitmap_ready(bitmap) || !bitmap_ready(sbit)) { return NULL; } MMPoint point; MMPointArrayRef pointArray; MMRect rect = MMBitmapGetBounds(bitmap); - if (findBitmapInRect(bitmap, sbit, &point, - rect, tolerance) == 0) { + if (findBitmapInRect(bitmap, sbit, &point, rect, tolerance) == 0) { return NULL; } pointArray = findAllBitmapInRect(bitmap, sbit, rect, tolerance); - if (pointArray == NULL) return NULL; + if (pointArray == NULL) { return NULL; } memcpy(list, pointArray->array, sizeof(MMPoint) * pointArray->count); destroyMMPointArray(pointArray); @@ -93,7 +91,6 @@ int count_of_bitmap(MMBitmapRef bitmap, MMBitmapRef sbit, float tolerance){ if (!bitmap_ready(bitmap) || !bitmap_ready(sbit)) return 0; MMRect rect = MMBitmapGetBounds(bitmap); - return countOfBitmapInRect(bitmap, sbit, rect, tolerance); } @@ -126,9 +123,8 @@ MMBitmapRef bitmap_from_string(const char *str){ MMBitmapRef bitmap; MMBMPStringError err; - if ((bitmap = createMMBitmapFromString( - (unsigned char*)str, len, &err ) - ) == NULL) { + if ((bitmap = createMMBitmapFromString((unsigned char*)str, len, &err )) + == NULL) { return NULL; } @@ -148,7 +144,6 @@ char *tostring_bitmap(MMBitmapRef bitmap){ MMBMPStringError err; buf = (char *)createStringFromMMBitmap(bitmap, &err); - return buf; } @@ -174,7 +169,7 @@ MMBitmapRef get_portion(MMBitmapRef bit_map, MMRect rect){ } MMRGBHex bitmap_get_color(MMBitmapRef bitmap, size_t x, size_t y){ - if (!bitmap_ready(bitmap)) return 0; + if (!bitmap_ready(bitmap)) { return 0; } MMPoint point; point = MMPointMake(x, y); @@ -197,6 +192,21 @@ MMPoint bitmap_find_color(MMBitmapRef bitmap, MMRGBHex color, float tolerance){ return point; } +MMPoint *bitmap_find_every_color(MMBitmapRef bitmap, MMRGBHex color, float tolerance, MMPoint *list){ + if (!bitmap_ready(bitmap)) { return NULL; } + MMRect rect = MMBitmapGetBounds(bitmap); + MMPointArrayRef pointArray; + + pointArray = findAllColorInRect(bitmap, color, rect, tolerance); + if (pointArray == NULL) { return NULL; } + + memcpy(list, pointArray->array, sizeof(MMPoint) * pointArray->count); + destroyMMPointArray(pointArray); + if (list == NULL) { return NULL; } + + return list; +} + int bitmap_count_of_color(MMBitmapRef bitmap, MMRGBHex color, float tolerance){ if (!bitmap_ready(bitmap)) return 0; MMRect rect = MMBitmapGetBounds(bitmap);