1########################## PNGwriter #########################################
2#
3#   Website: Main:             http://pngwriter.sourceforge.net/
4#            GitHub.com:       https://github.com/pngwriter/pngwriter
5#            Sourceforge.net:  http://sourceforge.net/projects/pngwriter/
6#
7#
8#    Author:                    Paul Blackburn https://github.com/individual61
9#                               Axel Huebl https://github.com/ax3l
10#
11#    Email:                     individual61@users.sourceforge.net
12#
13#    Version:                   up to 0.5.5 (August 2015)
14#
15#    Description:               Library that allows plotting a 48 bit
16#                               PNG image pixel by pixel, which can
17#                               then be opened with a graphics program.
18#
19#    License:                   GNU General Public License
20#                               (C) 2002-2015 Paul Blackburn
21#                               (C) 2013-2015 Axel Huebl
22#
23##############################################################################
24
25Changes:
26
270.5.5 and later
28 June 2015
29 > See CHANGELOG.md at the top level of the PNGwriter source distribution.
30
310.5.4
32 19 February 2009
33 > Corrected filegamma_ from 0.5 in one constructor to 0.6 as in all others.
34 > PNGwriter now handles a much greater range of input files with readfromfile().
35   In general, the alpha channel is discarded gracefully. Issues remain:
36   A PNG with information in the chroma chunk will not be read too accurately,
37   and a PNG with a transparency chunk will be read incorrectly, though silently.
38>  Fixed compiler warnings in drawtriangle() and drawbottom().
39
400.5.3
41 24 January 2005
42 > Added get_text_width() and get_text_width_utf8(). This returns the
43   width, in pixels, of the text if it were plotted. This width, used
44   with the font size, can help estimate the actual dimensions of the
45   plotted text.
46 > Added new figures: arrow, cross, maltese cross and diamond.
47 > Fixed a small mistake in a plot_text() error message.
48
490.5.2
50 10 January 2005
51 > Changed the License. PNGwriter is now released under a plain, standard
52   GNU General Public License, and not a modified one. This is to enable
53   PNGwriter to become a part of the Debian Linux distribution, and also
54   to keep things simple.
55
560.5.1
57 3 January 2005
58 > Modified the Makefile to make it more suitable for packaging.
59 > Modified the PDF manual, to better document the possibility of
60   PNGwriter being installed in a non-default location.
61 > Modified the README, to better document the process of installing
62   PNGwriter under a non-default directory, using PREFIX.
63 > Modified the README, to reflect the actual installed locations of the
64   files, as determined by PREFIX at install time.
65
660.5.0
67 24 October 2004
68 > Added the triangle() function for fast plotting of triangles.
69 > Fixed a serious bug that affected versions of PNGwriter compiled
70   on Windows. Specifically, readfromfile() was opening the file
71   as ASCII ("r") and not binary ("rb"). This would render the PNG
72   unreadable to libpng.
73
740.4.9
75 18 October 2004
76 > Added the filledtriangle() and filledtriangle_blend() functions for fast
77   plotting of filled triangles.
78
790.4.8
80 10 October 2004
81 > Fixed a few serious bugs introduced in 0.4.7, which was withdrawn a few
82   hours after being released. Since 0.4.7 has not really seen much action,
83   its changes are included in 0.4.8's release notes as well.
84 > readfromfile() now correctly determines if the file to be read is a valid
85   PNG or not.
86 > Yet more improvements in file-related error handling.
87 > Fixed a few bugs in the constructors. Though out-of-range background colours
88   were checked for, they were not clipped to within the allowed range, despite
89   what the error messages said. Also, if a constructor was called with negative
90   height or width, nothing was done about it, that too despite what the error
91   messages said. This has now been fixed.
92 > 0.4.7's changes are as follows:
93 > Fixed a serious bug in readfromfile() which would cause a crash due to
94   too many open files if it was called a certain number of times (caused
95   by an out-of-place fopen() ).
96 > All user supplied text fields (filename and png info) are no longer
97   limited to 255 characters.
98 > Better handling of file errors: attempting to open a non-existent file
99   will no longer cause a crash.
100
1010.4.7
102 10 October 2004
103 > Fixed a serious bug in readfromfile() which would cause a crash due to
104   too many open files if it was called a certain number of times (caused
105   by an out-of-place fopen() ).
106 > All user supplied text fields (filename and png info) are no longer
107   limited to 255 characters.
108 > Better handling of file errors: attempting to open a non-existent file
109   will no longer cause a crash.
110
1110.4.6
112 31 August 2004
113 > Fixed a bug that did not allow PNGwriter to be compiled with Borland Builder
114   or MSVC7 under Windows.
115
1160.4.5
117 15 August 2004
118 > New functions: scale_k(), scale_kxky() and scale_wh(). These allow
119   you to scale the image proportionally, non-proportionally, and to a target
120   width and height.
121 > New functions: Blended Functions. All figures and plotting modes have been
122   complemented with blended versions, allowing you to plot any included
123   PNGwriter shape (including text) in blended mode.
124 > New function: laplacian(). Calculates the discrete laplacian of an image.
125 > Documentation update: the Quick Reference PDFs have been reformatted
126   and reorganized, and the result is easier to use (it looks nicer too!).
127
128
1290.4.4
130 8 August 2004
131 > New functions: Boundary and Flood Fill. For Boundary Fill pixels
132   adjacent to the start pixel will be filled with the fill colour,
133   until the boundary colour is encountered, and for Flood Fill,
134   all pixels adjacent to the start pixel will be filled with the
135   fill colour, if they are the same colour as the start pixel.
136 > New function: Polygon. This function takes an array of integer
137   values containing the coordinates of the vertexes of a polygon.
138 > New functions: Plot and Read CMYK. Plot and read a pixel in the
139   Cyan, Magenta, Yellow, Black colourspace.
140
1410.4.3
142 8 July 2004
143 > The number of characters rendered with plot_text() is no longer printed
144   to stdout. This had been left in by mistake after testing.
145
1460.4.2
147 5 July 2004
148 > New function: plot_text_utf8(). Now you can plot text using characters
149   from any language (accented french and spanish, japanese, korean, etc.).
150   Just pass a UTF-8 encoded string to plot_text_utf8() and use a font that
151   supports the characters you will use.
152 > New function: resize(). Changes the size of the image. Useful when you create
153   an array of PNGwriter instances and you want to change each size after creation.
154   Note: this function does not re-scale the image; it resets it to black.
155
1560.4.1
157 21 June 2004
158 > Updated documentation (some small parts had not been updated since 0.3.7)
159
1600.4.0
161 20 June 2004
162 > PNGwriter has text support!! After many requests, text support
163   using the Freetype2 library has been added. The plotted text is
164   antialiased, can be rotated however you want, can use any TrueType
165   font file to plot with, and as if that weren't enough, the text has
166   proper kerning.
167 > New function: plot_blend(). Similar to plot(), but blends the
168   plotted pixel with the existing pixel, given a number from 0.0
169   to 1.0 which regulates the opacity.
170 > New function: bilinear_interpolation_read(). The x and y
171   coordinates are still in pixel space, but are now of type double. When
172   requesting the pixel values in between integer indices, bilinear
173   interpolation is used. Smooth image enlargement is now much simpler.
174 > New function: invert(). Inverts the image in the RGB colourspace.
175 > Faster plot() and read().
176 > Faster circle().
177 > plot() now checks if the colour coefficients are within range, and
178   clips them if not.
179 > read() now checks if the coordinates are in the image space, and if
180   not returns 0 (or 0.0 in the case of dread() ).
181 > Fixed an unnoticed, unreported long-standing bug in plot().
182   Plotting to instances of PNGwriter that have read in an 8-bit
183   PNG file now works :-)
184 > Updated documentation.
185
1860.3.7
187 12 October 2003
188 > Both branches, English and Spanish, have been merged into one
189   bilingual main branch. This is to make the release process easier
190   for me. The PNGwriter Quick Reference PDF is now distributed
191   only with the main PNGwriter package.
192 > PNGwriter is now a library! No more worrying about having
193   pngwriter.o and pngwriter.h available.
194 > Better error handling. All malloc and new events are now checked
195   for failure. readfromfile() now does not crash the program if the file
196   cannot be found.
197 > New write_png() function. It writes the PNG file to disk. Useful
198   for using one PNGwriter instance to make many slightly different
199   images in a sequence.
200 > pngwriter_rename() has been overloaded to accept an unsigned long
201   int. Given 54726 as an argument, for example, it will rename the
202   filename to "000054726.png". In theory one could make up to 999999999
203   sequential images before having to change directory and start at
204   zero again. This is ideally suited for making movies, using MEncoder,
205   for example.
206 > The line() function has been completely rewritten. The new
207   implementation uses the Bresenham algorithm, which is much faster than
208   the old implementation.
209 > Assignment operator overloaded, a proper copy constructor, and
210   a default constructor.
211 > New version() function. It simply returns the PNGwriter version.
212 > Completely rewritten Makefile. It is now much more flexible, better
213   written, and clearer than before. Customization for your particular
214   system is also much easier.
215 > Completely reorganized the PNGwriter package layout. Easier to
216   install, and more suited to porting.
217
218
2190.3.6
220 18 September 2003
221 > Added the settext() functions to change the PNG header text.
222
2230.3.5
224 7 June 2003
225 > Added bezier() function for making bezier curves.
226 > Fixed a bug in the read() function (line 440 in pngwriter.cc).
227
2280.3.4
229 17 January 2003
230 > Added setcompressionlevel()
231 > Fixed default gamma
232 > Improved documentation
233 > Added new test program, lyapunov
234 > Fixed a bug with the line() function.
235
2360.3.3
237 19 Nov 2002
238  > Where necessary, functions that took "char *" as an argument now accept
239 "const char *" as well.
240 > Added read(x, y) and dread(x, y) to get the average value of the pixel x, y.
241 > Added readHSV(x, y, colour) and dreadHSV(x, y, colour) to get the colour
242 of a certain pixel in HSV colourspace.
243
2440.3.2
245 27 Oct 2002
246 > Added better error reporting.
247 > Added plotHSV() to be able to make rainbows.
248 > Added double versions of most functions that work in the 0 to 1 range
249 instead of 0 to 65535.
250
2510.3.1
252 4 Oct 2002
253 > Implemented support for 16 and 8 bit PNGs for readfromfile().
254
2550.3.0
256 1 Oct 2002
257 > Added readfromfile(). Now you can open PNGs and play with them with
258 pngwriter.
259
2600.2.3
261 29 Sep 2002
262 > Fixed harmless type mismatch in some functions.
263 > Added an explanation to the Makefile, and made it more useful.
264
2650.2.2
266 31 Aug 2002
267 > Updated and improved documentation.
268
2690.2.1
270 19 Aug 2002
271 > Fixed the Makefile.
272
2730.2.0
274 18 Aug 2002
275 >Added new functions (line, square, filledsquare, circle, filledcircle).
276 >Added PNG info fields.
277
2780.1.0
279 17 Aug 2002
280 >Initial release
281