Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > contrib > by-pkgid > 73b2d19380e0d12ba67932a2892c58c0 > files > 6

libgdgeda4-1.8-3mdk.ppc.rpm

990310 Philip Warner (pjw)
--------------------------

Broke gd.c into multiple files; gd.c now has graphics operations, and gd_<zzz> has specific
support for different formats (eg. GD, GD2, GIF).

Restructured I/O so that reading from files/streams/anything is now possible. All handled
through the IOCtx record which must define some basic I/O services. All services are defined
for files, but only some are defined for in-memory pointers. The in-memory pointer 
implementation is primarily for Perl compatibility. Changed basically involved writing some 
low level IO routines, and relpacing most FILE* variables with IOCtx*.

Added gdImageGdPtr, gdImageGd2Ptr, gdImageGifPtr, gdImageLzwPtr for Perl compatibility.

Broke up the GIF handling routines; gd_gif_in.c does all GIF input (this did not change when
support for LZW compression was removed). gd_gif_out.c not handles the miGif compression that
was introduced in version 1.3

Reinstated LZW support through the gdImageLzw function (defined in gd_lzw_out.c). 
This is NOT built by default, and the header file must be modified to include it in the build.

Added 'GD2' support. This is a zlib-compressed internal format useful for extracting portions
of images without having to read entire image files. Informal tests suggest it is only 30% slower
than the old GD format, and file space requirements are similar to GOF. The GD2 header fields 
now contain version information, so the format can probably be considered stable across versions.

Various other functions also added (see index.html).

Informal Tests
--------------

pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t064.gd2 100 3000 2000 400 300
Extracting 100 times from (3000, 2000), size is 400x300
23 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t128.gd2 100 3000 2000 400 300
Extracting 100 times from (3000, 2000), size is 400x300
19 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t256.gd2 100 3000 2000 400 300
Extracting 100 times from (3000, 2000), size is 400x300
33 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t512.gd2 100 3000 2000 400 300
Extracting 100 times from (3000, 2000), size is 400x300
65 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t064.gd2 100 3000 2000 200 100
Extracting 100 times from (3000, 2000), size is 200x100
8 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t128.gd2 100 3000 2000 200 100
Extracting 100 times from (3000, 2000), size is 200x100
8 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t256.gd2 100 3000 2000 200 100
Extracting 100 times from (3000, 2000), size is 200x100
16 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t512.gd2 100 3000 2000 200 100
Extracting 100 times from (3000, 2000), size is 200x100
59 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t064.gd2 100 3000 2000 800 600
Extracting 100 times from (3000, 2000), size is 800x600
71 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t128.gd2 100 3000 2000 800 600
Extracting 100 times from (3000, 2000), size is 800x600
70 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t256.gd2 100 3000 2000 800 600
Extracting 100 times from (3000, 2000), size is 800x600
86 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t512.gd2 100 3000 2000 800 600
Extracting 100 times from (3000, 2000), size is 800x600
160 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ls -lrt t*.gd2
-rw-r--r--   1 pjw      users     1363301 Mar 10 12:03 t512.gd2
-rw-r--r--   1 pjw      users     1339003 Mar 10 12:06 t256.gd2
-rw-r--r--   1 pjw      users     1323925 Mar 10 12:09 t128.gd2
-rw-r--r--   1 pjw      users     1492096 Mar 10 12:12 t064.gd2
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t064.gd2 100 3000 2000 50 25
Extracting 100 times from (3000, 2000), size is 50x25
4 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t128.gd2 100 3000 2000 50 25
Extracting 100 times from (3000, 2000), size is 50x25
2 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t256.gd2 100 3000 2000 50 25
Extracting 100 times from (3000, 2000), size is 50x25
4 seconds to extract (& destroy) 100 times
pjw@Acheron:/home/pjw/work/gd1.3pjw > ./gd2time t512.gd2 100 3000 2000 50 25
Extracting 100 times from (3000, 2000), size is 50x25
15 seconds to extract (& destroy) 100 times