From 775a822035a5a49b65e33a79e92df0a06cae46a8 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Tue, 7 Jun 2016 19:38:33 -0500 Subject: [PATCH] Actually implement cammy_image_copy() --- include/cammy/image.h | 2 +- src/image.c | 32 +++++++++++++++++++++++++------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/include/cammy/image.h b/include/cammy/image.h index ce2d694..18136e3 100644 --- a/include/cammy/image.h +++ b/include/cammy/image.h @@ -26,7 +26,7 @@ typedef struct _cammy_image { union { uint8_t *buf; - cammy_tile *tile; + cammy_tile *tiles; }; } cammy_image; diff --git a/src/image.c b/src/image.c index e96f55e..a5c0d09 100644 --- a/src/image.c +++ b/src/image.c @@ -155,8 +155,8 @@ cammy_image *cammy_image_open_tile(const char *filename, goto error_malloc_image; } - if ((image->tile = malloc(size)) == NULL) { - goto error_malloc_buf; + if ((image->tiles = malloc(size)) == NULL) { + goto error_malloc_tiles; } for (off=0; offbuf); + free(image->tiles); -error_malloc_buf: +error_malloc_tiles: free(image); error_malloc_image: @@ -311,9 +311,27 @@ void cammy_image_copy(cammy_image *dest, size_t y_src, size_t width, size_t height) { - size_t y, y_max = y_src + height; + size_t x_offset, + y_offset; - for (y=y_src; y dest->height) { + break; + } + + for (x_offset=0; x_offsettiles, x_src + x_offset, + y_src + y_offset, + src->width); + + if (x_dest + x_offset > dest->width) { + break; + } + + tile_write(dest->tiles, x_dest + x_offset, + y_dest + y_offset, + dest->width, + value); + } } }