gosu 0.7.13.3 → 0.7.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (478) hide show
  1. data/Gosu/Audio.hpp +10 -4
  2. data/Gosu/Math.hpp +23 -10
  3. data/Gosu/Platform.hpp +2 -0
  4. data/Gosu/Version.hpp +9 -0
  5. data/GosuImpl/Audio/ALChannelManagement.hpp +13 -3
  6. data/GosuImpl/Audio/AudioFile.hpp +45 -0
  7. data/GosuImpl/Audio/AudioOpenAL.mm +533 -0
  8. data/GosuImpl/Audio/AudioToolboxFile.hpp +217 -0
  9. data/GosuImpl/Audio/OggFile.hpp +114 -0
  10. data/GosuImpl/AudioFmod.cpp +4 -0
  11. data/GosuImpl/AudioSDL.cpp +4 -0
  12. data/GosuImpl/Graphics/GosuView.mm +2 -2
  13. data/GosuImpl/Graphics/Texture.cpp +9 -4
  14. data/GosuImpl/Math.cpp +1 -1
  15. data/GosuImpl/RubyGosu.swg +10 -1
  16. data/GosuImpl/RubyGosu_wrap.cxx +175 -1416
  17. data/GosuImpl/RubyGosu_wrap.cxx.rej +187 -0
  18. data/GosuImpl/WinUtility.cpp +1 -1
  19. data/GosuImpl/WindowMac.mm +1 -0
  20. data/GosuImpl/WindowTouch.mm +1 -0
  21. data/README.txt +5 -5
  22. data/Rakefile +48 -9
  23. data/examples/media/Starfighter.bmp +0 -0
  24. data/linux/configure +1166 -975
  25. data/linux/configure.ac +14 -30
  26. data/linux/extconf.rb +2 -5
  27. data/mac/Gosu.xcodeproj/jlnr.pbxuser +330 -267
  28. data/mac/Gosu.xcodeproj/jlnr.perspectivev3 +48 -47
  29. data/mac/Gosu.xcodeproj/project.pbxproj +626 -74
  30. data/mac/RubyGosu App-Info.plist +1 -1
  31. data/reference/cpp/_audio_8hpp-source.html +81 -75
  32. data/reference/cpp/_math_8hpp-source.html +57 -48
  33. data/reference/cpp/_math_8hpp.html +7 -1
  34. data/reference/cpp/_platform_8hpp-source.html +58 -56
  35. data/reference/cpp/_platform_8hpp.html +21 -2
  36. data/reference/cpp/_version_8hpp-source.html +77 -0
  37. data/reference/cpp/_version_8hpp.html +153 -0
  38. data/reference/cpp/class_gosu_1_1_audio-members.html +1 -0
  39. data/reference/cpp/class_gosu_1_1_audio.html +22 -0
  40. data/reference/cpp/class_gosu_1_1_sample.html +1 -1
  41. data/reference/cpp/class_gosu_1_1_sample_instance.html +1 -1
  42. data/reference/cpp/class_gosu_1_1_song.html +2 -2
  43. data/reference/cpp/files.html +1 -0
  44. data/reference/cpp/functions_0x67.html +1 -3
  45. data/reference/cpp/functions_0x74.html +2 -2
  46. data/reference/cpp/functions_0x75.html +3 -2
  47. data/reference/cpp/functions_func_0x67.html +1 -3
  48. data/reference/cpp/functions_func_0x74.html +2 -2
  49. data/reference/cpp/functions_func_0x75.html +3 -2
  50. data/reference/cpp/globals.html +10 -0
  51. data/reference/cpp/globals_defs.html +10 -0
  52. data/reference/rdoc/classes/Gosu.html +1547 -0
  53. data/reference/rdoc/classes/Gosu/Color.html +563 -0
  54. data/reference/rdoc/classes/Gosu/Font.html +538 -0
  55. data/reference/rdoc/classes/Gosu/GLTexInfo.html +404 -0
  56. data/reference/rdoc/classes/Gosu/Image.html +702 -0
  57. data/reference/rdoc/classes/Gosu/Sample.html +469 -0
  58. data/reference/rdoc/classes/Gosu/SampleInstance.html +516 -0
  59. data/reference/rdoc/classes/Gosu/Song.html +561 -0
  60. data/reference/rdoc/classes/Gosu/TextInput.html +398 -0
  61. data/reference/rdoc/classes/Gosu/Window.html +913 -0
  62. data/reference/rdoc/classes/Numeric.html +416 -0
  63. data/reference/rdoc/created.rid +1 -0
  64. data/reference/rdoc/files/COPYING_txt.html +386 -0
  65. data/reference/rdoc/files/README_txt.html +381 -0
  66. data/reference/rdoc/files/reference/DeploymentOnOSX_rdoc.html +390 -0
  67. data/reference/rdoc/files/reference/DeploymentOnWindows_rdoc.html +392 -0
  68. data/reference/rdoc/files/reference/DrawingWithColors_rdoc.html +357 -0
  69. data/reference/rdoc/files/reference/OrderOfCorners_rdoc.html +352 -0
  70. data/reference/rdoc/files/reference/Tileability_rdoc.html +368 -0
  71. data/reference/rdoc/files/reference/ZOrdering_rdoc.html +355 -0
  72. data/reference/rdoc/files/reference/gosu_rb.html +342 -0
  73. data/reference/rdoc/fr_class_index.html +12 -0
  74. data/reference/rdoc/fr_file_index.html +10 -0
  75. data/reference/rdoc/fr_method_index.html +63 -0
  76. data/reference/rdoc/index.html +1 -0
  77. data/reference/rdoc/rdoc-style.css +318 -0
  78. data/windows/Gosu.vcproj +33 -33
  79. data/windows/RubyGosu.vcproj +2 -2
  80. metadata +36 -400
  81. data/GosuImpl/Audio/AudioFileMac.hpp +0 -105
  82. data/GosuImpl/AudioOpenAL.mm +0 -486
  83. data/mac/libboost_thread_1_34_1_universal.a +0 -0
  84. data/mac/libboost_thread_d_1_34_1_universal.a +0 -0
  85. data/mac/libfmod_universal.a +0 -0
  86. data/mac/libpng_universal.a +0 -0
  87. data/mac/libz_universal.a +0 -0
  88. data/windows/zlib, libpng/libpng/ANNOUNCE +0 -61
  89. data/windows/zlib, libpng/libpng/CHANGES +0 -2173
  90. data/windows/zlib, libpng/libpng/INSTALL +0 -199
  91. data/windows/zlib, libpng/libpng/KNOWNBUG +0 -22
  92. data/windows/zlib, libpng/libpng/LICENSE +0 -109
  93. data/windows/zlib, libpng/libpng/README +0 -264
  94. data/windows/zlib, libpng/libpng/TODO +0 -24
  95. data/windows/zlib, libpng/libpng/Y2KINFO +0 -55
  96. data/windows/zlib, libpng/libpng/configure +0 -13
  97. data/windows/zlib, libpng/libpng/contrib/gregbook/COPYING +0 -340
  98. data/windows/zlib, libpng/libpng/contrib/gregbook/LICENSE +0 -50
  99. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.mingw32 +0 -130
  100. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.sgi +0 -104
  101. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.unx +0 -132
  102. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.w32 +0 -113
  103. data/windows/zlib, libpng/libpng/contrib/gregbook/README +0 -186
  104. data/windows/zlib, libpng/libpng/contrib/gregbook/makevms.com +0 -132
  105. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng.c +0 -304
  106. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng.h +0 -88
  107. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng2.c +0 -645
  108. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng2.h +0 -121
  109. data/windows/zlib, libpng/libpng/contrib/gregbook/readppm.c +0 -179
  110. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng-win.c +0 -684
  111. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng-x.c +0 -904
  112. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng2-win.c +0 -1225
  113. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng2-x.c +0 -2127
  114. data/windows/zlib, libpng/libpng/contrib/gregbook/toucan.png +0 -0
  115. data/windows/zlib, libpng/libpng/contrib/gregbook/wpng.c +0 -853
  116. data/windows/zlib, libpng/libpng/contrib/gregbook/writepng.c +0 -392
  117. data/windows/zlib, libpng/libpng/contrib/gregbook/writepng.h +0 -133
  118. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/README +0 -6
  119. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/gather.sh +0 -8
  120. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/makefile.std +0 -44
  121. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/pngusr.h +0 -67
  122. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/README +0 -6
  123. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/dummy_inflate.c +0 -27
  124. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/gather.sh +0 -9
  125. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/makefile.std +0 -43
  126. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/pngusr.h +0 -66
  127. data/windows/zlib, libpng/libpng/contrib/pngminus/README +0 -153
  128. data/windows/zlib, libpng/libpng/contrib/pngminus/makefile.std +0 -65
  129. data/windows/zlib, libpng/libpng/contrib/pngminus/makefile.tc3 +0 -38
  130. data/windows/zlib, libpng/libpng/contrib/pngminus/makevms.com +0 -92
  131. data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.bat +0 -41
  132. data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.c +0 -430
  133. data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.sh +0 -42
  134. data/windows/zlib, libpng/libpng/contrib/pngminus/pngminus.bat +0 -4
  135. data/windows/zlib, libpng/libpng/contrib/pngminus/pngminus.sh +0 -5
  136. data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.bat +0 -41
  137. data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.c +0 -533
  138. data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.sh +0 -42
  139. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g01.png +0 -0
  140. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g02.png +0 -0
  141. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g04.png +0 -0
  142. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g08.png +0 -0
  143. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g16.png +0 -0
  144. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn2c08.png +0 -0
  145. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn2c16.png +0 -0
  146. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p01.png +0 -0
  147. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p02.png +0 -0
  148. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p04.png +0 -0
  149. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p08.png +0 -0
  150. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn4a08.png +0 -0
  151. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn4a16.png +0 -0
  152. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn6a08.png +0 -0
  153. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn6a16.png +0 -0
  154. data/windows/zlib, libpng/libpng/contrib/visupng/PngFile.c +0 -439
  155. data/windows/zlib, libpng/libpng/contrib/visupng/PngFile.h +0 -27
  156. data/windows/zlib, libpng/libpng/contrib/visupng/README.txt +0 -58
  157. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.c +0 -961
  158. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.dsp +0 -147
  159. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.dsw +0 -29
  160. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.ico +0 -0
  161. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.png +0 -0
  162. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.rc +0 -152
  163. data/windows/zlib, libpng/libpng/contrib/visupng/cexcept.h +0 -243
  164. data/windows/zlib, libpng/libpng/contrib/visupng/resource.h +0 -23
  165. data/windows/zlib, libpng/libpng/example.c +0 -814
  166. data/windows/zlib, libpng/libpng/libpng-1.2.29.txt +0 -2906
  167. data/windows/zlib, libpng/libpng/libpng.3 +0 -3680
  168. data/windows/zlib, libpng/libpng/libpngpf.3 +0 -274
  169. data/windows/zlib, libpng/libpng/png.5 +0 -74
  170. data/windows/zlib, libpng/libpng/png.c +0 -798
  171. data/windows/zlib, libpng/libpng/png.h +0 -3569
  172. data/windows/zlib, libpng/libpng/pngbar.jpg +0 -0
  173. data/windows/zlib, libpng/libpng/pngbar.png +0 -0
  174. data/windows/zlib, libpng/libpng/pngconf.h +0 -1481
  175. data/windows/zlib, libpng/libpng/pngerror.c +0 -343
  176. data/windows/zlib, libpng/libpng/pnggccrd.c +0 -103
  177. data/windows/zlib, libpng/libpng/pngget.c +0 -901
  178. data/windows/zlib, libpng/libpng/pngmem.c +0 -608
  179. data/windows/zlib, libpng/libpng/pngnow.png +0 -0
  180. data/windows/zlib, libpng/libpng/pngpread.c +0 -1598
  181. data/windows/zlib, libpng/libpng/pngread.c +0 -1479
  182. data/windows/zlib, libpng/libpng/pngrio.c +0 -167
  183. data/windows/zlib, libpng/libpng/pngrtran.c +0 -4292
  184. data/windows/zlib, libpng/libpng/pngrutil.c +0 -3183
  185. data/windows/zlib, libpng/libpng/pngset.c +0 -1268
  186. data/windows/zlib, libpng/libpng/pngtest.c +0 -1563
  187. data/windows/zlib, libpng/libpng/pngtest.png +0 -0
  188. data/windows/zlib, libpng/libpng/pngtrans.c +0 -662
  189. data/windows/zlib, libpng/libpng/pngvcrd.c +0 -1
  190. data/windows/zlib, libpng/libpng/pngwio.c +0 -234
  191. data/windows/zlib, libpng/libpng/pngwrite.c +0 -1532
  192. data/windows/zlib, libpng/libpng/pngwtran.c +0 -572
  193. data/windows/zlib, libpng/libpng/pngwutil.c +0 -2802
  194. data/windows/zlib, libpng/libpng/projects/beos/x86-shared.proj +0 -0
  195. data/windows/zlib, libpng/libpng/projects/beos/x86-shared.txt +0 -22
  196. data/windows/zlib, libpng/libpng/projects/beos/x86-static.proj +0 -0
  197. data/windows/zlib, libpng/libpng/projects/beos/x86-static.txt +0 -22
  198. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpf +0 -22
  199. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpg +0 -25
  200. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpr +0 -157
  201. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.cpp +0 -29
  202. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.readme.txt +0 -25
  203. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpngstat.bpf +0 -22
  204. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpngstat.bpr +0 -109
  205. data/windows/zlib, libpng/libpng/projects/cbuilder5/zlib.readme.txt +0 -14
  206. data/windows/zlib, libpng/libpng/projects/netware.txt +0 -6
  207. data/windows/zlib, libpng/libpng/projects/visualc6/README.txt +0 -57
  208. data/windows/zlib, libpng/libpng/projects/visualc6/libpng.dsp +0 -472
  209. data/windows/zlib, libpng/libpng/projects/visualc6/libpng.dsw +0 -59
  210. data/windows/zlib, libpng/libpng/projects/visualc6/pngtest.dsp +0 -314
  211. data/windows/zlib, libpng/libpng/projects/visualc71/PRJ0041.mak +0 -21
  212. data/windows/zlib, libpng/libpng/projects/visualc71/README.txt +0 -57
  213. data/windows/zlib, libpng/libpng/projects/visualc71/README_zlib.txt +0 -44
  214. data/windows/zlib, libpng/libpng/projects/visualc71/libpng.sln +0 -88
  215. data/windows/zlib, libpng/libpng/projects/visualc71/libpng.vcproj +0 -702
  216. data/windows/zlib, libpng/libpng/projects/visualc71/pngtest.vcproj +0 -459
  217. data/windows/zlib, libpng/libpng/projects/visualc71/zlib.vcproj +0 -670
  218. data/windows/zlib, libpng/libpng/projects/wince.txt +0 -6
  219. data/windows/zlib, libpng/libpng/scripts/CMakeLists.txt +0 -210
  220. data/windows/zlib, libpng/libpng/scripts/SCOPTIONS.ppc +0 -7
  221. data/windows/zlib, libpng/libpng/scripts/descrip.mms +0 -52
  222. data/windows/zlib, libpng/libpng/scripts/libpng-config-body.in +0 -96
  223. data/windows/zlib, libpng/libpng/scripts/libpng-config-head.in +0 -21
  224. data/windows/zlib, libpng/libpng/scripts/libpng-config.in +0 -124
  225. data/windows/zlib, libpng/libpng/scripts/libpng.icc +0 -44
  226. data/windows/zlib, libpng/libpng/scripts/libpng.pc-configure.in +0 -10
  227. data/windows/zlib, libpng/libpng/scripts/libpng.pc.in +0 -10
  228. data/windows/zlib, libpng/libpng/scripts/makefile.32sunu +0 -254
  229. data/windows/zlib, libpng/libpng/scripts/makefile.64sunu +0 -254
  230. data/windows/zlib, libpng/libpng/scripts/makefile.acorn +0 -51
  231. data/windows/zlib, libpng/libpng/scripts/makefile.aix +0 -113
  232. data/windows/zlib, libpng/libpng/scripts/makefile.amiga +0 -48
  233. data/windows/zlib, libpng/libpng/scripts/makefile.atari +0 -51
  234. data/windows/zlib, libpng/libpng/scripts/makefile.bc32 +0 -152
  235. data/windows/zlib, libpng/libpng/scripts/makefile.beos +0 -226
  236. data/windows/zlib, libpng/libpng/scripts/makefile.bor +0 -162
  237. data/windows/zlib, libpng/libpng/scripts/makefile.cygwin +0 -299
  238. data/windows/zlib, libpng/libpng/scripts/makefile.darwin +0 -234
  239. data/windows/zlib, libpng/libpng/scripts/makefile.dec +0 -214
  240. data/windows/zlib, libpng/libpng/scripts/makefile.dj2 +0 -55
  241. data/windows/zlib, libpng/libpng/scripts/makefile.elf +0 -275
  242. data/windows/zlib, libpng/libpng/scripts/makefile.freebsd +0 -48
  243. data/windows/zlib, libpng/libpng/scripts/makefile.gcc +0 -79
  244. data/windows/zlib, libpng/libpng/scripts/makefile.gcmmx +0 -271
  245. data/windows/zlib, libpng/libpng/scripts/makefile.hp64 +0 -235
  246. data/windows/zlib, libpng/libpng/scripts/makefile.hpgcc +0 -245
  247. data/windows/zlib, libpng/libpng/scripts/makefile.hpux +0 -232
  248. data/windows/zlib, libpng/libpng/scripts/makefile.ibmc +0 -71
  249. data/windows/zlib, libpng/libpng/scripts/makefile.intel +0 -102
  250. data/windows/zlib, libpng/libpng/scripts/makefile.knr +0 -99
  251. data/windows/zlib, libpng/libpng/scripts/makefile.linux +0 -249
  252. data/windows/zlib, libpng/libpng/scripts/makefile.mingw +0 -289
  253. data/windows/zlib, libpng/libpng/scripts/makefile.mips +0 -83
  254. data/windows/zlib, libpng/libpng/scripts/makefile.msc +0 -86
  255. data/windows/zlib, libpng/libpng/scripts/makefile.ne12bsd +0 -45
  256. data/windows/zlib, libpng/libpng/scripts/makefile.netbsd +0 -45
  257. data/windows/zlib, libpng/libpng/scripts/makefile.nommx +0 -252
  258. data/windows/zlib, libpng/libpng/scripts/makefile.openbsd +0 -73
  259. data/windows/zlib, libpng/libpng/scripts/makefile.os2 +0 -69
  260. data/windows/zlib, libpng/libpng/scripts/makefile.sco +0 -229
  261. data/windows/zlib, libpng/libpng/scripts/makefile.sggcc +0 -242
  262. data/windows/zlib, libpng/libpng/scripts/makefile.sgi +0 -245
  263. data/windows/zlib, libpng/libpng/scripts/makefile.so9 +0 -251
  264. data/windows/zlib, libpng/libpng/scripts/makefile.solaris +0 -249
  265. data/windows/zlib, libpng/libpng/scripts/makefile.solaris-x86 +0 -248
  266. data/windows/zlib, libpng/libpng/scripts/makefile.std +0 -92
  267. data/windows/zlib, libpng/libpng/scripts/makefile.sunos +0 -97
  268. data/windows/zlib, libpng/libpng/scripts/makefile.tc3 +0 -89
  269. data/windows/zlib, libpng/libpng/scripts/makefile.vcawin32 +0 -99
  270. data/windows/zlib, libpng/libpng/scripts/makefile.vcwin32 +0 -99
  271. data/windows/zlib, libpng/libpng/scripts/makefile.watcom +0 -109
  272. data/windows/zlib, libpng/libpng/scripts/makevms.com +0 -144
  273. data/windows/zlib, libpng/libpng/scripts/pngos2.def +0 -257
  274. data/windows/zlib, libpng/libpng/scripts/pngw32.def +0 -238
  275. data/windows/zlib, libpng/libpng/scripts/pngw32.rc +0 -112
  276. data/windows/zlib, libpng/libpng/scripts/smakefile.ppc +0 -30
  277. data/windows/zlib, libpng/zlib/ChangeLog +0 -855
  278. data/windows/zlib, libpng/zlib/FAQ +0 -339
  279. data/windows/zlib, libpng/zlib/INDEX +0 -51
  280. data/windows/zlib, libpng/zlib/Makefile +0 -154
  281. data/windows/zlib, libpng/zlib/Makefile.in +0 -154
  282. data/windows/zlib, libpng/zlib/README +0 -125
  283. data/windows/zlib, libpng/zlib/adler32.c +0 -149
  284. data/windows/zlib, libpng/zlib/algorithm.txt +0 -209
  285. data/windows/zlib, libpng/zlib/amiga/Makefile.pup +0 -66
  286. data/windows/zlib, libpng/zlib/amiga/Makefile.sas +0 -65
  287. data/windows/zlib, libpng/zlib/as400/bndsrc +0 -132
  288. data/windows/zlib, libpng/zlib/as400/compile.clp +0 -123
  289. data/windows/zlib, libpng/zlib/as400/readme.txt +0 -111
  290. data/windows/zlib, libpng/zlib/as400/zlib.inc +0 -331
  291. data/windows/zlib, libpng/zlib/compress.c +0 -79
  292. data/windows/zlib, libpng/zlib/configure +0 -459
  293. data/windows/zlib, libpng/zlib/contrib/README.contrib +0 -71
  294. data/windows/zlib, libpng/zlib/contrib/ada/buffer_demo.adb +0 -106
  295. data/windows/zlib, libpng/zlib/contrib/ada/mtest.adb +0 -156
  296. data/windows/zlib, libpng/zlib/contrib/ada/read.adb +0 -156
  297. data/windows/zlib, libpng/zlib/contrib/ada/readme.txt +0 -65
  298. data/windows/zlib, libpng/zlib/contrib/ada/test.adb +0 -463
  299. data/windows/zlib, libpng/zlib/contrib/ada/zlib-streams.adb +0 -225
  300. data/windows/zlib, libpng/zlib/contrib/ada/zlib-streams.ads +0 -114
  301. data/windows/zlib, libpng/zlib/contrib/ada/zlib-thin.adb +0 -141
  302. data/windows/zlib, libpng/zlib/contrib/ada/zlib-thin.ads +0 -450
  303. data/windows/zlib, libpng/zlib/contrib/ada/zlib.adb +0 -701
  304. data/windows/zlib, libpng/zlib/contrib/ada/zlib.ads +0 -328
  305. data/windows/zlib, libpng/zlib/contrib/ada/zlib.gpr +0 -20
  306. data/windows/zlib, libpng/zlib/contrib/asm586/README.586 +0 -43
  307. data/windows/zlib, libpng/zlib/contrib/asm586/match.S +0 -364
  308. data/windows/zlib, libpng/zlib/contrib/asm686/README.686 +0 -34
  309. data/windows/zlib, libpng/zlib/contrib/asm686/match.S +0 -329
  310. data/windows/zlib, libpng/zlib/contrib/blast/Makefile +0 -8
  311. data/windows/zlib, libpng/zlib/contrib/blast/README +0 -4
  312. data/windows/zlib, libpng/zlib/contrib/blast/blast.c +0 -444
  313. data/windows/zlib, libpng/zlib/contrib/blast/blast.h +0 -71
  314. data/windows/zlib, libpng/zlib/contrib/blast/test.pk +0 -0
  315. data/windows/zlib, libpng/zlib/contrib/blast/test.txt +0 -1
  316. data/windows/zlib, libpng/zlib/contrib/delphi/ZLib.pas +0 -557
  317. data/windows/zlib, libpng/zlib/contrib/delphi/ZLibConst.pas +0 -11
  318. data/windows/zlib, libpng/zlib/contrib/delphi/readme.txt +0 -76
  319. data/windows/zlib, libpng/zlib/contrib/delphi/zlibd32.mak +0 -93
  320. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.build +0 -33
  321. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.chm +0 -0
  322. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.sln +0 -21
  323. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +0 -58
  324. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +0 -202
  325. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +0 -83
  326. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +0 -198
  327. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/Deflater.cs +0 -106
  328. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +0 -288
  329. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +0 -141
  330. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +0 -301
  331. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/Inflater.cs +0 -105
  332. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +0 -274
  333. data/windows/zlib, libpng/zlib/contrib/dotzlib/LICENSE_1_0.txt +0 -23
  334. data/windows/zlib, libpng/zlib/contrib/dotzlib/readme.txt +0 -58
  335. data/windows/zlib, libpng/zlib/contrib/infback9/README +0 -1
  336. data/windows/zlib, libpng/zlib/contrib/infback9/infback9.c +0 -608
  337. data/windows/zlib, libpng/zlib/contrib/infback9/infback9.h +0 -37
  338. data/windows/zlib, libpng/zlib/contrib/infback9/inffix9.h +0 -107
  339. data/windows/zlib, libpng/zlib/contrib/infback9/inflate9.h +0 -47
  340. data/windows/zlib, libpng/zlib/contrib/infback9/inftree9.c +0 -323
  341. data/windows/zlib, libpng/zlib/contrib/infback9/inftree9.h +0 -55
  342. data/windows/zlib, libpng/zlib/contrib/inflate86/inffas86.c +0 -1157
  343. data/windows/zlib, libpng/zlib/contrib/inflate86/inffast.S +0 -1368
  344. data/windows/zlib, libpng/zlib/contrib/iostream/test.cpp +0 -24
  345. data/windows/zlib, libpng/zlib/contrib/iostream/zfstream.cpp +0 -329
  346. data/windows/zlib, libpng/zlib/contrib/iostream/zfstream.h +0 -128
  347. data/windows/zlib, libpng/zlib/contrib/iostream2/zstream.h +0 -307
  348. data/windows/zlib, libpng/zlib/contrib/iostream2/zstream_test.cpp +0 -25
  349. data/windows/zlib, libpng/zlib/contrib/iostream3/README +0 -35
  350. data/windows/zlib, libpng/zlib/contrib/iostream3/TODO +0 -17
  351. data/windows/zlib, libpng/zlib/contrib/iostream3/test.cc +0 -50
  352. data/windows/zlib, libpng/zlib/contrib/iostream3/zfstream.cc +0 -479
  353. data/windows/zlib, libpng/zlib/contrib/iostream3/zfstream.h +0 -466
  354. data/windows/zlib, libpng/zlib/contrib/masm686/match.asm +0 -413
  355. data/windows/zlib, libpng/zlib/contrib/masmx64/bld_ml64.bat +0 -2
  356. data/windows/zlib, libpng/zlib/contrib/masmx64/gvmat64.asm +0 -513
  357. data/windows/zlib, libpng/zlib/contrib/masmx64/gvmat64.obj +0 -0
  358. data/windows/zlib, libpng/zlib/contrib/masmx64/inffas8664.c +0 -186
  359. data/windows/zlib, libpng/zlib/contrib/masmx64/inffasx64.asm +0 -392
  360. data/windows/zlib, libpng/zlib/contrib/masmx64/inffasx64.obj +0 -0
  361. data/windows/zlib, libpng/zlib/contrib/masmx64/readme.txt +0 -28
  362. data/windows/zlib, libpng/zlib/contrib/masmx86/bld_ml32.bat +0 -2
  363. data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32.asm +0 -972
  364. data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32.obj +0 -0
  365. data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32c.c +0 -62
  366. data/windows/zlib, libpng/zlib/contrib/masmx86/inffas32.asm +0 -1083
  367. data/windows/zlib, libpng/zlib/contrib/masmx86/inffas32.obj +0 -0
  368. data/windows/zlib, libpng/zlib/contrib/masmx86/mkasm.bat +0 -3
  369. data/windows/zlib, libpng/zlib/contrib/masmx86/readme.txt +0 -21
  370. data/windows/zlib, libpng/zlib/contrib/minizip/ChangeLogUnzip +0 -67
  371. data/windows/zlib, libpng/zlib/contrib/minizip/Makefile +0 -25
  372. data/windows/zlib, libpng/zlib/contrib/minizip/crypt.h +0 -132
  373. data/windows/zlib, libpng/zlib/contrib/minizip/ioapi.c +0 -177
  374. data/windows/zlib, libpng/zlib/contrib/minizip/ioapi.h +0 -75
  375. data/windows/zlib, libpng/zlib/contrib/minizip/iowin32.c +0 -270
  376. data/windows/zlib, libpng/zlib/contrib/minizip/iowin32.h +0 -21
  377. data/windows/zlib, libpng/zlib/contrib/minizip/miniunz.c +0 -585
  378. data/windows/zlib, libpng/zlib/contrib/minizip/minizip.c +0 -420
  379. data/windows/zlib, libpng/zlib/contrib/minizip/mztools.c +0 -281
  380. data/windows/zlib, libpng/zlib/contrib/minizip/mztools.h +0 -31
  381. data/windows/zlib, libpng/zlib/contrib/minizip/unzip.c +0 -1598
  382. data/windows/zlib, libpng/zlib/contrib/minizip/unzip.h +0 -354
  383. data/windows/zlib, libpng/zlib/contrib/minizip/zip.c +0 -1219
  384. data/windows/zlib, libpng/zlib/contrib/minizip/zip.h +0 -235
  385. data/windows/zlib, libpng/zlib/contrib/pascal/example.pas +0 -599
  386. data/windows/zlib, libpng/zlib/contrib/pascal/readme.txt +0 -76
  387. data/windows/zlib, libpng/zlib/contrib/pascal/zlibd32.mak +0 -93
  388. data/windows/zlib, libpng/zlib/contrib/pascal/zlibpas.pas +0 -236
  389. data/windows/zlib, libpng/zlib/contrib/puff/Makefile +0 -8
  390. data/windows/zlib, libpng/zlib/contrib/puff/README +0 -63
  391. data/windows/zlib, libpng/zlib/contrib/puff/puff.c +0 -837
  392. data/windows/zlib, libpng/zlib/contrib/puff/puff.h +0 -31
  393. data/windows/zlib, libpng/zlib/contrib/puff/zeros.raw +0 -0
  394. data/windows/zlib, libpng/zlib/contrib/testzlib/testzlib.c +0 -275
  395. data/windows/zlib, libpng/zlib/contrib/testzlib/testzlib.txt +0 -10
  396. data/windows/zlib, libpng/zlib/contrib/untgz/Makefile +0 -14
  397. data/windows/zlib, libpng/zlib/contrib/untgz/Makefile.msc +0 -17
  398. data/windows/zlib, libpng/zlib/contrib/untgz/untgz.c +0 -674
  399. data/windows/zlib, libpng/zlib/contrib/vstudio/readme.txt +0 -73
  400. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/miniunz.vcproj +0 -126
  401. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/minizip.vcproj +0 -126
  402. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/testzlib.vcproj +0 -126
  403. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlib.rc +0 -32
  404. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibstat.vcproj +0 -246
  405. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.def +0 -92
  406. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.sln +0 -78
  407. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.vcproj +0 -445
  408. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/miniunz.vcproj +0 -566
  409. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/minizip.vcproj +0 -563
  410. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/testzlib.vcproj +0 -948
  411. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/testzlibdll.vcproj +0 -567
  412. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlib.rc +0 -32
  413. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibstat.vcproj +0 -870
  414. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.def +0 -92
  415. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.sln +0 -144
  416. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.vcproj +0 -1219
  417. data/windows/zlib, libpng/zlib/crc32.c +0 -423
  418. data/windows/zlib, libpng/zlib/crc32.h +0 -441
  419. data/windows/zlib, libpng/zlib/deflate.c +0 -1736
  420. data/windows/zlib, libpng/zlib/deflate.h +0 -331
  421. data/windows/zlib, libpng/zlib/example.c +0 -565
  422. data/windows/zlib, libpng/zlib/examples/README.examples +0 -42
  423. data/windows/zlib, libpng/zlib/examples/fitblk.c +0 -233
  424. data/windows/zlib, libpng/zlib/examples/gun.c +0 -693
  425. data/windows/zlib, libpng/zlib/examples/gzappend.c +0 -500
  426. data/windows/zlib, libpng/zlib/examples/gzjoin.c +0 -448
  427. data/windows/zlib, libpng/zlib/examples/gzlog.c +0 -413
  428. data/windows/zlib, libpng/zlib/examples/gzlog.h +0 -58
  429. data/windows/zlib, libpng/zlib/examples/zlib_how.html +0 -523
  430. data/windows/zlib, libpng/zlib/examples/zpipe.c +0 -191
  431. data/windows/zlib, libpng/zlib/examples/zran.c +0 -404
  432. data/windows/zlib, libpng/zlib/gzio.c +0 -1026
  433. data/windows/zlib, libpng/zlib/infback.c +0 -623
  434. data/windows/zlib, libpng/zlib/inffast.c +0 -318
  435. data/windows/zlib, libpng/zlib/inffast.h +0 -11
  436. data/windows/zlib, libpng/zlib/inffixed.h +0 -94
  437. data/windows/zlib, libpng/zlib/inflate.c +0 -1368
  438. data/windows/zlib, libpng/zlib/inflate.h +0 -115
  439. data/windows/zlib, libpng/zlib/inftrees.c +0 -329
  440. data/windows/zlib, libpng/zlib/inftrees.h +0 -55
  441. data/windows/zlib, libpng/zlib/make_vms.com +0 -461
  442. data/windows/zlib, libpng/zlib/minigzip.c +0 -322
  443. data/windows/zlib, libpng/zlib/msdos/Makefile.bor +0 -109
  444. data/windows/zlib, libpng/zlib/msdos/Makefile.dj2 +0 -104
  445. data/windows/zlib, libpng/zlib/msdos/Makefile.emx +0 -69
  446. data/windows/zlib, libpng/zlib/msdos/Makefile.msc +0 -106
  447. data/windows/zlib, libpng/zlib/msdos/Makefile.tc +0 -94
  448. data/windows/zlib, libpng/zlib/old/Makefile.riscos +0 -151
  449. data/windows/zlib, libpng/zlib/old/README +0 -3
  450. data/windows/zlib, libpng/zlib/old/descrip.mms +0 -48
  451. data/windows/zlib, libpng/zlib/old/os2/Makefile.os2 +0 -136
  452. data/windows/zlib, libpng/zlib/old/os2/zlib.def +0 -51
  453. data/windows/zlib, libpng/zlib/old/visual-basic.txt +0 -160
  454. data/windows/zlib, libpng/zlib/old/zlib.html +0 -971
  455. data/windows/zlib, libpng/zlib/projects/README.projects +0 -41
  456. data/windows/zlib, libpng/zlib/projects/visualc6/README.txt +0 -73
  457. data/windows/zlib, libpng/zlib/projects/visualc6/example.dsp +0 -278
  458. data/windows/zlib, libpng/zlib/projects/visualc6/minigzip.dsp +0 -278
  459. data/windows/zlib, libpng/zlib/projects/visualc6/zlib.dsp +0 -609
  460. data/windows/zlib, libpng/zlib/projects/visualc6/zlib.dsw +0 -59
  461. data/windows/zlib, libpng/zlib/qnx/package.qpg +0 -141
  462. data/windows/zlib, libpng/zlib/trees.c +0 -1219
  463. data/windows/zlib, libpng/zlib/trees.h +0 -128
  464. data/windows/zlib, libpng/zlib/uncompr.c +0 -61
  465. data/windows/zlib, libpng/zlib/win32/DLL_FAQ.txt +0 -397
  466. data/windows/zlib, libpng/zlib/win32/Makefile.bor +0 -107
  467. data/windows/zlib, libpng/zlib/win32/Makefile.emx +0 -69
  468. data/windows/zlib, libpng/zlib/win32/Makefile.gcc +0 -141
  469. data/windows/zlib, libpng/zlib/win32/Makefile.msc +0 -126
  470. data/windows/zlib, libpng/zlib/win32/VisualC.txt +0 -3
  471. data/windows/zlib, libpng/zlib/win32/zlib.def +0 -60
  472. data/windows/zlib, libpng/zlib/win32/zlib1.rc +0 -39
  473. data/windows/zlib, libpng/zlib/zconf.h +0 -332
  474. data/windows/zlib, libpng/zlib/zconf.in.h +0 -332
  475. data/windows/zlib, libpng/zlib/zlib.3 +0 -159
  476. data/windows/zlib, libpng/zlib/zlib.h +0 -1357
  477. data/windows/zlib, libpng/zlib/zutil.c +0 -318
  478. data/windows/zlib, libpng/zlib/zutil.h +0 -269
@@ -1,23 +0,0 @@
1
- //{{NO_DEPENDENCIES}}
2
- // Microsoft Developer Studio generated include file.
3
- // Used by VisualPng.rc
4
- //
5
- #define IDM_FILE_OPEN 40001
6
- #define IDM_FILE_SAVE 40002
7
- #define IDM_FILE_NEXT 40003
8
- #define IDM_FILE_PREVIOUS 40004
9
- #define IDM_FILE_EXIT 40005
10
- #define IDM_OPTIONS_BACKGROUND 40006
11
- #define IDM_OPTIONS_STRETCH 40007
12
- #define IDM_HELP_ABOUT 40008
13
-
14
- // Next default values for new objects
15
- //
16
- #ifdef APSTUDIO_INVOKED
17
- #ifndef APSTUDIO_READONLY_SYMBOLS
18
- #define _APS_NEXT_RESOURCE_VALUE 113
19
- #define _APS_NEXT_COMMAND_VALUE 40009
20
- #define _APS_NEXT_CONTROL_VALUE 1001
21
- #define _APS_NEXT_SYMED_VALUE 101
22
- #endif
23
- #endif
@@ -1,814 +0,0 @@
1
-
2
- #if 0 /* in case someone actually tries to compile this */
3
-
4
- /* example.c - an example of using libpng
5
- * Last changed in libpng 1.2.1 December 7, 2001.
6
- * This file has been placed in the public domain by the authors.
7
- * Maintained 1998-2007 Glenn Randers-Pehrson
8
- * Maintained 1996, 1997 Andreas Dilger)
9
- * Written 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
10
- */
11
-
12
- /* This is an example of how to use libpng to read and write PNG files.
13
- * The file libpng.txt is much more verbose then this. If you have not
14
- * read it, do so first. This was designed to be a starting point of an
15
- * implementation. This is not officially part of libpng, is hereby placed
16
- * in the public domain, and therefore does not require a copyright notice.
17
- *
18
- * This file does not currently compile, because it is missing certain
19
- * parts, like allocating memory to hold an image. You will have to
20
- * supply these parts to get it to compile. For an example of a minimal
21
- * working PNG reader/writer, see pngtest.c, included in this distribution;
22
- * see also the programs in the contrib directory.
23
- */
24
-
25
- #include "png.h"
26
-
27
- /* The png_jmpbuf() macro, used in error handling, became available in
28
- * libpng version 1.0.6. If you want to be able to run your code with older
29
- * versions of libpng, you must define the macro yourself (but only if it
30
- * is not already defined by libpng!).
31
- */
32
-
33
- #ifndef png_jmpbuf
34
- # define png_jmpbuf(png_ptr) ((png_ptr)->jmpbuf)
35
- #endif
36
-
37
- /* Check to see if a file is a PNG file using png_sig_cmp(). png_sig_cmp()
38
- * returns zero if the image is a PNG and nonzero if it isn't a PNG.
39
- *
40
- * The function check_if_png() shown here, but not used, returns nonzero (true)
41
- * if the file can be opened and is a PNG, 0 (false) otherwise.
42
- *
43
- * If this call is successful, and you are going to keep the file open,
44
- * you should call png_set_sig_bytes(png_ptr, PNG_BYTES_TO_CHECK); once
45
- * you have created the png_ptr, so that libpng knows your application
46
- * has read that many bytes from the start of the file. Make sure you
47
- * don't call png_set_sig_bytes() with more than 8 bytes read or give it
48
- * an incorrect number of bytes read, or you will either have read too
49
- * many bytes (your fault), or you are telling libpng to read the wrong
50
- * number of magic bytes (also your fault).
51
- *
52
- * Many applications already read the first 2 or 4 bytes from the start
53
- * of the image to determine the file type, so it would be easiest just
54
- * to pass the bytes to png_sig_cmp() or even skip that if you know
55
- * you have a PNG file, and call png_set_sig_bytes().
56
- */
57
- #define PNG_BYTES_TO_CHECK 4
58
- int check_if_png(char *file_name, FILE **fp)
59
- {
60
- char buf[PNG_BYTES_TO_CHECK];
61
-
62
- /* Open the prospective PNG file. */
63
- if ((*fp = fopen(file_name, "rb")) == NULL)
64
- return 0;
65
-
66
- /* Read in some of the signature bytes */
67
- if (fread(buf, 1, PNG_BYTES_TO_CHECK, *fp) != PNG_BYTES_TO_CHECK)
68
- return 0;
69
-
70
- /* Compare the first PNG_BYTES_TO_CHECK bytes of the signature.
71
- Return nonzero (true) if they match */
72
-
73
- return(!png_sig_cmp(buf, (png_size_t)0, PNG_BYTES_TO_CHECK));
74
- }
75
-
76
- /* Read a PNG file. You may want to return an error code if the read
77
- * fails (depending upon the failure). There are two "prototypes" given
78
- * here - one where we are given the filename, and we need to open the
79
- * file, and the other where we are given an open file (possibly with
80
- * some or all of the magic bytes read - see comments above).
81
- */
82
- #ifdef open_file /* prototype 1 */
83
- void read_png(char *file_name) /* We need to open the file */
84
- {
85
- png_structp png_ptr;
86
- png_infop info_ptr;
87
- unsigned int sig_read = 0;
88
- png_uint_32 width, height;
89
- int bit_depth, color_type, interlace_type;
90
- FILE *fp;
91
-
92
- if ((fp = fopen(file_name, "rb")) == NULL)
93
- return (ERROR);
94
- #else no_open_file /* prototype 2 */
95
- void read_png(FILE *fp, unsigned int sig_read) /* file is already open */
96
- {
97
- png_structp png_ptr;
98
- png_infop info_ptr;
99
- png_uint_32 width, height;
100
- int bit_depth, color_type, interlace_type;
101
- #endif no_open_file /* only use one prototype! */
102
-
103
- /* Create and initialize the png_struct with the desired error handler
104
- * functions. If you want to use the default stderr and longjump method,
105
- * you can supply NULL for the last three parameters. We also supply the
106
- * the compiler header file version, so that we know if the application
107
- * was compiled with a compatible version of the library. REQUIRED
108
- */
109
- png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
110
- png_voidp user_error_ptr, user_error_fn, user_warning_fn);
111
-
112
- if (png_ptr == NULL)
113
- {
114
- fclose(fp);
115
- return (ERROR);
116
- }
117
-
118
- /* Allocate/initialize the memory for image information. REQUIRED. */
119
- info_ptr = png_create_info_struct(png_ptr);
120
- if (info_ptr == NULL)
121
- {
122
- fclose(fp);
123
- png_destroy_read_struct(&png_ptr, png_infopp_NULL, png_infopp_NULL);
124
- return (ERROR);
125
- }
126
-
127
- /* Set error handling if you are using the setjmp/longjmp method (this is
128
- * the normal method of doing things with libpng). REQUIRED unless you
129
- * set up your own error handlers in the png_create_read_struct() earlier.
130
- */
131
-
132
- if (setjmp(png_jmpbuf(png_ptr)))
133
- {
134
- /* Free all of the memory associated with the png_ptr and info_ptr */
135
- png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
136
- fclose(fp);
137
- /* If we get here, we had a problem reading the file */
138
- return (ERROR);
139
- }
140
-
141
- /* One of the following I/O initialization methods is REQUIRED */
142
- #ifdef streams /* PNG file I/O method 1 */
143
- /* Set up the input control if you are using standard C streams */
144
- png_init_io(png_ptr, fp);
145
-
146
- #else no_streams /* PNG file I/O method 2 */
147
- /* If you are using replacement read functions, instead of calling
148
- * png_init_io() here you would call:
149
- */
150
- png_set_read_fn(png_ptr, (void *)user_io_ptr, user_read_fn);
151
- /* where user_io_ptr is a structure you want available to the callbacks */
152
- #endif no_streams /* Use only one I/O method! */
153
-
154
- /* If we have already read some of the signature */
155
- png_set_sig_bytes(png_ptr, sig_read);
156
-
157
- #ifdef hilevel
158
- /*
159
- * If you have enough memory to read in the entire image at once,
160
- * and you need to specify only transforms that can be controlled
161
- * with one of the PNG_TRANSFORM_* bits (this presently excludes
162
- * dithering, filling, setting background, and doing gamma
163
- * adjustment), then you can read the entire image (including
164
- * pixels) into the info structure with this call:
165
- */
166
- png_read_png(png_ptr, info_ptr, png_transforms, png_voidp_NULL);
167
- #else
168
- /* OK, you're doing it the hard way, with the lower-level functions */
169
-
170
- /* The call to png_read_info() gives us all of the information from the
171
- * PNG file before the first IDAT (image data chunk). REQUIRED
172
- */
173
- png_read_info(png_ptr, info_ptr);
174
-
175
- png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
176
- &interlace_type, int_p_NULL, int_p_NULL);
177
-
178
- /* Set up the data transformations you want. Note that these are all
179
- * optional. Only call them if you want/need them. Many of the
180
- * transformations only work on specific types of images, and many
181
- * are mutually exclusive.
182
- */
183
-
184
- /* tell libpng to strip 16 bit/color files down to 8 bits/color */
185
- png_set_strip_16(png_ptr);
186
-
187
- /* Strip alpha bytes from the input data without combining with the
188
- * background (not recommended).
189
- */
190
- png_set_strip_alpha(png_ptr);
191
-
192
- /* Extract multiple pixels with bit depths of 1, 2, and 4 from a single
193
- * byte into separate bytes (useful for paletted and grayscale images).
194
- */
195
- png_set_packing(png_ptr);
196
-
197
- /* Change the order of packed pixels to least significant bit first
198
- * (not useful if you are using png_set_packing). */
199
- png_set_packswap(png_ptr);
200
-
201
- /* Expand paletted colors into true RGB triplets */
202
- if (color_type == PNG_COLOR_TYPE_PALETTE)
203
- png_set_palette_to_rgb(png_ptr);
204
-
205
- /* Expand grayscale images to the full 8 bits from 1, 2, or 4 bits/pixel */
206
- if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8)
207
- png_set_gray_1_2_4_to_8(png_ptr);
208
-
209
- /* Expand paletted or RGB images with transparency to full alpha channels
210
- * so the data will be available as RGBA quartets.
211
- */
212
- if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
213
- png_set_tRNS_to_alpha(png_ptr);
214
-
215
- /* Set the background color to draw transparent and alpha images over.
216
- * It is possible to set the red, green, and blue components directly
217
- * for paletted images instead of supplying a palette index. Note that
218
- * even if the PNG file supplies a background, you are not required to
219
- * use it - you should use the (solid) application background if it has one.
220
- */
221
-
222
- png_color_16 my_background, *image_background;
223
-
224
- if (png_get_bKGD(png_ptr, info_ptr, &image_background))
225
- png_set_background(png_ptr, image_background,
226
- PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
227
- else
228
- png_set_background(png_ptr, &my_background,
229
- PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
230
-
231
- /* Some suggestions as to how to get a screen gamma value */
232
-
233
- /* Note that screen gamma is the display_exponent, which includes
234
- * the CRT_exponent and any correction for viewing conditions */
235
- if (/* We have a user-defined screen gamma value */)
236
- {
237
- screen_gamma = user-defined screen_gamma;
238
- }
239
- /* This is one way that applications share the same screen gamma value */
240
- else if ((gamma_str = getenv("SCREEN_GAMMA")) != NULL)
241
- {
242
- screen_gamma = atof(gamma_str);
243
- }
244
- /* If we don't have another value */
245
- else
246
- {
247
- screen_gamma = 2.2; /* A good guess for a PC monitors in a dimly
248
- lit room */
249
- screen_gamma = 1.7 or 1.0; /* A good guess for Mac systems */
250
- }
251
-
252
- /* Tell libpng to handle the gamma conversion for you. The final call
253
- * is a good guess for PC generated images, but it should be configurable
254
- * by the user at run time by the user. It is strongly suggested that
255
- * your application support gamma correction.
256
- */
257
-
258
- int intent;
259
-
260
- if (png_get_sRGB(png_ptr, info_ptr, &intent))
261
- png_set_gamma(png_ptr, screen_gamma, 0.45455);
262
- else
263
- {
264
- double image_gamma;
265
- if (png_get_gAMA(png_ptr, info_ptr, &image_gamma))
266
- png_set_gamma(png_ptr, screen_gamma, image_gamma);
267
- else
268
- png_set_gamma(png_ptr, screen_gamma, 0.45455);
269
- }
270
-
271
- /* Dither RGB files down to 8 bit palette or reduce palettes
272
- * to the number of colors available on your screen.
273
- */
274
- if (color_type & PNG_COLOR_MASK_COLOR)
275
- {
276
- int num_palette;
277
- png_colorp palette;
278
-
279
- /* This reduces the image to the application supplied palette */
280
- if (/* we have our own palette */)
281
- {
282
- /* An array of colors to which the image should be dithered */
283
- png_color std_color_cube[MAX_SCREEN_COLORS];
284
-
285
- png_set_dither(png_ptr, std_color_cube, MAX_SCREEN_COLORS,
286
- MAX_SCREEN_COLORS, png_uint_16p_NULL, 0);
287
- }
288
- /* This reduces the image to the palette supplied in the file */
289
- else if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette))
290
- {
291
- png_uint_16p histogram = NULL;
292
-
293
- png_get_hIST(png_ptr, info_ptr, &histogram);
294
-
295
- png_set_dither(png_ptr, palette, num_palette,
296
- max_screen_colors, histogram, 0);
297
- }
298
- }
299
-
300
- /* invert monochrome files to have 0 as white and 1 as black */
301
- png_set_invert_mono(png_ptr);
302
-
303
- /* If you want to shift the pixel values from the range [0,255] or
304
- * [0,65535] to the original [0,7] or [0,31], or whatever range the
305
- * colors were originally in:
306
- */
307
- if (png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT))
308
- {
309
- png_color_8p sig_bit;
310
-
311
- png_get_sBIT(png_ptr, info_ptr, &sig_bit);
312
- png_set_shift(png_ptr, sig_bit);
313
- }
314
-
315
- /* flip the RGB pixels to BGR (or RGBA to BGRA) */
316
- if (color_type & PNG_COLOR_MASK_COLOR)
317
- png_set_bgr(png_ptr);
318
-
319
- /* swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR) */
320
- png_set_swap_alpha(png_ptr);
321
-
322
- /* swap bytes of 16 bit files to least significant byte first */
323
- png_set_swap(png_ptr);
324
-
325
- /* Add filler (or alpha) byte (before/after each RGB triplet) */
326
- png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);
327
-
328
- /* Turn on interlace handling. REQUIRED if you are not using
329
- * png_read_image(). To see how to handle interlacing passes,
330
- * see the png_read_row() method below:
331
- */
332
- number_passes = png_set_interlace_handling(png_ptr);
333
-
334
- /* Optional call to gamma correct and add the background to the palette
335
- * and update info structure. REQUIRED if you are expecting libpng to
336
- * update the palette for you (ie you selected such a transform above).
337
- */
338
- png_read_update_info(png_ptr, info_ptr);
339
-
340
- /* Allocate the memory to hold the image using the fields of info_ptr. */
341
-
342
- /* The easiest way to read the image: */
343
- png_bytep row_pointers[height];
344
-
345
- for (row = 0; row < height; row++)
346
- {
347
- row_pointers[row] = png_malloc(png_ptr, png_get_rowbytes(png_ptr,
348
- info_ptr));
349
- }
350
-
351
- /* Now it's time to read the image. One of these methods is REQUIRED */
352
- #ifdef entire /* Read the entire image in one go */
353
- png_read_image(png_ptr, row_pointers);
354
-
355
- #else no_entire /* Read the image one or more scanlines at a time */
356
- /* The other way to read images - deal with interlacing: */
357
-
358
- for (pass = 0; pass < number_passes; pass++)
359
- {
360
- #ifdef single /* Read the image a single row at a time */
361
- for (y = 0; y < height; y++)
362
- {
363
- png_read_rows(png_ptr, &row_pointers[y], png_bytepp_NULL, 1);
364
- }
365
-
366
- #else no_single /* Read the image several rows at a time */
367
- for (y = 0; y < height; y += number_of_rows)
368
- {
369
- #ifdef sparkle /* Read the image using the "sparkle" effect. */
370
- png_read_rows(png_ptr, &row_pointers[y], png_bytepp_NULL,
371
- number_of_rows);
372
- #else no_sparkle /* Read the image using the "rectangle" effect */
373
- png_read_rows(png_ptr, png_bytepp_NULL, &row_pointers[y],
374
- number_of_rows);
375
- #endif no_sparkle /* use only one of these two methods */
376
- }
377
-
378
- /* if you want to display the image after every pass, do
379
- so here */
380
- #endif no_single /* use only one of these two methods */
381
- }
382
- #endif no_entire /* use only one of these two methods */
383
-
384
- /* read rest of file, and get additional chunks in info_ptr - REQUIRED */
385
- png_read_end(png_ptr, info_ptr);
386
- #endif hilevel
387
-
388
- /* At this point you have read the entire image */
389
-
390
- /* clean up after the read, and free any memory allocated - REQUIRED */
391
- png_destroy_read_struct(&png_ptr, &info_ptr, png_infopp_NULL);
392
-
393
- /* close the file */
394
- fclose(fp);
395
-
396
- /* that's it */
397
- return (OK);
398
- }
399
-
400
- /* progressively read a file */
401
-
402
- int
403
- initialize_png_reader(png_structp *png_ptr, png_infop *info_ptr)
404
- {
405
- /* Create and initialize the png_struct with the desired error handler
406
- * functions. If you want to use the default stderr and longjump method,
407
- * you can supply NULL for the last three parameters. We also check that
408
- * the library version is compatible in case we are using dynamically
409
- * linked libraries.
410
- */
411
- *png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING,
412
- png_voidp user_error_ptr, user_error_fn, user_warning_fn);
413
-
414
- if (*png_ptr == NULL)
415
- {
416
- *info_ptr = NULL;
417
- return (ERROR);
418
- }
419
-
420
- *info_ptr = png_create_info_struct(png_ptr);
421
-
422
- if (*info_ptr == NULL)
423
- {
424
- png_destroy_read_struct(png_ptr, info_ptr, png_infopp_NULL);
425
- return (ERROR);
426
- }
427
-
428
- if (setjmp(png_jmpbuf((*png_ptr))))
429
- {
430
- png_destroy_read_struct(png_ptr, info_ptr, png_infopp_NULL);
431
- return (ERROR);
432
- }
433
-
434
- /* This one's new. You will need to provide all three
435
- * function callbacks, even if you aren't using them all.
436
- * If you aren't using all functions, you can specify NULL
437
- * parameters. Even when all three functions are NULL,
438
- * you need to call png_set_progressive_read_fn().
439
- * These functions shouldn't be dependent on global or
440
- * static variables if you are decoding several images
441
- * simultaneously. You should store stream specific data
442
- * in a separate struct, given as the second parameter,
443
- * and retrieve the pointer from inside the callbacks using
444
- * the function png_get_progressive_ptr(png_ptr).
445
- */
446
- png_set_progressive_read_fn(*png_ptr, (void *)stream_data,
447
- info_callback, row_callback, end_callback);
448
-
449
- return (OK);
450
- }
451
-
452
- int
453
- process_data(png_structp *png_ptr, png_infop *info_ptr,
454
- png_bytep buffer, png_uint_32 length)
455
- {
456
- if (setjmp(png_jmpbuf((*png_ptr))))
457
- {
458
- /* Free the png_ptr and info_ptr memory on error */
459
- png_destroy_read_struct(png_ptr, info_ptr, png_infopp_NULL);
460
- return (ERROR);
461
- }
462
-
463
- /* This one's new also. Simply give it chunks of data as
464
- * they arrive from the data stream (in order, of course).
465
- * On Segmented machines, don't give it any more than 64K.
466
- * The library seems to run fine with sizes of 4K, although
467
- * you can give it much less if necessary (I assume you can
468
- * give it chunks of 1 byte, but I haven't tried with less
469
- * than 256 bytes yet). When this function returns, you may
470
- * want to display any rows that were generated in the row
471
- * callback, if you aren't already displaying them there.
472
- */
473
- png_process_data(*png_ptr, *info_ptr, buffer, length);
474
- return (OK);
475
- }
476
-
477
- info_callback(png_structp png_ptr, png_infop info)
478
- {
479
- /* do any setup here, including setting any of the transformations
480
- * mentioned in the Reading PNG files section. For now, you _must_
481
- * call either png_start_read_image() or png_read_update_info()
482
- * after all the transformations are set (even if you don't set
483
- * any). You may start getting rows before png_process_data()
484
- * returns, so this is your last chance to prepare for that.
485
- */
486
- }
487
-
488
- row_callback(png_structp png_ptr, png_bytep new_row,
489
- png_uint_32 row_num, int pass)
490
- {
491
- /*
492
- * This function is called for every row in the image. If the
493
- * image is interlaced, and you turned on the interlace handler,
494
- * this function will be called for every row in every pass.
495
- *
496
- * In this function you will receive a pointer to new row data from
497
- * libpng called new_row that is to replace a corresponding row (of
498
- * the same data format) in a buffer allocated by your application.
499
- *
500
- * The new row data pointer new_row may be NULL, indicating there is
501
- * no new data to be replaced (in cases of interlace loading).
502
- *
503
- * If new_row is not NULL then you need to call
504
- * png_progressive_combine_row() to replace the corresponding row as
505
- * shown below:
506
- */
507
- /* Check if row_num is in bounds. */
508
- if((row_num >= 0) && (row_num < height))
509
- {
510
- /* Get pointer to corresponding row in our
511
- * PNG read buffer.
512
- */
513
- png_bytep old_row = ((png_bytep *)our_data)[row_num];
514
-
515
- /* If both rows are allocated then copy the new row
516
- * data to the corresponding row data.
517
- */
518
- if((old_row != NULL) && (new_row != NULL))
519
- png_progressive_combine_row(png_ptr, old_row, new_row);
520
- }
521
- /*
522
- * The rows and passes are called in order, so you don't really
523
- * need the row_num and pass, but I'm supplying them because it
524
- * may make your life easier.
525
- *
526
- * For the non-NULL rows of interlaced images, you must call
527
- * png_progressive_combine_row() passing in the new row and the
528
- * old row, as demonstrated above. You can call this function for
529
- * NULL rows (it will just return) and for non-interlaced images
530
- * (it just does the png_memcpy for you) if it will make the code
531
- * easier. Thus, you can just do this for all cases:
532
- */
533
-
534
- png_progressive_combine_row(png_ptr, old_row, new_row);
535
-
536
- /* where old_row is what was displayed for previous rows. Note
537
- * that the first pass (pass == 0 really) will completely cover
538
- * the old row, so the rows do not have to be initialized. After
539
- * the first pass (and only for interlaced images), you will have
540
- * to pass the current row as new_row, and the function will combine
541
- * the old row and the new row.
542
- */
543
- }
544
-
545
- end_callback(png_structp png_ptr, png_infop info)
546
- {
547
- /* this function is called when the whole image has been read,
548
- * including any chunks after the image (up to and including
549
- * the IEND). You will usually have the same info chunk as you
550
- * had in the header, although some data may have been added
551
- * to the comments and time fields.
552
- *
553
- * Most people won't do much here, perhaps setting a flag that
554
- * marks the image as finished.
555
- */
556
- }
557
-
558
- /* write a png file */
559
- void write_png(char *file_name /* , ... other image information ... */)
560
- {
561
- FILE *fp;
562
- png_structp png_ptr;
563
- png_infop info_ptr;
564
- png_colorp palette;
565
-
566
- /* open the file */
567
- fp = fopen(file_name, "wb");
568
- if (fp == NULL)
569
- return (ERROR);
570
-
571
- /* Create and initialize the png_struct with the desired error handler
572
- * functions. If you want to use the default stderr and longjump method,
573
- * you can supply NULL for the last three parameters. We also check that
574
- * the library version is compatible with the one used at compile time,
575
- * in case we are using dynamically linked libraries. REQUIRED.
576
- */
577
- png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING,
578
- png_voidp user_error_ptr, user_error_fn, user_warning_fn);
579
-
580
- if (png_ptr == NULL)
581
- {
582
- fclose(fp);
583
- return (ERROR);
584
- }
585
-
586
- /* Allocate/initialize the image information data. REQUIRED */
587
- info_ptr = png_create_info_struct(png_ptr);
588
- if (info_ptr == NULL)
589
- {
590
- fclose(fp);
591
- png_destroy_write_struct(&png_ptr, png_infopp_NULL);
592
- return (ERROR);
593
- }
594
-
595
- /* Set error handling. REQUIRED if you aren't supplying your own
596
- * error handling functions in the png_create_write_struct() call.
597
- */
598
- if (setjmp(png_jmpbuf(png_ptr)))
599
- {
600
- /* If we get here, we had a problem reading the file */
601
- fclose(fp);
602
- png_destroy_write_struct(&png_ptr, &info_ptr);
603
- return (ERROR);
604
- }
605
-
606
- /* One of the following I/O initialization functions is REQUIRED */
607
- #ifdef streams /* I/O initialization method 1 */
608
- /* set up the output control if you are using standard C streams */
609
- png_init_io(png_ptr, fp);
610
- #else no_streams /* I/O initialization method 2 */
611
- /* If you are using replacement read functions, instead of calling
612
- * png_init_io() here you would call */
613
- png_set_write_fn(png_ptr, (void *)user_io_ptr, user_write_fn,
614
- user_IO_flush_function);
615
- /* where user_io_ptr is a structure you want available to the callbacks */
616
- #endif no_streams /* only use one initialization method */
617
-
618
- #ifdef hilevel
619
- /* This is the easy way. Use it if you already have all the
620
- * image info living info in the structure. You could "|" many
621
- * PNG_TRANSFORM flags into the png_transforms integer here.
622
- */
623
- png_write_png(png_ptr, info_ptr, png_transforms, png_voidp_NULL);
624
- #else
625
- /* This is the hard way */
626
-
627
- /* Set the image information here. Width and height are up to 2^31,
628
- * bit_depth is one of 1, 2, 4, 8, or 16, but valid values also depend on
629
- * the color_type selected. color_type is one of PNG_COLOR_TYPE_GRAY,
630
- * PNG_COLOR_TYPE_GRAY_ALPHA, PNG_COLOR_TYPE_PALETTE, PNG_COLOR_TYPE_RGB,
631
- * or PNG_COLOR_TYPE_RGB_ALPHA. interlace is either PNG_INTERLACE_NONE or
632
- * PNG_INTERLACE_ADAM7, and the compression_type and filter_type MUST
633
- * currently be PNG_COMPRESSION_TYPE_BASE and PNG_FILTER_TYPE_BASE. REQUIRED
634
- */
635
- png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, PNG_COLOR_TYPE_???,
636
- PNG_INTERLACE_????, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
637
-
638
- /* set the palette if there is one. REQUIRED for indexed-color images */
639
- palette = (png_colorp)png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH
640
- * png_sizeof (png_color));
641
- /* ... set palette colors ... */
642
- png_set_PLTE(png_ptr, info_ptr, palette, PNG_MAX_PALETTE_LENGTH);
643
- /* You must not free palette here, because png_set_PLTE only makes a link to
644
- the palette that you malloced. Wait until you are about to destroy
645
- the png structure. */
646
-
647
- /* optional significant bit chunk */
648
- /* if we are dealing with a grayscale image then */
649
- sig_bit.gray = true_bit_depth;
650
- /* otherwise, if we are dealing with a color image then */
651
- sig_bit.red = true_red_bit_depth;
652
- sig_bit.green = true_green_bit_depth;
653
- sig_bit.blue = true_blue_bit_depth;
654
- /* if the image has an alpha channel then */
655
- sig_bit.alpha = true_alpha_bit_depth;
656
- png_set_sBIT(png_ptr, info_ptr, sig_bit);
657
-
658
-
659
- /* Optional gamma chunk is strongly suggested if you have any guess
660
- * as to the correct gamma of the image.
661
- */
662
- png_set_gAMA(png_ptr, info_ptr, gamma);
663
-
664
- /* Optionally write comments into the image */
665
- text_ptr[0].key = "Title";
666
- text_ptr[0].text = "Mona Lisa";
667
- text_ptr[0].compression = PNG_TEXT_COMPRESSION_NONE;
668
- text_ptr[1].key = "Author";
669
- text_ptr[1].text = "Leonardo DaVinci";
670
- text_ptr[1].compression = PNG_TEXT_COMPRESSION_NONE;
671
- text_ptr[2].key = "Description";
672
- text_ptr[2].text = "<long text>";
673
- text_ptr[2].compression = PNG_TEXT_COMPRESSION_zTXt;
674
- #ifdef PNG_iTXt_SUPPORTED
675
- text_ptr[0].lang = NULL;
676
- text_ptr[1].lang = NULL;
677
- text_ptr[2].lang = NULL;
678
- #endif
679
- png_set_text(png_ptr, info_ptr, text_ptr, 3);
680
-
681
- /* other optional chunks like cHRM, bKGD, tRNS, tIME, oFFs, pHYs, */
682
- /* note that if sRGB is present the gAMA and cHRM chunks must be ignored
683
- * on read and must be written in accordance with the sRGB profile */
684
-
685
- /* Write the file header information. REQUIRED */
686
- png_write_info(png_ptr, info_ptr);
687
-
688
- /* If you want, you can write the info in two steps, in case you need to
689
- * write your private chunk ahead of PLTE:
690
- *
691
- * png_write_info_before_PLTE(write_ptr, write_info_ptr);
692
- * write_my_chunk();
693
- * png_write_info(png_ptr, info_ptr);
694
- *
695
- * However, given the level of known- and unknown-chunk support in 1.1.0
696
- * and up, this should no longer be necessary.
697
- */
698
-
699
- /* Once we write out the header, the compression type on the text
700
- * chunks gets changed to PNG_TEXT_COMPRESSION_NONE_WR or
701
- * PNG_TEXT_COMPRESSION_zTXt_WR, so it doesn't get written out again
702
- * at the end.
703
- */
704
-
705
- /* set up the transformations you want. Note that these are
706
- * all optional. Only call them if you want them.
707
- */
708
-
709
- /* invert monochrome pixels */
710
- png_set_invert_mono(png_ptr);
711
-
712
- /* Shift the pixels up to a legal bit depth and fill in
713
- * as appropriate to correctly scale the image.
714
- */
715
- png_set_shift(png_ptr, &sig_bit);
716
-
717
- /* pack pixels into bytes */
718
- png_set_packing(png_ptr);
719
-
720
- /* swap location of alpha bytes from ARGB to RGBA */
721
- png_set_swap_alpha(png_ptr);
722
-
723
- /* Get rid of filler (OR ALPHA) bytes, pack XRGB/RGBX/ARGB/RGBA into
724
- * RGB (4 channels -> 3 channels). The second parameter is not used.
725
- */
726
- png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
727
-
728
- /* flip BGR pixels to RGB */
729
- png_set_bgr(png_ptr);
730
-
731
- /* swap bytes of 16-bit files to most significant byte first */
732
- png_set_swap(png_ptr);
733
-
734
- /* swap bits of 1, 2, 4 bit packed pixel formats */
735
- png_set_packswap(png_ptr);
736
-
737
- /* turn on interlace handling if you are not using png_write_image() */
738
- if (interlacing)
739
- number_passes = png_set_interlace_handling(png_ptr);
740
- else
741
- number_passes = 1;
742
-
743
- /* The easiest way to write the image (you may have a different memory
744
- * layout, however, so choose what fits your needs best). You need to
745
- * use the first method if you aren't handling interlacing yourself.
746
- */
747
- png_uint_32 k, height, width;
748
- png_byte image[height][width*bytes_per_pixel];
749
- png_bytep row_pointers[height];
750
-
751
- if (height > PNG_UINT_32_MAX/png_sizeof(png_bytep))
752
- png_error (png_ptr, "Image is too tall to process in memory");
753
-
754
- for (k = 0; k < height; k++)
755
- row_pointers[k] = image + k*width*bytes_per_pixel;
756
-
757
- /* One of the following output methods is REQUIRED */
758
- #ifdef entire /* write out the entire image data in one call */
759
- png_write_image(png_ptr, row_pointers);
760
-
761
- /* the other way to write the image - deal with interlacing */
762
-
763
- #else no_entire /* write out the image data by one or more scanlines */
764
- /* The number of passes is either 1 for non-interlaced images,
765
- * or 7 for interlaced images.
766
- */
767
- for (pass = 0; pass < number_passes; pass++)
768
- {
769
- /* Write a few rows at a time. */
770
- png_write_rows(png_ptr, &row_pointers[first_row], number_of_rows);
771
-
772
- /* If you are only writing one row at a time, this works */
773
- for (y = 0; y < height; y++)
774
- {
775
- png_write_rows(png_ptr, &row_pointers[y], 1);
776
- }
777
- }
778
- #endif no_entire /* use only one output method */
779
-
780
- /* You can write optional chunks like tEXt, zTXt, and tIME at the end
781
- * as well. Shouldn't be necessary in 1.1.0 and up as all the public
782
- * chunks are supported and you can use png_set_unknown_chunks() to
783
- * register unknown chunks into the info structure to be written out.
784
- */
785
-
786
- /* It is REQUIRED to call this to finish writing the rest of the file */
787
- png_write_end(png_ptr, info_ptr);
788
- #endif hilevel
789
-
790
- /* If you png_malloced a palette, free it here (don't free info_ptr->palette,
791
- as recommended in versions 1.0.5m and earlier of this example; if
792
- libpng mallocs info_ptr->palette, libpng will free it). If you
793
- allocated it with malloc() instead of png_malloc(), use free() instead
794
- of png_free(). */
795
- png_free(png_ptr, palette);
796
- palette=NULL;
797
-
798
- /* Similarly, if you png_malloced any data that you passed in with
799
- png_set_something(), such as a hist or trans array, free it here,
800
- when you can be sure that libpng is through with it. */
801
- png_free(png_ptr, trans);
802
- trans=NULL;
803
-
804
- /* clean up after the write, and free any memory allocated */
805
- png_destroy_write_struct(&png_ptr, &info_ptr);
806
-
807
- /* close the file */
808
- fclose(fp);
809
-
810
- /* that's it */
811
- return (OK);
812
- }
813
-
814
- #endif /* if 0 */