From 47168523d5e209f23c6b6a63ac8c731309ce689b Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Thu, 11 Sep 2003 18:37:25 +0000 Subject: [project @ 2003-09-11 18:37:25 by jmb] Fix sprite support svn path=/import/netsurf/; revision=284 --- riscos/sprite.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'riscos') diff --git a/riscos/sprite.c b/riscos/sprite.c index 50ec53b37..4d59334f5 100644 --- a/riscos/sprite.c +++ b/riscos/sprite.c @@ -17,8 +17,8 @@ void sprite_create(struct content *c) { - c->data.sprite.data = xcalloc(0, 1); - c->data.sprite.length = 0; + c->data.sprite.data = xcalloc(4, 1); + c->data.sprite.length = 4; } @@ -36,8 +36,11 @@ int sprite_convert(struct content *c, unsigned int width, unsigned int height) os_error *error; int w, h; - error = xosspriteop_read_sprite_info(osspriteop_USER_AREA, - (osspriteop_area*)(c->data.sprite.data-4), + /* fill in the size (first word) of the area */ + memcpy(c->data.sprite.data, (char*)&c->data.sprite.length, 4); + + error = xosspriteop_read_sprite_info(osspriteop_PTR, + (osspriteop_area*)(c->data.sprite.data), (osspriteop_id)((osspriteop_area*)c->data.sprite.data + 1), &w, &h, NULL, NULL); @@ -82,13 +85,13 @@ void sprite_redraw(struct content *c, long x, long y, os_factors factors; xcolourtrans_generate_table_for_sprite( - (osspriteop_area*)(c->data.sprite.data-4), + (osspriteop_area*)(c->data.sprite.data), (osspriteop_id) ((osspriteop_area*)c->data.sprite.data + 1), colourtrans_CURRENT_MODE, colourtrans_CURRENT_PALETTE, 0, colourtrans_GIVEN_SPRITE, 0, 0, &size); table = xcalloc(size, 1); xcolourtrans_generate_table_for_sprite( - (osspriteop_area*)(c->data.sprite.data-4), + (osspriteop_area*)(c->data.sprite.data), (osspriteop_id) ((osspriteop_area*)c->data.sprite.data + 1), colourtrans_CURRENT_MODE, colourtrans_CURRENT_PALETTE, table, colourtrans_GIVEN_SPRITE, 0, 0, 0); @@ -98,8 +101,8 @@ void sprite_redraw(struct content *c, long x, long y, factors.xdiv = c->width * 2; factors.ydiv = c->height * 2; - xosspriteop_put_sprite_scaled(osspriteop_USER_AREA, - (osspriteop_area*)(c->data.sprite.data-4), + xosspriteop_put_sprite_scaled(osspriteop_PTR, + (osspriteop_area*)(c->data.sprite.data), (osspriteop_id) ((osspriteop_area*)c->data.sprite.data + 1), x, y - height, osspriteop_USE_MASK | osspriteop_USE_PALETTE, &factors, table); -- cgit v1.2.3