diff options
Diffstat (limited to 'amiga/bitmap.c')
-rw-r--r-- | amiga/bitmap.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/amiga/bitmap.c b/amiga/bitmap.c index 95b5f71d6..aabb6a3be 100644 --- a/amiga/bitmap.c +++ b/amiga/bitmap.c @@ -292,6 +292,16 @@ void ami_bitmap_argb_to_rgba(struct bitmap *bm) data[i] = (data[i] << 8) | (data[i] >> 24); } } + +void ami_bitmap_rgba_to_argb(struct bitmap *bm) +{ + if(bm == NULL) return; + + ULONG *data = (ULONG *)bitmap_get_buffer(bm); + for(int i = 0; i < ((bitmap_get_rowstride(bm) / sizeof(ULONG)) * bitmap_get_height(bm)); i++) { + data[i] = (data[i] >> 8) | (data[i] << 24); + } +} #endif #ifdef BITMAP_DUMP @@ -345,6 +355,14 @@ Object *ami_datatype_object_from_bitmap(struct bitmap *bitmap) IDoMethod(dto, PDTM_WRITEPIXELARRAY, bitmap_get_buffer(bitmap), PBPAFMT_RGBA, bitmap_get_rowstride(bitmap), 0, 0, bitmap_get_width(bitmap), bitmap_get_height(bitmap)); +#if 0 + ami_bitmap_rgba_to_argb(bitmap); + IDoMethod(dto, PDTM_WRITEPIXELARRAY, bitmap_get_buffer(bitmap), + PBPAFMT_ARGB, bitmap_get_rowstride(bitmap), 0, 0, + bitmap_get_width(bitmap), bitmap_get_height(bitmap)); + ami_bitmap_argb_to_rgb(bitmap); +#endif + } return dto; |