summaryrefslogtreecommitdiff
path: root/image
diff options
context:
space:
mode:
Diffstat (limited to 'image')
-rw-r--r--image/nssprite.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/image/nssprite.c b/image/nssprite.c
index 6a1f116b4..5a0a36f34 100644
--- a/image/nssprite.c
+++ b/image/nssprite.c
@@ -119,26 +119,26 @@ static bool nssprite_convert(struct content *c)
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
return false;
}
- unsigned char* imagebuf = bitmap_get_buffer(nssprite->bitmap);
+ uint32_t* imagebuf = (uint32_t *)bitmap_get_buffer(nssprite->bitmap);
if (!imagebuf) {
msg_data.error = messages_get("NoMemory");
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
return false;
}
unsigned int row_width = bitmap_get_rowstride(nssprite->bitmap);
-
- memcpy(imagebuf, sprite->image, row_width * sprite->height); // TODO: avoid copying entire image buffer
+ unsigned char *spritebuf = (unsigned char *)sprite->image;
/* reverse byte order of each word */
for (uint32_t y = 0; y < sprite->height; y++) {
for (uint32_t x = 0; x < sprite->width; x++) {
int offset = 4 * (y * sprite->width + x);
- uint32_t rgba = 0;
- rgba |= imagebuf[offset] << 24;
- rgba |= imagebuf[offset + 1] << 16;
- rgba |= imagebuf[offset + 2] << 8;
- rgba |= imagebuf[offset + 3];
+ *imagebuf = (spritebuf[offset] << 24) |
+ (spritebuf[offset + 1] << 16) |
+ (spritebuf[offset + 2] << 8) |
+ (spritebuf[offset + 3]);
+
+ imagebuf++;
}
}