aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2018-07-03 00:57:58 +0200
committerRay <raysan5@gmail.com>2018-07-03 00:57:58 +0200
commit74fd0e7ca4faaa428c248a9ae714e2e7371e6ed4 (patch)
treed961bc6eeba4a7682574e71831592c8170d7d7f8 /src
parent7b971e06236c581087a851c8ecda11bb7be12839 (diff)
downloadraylib-74fd0e7ca4faaa428c248a9ae714e2e7371e6ed4.tar.gz
raylib-74fd0e7ca4faaa428c248a9ae714e2e7371e6ed4.zip
Added function: ImageColorReplace()
Diffstat (limited to 'src')
-rw-r--r--src/raylib.h1
-rw-r--r--src/textures.c30
2 files changed, 31 insertions, 0 deletions
diff --git a/src/raylib.h b/src/raylib.h
index 96bf2443..43000318 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -937,6 +937,7 @@ RLAPI void ImageColorInvert(Image *image);
RLAPI void ImageColorGrayscale(Image *image); // Modify image color: grayscale
RLAPI void ImageColorContrast(Image *image, float contrast); // Modify image color: contrast (-100 to 100)
RLAPI void ImageColorBrightness(Image *image, int brightness); // Modify image color: brightness (-255 to 255)
+RLAPI void ImageColorReplace(Image *image, Color color, Color replace); // Modify image color: replace color
// Image generation functions
RLAPI Image GenImageColor(int width, int height, Color color); // Generate image: plain color
diff --git a/src/textures.c b/src/textures.c
index 81bbbf3c..f2dc7ca3 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -1901,6 +1901,36 @@ void ImageColorBrightness(Image *image, int brightness)
image->data = processed.data;
}
+
+// Modify image color: replace color
+void ImageColorReplace(Image *image, Color color, Color replace)
+{
+ Color *pixels = GetImageData(*image);
+
+ for (int y = 0; y < image->height; y++)
+ {
+ for (int x = 0; x < image->width; x++)
+ {
+ if ((pixels[y*image->width + x].r == color.r) &&
+ (pixels[y*image->width + x].g == color.g) &&
+ (pixels[y*image->width + x].b == color.b) &&
+ (pixels[y*image->width + x].a == color.a))
+ {
+ pixels[y*image->width + x].r = replace.r;
+ pixels[y*image->width + x].g = replace.g;
+ pixels[y*image->width + x].b = replace.b;
+ pixels[y*image->width + x].a = replace.a;
+ }
+ }
+ }
+
+ Image processed = LoadImageEx(pixels, image->width, image->height);
+ ImageFormat(&processed, image->format);
+ UnloadImage(*image);
+ free(pixels);
+
+ image->data = processed.data;
+}
#endif // SUPPORT_IMAGE_MANIPULATION
#if defined(SUPPORT_IMAGE_GENERATION)