add find every color code

This commit is contained in:
vcaesar 2021-01-26 12:59:47 -04:00
parent b1dd8732ff
commit 5bf71e637e

View File

@ -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);