diff options
Diffstat (limited to 'libraries/irrlicht-1.8/source/Irrlicht/libpng/contrib/pngminus/README')
-rw-r--r-- | libraries/irrlicht-1.8/source/Irrlicht/libpng/contrib/pngminus/README | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/libraries/irrlicht-1.8/source/Irrlicht/libpng/contrib/pngminus/README b/libraries/irrlicht-1.8/source/Irrlicht/libpng/contrib/pngminus/README new file mode 100644 index 0000000..b0516ec --- /dev/null +++ b/libraries/irrlicht-1.8/source/Irrlicht/libpng/contrib/pngminus/README | |||
@@ -0,0 +1,153 @@ | |||
1 | PngMinus | ||
2 | -------- | ||
3 | (copyright Willem van Schaik, 1999) | ||
4 | |||
5 | |||
6 | License | ||
7 | ------- | ||
8 | |||
9 | Permission to use, copy, modify, and distribute this software and | ||
10 | its documentation for any purpose and without fee is hereby granted, | ||
11 | provided that the above copyright notice appear in all copies and | ||
12 | that both that copyright notice and this permission notice appear in | ||
13 | supporting documentation. This software is provided "as is" without | ||
14 | express or implied warranty. | ||
15 | |||
16 | |||
17 | Some history | ||
18 | ------------ | ||
19 | Soon after the creation of PNG in 1995, the need was felt for a set of | ||
20 | pnmtopng / pngtopnm utilities. Independantly Alexander Lehmann and I | ||
21 | (Willem van Schaik) started such a project. Luckily we discovered this | ||
22 | and merged the two together into pnmtopng.tar.gz, which is available | ||
23 | from a/o ftp://ftp.simplesystems.org/pub/libpng/png/. | ||
24 | |||
25 | These two utilities have many, many options and make use of most of the | ||
26 | features of PNG, like gamma, alpha, sbit, text-chunks, etc. This makes | ||
27 | the utilities quite complex and by now not anymore very maintainable. | ||
28 | When we wrote these programs, libpng was still in an early stage. | ||
29 | Therefore, lots of the functionality that we put in our software can now | ||
30 | be done using transform-functions in libpng. | ||
31 | |||
32 | Finally, to compile these programs, you need to have installed and | ||
33 | compiled three libraries: libpng, zlib and netpbm. Especially the latter | ||
34 | makes the whole setup a bit bulky. But that's unavoidable given the many | ||
35 | features of pnmtopng. | ||
36 | |||
37 | |||
38 | What now | ||
39 | -------- | ||
40 | At this moment libpng is in a very stable state and can do much of the | ||
41 | work done in pnmtopng. Also, pnmtopng needs to be upgraded to the new | ||
42 | interface of libpng. Hence, it is time for a rewrite from the ground up | ||
43 | of pnmtopng and pngtopnm. This will happen in the near future (stay | ||
44 | tuned). The new package will get a different name to distinguish it from | ||
45 | the old one: PngPlus. | ||
46 | |||
47 | To experiment a bit with the new interface of libpng, I started off with | ||
48 | a small prototype that contains only the basic functionality. It doesn't | ||
49 | have any of the options to read or write special chunks and it will do | ||
50 | no gamma correction. But this makes it also a simple program that is | ||
51 | quite easy to understand and can serve well as a template for other | ||
52 | software developments. (By now there are of course a couple of programs, | ||
53 | like Greg Roelofs' rpng/wpng, that can be used just as good.) | ||
54 | |||
55 | |||
56 | Can and can not | ||
57 | --------------- | ||
58 | As this is the small brother of the future PngPlus, I called this fellow | ||
59 | PngMinus. Because I started this development in good-old Turbo-C, I | ||
60 | avoided the use the netpbm library, which requires DOS extenders. Again, | ||
61 | another reason to call it PngMinus (minus netpbm :-). So, part of the | ||
62 | program are some elementary routines to read / write pgm- and ppm-files. | ||
63 | It does not read b&w pbm-files. | ||
64 | |||
65 | The downside of this approach is that you can not use them on images | ||
66 | that require blocks of memory bigger than 64k (the DOS version). For | ||
67 | larger images you will get an out-of-memory error. | ||
68 | |||
69 | As said before, PngMinus doesn't correct for gamma. When reading | ||
70 | png-files you can do this just as well by piping the output of png2pnm | ||
71 | to pnmgamma, one of the standard PbmPlus tools. This same scenario will | ||
72 | most probably also be followed in the full-blown future PngPlus, with | ||
73 | the addition of course of the possibility to create gamma-chunks when | ||
74 | writing png-files. | ||
75 | |||
76 | On the other hand it supports alpha-channels. When reading a png-image | ||
77 | you can write the alpha-channel into a pgm-file. And when creating an | ||
78 | RGB+A png-image, you just combine a ppm-file with a corresponding | ||
79 | pgm-file containing the alpha-channel. When reading, transparency chunks | ||
80 | are converted into an alpha-channel and from there on treated the same | ||
81 | way. | ||
82 | |||
83 | Finally you can opt for writing ascii or binary pgm- and ppm-files. When | ||
84 | the bit-depth is 16, the format will always be ascii. | ||
85 | |||
86 | |||
87 | Using it | ||
88 | -------- | ||
89 | To distinguish them from pnmtopng and PngPlus, the utilities are named | ||
90 | png2pnm and pnm2png (2 instead of to). The input- and output-files can | ||
91 | be given as parameters or through redirection. Therefore the programs | ||
92 | can be part of a pipe. | ||
93 | |||
94 | To list the options type "png2pnm -h" or "pnm2png -h". | ||
95 | |||
96 | |||
97 | Just like Scandinavian furniture | ||
98 | -------------------------------- | ||
99 | You have to put it together yourself. I did test the software under | ||
100 | MS-DOS with Turbo-C 3.0 and under RedHat Linux 4.2 with gcc. In both | ||
101 | cases I used libpng-1.0.4 and zlib-1.1.3. Later versions should be OK, | ||
102 | however some older libpng versions have a bug in pngmem.c when using | ||
103 | Turbo-C 3.0 (see below). | ||
104 | |||
105 | You can build it using one of the two makefiles (make -f makefile.###) | ||
106 | or use the batch/script files pngminus.bat / pngminus.sh. This assumes | ||
107 | that you have built the libraries in ../libpng and ../zlib. Using Linux, | ||
108 | make sure that you have built libpng with makefile.std and not | ||
109 | makefile.linux (also called .lnx in earlier versions of libpng). The | ||
110 | latter creates a .so shared-library, while the PngMinus makefile assumes | ||
111 | a normal .a static library. | ||
112 | |||
113 | If you create a ../pngsuite directory and then store the basn####.png | ||
114 | files from PngSuite (http://www.schaik.com/pngsuite/) in there, you can | ||
115 | test in one go the proper functioning of PngMinus, see png2pnm.bat and | ||
116 | pnm2png.bat (or the .sh versions). | ||
117 | |||
118 | |||
119 | Warranty | ||
120 | ------- | ||
121 | Please, remember that this was just a small experiment to learn a few | ||
122 | things. It will have many unforeseen features <vbg>. Who said bugs? Use | ||
123 | it when you are in need for something simple or when you want to start | ||
124 | developing your own stuff. | ||
125 | |||
126 | |||
127 | The Turbo bug | ||
128 | ------------- | ||
129 | ** pngmem.old | ||
130 | hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L); | ||
131 | hptr += 16L; | ||
132 | ** pngmem.c | ||
133 | hptr = (png_byte huge *)((long)(hptr) & 0xfffffff0L); | ||
134 | hptr = hptr + 16L; | ||
135 | ** | ||
136 | |||
137 | ** pngmem.old | ||
138 | png_ptr->offset_table_ptr[i] = (png_bytep)hptr; | ||
139 | hptr += (png_uint_32)65536L; | ||
140 | ** pngmem.c | ||
141 | png_ptr->offset_table_ptr[i] = (png_bytep)hptr; | ||
142 | hptr = hptr + 65536L; | ||
143 | ** | ||
144 | |||
145 | |||
146 | The end | ||
147 | ------- | ||
148 | Willem van Schaik | ||
149 | mailto:willem@schaik.com | ||
150 | http://www.schaik.com/png/ | ||
151 | ------- | ||
152 | Oct 1999 | ||
153 | |||