mirror of
				https://github.com/raysan5/raylib.git
				synced 2025-10-26 12:27:01 +00:00 
			
		
		
		
	WARNING: RENAMED several functions for consistency #1440
This is a BREAKING CHANGE! To address the linked issue, several functions have been renamed and couterpart functions have been created to free loaded memory: - RENAMED: GetImageData() -> LoadImageColors() - RENAMED: GetImagePalette() -> LoadImagePalette() - RENAMED: GetWaveData() -> LoadWaveSamples() - ADDED: UnloadImageColors() - ADDED: UnloadImagePalette() - ADDED: UnloadWaveSamples()
This commit is contained in:
		
							
								
								
									
										13
									
								
								src/raudio.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								src/raudio.c
									
									
									
									
									
								
							| @@ -1079,9 +1079,10 @@ void WaveCrop(Wave *wave, int initSample, int finalSample) | |||||||
|     else TRACELOG(LOG_WARNING, "WAVE: Crop range out of bounds"); |     else TRACELOG(LOG_WARNING, "WAVE: Crop range out of bounds"); | ||||||
| } | } | ||||||
|  |  | ||||||
| // Get samples data from wave as a floats array | // Load samples data from wave as a floats array | ||||||
| // NOTE: Returned sample values are normalized to range [-1..1] | // NOTE 1: Returned sample values are normalized to range [-1..1] | ||||||
| float *GetWaveData(Wave wave) | // NOTE 2: Sample data allocated should be freed with UnloadWaveSamples() | ||||||
|  | float *LoadWaveSamples(Wave wave) | ||||||
| { | { | ||||||
|     float *samples = (float *)RL_MALLOC(wave.sampleCount*sizeof(float)); |     float *samples = (float *)RL_MALLOC(wave.sampleCount*sizeof(float)); | ||||||
|  |  | ||||||
| @@ -1097,6 +1098,12 @@ float *GetWaveData(Wave wave) | |||||||
|     return samples; |     return samples; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // Unload samples data loaded with LoadWaveSamples() | ||||||
|  | void UnloadWaveSamples(float *samples) | ||||||
|  | { | ||||||
|  |     RL_FREE(samples); | ||||||
|  | } | ||||||
|  |  | ||||||
| //---------------------------------------------------------------------------------- | //---------------------------------------------------------------------------------- | ||||||
| // Module Functions Definition - Music loading and stream playing (.OGG) | // Module Functions Definition - Music loading and stream playing (.OGG) | ||||||
| //---------------------------------------------------------------------------------- | //---------------------------------------------------------------------------------- | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								src/raylib.h
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								src/raylib.h
									
									
									
									
									
								
							| @@ -156,6 +156,7 @@ | |||||||
| #define FormatText      TextFormat | #define FormatText      TextFormat | ||||||
| #define LoadText        LoadFileText | #define LoadText        LoadFileText | ||||||
| #define GetExtension    GetFileExtension | #define GetExtension    GetFileExtension | ||||||
|  | #define GetImageData    LoadImageColors | ||||||
| //#define Fade(c, a)  ColorAlpha(c, a) | //#define Fade(c, a)  ColorAlpha(c, a) | ||||||
|  |  | ||||||
| //---------------------------------------------------------------------------------- | //---------------------------------------------------------------------------------- | ||||||
| @@ -964,7 +965,7 @@ RLAPI float GetFrameTime(void);                                   // Returns tim | |||||||
| RLAPI double GetTime(void);                                       // Returns elapsed time in seconds since InitWindow() | RLAPI double GetTime(void);                                       // Returns elapsed time in seconds since InitWindow() | ||||||
|  |  | ||||||
| // Misc. functions | // Misc. functions | ||||||
| RLAPI void SetConfigFlags(unsigned int flags);                    // Setup window configuration flags (view FLAGS) | RLAPI void SetConfigFlags(unsigned int flags);                    // Setup init configuration flags (view FLAGS) | ||||||
|  |  | ||||||
| RLAPI void SetTraceLogLevel(int logType);                         // Set the current threshold (minimum) log level | RLAPI void SetTraceLogLevel(int logType);                         // Set the current threshold (minimum) log level | ||||||
| RLAPI void SetTraceLogExit(int logType);                          // Set the exit threshold (minimum) log level | RLAPI void SetTraceLogExit(int logType);                          // Set the exit threshold (minimum) log level | ||||||
| @@ -1176,9 +1177,10 @@ RLAPI void ImageColorGrayscale(Image *image); | |||||||
| RLAPI void ImageColorContrast(Image *image, float contrast);                                             // Modify image color: contrast (-100 to 100) | 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 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 | RLAPI void ImageColorReplace(Image *image, Color color, Color replace);                                  // Modify image color: replace color | ||||||
|  | RLAPI Color *LoadImageColors(Image image);                                                               // Load color data from image as a Color array (RGBA - 32bit) | ||||||
| RLAPI Color *GetImageData(Image image);                                                                  // Get pixel data from image as a Color struct array | RLAPI Color *LoadImagePalette(Image image, int maxPaletteSize, int *colorsCount);                        // Load colors palette from image as a Color array (RGBA - 32bit) | ||||||
| RLAPI Color *GetImagePalette(Image image, int maxPaletteSize, int *extractCount);                        // Get color palette from image to maximum size (memory should be freed) | RLAPI void UnloadImageColors(Color *colors);                                                             // Unload color data loaded with LoadImageColors() | ||||||
|  | RLAPI void UnloadImagePalette(Color *colors);                                                            // Unload colors palette loaded with LoadImagePalette() | ||||||
| RLAPI Rectangle GetImageAlphaBorder(Image image, float threshold);                                       // Get image alpha border rectangle | RLAPI Rectangle GetImageAlphaBorder(Image image, float threshold);                                       // Get image alpha border rectangle | ||||||
|  |  | ||||||
| // Image drawing functions | // Image drawing functions | ||||||
| @@ -1473,7 +1475,9 @@ RLAPI void SetSoundPitch(Sound sound, float pitch);                   // Set pit | |||||||
| RLAPI void WaveFormat(Wave *wave, int sampleRate, int sampleSize, int channels);  // Convert wave data to desired format | RLAPI void WaveFormat(Wave *wave, int sampleRate, int sampleSize, int channels);  // Convert wave data to desired format | ||||||
| RLAPI Wave WaveCopy(Wave wave);                                       // Copy a wave to a new wave | RLAPI Wave WaveCopy(Wave wave);                                       // Copy a wave to a new wave | ||||||
| RLAPI void WaveCrop(Wave *wave, int initSample, int finalSample);     // Crop a wave to defined samples range | RLAPI void WaveCrop(Wave *wave, int initSample, int finalSample);     // Crop a wave to defined samples range | ||||||
| RLAPI float *GetWaveData(Wave wave);                                  // Get samples data from wave as a floats array | //RLAPI float *GetWaveData(Wave wave);                                  // Get samples data from wave as a floats array | ||||||
|  | RLAPI float *LoadWaveSamples(Wave wave);                              // Load samples data from wave as a floats array | ||||||
|  | RLAPI void UnloadWaveSamples(float *samples);                         // Unload samples data loaded with LoadWaveSamples() | ||||||
|  |  | ||||||
| // Music management functions | // Music management functions | ||||||
| RLAPI Music LoadMusicStream(const char *fileName);                    // Load music stream from file | RLAPI Music LoadMusicStream(const char *fileName);                    // Load music stream from file | ||||||
|   | |||||||
| @@ -376,7 +376,7 @@ Font LoadFontFromImage(Image image, Color key, int firstChar) | |||||||
|     int tempCharValues[MAX_GLYPHS_FROM_IMAGE]; |     int tempCharValues[MAX_GLYPHS_FROM_IMAGE]; | ||||||
|     Rectangle tempCharRecs[MAX_GLYPHS_FROM_IMAGE]; |     Rectangle tempCharRecs[MAX_GLYPHS_FROM_IMAGE]; | ||||||
|  |  | ||||||
|     Color *pixels = GetImageData(image); |     Color *pixels = LoadImageColors(image); | ||||||
|  |  | ||||||
|     // Parse image data to get charSpacing and lineSpacing |     // Parse image data to get charSpacing and lineSpacing | ||||||
|     for (y = 0; y < image.height; y++) |     for (y = 0; y < image.height; y++) | ||||||
|   | |||||||
							
								
								
									
										118
									
								
								src/textures.c
									
									
									
									
									
								
							
							
						
						
									
										118
									
								
								src/textures.c
									
									
									
									
									
								
							| @@ -186,7 +186,7 @@ static Image LoadPVR(const unsigned char *fileData, unsigned int fileSize);   // | |||||||
| #if defined(SUPPORT_FILEFORMAT_ASTC) | #if defined(SUPPORT_FILEFORMAT_ASTC) | ||||||
| static Image LoadASTC(const unsigned char *fileData, unsigned int fileSize);  // Load ASTC file data | static Image LoadASTC(const unsigned char *fileData, unsigned int fileSize);  // Load ASTC file data | ||||||
| #endif | #endif | ||||||
| static Vector4 *GetImageDataNormalized(Image image);    // Get pixel data from image as Vector4 array (float normalized) | static Vector4 *LoadImageDataNormalized(Image image);    // Load pixel data from image as Vector4 array (float normalized) | ||||||
|  |  | ||||||
| //---------------------------------------------------------------------------------- | //---------------------------------------------------------------------------------- | ||||||
| // Module Functions Definition | // Module Functions Definition | ||||||
| @@ -412,7 +412,7 @@ bool ExportImage(Image image, const char *fileName) | |||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         // NOTE: Getting Color array as RGBA unsigned char values |         // NOTE: Getting Color array as RGBA unsigned char values | ||||||
|         imgData = (unsigned char *)GetImageData(image); |         imgData = (unsigned char *)LoadImageColors(image); | ||||||
|         allocatedData = true; |         allocatedData = true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -888,7 +888,7 @@ void ImageFormat(Image *image, int newFormat) | |||||||
|     { |     { | ||||||
|         if ((image->format < COMPRESSED_DXT1_RGB) && (newFormat < COMPRESSED_DXT1_RGB)) |         if ((image->format < COMPRESSED_DXT1_RGB) && (newFormat < COMPRESSED_DXT1_RGB)) | ||||||
|         { |         { | ||||||
|             Vector4 *pixels = GetImageDataNormalized(*image);     // Supports 8 to 32 bit per channel |             Vector4 *pixels = LoadImageDataNormalized(*image);     // Supports 8 to 32 bit per channel | ||||||
|  |  | ||||||
|             RL_FREE(image->data);      // WARNING! We loose mipmaps data --> Regenerated at the end... |             RL_FREE(image->data);      // WARNING! We loose mipmaps data --> Regenerated at the end... | ||||||
|             image->data = NULL; |             image->data = NULL; | ||||||
| @@ -1306,7 +1306,7 @@ void ImageAlphaPremultiply(Image *image) | |||||||
|     if ((image->data == NULL) || (image->width == 0) || (image->height == 0)) return; |     if ((image->data == NULL) || (image->width == 0) || (image->height == 0)) return; | ||||||
|  |  | ||||||
|     float alpha = 0.0f; |     float alpha = 0.0f; | ||||||
|     Color *pixels = GetImageData(*image); |     Color *pixels = LoadImageColors(*image); | ||||||
|  |  | ||||||
|     for (int i = 0; i < image->width*image->height; i++) |     for (int i = 0; i < image->width*image->height; i++) | ||||||
|     { |     { | ||||||
| @@ -1368,7 +1368,7 @@ void ImageResize(Image *image, int newWidth, int newHeight) | |||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         // Get data as Color pixels array to work with it |         // Get data as Color pixels array to work with it | ||||||
|         Color *pixels = GetImageData(*image); |         Color *pixels = LoadImageColors(*image); | ||||||
|         Color *output = (Color *)RL_MALLOC(newWidth*newHeight*sizeof(Color)); |         Color *output = (Color *)RL_MALLOC(newWidth*newHeight*sizeof(Color)); | ||||||
|  |  | ||||||
|         // NOTE: Color data is casted to (unsigned char *), there shouldn't been any problem... |         // NOTE: Color data is casted to (unsigned char *), there shouldn't been any problem... | ||||||
| @@ -1376,7 +1376,7 @@ void ImageResize(Image *image, int newWidth, int newHeight) | |||||||
|  |  | ||||||
|         int format = image->format; |         int format = image->format; | ||||||
|  |  | ||||||
|         RL_FREE(pixels); |         UnloadImageColors(pixels); | ||||||
|         RL_FREE(image->data); |         RL_FREE(image->data); | ||||||
|  |  | ||||||
|         image->data = output; |         image->data = output; | ||||||
| @@ -1394,7 +1394,7 @@ void ImageResizeNN(Image *image,int newWidth,int newHeight) | |||||||
|     // 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); |     Color *pixels = LoadImageColors(*image); | ||||||
|     Color *output = (Color *)RL_MALLOC(newWidth*newHeight*sizeof(Color)); |     Color *output = (Color *)RL_MALLOC(newWidth*newHeight*sizeof(Color)); | ||||||
|  |  | ||||||
|     // EDIT: added +1 to account for an early rounding problem |     // EDIT: added +1 to account for an early rounding problem | ||||||
| @@ -1424,7 +1424,7 @@ void ImageResizeNN(Image *image,int newWidth,int newHeight) | |||||||
|  |  | ||||||
|     ImageFormat(image, format);  // Reformat 32bit RGBA image to original format |     ImageFormat(image, format);  // Reformat 32bit RGBA image to original format | ||||||
|  |  | ||||||
|     RL_FREE(pixels); |     UnloadImageColors(pixels); | ||||||
| } | } | ||||||
|  |  | ||||||
| // Resize canvas and fill with color | // Resize canvas and fill with color | ||||||
| @@ -1570,7 +1570,7 @@ void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp) | |||||||
|     } |     } | ||||||
|     else |     else | ||||||
|     { |     { | ||||||
|         Color *pixels = GetImageData(*image); |         Color *pixels = LoadImageColors(*image); | ||||||
|  |  | ||||||
|         RL_FREE(image->data);      // free old image data |         RL_FREE(image->data);      // free old image data | ||||||
|  |  | ||||||
| @@ -1658,7 +1658,7 @@ void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp) | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         RL_FREE(pixels); |         UnloadImageColors(pixels); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -1801,7 +1801,7 @@ void ImageColorTint(Image *image, Color color) | |||||||
|     // 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); |     Color *pixels = LoadImageColors(*image); | ||||||
|  |  | ||||||
|     float cR = (float)color.r/255; |     float cR = (float)color.r/255; | ||||||
|     float cG = (float)color.g/255; |     float cG = (float)color.g/255; | ||||||
| @@ -1840,7 +1840,7 @@ void ImageColorInvert(Image *image) | |||||||
|     // 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); |     Color *pixels = LoadImageColors(*image); | ||||||
|  |  | ||||||
|     for (int y = 0; y < image->height; y++) |     for (int y = 0; y < image->height; y++) | ||||||
|     { |     { | ||||||
| @@ -1880,7 +1880,7 @@ void ImageColorContrast(Image *image, float contrast) | |||||||
|     contrast = (100.0f + contrast)/100.0f; |     contrast = (100.0f + contrast)/100.0f; | ||||||
|     contrast *= contrast; |     contrast *= contrast; | ||||||
|  |  | ||||||
|     Color *pixels = GetImageData(*image); |     Color *pixels = LoadImageColors(*image); | ||||||
|  |  | ||||||
|     for (int y = 0; y < image->height; y++) |     for (int y = 0; y < image->height; y++) | ||||||
|     { |     { | ||||||
| @@ -1935,7 +1935,7 @@ void ImageColorBrightness(Image *image, int brightness) | |||||||
|     if (brightness < -255) brightness = -255; |     if (brightness < -255) brightness = -255; | ||||||
|     if (brightness > 255) brightness = 255; |     if (brightness > 255) brightness = 255; | ||||||
|  |  | ||||||
|     Color *pixels = GetImageData(*image); |     Color *pixels = LoadImageColors(*image); | ||||||
|  |  | ||||||
|     for (int y = 0; y < image->height; y++) |     for (int y = 0; y < image->height; y++) | ||||||
|     { |     { | ||||||
| @@ -1975,7 +1975,7 @@ void ImageColorReplace(Image *image, Color color, Color replace) | |||||||
|     // 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); |     Color *pixels = LoadImageColors(*image); | ||||||
|  |  | ||||||
|     for (int y = 0; y < image->height; y++) |     for (int y = 0; y < image->height; y++) | ||||||
|     { |     { | ||||||
| @@ -2004,8 +2004,9 @@ void ImageColorReplace(Image *image, Color color, Color replace) | |||||||
| } | } | ||||||
| #endif      // SUPPORT_IMAGE_MANIPULATION | #endif      // SUPPORT_IMAGE_MANIPULATION | ||||||
|  |  | ||||||
| // Get pixel data from image in the form of Color struct array | // Load color data from image as a Color array (RGBA - 32bit) | ||||||
| Color *GetImageData(Image image) | // NOTE: Memory allocated should be freed using UnloadImageColors(); | ||||||
|  | Color *LoadImageColors(Image image) | ||||||
| { | { | ||||||
|     if ((image.width == 0) || (image.height == 0)) return NULL; |     if ((image.width == 0) || (image.height == 0)) return NULL; | ||||||
|  |  | ||||||
| @@ -2121,59 +2122,76 @@ Color *GetImageData(Image image) | |||||||
|     return pixels; |     return pixels; | ||||||
| } | } | ||||||
|  |  | ||||||
| // Get color palette from image to maximum size | // Load colors palette from image as a Color array (RGBA - 32bit) | ||||||
| // NOTE: Memory allocated should be freed manually! | // NOTE: Memory allocated should be freed using UnloadImagePalette() | ||||||
| Color *GetImagePalette(Image image, int maxPaletteSize, int *extractCount) | Color *LoadImagePalette(Image image, int maxPaletteSize, int *colorsCount) | ||||||
| { | { | ||||||
|     #define COLOR_EQUAL(col1, col2) ((col1.r == col2.r)&&(col1.g == col2.g)&&(col1.b == col2.b)&&(col1.a == col2.a)) |     #define COLOR_EQUAL(col1, col2) ((col1.r == col2.r)&&(col1.g == col2.g)&&(col1.b == col2.b)&&(col1.a == col2.a)) | ||||||
|  |  | ||||||
|     Color *pixels = GetImageData(image); |  | ||||||
|     Color *palette = (Color *)RL_MALLOC(maxPaletteSize*sizeof(Color)); |  | ||||||
|  |  | ||||||
|     int palCount = 0; |     int palCount = 0; | ||||||
|     for (int i = 0; i < maxPaletteSize; i++) palette[i] = BLANK;   // Set all colors to BLANK |     Color *palette = NULL; | ||||||
|  |     Color *pixels = LoadImageColors(image); | ||||||
|  |  | ||||||
|     for (int i = 0; i < image.width*image.height; i++) |     if (pixels != NULL) | ||||||
|     { |     { | ||||||
|         if (pixels[i].a > 0) |         palette = (Color *)RL_MALLOC(maxPaletteSize*sizeof(Color)); | ||||||
|  |  | ||||||
|  |         for (int i = 0; i < maxPaletteSize; i++) palette[i] = BLANK;   // Set all colors to BLANK | ||||||
|  |  | ||||||
|  |         for (int i = 0; i < image.width*image.height; i++) | ||||||
|         { |         { | ||||||
|             bool colorInPalette = false; |             if (pixels[i].a > 0) | ||||||
|  |  | ||||||
|             // Check if the color is already on palette |  | ||||||
|             for (int j = 0; j < maxPaletteSize; j++) |  | ||||||
|             { |             { | ||||||
|                 if (COLOR_EQUAL(pixels[i], palette[j])) |                 bool colorInPalette = false; | ||||||
|  |  | ||||||
|  |                 // Check if the color is already on palette | ||||||
|  |                 for (int j = 0; j < maxPaletteSize; j++) | ||||||
|                 { |                 { | ||||||
|                     colorInPalette = true; |                     if (COLOR_EQUAL(pixels[i], palette[j])) | ||||||
|                     break; |                     { | ||||||
|  |                         colorInPalette = true; | ||||||
|  |                         break; | ||||||
|  |                     } | ||||||
|                 } |                 } | ||||||
|             } |  | ||||||
|  |  | ||||||
|             // Store color if not on the palette |                 // Store color if not on the palette | ||||||
|             if (!colorInPalette) |                 if (!colorInPalette) | ||||||
|             { |  | ||||||
|                 palette[palCount] = pixels[i];      // Add pixels[i] to palette |  | ||||||
|                 palCount++; |  | ||||||
|  |  | ||||||
|                 // We reached the limit of colors supported by palette |  | ||||||
|                 if (palCount >= maxPaletteSize) |  | ||||||
|                 { |                 { | ||||||
|                     i = image.width*image.height;   // Finish palette get |                     palette[palCount] = pixels[i];      // Add pixels[i] to palette | ||||||
|                     TRACELOG(LOG_WARNING, "IMAGE: Palette is greater than %i colors", maxPaletteSize); |                     palCount++; | ||||||
|  |  | ||||||
|  |                     // We reached the limit of colors supported by palette | ||||||
|  |                     if (palCount >= maxPaletteSize) | ||||||
|  |                     { | ||||||
|  |                         i = image.width*image.height;   // Finish palette get | ||||||
|  |                         TRACELOG(LOG_WARNING, "IMAGE: Palette is greater than %i colors", maxPaletteSize); | ||||||
|  |                     } | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         UnloadImagePixels(pixels); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     RL_FREE(pixels); |     *colorsCount = palCount; | ||||||
|  |  | ||||||
|     *extractCount = palCount; |  | ||||||
|  |  | ||||||
|     return palette; |     return palette; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // Unload color data loaded with LoadImageColors() | ||||||
|  | void UnloadImageColors(Color *colors) | ||||||
|  | { | ||||||
|  |     RL_FREE(colors); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Unload colors palette loaded with LoadImagePalette() | ||||||
|  | void UnloadImagePalette(Color *colors) | ||||||
|  | { | ||||||
|  |     RL_FREE(palette); | ||||||
|  | } | ||||||
|  |  | ||||||
| // Get pixel data from image as Vector4 array (float normalized) | // Get pixel data from image as Vector4 array (float normalized) | ||||||
| static Vector4 *GetImageDataNormalized(Image image) | static Vector4 *LoadImageDataNormalized(Image image) | ||||||
| { | { | ||||||
|     Vector4 *pixels = (Vector4 *)RL_MALLOC(image.width*image.height*sizeof(Vector4)); |     Vector4 *pixels = (Vector4 *)RL_MALLOC(image.width*image.height*sizeof(Vector4)); | ||||||
|  |  | ||||||
| @@ -2289,7 +2307,7 @@ Rectangle GetImageAlphaBorder(Image image, float threshold) | |||||||
| { | { | ||||||
|     Rectangle crop = { 0 }; |     Rectangle crop = { 0 }; | ||||||
|  |  | ||||||
|     Color *pixels = GetImageData(image); |     Color *pixels = LoadImageColors(image); | ||||||
|  |  | ||||||
|     if (pixels != NULL) |     if (pixels != NULL) | ||||||
|     { |     { | ||||||
| @@ -2318,7 +2336,7 @@ Rectangle GetImageAlphaBorder(Image image, float threshold) | |||||||
|             crop = (Rectangle){ (float)xMin, (float)yMin, (float)((xMax + 1) - xMin), (float)((yMax + 1) - yMin) }; |             crop = (Rectangle){ (float)xMin, (float)yMin, (float)((xMax + 1) - xMin), (float)((yMax + 1) - yMin) }; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         RL_FREE(pixels); |         UnloadImageColors(pixels); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return crop; |     return crop; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ray
					Ray