w3m

Unnamed repository; edit this file to name it for gitweb.
git clone https://logand.com/git/w3m.git/
Log | Files | Refs | README

commit c1028b3186d19b26bb644aca75f4d360ba9fae2e
parent 12be32e74cbd299d9e119a2ea7af287038797cb2
Author: ukai <ukai>
Date:   Wed, 26 Mar 2003 15:34:12 +0000

[w3m-dev 03833] gif animation with no delay_time
* w3mimg/fb/fb_w3mimg.c (w3mfb_show_image): skip delay<=0
* w3mimg/x11/x11_w3mimg.c (x11_image): add delay
	(x11_img_new): initialize delay
	(x11_load_image): initialize delay
	(x11_show_image): jump to last image if delay<=0
From: ABE Yuji <cbo46560@pop12.odn.ne.jp>

Diffstat:
MChangeLog | 9+++++++++
Mw3mimg/fb/fb_w3mimg.c | 4++++
Mw3mimg/x11/x11_w3mimg.c | 12++++++++++--
3 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,12 @@ +2003-03-27 ABE Yuji <cbo46560@pop12.odn.ne.jp> + + * [w3m-dev 03833] gif animation with no delay_time + * w3mimg/fb/fb_w3mimg.c (w3mfb_show_image): skip delay<=0 + * w3mimg/x11/x11_w3mimg.c (x11_image): add delay + (x11_img_new): initialize delay + (x11_load_image): initialize delay + (x11_show_image): jump to last image if delay<=0 + 2003-03-27 WATANABE Katsuyuki <knabe@sannet.ne.jp> * [w3m-dev 03831] fix typo diff --git a/w3mimg/fb/fb_w3mimg.c b/w3mimg/fb/fb_w3mimg.c @@ -92,6 +92,10 @@ w3mfb_show_image(w3mimg_op * self, W3MImage * img, int sx, int sy, frame = (FB_IMAGE **) img->pixmap; i = frame[0]->id; + while (i < frame[0]->num - 1 && frame[i]->delay <= 0) { + frame[0]->id += 1; + i = frame[0]->id; + } fb_image_draw(frame[i], x + self->offset_x, y + self->offset_y, sx, sy, (sw ? sw : img->width), (sh ? sh : img->height)); diff --git a/w3mimg/x11/x11_w3mimg.c b/w3mimg/x11/x11_w3mimg.c @@ -38,6 +38,7 @@ struct x11_image { int total; int no; int wait; + int delay; Pixmap *pixmap; }; @@ -215,6 +216,7 @@ x11_img_new(struct x11_info *xi, int w, int h, int n) img->no = 0; img->total = n; img->wait = 0; + img->delay = -1; return img; ERROR: @@ -342,12 +344,13 @@ x11_load_image(w3mimg_op * self, W3MImage * img, char *fname, int w, int h) for (i = 0; i < n; i++) { GdkPixbufFrame *frame; GdkPixbuf *org_pixbuf, *pixbuf; - int width, height, ofstx, ofsty; + int width, height, ofstx, ofsty, delay; frame = (GdkPixbufFrame *) g_list_nth_data(frames, i); org_pixbuf = gdk_pixbuf_frame_get_pixbuf(frame); ofstx = gdk_pixbuf_frame_get_x_offset(frame); ofsty = gdk_pixbuf_frame_get_y_offset(frame); + delay = gdk_pixbuf_frame_get_delay_time(frame); width = gdk_pixbuf_get_width(org_pixbuf); height = gdk_pixbuf_get_height(org_pixbuf); @@ -363,6 +366,8 @@ x11_load_image(w3mimg_op * self, W3MImage * img, char *fname, int w, int h) width = gdk_pixbuf_get_width(pixbuf); height = gdk_pixbuf_get_height(pixbuf); + if (delay >= 0) ximg->delay = delay; + if (i > 0) { switch (action) { case GDK_PIXBUF_FRAME_RETAIN: @@ -428,7 +433,10 @@ x11_show_image(w3mimg_op * self, W3MImage * img, int sx, int sy, int sw, (sh ? sh : img->height), x + self->offset_x, y + self->offset_y); #elif defined(USE_GDKPIXBUF) #define WAIT_CNT 4 - i = ximg->no; + if (ximg->delay <= 0) + i = ximg->total - 1; + else + i = ximg->no; XCopyArea(xi->display, ximg->pixmap[i], xi->window, xi->imageGC, sx, sy, (sw ? sw : img->width),