[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kfm-devel
Subject:    Re: loading GIFs
From:       Martin Jones <mjones () powerup ! com ! au>
Date:       1997-07-13 19:53:51
[Download RAW message or body]

Stephan Kulow wrote:
> 
> Hi guys!
> 
> After trying to implement animated GIFs, I've noticed a problem with
> this. If khtmlw finds an image tag, it asks kfm (kioslave?) to get
> this into the filesytem. After this is uses QPixmap:load and depends
> on the installed filters.
> The problem is, animated GIFs aren't a pixmap, they're many of them!
> For everybody not knowing that much about animated GIFS, I tell you
> something about it:
> 
> GIF89a is a stream format. It starts with the usual header and a
> (optional) global colormap. After that there are endless frames
> (usual is one :-), they are loaded til a sign ';'. So, it's really
> possible to create infinite GIFs, there isn't a number of them in
> the header. They come one after one. And I've seen such things in
> the web, but this would crash the mechanism of reading in the file-
> system. To be understood right: I don't mean the loops, animated GIFs
> do almost ever, this is an invention of Netscape and this you can see
> in an animated GIF as an block 'NETSCAPE2.0' :-), but this isn't de-
> fined in the GIF89 standard. A frame is optional a colormap, some
> information (below) and the normal datas, that are used in GIF87 too.
> That's the reason, why single GIFs are usual GIF87!
> The information for one frame is:
> 1. how long the gap after this frame is (in ms, but netscape uses
>  another factor for this, never messured exactly)
> 2. the offset (vertical and horizontal). You can define a animated
>  GIF (also a normal infact), that is 800x600, but has only data for
>  20x20.
> 3. of course, you can define interlace/non-interlace for every frame
>  separatly
> 4. what should happen, if the frame disappear. It can be cleared with
>  the background (usual the defined one in the GIF, but netscape uses
>  the one of the HTML page). It can be replaced by the frame before or
>  it can be not handled (that means, frame by frame)
> 
> Ok, hope you have a short overview about this topic. What we need is
> a structure, that describes the GIF. If it loops (how often, if), the
> size and the frames as QPixmaps with the informations.
> I've mailed Taj yesterday about this topic, since he is the expert
> for image filters, but didn't recieved an answer yet, so perhaps he
> don't know :-), but I'm hardly sure, that this can't be solved with
> QImageIO.
> The other problem is the mechanism with kioslave. Isn't it possible to
> create IPC to transfer the pics while they're loaded? Or even emiting
> signals, if some data arrived from the HTTP server. Correct my, if I'm
> wrong in this topic, I hadn't a hard look at kioslave. And related to
> this, I think, we must drop the mechanism with QImageIO, but I'm not
> sure about that, since I've read in the QT documentation, that QImageIO
> is ready for future extensions. I would volunteer to this async loading,
> since I've done such thing at the university with QT for a MM project,
> but I would like to discuss this first on this list, since this would
> change this some things in khtmlw.
> 
> Please let me know, if I'm totaly wrong here or if you have comments
> for this.
> 
> Greets, Stephan

My solution would be to create a KPixmap class again which has
support for animations, progressive loading etc.  I am also
unsure whether QImageIO can do what we want. I'm reluctant to
do too much work on this as it has been leaked that QT-1.3
includes support for animation.

-- 
bye,
Martin Jones
mjones@kde.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic