mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-03-12 01:53:09 +03:00
[project @ 2004-04-26 13:47:51 by bursa]
Fix scaled GIF animations. svn path=/import/netsurf/; revision=805
This commit is contained in:
parent
330a3bb64c
commit
199eee4b0b
@ -85,6 +85,8 @@ union content_msg_data {
|
||||
struct content *object;
|
||||
/** Coordinates to plot object at. */
|
||||
int object_x, object_y;
|
||||
/** Dimensions to plot object with. */
|
||||
int object_width, object_height;
|
||||
} redraw;
|
||||
char *auth_realm; /**< Realm, for CONTENT_MSG_AUTH. */
|
||||
};
|
||||
|
@ -675,10 +675,22 @@ void html_object_callback(content_msg msg, struct content *object,
|
||||
|
||||
case CONTENT_MSG_REDRAW:
|
||||
box_coords(box, &x, &y);
|
||||
data.redraw.x += x;
|
||||
data.redraw.y += y;
|
||||
data.redraw.object_x += x;
|
||||
data.redraw.object_y += y;
|
||||
if (box->object == data.redraw.object) {
|
||||
data.redraw.x = data.redraw.x *
|
||||
box->width / box->object->width;
|
||||
data.redraw.y = data.redraw.y *
|
||||
box->height / box->object->height;
|
||||
data.redraw.width = data.redraw.width *
|
||||
box->width / box->object->width;
|
||||
data.redraw.height = data.redraw.height *
|
||||
box->height / box->object->height;
|
||||
data.redraw.object_width = box->width;
|
||||
data.redraw.object_height = box->height;
|
||||
}
|
||||
data.redraw.x += x + box->padding[LEFT];
|
||||
data.redraw.y += y + box->padding[TOP];
|
||||
data.redraw.object_x += x + box->padding[LEFT];
|
||||
data.redraw.object_y += y + box->padding[TOP];
|
||||
content_broadcast(c, CONTENT_MSG_REDRAW, data);
|
||||
break;
|
||||
|
||||
|
@ -161,6 +161,8 @@ void nsgif_animate(void *p)
|
||||
data.redraw.object = c;
|
||||
data.redraw.object_x = 0;
|
||||
data.redraw.object_y = 0;
|
||||
data.redraw.object_width = c->width;
|
||||
data.redraw.object_height = c->height;
|
||||
content_broadcast(c, CONTENT_MSG_REDRAW, data);
|
||||
}
|
||||
|
||||
|
@ -275,10 +275,10 @@ void gui_window_update_box(gui_window *g, const union content_msg_data *data)
|
||||
wimp_draw update;
|
||||
|
||||
update.w = g->window;
|
||||
update.box.x0 = data->redraw.x * 2;
|
||||
update.box.y0 = -(data->redraw.y + data->redraw.height) * 2;
|
||||
update.box.x1 = (data->redraw.x + data->redraw.width) * 2;
|
||||
update.box.y1 = -data->redraw.y * 2;
|
||||
update.box.x0 = data->redraw.x * 2 * g->scale;
|
||||
update.box.y0 = -(data->redraw.y + data->redraw.height) * 2 * g->scale;
|
||||
update.box.x1 = (data->redraw.x + data->redraw.width) * 2 * g->scale;
|
||||
update.box.y1 = -data->redraw.y * 2 * g->scale;
|
||||
error = xwimp_update_window(&update, &more);
|
||||
if (error) {
|
||||
LOG(("xwimp_update_window: 0x%x: %s",
|
||||
@ -299,11 +299,11 @@ void gui_window_update_box(gui_window *g, const union content_msg_data *data)
|
||||
assert(data->redraw.object);
|
||||
content_redraw(data->redraw.object,
|
||||
update.box.x0 - update.xscroll +
|
||||
data->redraw.object_x * 2,
|
||||
data->redraw.object_x * 2 * g->scale,
|
||||
update.box.y1 - update.yscroll -
|
||||
data->redraw.object_y * 2,
|
||||
data->redraw.object->width * 2,
|
||||
data->redraw.object->height * 2,
|
||||
data->redraw.object_y * 2 * g->scale,
|
||||
data->redraw.object_width * 2 * g->scale,
|
||||
data->redraw.object_height * 2 * g->scale,
|
||||
update.clip.x0, update.clip.y0,
|
||||
update.clip.x1 - 1, update.clip.y1 - 1,
|
||||
g->scale);
|
||||
|
Loading…
x
Reference in New Issue
Block a user