diff options
Diffstat (limited to 'amiga/dt_anim.c')
-rw-r--r-- | amiga/dt_anim.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/amiga/dt_anim.c b/amiga/dt_anim.c index 54f9867d6..f5e20e958 100644 --- a/amiga/dt_anim.c +++ b/amiga/dt_anim.c @@ -44,6 +44,8 @@ typedef struct amiga_dt_anim_content { struct content base; + struct bitmap *bitmap; /**< Created NetSurf bitmap */ + Object *dto; int x; int y; @@ -70,6 +72,13 @@ static void amiga_dt_anim_close(struct content *c); static nserror amiga_dt_anim_clone(const struct content *old, struct content **newc); static content_type amiga_dt_anim_content_type(lwc_string *mime_type); +static void *amiga_dt_anim_get_internal(const struct content *c, void *context) +{ + amiga_dt_anim_content *adta_c = (amiga_dt_anim_content *)c; + + return adta_c->bitmap; +} + static const content_handler amiga_dt_anim_content_handler = { .create = amiga_dt_anim_create, .data_complete = amiga_dt_anim_convert, @@ -79,6 +88,7 @@ static const content_handler amiga_dt_anim_content_handler = { .open = amiga_dt_anim_open, .close = amiga_dt_anim_close, .clone = amiga_dt_anim_clone, + .get_internal = amiga_dt_anim_get_internal, .type = amiga_dt_anim_content_type, .no_share = false, }; @@ -183,14 +193,14 @@ bool amiga_dt_anim_convert(struct content *c) width = (int)bmh->bmh_Width; height = (int)bmh->bmh_Height; - c->bitmap = bitmap_create(width, height, bm_flags); - if (!c->bitmap) { + plugin->bitmap = bitmap_create(width, height, bm_flags); + if (!plugin->bitmap) { msg_data.error = messages_get("NoMemory"); content_broadcast(c, CONTENT_MSG_ERROR, msg_data); return false; } - bm_buffer = bitmap_get_buffer(c->bitmap); + bm_buffer = bitmap_get_buffer(plugin->bitmap); adt_frame.MethodID = ADTM_LOADFRAME; adt_frame.alf_TimeStamp = 0; @@ -227,7 +237,7 @@ bool amiga_dt_anim_convert(struct content *c) content__set_title(c, title); */ - bitmap_modified(c->bitmap); + bitmap_modified(plugin->bitmap); content_set_ready(c); content_set_done(c); @@ -242,8 +252,8 @@ void amiga_dt_anim_destroy(struct content *c) LOG(("amiga_dt_anim_destroy")); - if (c->bitmap != NULL) - bitmap_destroy(c->bitmap); + if (plugin->bitmap != NULL) + bitmap_destroy(plugin->bitmap); DisposeDTObject(plugin->dto); @@ -255,18 +265,17 @@ bool amiga_dt_anim_redraw(struct content *c, const struct redraw_context *ctx) { amiga_dt_anim_content *plugin = (amiga_dt_anim_content *) c; + bitmap_flags_t flags = BITMAPF_NONE; LOG(("amiga_dt_anim_redraw")); - bitmap_flags_t flags = BITMAPF_NONE; - if (data->repeat_x) flags |= BITMAPF_REPEAT_X; if (data->repeat_y) flags |= BITMAPF_REPEAT_Y; return ctx->plot->bitmap(data->x, data->y, data->width, data->height, - c->bitmap, data->background_colour, flags); + plugin->bitmap, data->background_colour, flags); } /** |