Simplified for loop for some image manip functions (#3712)

This commit is contained in:
Alice Nyaa 2024-01-06 13:41:43 -05:00 committed by GitHub
parent 721e273547
commit be0ea89f83
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2649,21 +2649,17 @@ void ImageColorTint(Image *image, Color color)
float cB = (float)color.b/255; float cB = (float)color.b/255;
float cA = (float)color.a/255; float cA = (float)color.a/255;
for (int y = 0; y < image->height; y++) for (int i = 0; i < image->width * image->height; i++)
{ {
for (int x = 0; x < image->width; x++) unsigned char r = (unsigned char)(((float)pixels[i].r/255*cR)*255.0f);
{ unsigned char g = (unsigned char)(((float)pixels[i].g/255*cG)*255.0f);
int index = y*image->width + x; unsigned char b = (unsigned char)(((float)pixels[i].b/255*cB)*255.0f);
unsigned char r = (unsigned char)(((float)pixels[index].r/255*cR)*255.0f); unsigned char a = (unsigned char)(((float)pixels[i].a/255*cA)*255.0f);
unsigned char g = (unsigned char)(((float)pixels[index].g/255*cG)*255.0f);
unsigned char b = (unsigned char)(((float)pixels[index].b/255*cB)*255.0f);
unsigned char a = (unsigned char)(((float)pixels[index].a/255*cA)*255.0f);
pixels[index].r = r; pixels[i].r = r;
pixels[index].g = g; pixels[i].g = g;
pixels[index].b = b; pixels[i].b = b;
pixels[index].a = a; pixels[i].a = a;
}
} }
int format = image->format; int format = image->format;
@ -2683,14 +2679,11 @@ void ImageColorInvert(Image *image)
Color *pixels = LoadImageColors(*image); Color *pixels = LoadImageColors(*image);
for (int y = 0; y < image->height; y++) for (int i = 0; i < image->width * image->height; i++)
{ {
for (int x = 0; x < image->width; x++) pixels[i].r = 255 - pixels[i].r;
{ pixels[i].g = 255 - pixels[i].g;
pixels[y*image->width + x].r = 255 - pixels[y*image->width + x].r; pixels[i].b = 255 - pixels[i].b;
pixels[y*image->width + x].g = 255 - pixels[y*image->width + x].g;
pixels[y*image->width + x].b = 255 - pixels[y*image->width + x].b;
}
} }
int format = image->format; int format = image->format;
@ -2723,11 +2716,9 @@ void ImageColorContrast(Image *image, float contrast)
Color *pixels = LoadImageColors(*image); Color *pixels = LoadImageColors(*image);
for (int y = 0; y < image->height; y++) for (int i = 0; i < image->width * image->height; i++)
{ {
for (int x = 0; x < image->width; x++) float pR = (float)pixels[i].r/255.0f;
{
float pR = (float)pixels[y*image->width + x].r/255.0f;
pR -= 0.5f; pR -= 0.5f;
pR *= contrast; pR *= contrast;
pR += 0.5f; pR += 0.5f;
@ -2735,7 +2726,7 @@ void ImageColorContrast(Image *image, float contrast)
if (pR < 0) pR = 0; if (pR < 0) pR = 0;
if (pR > 255) pR = 255; if (pR > 255) pR = 255;
float pG = (float)pixels[y*image->width + x].g/255.0f; float pG = (float)pixels[i].g/255.0f;
pG -= 0.5f; pG -= 0.5f;
pG *= contrast; pG *= contrast;
pG += 0.5f; pG += 0.5f;
@ -2743,7 +2734,7 @@ void ImageColorContrast(Image *image, float contrast)
if (pG < 0) pG = 0; if (pG < 0) pG = 0;
if (pG > 255) pG = 255; if (pG > 255) pG = 255;
float pB = (float)pixels[y*image->width + x].b/255.0f; float pB = (float)pixels[i].b/255.0f;
pB -= 0.5f; pB -= 0.5f;
pB *= contrast; pB *= contrast;
pB += 0.5f; pB += 0.5f;
@ -2751,10 +2742,9 @@ void ImageColorContrast(Image *image, float contrast)
if (pB < 0) pB = 0; if (pB < 0) pB = 0;
if (pB > 255) pB = 255; if (pB > 255) pB = 255;
pixels[y*image->width + x].r = (unsigned char)pR; pixels[i].r = (unsigned char)pR;
pixels[y*image->width + x].g = (unsigned char)pG; pixels[i].g = (unsigned char)pG;
pixels[y*image->width + x].b = (unsigned char)pB; pixels[i].b = (unsigned char)pB;
}
} }
int format = image->format; int format = image->format;
@ -2778,13 +2768,11 @@ void ImageColorBrightness(Image *image, int brightness)
Color *pixels = LoadImageColors(*image); Color *pixels = LoadImageColors(*image);
for (int y = 0; y < image->height; y++) for (int i = 0; i < image->width * image->height; i++)
{ {
for (int x = 0; x < image->width; x++) int cR = pixels[i].r + brightness;
{ int cG = pixels[i].g + brightness;
int cR = pixels[y*image->width + x].r + brightness; int cB = pixels[i].b + brightness;
int cG = pixels[y*image->width + x].g + brightness;
int cB = pixels[y*image->width + x].b + brightness;
if (cR < 0) cR = 1; if (cR < 0) cR = 1;
if (cR > 255) cR = 255; if (cR > 255) cR = 255;
@ -2795,10 +2783,9 @@ void ImageColorBrightness(Image *image, int brightness)
if (cB < 0) cB = 1; if (cB < 0) cB = 1;
if (cB > 255) cB = 255; if (cB > 255) cB = 255;
pixels[y*image->width + x].r = (unsigned char)cR; pixels[i].r = (unsigned char)cR;
pixels[y*image->width + x].g = (unsigned char)cG; pixels[i].g = (unsigned char)cG;
pixels[y*image->width + x].b = (unsigned char)cB; pixels[i].b = (unsigned char)cB;
}
} }
int format = image->format; int format = image->format;
@ -2818,20 +2805,17 @@ void ImageColorReplace(Image *image, Color color, Color replace)
Color *pixels = LoadImageColors(*image); Color *pixels = LoadImageColors(*image);
for (int y = 0; y < image->height; y++) for (int i = 0; i < image->width * image->height; i++)
{ {
for (int x = 0; x < image->width; x++) if ((pixels[i].r == color.r) &&
(pixels[i].g == color.g) &&
(pixels[i].b == color.b) &&
(pixels[i].a == color.a))
{ {
if ((pixels[y*image->width + x].r == color.r) && pixels[i].r = replace.r;
(pixels[y*image->width + x].g == color.g) && pixels[i].g = replace.g;
(pixels[y*image->width + x].b == color.b) && pixels[i].b = replace.b;
(pixels[y*image->width + x].a == color.a)) pixels[i].a = replace.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;
}
} }
} }