summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRay <[email protected]>2018-06-01 00:53:40 +0200
committerRay <[email protected]>2018-06-01 00:53:40 +0200
commit2536bea379387e525e3107ee07355292ee87a566 (patch)
treecf5d014793d54bd26735cb776b729814b7cb5a78
parent129c890a28b50c2ce3820e3745f8c89c8833f02c (diff)
downloadraylib-2536bea379387e525e3107ee07355292ee87a566.tar.gz
raylib-2536bea379387e525e3107ee07355292ee87a566.zip
Added: ImageResizeCanvas() -WIP-
Added note idea on ImageFormat() for future redesign (to support 16bit-32bit pixel-formats)
-rw-r--r--src/raylib.h5
-rw-r--r--src/textures.c15
2 files changed, 18 insertions, 2 deletions
diff --git a/src/raylib.h b/src/raylib.h
index e83650e6..2659d70d 100644
--- a/src/raylib.h
+++ b/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)
diff --git a/src/textures.c b/src/textures.c
index 0aac923f..239b7cf5 100644
--- a/src/textures.c
+++ b/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