Quellcode durchsuchen

Added: ImageResizeCanvas() -WIP-

Added note idea on ImageFormat() for future redesign (to support
16bit-32bit pixel-formats)
Ray vor 7 Jahren
Ursprung
Commit
2536bea379
2 geänderte Dateien mit 18 neuen und 2 gelöschten Zeilen
  1. 3 2
      src/raylib.h
  2. 15 0
      src/textures.c

+ 3 - 2
src/raylib.h

@@ -912,8 +912,9 @@ RLAPI void ImageAlphaClear(Image *image, Color color, float threshold);
 RLAPI void ImageAlphaCrop(Image *image, float threshold);                                                // Crop image depending on alpha value
 RLAPI void ImageAlphaPremultiply(Image *image);                                                          // Premultiply alpha channel
 RLAPI void ImageCrop(Image *image, Rectangle crop);                                                      // Crop an image to a defined rectangle
-RLAPI void ImageResize(Image *image, int newWidth, int newHeight);                                       // Resize and image (bilinear filtering)
-RLAPI void ImageResizeNN(Image *image,int newWidth,int newHeight);                                       // Resize and image (Nearest-Neighbor scaling algorithm)
+RLAPI void ImageResize(Image *image, int newWidth, int newHeight);                                       // Resize image (bilinear filtering)
+RLAPI void ImageResizeNN(Image *image, int newWidth,int newHeight);                                      // Resize image (Nearest-Neighbor scaling algorithm)
+RLAPI void ImageResizeCanvas(Image *image, int newWidth,int newHeight, int anchor, Color color);         // Resize canvas, using anchor point and color filling
 RLAPI void ImageMipmaps(Image *image);                                                                   // Generate all mipmap levels for a provided image
 RLAPI void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp);                            // Dither image data to 16bpp or lower (Floyd-Steinberg dithering)
 RLAPI Image ImageText(const char *text, int fontSize, Color color);                                      // Create an image from text (default font)

+ 15 - 0
src/textures.c

@@ -664,6 +664,7 @@ void ImageFormat(Image *image, int newFormat)
         if ((image->format < COMPRESSED_DXT1_RGB) && (newFormat < COMPRESSED_DXT1_RGB))
         {
             Color *pixels = GetImageData(*image);
+            //Vector4 *pixels = GetImageDataNormalized(*image);     // TODO: Support 8->32bit channels
 
             free(image->data);      // WARNING! We loose mipmaps data --> Regenerated at the end...
             image->data = NULL;
@@ -1066,6 +1067,20 @@ void ImageResizeNN(Image *image,int newWidth,int newHeight)
     free(pixels);
 }
 
+// Resize canvas, using anchor point and color filling
+void ImageResizeCanvas(Image *image, int newWidth,int newHeight, int anchor, Color color)
+{
+    Image imTemp = GenImageColor(newWidth, newHeight, color);
+    Rectangle rec = { 0, 0, image->width, image->height };
+    
+    // TODO: consider anchor properly
+    
+    ImageDraw(&imTemp, *image, rec, rec);
+    ImageFormat(&imTemp, image->format);
+    UnloadImage(*image);
+    *image = imTemp;
+}
+
 // Generate all mipmap levels for a provided image
 // NOTE 1: Supports POT and NPOT images
 // NOTE 2: image.data is scaled to include mipmap levels