summaryrefslogtreecommitdiffhomepage
path: root/src/textures.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/textures.c')
-rw-r--r--src/textures.c56
1 files changed, 54 insertions, 2 deletions
diff --git a/src/textures.c b/src/textures.c
index 3a62ac14..0b9f907e 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -1539,7 +1539,7 @@ void ImageDrawTextEx(Image *dst, Vector2 position, Font font, const char *text,
void ImageFlipVertical(Image *image)
{
Color *srcPixels = GetImageData(*image);
- Color *dstPixels = (Color *)malloc(sizeof(Color)*image->width*image->height);
+ Color *dstPixels = (Color *)malloc(image->width*image->height*sizeof(Color));
for (int y = 0; y < image->height; y++)
{
@@ -1563,7 +1563,7 @@ void ImageFlipVertical(Image *image)
void ImageFlipHorizontal(Image *image)
{
Color *srcPixels = GetImageData(*image);
- Color *dstPixels = (Color *)malloc(sizeof(Color)*image->width*image->height);
+ Color *dstPixels = (Color *)malloc(image->width*image->height*sizeof(Color));
for (int y = 0; y < image->height; y++)
{
@@ -1583,6 +1583,58 @@ void ImageFlipHorizontal(Image *image)
image->data = processed.data;
}
+// Rotate image clockwise 90deg
+void ImageRotateCW(Image *image)
+{
+ Color *srcPixels = GetImageData(*image);
+ Color *rotPixels = (Color *)malloc(image->width*image->height*sizeof(Color));
+
+ for (int y = 0; y < image->height; y++)
+ {
+ for (int x = 0; x < image->width; x++)
+ {
+ rotPixels[x*image->height + (image->height - y - 1)] = srcPixels[y*image->width + x];
+ }
+ }
+
+ Image processed = LoadImageEx(rotPixels, image->height, image->width);
+ ImageFormat(&processed, image->format);
+ UnloadImage(*image);
+
+ free(srcPixels);
+ free(rotPixels);
+
+ image->data = processed.data;
+ image->width = processed.width;
+ image->height = processed.height;
+}
+
+// Rotate image counter-clockwise 90deg
+void ImageRotateCCW(Image *image)
+{
+ Color *srcPixels = GetImageData(*image);
+ Color *rotPixels = (Color *)malloc(image->width*image->height*sizeof(Color));
+
+ for (int y = 0; y < image->height; y++)
+ {
+ for (int x = 0; x < image->width; x++)
+ {
+ rotPixels[x*image->height + y] = srcPixels[y*image->width + (image->width - x - 1)];
+ }
+ }
+
+ Image processed = LoadImageEx(rotPixels, image->height, image->width);
+ ImageFormat(&processed, image->format);
+ UnloadImage(*image);
+
+ free(srcPixels);
+ free(rotPixels);
+
+ image->data = processed.data;
+ image->width = processed.width;
+ image->height = processed.height;
+}
+
// Modify image color: tint
void ImageColorTint(Image *image, Color color)
{