Browse Source

Added ImageRotate*() functions

pull/558/head
Ray 6 years ago
parent
commit
0e6458cfee
4 changed files with 58 additions and 2 deletions
  1. +2
    -0
      release/include/raylib.h
  2. BIN
      release/libs/win32/tcc/libraylib.a
  3. +2
    -0
      src/raylib.h
  4. +54
    -2
      src/textures.c

+ 2
- 0
release/include/raylib.h View File

@ -925,6 +925,8 @@ RLAPI void ImageDrawText(Image *dst, Vector2 position, const char *text, int fon
RLAPI void ImageDrawTextEx(Image *dst, Vector2 position, Font font, const char *text, float fontSize, float spacing, Color color); // Draw text (custom sprite font) within an image (destination)
RLAPI void ImageFlipVertical(Image *image); // Flip image vertically
RLAPI void ImageFlipHorizontal(Image *image); // Flip image horizontally
RLAPI void ImageRotateCW(Image *image); // Rotate image clockwise 90deg
RLAPI void ImageRotateCCW(Image *image); // Rotate image counter-clockwise 90deg
RLAPI void ImageColorTint(Image *image, Color color); // Modify image color: tint
RLAPI void ImageColorInvert(Image *image); // Modify image color: invert
RLAPI void ImageColorGrayscale(Image *image); // Modify image color: grayscale

BIN
release/libs/win32/tcc/libraylib.a View File


+ 2
- 0
src/raylib.h View File

@ -925,6 +925,8 @@ RLAPI void ImageDrawText(Image *dst, Vector2 position, const char *text, int fon
RLAPI void ImageDrawTextEx(Image *dst, Vector2 position, Font font, const char *text, float fontSize, float spacing, Color color); // Draw text (custom sprite font) within an image (destination)
RLAPI void ImageFlipVertical(Image *image); // Flip image vertically
RLAPI void ImageFlipHorizontal(Image *image); // Flip image horizontally
RLAPI void ImageRotateCW(Image *image); // Rotate image clockwise 90deg
RLAPI void ImageRotateCCW(Image *image); // Rotate image counter-clockwise 90deg
RLAPI void ImageColorTint(Image *image, Color color); // Modify image color: tint
RLAPI void ImageColorInvert(Image *image); // Modify image color: invert
RLAPI void ImageColorGrayscale(Image *image); // Modify image color: grayscale

+ 54
- 2
src/textures.c View File

@ -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(k">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(k">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)
{

Loading…
Cancel
Save