Browse Source

REVIEWED: ImageAlphaCrop() #1218

Now uses GetImageAlphaBorder()
pull/1271/head
raysan5 5 years ago
parent
commit
78c3d619f9
1 changed files with 5 additions and 26 deletions
  1. +5
    -26
      src/textures.c

+ 5
- 26
src/textures.c View File

@ -1109,38 +1109,16 @@ Image ImageTextEx(Font font, const char *text, float fontSize, float spacing, Co
} }
// Crop image depending on alpha value // Crop image depending on alpha value
// NOTE: Threshold is defined as a percentatge: 0.0f -> 1.0f
void ImageAlphaCrop(Image *image, float threshold) void ImageAlphaCrop(Image *image, float threshold)
{ {
// Security check to avoid program crash // Security check to avoid program crash
if ((image->data == NULL) || (image->width == 0) || (image->height == 0)) return; if ((image->data == NULL) || (image->width == 0) || (image->height == 0)) return;
Color *pixels = GetImageData(*image);
int xMin = 65536; // Define a big enough number
int xMax = 0;
int yMin = 65536;
int yMax = 0;
for (int y = 0; y < image->height; y++)
{
for (int x = 0; x < image->width; x++)
{
if (pixels[y*image->width + x].a > (unsigned char)(threshold*255.0f))
{
if (x < xMin) xMin = x;
if (x > xMax) xMax = x;
if (y < yMin) yMin = y;
if (y > yMax) yMax = y;
}
}
}
Rectangle crop = { (float)xMin, (float)yMin, (float)((xMax + 1) - xMin), (float)((yMax + 1) - yMin) };
RL_FREE(pixels);
Rectangle crop = GetImageAlphaBorder(*image, threshold);
// Check for not empty image brefore cropping
if (o">!((xMax < xMin) || (yMax < yMin))) ImageCrop(image, crop);
// Crop if rectangle is valid
if (((int)crop.width != 0) && ((int)crop.height != 0)) ImageCrop(image, crop);
} }
// Clear alpha channel to desired color // Clear alpha channel to desired color
@ -2198,6 +2176,7 @@ Vector4 *GetImageDataNormalized(Image image)
} }
// Get image alpha border rectangle // Get image alpha border rectangle
// NOTE: Threshold is defined as a percentatge: 0.0f -> 1.0f
Rectangle GetImageAlphaBorder(Image image, float threshold) Rectangle GetImageAlphaBorder(Image image, float threshold)
{ {
Rectangle crop = { 0 }; Rectangle crop = { 0 };

Loading…
Cancel
Save