merge of wxMac into main repository
[wxWidgets.git] / src / png / CHANGES
1 CHANGES - changes for libpng
2
3 version 0.2
4   added reader into png.h
5   fixed small problems in stub file
6 version 0.3
7   added pull reader
8   split up pngwrite.c to several files
9   added pnglib.txt
10   added example.c
11   cleaned up writer, adding a few new tranformations
12   fixed some bugs in writer
13   interfaced with zlib 0.5
14   added K&R support
15   added check for 64 KB blocks for 16 bit machines
16 version 0.4
17   cleaned up code and commented code
18   simplified time handling into png_time
19   created png_color_16 and png_color_8 to handle color needs
20   cleaned up color type defines
21   fixed various bugs
22   made various names more consistant
23   interfaced with zlib 0.71
24   cleaned up zTXt reader and writer (using zlib's Reset functions)
25   split transformations into pngrtran.c and pngwtran.c
26 version 0.5
27   interfaced with zlib 0.8
28   fixed many reading and writing bugs
29   saved using 3 spaces instead of tabs
30 version 0.6
31   added png_large_malloc() and png_large_free()
32   added png_size_t
33   cleaned up some compiler warnings
34   added png_start_read_image()
35 version 0.7
36   cleaned up lots of bugs
37   finished dithering and other stuff
38   added test program
39   changed name from pnglib to libpng
40 version 0.71 [June, 1995]
41   changed pngtest.png for zlib 0.93
42   fixed error in libpng.txt and example.c
43 version 0.8
44   cleaned up some bugs
45   added png_set_filler()
46   split up pngstub.c into pngmem.c, pngio.c, and pngerror.c
47   added #define's to remove unwanted code
48   moved png_info_init() to png.c
49   added old_size into png_realloc()
50   added functions to manually set filtering and compression info
51   changed compression parameters based on image type
52   optimized filter selection code
53   added version info
54   changed external functions passing floats to doubles (k&r problems?)
55   put all the configurable stuff in pngconf.h
56   enabled png_set_shift to work with paletted images on read
57   added png_read_update_info() - updates info structure with
58      transformations
59 version 0.81 [August, 1995]
60   incorporated Tim Wegner's medium model code (thanks, Tim)
61 version 0.82 [September, 1995]
62   [unspecified changes]
63 version 0.85 [December, 1995]
64   added more medium model code (almost everything's a far)
65   added i/o, error, and memory callback functions
66   fixed some bugs (16 bit, 4 bit interlaced, etc.)
67   added first run progressive reader (barely tested)
68 version 0.86 [January, 1996]
69   fixed bugs
70   improved documentation
71 version 0.87 [January, 1996]
72   fixed medium model bugs
73   fixed other bugs introduced in 0.85 and 0.86
74   added some minor documentation
75 version 0.88 [January, 1996]
76   fixed progressive bugs
77   replaced tabs with spaces
78   cleaned up documentation
79   added callbacks for read/write and warning/error functions
80 version 0.89 [July, 1996]
81   added new initialization API to make libpng work better with shared libs
82      we now have png_create_read_struct(), png_create_write_struct(),
83      png_create_info_struct(), png_destroy_read_struct(), and
84      png_destroy_write_struct() instead of the separate calls to
85      malloc and png_read_init(), png_info_init(), and png_write_init()
86   changed warning/error callback functions to fix bug - this means you
87      should use the new initialization API if you were using the old
88      png_set_message_fn() calls, and that the old API no longer exists
89      so that people are aware that they need to change their code
90   changed filter selection API to allow selection of multiple filters
91      since it didn't work in previous versions of libpng anyways
92   optimized filter selection code
93   fixed png_set_background() to allow using an arbitrary RGB color for
94      paletted images
95   fixed gamma and background correction for paletted images, so
96      png_correct_palette is not needed unless you are correcting an
97      external palette (you will need to #define PNG_CORRECT_PALETTE_SUPPORTED
98      in pngconf.h) - if nobody uses this, it may disappear in the future.
99   fixed bug with Borland 64K memory allocation (Alexander Lehmann)
100   fixed bug in interlace handling (Smarasderagd, I think)
101   added more error checking for writing and image to reduce invalid files
102   separated read and write functions so that they won't both be linked
103      into a binary when only reading or writing functionality is used
104   new pngtest image also has interlacing and zTXt
105   updated documentation to reflect new API
106 version 0.90 [January, 1997]
107   made CRC errors/warnings on critical and ancillary chunks configurable
108   libpng will use the zlib CRC routines by (compile-time) default
109   changed DOS small/medium model memory support - needs zlib 1.04 (Tim Wegner)
110   added external C++ wrapper statements to png.h (Gilles Dauphin)
111   allow PNG file to be read when some or all of file signature has already
112      been read from the beginning of the stream.  ****This affects the size
113      of info_struct and invalidates all programs that use a shared libpng****
114   fixed png_filler() declarations
115   fixed? background color conversions
116   fixed order of error function pointers to match documentation
117   current chunk name is now available in png_struct to reduce the number
118      of nearly identical error messages (will simplify multi-lingual
119      support when available)
120   try to get ready for unknown-chunk callback functions:
121      - previously read critical chunks are flagged, so the chunk handling
122        routines can determine if the chunk is in the right place
123      - all chunk handling routines have the same prototypes, so we will
124        be able to handle all chunks via a callback mechanism
125   try to fix Linux "setjmp" buffer size problems
126 version 0.95 [March, 1997]
127   fixed bug in pngwutil.c allocating "up_row" twice and "avg_row" never
128   fixed bug in PNG file signature compares when start != 0
129   changed parameter type of png_set_filler(...filler...) from png_byte
130      to png_uint_32
131   added test for MACOS to ensure that both math.h and fp.h are not #included
132   added macros for libpng to be compiled as a Windows DLL (Andreas Kupries)
133   added "packswap" transformation, which changes the endianness of
134      packed-pixel bytes (Kevin Bracey)
135   added "strip_alpha" transformation, which removes the alpha channel of
136      input images without using it (not neccesarily a good idea)
137   added "swap_alpha" transformation, which puts the alpha channel in front
138      of the color bytes instead of after
139   removed all implicit variable tests which assume NULL == 0 (I think)
140   changed several variables to "png_size_t" to show 16/32-bit limitations
141   added new pCAL chunk read/write support
142   added experimental filter selection weighting (Greg Roelofs)
143   removed old png_set_rgbx() and png_set_xrgb() functions that have been
144      obsolete for about 2 years now (use png_set_filler() instead)
145   added macros to read 16- and 32-bit ints directly from buffer, to be
146      used only on those systems that support it (namely PowerPC and 680x0)
147      With some testing, this may become the default for MACOS/PPC systems.
148   only calculate CRC on data if we are going to use it
149   added macros for zTXt compression type PNG_zTXt_COMPRESSION_???
150   added macros for simple libpng debugging output selectable at compile time
151   removed PNG_READ_END_MODE in progressive reader (Smarasderagd)
152   more description of info_struct in libpng.txt and png.h
153   more instructions in example.c
154   more chunk types tested in pngtest.c
155   renamed pngrcb.c to pngset.c, and all png_read_<chunk> functions to be
156      png_set_<chunk>.  We now have corresponding png_get_<chunk>
157      functions in pngget.c to get infomation in info_ptr.  This isolates
158      the application from the internal organization of png_info_struct
159      (good for shared library implementations).
160 version 0.96 [May, 1997]
161   fixed serious bug with < 8bpp images introduced in 0.95
162   fixed 256-color transparency bug (Greg Roelofs)
163   fixed up documentation (Greg Roelofs, Laszlo Nyul)
164   fixed "error" in pngconf.h for Linux setjmp() behaviour
165   fixed DOS medium model support (Tim Wegner)
166   fixed png_check_keyword() for case with error in static string text
167   added read of CRC after IEND chunk for embedded PNGs (Laszlo Nyul)
168   added typecasts to quiet compiler errors
169   added more debugging info
170 version 0.97 [January, 1998]
171   removed PNG_USE_OWN_CRC capability
172   relocated png_set_crc_action from pngrutil.c to pngrtran.c
173   fixed typecasts of "new_key", etc. (Andreas Dilger)
174   added RFC 1152 [sic] date support
175   fixed bug in gamma handling of 4-bit grayscale
176   added 2-bit grayscale gamma handling (Glenn R-P)
177   added more typecasts. 65536L becomes (png_uint_32)65536L, etc. (Glenn R-P)
178   minor corrections in libpng.txt
179   added simple sRGB support (Glenn R-P)
180   easier conditional compiling, e.g. define PNG_READ/WRITE_NOT_FULLY_SUPPORTED;
181      all configurable options can be selected from command-line instead
182      of having to edit pngconf.h (Glenn R-P)
183   fixed memory leak in pngwrite.c (free info_ptr->text) (Glenn R-P)
184   added more conditions for png_do_background, to avoid changing
185      black pixels to background when a background is supplied and
186      no pixels are transparent
187   repaired PNG_NO_STDIO behaviour
188   tested NODIV support and made it default behaviour (Greg Roelofs)
189   added "-m" option and PNGTEST_DEBUG_MEMORY to pngtest (John Bowler)
190   regularized version numbering scheme and bumped shared-library major
191      version number to 2 to avoid problems with libpng 0.89 apps (Greg Roelofs)
192 version 0.98 [January, 1998]
193   cleaned up some typos in libpng.txt and in code documentation
194   fixed memory leaks in pCAL chunk processing (Glenn R-P and John Bowler)
195   cosmetic change "display_gamma" to "screen_gamma" in pngrtran.c
196   changed recommendation about file_gamma for PC images to .51 from .45,
197      in example.c and libpng.txt, added comments to distinguish between
198      screen_gamma, viewing_gamma, and display_gamma.
199   changed all references to RFC1152 to read RFC1123 and changed the
200      PNG_TIME_RFC1152_SUPPORTED macro to PNG_TIME_RFC1123_SUPPORTED
201   added png_invert_alpha capability (Glenn R-P -- suggestion by Jon Vincent)
202   changed srgb_intent from png_byte to int to avoid compiler bugs
203 version 0.99 [January 30, 1998]
204   free info_ptr->text instead of end_info_ptr->text in pngread.c (John Bowler)
205   fixed a longstanding "packswap" bug in pngtrans.c
206   fixed some inconsistencies in pngconf.h that prevented compiling with
207      PNG_READ_GAMMA_SUPPORTED and PNG_READ_hIST_SUPPORTED undefined
208   fixed some typos and made other minor rearrangement of libpng.txt (Andreas)
209   changed recommendation about file_gamma for PC images to .50 from .51 in
210      example.c and libpng.txt, and changed file_gamma for sRGB images to .45
211   added a number of functions to access information from the png structure
212      png_get_image_height(), etc. (Glenn R-P, suggestion by Brad Pettit)
213   added TARGET_MACOS similar to zlib-1.0.8
214   define PNG_ALWAYS_EXTERN when __MWERKS__ && WIN32 are defined
215   added type casting to all png_malloc() function calls
216 version 0.99a [January 31, 1998]
217   Added type casts and parentheses to all returns that return a value.(Tim W.)
218 version 0.99b [February 4, 1998]
219   Added type cast png_uint_32 on malloc function calls where needed.
220   Changed type of num_hist from png_uint_32 to int (same as num_palette).
221   Added checks for rowbytes overflow, in case png_size_t is less than 32 bits.
222   Renamed makefile.elf to makefile.lnx.
223 version 0.99c [February 7, 1998]
224   More type casting.  Removed erroneous overflow test in pngmem.c.
225   Added png_buffered_memcpy() and png_buffered_memset(), apply them to rowbytes.
226   Added UNIX manual pages libpng.3 (incorporating libpng.txt) and  png.5.
227 version 0.99d [February 11, 1998]
228   Renamed "far_to_near()" "png_far_to_near()"
229   Revised libpng.3
230   Version 99c "buffered" operations didn't work as intended.  Replaced them
231     with png_memcpy_check() and png_memset_check().
232   Added many "if (png_ptr == NULL) return" to quell compiler warnings about
233     unused png_ptr, mostly in pngget.c and pngset.c.
234   Check for overlength tRNS chunk present when indexed-color PLTE is read.
235   Cleaned up spelling errors in libpng.3/libpng.txt
236   Corrected a problem with png_get_tRNS() which returned undefined trans array
237 version 0.99e [February 28, 1998]
238   Corrected png_get_tRNS() again.
239   Add parentheses for easier reading of pngget.c, fixed "||" should be "&&".
240   Touched up example.c to make more of it compileable, although the entire
241     file still can't be compiled (Willem van Schaik)
242   Fixed a bug in png_do_shift() (Bryan Tsai)
243   Added a space in png.h prototype for png_write_chunk_start()
244   Replaced pngtest.png with one created with zlib 1.1.1
245   Changed pngtest to report PASS even when file size is different (Jean-loup G.)
246   Corrected some logic errors in png_do_invert_alpha() (Chris Patterson)
247 version 0.99f [March 5, 1998]
248   Corrected a bug in pngpread() introduced in version 99c (Kevin Bracey)
249   Moved makefiles into a "scripts" directory, and added INSTALL instruction file
250   Added makefile.os2 and pngos2.def (A. Zabolotny) and makefile.s2x (W. Sebok)
251   Added pointers to "note on libpng versions" in makefile.lnx and README
252   Added row callback feature when reading and writing nonprogressive rows
253      and added a test of this feature in pngtest.c
254   Added user transform callbacks, with test of the feature in pngtest.c
255 version 0.99g [March 6, 1998, morning]
256   Minor changes to pngtest.c to suppress compiler warnings.
257   Removed "beta" language from documentation.
258 version 0.99h [March 6, 1998, evening]
259   Minor changes to previous minor changes to pngtest.c
260   Changed PNG_READ_NOT_FULLY_SUPPORTED to PNG_READ_TRANSFORMS_NOT_SUPPORTED
261   and added PNG_PROGRESSIVE_READ_NOT_SUPPORTED macro
262 version 1.00 [March 7, 1998]
263   Changed several typedefs in pngrutil.c
264   Added makefile.wat (Pawel Mrochen), updated makefile.tc3 (Willem van Schaik)
265   replaced "while(1)" with "for(;;)"
266   added PNGARG() to prototypes in pngtest.c and removed some prototypes
267   updated some of the makefiles (Tom Lane)
268   changed some typedefs (s_start, etc.) in pngrutil.c
269   fixed dimensions of "short_months" array in pngwrite.c
270   Replaced ansi2knr.c with the one from jpeg-v6
271 version 1.0.0 [March 8, 1998]
272   Changed name from 1.00 to 1.0.0 (Adam Costello)
273   Added smakefile.ppc (with SCOPTIONS.ppc) for Amiga PPC (Andreas Kleinert)
274 version 1.0.0a [March 9, 1998]
275   Fixed three bugs in pngrtran.c to make gamma+background handling consistent
276   (Greg Roelofs)
277   Changed format of the PNG_LIBPNG_VER integer to xyyzz instead of xyz
278   for major, minor, and bugfix releases.  This is 10001. (Adam Costello,
279   Tom Lane)
280   Make months range from 1-12 in png_convert_to_rfc1123
281 version 1.0.0b [March 13, 1998]
282   Quieted compiler complaints about two empty "for" loops in pngrutil.c
283   Minor changes to makefile.s2x
284   Removed #ifdef/#endif around a png_free() in pngread.c
285 version 1.0.1 [March 14, 1998]
286   Changed makefile.s2x to reduce security risk of using a relative pathname
287   Fixed some typos in the documentation (Greg).
288   Fixed a problem with value of "channels" returned by png_read_update_info()
289 version 1.0.1a [April 21, 1998]
290   Optimized Paeth calculations by replacing abs() function calls with intrinsics
291   plus other loop optimizations. Improves avg decoding speed by about 20%.
292   Commented out i386istic "align" compiler flags in makefile.lnx.
293   Reduced the default warning level in some makefiles, to make them consistent.
294   Removed references to IJG and JPEG in the ansi2knr.c copyright statement.
295   Fixed a bug in png_do_strip_filler with XXRRGGBB => RRGGBB transformation.
296   Added grayscale and 16-bit capability to png_do_read_filler().
297   Fixed a bug in pngset.c, introduced in version 0.99c, that sets rowbytes
298     too large when writing an image with bit_depth < 8 (Bob Dellaca).
299   Corrected some bugs in the experimental weighted filtering heuristics.
300   Moved a misplaced pngrutil code block that truncates tRNS if it has more
301     than num_palette entries -- test was done before num_palette was defined.
302   Fixed a png_convert_to_rfc1123() bug that converts day 31 to 0 (Steve Eddins).
303   Changed compiler flags in makefile.wat for better optimization (Pawel Mrochen).
304 version 1.0.1b [May 2, 1998]
305   Relocated png_do_gray_to_rgb() within png_do_read_transformations() (Greg).
306   Relocated the png_composite macros from pngrtran.c to png.h (Greg).
307   Added makefile.sco (contributed by Mike Hopkirk).
308   Fixed two bugs (missing definitions of "istop") introduced in libpng-1.0.1a.
309   Fixed a bug in pngrtran.c that would set channels=5 under some circumstances.
310   More work on the Paeth-filtering, achieving imperceptible speedup (A Kleinert).
311   More work on loop optimization which may help when compiled with C++ compilers.
312   Added warnings when people try to use transforms they've defined out.
313   Collapsed 4 "i" and "c" loops into single "i" loops in pngrtran and pngwtran.
314   Revised paragraph about png_set_expand() in libpng.txt and libpng.3 (Greg)
315 version 1.0.1c [May 11, 1998]
316   Fixed a bug in pngrtran.c (introduced in libpng-1.0.1a) where the masks for
317     filler bytes should have been 0xff instead of 0xf.
318   Added max_pixel_depth=32 in pngrutil.c when using FILLER with palette images.
319   Moved PNG_WRITE_WEIGHTED_FILTER_SUPPORTED and PNG_WRITE_FLUSH_SUPPORTED
320     out of the PNG_WRITE_TRANSFORMS_NOT_SUPPORTED block of pngconf.h
321   Added "PNG_NO_WRITE_TRANSFORMS" etc., as alternatives for *_NOT_SUPPORTED,
322     for consistency, in pngconf.h
323   Added individual "ifndef PNG_NO_[CAPABILITY]" in pngconf.h to make it easier
324     to remove unwanted capabilities via the compile line
325   Made some corrections to grammar (which, it's) in documentation (Greg).
326   Corrected example.c, use of row_pointers in png_write_image().
327 version 1.0.1d [May 24, 1998]
328   Corrected several statements that used side effects illegally in pngrutil.c
329     and pngtrans.c, that were introduced in version 1.0.1b
330   Revised png_read_rows() to avoid repeated if-testing for NULL (A Kleinert)
331   More corrections to example.c, use of row_pointers in png_write_image()
332     and png_read_rows().
333   Added pngdll.mak and pngdef.pas to scripts directory, contributed by
334     Bob Dellaca, to make a png32bd.dll with Borland C++ 4.5
335   Fixed error in example.c with png_set_text: num_text is 3, not 2 (Guido V.)
336   Changed several loops from count-down to count-up, for consistency.
337 version 1.0.1e [June 6, 1998]
338   Revised libpng.txt and libpng.3 description of png_set_read|write_fn(), and
339     added warnings when people try to set png_read_fn and png_write_fn in
340     the same structure.
341   Added a test such that png_do_gamma will be done when num_trans==0
342     for truecolor images that have defined a background.  This corrects an
343     error that was introduced in libpng-0.90 that can cause gamma processing
344     to be skipped.
345   Added tests in png.h to include "trans" and "trans_values" in structures
346     when PNG_READ_BACKGROUND_SUPPORTED or PNG_READ_EXPAND_SUPPORTED is defined.
347   Add png_free(png_ptr->time_buffer) in png_destroy_read_struct()
348   Moved png_convert_to_rfc_1123() from pngwrite.c to png.c
349   Added capability for user-provided malloc_fn() and free_fn() functions,
350     and revised pngtest.c to demonstrate their use, replacing the
351     PNGTEST_DEBUG_MEM feature.
352   Added makefile.w32, for Microsoft C++ 4.0 and later (Tim Wegner).
353 version 1.0.2 [June 14, 1998]
354   Fixed two bugs in makefile.bor .
355 version 1.0.2a [December 30, 1998]
356   Replaced and extended code that was removed from png_set_filler() in 1.0.1a.
357   Fixed a bug in png_do_filler() that made it fail to write filler bytes in
358     the left-most pixel of each row (Kevin Bracey).
359   Changed "static pngcharp tIME_string" to "static char tIME_string[30]"
360     in pngtest.c (Duncan Simpson).
361   Fixed a bug in pngtest.c that caused pngtest to try to write a tIME chunk
362     even when no tIME chunk was present in the source file.
363   Fixed a problem in pngrutil.c: gray_to_rgb didn't always work with 16-bit.
364   Fixed a problem in png_read_push_finish_row(), which would not skip some
365     passes that it should skip, for images that are less than 3 pixels high.
366   Interchanged the order of calls to png_do_swap() and png_do_shift()
367     in pngwtran.c (John Cromer).
368   Added #ifdef PNG_DEBUG/#endif surrounding use of PNG_DEBUG in png.h .
369   Changed "bad adaptive filter type" from error to warning in pngrutil.c .
370   Fixed a documentation error about default filtering with 8-bit indexed-color.
371   Separated the PNG_NO_STDIO macro into PNG_NO_STDIO and PNG_NO_CONSOLE_IO
372     (L. Peter Deutsch).
373   Added png_set_rgb_to_gray() and png_get_rgb_to_gray_status() functions.
374   Added png_get_copyright() and png_get_header_version() functions.
375   Revised comments on png_set_progressive_read_fn() in libpng.txt and example.c
376   Added information about debugging in libpng.txt and libpng.3 .
377   Changed "ln -sf" to "ln -s -f" in makefile.s2x, makefile.lnx, and makefile.sco.
378   Removed lines after Dynamic Dependencies" in makefile.aco .
379   Revised makefile.dec to make a shared library (Jeremie Petit).
380   Removed trailing blanks from all files. 
381 version 1.0.2a [January 6, 1999]
382   Removed misplaced #endif and #ifdef PNG_NO_EXTERN near the end of png.h
383   Added "if" tests to silence complaints about unused png_ptr in png.h and png.c
384   Changed "check_if_png" function in example.c to return true (nonzero) if PNG.
385   Changed libpng.txt to demonstrate png_sig_cmp() instead of png_check_sig()
386     which is obsolete.
387 version 1.0.3 [January 14, 1999]
388   Added makefile.hux, for Hewlett Packard HPUX 10.20 and 11.00 (Jim Rice)
389   Added a statement of Y2K compliance in png.h, libpng.1, and Y2KINFO.