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