Browse Source

REVIEWED: `ImageResize()` #2572

Ray 3 năm trước cách đây
mục cha
commit
29a0f60778
1 tập tin đã thay đổi với 6 bổ sung4 xóa
  1. 6 4
      src/rtextures.c

+ 6 - 4
src/rtextures.c

@@ -1414,10 +1414,12 @@ void ImageResize(Image *image, int newWidth, int newHeight)
     // Security check to avoid program crash
     if ((image->data == NULL) || (image->width == 0) || (image->height == 0)) return;
 
-    bool fastPath = true;
-    if ((image->format != PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) && (image->format != PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) && (image->format != PIXELFORMAT_UNCOMPRESSED_R8G8B8) && (image->format != PIXELFORMAT_UNCOMPRESSED_R8G8B8A8)) fastPath = true;
-
-    if (fastPath)
+    // Check if we can use a fast path on image scaling
+    // It can be for 8 bit per channel images with 1 to 4 channels per pixel
+    if ((image->format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) || 
+        (image->format == PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) || 
+        (image->format == PIXELFORMAT_UNCOMPRESSED_R8G8B8) || 
+        (image->format == PIXELFORMAT_UNCOMPRESSED_R8G8B8A8))
     {
         int bytesPerPixel = GetPixelDataSize(1, 1, image->format);
         unsigned char *output = (unsigned char *)RL_MALLOC(newWidth*newHeight*bytesPerPixel);