summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2011-08-31 12:12:41 +0000
committerVincent Sanders <vince@netsurf-browser.org>2011-08-31 12:12:41 +0000
commit2348b134924e8b24fba02f068a16c6fb308af88a (patch)
treefbfcb267459fc9b970c3d0c6dc5153c1817e2b32 /amiga
parentd7b46332a8b799848d9c8080509191b6395f17e9 (diff)
downloadnetsurf-2348b134924e8b24fba02f068a16c6fb308af88a.tar.gz
netsurf-2348b134924e8b24fba02f068a16c6fb308af88a.tar.bz2
refactor bitmap out of generic content structure
svn path=/trunk/netsurf/; revision=12686
Diffstat (limited to 'amiga')
-rw-r--r--amiga/dt_anim.c27
-rw-r--r--amiga/dt_picture.c38
-rw-r--r--amiga/icon.c38
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);
}