[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>
This commit is contained in:
11
ChangeLog
11
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>
|
2003-03-27 WATANABE Katsuyuki <knabe@sannet.ne.jp>
|
||||||
|
|
||||||
* [w3m-dev 03831] fix typo
|
* [w3m-dev 03831] fix typo
|
||||||
@@ -7596,4 +7605,4 @@ a * [w3m-dev 03276] compile error on EWS4800
|
|||||||
* release-0-2-1
|
* release-0-2-1
|
||||||
* import w3m-0.2.1
|
* import w3m-0.2.1
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.803 2003/03/26 15:19:35 ukai Exp $
|
$Id: ChangeLog,v 1.804 2003/03/26 15:34:12 ukai Exp $
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: fb_w3mimg.c,v 1.9 2003/03/24 15:46:00 ukai Exp $ */
|
/* $Id: fb_w3mimg.c,v 1.10 2003/03/26 15:34:19 ukai Exp $ */
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@@ -92,6 +92,10 @@ w3mfb_show_image(w3mimg_op * self, W3MImage * img, int sx, int sy,
|
|||||||
|
|
||||||
frame = (FB_IMAGE **) img->pixmap;
|
frame = (FB_IMAGE **) img->pixmap;
|
||||||
i = frame[0]->id;
|
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],
|
fb_image_draw(frame[i],
|
||||||
x + self->offset_x, y + self->offset_y,
|
x + self->offset_x, y + self->offset_y,
|
||||||
sx, sy, (sw ? sw : img->width), (sh ? sh : img->height));
|
sx, sy, (sw ? sw : img->width), (sh ? sh : img->height));
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* $Id: x11_w3mimg.c,v 1.15 2003/03/26 15:14:23 ukai Exp $ */
|
/* $Id: x11_w3mimg.c,v 1.16 2003/03/26 15:34:20 ukai Exp $ */
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@@ -38,6 +38,7 @@ struct x11_image {
|
|||||||
int total;
|
int total;
|
||||||
int no;
|
int no;
|
||||||
int wait;
|
int wait;
|
||||||
|
int delay;
|
||||||
Pixmap *pixmap;
|
Pixmap *pixmap;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -215,6 +216,7 @@ x11_img_new(struct x11_info *xi, int w, int h, int n)
|
|||||||
img->no = 0;
|
img->no = 0;
|
||||||
img->total = n;
|
img->total = n;
|
||||||
img->wait = 0;
|
img->wait = 0;
|
||||||
|
img->delay = -1;
|
||||||
|
|
||||||
return img;
|
return img;
|
||||||
ERROR:
|
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++) {
|
for (i = 0; i < n; i++) {
|
||||||
GdkPixbufFrame *frame;
|
GdkPixbufFrame *frame;
|
||||||
GdkPixbuf *org_pixbuf, *pixbuf;
|
GdkPixbuf *org_pixbuf, *pixbuf;
|
||||||
int width, height, ofstx, ofsty;
|
int width, height, ofstx, ofsty, delay;
|
||||||
|
|
||||||
frame = (GdkPixbufFrame *) g_list_nth_data(frames, i);
|
frame = (GdkPixbufFrame *) g_list_nth_data(frames, i);
|
||||||
org_pixbuf = gdk_pixbuf_frame_get_pixbuf(frame);
|
org_pixbuf = gdk_pixbuf_frame_get_pixbuf(frame);
|
||||||
ofstx = gdk_pixbuf_frame_get_x_offset(frame);
|
ofstx = gdk_pixbuf_frame_get_x_offset(frame);
|
||||||
ofsty = gdk_pixbuf_frame_get_y_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);
|
width = gdk_pixbuf_get_width(org_pixbuf);
|
||||||
height = gdk_pixbuf_get_height(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);
|
width = gdk_pixbuf_get_width(pixbuf);
|
||||||
height = gdk_pixbuf_get_height(pixbuf);
|
height = gdk_pixbuf_get_height(pixbuf);
|
||||||
|
|
||||||
|
if (delay >= 0) ximg->delay = delay;
|
||||||
|
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case GDK_PIXBUF_FRAME_RETAIN:
|
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);
|
(sh ? sh : img->height), x + self->offset_x, y + self->offset_y);
|
||||||
#elif defined(USE_GDKPIXBUF)
|
#elif defined(USE_GDKPIXBUF)
|
||||||
#define WAIT_CNT 4
|
#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,
|
XCopyArea(xi->display, ximg->pixmap[i], xi->window, xi->imageGC,
|
||||||
sx, sy,
|
sx, sy,
|
||||||
(sw ? sw : img->width),
|
(sw ? sw : img->width),
|
||||||
|
|||||||
Reference in New Issue
Block a user