summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
Diffstat (limited to 'riscos')
-rw-r--r--riscos/save_draw.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/riscos/save_draw.c b/riscos/save_draw.c
index d20450cde..c6df48093 100644
--- a/riscos/save_draw.c
+++ b/riscos/save_draw.c
@@ -282,23 +282,24 @@ void add_graphic(struct content *content, struct box *box,
drawfile_sprite *ds;
long sprite_length = 0;
+ /* cast-tastic... */
switch (content->type) {
case CONTENT_JPEG:
if (content->data.jpeg.use_module) {
sprite_length = -1;
}
else {
- sprite_length = content->data.jpeg.sprite_area->size;
+ sprite_length = ((osspriteop_header*)((char*)content->data.jpeg.sprite_area+content->data.jpeg.sprite_area->first))->size;
}
break;
case CONTENT_PNG:
- sprite_length = content->data.png.sprite_area->size;
+ sprite_length = ((osspriteop_header*)((char*)content->data.png.sprite_area+content->data.png.sprite_area->first))->size;
break;
case CONTENT_GIF:
- sprite_length = content->data.gif.sprite_area->size;
+ sprite_length = ((osspriteop_header*)((char*)content->data.gif.sprite_area+content->data.gif.sprite_area->first))->size;
break;
case CONTENT_SPRITE:
- sprite_length = content->data.sprite.length-16;
+ sprite_length = ((osspriteop_header*)((char*)content->data.sprite.data+(((osspriteop_area*)content->data.sprite.data)->first)))->size;
break;
default:
break;
@@ -320,19 +321,19 @@ void add_graphic(struct content *content, struct box *box,
switch (content->type) {
case CONTENT_JPEG:
- memcpy((char*)ds+16, content->data.jpeg.sprite_area+1,
+ memcpy((char*)ds+16, (char*)content->data.jpeg.sprite_area+content->data.jpeg.sprite_area->first,
(unsigned)sprite_length);
break;
case CONTENT_PNG:
- memcpy((char*)ds+16, content->data.png.sprite_area+1,
+ memcpy((char*)ds+16, (char*)content->data.png.sprite_area+content->data.png.sprite_area->first,
(unsigned)sprite_length);
break;
case CONTENT_GIF:
- memcpy((char*)ds+16, content->data.gif.sprite_area+1,
+ memcpy((char*)ds+16, (char*)content->data.gif.sprite_area+content->data.gif.sprite_area->first,
(unsigned)sprite_length);
break;
case CONTENT_SPRITE:
- memcpy((char*)ds+16, (char*)content->data.sprite.data+16,
+ memcpy((char*)ds+16, (char*)content->data.sprite.data+((osspriteop_area*)content->data.sprite.data)->first,
(unsigned)sprite_length);
break;
default: