summaryrefslogtreecommitdiffhomepage
path: root/src/textures.c
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2020-06-15 12:03:33 +0200
committerraysan5 <[email protected]>2020-06-15 12:03:33 +0200
commit691c1f9391119506c4bd7a92cf1b88e4046b0d3a (patch)
tree1c71b98d8372721eca71420cfdff84ab6de0f0a2 /src/textures.c
parentad954dc7abd854030791fcdbc64b32af592b3834 (diff)
downloadraylib-691c1f9391119506c4bd7a92cf1b88e4046b0d3a.tar.gz
raylib-691c1f9391119506c4bd7a92cf1b88e4046b0d3a.zip
REDESIGNED: ImageFromImage(), optimized #1218
Diffstat (limited to 'src/textures.c')
-rw-r--r--src/textures.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/textures.c b/src/textures.c
index 101eded8..e98efc59 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -776,9 +776,22 @@ Image ImageCopy(Image image)
// Create an image from another image piece
Image ImageFromImage(Image image, Rectangle rec)
{
- Image result = ImageCopy(image);
+ Image result = { 0 };
+
+ int bytesPerPixel = GetPixelDataSize(1, 1, image.format);
+
+ // TODO: Check rec is valid?
- ImageCrop(&result, rec);
+ result.width = rec.width;
+ result.height = rec.height;
+ result.data = RL_CALLOC(rec.width*rec.height*bytesPerPixel, 1);
+ result.format = image.format;
+ result.mipmaps = 1;
+
+ for (int y = 0; y < rec.height; y++)
+ {
+ memcpy(((unsigned char *)result.data) + y*(int)rec.width*bytesPerPixel, ((unsigned char *)image.data) + ((y + (int)rec.y)*image.width + (int)rec.x)*bytesPerPixel, (int)rec.width*bytesPerPixel);
+ }
return result;
}