diff options
Diffstat (limited to 'amiga')
-rw-r--r-- | amiga/dt_anim.c | 27 | ||||
-rw-r--r-- | amiga/dt_picture.c | 38 | ||||
-rw-r--r-- | amiga/icon.c | 38 |
3 files changed, 70 insertions, 33 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); } /** diff --git a/amiga/dt_picture.c b/amiga/dt_picture.c index ebf8ba3fe..b36352506 100644 --- a/amiga/dt_picture.c +++ b/amiga/dt_picture.c @@ -40,6 +40,8 @@ typedef struct amiga_dt_picture_content { struct content base; + struct bitmap *bitmap; /**< Created NetSurf bitmap */ + Object *dto; int x; int y; @@ -59,12 +61,20 @@ static bool amiga_dt_picture_redraw(struct content *c, static nserror amiga_dt_picture_clone(const struct content *old, struct content **newc); static content_type amiga_dt_picture_content_type(lwc_string *mime_type); +static void *amiga_dt_picture_get_internal(const struct content *c, void *context) +{ + amiga_dt_picture_content *pic_c = (amiga_dt_picture_content *) c; + + return pic_c->bitmap; +} + static const content_handler amiga_dt_picture_content_handler = { .create = amiga_dt_picture_create, .data_complete = amiga_dt_picture_convert, .destroy = amiga_dt_picture_destroy, .redraw = amiga_dt_picture_redraw, .clone = amiga_dt_picture_clone, + .get_internal = amiga_dt_picture_get_internal, .type = amiga_dt_picture_content_type, .no_share = false, }; @@ -171,17 +181,17 @@ bool amiga_dt_picture_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); IDoMethod(plugin->dto, PDTM_READPIXELARRAY, - bm_buffer, bm_format, bitmap_get_rowstride(c->bitmap), + bm_buffer, bm_format, bitmap_get_rowstride(plugin->bitmap), 0, 0, width, height); } else return false; @@ -197,7 +207,7 @@ bool amiga_dt_picture_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); @@ -212,8 +222,9 @@ void amiga_dt_picture_destroy(struct content *c) LOG(("amiga_dt_picture_destroy")); - if (c->bitmap != NULL) - bitmap_destroy(c->bitmap); + if (plugin->bitmap != NULL) { + bitmap_destroy(plugin->bitmap); + } DisposeDTObject(plugin->dto); @@ -221,19 +232,22 @@ void amiga_dt_picture_destroy(struct content *c) } bool amiga_dt_picture_redraw(struct content *c, - struct content_redraw_data *data, const struct rect *clip, + struct content_redraw_data *data, + const struct rect *clip, const struct redraw_context *ctx) { - LOG(("amiga_dt_picture_redraw")); + amiga_dt_picture_content *plugin = (amiga_dt_picture_content *) c; bitmap_flags_t flags = BITMAPF_NONE; + LOG(("amiga_dt_picture_redraw")); + 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); } nserror amiga_dt_picture_clone(const struct content *old, struct content **newc) @@ -254,8 +268,8 @@ nserror amiga_dt_picture_clone(const struct content *old, struct content **newc) } /* We "clone" the old content by replaying conversion */ - if (old->status == CONTENT_STATUS_READY || - old->status == CONTENT_STATUS_DONE) { + if ((old->status == CONTENT_STATUS_READY) || + (old->status == CONTENT_STATUS_DONE)) { if (amiga_dt_picture_convert(&plugin->base) == false) { content_destroy(&plugin->base); return NSERROR_CLONE_FAILED; diff --git a/amiga/icon.c b/amiga/icon.c index afa1d4c1a..eb6725efc 100644 --- a/amiga/icon.c +++ b/amiga/icon.c @@ -58,6 +58,8 @@ ULONG *amiga_icon_convertcolouricon32(UBYTE *icondata, ULONG width, ULONG height typedef struct amiga_icon_content { struct content base; + + struct bitmap *bitmap; /**< Created NetSurf bitmap */ } amiga_icon_content; static nserror amiga_icon_create(const content_handler *handler, @@ -73,12 +75,20 @@ static nserror amiga_icon_clone(const struct content *old, struct content **newc); static content_type amiga_icon_content_type(lwc_string *mime_type); +static void *amiga_icon_get_internal(const struct content *c, void *context) +{ + amiga_icon_content *icon_c = (amiga_icon_content *)c; + + return icon_c->bitmap; +} + static const content_handler amiga_icon_content_handler = { .create = amiga_icon_create, .data_complete = amiga_icon_convert, .destroy = amiga_icon_destroy, .redraw = amiga_icon_redraw, .clone = amiga_icon_clone, + .get_internal = amiga_icon_get_internal, .type = amiga_icon_content_type, .no_share = false, }; @@ -134,21 +144,21 @@ nserror amiga_icon_create(const content_handler *handler, llcache_handle *llcache, const char *fallback_charset, bool quirks, struct content **c) { - amiga_icon_content *ai; + amiga_icon_content *ai_content; nserror error; - ai = talloc_zero(0, amiga_icon_content); - if (ai == NULL) + ai_content = talloc_zero(0, amiga_icon_content); + if (ai_content == NULL) return NSERROR_NOMEM; - error = content__init(&ai->base, handler, imime_type, params, + error = content__init(&ai_content->base, handler, imime_type, params, llcache, fallback_charset, quirks); if (error != NSERROR_OK) { - talloc_free(ai); + talloc_free(ai_content); return error; } - *c = (struct content *) ai; + *c = (struct content *)ai_content; return NSERROR_OK; } @@ -161,6 +171,7 @@ nserror amiga_icon_create(const content_handler *handler, bool amiga_icon_convert(struct content *c) { + amiga_icon_content *icon_c = (amiga_icon_content *)c; union content_msg_data msg_data; struct DiskObject *dobj; ULONG *imagebuf; @@ -213,8 +224,8 @@ bool amiga_icon_convert(struct content *c) return false; } - c->bitmap = bitmap_create(width, height, BITMAP_NEW); - if (!c->bitmap) { + icon_c->bitmap = bitmap_create(width, height, BITMAP_NEW); + if (!icon_c->bitmap) { msg_data.error = messages_get("NoMemory"); content_broadcast(c, CONTENT_MSG_ERROR, msg_data); if(dobj) FreeDiskObject(dobj); @@ -260,7 +271,7 @@ bool amiga_icon_convert(struct content *c) c->width = width; c->height = height; - bitmap_modified(c->bitmap); + bitmap_modified(icon_c->bitmap); content_set_ready(c); content_set_done(c); content_set_status(c, ""); @@ -280,8 +291,10 @@ bool amiga_icon_convert(struct content *c) void amiga_icon_destroy(struct content *c) { - if (c->bitmap != NULL) - bitmap_destroy(c->bitmap); + amiga_icon_content *icon_c = (amiga_icon_content *)c; + + if (icon_c->bitmap != NULL) + bitmap_destroy(icon_c->bitmap); } @@ -293,6 +306,7 @@ bool amiga_icon_redraw(struct content *c, struct content_redraw_data *data, const struct rect *clip, const struct redraw_context *ctx) { + amiga_icon_content *icon_c = (amiga_icon_content *)c; bitmap_flags_t flags = BITMAPF_NONE; if (data->repeat_x) @@ -301,7 +315,7 @@ bool amiga_icon_redraw(struct content *c, flags |= BITMAPF_REPEAT_Y; return ctx->plot->bitmap(data->x, data->y, data->width, data->height, - c->bitmap, data->background_colour, flags); + icon_c->bitmap, data->background_colour, flags); } |