pango 0.90.5-x86-mingw32 → 0.90.6-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1348) hide show
  1. data/ChangeLog +16 -0
  2. data/Rakefile +8 -77
  3. data/ext/pango/Makefile +172 -0
  4. data/ext/pango/extconf.rb +24 -25
  5. data/ext/pango/rbpangolayoutiter.c +3 -1
  6. data/ext/pango/rbpangoversion.h +24 -0
  7. data/lib/1.8/pango.so +0 -0
  8. data/lib/1.9/pango.so +0 -0
  9. data/vendor/local/lib/pkgconfig/pango.pc +1 -1
  10. data/vendor/local/lib/pkgconfig/pangocairo.pc +1 -1
  11. data/vendor/local/lib/pkgconfig/pangoft2.pc +1 -1
  12. data/vendor/local/lib/pkgconfig/pangowin32.pc +1 -1
  13. metadata +153 -1484
  14. data/vendor/local/bin/envsubst.exe +0 -0
  15. data/vendor/local/bin/fc-cache.exe +0 -0
  16. data/vendor/local/bin/fc-cat.exe +0 -0
  17. data/vendor/local/bin/fc-list.exe +0 -0
  18. data/vendor/local/bin/freetype-config +0 -160
  19. data/vendor/local/bin/freetype6.dll +0 -0
  20. data/vendor/local/bin/gettext.exe +0 -0
  21. data/vendor/local/bin/gettext.sh +0 -123
  22. data/vendor/local/bin/glib-genmarshal.exe +0 -0
  23. data/vendor/local/bin/glib-gettextize +0 -188
  24. data/vendor/local/bin/glib-mkenums +0 -537
  25. data/vendor/local/bin/gobject-query.exe +0 -0
  26. data/vendor/local/bin/gspawn-win32-helper-console.exe +0 -0
  27. data/vendor/local/bin/gspawn-win32-helper.exe +0 -0
  28. data/vendor/local/bin/intl.dll +0 -0
  29. data/vendor/local/bin/libasprintf-0.dll +0 -0
  30. data/vendor/local/bin/libcairo-2.dll +0 -0
  31. data/vendor/local/bin/libcairo-gobject-2.dll +0 -0
  32. data/vendor/local/bin/libcairo-script-interpreter-2.dll +0 -0
  33. data/vendor/local/bin/libexpat-1.dll +0 -0
  34. data/vendor/local/bin/libfontconfig-1.dll +0 -0
  35. data/vendor/local/bin/libgcc_s_dw2-1.dll +0 -0
  36. data/vendor/local/bin/libgio-2.0-0.dll +0 -0
  37. data/vendor/local/bin/libglib-2.0-0.dll +0 -0
  38. data/vendor/local/bin/libgmodule-2.0-0.dll +0 -0
  39. data/vendor/local/bin/libgobject-2.0-0.dll +0 -0
  40. data/vendor/local/bin/libgthread-2.0-0.dll +0 -0
  41. data/vendor/local/bin/libpng14-14.dll +0 -0
  42. data/vendor/local/bin/ngettext.exe +0 -0
  43. data/vendor/local/bin/xmlwf.exe +0 -0
  44. data/vendor/local/bin/zlib1.dll +0 -0
  45. data/vendor/local/etc/fonts/fonts.conf +0 -151
  46. data/vendor/local/etc/fonts/fonts.dtd +0 -224
  47. data/vendor/local/include/autosprintf.h +0 -66
  48. data/vendor/local/include/cairo/cairo-deprecated.h +0 -123
  49. data/vendor/local/include/cairo/cairo-features.h +0 -27
  50. data/vendor/local/include/cairo/cairo-ft.h +0 -82
  51. data/vendor/local/include/cairo/cairo-gobject.h +0 -186
  52. data/vendor/local/include/cairo/cairo-pdf.h +0 -94
  53. data/vendor/local/include/cairo/cairo-ps.h +0 -114
  54. data/vendor/local/include/cairo/cairo-script-interpreter.h +0 -117
  55. data/vendor/local/include/cairo/cairo-svg.h +0 -82
  56. data/vendor/local/include/cairo/cairo-version.h +0 -8
  57. data/vendor/local/include/cairo/cairo-win32.h +0 -112
  58. data/vendor/local/include/cairo/cairo.h +0 -2684
  59. data/vendor/local/include/expat.h +0 -1014
  60. data/vendor/local/include/expat_external.h +0 -115
  61. data/vendor/local/include/fontconfig/fcfreetype.h +0 -59
  62. data/vendor/local/include/fontconfig/fcprivate.h +0 -123
  63. data/vendor/local/include/fontconfig/fontconfig.h +0 -963
  64. data/vendor/local/include/freetype2/freetype/config/ftconfig.h +0 -477
  65. data/vendor/local/include/freetype2/freetype/config/ftheader.h +0 -780
  66. data/vendor/local/include/freetype2/freetype/config/ftmodule.h +0 -20
  67. data/vendor/local/include/freetype2/freetype/config/ftoption.h +0 -733
  68. data/vendor/local/include/freetype2/freetype/config/ftstdlib.h +0 -173
  69. data/vendor/local/include/freetype2/freetype/freetype.h +0 -3919
  70. data/vendor/local/include/freetype2/freetype/ftadvanc.h +0 -179
  71. data/vendor/local/include/freetype2/freetype/ftbbox.h +0 -94
  72. data/vendor/local/include/freetype2/freetype/ftbdf.h +0 -209
  73. data/vendor/local/include/freetype2/freetype/ftbitmap.h +0 -227
  74. data/vendor/local/include/freetype2/freetype/ftcache.h +0 -1125
  75. data/vendor/local/include/freetype2/freetype/ftchapters.h +0 -103
  76. data/vendor/local/include/freetype2/freetype/ftcid.h +0 -166
  77. data/vendor/local/include/freetype2/freetype/fterrdef.h +0 -244
  78. data/vendor/local/include/freetype2/freetype/fterrors.h +0 -206
  79. data/vendor/local/include/freetype2/freetype/ftgasp.h +0 -120
  80. data/vendor/local/include/freetype2/freetype/ftglyph.h +0 -613
  81. data/vendor/local/include/freetype2/freetype/ftgxval.h +0 -358
  82. data/vendor/local/include/freetype2/freetype/ftgzip.h +0 -102
  83. data/vendor/local/include/freetype2/freetype/ftimage.h +0 -1301
  84. data/vendor/local/include/freetype2/freetype/ftincrem.h +0 -353
  85. data/vendor/local/include/freetype2/freetype/ftlcdfil.h +0 -213
  86. data/vendor/local/include/freetype2/freetype/ftlist.h +0 -277
  87. data/vendor/local/include/freetype2/freetype/ftlzw.h +0 -99
  88. data/vendor/local/include/freetype2/freetype/ftmac.h +0 -274
  89. data/vendor/local/include/freetype2/freetype/ftmm.h +0 -378
  90. data/vendor/local/include/freetype2/freetype/ftmodapi.h +0 -483
  91. data/vendor/local/include/freetype2/freetype/ftmoderr.h +0 -155
  92. data/vendor/local/include/freetype2/freetype/ftotval.h +0 -203
  93. data/vendor/local/include/freetype2/freetype/ftoutln.h +0 -537
  94. data/vendor/local/include/freetype2/freetype/ftpfr.h +0 -172
  95. data/vendor/local/include/freetype2/freetype/ftrender.h +0 -230
  96. data/vendor/local/include/freetype2/freetype/ftsizes.h +0 -159
  97. data/vendor/local/include/freetype2/freetype/ftsnames.h +0 -200
  98. data/vendor/local/include/freetype2/freetype/ftstroke.h +0 -716
  99. data/vendor/local/include/freetype2/freetype/ftsynth.h +0 -80
  100. data/vendor/local/include/freetype2/freetype/ftsystem.h +0 -347
  101. data/vendor/local/include/freetype2/freetype/fttrigon.h +0 -350
  102. data/vendor/local/include/freetype2/freetype/fttypes.h +0 -588
  103. data/vendor/local/include/freetype2/freetype/ftwinfnt.h +0 -274
  104. data/vendor/local/include/freetype2/freetype/ftxf86.h +0 -83
  105. data/vendor/local/include/freetype2/freetype/t1tables.h +0 -504
  106. data/vendor/local/include/freetype2/freetype/ttnameid.h +0 -1247
  107. data/vendor/local/include/freetype2/freetype/tttables.h +0 -759
  108. data/vendor/local/include/freetype2/freetype/tttags.h +0 -107
  109. data/vendor/local/include/freetype2/freetype/ttunpat.h +0 -59
  110. data/vendor/local/include/ft2build.h +0 -61
  111. data/vendor/local/include/glib-2.0/gio/gappinfo.h +0 -236
  112. data/vendor/local/include/glib-2.0/gio/gasyncinitable.h +0 -119
  113. data/vendor/local/include/glib-2.0/gio/gasyncresult.h +0 -73
  114. data/vendor/local/include/glib-2.0/gio/gbufferedinputstream.h +0 -123
  115. data/vendor/local/include/glib-2.0/gio/gbufferedoutputstream.h +0 -81
  116. data/vendor/local/include/glib-2.0/gio/gcancellable.h +0 -103
  117. data/vendor/local/include/glib-2.0/gio/gcharsetconverter.h +0 -60
  118. data/vendor/local/include/glib-2.0/gio/gcontenttype.h +0 -57
  119. data/vendor/local/include/glib-2.0/gio/gconverter.h +0 -95
  120. data/vendor/local/include/glib-2.0/gio/gconverterinputstream.h +0 -79
  121. data/vendor/local/include/glib-2.0/gio/gconverteroutputstream.h +0 -79
  122. data/vendor/local/include/glib-2.0/gio/gcredentials.h +0 -76
  123. data/vendor/local/include/glib-2.0/gio/gdatainputstream.h +0 -150
  124. data/vendor/local/include/glib-2.0/gio/gdataoutputstream.h +0 -115
  125. data/vendor/local/include/glib-2.0/gio/gdbusaddress.h +0 -58
  126. data/vendor/local/include/glib-2.0/gio/gdbusauthobserver.h +0 -46
  127. data/vendor/local/include/glib-2.0/gio/gdbusconnection.h +0 -562
  128. data/vendor/local/include/glib-2.0/gio/gdbuserror.h +0 -100
  129. data/vendor/local/include/glib-2.0/gio/gdbusintrospection.h +0 -286
  130. data/vendor/local/include/glib-2.0/gio/gdbusmessage.h +0 -149
  131. data/vendor/local/include/glib-2.0/gio/gdbusmethodinvocation.h +0 -73
  132. data/vendor/local/include/glib-2.0/gio/gdbusnameowning.h +0 -112
  133. data/vendor/local/include/glib-2.0/gio/gdbusnamewatching.h +0 -94
  134. data/vendor/local/include/glib-2.0/gio/gdbusproxy.h +0 -167
  135. data/vendor/local/include/glib-2.0/gio/gdbusserver.h +0 -54
  136. data/vendor/local/include/glib-2.0/gio/gdbusutils.h +0 -44
  137. data/vendor/local/include/glib-2.0/gio/gdrive.h +0 -225
  138. data/vendor/local/include/glib-2.0/gio/gemblem.h +0 -58
  139. data/vendor/local/include/glib-2.0/gio/gemblemedicon.h +0 -62
  140. data/vendor/local/include/glib-2.0/gio/gfile.h +0 -1017
  141. data/vendor/local/include/glib-2.0/gio/gfileattribute.h +0 -77
  142. data/vendor/local/include/glib-2.0/gio/gfileenumerator.h +0 -132
  143. data/vendor/local/include/glib-2.0/gio/gfileicon.h +0 -56
  144. data/vendor/local/include/glib-2.0/gio/gfileinfo.h +0 -952
  145. data/vendor/local/include/glib-2.0/gio/gfileinputstream.h +0 -112
  146. data/vendor/local/include/glib-2.0/gio/gfileiostream.h +0 -118
  147. data/vendor/local/include/glib-2.0/gio/gfilemonitor.h +0 -95
  148. data/vendor/local/include/glib-2.0/gio/gfilenamecompleter.h +0 -76
  149. data/vendor/local/include/glib-2.0/gio/gfileoutputstream.h +0 -119
  150. data/vendor/local/include/glib-2.0/gio/gfilterinputstream.h +0 -76
  151. data/vendor/local/include/glib-2.0/gio/gfilteroutputstream.h +0 -76
  152. data/vendor/local/include/glib-2.0/gio/gicon.h +0 -91
  153. data/vendor/local/include/glib-2.0/gio/ginetaddress.h +0 -103
  154. data/vendor/local/include/glib-2.0/gio/ginetsocketaddress.h +0 -69
  155. data/vendor/local/include/glib-2.0/gio/ginitable.h +0 -96
  156. data/vendor/local/include/glib-2.0/gio/ginputstream.h +0 -172
  157. data/vendor/local/include/glib-2.0/gio/gio.h +0 -122
  158. data/vendor/local/include/glib-2.0/gio/gioenums.h +0 -1221
  159. data/vendor/local/include/glib-2.0/gio/gioenumtypes.h +0 -121
  160. data/vendor/local/include/glib-2.0/gio/gioerror.h +0 -52
  161. data/vendor/local/include/glib-2.0/gio/giomodule.h +0 -132
  162. data/vendor/local/include/glib-2.0/gio/gioscheduler.h +0 -52
  163. data/vendor/local/include/glib-2.0/gio/giostream.h +0 -112
  164. data/vendor/local/include/glib-2.0/gio/giotypes.h +0 -375
  165. data/vendor/local/include/glib-2.0/gio/gloadableicon.h +0 -97
  166. data/vendor/local/include/glib-2.0/gio/gmemoryinputstream.h +0 -82
  167. data/vendor/local/include/glib-2.0/gio/gmemoryoutputstream.h +0 -98
  168. data/vendor/local/include/glib-2.0/gio/gmount.h +0 -242
  169. data/vendor/local/include/glib-2.0/gio/gmountoperation.h +0 -123
  170. data/vendor/local/include/glib-2.0/gio/gnativevolumemonitor.h +0 -62
  171. data/vendor/local/include/glib-2.0/gio/gnetworkaddress.h +0 -73
  172. data/vendor/local/include/glib-2.0/gio/gnetworkservice.h +0 -71
  173. data/vendor/local/include/glib-2.0/gio/goutputstream.h +0 -207
  174. data/vendor/local/include/glib-2.0/gio/gpermission.h +0 -118
  175. data/vendor/local/include/glib-2.0/gio/gproxy.h +0 -123
  176. data/vendor/local/include/glib-2.0/gio/gproxyaddress.h +0 -76
  177. data/vendor/local/include/glib-2.0/gio/gproxyaddressenumerator.h +0 -75
  178. data/vendor/local/include/glib-2.0/gio/gproxyresolver.h +0 -96
  179. data/vendor/local/include/glib-2.0/gio/gresolver.h +0 -167
  180. data/vendor/local/include/glib-2.0/gio/gseekable.h +0 -99
  181. data/vendor/local/include/glib-2.0/gio/gsettings.h +0 -258
  182. data/vendor/local/include/glib-2.0/gio/gsettingsbackend.h +0 -138
  183. data/vendor/local/include/glib-2.0/gio/gsimpleasyncresult.h +0 -125
  184. data/vendor/local/include/glib-2.0/gio/gsimplepermission.h +0 -45
  185. data/vendor/local/include/glib-2.0/gio/gsocket.h +0 -194
  186. data/vendor/local/include/glib-2.0/gio/gsocketaddress.h +0 -79
  187. data/vendor/local/include/glib-2.0/gio/gsocketaddressenumerator.h +0 -89
  188. data/vendor/local/include/glib-2.0/gio/gsocketclient.h +0 -152
  189. data/vendor/local/include/glib-2.0/gio/gsocketconnectable.h +0 -74
  190. data/vendor/local/include/glib-2.0/gio/gsocketconnection.h +0 -91
  191. data/vendor/local/include/glib-2.0/gio/gsocketcontrolmessage.h +0 -105
  192. data/vendor/local/include/glib-2.0/gio/gsocketlistener.h +0 -138
  193. data/vendor/local/include/glib-2.0/gio/gsocketservice.h +0 -88
  194. data/vendor/local/include/glib-2.0/gio/gsrvtarget.h +0 -52
  195. data/vendor/local/include/glib-2.0/gio/gtcpconnection.h +0 -68
  196. data/vendor/local/include/glib-2.0/gio/gthemedicon.h +0 -63
  197. data/vendor/local/include/glib-2.0/gio/gthreadedsocketservice.h +0 -81
  198. data/vendor/local/include/glib-2.0/gio/gvfs.h +0 -125
  199. data/vendor/local/include/glib-2.0/gio/gvolume.h +0 -211
  200. data/vendor/local/include/glib-2.0/gio/gvolumemonitor.h +0 -150
  201. data/vendor/local/include/glib-2.0/gio/gzlibcompressor.h +0 -60
  202. data/vendor/local/include/glib-2.0/gio/gzlibdecompressor.h +0 -57
  203. data/vendor/local/include/glib-2.0/glib-object.h +0 -42
  204. data/vendor/local/include/glib-2.0/glib.h +0 -99
  205. data/vendor/local/include/glib-2.0/glib/galloca.h +0 -110
  206. data/vendor/local/include/glib-2.0/glib/garray.h +0 -179
  207. data/vendor/local/include/glib-2.0/glib/gasyncqueue.h +0 -120
  208. data/vendor/local/include/glib-2.0/glib/gatomic.h +0 -105
  209. data/vendor/local/include/glib-2.0/glib/gbacktrace.h +0 -68
  210. data/vendor/local/include/glib-2.0/glib/gbase64.h +0 -57
  211. data/vendor/local/include/glib-2.0/glib/gbitlock.h +0 -43
  212. data/vendor/local/include/glib-2.0/glib/gbookmarkfile.h +0 -215
  213. data/vendor/local/include/glib-2.0/glib/gcache.h +0 -69
  214. data/vendor/local/include/glib-2.0/glib/gchecksum.h +0 -86
  215. data/vendor/local/include/glib-2.0/glib/gcompletion.h +0 -81
  216. data/vendor/local/include/glib-2.0/glib/gconvert.h +0 -162
  217. data/vendor/local/include/glib-2.0/glib/gdataset.h +0 -122
  218. data/vendor/local/include/glib-2.0/glib/gdate.h +0 -263
  219. data/vendor/local/include/glib-2.0/glib/gdatetime.h +0 -217
  220. data/vendor/local/include/glib-2.0/glib/gdir.h +0 -52
  221. data/vendor/local/include/glib-2.0/glib/gerror.h +0 -98
  222. data/vendor/local/include/glib-2.0/glib/gfileutils.h +0 -128
  223. data/vendor/local/include/glib-2.0/glib/ghash.h +0 -166
  224. data/vendor/local/include/glib-2.0/glib/ghook.h +0 -181
  225. data/vendor/local/include/glib-2.0/glib/ghostutils.h +0 -40
  226. data/vendor/local/include/glib-2.0/glib/gi18n-lib.h +0 -38
  227. data/vendor/local/include/glib-2.0/glib/gi18n.h +0 -34
  228. data/vendor/local/include/glib-2.0/glib/giochannel.h +0 -366
  229. data/vendor/local/include/glib-2.0/glib/gkeyfile.h +0 -266
  230. data/vendor/local/include/glib-2.0/glib/glist.h +0 -120
  231. data/vendor/local/include/glib-2.0/glib/gmacros.h +0 -284
  232. data/vendor/local/include/glib-2.0/glib/gmain.h +0 -531
  233. data/vendor/local/include/glib-2.0/glib/gmappedfile.h +0 -49
  234. data/vendor/local/include/glib-2.0/glib/gmarkup.h +0 -163
  235. data/vendor/local/include/glib-2.0/glib/gmem.h +0 -309
  236. data/vendor/local/include/glib-2.0/glib/gmessages.h +0 -343
  237. data/vendor/local/include/glib-2.0/glib/gnode.h +0 -290
  238. data/vendor/local/include/glib-2.0/glib/goption.h +0 -370
  239. data/vendor/local/include/glib-2.0/glib/gpattern.h +0 -49
  240. data/vendor/local/include/glib-2.0/glib/gpoll.h +0 -117
  241. data/vendor/local/include/glib-2.0/glib/gprimes.h +0 -51
  242. data/vendor/local/include/glib-2.0/glib/gprintf.h +0 -52
  243. data/vendor/local/include/glib-2.0/glib/gqsort.h +0 -46
  244. data/vendor/local/include/glib-2.0/glib/gquark.h +0 -52
  245. data/vendor/local/include/glib-2.0/glib/gqueue.h +0 -127
  246. data/vendor/local/include/glib-2.0/glib/grand.h +0 -85
  247. data/vendor/local/include/glib-2.0/glib/gregex.h +0 -471
  248. data/vendor/local/include/glib-2.0/glib/grel.h +0 -101
  249. data/vendor/local/include/glib-2.0/glib/gscanner.h +0 -278
  250. data/vendor/local/include/glib-2.0/glib/gsequence.h +0 -128
  251. data/vendor/local/include/glib-2.0/glib/gshell.h +0 -55
  252. data/vendor/local/include/glib-2.0/glib/gslice.h +0 -86
  253. data/vendor/local/include/glib-2.0/glib/gslist.h +0 -114
  254. data/vendor/local/include/glib-2.0/glib/gspawn.h +0 -139
  255. data/vendor/local/include/glib-2.0/glib/gstdio.h +0 -147
  256. data/vendor/local/include/glib-2.0/glib/gstrfuncs.h +0 -269
  257. data/vendor/local/include/glib-2.0/glib/gstring.h +0 -178
  258. data/vendor/local/include/glib-2.0/glib/gtestutils.h +0 -297
  259. data/vendor/local/include/glib-2.0/glib/gthread.h +0 -407
  260. data/vendor/local/include/glib-2.0/glib/gthreadpool.h +0 -114
  261. data/vendor/local/include/glib-2.0/glib/gtimer.h +0 -65
  262. data/vendor/local/include/glib-2.0/glib/gtimezone.h +0 -44
  263. data/vendor/local/include/glib-2.0/glib/gtree.h +0 -91
  264. data/vendor/local/include/glib-2.0/glib/gtypes.h +0 -451
  265. data/vendor/local/include/glib-2.0/glib/gunicode.h +0 -421
  266. data/vendor/local/include/glib-2.0/glib/gurifuncs.h +0 -81
  267. data/vendor/local/include/glib-2.0/glib/gutils.h +0 -490
  268. data/vendor/local/include/glib-2.0/glib/gvariant.h +0 -248
  269. data/vendor/local/include/glib-2.0/glib/gvarianttype.h +0 -334
  270. data/vendor/local/include/glib-2.0/glib/gwin32.h +0 -114
  271. data/vendor/local/include/glib-2.0/gmodule.h +0 -101
  272. data/vendor/local/include/glib-2.0/gobject/gbinding.h +0 -136
  273. data/vendor/local/include/glib-2.0/gobject/gboxed.h +0 -248
  274. data/vendor/local/include/glib-2.0/gobject/gclosure.h +0 -251
  275. data/vendor/local/include/glib-2.0/gobject/genums.h +0 -261
  276. data/vendor/local/include/glib-2.0/gobject/gmarshal.h +0 -186
  277. data/vendor/local/include/glib-2.0/gobject/gobject.h +0 -567
  278. data/vendor/local/include/glib-2.0/gobject/gobjectnotifyqueue.c +0 -193
  279. data/vendor/local/include/glib-2.0/gobject/gparam.h +0 -415
  280. data/vendor/local/include/glib-2.0/gobject/gparamspecs.h +0 -1137
  281. data/vendor/local/include/glib-2.0/gobject/gsignal.h +0 -509
  282. data/vendor/local/include/glib-2.0/gobject/gsourceclosure.h +0 -51
  283. data/vendor/local/include/glib-2.0/gobject/gtype.h +0 -1736
  284. data/vendor/local/include/glib-2.0/gobject/gtypemodule.h +0 -263
  285. data/vendor/local/include/glib-2.0/gobject/gtypeplugin.h +0 -134
  286. data/vendor/local/include/glib-2.0/gobject/gvalue.h +0 -159
  287. data/vendor/local/include/glib-2.0/gobject/gvaluearray.h +0 -77
  288. data/vendor/local/include/glib-2.0/gobject/gvaluecollector.h +0 -227
  289. data/vendor/local/include/glib-2.0/gobject/gvaluetypes.h +0 -260
  290. data/vendor/local/include/libintl.h +0 -464
  291. data/vendor/local/include/libpng14/png.h +0 -2701
  292. data/vendor/local/include/libpng14/pngconf.h +0 -1525
  293. data/vendor/local/include/png.h +0 -2701
  294. data/vendor/local/include/pngconf.h +0 -1525
  295. data/vendor/local/include/zconf.h +0 -461
  296. data/vendor/local/include/zlib.h +0 -1589
  297. data/vendor/local/lib/GNU.Gettext.dll +0 -0
  298. data/vendor/local/lib/cairo.def +0 -322
  299. data/vendor/local/lib/cairo.lib +0 -0
  300. data/vendor/local/lib/expat.lib +0 -0
  301. data/vendor/local/lib/fontconfig.def +0 -195
  302. data/vendor/local/lib/fontconfig.lib +0 -0
  303. data/vendor/local/lib/freetype.def +0 -186
  304. data/vendor/local/lib/freetype.lib +0 -0
  305. data/vendor/local/lib/gio-2.0.def +0 -1143
  306. data/vendor/local/lib/gio-2.0.lib +0 -0
  307. data/vendor/local/lib/glib-2.0.def +0 -1452
  308. data/vendor/local/lib/glib-2.0.lib +0 -0
  309. data/vendor/local/lib/glib-2.0/include/glibconfig.h +0 -284
  310. data/vendor/local/lib/gmodule-2.0.def +0 -11
  311. data/vendor/local/lib/gmodule-2.0.lib +0 -0
  312. data/vendor/local/lib/gobject-2.0.def +0 -370
  313. data/vendor/local/lib/gobject-2.0.lib +0 -0
  314. data/vendor/local/lib/gthread-2.0.def +0 -3
  315. data/vendor/local/lib/gthread-2.0.lib +0 -0
  316. data/vendor/local/lib/intl.lib +0 -0
  317. data/vendor/local/lib/libasprintf.dll.a +0 -0
  318. data/vendor/local/lib/libcairo-gobject.dll.a +0 -0
  319. data/vendor/local/lib/libcairo-script-interpreter.dll.a +0 -0
  320. data/vendor/local/lib/libcairo.dll.a +0 -0
  321. data/vendor/local/lib/libexpat.def +0 -73
  322. data/vendor/local/lib/libexpat.dll.a +0 -0
  323. data/vendor/local/lib/libfontconfig.dll.a +0 -0
  324. data/vendor/local/lib/libfreetype.dll.a +0 -0
  325. data/vendor/local/lib/libgio-2.0.dll.a +0 -0
  326. data/vendor/local/lib/libglib-2.0.dll.a +0 -0
  327. data/vendor/local/lib/libgmodule-2.0.dll.a +0 -0
  328. data/vendor/local/lib/libgobject-2.0.dll.a +0 -0
  329. data/vendor/local/lib/libgthread-2.0.dll.a +0 -0
  330. data/vendor/local/lib/libintl.def +0 -31
  331. data/vendor/local/lib/libintl.dll.a +0 -0
  332. data/vendor/local/lib/libpng.def +0 -192
  333. data/vendor/local/lib/libpng.lib +0 -0
  334. data/vendor/local/lib/libpng14.dll.a +0 -0
  335. data/vendor/local/lib/libz.dll.a +0 -0
  336. data/vendor/local/lib/pkgconfig/cairo-fc.pc +0 -12
  337. data/vendor/local/lib/pkgconfig/cairo-ft.pc +0 -12
  338. data/vendor/local/lib/pkgconfig/cairo-gobject.pc +0 -12
  339. data/vendor/local/lib/pkgconfig/cairo-pdf.pc +0 -12
  340. data/vendor/local/lib/pkgconfig/cairo-png.pc +0 -12
  341. data/vendor/local/lib/pkgconfig/cairo-ps.pc +0 -12
  342. data/vendor/local/lib/pkgconfig/cairo-svg.pc +0 -12
  343. data/vendor/local/lib/pkgconfig/cairo-win32-font.pc +0 -12
  344. data/vendor/local/lib/pkgconfig/cairo-win32.pc +0 -12
  345. data/vendor/local/lib/pkgconfig/cairo.pc +0 -13
  346. data/vendor/local/lib/pkgconfig/fontconfig.pc +0 -11
  347. data/vendor/local/lib/pkgconfig/freetype2.pc +0 -12
  348. data/vendor/local/lib/pkgconfig/gio-2.0.pc +0 -15
  349. data/vendor/local/lib/pkgconfig/gio-windows-2.0.pc +0 -11
  350. data/vendor/local/lib/pkgconfig/glib-2.0.pc +0 -15
  351. data/vendor/local/lib/pkgconfig/gmodule-2.0.pc +0 -14
  352. data/vendor/local/lib/pkgconfig/gmodule-no-export-2.0.pc +0 -14
  353. data/vendor/local/lib/pkgconfig/gobject-2.0.pc +0 -11
  354. data/vendor/local/lib/pkgconfig/gthread-2.0.pc +0 -11
  355. data/vendor/local/lib/pkgconfig/libpng.pc +0 -11
  356. data/vendor/local/lib/pkgconfig/libpng14.pc +0 -11
  357. data/vendor/local/lib/zdll.lib +0 -0
  358. data/vendor/local/lib/zlib.def +0 -67
  359. data/vendor/local/man/man1/xmlwf.1 +0 -251
  360. data/vendor/local/manifest/cairo-dev_1.10.0-2_win32.mft +0 -85
  361. data/vendor/local/manifest/cairo_1.10.0-2_win32.mft +0 -7
  362. data/vendor/local/manifest/expat-dev_2.0.1-1_win32.mft +0 -10
  363. data/vendor/local/manifest/expat_2.0.1-1_win32.mft +0 -2
  364. data/vendor/local/manifest/fontconfig-dev_2.8.0-2_win32.mft +0 -387
  365. data/vendor/local/manifest/fontconfig_2.8.0-2_win32.mft +0 -3
  366. data/vendor/local/manifest/freetype-dev_2.4.2-1_win32.mft +0 -56
  367. data/vendor/local/manifest/freetype_2.4.2-1_win32.mft +0 -2
  368. data/vendor/local/manifest/gettext-runtime-dev_0.18.1.1-2_win32.mft +0 -81
  369. data/vendor/local/manifest/gettext-runtime_0.18.1.1-2_win32.mft +0 -3
  370. data/vendor/local/manifest/glib-dev_2.26.0-2_win32.mft +0 -570
  371. data/vendor/local/manifest/glib_2.26.0-2_win32.mft +0 -102
  372. data/vendor/local/manifest/libpng-dev_1.4.3-1_win32.mft +0 -15
  373. data/vendor/local/manifest/libpng_1.4.3-1_win32.mft +0 -2
  374. data/vendor/local/manifest/zlib-dev_1.2.5-2_win32.mft +0 -8
  375. data/vendor/local/manifest/zlib_1.2.5-2_win32.mft +0 -2
  376. data/vendor/local/share/aclocal/freetype2.m4 +0 -194
  377. data/vendor/local/share/aclocal/glib-2.0.m4 +0 -211
  378. data/vendor/local/share/aclocal/glib-gettext.m4 +0 -432
  379. data/vendor/local/share/doc/cairo_1.10.0-2_win32/COPYING +0 -33
  380. data/vendor/local/share/doc/cairo_1.10.0-2_win32/COPYING-LGPL-2.1 +0 -510
  381. data/vendor/local/share/doc/cairo_1.10.0-2_win32/COPYING-MPL-1.1 +0 -470
  382. data/vendor/local/share/doc/fontconfig/fontconfig-devel.pdf +4 -42484
  383. data/vendor/local/share/doc/fontconfig/fontconfig-devel.txt +0 -5046
  384. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcatomiccreate.html +0 -224
  385. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcatomicdeletenew.html +0 -216
  386. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcatomicdestroy.html +0 -210
  387. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcatomiclock.html +0 -223
  388. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcatomicnewfile.html +0 -222
  389. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcatomicorigfile.html +0 -221
  390. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcatomicreplaceorig.html +0 -223
  391. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcatomicunlock.html +0 -216
  392. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcblanksadd.html +0 -222
  393. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcblankscreate.html +0 -216
  394. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcblanksdestroy.html +0 -216
  395. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcblanksismember.html +0 -211
  396. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccachecopyset.html +0 -228
  397. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccachedir.html +0 -221
  398. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccachenumfont.html +0 -211
  399. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccachenumsubdir.html +0 -221
  400. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccachesubdir.html +0 -244
  401. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetaddchar.html +0 -226
  402. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetcopy.html +0 -227
  403. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetcount.html +0 -221
  404. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetcoverage.html +0 -249
  405. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetcreate.html +0 -220
  406. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetdestroy.html +0 -226
  407. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetequal.html +0 -232
  408. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetfirstpage.html +0 -238
  409. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsethaschar.html +0 -231
  410. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetintersect.html +0 -232
  411. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetintersectcount.html +0 -231
  412. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetissubset.html +0 -231
  413. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetmerge.html +0 -261
  414. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetnew.html +0 -208
  415. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetnextpage.html +0 -243
  416. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetsubtract.html +0 -231
  417. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetsubtractcount.html +0 -231
  418. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fccharsetunion.html +0 -231
  419. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigappfontadddir.html +0 -229
  420. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigappfontaddfile.html +0 -228
  421. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigappfontclear.html +0 -222
  422. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigbuildfonts.html +0 -224
  423. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigcreate.html +0 -216
  424. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigdestroy.html +0 -219
  425. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigenablehome.html +0 -230
  426. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigfilename.html +0 -237
  427. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiggetblanks.html +0 -225
  428. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiggetcache.html +0 -217
  429. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiggetcachedirs.html +0 -227
  430. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiggetconfigdirs.html +0 -228
  431. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiggetconfigfiles.html +0 -227
  432. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiggetcurrent.html +0 -216
  433. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiggetfontdirs.html +0 -229
  434. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiggetfonts.html +0 -234
  435. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiggetrescaninterval.html +0 -230
  436. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfighome.html +0 -221
  437. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigparseandload.html +0 -220
  438. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigreference.html +0 -231
  439. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigsetcurrent.html +0 -222
  440. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigsetrescaninterval.html +0 -229
  441. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigsubstitute.html +0 -233
  442. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfigsubstitutewithpat.html +0 -251
  443. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcconfiguptodate.html +0 -228
  444. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcdefaultsubstitute.html +0 -234
  445. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcdircacheload.html +0 -239
  446. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcdircacheloadfile.html +0 -233
  447. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcdircacheread.html +0 -239
  448. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcdircacheunlink.html +0 -239
  449. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcdircacheunload.html +0 -211
  450. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcdircachevalid.html +0 -222
  451. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcdirsave.html +0 -245
  452. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcdirscan.html +0 -266
  453. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfileisdir.html +0 -222
  454. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfilescan.html +0 -276
  455. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfini.html +0 -219
  456. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontlist.html +0 -244
  457. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontmatch.html +0 -262
  458. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontrenderprepare.html +0 -259
  459. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontsetadd.html +0 -223
  460. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontsetcreate.html +0 -216
  461. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontsetdestroy.html +0 -217
  462. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontsetlist.html +0 -261
  463. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontsetmatch.html +0 -273
  464. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontsetprint.html +0 -224
  465. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontsetsort.html +0 -303
  466. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontsetsortdestroy.html +0 -222
  467. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfontsort.html +0 -289
  468. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfreetypecharindex.html +0 -226
  469. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfreetypecharset.html +0 -225
  470. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfreetypecharsetandspacing.html +0 -241
  471. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfreetypequery.html +0 -233
  472. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcfreetypequeryface.html +0 -222
  473. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcgetlangs.html +0 -216
  474. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcgetversion.html +0 -216
  475. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcinit.html +0 -219
  476. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcinitbringuptodate.html +0 -208
  477. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcinitloadconfig.html +0 -217
  478. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcinitloadconfigandfonts.html +0 -217
  479. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcinitreinitialize.html +0 -219
  480. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcislower.html +0 -222
  481. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcisupper.html +0 -222
  482. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclanggetcharset.html +0 -205
  483. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsetadd.html +0 -239
  484. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsetcompare.html +0 -239
  485. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsetcontains.html +0 -259
  486. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsetcopy.html +0 -225
  487. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsetcreate.html +0 -219
  488. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsetdestroy.html +0 -220
  489. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsetequal.html +0 -232
  490. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsetgetlangs.html +0 -221
  491. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsethash.html +0 -233
  492. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fclangsethaslang.html +0 -255
  493. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcmatrixcopy.html +0 -225
  494. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcmatrixequal.html +0 -236
  495. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcmatrixinit.html +0 -225
  496. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcmatrixmultiply.html +0 -246
  497. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcmatrixrotate.html +0 -261
  498. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcmatrixscale.html +0 -261
  499. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcmatrixshear.html +0 -250
  500. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcnameconstant.html +0 -221
  501. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcnamegetconstant.html +0 -221
  502. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcnamegetobjecttype.html +0 -210
  503. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcnameparse.html +0 -221
  504. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcnameregisterconstants.html +0 -228
  505. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcnameregisterobjecttypes.html +0 -228
  506. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcnameunparse.html +0 -218
  507. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcnameunregisterconstants.html +0 -228
  508. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcnameunregisterobjecttypes.html +0 -226
  509. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcobjectsetadd.html +0 -222
  510. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcobjectsetbuild.html +0 -262
  511. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcobjectsetcreate.html +0 -216
  512. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcobjectsetdestroy.html +0 -216
  513. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternadd-type.html +0 -404
  514. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternadd.html +0 -240
  515. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternaddweak.html +0 -242
  516. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternbuild.html +0 -313
  517. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatterncreate.html +0 -216
  518. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatterndel.html +0 -222
  519. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatterndestroy.html +0 -217
  520. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternduplicate.html +0 -223
  521. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternequal.html +0 -231
  522. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternequalsubset.html +0 -242
  523. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternfilter.html +0 -244
  524. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternformat.html +0 -602
  525. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternget-type.html +0 -435
  526. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternget.html +0 -249
  527. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternhash.html +0 -217
  528. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternprint.html +0 -218
  529. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternreference.html +0 -222
  530. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcpatternremove.html +0 -227
  531. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrbasename.html +0 -212
  532. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrcmp.html +0 -232
  533. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrcmpignorecase.html +0 -233
  534. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrcopy.html +0 -226
  535. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrcopyfilename.html +0 -234
  536. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrdirname.html +0 -223
  537. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrdowncase.html +0 -222
  538. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrfree.html +0 -217
  539. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrlistcreate.html +0 -221
  540. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrlistdone.html +0 -210
  541. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrlistnext.html +0 -221
  542. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrplus.html +0 -233
  543. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrsetadd.html +0 -231
  544. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrsetaddfilename.html +0 -233
  545. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrsetcreate.html +0 -216
  546. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrsetdel.html +0 -237
  547. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrsetdestroy.html +0 -221
  548. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrsetequal.html +0 -233
  549. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrsetmember.html +0 -232
  550. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrstr.html +0 -244
  551. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcstrstrignorecase.html +0 -244
  552. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fctolower.html +0 -222
  553. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcucs4toutf8.html +0 -233
  554. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcutf16len.html +0 -278
  555. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcutf16toucs4.html +0 -265
  556. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcutf8len.html +0 -261
  557. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcutf8toucs4.html +0 -249
  558. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcvaluedestroy.html +0 -222
  559. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcvalueequal.html +0 -212
  560. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcvalueprint.html +0 -223
  561. data/vendor/local/share/doc/fontconfig/fontconfig-devel/fcvaluesave.html +0 -227
  562. data/vendor/local/share/doc/fontconfig/fontconfig-devel/ln12.html +0 -128
  563. data/vendor/local/share/doc/fontconfig/fontconfig-devel/t1.html +0 -133
  564. data/vendor/local/share/doc/fontconfig/fontconfig-devel/x102.html +0 -1463
  565. data/vendor/local/share/doc/fontconfig/fontconfig-devel/x19.html +0 -264
  566. data/vendor/local/share/doc/fontconfig/fontconfig-devel/x31.html +0 -590
  567. data/vendor/local/share/doc/fontconfig/fontconfig-user.html +0 -1352
  568. data/vendor/local/share/doc/fontconfig/fontconfig-user.pdf +0 -0
  569. data/vendor/local/share/doc/fontconfig/fontconfig-user.txt +0 -644
  570. data/vendor/local/share/doc/gettext/bind_textdomain_codeset.3.html +0 -165
  571. data/vendor/local/share/doc/gettext/bindtextdomain.3.html +0 -160
  572. data/vendor/local/share/doc/gettext/csharpdoc/GNU_Gettext.html +0 -8
  573. data/vendor/local/share/doc/gettext/csharpdoc/GNU_Gettext_GettextResourceManager.html +0 -305
  574. data/vendor/local/share/doc/gettext/csharpdoc/GNU_Gettext_GettextResourceSet.html +0 -356
  575. data/vendor/local/share/doc/gettext/csharpdoc/begin.html +0 -11
  576. data/vendor/local/share/doc/gettext/csharpdoc/index.html +0 -10
  577. data/vendor/local/share/doc/gettext/csharpdoc/namespaces.html +0 -6
  578. data/vendor/local/share/doc/gettext/envsubst.1.html +0 -213
  579. data/vendor/local/share/doc/gettext/gettext.1.html +0 -266
  580. data/vendor/local/share/doc/gettext/gettext.3.html +0 -186
  581. data/vendor/local/share/doc/gettext/ngettext.1.html +0 -280
  582. data/vendor/local/share/doc/gettext/ngettext.3.html +0 -143
  583. data/vendor/local/share/doc/gettext/textdomain.3.html +0 -150
  584. data/vendor/local/share/doc/glib-2.26.0/COPYING +0 -482
  585. data/vendor/local/share/doc/glib-dev-2.26.0/COPYING +0 -482
  586. data/vendor/local/share/doc/libasprintf/autosprintf_all.html +0 -174
  587. data/vendor/local/share/glib-2.0/gdb/glib.py +0 -249
  588. data/vendor/local/share/glib-2.0/gdb/gobject.py +0 -305
  589. data/vendor/local/share/glib-2.0/gettext/mkinstalldirs +0 -111
  590. data/vendor/local/share/glib-2.0/gettext/po/Makefile.in.in +0 -279
  591. data/vendor/local/share/glib-2.0/schemas/gschema.dtd +0 -60
  592. data/vendor/local/share/gtk-doc/html/cairo/bindings-errors.html +0 -122
  593. data/vendor/local/share/gtk-doc/html/cairo/bindings-fonts.html +0 -53
  594. data/vendor/local/share/gtk-doc/html/cairo/bindings-memory.html +0 -123
  595. data/vendor/local/share/gtk-doc/html/cairo/bindings-overloading.html +0 -121
  596. data/vendor/local/share/gtk-doc/html/cairo/bindings-path.html +0 -117
  597. data/vendor/local/share/gtk-doc/html/cairo/bindings-patterns.html +0 -62
  598. data/vendor/local/share/gtk-doc/html/cairo/bindings-return-values.html +0 -120
  599. data/vendor/local/share/gtk-doc/html/cairo/bindings-streams.html +0 -92
  600. data/vendor/local/share/gtk-doc/html/cairo/bindings-surfaces.html +0 -93
  601. data/vendor/local/share/gtk-doc/html/cairo/cairo-Error-handling.html +0 -373
  602. data/vendor/local/share/gtk-doc/html/cairo/cairo-FreeType-Fonts.html +0 -330
  603. data/vendor/local/share/gtk-doc/html/cairo/cairo-Image-Surfaces.html +0 -478
  604. data/vendor/local/share/gtk-doc/html/cairo/cairo-PDF-Surfaces.html +0 -344
  605. data/vendor/local/share/gtk-doc/html/cairo/cairo-PNG-Support.html +0 -320
  606. data/vendor/local/share/gtk-doc/html/cairo/cairo-Paths.html +0 -1291
  607. data/vendor/local/share/gtk-doc/html/cairo/cairo-PostScript-Surfaces.html +0 -622
  608. data/vendor/local/share/gtk-doc/html/cairo/cairo-Quartz-(CGFont)-Fonts.html +0 -134
  609. data/vendor/local/share/gtk-doc/html/cairo/cairo-Quartz-Surfaces.html +0 -210
  610. data/vendor/local/share/gtk-doc/html/cairo/cairo-Regions.html +0 -834
  611. data/vendor/local/share/gtk-doc/html/cairo/cairo-SVG-Surfaces.html +0 -318
  612. data/vendor/local/share/gtk-doc/html/cairo/cairo-Transformations.html +0 -410
  613. data/vendor/local/share/gtk-doc/html/cairo/cairo-Types.html +0 -169
  614. data/vendor/local/share/gtk-doc/html/cairo/cairo-User-Fonts.html +0 -715
  615. data/vendor/local/share/gtk-doc/html/cairo/cairo-Version-Information.html +0 -410
  616. data/vendor/local/share/gtk-doc/html/cairo/cairo-Win32-Fonts.html +0 -335
  617. data/vendor/local/share/gtk-doc/html/cairo/cairo-Win32-Surfaces.html +0 -291
  618. data/vendor/local/share/gtk-doc/html/cairo/cairo-XLib-Surfaces.html +0 -470
  619. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-device-t.html +0 -595
  620. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-font-face-t.html +0 -384
  621. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-font-options-t.html +0 -644
  622. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-matrix-t.html +0 -574
  623. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-pattern-t.html +0 -1457
  624. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-scaled-font-t.html +0 -1076
  625. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-surface-t.html +0 -1396
  626. data/vendor/local/share/gtk-doc/html/cairo/cairo-cairo-t.html +0 -2743
  627. data/vendor/local/share/gtk-doc/html/cairo/cairo-drawing.html +0 -50
  628. data/vendor/local/share/gtk-doc/html/cairo/cairo-fonts.html +0 -53
  629. data/vendor/local/share/gtk-doc/html/cairo/cairo-support.html +0 -44
  630. data/vendor/local/share/gtk-doc/html/cairo/cairo-surfaces.html +0 -62
  631. data/vendor/local/share/gtk-doc/html/cairo/cairo-text.html +0 -1175
  632. data/vendor/local/share/gtk-doc/html/cairo/cairo.devhelp +0 -473
  633. data/vendor/local/share/gtk-doc/html/cairo/cairo.devhelp2 +0 -641
  634. data/vendor/local/share/gtk-doc/html/cairo/home.png +0 -0
  635. data/vendor/local/share/gtk-doc/html/cairo/index-1.10.html +0 -147
  636. data/vendor/local/share/gtk-doc/html/cairo/index-1.2.html +0 -164
  637. data/vendor/local/share/gtk-doc/html/cairo/index-1.4.html +0 -134
  638. data/vendor/local/share/gtk-doc/html/cairo/index-1.6.html +0 -82
  639. data/vendor/local/share/gtk-doc/html/cairo/index-1.8.html +0 -108
  640. data/vendor/local/share/gtk-doc/html/cairo/index-all.html +0 -956
  641. data/vendor/local/share/gtk-doc/html/cairo/index.html +0 -141
  642. data/vendor/local/share/gtk-doc/html/cairo/index.sgml +0 -708
  643. data/vendor/local/share/gtk-doc/html/cairo/language-bindings.html +0 -73
  644. data/vendor/local/share/gtk-doc/html/cairo/left.png +0 -0
  645. data/vendor/local/share/gtk-doc/html/cairo/right.png +0 -0
  646. data/vendor/local/share/gtk-doc/html/cairo/style.css +0 -265
  647. data/vendor/local/share/gtk-doc/html/cairo/up.png +0 -0
  648. data/vendor/local/share/gtk-doc/html/gio/GAppInfo.html +0 -1403
  649. data/vendor/local/share/gtk-doc/html/gio/GAsyncInitable.html +0 -733
  650. data/vendor/local/share/gtk-doc/html/gio/GAsyncResult.html +0 -343
  651. data/vendor/local/share/gtk-doc/html/gio/GBufferedInputStream.html +0 -563
  652. data/vendor/local/share/gtk-doc/html/gio/GBufferedOutputStream.html +0 -291
  653. data/vendor/local/share/gtk-doc/html/gio/GCancellable.html +0 -620
  654. data/vendor/local/share/gtk-doc/html/gio/GCharsetConverter.html +0 -245
  655. data/vendor/local/share/gtk-doc/html/gio/GConverter.html +0 -423
  656. data/vendor/local/share/gtk-doc/html/gio/GCredentials.html +0 -398
  657. data/vendor/local/share/gtk-doc/html/gio/GDBusAuthObserver.html +0 -254
  658. data/vendor/local/share/gtk-doc/html/gio/GDBusConnection.html +0 -6211
  659. data/vendor/local/share/gtk-doc/html/gio/GDBusMessage.html +0 -1833
  660. data/vendor/local/share/gtk-doc/html/gio/GDBusMethodInvocation.html +0 -618
  661. data/vendor/local/share/gtk-doc/html/gio/GDBusProxy.html +0 -2050
  662. data/vendor/local/share/gtk-doc/html/gio/GDBusServer.html +0 -1124
  663. data/vendor/local/share/gtk-doc/html/gio/GDataInputStream.html +0 -1215
  664. data/vendor/local/share/gtk-doc/html/gio/GDataOutputStream.html +0 -540
  665. data/vendor/local/share/gtk-doc/html/gio/GDrive.html +0 -1416
  666. data/vendor/local/share/gtk-doc/html/gio/GEmblem.html +0 -272
  667. data/vendor/local/share/gtk-doc/html/gio/GEmblemedIcon.html +0 -206
  668. data/vendor/local/share/gtk-doc/html/gio/GFile.html +0 -7462
  669. data/vendor/local/share/gtk-doc/html/gio/GFileDescriptorBased.html +0 -120
  670. data/vendor/local/share/gtk-doc/html/gio/GFileEnumerator.html +0 -516
  671. data/vendor/local/share/gtk-doc/html/gio/GFileIOStream.html +0 -312
  672. data/vendor/local/share/gtk-doc/html/gio/GFileIcon.html +0 -155
  673. data/vendor/local/share/gtk-doc/html/gio/GFileInfo.html +0 -3144
  674. data/vendor/local/share/gtk-doc/html/gio/GFileInputStream.html +0 -262
  675. data/vendor/local/share/gtk-doc/html/gio/GFileMonitor.html +0 -353
  676. data/vendor/local/share/gtk-doc/html/gio/GFileOutputStream.html +0 -301
  677. data/vendor/local/share/gtk-doc/html/gio/GFilenameCompleter.html +0 -217
  678. data/vendor/local/share/gtk-doc/html/gio/GFilterInputStream.html +0 -188
  679. data/vendor/local/share/gtk-doc/html/gio/GFilterOutputStream.html +0 -189
  680. data/vendor/local/share/gtk-doc/html/gio/GIOModule.html +0 -261
  681. data/vendor/local/share/gtk-doc/html/gio/GIOStream.html +0 -479
  682. data/vendor/local/share/gtk-doc/html/gio/GIcon.html +0 -331
  683. data/vendor/local/share/gtk-doc/html/gio/GInetAddress.html +0 -717
  684. data/vendor/local/share/gtk-doc/html/gio/GInetSocketAddress.html +0 -196
  685. data/vendor/local/share/gtk-doc/html/gio/GInitable.html +0 -388
  686. data/vendor/local/share/gtk-doc/html/gio/GInputStream.html +0 -808
  687. data/vendor/local/share/gtk-doc/html/gio/GLoadableIcon.html +0 -301
  688. data/vendor/local/share/gtk-doc/html/gio/GMemoryInputStream.html +0 -185
  689. data/vendor/local/share/gtk-doc/html/gio/GMemoryOutputStream.html +0 -393
  690. data/vendor/local/share/gtk-doc/html/gio/GMount.html +0 -1465
  691. data/vendor/local/share/gtk-doc/html/gio/GMountOperation.html +0 -848
  692. data/vendor/local/share/gtk-doc/html/gio/GNetworkAddress.html +0 -343
  693. data/vendor/local/share/gtk-doc/html/gio/GNetworkService.html +0 -311
  694. data/vendor/local/share/gtk-doc/html/gio/GOutputStream.html +0 -1012
  695. data/vendor/local/share/gtk-doc/html/gio/GPermission.html +0 -560
  696. data/vendor/local/share/gtk-doc/html/gio/GProxy.html +0 -312
  697. data/vendor/local/share/gtk-doc/html/gio/GProxyAddress.html +0 -348
  698. data/vendor/local/share/gtk-doc/html/gio/GProxyResolver.html +0 -301
  699. data/vendor/local/share/gtk-doc/html/gio/GResolver.html +0 -787
  700. data/vendor/local/share/gtk-doc/html/gio/GSeekable.html +0 -350
  701. data/vendor/local/share/gtk-doc/html/gio/GSettings.html +0 -2424
  702. data/vendor/local/share/gtk-doc/html/gio/GSettingsBackend.html +0 -609
  703. data/vendor/local/share/gtk-doc/html/gio/GSimpleAsyncResult.html +0 -1193
  704. data/vendor/local/share/gtk-doc/html/gio/GSimplePermission.html +0 -107
  705. data/vendor/local/share/gtk-doc/html/gio/GSocket.html +0 -2438
  706. data/vendor/local/share/gtk-doc/html/gio/GSocketAddress.html +0 -297
  707. data/vendor/local/share/gtk-doc/html/gio/GSocketClient.html +0 -1292
  708. data/vendor/local/share/gtk-doc/html/gio/GSocketConnectable.html +0 -513
  709. data/vendor/local/share/gtk-doc/html/gio/GSocketConnection.html +0 -337
  710. data/vendor/local/share/gtk-doc/html/gio/GSocketControlMessage.html +0 -275
  711. data/vendor/local/share/gtk-doc/html/gio/GSocketListener.html +0 -745
  712. data/vendor/local/share/gtk-doc/html/gio/GSocketService.html +0 -258
  713. data/vendor/local/share/gtk-doc/html/gio/GTcpConnection.html +0 -165
  714. data/vendor/local/share/gtk-doc/html/gio/GThemedIcon.html +0 -377
  715. data/vendor/local/share/gtk-doc/html/gio/GThreadedSocketService.html +0 -197
  716. data/vendor/local/share/gtk-doc/html/gio/GUnixConnection.html +0 -298
  717. data/vendor/local/share/gtk-doc/html/gio/GUnixCredentialsMessage.html +0 -222
  718. data/vendor/local/share/gtk-doc/html/gio/GUnixFDList.html +0 -389
  719. data/vendor/local/share/gtk-doc/html/gio/GUnixFDMessage.html +0 -288
  720. data/vendor/local/share/gtk-doc/html/gio/GUnixInputStream.html +0 -237
  721. data/vendor/local/share/gtk-doc/html/gio/GUnixOutputStream.html +0 -237
  722. data/vendor/local/share/gtk-doc/html/gio/GUnixSocketAddress.html +0 -491
  723. data/vendor/local/share/gtk-doc/html/gio/GVfs.html +0 -274
  724. data/vendor/local/share/gtk-doc/html/gio/GVolume.html +0 -1028
  725. data/vendor/local/share/gtk-doc/html/gio/GVolumeMonitor.html +0 -705
  726. data/vendor/local/share/gtk-doc/html/gio/GZlibCompressor.html +0 -252
  727. data/vendor/local/share/gtk-doc/html/gio/GZlibDecompressor.html +0 -170
  728. data/vendor/local/share/gtk-doc/html/gio/annotation-glossary.html +0 -65
  729. data/vendor/local/share/gtk-doc/html/gio/api-index-2-18.html +0 -153
  730. data/vendor/local/share/gtk-doc/html/gio/api-index-2-20.html +0 -155
  731. data/vendor/local/share/gtk-doc/html/gio/api-index-2-22.html +0 -1084
  732. data/vendor/local/share/gtk-doc/html/gio/api-index-2-24.html +0 -223
  733. data/vendor/local/share/gtk-doc/html/gio/api-index-2-26.html +0 -1598
  734. data/vendor/local/share/gtk-doc/html/gio/api-index-deprecated.html +0 -112
  735. data/vendor/local/share/gtk-doc/html/gio/api-index-full.html +0 -6250
  736. data/vendor/local/share/gtk-doc/html/gio/async.html +0 -44
  737. data/vendor/local/share/gtk-doc/html/gio/ch01.html +0 -207
  738. data/vendor/local/share/gtk-doc/html/gio/ch02.html +0 -50
  739. data/vendor/local/share/gtk-doc/html/gio/ch03.html +0 -180
  740. data/vendor/local/share/gtk-doc/html/gio/ch24.html +0 -75
  741. data/vendor/local/share/gtk-doc/html/gio/ch25.html +0 -217
  742. data/vendor/local/share/gtk-doc/html/gio/ch25s02.html +0 -41
  743. data/vendor/local/share/gtk-doc/html/gio/ch25s03.html +0 -39
  744. data/vendor/local/share/gtk-doc/html/gio/ch26.html +0 -57
  745. data/vendor/local/share/gtk-doc/html/gio/ch26s02.html +0 -59
  746. data/vendor/local/share/gtk-doc/html/gio/ch26s03.html +0 -159
  747. data/vendor/local/share/gtk-doc/html/gio/ch26s04.html +0 -46
  748. data/vendor/local/share/gtk-doc/html/gio/ch26s05.html +0 -48
  749. data/vendor/local/share/gtk-doc/html/gio/ch26s06.html +0 -277
  750. data/vendor/local/share/gtk-doc/html/gio/ch26s07.html +0 -95
  751. data/vendor/local/share/gtk-doc/html/gio/ch27.html +0 -70
  752. data/vendor/local/share/gtk-doc/html/gio/ch27s02.html +0 -130
  753. data/vendor/local/share/gtk-doc/html/gio/ch27s03.html +0 -202
  754. data/vendor/local/share/gtk-doc/html/gio/ch27s04.html +0 -96
  755. data/vendor/local/share/gtk-doc/html/gio/ch27s05.html +0 -823
  756. data/vendor/local/share/gtk-doc/html/gio/ch27s06.html +0 -828
  757. data/vendor/local/share/gtk-doc/html/gio/conversion.html +0 -44
  758. data/vendor/local/share/gtk-doc/html/gio/extending-gio.html +0 -109
  759. data/vendor/local/share/gtk-doc/html/gio/extending.html +0 -41
  760. data/vendor/local/share/gtk-doc/html/gio/failable_initialization.html +0 -38
  761. data/vendor/local/share/gtk-doc/html/gio/file_mon.html +0 -33
  762. data/vendor/local/share/gtk-doc/html/gio/file_ops.html +0 -50
  763. data/vendor/local/share/gtk-doc/html/gio/gdbus-convenience.html +0 -41
  764. data/vendor/local/share/gtk-doc/html/gio/gdbus-lowlevel.html +0 -59
  765. data/vendor/local/share/gtk-doc/html/gio/gdbus.html +0 -243
  766. data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Addresses.html +0 -316
  767. data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Introspection-Data.html +0 -1117
  768. data/vendor/local/share/gtk-doc/html/gio/gio-D-Bus-Utilities.html +0 -216
  769. data/vendor/local/share/gtk-doc/html/gio/gio-Desktop-file-based-GAppInfo.html +0 -339
  770. data/vendor/local/share/gtk-doc/html/gio/gio-Extension-Points.html +0 -473
  771. data/vendor/local/share/gtk-doc/html/gio/gio-GContentType.html +0 -391
  772. data/vendor/local/share/gtk-doc/html/gio/gio-GConverterInputstream.html +0 -159
  773. data/vendor/local/share/gtk-doc/html/gio/gio-GConverterOutputstream.html +0 -159
  774. data/vendor/local/share/gtk-doc/html/gio/gio-GDBusError.html +0 -908
  775. data/vendor/local/share/gtk-doc/html/gio/gio-GFileAttribute.html +0 -933
  776. data/vendor/local/share/gtk-doc/html/gio/gio-GIOError.html +0 -409
  777. data/vendor/local/share/gtk-doc/html/gio/gio-GIOScheduler.html +0 -297
  778. data/vendor/local/share/gtk-doc/html/gio/gio-GSrvTarget.html +0 -313
  779. data/vendor/local/share/gtk-doc/html/gio/gio-Owning-Bus-Names.html +0 -736
  780. data/vendor/local/share/gtk-doc/html/gio/gio-Unix-Mounts.html +0 -909
  781. data/vendor/local/share/gtk-doc/html/gio/gio-Watching-Bus-Names.html +0 -666
  782. data/vendor/local/share/gtk-doc/html/gio/gio-hierarchy.html +0 -123
  783. data/vendor/local/share/gtk-doc/html/gio/gio-querymodules.html +0 -53
  784. data/vendor/local/share/gtk-doc/html/gio/gio.devhelp +0 -1736
  785. data/vendor/local/share/gtk-doc/html/gio/gio.devhelp2 +0 -2006
  786. data/vendor/local/share/gtk-doc/html/gio/glib-compile-schemas.html +0 -102
  787. data/vendor/local/share/gtk-doc/html/gio/gvfs-overview.png +0 -0
  788. data/vendor/local/share/gtk-doc/html/gio/highlevel-socket.html +0 -53
  789. data/vendor/local/share/gtk-doc/html/gio/home.png +0 -0
  790. data/vendor/local/share/gtk-doc/html/gio/icons.html +0 -50
  791. data/vendor/local/share/gtk-doc/html/gio/index.html +0 -435
  792. data/vendor/local/share/gtk-doc/html/gio/index.sgml +0 -2513
  793. data/vendor/local/share/gtk-doc/html/gio/left.png +0 -0
  794. data/vendor/local/share/gtk-doc/html/gio/migrating.html +0 -62
  795. data/vendor/local/share/gtk-doc/html/gio/networking.html +0 -69
  796. data/vendor/local/share/gtk-doc/html/gio/permissions.html +0 -39
  797. data/vendor/local/share/gtk-doc/html/gio/pt01.html +0 -39
  798. data/vendor/local/share/gtk-doc/html/gio/pt02.html +0 -390
  799. data/vendor/local/share/gtk-doc/html/gio/resolver.html +0 -50
  800. data/vendor/local/share/gtk-doc/html/gio/right.png +0 -0
  801. data/vendor/local/share/gtk-doc/html/gio/settings.html +0 -38
  802. data/vendor/local/share/gtk-doc/html/gio/streaming.html +0 -92
  803. data/vendor/local/share/gtk-doc/html/gio/style.css +0 -265
  804. data/vendor/local/share/gtk-doc/html/gio/tools.html +0 -44
  805. data/vendor/local/share/gtk-doc/html/gio/types.html +0 -41
  806. data/vendor/local/share/gtk-doc/html/gio/up.png +0 -0
  807. data/vendor/local/share/gtk-doc/html/gio/utils.html +0 -33
  808. data/vendor/local/share/gtk-doc/html/gio/volume_mon.html +0 -47
  809. data/vendor/local/share/gtk-doc/html/glib/annotation-glossary.html +0 -77
  810. data/vendor/local/share/gtk-doc/html/glib/api-index-2-10.html +0 -180
  811. data/vendor/local/share/gtk-doc/html/glib/api-index-2-12.html +0 -312
  812. data/vendor/local/share/gtk-doc/html/glib/api-index-2-14.html +0 -559
  813. data/vendor/local/share/gtk-doc/html/glib/api-index-2-16.html +0 -362
  814. data/vendor/local/share/gtk-doc/html/glib/api-index-2-18.html +0 -102
  815. data/vendor/local/share/gtk-doc/html/glib/api-index-2-2.html +0 -124
  816. data/vendor/local/share/gtk-doc/html/glib/api-index-2-20.html +0 -83
  817. data/vendor/local/share/gtk-doc/html/glib/api-index-2-22.html +0 -194
  818. data/vendor/local/share/gtk-doc/html/glib/api-index-2-24.html +0 -420
  819. data/vendor/local/share/gtk-doc/html/glib/api-index-2-26.html +0 -359
  820. data/vendor/local/share/gtk-doc/html/glib/api-index-2-4.html +0 -396
  821. data/vendor/local/share/gtk-doc/html/glib/api-index-2-6.html +0 -417
  822. data/vendor/local/share/gtk-doc/html/glib/api-index-2-8.html +0 -158
  823. data/vendor/local/share/gtk-doc/html/glib/api-index-deprecated.html +0 -419
  824. data/vendor/local/share/gtk-doc/html/glib/api-index-full.html +0 -8214
  825. data/vendor/local/share/gtk-doc/html/glib/file-name-encodings.png +0 -0
  826. data/vendor/local/share/gtk-doc/html/glib/glib-Arrays.html +0 -893
  827. data/vendor/local/share/gtk-doc/html/glib/glib-Asynchronous-Queues.html +0 -818
  828. data/vendor/local/share/gtk-doc/html/glib/glib-Atomic-Operations.html +0 -414
  829. data/vendor/local/share/gtk-doc/html/glib/glib-Automatic-String-Completion.html +0 -466
  830. data/vendor/local/share/gtk-doc/html/glib/glib-Balanced-Binary-Trees.html +0 -802
  831. data/vendor/local/share/gtk-doc/html/glib/glib-Base64-Encoding.html +0 -372
  832. data/vendor/local/share/gtk-doc/html/glib/glib-Basic-Types.html +0 -500
  833. data/vendor/local/share/gtk-doc/html/glib/glib-Bookmark-file-parser.html +0 -2056
  834. data/vendor/local/share/gtk-doc/html/glib/glib-Byte-Arrays.html +0 -560
  835. data/vendor/local/share/gtk-doc/html/glib/glib-Byte-Order-Macros.html +0 -1686
  836. data/vendor/local/share/gtk-doc/html/glib/glib-Caches.html +0 -398
  837. data/vendor/local/share/gtk-doc/html/glib/glib-Character-Set-Conversion.html +0 -1094
  838. data/vendor/local/share/gtk-doc/html/glib/glib-Commandline-option-parser.html +0 -1671
  839. data/vendor/local/share/gtk-doc/html/glib/glib-Data-Checksums.html +0 -460
  840. data/vendor/local/share/gtk-doc/html/glib/glib-Datasets.html +0 -528
  841. data/vendor/local/share/gtk-doc/html/glib/glib-Date-and-Time-Functions.html +0 -2045
  842. data/vendor/local/share/gtk-doc/html/glib/glib-Double-ended-Queues.html +0 -1278
  843. data/vendor/local/share/gtk-doc/html/glib/glib-Doubly-Linked-Lists.html +0 -1406
  844. data/vendor/local/share/gtk-doc/html/glib/glib-Dynamic-Loading-of-Modules.html +0 -548
  845. data/vendor/local/share/gtk-doc/html/glib/glib-Error-Reporting.html +0 -1026
  846. data/vendor/local/share/gtk-doc/html/glib/glib-File-Utilities.html +0 -1852
  847. data/vendor/local/share/gtk-doc/html/glib/glib-GDateTime.html +0 -2201
  848. data/vendor/local/share/gtk-doc/html/glib/glib-GTimeZone.html +0 -239
  849. data/vendor/local/share/gtk-doc/html/glib/glib-GVariant.html +0 -4278
  850. data/vendor/local/share/gtk-doc/html/glib/glib-GVariantType.html +0 -1864
  851. data/vendor/local/share/gtk-doc/html/glib/glib-Glob-style-pattern-matching.html +0 -295
  852. data/vendor/local/share/gtk-doc/html/glib/glib-Hash-Tables.html +0 -1512
  853. data/vendor/local/share/gtk-doc/html/glib/glib-Hook-Functions.html +0 -1367
  854. data/vendor/local/share/gtk-doc/html/glib/glib-Hostname-Utilities.html +0 -229
  855. data/vendor/local/share/gtk-doc/html/glib/glib-I18N.html +0 -692
  856. data/vendor/local/share/gtk-doc/html/glib/glib-IO-Channels.html +0 -2196
  857. data/vendor/local/share/gtk-doc/html/glib/glib-Key-value-file-parser.html +0 -2740
  858. data/vendor/local/share/gtk-doc/html/glib/glib-Keyed-Data-Lists.html +0 -612
  859. data/vendor/local/share/gtk-doc/html/glib/glib-Lexical-Scanner.html +0 -1451
  860. data/vendor/local/share/gtk-doc/html/glib/glib-Limits-of-Basic-Types.html +0 -389
  861. data/vendor/local/share/gtk-doc/html/glib/glib-Memory-Allocation.html +0 -1033
  862. data/vendor/local/share/gtk-doc/html/glib/glib-Memory-Allocators.html +0 -141
  863. data/vendor/local/share/gtk-doc/html/glib/glib-Memory-Chunks.html +0 -706
  864. data/vendor/local/share/gtk-doc/html/glib/glib-Memory-Slices.html +0 -510
  865. data/vendor/local/share/gtk-doc/html/glib/glib-Message-Logging.html +0 -748
  866. data/vendor/local/share/gtk-doc/html/glib/glib-Miscellaneous-Macros.html +0 -1105
  867. data/vendor/local/share/gtk-doc/html/glib/glib-Miscellaneous-Utility-Functions.html +0 -1552
  868. data/vendor/local/share/gtk-doc/html/glib/glib-N-ary-Trees.html +0 -1468
  869. data/vendor/local/share/gtk-doc/html/glib/glib-Numerical-Definitions.html +0 -194
  870. data/vendor/local/share/gtk-doc/html/glib/glib-Perl-compatible-regular-expressions.html +0 -2745
  871. data/vendor/local/share/gtk-doc/html/glib/glib-Pointer-Arrays.html +0 -752
  872. data/vendor/local/share/gtk-doc/html/glib/glib-Quarks.html +0 -269
  873. data/vendor/local/share/gtk-doc/html/glib/glib-Random-Numbers.html +0 -578
  874. data/vendor/local/share/gtk-doc/html/glib/glib-Relations-and-Tuples.html +0 -532
  875. data/vendor/local/share/gtk-doc/html/glib/glib-Sequences.html +0 -1353
  876. data/vendor/local/share/gtk-doc/html/glib/glib-Shell-related-Utilities.html +0 -238
  877. data/vendor/local/share/gtk-doc/html/glib/glib-Simple-XML-Subset-Parser.html +0 -1282
  878. data/vendor/local/share/gtk-doc/html/glib/glib-Singly-Linked-Lists.html +0 -1213
  879. data/vendor/local/share/gtk-doc/html/glib/glib-Spawning-Processes.html +0 -924
  880. data/vendor/local/share/gtk-doc/html/glib/glib-Standard-Macros.html +0 -470
  881. data/vendor/local/share/gtk-doc/html/glib/glib-String-Chunks.html +0 -301
  882. data/vendor/local/share/gtk-doc/html/glib/glib-String-Utility-Functions.html +0 -2960
  883. data/vendor/local/share/gtk-doc/html/glib/glib-Strings.html +0 -1291
  884. data/vendor/local/share/gtk-doc/html/glib/glib-Testing.html +0 -1805
  885. data/vendor/local/share/gtk-doc/html/glib/glib-The-Main-Event-Loop.html +0 -3478
  886. data/vendor/local/share/gtk-doc/html/glib/glib-Thread-Pools.html +0 -606
  887. data/vendor/local/share/gtk-doc/html/glib/glib-Threads.html +0 -3411
  888. data/vendor/local/share/gtk-doc/html/glib/glib-Timers.html +0 -245
  889. data/vendor/local/share/gtk-doc/html/glib/glib-Trash-Stacks.html +0 -188
  890. data/vendor/local/share/gtk-doc/html/glib/glib-Type-Conversion-Macros.html +0 -263
  891. data/vendor/local/share/gtk-doc/html/glib/glib-URI-Functions.html +0 -400
  892. data/vendor/local/share/gtk-doc/html/glib/glib-Unicode-Manipulation.html +0 -3448
  893. data/vendor/local/share/gtk-doc/html/glib/glib-Version-Information.html +0 -253
  894. data/vendor/local/share/gtk-doc/html/glib/glib-Warnings-and-Assertions.html +0 -438
  895. data/vendor/local/share/gtk-doc/html/glib/glib-Windows-Compatibility-Functions.html +0 -476
  896. data/vendor/local/share/gtk-doc/html/glib/glib-building.html +0 -466
  897. data/vendor/local/share/gtk-doc/html/glib/glib-changes.html +0 -159
  898. data/vendor/local/share/gtk-doc/html/glib/glib-compiling.html +0 -118
  899. data/vendor/local/share/gtk-doc/html/glib/glib-core.html +0 -64
  900. data/vendor/local/share/gtk-doc/html/glib/glib-cross-compiling.html +0 -160
  901. data/vendor/local/share/gtk-doc/html/glib/glib-data-types.html +0 -120
  902. data/vendor/local/share/gtk-doc/html/glib/glib-fundamentals.html +0 -59
  903. data/vendor/local/share/gtk-doc/html/glib/glib-gettextize.html +0 -93
  904. data/vendor/local/share/gtk-doc/html/glib/glib-regex-syntax.html +0 -2217
  905. data/vendor/local/share/gtk-doc/html/glib/glib-resources.html +0 -121
  906. data/vendor/local/share/gtk-doc/html/glib/glib-running.html +0 -319
  907. data/vendor/local/share/gtk-doc/html/glib/glib-utilities.html +0 -118
  908. data/vendor/local/share/gtk-doc/html/glib/glib.devhelp +0 -2183
  909. data/vendor/local/share/gtk-doc/html/glib/glib.devhelp2 +0 -2671
  910. data/vendor/local/share/gtk-doc/html/glib/glib.html +0 -80
  911. data/vendor/local/share/gtk-doc/html/glib/gtester-report.html +0 -72
  912. data/vendor/local/share/gtk-doc/html/glib/gtester.html +0 -131
  913. data/vendor/local/share/gtk-doc/html/glib/gvariant-format-strings.html +0 -1288
  914. data/vendor/local/share/gtk-doc/html/glib/home.png +0 -0
  915. data/vendor/local/share/gtk-doc/html/glib/index.html +0 -344
  916. data/vendor/local/share/gtk-doc/html/glib/index.sgml +0 -2846
  917. data/vendor/local/share/gtk-doc/html/glib/left.png +0 -0
  918. data/vendor/local/share/gtk-doc/html/glib/mainloop-states.gif +0 -0
  919. data/vendor/local/share/gtk-doc/html/glib/right.png +0 -0
  920. data/vendor/local/share/gtk-doc/html/glib/style.css +0 -265
  921. data/vendor/local/share/gtk-doc/html/glib/tools.html +0 -41
  922. data/vendor/local/share/gtk-doc/html/glib/up.png +0 -0
  923. data/vendor/local/share/gtk-doc/html/gobject/GBinding.html +0 -803
  924. data/vendor/local/share/gtk-doc/html/gobject/GTypeModule.html +0 -710
  925. data/vendor/local/share/gtk-doc/html/gobject/GTypePlugin.html +0 -453
  926. data/vendor/local/share/gtk-doc/html/gobject/annotation-glossary.html +0 -47
  927. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-10.html +0 -85
  928. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-12.html +0 -55
  929. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-14.html +0 -51
  930. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-18.html +0 -46
  931. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-2.html +0 -38
  932. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-22.html +0 -46
  933. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-24.html +0 -73
  934. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-26.html +0 -201
  935. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-4.html +0 -178
  936. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-6.html +0 -42
  937. data/vendor/local/share/gtk-doc/html/gobject/api-index-2-8.html +0 -42
  938. data/vendor/local/share/gtk-doc/html/gobject/api-index-deprecated.html +0 -50
  939. data/vendor/local/share/gtk-doc/html/gobject/api-index-full.html +0 -2721
  940. data/vendor/local/share/gtk-doc/html/gobject/ch01s02.html +0 -136
  941. data/vendor/local/share/gtk-doc/html/gobject/ch06s03.html +0 -113
  942. data/vendor/local/share/gtk-doc/html/gobject/chapter-gobject.html +0 -293
  943. data/vendor/local/share/gtk-doc/html/gobject/chapter-gtype.html +0 -263
  944. data/vendor/local/share/gtk-doc/html/gobject/chapter-intro.html +0 -92
  945. data/vendor/local/share/gtk-doc/html/gobject/chapter-signal.html +0 -214
  946. data/vendor/local/share/gtk-doc/html/gobject/glib-genmarshal.html +0 -361
  947. data/vendor/local/share/gtk-doc/html/gobject/glib-mkenums.html +0 -307
  948. data/vendor/local/share/gtk-doc/html/gobject/glue.png +0 -0
  949. data/vendor/local/share/gtk-doc/html/gobject/gobject-Boxed-Types.html +0 -417
  950. data/vendor/local/share/gtk-doc/html/gobject/gobject-Closures.html +0 -2412
  951. data/vendor/local/share/gtk-doc/html/gobject/gobject-Enumeration-and-Flag-Types.html +0 -847
  952. data/vendor/local/share/gtk-doc/html/gobject/gobject-GParamSpec.html +0 -1433
  953. data/vendor/local/share/gtk-doc/html/gobject/gobject-Generic-values.html +0 -776
  954. data/vendor/local/share/gtk-doc/html/gobject/gobject-Signals.html +0 -2741
  955. data/vendor/local/share/gtk-doc/html/gobject/gobject-Standard-Parameter-and-Value-Types.html +0 -5555
  956. data/vendor/local/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html +0 -2875
  957. data/vendor/local/share/gtk-doc/html/gobject/gobject-Type-Information.html +0 -4460
  958. data/vendor/local/share/gtk-doc/html/gobject/gobject-Value-arrays.html +0 -416
  959. data/vendor/local/share/gtk-doc/html/gobject/gobject-Varargs-Value-Collection.html +0 -260
  960. data/vendor/local/share/gtk-doc/html/gobject/gobject-memory.html +0 -234
  961. data/vendor/local/share/gtk-doc/html/gobject/gobject-properties.html +0 -270
  962. data/vendor/local/share/gtk-doc/html/gobject/gobject-query.html +0 -117
  963. data/vendor/local/share/gtk-doc/html/gobject/gobject.devhelp +0 -762
  964. data/vendor/local/share/gtk-doc/html/gobject/gobject.devhelp2 +0 -801
  965. data/vendor/local/share/gtk-doc/html/gobject/gtype-conventions.html +0 -143
  966. data/vendor/local/share/gtk-doc/html/gobject/gtype-instantiable-classed.html +0 -287
  967. data/vendor/local/share/gtk-doc/html/gobject/gtype-non-instantiable-classed.html +0 -316
  968. data/vendor/local/share/gtk-doc/html/gobject/gtype-non-instantiable.html +0 -76
  969. data/vendor/local/share/gtk-doc/html/gobject/home.png +0 -0
  970. data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-chainup.html +0 -100
  971. data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-code.html +0 -86
  972. data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-construction.html +0 -113
  973. data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-destruction.html +0 -122
  974. data/vendor/local/share/gtk-doc/html/gobject/howto-gobject-methods.html +0 -257
  975. data/vendor/local/share/gtk-doc/html/gobject/howto-gobject.html +0 -283
  976. data/vendor/local/share/gtk-doc/html/gobject/howto-interface-implement.html +0 -125
  977. data/vendor/local/share/gtk-doc/html/gobject/howto-interface-properties.html +0 -167
  978. data/vendor/local/share/gtk-doc/html/gobject/howto-interface.html +0 -160
  979. data/vendor/local/share/gtk-doc/html/gobject/howto-signals.html +0 -121
  980. data/vendor/local/share/gtk-doc/html/gobject/index.html +0 -192
  981. data/vendor/local/share/gtk-doc/html/gobject/index.sgml +0 -786
  982. data/vendor/local/share/gtk-doc/html/gobject/left.png +0 -0
  983. data/vendor/local/share/gtk-doc/html/gobject/pr01.html +0 -72
  984. data/vendor/local/share/gtk-doc/html/gobject/pt01.html +0 -80
  985. data/vendor/local/share/gtk-doc/html/gobject/pt02.html +0 -66
  986. data/vendor/local/share/gtk-doc/html/gobject/pt03.html +0 -55
  987. data/vendor/local/share/gtk-doc/html/gobject/right.png +0 -0
  988. data/vendor/local/share/gtk-doc/html/gobject/rn01.html +0 -85
  989. data/vendor/local/share/gtk-doc/html/gobject/rn02.html +0 -47
  990. data/vendor/local/share/gtk-doc/html/gobject/signal.html +0 -377
  991. data/vendor/local/share/gtk-doc/html/gobject/style.css +0 -265
  992. data/vendor/local/share/gtk-doc/html/gobject/tools-ginspector.html +0 -35
  993. data/vendor/local/share/gtk-doc/html/gobject/tools-gob.html +0 -40
  994. data/vendor/local/share/gtk-doc/html/gobject/tools-gtkdoc.html +0 -63
  995. data/vendor/local/share/gtk-doc/html/gobject/tools-refdb.html +0 -55
  996. data/vendor/local/share/gtk-doc/html/gobject/tools-vala.html +0 -43
  997. data/vendor/local/share/gtk-doc/html/gobject/up.png +0 -0
  998. data/vendor/local/share/locale/af/LC_MESSAGES/glib20.mo +0 -0
  999. data/vendor/local/share/locale/am/LC_MESSAGES/glib20.mo +0 -0
  1000. data/vendor/local/share/locale/ar/LC_MESSAGES/glib20.mo +0 -0
  1001. data/vendor/local/share/locale/as/LC_MESSAGES/glib20.mo +0 -0
  1002. data/vendor/local/share/locale/ast/LC_MESSAGES/glib20.mo +0 -0
  1003. data/vendor/local/share/locale/az/LC_MESSAGES/glib20.mo +0 -0
  1004. data/vendor/local/share/locale/be/LC_MESSAGES/gettext-runtime.mo +0 -0
  1005. data/vendor/local/share/locale/be/LC_MESSAGES/glib20.mo +0 -0
  1006. data/vendor/local/share/locale/be@latin/LC_MESSAGES/glib20.mo +0 -0
  1007. data/vendor/local/share/locale/bg/LC_MESSAGES/gettext-runtime.mo +0 -0
  1008. data/vendor/local/share/locale/bg/LC_MESSAGES/glib20.mo +0 -0
  1009. data/vendor/local/share/locale/bn/LC_MESSAGES/glib20.mo +0 -0
  1010. data/vendor/local/share/locale/bn_IN/LC_MESSAGES/glib20.mo +0 -0
  1011. data/vendor/local/share/locale/bs/LC_MESSAGES/glib20.mo +0 -0
  1012. data/vendor/local/share/locale/ca/LC_MESSAGES/gettext-runtime.mo +0 -0
  1013. data/vendor/local/share/locale/ca/LC_MESSAGES/glib20.mo +0 -0
  1014. data/vendor/local/share/locale/ca@valencia/LC_MESSAGES/glib20.mo +0 -0
  1015. data/vendor/local/share/locale/cs/LC_MESSAGES/gettext-runtime.mo +0 -0
  1016. data/vendor/local/share/locale/cs/LC_MESSAGES/glib20.mo +0 -0
  1017. data/vendor/local/share/locale/cy/LC_MESSAGES/glib20.mo +0 -0
  1018. data/vendor/local/share/locale/da/LC_MESSAGES/gettext-runtime.mo +0 -0
  1019. data/vendor/local/share/locale/da/LC_MESSAGES/glib20.mo +0 -0
  1020. data/vendor/local/share/locale/de/LC_MESSAGES/gettext-runtime.mo +0 -0
  1021. data/vendor/local/share/locale/de/LC_MESSAGES/glib20.mo +0 -0
  1022. data/vendor/local/share/locale/dz/LC_MESSAGES/glib20.mo +0 -0
  1023. data/vendor/local/share/locale/el/LC_MESSAGES/gettext-runtime.mo +0 -0
  1024. data/vendor/local/share/locale/el/LC_MESSAGES/glib20.mo +0 -0
  1025. data/vendor/local/share/locale/en@boldquot/LC_MESSAGES/gettext-runtime.mo +0 -0
  1026. data/vendor/local/share/locale/en@quot/LC_MESSAGES/gettext-runtime.mo +0 -0
  1027. data/vendor/local/share/locale/en@shaw/LC_MESSAGES/glib20.mo +0 -0
  1028. data/vendor/local/share/locale/en_CA/LC_MESSAGES/glib20.mo +0 -0
  1029. data/vendor/local/share/locale/en_GB/LC_MESSAGES/glib20.mo +0 -0
  1030. data/vendor/local/share/locale/eo/LC_MESSAGES/gettext-runtime.mo +0 -0
  1031. data/vendor/local/share/locale/eo/LC_MESSAGES/glib20.mo +0 -0
  1032. data/vendor/local/share/locale/es/LC_MESSAGES/gettext-runtime.mo +0 -0
  1033. data/vendor/local/share/locale/es/LC_MESSAGES/glib20.mo +0 -0
  1034. data/vendor/local/share/locale/et/LC_MESSAGES/gettext-runtime.mo +0 -0
  1035. data/vendor/local/share/locale/et/LC_MESSAGES/glib20.mo +0 -0
  1036. data/vendor/local/share/locale/eu/LC_MESSAGES/glib20.mo +0 -0
  1037. data/vendor/local/share/locale/fa/LC_MESSAGES/glib20.mo +0 -0
  1038. data/vendor/local/share/locale/fi/LC_MESSAGES/gettext-runtime.mo +0 -0
  1039. data/vendor/local/share/locale/fi/LC_MESSAGES/glib20.mo +0 -0
  1040. data/vendor/local/share/locale/fr/LC_MESSAGES/gettext-runtime.mo +0 -0
  1041. data/vendor/local/share/locale/fr/LC_MESSAGES/glib20.mo +0 -0
  1042. data/vendor/local/share/locale/ga/LC_MESSAGES/gettext-runtime.mo +0 -0
  1043. data/vendor/local/share/locale/ga/LC_MESSAGES/glib20.mo +0 -0
  1044. data/vendor/local/share/locale/gl/LC_MESSAGES/gettext-runtime.mo +0 -0
  1045. data/vendor/local/share/locale/gl/LC_MESSAGES/glib20.mo +0 -0
  1046. data/vendor/local/share/locale/gu/LC_MESSAGES/glib20.mo +0 -0
  1047. data/vendor/local/share/locale/he/LC_MESSAGES/glib20.mo +0 -0
  1048. data/vendor/local/share/locale/hi/LC_MESSAGES/glib20.mo +0 -0
  1049. data/vendor/local/share/locale/hr/LC_MESSAGES/glib20.mo +0 -0
  1050. data/vendor/local/share/locale/hu/LC_MESSAGES/glib20.mo +0 -0
  1051. data/vendor/local/share/locale/hy/LC_MESSAGES/glib20.mo +0 -0
  1052. data/vendor/local/share/locale/id/LC_MESSAGES/gettext-runtime.mo +0 -0
  1053. data/vendor/local/share/locale/id/LC_MESSAGES/glib20.mo +0 -0
  1054. data/vendor/local/share/locale/is/LC_MESSAGES/glib20.mo +0 -0
  1055. data/vendor/local/share/locale/it/LC_MESSAGES/gettext-runtime.mo +0 -0
  1056. data/vendor/local/share/locale/it/LC_MESSAGES/glib20.mo +0 -0
  1057. data/vendor/local/share/locale/ja/LC_MESSAGES/gettext-runtime.mo +0 -0
  1058. data/vendor/local/share/locale/ja/LC_MESSAGES/glib20.mo +0 -0
  1059. data/vendor/local/share/locale/ka/LC_MESSAGES/glib20.mo +0 -0
  1060. data/vendor/local/share/locale/kk/LC_MESSAGES/glib20.mo +0 -0
  1061. data/vendor/local/share/locale/kn/LC_MESSAGES/glib20.mo +0 -0
  1062. data/vendor/local/share/locale/ko/LC_MESSAGES/gettext-runtime.mo +0 -0
  1063. data/vendor/local/share/locale/ko/LC_MESSAGES/glib20.mo +0 -0
  1064. data/vendor/local/share/locale/ku/LC_MESSAGES/glib20.mo +0 -0
  1065. data/vendor/local/share/locale/locale.alias +0 -77
  1066. data/vendor/local/share/locale/lt/LC_MESSAGES/glib20.mo +0 -0
  1067. data/vendor/local/share/locale/lv/LC_MESSAGES/glib20.mo +0 -0
  1068. data/vendor/local/share/locale/mai/LC_MESSAGES/glib20.mo +0 -0
  1069. data/vendor/local/share/locale/mg/LC_MESSAGES/glib20.mo +0 -0
  1070. data/vendor/local/share/locale/mk/LC_MESSAGES/glib20.mo +0 -0
  1071. data/vendor/local/share/locale/ml/LC_MESSAGES/glib20.mo +0 -0
  1072. data/vendor/local/share/locale/mn/LC_MESSAGES/glib20.mo +0 -0
  1073. data/vendor/local/share/locale/mr/LC_MESSAGES/glib20.mo +0 -0
  1074. data/vendor/local/share/locale/ms/LC_MESSAGES/glib20.mo +0 -0
  1075. data/vendor/local/share/locale/nb/LC_MESSAGES/gettext-runtime.mo +0 -0
  1076. data/vendor/local/share/locale/nb/LC_MESSAGES/glib20.mo +0 -0
  1077. data/vendor/local/share/locale/nds/LC_MESSAGES/glib20.mo +0 -0
  1078. data/vendor/local/share/locale/ne/LC_MESSAGES/glib20.mo +0 -0
  1079. data/vendor/local/share/locale/nl/LC_MESSAGES/gettext-runtime.mo +0 -0
  1080. data/vendor/local/share/locale/nl/LC_MESSAGES/glib20.mo +0 -0
  1081. data/vendor/local/share/locale/nn/LC_MESSAGES/gettext-runtime.mo +0 -0
  1082. data/vendor/local/share/locale/nn/LC_MESSAGES/glib20.mo +0 -0
  1083. data/vendor/local/share/locale/oc/LC_MESSAGES/glib20.mo +0 -0
  1084. data/vendor/local/share/locale/or/LC_MESSAGES/glib20.mo +0 -0
  1085. data/vendor/local/share/locale/pa/LC_MESSAGES/glib20.mo +0 -0
  1086. data/vendor/local/share/locale/pl/LC_MESSAGES/gettext-runtime.mo +0 -0
  1087. data/vendor/local/share/locale/pl/LC_MESSAGES/glib20.mo +0 -0
  1088. data/vendor/local/share/locale/ps/LC_MESSAGES/glib20.mo +0 -0
  1089. data/vendor/local/share/locale/pt/LC_MESSAGES/gettext-runtime.mo +0 -0
  1090. data/vendor/local/share/locale/pt/LC_MESSAGES/glib20.mo +0 -0
  1091. data/vendor/local/share/locale/pt_BR/LC_MESSAGES/gettext-runtime.mo +0 -0
  1092. data/vendor/local/share/locale/pt_BR/LC_MESSAGES/glib20.mo +0 -0
  1093. data/vendor/local/share/locale/ro/LC_MESSAGES/gettext-runtime.mo +0 -0
  1094. data/vendor/local/share/locale/ro/LC_MESSAGES/glib20.mo +0 -0
  1095. data/vendor/local/share/locale/ru/LC_MESSAGES/gettext-runtime.mo +0 -0
  1096. data/vendor/local/share/locale/ru/LC_MESSAGES/glib20.mo +0 -0
  1097. data/vendor/local/share/locale/rw/LC_MESSAGES/glib20.mo +0 -0
  1098. data/vendor/local/share/locale/si/LC_MESSAGES/glib20.mo +0 -0
  1099. data/vendor/local/share/locale/sk/LC_MESSAGES/gettext-runtime.mo +0 -0
  1100. data/vendor/local/share/locale/sk/LC_MESSAGES/glib20.mo +0 -0
  1101. data/vendor/local/share/locale/sl/LC_MESSAGES/gettext-runtime.mo +0 -0
  1102. data/vendor/local/share/locale/sl/LC_MESSAGES/glib20.mo +0 -0
  1103. data/vendor/local/share/locale/sq/LC_MESSAGES/glib20.mo +0 -0
  1104. data/vendor/local/share/locale/sr/LC_MESSAGES/gettext-runtime.mo +0 -0
  1105. data/vendor/local/share/locale/sr/LC_MESSAGES/glib20.mo +0 -0
  1106. data/vendor/local/share/locale/sr@ije/LC_MESSAGES/glib20.mo +0 -0
  1107. data/vendor/local/share/locale/sr@latin/LC_MESSAGES/glib20.mo +0 -0
  1108. data/vendor/local/share/locale/sv/LC_MESSAGES/gettext-runtime.mo +0 -0
  1109. data/vendor/local/share/locale/sv/LC_MESSAGES/glib20.mo +0 -0
  1110. data/vendor/local/share/locale/ta/LC_MESSAGES/glib20.mo +0 -0
  1111. data/vendor/local/share/locale/te/LC_MESSAGES/glib20.mo +0 -0
  1112. data/vendor/local/share/locale/th/LC_MESSAGES/glib20.mo +0 -0
  1113. data/vendor/local/share/locale/tl/LC_MESSAGES/glib20.mo +0 -0
  1114. data/vendor/local/share/locale/tr/LC_MESSAGES/gettext-runtime.mo +0 -0
  1115. data/vendor/local/share/locale/tr/LC_MESSAGES/glib20.mo +0 -0
  1116. data/vendor/local/share/locale/tt/LC_MESSAGES/glib20.mo +0 -0
  1117. data/vendor/local/share/locale/uk/LC_MESSAGES/gettext-runtime.mo +0 -0
  1118. data/vendor/local/share/locale/uk/LC_MESSAGES/glib20.mo +0 -0
  1119. data/vendor/local/share/locale/vi/LC_MESSAGES/gettext-runtime.mo +0 -0
  1120. data/vendor/local/share/locale/vi/LC_MESSAGES/glib20.mo +0 -0
  1121. data/vendor/local/share/locale/wa/LC_MESSAGES/glib20.mo +0 -0
  1122. data/vendor/local/share/locale/xh/LC_MESSAGES/glib20.mo +0 -0
  1123. data/vendor/local/share/locale/yi/LC_MESSAGES/glib20.mo +0 -0
  1124. data/vendor/local/share/locale/zh_CN/LC_MESSAGES/gettext-runtime.mo +0 -0
  1125. data/vendor/local/share/locale/zh_CN/LC_MESSAGES/glib20.mo +0 -0
  1126. data/vendor/local/share/locale/zh_HK/LC_MESSAGES/gettext-runtime.mo +0 -0
  1127. data/vendor/local/share/locale/zh_HK/LC_MESSAGES/glib20.mo +0 -0
  1128. data/vendor/local/share/locale/zh_TW/LC_MESSAGES/gettext-runtime.mo +0 -0
  1129. data/vendor/local/share/locale/zh_TW/LC_MESSAGES/glib20.mo +0 -0
  1130. data/vendor/local/share/man/man1/envsubst.1 +0 -54
  1131. data/vendor/local/share/man/man1/fc-cache.1 +0 -70
  1132. data/vendor/local/share/man/man1/fc-cat.1 +0 -44
  1133. data/vendor/local/share/man/man1/fc-list.1 +0 -72
  1134. data/vendor/local/share/man/man1/fc-match.1 +0 -73
  1135. data/vendor/local/share/man/man1/fc-query.1 +0 -57
  1136. data/vendor/local/share/man/man1/fc-scan.1 +0 -52
  1137. data/vendor/local/share/man/man1/gettext.1 +0 -69
  1138. data/vendor/local/share/man/man1/glib-genmarshal.1 +0 -312
  1139. data/vendor/local/share/man/man1/glib-mkenums.1 +0 -246
  1140. data/vendor/local/share/man/man1/gobject-query.1 +0 -83
  1141. data/vendor/local/share/man/man1/ngettext.1 +0 -68
  1142. data/vendor/local/share/man/man3/FcAtomicCreate.3 +0 -19
  1143. data/vendor/local/share/man/man3/FcAtomicDeleteNew.3 +0 -16
  1144. data/vendor/local/share/man/man3/FcAtomicDestroy.3 +0 -16
  1145. data/vendor/local/share/man/man3/FcAtomicLock.3 +0 -18
  1146. data/vendor/local/share/man/man3/FcAtomicNewFile.3 +0 -17
  1147. data/vendor/local/share/man/man3/FcAtomicOrigFile.3 +0 -16
  1148. data/vendor/local/share/man/man3/FcAtomicReplaceOrig.3 +0 -18
  1149. data/vendor/local/share/man/man3/FcAtomicUnlock.3 +0 -16
  1150. data/vendor/local/share/man/man3/FcBlanksAdd.3 +0 -18
  1151. data/vendor/local/share/man/man3/FcBlanksCreate.3 +0 -16
  1152. data/vendor/local/share/man/man3/FcBlanksDestroy.3 +0 -16
  1153. data/vendor/local/share/man/man3/FcBlanksIsMember.3 +0 -18
  1154. data/vendor/local/share/man/man3/FcCacheCopySet.3 +0 -18
  1155. data/vendor/local/share/man/man3/FcCacheDir.3 +0 -16
  1156. data/vendor/local/share/man/man3/FcCacheNumFont.3 +0 -17
  1157. data/vendor/local/share/man/man3/FcCacheNumSubdir.3 +0 -16
  1158. data/vendor/local/share/man/man3/FcCacheSubdir.3 +0 -20
  1159. data/vendor/local/share/man/man3/FcCharSetAddChar.3 +0 -19
  1160. data/vendor/local/share/man/man3/FcCharSetCopy.3 +0 -17
  1161. data/vendor/local/share/man/man3/FcCharSetCount.3 +0 -16
  1162. data/vendor/local/share/man/man3/FcCharSetCoverage.3 +0 -23
  1163. data/vendor/local/share/man/man3/FcCharSetCreate.3 +0 -17
  1164. data/vendor/local/share/man/man3/FcCharSetDestroy.3 +0 -18
  1165. data/vendor/local/share/man/man3/FcCharSetEqual.3 +0 -18
  1166. data/vendor/local/share/man/man3/FcCharSetFirstPage.3 +0 -20
  1167. data/vendor/local/share/man/man3/FcCharSetHasChar.3 +0 -17
  1168. data/vendor/local/share/man/man3/FcCharSetIntersect.3 +0 -18
  1169. data/vendor/local/share/man/man3/FcCharSetIntersectCount.3 +0 -17
  1170. data/vendor/local/share/man/man3/FcCharSetIsSubset.3 +0 -17
  1171. data/vendor/local/share/man/man3/FcCharSetMerge.3 +0 -23
  1172. data/vendor/local/share/man/man3/FcCharSetNew.3 +0 -16
  1173. data/vendor/local/share/man/man3/FcCharSetNextPage.3 +0 -20
  1174. data/vendor/local/share/man/man3/FcCharSetSubtract.3 +0 -17
  1175. data/vendor/local/share/man/man3/FcCharSetSubtractCount.3 +0 -17
  1176. data/vendor/local/share/man/man3/FcCharSetUnion.3 +0 -17
  1177. data/vendor/local/share/man/man3/FcConfigAppFontAddDir.3 +0 -20
  1178. data/vendor/local/share/man/man3/FcConfigAppFontAddFile.3 +0 -19
  1179. data/vendor/local/share/man/man3/FcConfigAppFontClear.3 +0 -17
  1180. data/vendor/local/share/man/man3/FcConfigBuildFonts.3 +0 -19
  1181. data/vendor/local/share/man/man3/FcConfigCreate.3 +0 -16
  1182. data/vendor/local/share/man/man3/FcConfigDestroy.3 +0 -19
  1183. data/vendor/local/share/man/man3/FcConfigEnableHome.3 +0 -20
  1184. data/vendor/local/share/man/man3/FcConfigFilename.3 +0 -26
  1185. data/vendor/local/share/man/man3/FcConfigGetBlanks.3 +0 -20
  1186. data/vendor/local/share/man/man3/FcConfigGetCache.3 +0 -17
  1187. data/vendor/local/share/man/man3/FcConfigGetCacheDirs.3 +0 -19
  1188. data/vendor/local/share/man/man3/FcConfigGetConfigDirs.3 +0 -18
  1189. data/vendor/local/share/man/man3/FcConfigGetConfigFiles.3 +0 -17
  1190. data/vendor/local/share/man/man3/FcConfigGetCurrent.3 +0 -16
  1191. data/vendor/local/share/man/man3/FcConfigGetFontDirs.3 +0 -19
  1192. data/vendor/local/share/man/man3/FcConfigGetFonts.3 +0 -20
  1193. data/vendor/local/share/man/man3/FcConfigGetRescanInterval.3 +0 -20
  1194. data/vendor/local/share/man/man3/FcConfigHome.3 +0 -18
  1195. data/vendor/local/share/man/man3/FcConfigParseAndLoad.3 +0 -23
  1196. data/vendor/local/share/man/man3/FcConfigReference.3 +0 -21
  1197. data/vendor/local/share/man/man3/FcConfigSetCurrent.3 +0 -17
  1198. data/vendor/local/share/man/man3/FcConfigSetRescanInterval.3 +0 -20
  1199. data/vendor/local/share/man/man3/FcConfigSubstitute.3 +0 -20
  1200. data/vendor/local/share/man/man3/FcConfigSubstituteWithPat.3 +0 -24
  1201. data/vendor/local/share/man/man3/FcConfigUptoDate.3 +0 -18
  1202. data/vendor/local/share/man/man3/FcDefaultSubstitute.3 +0 -27
  1203. data/vendor/local/share/man/man3/FcDirCacheLoad.3 +0 -21
  1204. data/vendor/local/share/man/man3/FcDirCacheLoadFile.3 +0 -19
  1205. data/vendor/local/share/man/man3/FcDirCacheRead.3 +0 -21
  1206. data/vendor/local/share/man/man3/FcDirCacheUnlink.3 +0 -20
  1207. data/vendor/local/share/man/man3/FcDirCacheUnload.3 +0 -17
  1208. data/vendor/local/share/man/man3/FcDirCacheValid.3 +0 -17
  1209. data/vendor/local/share/man/man3/FcDirSave.3 +0 -22
  1210. data/vendor/local/share/man/man3/FcDirScan.3 +0 -26
  1211. data/vendor/local/share/man/man3/FcFileIsDir.3 +0 -17
  1212. data/vendor/local/share/man/man3/FcFileScan.3 +0 -31
  1213. data/vendor/local/share/man/man3/FcFini.3 +0 -19
  1214. data/vendor/local/share/man/man3/FcFontList.3 +0 -21
  1215. data/vendor/local/share/man/man3/FcFontMatch.3 +0 -25
  1216. data/vendor/local/share/man/man3/FcFontRenderPrepare.3 +0 -21
  1217. data/vendor/local/share/man/man3/FcFontSetAdd.3 +0 -19
  1218. data/vendor/local/share/man/man3/FcFontSetCreate.3 +0 -16
  1219. data/vendor/local/share/man/man3/FcFontSetDestroy.3 +0 -17
  1220. data/vendor/local/share/man/man3/FcFontSetList.3 +0 -25
  1221. data/vendor/local/share/man/man3/FcFontSetMatch.3 +0 -28
  1222. data/vendor/local/share/man/man3/FcFontSetPrint.3 +0 -19
  1223. data/vendor/local/share/man/man3/FcFontSetSort.3 +0 -39
  1224. data/vendor/local/share/man/man3/FcFontSetSortDestroy.3 +0 -19
  1225. data/vendor/local/share/man/man3/FcFontSort.3 +0 -33
  1226. data/vendor/local/share/man/man3/FcFreeTypeCharIndex.3 +0 -22
  1227. data/vendor/local/share/man/man3/FcFreeTypeCharSet.3 +0 -21
  1228. data/vendor/local/share/man/man3/FcFreeTypeCharSetAndSpacing.3 +0 -28
  1229. data/vendor/local/share/man/man3/FcFreeTypeQuery.3 +0 -21
  1230. data/vendor/local/share/man/man3/FcFreeTypeQueryFace.3 +0 -21
  1231. data/vendor/local/share/man/man3/FcGetLangs.3 +0 -16
  1232. data/vendor/local/share/man/man3/FcGetVersion.3 +0 -16
  1233. data/vendor/local/share/man/man3/FcInit.3 +0 -19
  1234. data/vendor/local/share/man/man3/FcInitBringUptoDate.3 +0 -19
  1235. data/vendor/local/share/man/man3/FcInitLoadConfig.3 +0 -17
  1236. data/vendor/local/share/man/man3/FcInitLoadConfigAndFonts.3 +0 -17
  1237. data/vendor/local/share/man/man3/FcInitReinitialize.3 +0 -19
  1238. data/vendor/local/share/man/man3/FcIsLower.3 +0 -17
  1239. data/vendor/local/share/man/man3/FcIsUpper.3 +0 -17
  1240. data/vendor/local/share/man/man3/FcLangGetCharSet.3 +0 -16
  1241. data/vendor/local/share/man/man3/FcLangSetAdd.3 +0 -20
  1242. data/vendor/local/share/man/man3/FcLangSetCompare.3 +0 -22
  1243. data/vendor/local/share/man/man3/FcLangSetContains.3 +0 -22
  1244. data/vendor/local/share/man/man3/FcLangSetCopy.3 +0 -17
  1245. data/vendor/local/share/man/man3/FcLangSetCreate.3 +0 -16
  1246. data/vendor/local/share/man/man3/FcLangSetDestroy.3 +0 -17
  1247. data/vendor/local/share/man/man3/FcLangSetEqual.3 +0 -18
  1248. data/vendor/local/share/man/man3/FcLangSetGetLangs.3 +0 -16
  1249. data/vendor/local/share/man/man3/FcLangSetHasLang.3 +0 -23
  1250. data/vendor/local/share/man/man3/FcLangSetHash.3 +0 -20
  1251. data/vendor/local/share/man/man3/FcMatrixCopy.3 +0 -17
  1252. data/vendor/local/share/man/man3/FcMatrixEqual.3 +0 -19
  1253. data/vendor/local/share/man/man3/FcMatrixInit.3 +0 -17
  1254. data/vendor/local/share/man/man3/FcMatrixMultiply.3 +0 -20
  1255. data/vendor/local/share/man/man3/FcMatrixRotate.3 +0 -27
  1256. data/vendor/local/share/man/man3/FcMatrixScale.3 +0 -27
  1257. data/vendor/local/share/man/man3/FcMatrixShear.3 +0 -27
  1258. data/vendor/local/share/man/man3/FcNameConstant.3 +0 -18
  1259. data/vendor/local/share/man/man3/FcNameGetConstant.3 +0 -16
  1260. data/vendor/local/share/man/man3/FcNameGetObjectType.3 +0 -16
  1261. data/vendor/local/share/man/man3/FcNameParse.3 +0 -16
  1262. data/vendor/local/share/man/man3/FcNameRegisterConstants.3 +0 -19
  1263. data/vendor/local/share/man/man3/FcNameRegisterObjectTypes.3 +0 -19
  1264. data/vendor/local/share/man/man3/FcNameUnparse.3 +0 -18
  1265. data/vendor/local/share/man/man3/FcNameUnregisterConstants.3 +0 -19
  1266. data/vendor/local/share/man/man3/FcNameUnregisterObjectTypes.3 +0 -17
  1267. data/vendor/local/share/man/man3/FcObjectSetAdd.3 +0 -18
  1268. data/vendor/local/share/man/man3/FcObjectSetBuild.3 +0 -26
  1269. data/vendor/local/share/man/man3/FcObjectSetCreate.3 +0 -16
  1270. data/vendor/local/share/man/man3/FcObjectSetDestroy.3 +0 -16
  1271. data/vendor/local/share/man/man3/FcPatternAdd-Type.3 +0 -49
  1272. data/vendor/local/share/man/man3/FcPatternAdd.3 +0 -23
  1273. data/vendor/local/share/man/man3/FcPatternAddWeak.3 +0 -20
  1274. data/vendor/local/share/man/man3/FcPatternBuild.3 +0 -50
  1275. data/vendor/local/share/man/man3/FcPatternCreate.3 +0 -16
  1276. data/vendor/local/share/man/man3/FcPatternDel.3 +0 -18
  1277. data/vendor/local/share/man/man3/FcPatternDestroy.3 +0 -17
  1278. data/vendor/local/share/man/man3/FcPatternDuplicate.3 +0 -18
  1279. data/vendor/local/share/man/man3/FcPatternEqual.3 +0 -17
  1280. data/vendor/local/share/man/man3/FcPatternEqualSubset.3 +0 -19
  1281. data/vendor/local/share/man/man3/FcPatternFilter.3 +0 -20
  1282. data/vendor/local/share/man/man3/FcPatternFormat.3 +0 -205
  1283. data/vendor/local/share/man/man3/FcPatternGet-Type.3 +0 -56
  1284. data/vendor/local/share/man/man3/FcPatternGet.3 +0 -22
  1285. data/vendor/local/share/man/man3/FcPatternHash.3 +0 -17
  1286. data/vendor/local/share/man/man3/FcPatternPrint.3 +0 -18
  1287. data/vendor/local/share/man/man3/FcPatternReference.3 +0 -17
  1288. data/vendor/local/share/man/man3/FcPatternRemove.3 +0 -19
  1289. data/vendor/local/share/man/man3/FcStrBasename.3 +0 -18
  1290. data/vendor/local/share/man/man3/FcStrCmp.3 +0 -18
  1291. data/vendor/local/share/man/man3/FcStrCmpIgnoreCase.3 +0 -19
  1292. data/vendor/local/share/man/man3/FcStrCopy.3 +0 -18
  1293. data/vendor/local/share/man/man3/FcStrCopyFilename.3 +0 -23
  1294. data/vendor/local/share/man/man3/FcStrDirname.3 +0 -18
  1295. data/vendor/local/share/man/man3/FcStrDowncase.3 +0 -17
  1296. data/vendor/local/share/man/man3/FcStrFree.3 +0 -17
  1297. data/vendor/local/share/man/man3/FcStrListCreate.3 +0 -16
  1298. data/vendor/local/share/man/man3/FcStrListDone.3 +0 -16
  1299. data/vendor/local/share/man/man3/FcStrListNext.3 +0 -16
  1300. data/vendor/local/share/man/man3/FcStrPlus.3 +0 -19
  1301. data/vendor/local/share/man/man3/FcStrSetAdd.3 +0 -17
  1302. data/vendor/local/share/man/man3/FcStrSetAddFilename.3 +0 -19
  1303. data/vendor/local/share/man/man3/FcStrSetCreate.3 +0 -16
  1304. data/vendor/local/share/man/man3/FcStrSetDel.3 +0 -18
  1305. data/vendor/local/share/man/man3/FcStrSetDestroy.3 +0 -16
  1306. data/vendor/local/share/man/man3/FcStrSetEqual.3 +0 -19
  1307. data/vendor/local/share/man/man3/FcStrSetMember.3 +0 -18
  1308. data/vendor/local/share/man/man3/FcStrStr.3 +0 -20
  1309. data/vendor/local/share/man/man3/FcStrStrIgnoreCase.3 +0 -20
  1310. data/vendor/local/share/man/man3/FcToLower.3 +0 -17
  1311. data/vendor/local/share/man/man3/FcUcs4ToUtf8.3 +0 -19
  1312. data/vendor/local/share/man/man3/FcUtf16Len.3 +0 -27
  1313. data/vendor/local/share/man/man3/FcUtf16ToUcs4.3 +0 -23
  1314. data/vendor/local/share/man/man3/FcUtf8Len.3 +0 -24
  1315. data/vendor/local/share/man/man3/FcUtf8ToUcs4.3 +0 -21
  1316. data/vendor/local/share/man/man3/FcValueDestroy.3 +0 -17
  1317. data/vendor/local/share/man/man3/FcValueEqual.3 +0 -19
  1318. data/vendor/local/share/man/man3/FcValuePrint.3 +0 -18
  1319. data/vendor/local/share/man/man3/FcValueSave.3 +0 -17
  1320. data/vendor/local/share/man/man3/bind_textdomain_codeset.3 +0 -72
  1321. data/vendor/local/share/man/man3/bindtextdomain.3 +0 -69
  1322. data/vendor/local/share/man/man3/dcgettext.3 +0 -1
  1323. data/vendor/local/share/man/man3/dcngettext.3 +0 -1
  1324. data/vendor/local/share/man/man3/dgettext.3 +0 -1
  1325. data/vendor/local/share/man/man3/dngettext.3 +0 -1
  1326. data/vendor/local/share/man/man3/gettext.3 +0 -99
  1327. data/vendor/local/share/man/man3/libpng.3 +0 -4455
  1328. data/vendor/local/share/man/man3/libpngpf.3 +0 -808
  1329. data/vendor/local/share/man/man3/ngettext.3 +0 -60
  1330. data/vendor/local/share/man/man3/textdomain.3 +0 -57
  1331. data/vendor/local/share/man/man5/fonts-conf.5 +0 -644
  1332. data/vendor/local/share/man/man5/png.5 +0 -74
  1333. data/vendor/local/src/tml/packaging/cairo_1.10.0-2_win32.log +0 -1263
  1334. data/vendor/local/src/tml/packaging/cairo_1.10.0-2_win32.sh +0 -84
  1335. data/vendor/local/src/tml/packaging/expat_2.0.1-1_win32.log +0 -188
  1336. data/vendor/local/src/tml/packaging/expat_2.0.1-1_win32.sh +0 -68
  1337. data/vendor/local/src/tml/packaging/fontconfig_2.8.0-2_win32.log +0 -999
  1338. data/vendor/local/src/tml/packaging/fontconfig_2.8.0-2_win32.sh +0 -79
  1339. data/vendor/local/src/tml/packaging/freetype_2.4.2-1_win32.log +0 -364
  1340. data/vendor/local/src/tml/packaging/freetype_2.4.2-1_win32.sh +0 -93
  1341. data/vendor/local/src/tml/packaging/gettext_0.18.1.1-2_win32.log +0 -10423
  1342. data/vendor/local/src/tml/packaging/gettext_0.18.1.1-2_win32.sh +0 -457
  1343. data/vendor/local/src/tml/packaging/glib_2.26.0-2_win32.log +0 -2867
  1344. data/vendor/local/src/tml/packaging/glib_2.26.0-2_win32.sh +0 -64
  1345. data/vendor/local/src/tml/packaging/libpng_1.4.3-1_win32.log +0 -272
  1346. data/vendor/local/src/tml/packaging/libpng_1.4.3-1_win32.sh +0 -71
  1347. data/vendor/local/src/tml/packaging/zlib_1.2.5-2_win32.log +0 -42
  1348. data/vendor/local/src/tml/packaging/zlib_1.2.5-2_win32.sh +0 -189
@@ -1,4455 +0,0 @@
1
- .TH LIBPNG 3 "June 26, 2010"
2
- .SH NAME
3
- libpng \- Portable Network Graphics (PNG) Reference Library 1.4.3
4
- .SH SYNOPSIS
5
- \fI\fB
6
-
7
- \fB#include <png.h>\fP
8
-
9
- \fI\fB
10
-
11
- \fBpng_uint_32 png_access_version_number \fI(void\fP\fB);\fP
12
-
13
- \fI\fB
14
-
15
- \fBvoid png_benign_error (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fIerror\fP\fB);\fP
16
-
17
- \fI\fB
18
-
19
- \fBvoid png_chunk_benign_error (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fIerror\fP\fB);\fP
20
-
21
- \fI\fB
22
-
23
- \fBvoid png_chunk_error (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fIerror\fP\fB);\fP
24
-
25
- \fI\fB
26
-
27
- \fBvoid png_chunk_warning (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fImessage\fP\fB);\fP
28
-
29
- \fI\fB
30
-
31
- \fBvoid png_convert_from_struct_tm (png_timep \fP\fIptime\fP\fB, struct tm FAR * \fIttime\fP\fB);\fP
32
-
33
- \fI\fB
34
-
35
- \fBvoid png_convert_from_time_t (png_timep \fP\fIptime\fP\fB, time_t \fIttime\fP\fB);\fP
36
-
37
- \fI\fB
38
-
39
- \fBpng_charp png_convert_to_rfc1123 (png_structp \fP\fIpng_ptr\fP\fB, png_timep \fIptime\fP\fB);\fP
40
-
41
- \fI\fB
42
-
43
- \fBpng_infop png_create_info_struct (png_structp \fIpng_ptr\fP\fB);\fP
44
-
45
- \fI\fB
46
-
47
- \fBpng_structp png_create_read_struct (png_const_charp \fP\fIuser_png_ver\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fIwarn_fn\fP\fB);\fP
48
-
49
- \fI\fB
50
-
51
- \fBpng_structp png_create_read_struct_2(png_const_charp \fP\fIuser_png_ver\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fP\fIwarn_fn\fP\fB, png_voidp \fP\fImem_ptr\fP\fB, png_malloc_ptr \fP\fImalloc_fn\fP\fB, png_free_ptr \fIfree_fn\fP\fB);\fP
52
-
53
- \fI\fB
54
-
55
- \fBpng_structp png_create_write_struct (png_const_charp \fP\fIuser_png_ver\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fIwarn_fn\fP\fB);\fP
56
-
57
- \fI\fB
58
-
59
- \fBpng_structp png_create_write_struct_2(png_const_charp \fP\fIuser_png_ver\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fP\fIwarn_fn\fP\fB, png_voidp \fP\fImem_ptr\fP\fB, png_malloc_ptr \fP\fImalloc_fn\fP\fB, png_free_ptr \fIfree_fn\fP\fB);\fP
60
-
61
- \fI\fB
62
-
63
- \fBvoid png_destroy_info_struct (png_structp \fP\fIpng_ptr\fP\fB, png_infopp \fIinfo_ptr_ptr\fP\fB);\fP
64
-
65
- \fI\fB
66
-
67
- \fBvoid png_destroy_read_struct (png_structpp \fP\fIpng_ptr_ptr\fP\fB, png_infopp \fP\fIinfo_ptr_ptr\fP\fB, png_infopp \fIend_info_ptr_ptr\fP\fB);\fP
68
-
69
- \fI\fB
70
-
71
- \fBvoid png_destroy_write_struct (png_structpp \fP\fIpng_ptr_ptr\fP\fB, png_infopp \fIinfo_ptr_ptr\fP\fB);\fP
72
-
73
- \fI\fB
74
-
75
- \fBvoid png_error (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fIerror\fP\fB);\fP
76
-
77
- \fI\fB
78
-
79
- \fBvoid png_free (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fIptr\fP\fB);\fP
80
-
81
- \fI\fB
82
-
83
- \fBvoid png_free_chunk_list (png_structp \fIpng_ptr\fP\fB);\fP
84
-
85
- \fI\fB
86
-
87
- \fBvoid png_free_default(png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fIptr\fP\fB);\fP
88
-
89
- \fI\fB
90
-
91
- \fBvoid png_free_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fInum\fP\fB);\fP
92
-
93
- \fI\fB
94
-
95
- \fBpng_byte png_get_bit_depth (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
96
-
97
- \fI\fB
98
-
99
- \fBpng_uint_32 png_get_bKGD (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_16p \fI*background\fP\fB);\fP
100
-
101
- \fI\fB
102
-
103
- \fBpng_byte png_get_channels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
104
-
105
- \fI\fB
106
-
107
- \fBpng_uint_32 png_get_cHRM (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, double \fP\fI*white_x\fP\fB, double \fP\fI*white_y\fP\fB, double \fP\fI*red_x\fP\fB, double \fP\fI*red_y\fP\fB, double \fP\fI*green_x\fP\fB, double \fP\fI*green_y\fP\fB, double \fP\fI*blue_x\fP\fB, double \fI*blue_y\fP\fB);\fP
108
-
109
- \fI\fB
110
-
111
- \fBpng_uint_32 png_get_cHRM_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fI*white_x\fP\fB, png_uint_32 \fP\fI*white_y\fP\fB, png_uint_32 \fP\fI*red_x\fP\fB, png_uint_32 \fP\fI*red_y\fP\fB, png_uint_32 \fP\fI*green_x\fP\fB, png_uint_32 \fP\fI*green_y\fP\fB, png_uint_32 \fP\fI*blue_x\fP\fB, png_uint_32 \fI*blue_y\fP\fB);\fP
112
-
113
- \fI\fB
114
-
115
- \fBpng_uint_32 png_get_chunk_cache_max (png_structp \fIpng_ptr\fP\fB);\fP
116
-
117
- \fI\fB
118
-
119
- \fBpng_byte png_get_color_type (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
120
-
121
- \fI\fB
122
-
123
- \fBpng_uint_32 png_get_compression_buffer_size (png_structp \fIpng_ptr\fP\fB);\fP
124
-
125
- \fI\fB
126
-
127
- \fBpng_byte png_get_compression_type (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
128
-
129
- \fI\fB
130
-
131
- \fBpng_byte png_get_copyright (png_structp \fIpng_ptr\fP\fB);\fP
132
-
133
- \fI\fB
134
-
135
- \fBpng_voidp png_get_error_ptr (png_structp \fIpng_ptr\fP\fB);\fP
136
-
137
- \fI\fB
138
-
139
- \fBpng_byte png_get_filter_type (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
140
-
141
- \fI\fB
142
-
143
- \fBpng_uint_32 png_get_gAMA (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, double \fI*file_gamma\fP\fB);\fP
144
-
145
- \fI\fB
146
-
147
- \fBpng_uint_32 png_get_gAMA_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fI*int_file_gamma\fP\fB);\fP
148
-
149
- \fI\fB
150
-
151
- \fBpng_byte png_get_header_ver (png_structp \fIpng_ptr\fP\fB);\fP
152
-
153
- \fI\fB
154
-
155
- \fBpng_byte png_get_header_version (png_structp \fIpng_ptr\fP\fB);\fP
156
-
157
- \fI\fB
158
-
159
- \fBpng_uint_32 png_get_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_16p \fI*hist\fP\fB);\fP
160
-
161
- \fI\fB
162
-
163
- \fBpng_uint_32 png_get_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charpp \fP\fIname\fP\fB, int \fP\fI*compression_type\fP\fB, png_charpp \fP\fIprofile\fP\fB, png_uint_32 \fI*proflen\fP\fB);\fP
164
-
165
- \fI\fB
166
-
167
- \fBpng_uint_32 png_get_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fI*width\fP\fB, png_uint_32 \fP\fI*height\fP\fB, int \fP\fI*bit_depth\fP\fB, int \fP\fI*color_type\fP\fB, int \fP\fI*interlace_type\fP\fB, int \fP\fI*compression_type\fP\fB, int \fI*filter_type\fP\fB);\fP
168
-
169
- \fI\fB
170
-
171
- \fBpng_uint_32 png_get_image_height (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
172
-
173
- \fI\fB
174
-
175
- \fBpng_uint_32 png_get_image_width (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
176
-
177
- \fI\fB
178
-
179
- \fBpng_int_32 png_get_int_32 (png_bytep \fIbuf\fP\fB);\fP
180
-
181
- \fI\fB
182
-
183
- \fBpng_byte png_get_interlace_type (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
184
-
185
- \fI\fB
186
-
187
- \fBpng_voidp png_get_io_ptr (png_structp \fIpng_ptr\fP\fB);\fP
188
-
189
- \fI\fB
190
-
191
- \fBpng_byte png_get_libpng_ver (png_structp \fIpng_ptr\fP\fB);\fP
192
-
193
- \fI\fB
194
-
195
- \fBpng_alloc_size_t png_get_chunk_malloc_max (png_structp \fIpng_ptr\fP\fB);\fP
196
-
197
- \fI\fB
198
-
199
- \fBpng_voidp png_get_mem_ptr(png_structp \fIpng_ptr\fP\fB);\fP
200
-
201
- \fI\fB
202
-
203
- \fBpng_uint_32 png_get_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fI*offset_x\fP\fB, png_uint_32 \fP\fI*offset_y\fP\fB, int \fI*unit_type\fP\fB);\fP
204
-
205
- \fI\fB
206
-
207
- \fBpng_uint_32 png_get_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charp \fP\fI*purpose\fP\fB, png_int_32 \fP\fI*X0\fP\fB, png_int_32 \fP\fI*X1\fP\fB, int \fP\fI*type\fP\fB, int \fP\fI*nparams\fP\fB, png_charp \fP\fI*units\fP\fB, png_charpp \fI*params\fP\fB);\fP
208
-
209
- \fI\fB
210
-
211
- \fBpng_uint_32 png_get_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fI*res_x\fP\fB, png_uint_32 \fP\fI*res_y\fP\fB, int \fI*unit_type\fP\fB);\fP
212
-
213
- \fI\fB
214
-
215
- \fBfloat png_get_pixel_aspect_ratio (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
216
-
217
- \fI\fB
218
-
219
- \fBpng_uint_32 png_get_pixels_per_meter (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
220
-
221
- \fI\fB
222
-
223
- \fBpng_voidp png_get_progressive_ptr (png_structp \fIpng_ptr\fP\fB);\fP
224
-
225
- \fI\fB
226
-
227
- \fBpng_uint_32 png_get_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_colorp \fP\fI*palette\fP\fB, int \fI*num_palette\fP\fB);\fP
228
-
229
- \fI\fB
230
-
231
- \fBpng_byte png_get_rgb_to_gray_status (png_structp \fIpng_ptr)
232
-
233
- \fBpng_uint_32 png_get_rowbytes (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
234
-
235
- \fI\fB
236
-
237
- \fBpng_bytepp png_get_rows (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
238
-
239
- \fI\fB
240
-
241
- \fBpng_uint_32 png_get_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_8p \fI*sig_bit\fP\fB);\fP
242
-
243
- \fI\fB
244
-
245
- \fBpng_bytep png_get_signature (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
246
-
247
- \fI\fB
248
-
249
- \fBpng_uint_32 png_get_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_spalette_p \fI*splt_ptr\fP\fB);\fP
250
-
251
- \fI\fB
252
-
253
- \fBpng_uint_32 png_get_sRGB (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fI*intent\fP\fB);\fP
254
-
255
- \fI\fB
256
-
257
- \fBpng_uint_32 png_get_text (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_textp \fP\fI*text_ptr\fP\fB, int \fI*num_text\fP\fB);\fP
258
-
259
- \fI\fB
260
-
261
- \fBpng_uint_32 png_get_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_timep \fI*mod_time\fP\fB);\fP
262
-
263
- \fI\fB
264
-
265
- \fBpng_uint_32 png_get_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytep \fP\fI*trans\fP\fB, int \fP\fI*num_trans\fP\fB, png_color_16p \fI*trans_color\fP\fB);\fP
266
-
267
- \fI\fB
268
-
269
- \fB/* This function is really an inline macro. \fI*/
270
-
271
- \fBpng_uint_16 png_get_uint_16 (png_bytep \fIbuf\fP\fB);\fP
272
-
273
- \fI\fB
274
-
275
- \fBpng_uint_32 png_get_uint_31 (png_bytep \fIbuf\fP\fB);\fP
276
-
277
- \fI\fB
278
-
279
- \fB/* This function is really an inline macro. \fI*/
280
-
281
- \fBpng_uint_32 png_get_uint_32 (png_bytep \fIbuf\fP\fB);\fP
282
-
283
- \fI\fB
284
-
285
- \fBpng_uint_32 png_get_unknown_chunks (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_unknown_chunkpp \fIunknowns\fP\fB);\fP
286
-
287
- \fI\fB
288
-
289
- \fBpng_voidp png_get_user_chunk_ptr (png_structp \fIpng_ptr\fP\fB);\fP
290
-
291
- \fI\fB
292
-
293
- \fBpng_uint_32 png_get_user_height_max( png_structp \fIpng_ptr\fP\fB);\fP
294
-
295
- \fI\fB
296
-
297
- \fBpng_voidp png_get_user_transform_ptr (png_structp \fIpng_ptr\fP\fB);\fP
298
-
299
- \fI\fB
300
-
301
- \fBpng_uint_32 png_get_user_width_max (png_structp \fIpng_ptr\fP\fB);\fP
302
-
303
- \fI\fB
304
-
305
- \fBpng_uint_32 png_get_valid (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIflag\fP\fB);\fP
306
-
307
- \fI\fB
308
-
309
- \fBpng_int_32 png_get_x_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
310
-
311
- \fI\fB
312
-
313
- \fBpng_int_32 png_get_x_offset_pixels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
314
-
315
- \fI\fB
316
-
317
- \fBpng_uint_32 png_get_x_pixels_per_meter (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
318
-
319
- \fI\fB
320
-
321
- \fBpng_int_32 png_get_y_offset_microns (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
322
-
323
- \fI\fB
324
-
325
- \fBpng_int_32 png_get_y_offset_pixels (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
326
-
327
- \fI\fB
328
-
329
- \fBpng_uint_32 png_get_y_pixels_per_meter (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
330
-
331
- \fI\fB
332
-
333
- \fBint png_handle_as_unknown (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIchunk_name\fP\fB);\fP
334
-
335
- \fI\fB
336
-
337
- \fBvoid png_init_io (png_structp \fP\fIpng_ptr\fP\fB, FILE \fI*fp\fP\fB);\fP
338
-
339
- \fI\fB
340
-
341
- \fBpng_voidp png_malloc (png_structp \fP\fIpng_ptr\fP\fB, png_alloc_size_t \fIsize\fP\fB);\fP
342
-
343
- \fI\fB
344
-
345
- \fBpng_voidp png_malloc_default(png_structp \fP\fIpng_ptr\fP\fB, png_alloc_size_t \fIsize\fP\fB);\fP
346
-
347
- \fI\fB
348
-
349
- \fBvoidp png_memcpy (png_voidp \fP\fIs1\fP\fB, png_voidp \fP\fIs2\fP\fB, png_size_t \fIsize\fP\fB);\fP
350
-
351
- \fI\fB
352
-
353
- \fBvoidp png_memset (png_voidp \fP\fIs1\fP\fB, int \fP\fIvalue\fP\fB, png_size_t \fIsize\fP\fB);\fP
354
-
355
- \fI\fB
356
-
357
- \fBvoid png_process_data (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytep \fP\fIbuffer\fP\fB, png_size_t \fIbuffer_size\fP\fB);\fP
358
-
359
- \fI\fB
360
-
361
- \fBvoid png_progressive_combine_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIold_row\fP\fB, png_bytep \fInew_row\fP\fB);\fP
362
-
363
- \fI\fB
364
-
365
- \fBvoid png_read_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
366
-
367
- \fI\fB
368
-
369
- \fBvoid png_read_image (png_structp \fP\fIpng_ptr\fP\fB, png_bytepp \fIimage\fP\fB);\fP
370
-
371
- \fI\fB
372
-
373
- \fBvoid png_read_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
374
-
375
- \fI\fB
376
-
377
- \fBvoid png_read_png (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fP\fItransforms\fP\fB, png_voidp \fIparams\fP\fB);\fP
378
-
379
- \fI\fB
380
-
381
- \fBvoid png_read_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIrow\fP\fB, png_bytep \fIdisplay_row\fP\fB);\fP
382
-
383
- \fI\fB
384
-
385
- \fBvoid png_read_rows (png_structp \fP\fIpng_ptr\fP\fB, png_bytepp \fP\fIrow\fP\fB, png_bytepp \fP\fIdisplay_row\fP\fB, png_uint_32 \fInum_rows\fP\fB);\fP
386
-
387
- \fI\fB
388
-
389
- \fBvoid png_read_update_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
390
-
391
- \fI\fB
392
-
393
- \fBpng_save_int_32 (png_bytep \fP\fIbuf\fP\fB, png_int_32 \fIi\fP\fB);\fP
394
-
395
- \fI\fB
396
-
397
- \fBvoid png_save_uint_16 (png_bytep \fP\fIbuf\fP\fB, unsigned int \fIi\fP\fB);\fP
398
-
399
- \fI\fB
400
-
401
- \fBvoid png_save_uint_32 (png_bytep \fP\fIbuf\fP\fB, png_uint_32 \fIi\fP\fB);\fP
402
-
403
- \fI\fB
404
-
405
- \fBvoid png_set_add_alpha (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIfiller\fP\fB, int \fIflags\fP\fB);\fP
406
-
407
- \fI\fB
408
-
409
- \fBvoid png_set_background (png_structp \fP\fIpng_ptr\fP\fB, png_color_16p \fP\fIbackground_color\fP\fB, int \fP\fIbackground_gamma_code\fP\fB, int \fP\fIneed_expand\fP\fB, double \fIbackground_gamma\fP\fB);\fP
410
-
411
- \fI\fB
412
-
413
- \fBvoid png_set_bgr (png_structp \fIpng_ptr\fP\fB);\fP
414
-
415
- \fI\fB
416
-
417
- \fBvoid png_set_bKGD (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_16p \fIbackground\fP\fB);\fP
418
-
419
- \fI\fB
420
-
421
- \fBvoid png_set_cHRM (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, double \fP\fIwhite_x\fP\fB, double \fP\fIwhite_y\fP\fB, double \fP\fIred_x\fP\fB, double \fP\fIred_y\fP\fB, double \fP\fIgreen_x\fP\fB, double \fP\fIgreen_y\fP\fB, double \fP\fIblue_x\fP\fB, double \fIblue_y\fP\fB);\fP
422
-
423
- \fI\fB
424
-
425
- \fBvoid png_set_cHRM_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fIwhite_x\fP\fB, png_uint_32 \fP\fIwhite_y\fP\fB, png_uint_32 \fP\fIred_x\fP\fB, png_uint_32 \fP\fIred_y\fP\fB, png_uint_32 \fP\fIgreen_x\fP\fB, png_uint_32 \fP\fIgreen_y\fP\fB, png_uint_32 \fP\fIblue_x\fP\fB, png_uint_32 \fIblue_y\fP\fB);\fP
426
-
427
- \fI\fB
428
-
429
- \fBvoid png_set_chunk_cache_max (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIuser_chunk_cache_max\fP\fB);\fP
430
-
431
- \fI\fB
432
-
433
- \fBvoid png_set_compression_level (png_structp \fP\fIpng_ptr\fP\fB, int \fIlevel\fP\fB);\fP
434
-
435
- \fI\fB
436
-
437
- \fBvoid png_set_compression_mem_level (png_structp \fP\fIpng_ptr\fP\fB, int \fImem_level\fP\fB);\fP
438
-
439
- \fI\fB
440
-
441
- \fBvoid png_set_compression_method (png_structp \fP\fIpng_ptr\fP\fB, int \fImethod\fP\fB);\fP
442
-
443
- \fI\fB
444
-
445
- \fBvoid png_set_compression_strategy (png_structp \fP\fIpng_ptr\fP\fB, int \fIstrategy\fP\fB);\fP
446
-
447
- \fI\fB
448
-
449
- \fBvoid png_set_compression_window_bits (png_structp \fP\fIpng_ptr\fP\fB, int \fIwindow_bits\fP\fB);\fP
450
-
451
- \fI\fB
452
-
453
- \fBvoid png_set_crc_action (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIcrit_action\fP\fB, int \fIancil_action\fP\fB);\fP
454
-
455
- \fI\fB
456
-
457
- \fBvoid png_set_error_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIerror_ptr\fP\fB, png_error_ptr \fP\fIerror_fn\fP\fB, png_error_ptr \fIwarning_fn\fP\fB);\fP
458
-
459
- \fI\fB
460
-
461
- \fBvoid png_set_expand (png_structp \fIpng_ptr\fP\fB);\fP
462
-
463
- \fI\fB
464
-
465
- \fBvoid png_set_expand_gray_1_2_4_to_8(png_structp \fIpng_ptr\fP\fB);\fP
466
-
467
- \fI\fB
468
-
469
- \fBvoid png_set_filler (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIfiller\fP\fB, int \fIflags\fP\fB);\fP
470
-
471
- \fI\fB
472
-
473
- \fBvoid png_set_filter (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fImethod\fP\fB, int \fIfilters\fP\fB);\fP
474
-
475
- \fI\fB
476
-
477
- \fBvoid png_set_filter_heuristics (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIheuristic_method\fP\fB, int \fP\fInum_weights\fP\fB, png_doublep \fP\fIfilter_weights\fP\fB, png_doublep \fIfilter_costs\fP\fB);\fP
478
-
479
- \fI\fB
480
-
481
- \fBvoid png_set_flush (png_structp \fP\fIpng_ptr\fP\fB, int \fInrows\fP\fB);\fP
482
-
483
- \fI\fB
484
-
485
- \fBvoid png_set_gamma (png_structp \fP\fIpng_ptr\fP\fB, double \fP\fIscreen_gamma\fP\fB, double \fIdefault_file_gamma\fP\fB);\fP
486
-
487
- \fI\fB
488
-
489
- \fBvoid png_set_gAMA (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, double \fIfile_gamma\fP\fB);\fP
490
-
491
- \fI\fB
492
-
493
- \fBvoid png_set_gAMA_fixed (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fIfile_gamma\fP\fB);\fP
494
-
495
- \fI\fB
496
-
497
- \fBvoid png_set_gray_1_2_4_to_8(png_structp \fIpng_ptr\fP\fB);\fP
498
-
499
- \fI\fB
500
-
501
- \fBvoid png_set_gray_to_rgb (png_structp \fIpng_ptr\fP\fB);\fP
502
-
503
- \fI\fB
504
-
505
- \fBvoid png_set_hIST (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_16p \fIhist\fP\fB);\fP
506
-
507
- \fI\fB
508
-
509
- \fBvoid png_set_iCCP (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charp \fP\fIname\fP\fB, int \fP\fIcompression_type\fP\fB, png_charp \fP\fIprofile\fP\fB, png_uint_32 \fIproflen\fP\fB);\fP
510
-
511
- \fI\fB
512
-
513
- \fBint png_set_interlace_handling (png_structp \fIpng_ptr\fP\fB);\fP
514
-
515
- \fI\fB
516
-
517
- \fBvoid png_set_invalid (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fImask\fP\fB);\fP
518
-
519
- \fI\fB
520
-
521
- \fBvoid png_set_invert_alpha (png_structp \fIpng_ptr\fP\fB);\fP
522
-
523
- \fI\fB
524
-
525
- \fBvoid png_set_invert_mono (png_structp \fIpng_ptr\fP\fB);\fP
526
-
527
- \fI\fB
528
-
529
- \fBvoid png_set_IHDR (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fIwidth\fP\fB, png_uint_32 \fP\fIheight\fP\fB, int \fP\fIbit_depth\fP\fB, int \fP\fIcolor_type\fP\fB, int \fP\fIinterlace_type\fP\fB, int \fP\fIcompression_type\fP\fB, int \fIfilter_type\fP\fB);\fP
530
-
531
- \fI\fB
532
-
533
- \fBvoid png_set_keep_unknown_chunks (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIkeep\fP\fB, png_bytep \fP\fIchunk_list\fP\fB, int \fInum_chunks\fP\fB);\fP
534
-
535
- \fI\fB
536
-
537
- \fBjmp_buf* png_set_longjmp_fn (png_structp \fP\fIpng_ptr\fP\fB, png_longjmp_ptr \fP\fIlongjmp_fn\fP\fB, size_t \fIjmp_buf_size\fP\fB);\fP
538
-
539
- \fI\fB
540
-
541
- \fBvoid png_set_chunk_malloc_max (png_structp \fP\fIpng_ptr\fP\fB, png_alloc_size_t \fIuser_chunk_cache_max\fP\fB);\fP
542
-
543
- \fI\fB
544
-
545
- \fBvoid png_set_mem_fn(png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fImem_ptr\fP\fB, png_malloc_ptr \fP\fImalloc_fn\fP\fB, png_free_ptr \fIfree_fn\fP\fB);\fP
546
-
547
- \fI\fB
548
-
549
- \fBvoid png_set_oFFs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fIoffset_x\fP\fB, png_uint_32 \fP\fIoffset_y\fP\fB, int \fIunit_type\fP\fB);\fP
550
-
551
- \fI\fB
552
-
553
- \fBvoid png_set_packing (png_structp \fIpng_ptr\fP\fB);\fP
554
-
555
- \fI\fB
556
-
557
- \fBvoid png_set_packswap (png_structp \fIpng_ptr\fP\fB);\fP
558
-
559
- \fI\fB
560
-
561
- \fBvoid png_set_palette_to_rgb(png_structp \fIpng_ptr\fP\fB);\fP
562
-
563
- \fI\fB
564
-
565
- \fBvoid png_set_pCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charp \fP\fIpurpose\fP\fB, png_int_32 \fP\fIX0\fP\fB, png_int_32 \fP\fIX1\fP\fB, int \fP\fItype\fP\fB, int \fP\fInparams\fP\fB, png_charp \fP\fIunits\fP\fB, png_charpp \fIparams\fP\fB);\fP
566
-
567
- \fI\fB
568
-
569
- \fBvoid png_set_pHYs (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_uint_32 \fP\fIres_x\fP\fB, png_uint_32 \fP\fIres_y\fP\fB, int \fIunit_type\fP\fB);\fP
570
-
571
- \fI\fB
572
-
573
- \fBvoid png_set_progressive_read_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIprogressive_ptr\fP\fB, png_progressive_info_ptr \fP\fIinfo_fn\fP\fB, png_progressive_row_ptr \fP\fIrow_fn\fP\fB, png_progressive_end_ptr \fIend_fn\fP\fB);\fP
574
-
575
- \fI\fB
576
-
577
- \fBvoid png_set_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, int \fInum_palette\fP\fB);\fP
578
-
579
- \fI\fB
580
-
581
- \fBvoid png_set_quantize (png_structp \fP\fIpng_ptr\fP\fB, png_colorp \fP\fIpalette\fP\fB, int \fP\fInum_palette\fP\fB, int \fP\fImaximum_colors\fP\fB, png_uint_16p \fP\fIhistogram\fP\fB, int \fIfull_quantize\fP\fB);\fP
582
-
583
- \fI\fB
584
-
585
- \fBvoid png_set_read_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIio_ptr\fP\fB, png_rw_ptr \fIread_data_fn\fP\fB);\fP
586
-
587
- \fI\fB
588
-
589
- \fBvoid png_set_read_status_fn (png_structp \fP\fIpng_ptr\fP\fB, png_read_status_ptr \fIread_row_fn\fP\fB);\fP
590
-
591
- \fI\fB
592
-
593
- \fBvoid png_set_read_user_transform_fn (png_structp \fP\fIpng_ptr\fP\fB, png_user_transform_ptr \fIread_user_transform_fn\fP\fB);\fP
594
-
595
- \fI\fB
596
-
597
- \fBvoid png_set_rgb_to_gray (png_structp \fP\fIpng_ptr\fP\fB, int \fP\fIerror_action\fP\fB, double \fP\fIred\fP\fB, double \fIgreen\fP\fB);\fP
598
-
599
- \fI\fB
600
-
601
- \fBvoid png_set_rgb_to_gray_fixed (png_structp \fP\fIpng_ptr\fP\fB, int error_action png_fixed_point \fP\fIred\fP\fB, png_fixed_point \fIgreen\fP\fB);\fP
602
-
603
- \fI\fB
604
-
605
- \fBvoid png_set_rows (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytepp \fIrow_pointers\fP\fB);\fP
606
-
607
- \fI\fB
608
-
609
- \fBvoid png_set_sBIT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_color_8p \fIsig_bit\fP\fB);\fP
610
-
611
- \fI\fB
612
-
613
- \fBvoid png_set_sCAL (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_charp \fP\fIunit\fP\fB, double \fP\fIwidth\fP\fB, double \fIheight\fP\fB);\fP
614
-
615
- \fI\fB
616
-
617
- \fBvoid png_set_shift (png_structp \fP\fIpng_ptr\fP\fB, png_color_8p \fItrue_bits\fP\fB);\fP
618
-
619
- \fI\fB
620
-
621
- \fBvoid png_set_sig_bytes (png_structp \fP\fIpng_ptr\fP\fB, int \fInum_bytes\fP\fB);\fP
622
-
623
- \fI\fB
624
-
625
- \fBvoid png_set_sPLT (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_spalette_p \fP\fIsplt_ptr\fP\fB, int \fInum_spalettes\fP\fB);\fP
626
-
627
- \fI\fB
628
-
629
- \fBvoid png_set_sRGB (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fIintent\fP\fB);\fP
630
-
631
- \fI\fB
632
-
633
- \fBvoid png_set_sRGB_gAMA_and_cHRM (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fIintent\fP\fB);\fP
634
-
635
- \fI\fB
636
-
637
- \fBvoid png_set_strip_16 (png_structp \fIpng_ptr\fP\fB);\fP
638
-
639
- \fI\fB
640
-
641
- \fBvoid png_set_strip_alpha (png_structp \fIpng_ptr\fP\fB);\fP
642
-
643
- \fI\fB
644
-
645
- \fBvoid png_set_swap (png_structp \fIpng_ptr\fP\fB);\fP
646
-
647
- \fI\fB
648
-
649
- \fBvoid png_set_swap_alpha (png_structp \fIpng_ptr\fP\fB);\fP
650
-
651
- \fI\fB
652
-
653
- \fBvoid png_set_text (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_textp \fP\fItext_ptr\fP\fB, int \fInum_text\fP\fB);\fP
654
-
655
- \fI\fB
656
-
657
- \fBvoid png_set_tIME (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_timep \fImod_time\fP\fB);\fP
658
-
659
- \fI\fB
660
-
661
- \fBvoid png_set_tRNS (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_bytep \fP\fItrans\fP\fB, int \fP\fInum_trans\fP\fB, png_color_16p \fItrans_color\fP\fB);\fP
662
-
663
- \fI\fB
664
-
665
- \fBvoid png_set_tRNS_to_alpha(png_structp \fIpng_ptr\fP\fB);\fP
666
-
667
- \fI\fB
668
-
669
- \fBpng_uint_32 png_set_unknown_chunks (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, png_unknown_chunkp \fP\fIunknowns\fP\fB, int \fP\fInum\fP\fB, int \fIlocation\fP\fB);\fP
670
-
671
- \fI\fB
672
-
673
- \fBvoid png_set_unknown_chunk_location(png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fP\fIchunk\fP\fB, int \fIlocation\fP\fB);\fP
674
-
675
- \fI\fB
676
-
677
- \fBvoid png_set_read_user_chunk_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIuser_chunk_ptr\fP\fB, png_user_chunk_ptr \fIread_user_chunk_fn\fP\fB);\fP
678
-
679
- \fI\fB
680
-
681
- \fBvoid png_set_user_limits (png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fP\fIuser_width_max\fP\fB, png_uint_32 \fIuser_height_max\fP\fB);\fP
682
-
683
- \fI\fB
684
-
685
- \fBvoid png_set_user_transform_info (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIuser_transform_ptr\fP\fB, int \fP\fIuser_transform_depth\fP\fB, int \fIuser_transform_channels\fP\fB);\fP
686
-
687
- \fI\fB
688
-
689
- \fBvoid png_set_write_fn (png_structp \fP\fIpng_ptr\fP\fB, png_voidp \fP\fIio_ptr\fP\fB, png_rw_ptr \fP\fIwrite_data_fn\fP\fB, png_flush_ptr \fIoutput_flush_fn\fP\fB);\fP
690
-
691
- \fI\fB
692
-
693
- \fBvoid png_set_write_status_fn (png_structp \fP\fIpng_ptr\fP\fB, png_write_status_ptr \fIwrite_row_fn\fP\fB);\fP
694
-
695
- \fI\fB
696
-
697
- \fBvoid png_set_write_user_transform_fn (png_structp \fP\fIpng_ptr\fP\fB, png_user_transform_ptr \fIwrite_user_transform_fn\fP\fB);\fP
698
-
699
- \fI\fB
700
-
701
- \fBvoid png_set_compression_buffer_size(png_structp \fP\fIpng_ptr\fP\fB, png_uint_32 \fIsize\fP\fB);\fP
702
-
703
- \fI\fB
704
-
705
- \fBint png_sig_cmp (png_bytep \fP\fIsig\fP\fB, png_size_t \fP\fIstart\fP\fB, png_size_t \fInum_to_check\fP\fB);\fP
706
-
707
- \fI\fB
708
-
709
- \fBvoid png_start_read_image (png_structp \fIpng_ptr\fP\fB);\fP
710
-
711
- \fI\fB
712
-
713
- \fBvoid png_warning (png_structp \fP\fIpng_ptr\fP\fB, png_const_charp \fImessage\fP\fB);\fP
714
-
715
- \fI\fB
716
-
717
- \fBvoid png_write_chunk (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIchunk_name\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
718
-
719
- \fI\fB
720
-
721
- \fBvoid png_write_chunk_data (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIdata\fP\fB, png_size_t \fIlength\fP\fB);\fP
722
-
723
- \fI\fB
724
-
725
- \fBvoid png_write_chunk_end (png_structp \fIpng_ptr\fP\fB);\fP
726
-
727
- \fI\fB
728
-
729
- \fBvoid png_write_chunk_start (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fP\fIchunk_name\fP\fB, png_uint_32 \fIlength\fP\fB);\fP
730
-
731
- \fI\fB
732
-
733
- \fBvoid png_write_end (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
734
-
735
- \fI\fB
736
-
737
- \fBvoid png_write_flush (png_structp \fIpng_ptr\fP\fB);\fP
738
-
739
- \fI\fB
740
-
741
- \fBvoid png_write_image (png_structp \fP\fIpng_ptr\fP\fB, png_bytepp \fIimage\fP\fB);\fP
742
-
743
- \fI\fB
744
-
745
- \fBvoid png_write_info (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
746
-
747
- \fI\fB
748
-
749
- \fBvoid png_write_info_before_PLTE (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fIinfo_ptr\fP\fB);\fP
750
-
751
- \fI\fB
752
-
753
- \fBvoid png_write_png (png_structp \fP\fIpng_ptr\fP\fB, png_infop \fP\fIinfo_ptr\fP\fB, int \fP\fItransforms\fP\fB, png_voidp \fIparams\fP\fB);\fP
754
-
755
- \fI\fB
756
-
757
- \fBvoid png_write_row (png_structp \fP\fIpng_ptr\fP\fB, png_bytep \fIrow\fP\fB);\fP
758
-
759
- \fI\fB
760
-
761
- \fBvoid png_write_rows (png_structp \fP\fIpng_ptr\fP\fB, png_bytepp \fP\fIrow\fP\fB, png_uint_32 \fInum_rows\fP\fB);\fP
762
-
763
- \fI\fB
764
-
765
- \fBvoid png_write_sig (png_structp \fIpng_ptr\fP\fB);\fP
766
-
767
- \fI\fB
768
-
769
- \fBvoidpf png_zalloc (voidpf \fP\fIpng_ptr\fP\fB, uInt \fP\fIitems\fP\fB, uInt \fIsize\fP\fB);\fP
770
-
771
- \fI\fB
772
-
773
- \fBvoid png_zfree (voidpf \fP\fIpng_ptr\fP\fB, voidpf \fIptr\fP\fB);\fP
774
-
775
- \fI\fB
776
-
777
- .SH DESCRIPTION
778
- The
779
- .I libpng
780
- library supports encoding, decoding, and various manipulations of
781
- the Portable Network Graphics (PNG) format image files. It uses the
782
- .IR zlib(3)
783
- compression library.
784
- Following is a copy of the libpng.txt file that accompanies libpng.
785
- .SH LIBPNG.TXT
786
- libpng.txt - A description on how to use and modify libpng
787
-
788
- libpng version 1.4.3 - June 26, 2010
789
- Updated and distributed by Glenn Randers-Pehrson
790
- <glennrp at users.sourceforge.net>
791
- Copyright (c) 1998-2009 Glenn Randers-Pehrson
792
-
793
- This document is released under the libpng license.
794
- For conditions of distribution and use, see the disclaimer
795
- and license in png.h
796
-
797
- Based on:
798
-
799
- libpng versions 0.97, January 1998, through 1.4.3 - June 26, 2010
800
- Updated and distributed by Glenn Randers-Pehrson
801
- Copyright (c) 1998-2009 Glenn Randers-Pehrson
802
-
803
- libpng 1.0 beta 6 version 0.96 May 28, 1997
804
- Updated and distributed by Andreas Dilger
805
- Copyright (c) 1996, 1997 Andreas Dilger
806
-
807
- libpng 1.0 beta 2 - version 0.88 January 26, 1996
808
- For conditions of distribution and use, see copyright
809
- notice in png.h. Copyright (c) 1995, 1996 Guy Eric
810
- Schalnat, Group 42, Inc.
811
-
812
- Updated/rewritten per request in the libpng FAQ
813
- Copyright (c) 1995, 1996 Frank J. T. Wojcik
814
- December 18, 1995 & January 20, 1996
815
-
816
- .SH I. Introduction
817
-
818
- This file describes how to use and modify the PNG reference library
819
- (known as libpng) for your own use. There are five sections to this
820
- file: introduction, structures, reading, writing, and modification and
821
- configuration notes for various special platforms. In addition to this
822
- file, example.c is a good starting point for using the library, as
823
- it is heavily commented and should include everything most people
824
- will need. We assume that libpng is already installed; see the
825
- INSTALL file for instructions on how to install libpng.
826
-
827
- For examples of libpng usage, see the files "example.c", "pngtest.c",
828
- and the files in the "contrib" directory, all of which are included in
829
- the libpng distribution.
830
-
831
- Libpng was written as a companion to the PNG specification, as a way
832
- of reducing the amount of time and effort it takes to support the PNG
833
- file format in application programs.
834
-
835
- The PNG specification (second edition), November 2003, is available as
836
- a W3C Recommendation and as an ISO Standard (ISO/IEC 15948:2003 (E)) at
837
- <http://www.w3.org/TR/2003/REC-PNG-20031110/
838
- The W3C and ISO documents have identical technical content.
839
-
840
- The PNG-1.2 specification is available at
841
- <http://www.libpng.org/pub/png/documents/>. It is technically equivalent
842
- to the PNG specification (second edition) but has some additional material.
843
-
844
- The PNG-1.0 specification is available
845
- as RFC 2083 <http://www.libpng.org/pub/png/documents/> and as a
846
- W3C Recommendation <http://www.w3.org/TR/REC.png.html>.
847
-
848
- Some additional chunks are described in the special-purpose public chunks
849
- documents at <http://www.libpng.org/pub/png/documents/>.
850
-
851
- Other information
852
- about PNG, and the latest version of libpng, can be found at the PNG home
853
- page, <http://www.libpng.org/pub/png/>.
854
-
855
- Most users will not have to modify the library significantly; advanced
856
- users may want to modify it more. All attempts were made to make it as
857
- complete as possible, while keeping the code easy to understand.
858
- Currently, this library only supports C. Support for other languages
859
- is being considered.
860
-
861
- Libpng has been designed to handle multiple sessions at one time,
862
- to be easily modifiable, to be portable to the vast majority of
863
- machines (ANSI, K&R, 16-, 32-, and 64-bit) available, and to be easy
864
- to use. The ultimate goal of libpng is to promote the acceptance of
865
- the PNG file format in whatever way possible. While there is still
866
- work to be done (see the TODO file), libpng should cover the
867
- majority of the needs of its users.
868
-
869
- Libpng uses zlib for its compression and decompression of PNG files.
870
- Further information about zlib, and the latest version of zlib, can
871
- be found at the zlib home page, <http://www.info-zip.org/pub/infozip/zlib/>.
872
- The zlib compression utility is a general purpose utility that is
873
- useful for more than PNG files, and can be used without libpng.
874
- See the documentation delivered with zlib for more details.
875
- You can usually find the source files for the zlib utility wherever you
876
- find the libpng source files.
877
-
878
- Libpng is thread safe, provided the threads are using different
879
- instances of the structures. Each thread should have its own
880
- png_struct and png_info instances, and thus its own image.
881
- Libpng does not protect itself against two threads using the
882
- same instance of a structure.
883
-
884
- .SH II. Structures
885
-
886
- There are two main structures that are important to libpng, png_struct
887
- and png_info. The first, png_struct, is an internal structure that
888
- will not, for the most part, be used by a user except as the first
889
- variable passed to every libpng function call.
890
-
891
- The png_info structure is designed to provide information about the
892
- PNG file. At one time, the fields of png_info were intended to be
893
- directly accessible to the user. However, this tended to cause problems
894
- with applications using dynamically loaded libraries, and as a result
895
- a set of interface functions for png_info (the png_get_*() and png_set_*()
896
- functions) was developed. The fields of png_info are still available for
897
- older applications, but it is suggested that applications use the new
898
- interfaces if at all possible.
899
-
900
- Applications that do make direct access to the members of png_struct (except
901
- for png_ptr->jmpbuf) must be recompiled whenever the library is updated,
902
- and applications that make direct access to the members of png_info must
903
- be recompiled if they were compiled or loaded with libpng version 1.0.6,
904
- in which the members were in a different order. In version 1.0.7, the
905
- members of the png_info structure reverted to the old order, as they were
906
- in versions 0.97c through 1.0.5. Starting with version 2.0.0, both
907
- structures are going to be hidden, and the contents of the structures will
908
- only be accessible through the png_get/png_set functions.
909
-
910
- The png.h header file is an invaluable reference for programming with libpng.
911
- And while I'm on the topic, make sure you include the libpng header file:
912
-
913
- #include <png.h>
914
-
915
- .SH III. Reading
916
-
917
- We'll now walk you through the possible functions to call when reading
918
- in a PNG file sequentially, briefly explaining the syntax and purpose
919
- of each one. See example.c and png.h for more detail. While
920
- progressive reading is covered in the next section, you will still
921
- need some of the functions discussed in this section to read a PNG
922
- file.
923
-
924
- .SS Setup
925
-
926
- You will want to do the I/O initialization(*) before you get into libpng,
927
- so if it doesn't work, you don't have much to undo. Of course, you
928
- will also want to insure that you are, in fact, dealing with a PNG
929
- file. Libpng provides a simple check to see if a file is a PNG file.
930
- To use it, pass in the first 1 to 8 bytes of the file to the function
931
- png_sig_cmp(), and it will return 0 (false) if the bytes match the
932
- corresponding bytes of the PNG signature, or nonzero (true) otherwise.
933
- Of course, the more bytes you pass in, the greater the accuracy of the
934
- prediction.
935
-
936
- If you are intending to keep the file pointer open for use in libpng,
937
- you must ensure you don't read more than 8 bytes from the beginning
938
- of the file, and you also have to make a call to png_set_sig_bytes_read()
939
- with the number of bytes you read from the beginning. Libpng will
940
- then only check the bytes (if any) that your program didn't read.
941
-
942
- (*): If you are not using the standard I/O functions, you will need
943
- to replace them with custom functions. See the discussion under
944
- Customizing libpng.
945
-
946
-
947
- FILE *fp = fopen(file_name, "rb");
948
- if (!fp)
949
- {
950
- return (ERROR);
951
- }
952
- fread(header, 1, number, fp);
953
- is_png = !png_sig_cmp(header, 0, number);
954
- if (!is_png)
955
- {
956
- return (NOT_PNG);
957
- }
958
-
959
-
960
- Next, png_struct and png_info need to be allocated and initialized. In
961
- order to ensure that the size of these structures is correct even with a
962
- dynamically linked libpng, there are functions to initialize and
963
- allocate the structures. We also pass the library version, optional
964
- pointers to error handling functions, and a pointer to a data struct for
965
- use by the error functions, if necessary (the pointer and functions can
966
- be NULL if the default error handlers are to be used). See the section
967
- on Changes to Libpng below regarding the old initialization functions.
968
- The structure allocation functions quietly return NULL if they fail to
969
- create the structure, so your application should check for that.
970
-
971
- png_structp png_ptr = png_create_read_struct
972
- (PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
973
- user_error_fn, user_warning_fn);
974
- if (!png_ptr)
975
- return (ERROR);
976
-
977
- png_infop info_ptr = png_create_info_struct(png_ptr);
978
- if (!info_ptr)
979
- {
980
- png_destroy_read_struct(&png_ptr,
981
- (png_infopp)NULL, (png_infopp)NULL);
982
- return (ERROR);
983
- }
984
-
985
- png_infop end_info = png_create_info_struct(png_ptr);
986
- if (!end_info)
987
- {
988
- png_destroy_read_struct(&png_ptr, &info_ptr,
989
- (png_infopp)NULL);
990
- return (ERROR);
991
- }
992
-
993
- If you want to use your own memory allocation routines,
994
- define PNG_USER_MEM_SUPPORTED and use
995
- png_create_read_struct_2() instead of png_create_read_struct():
996
-
997
- png_structp png_ptr = png_create_read_struct_2
998
- (PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
999
- user_error_fn, user_warning_fn, (png_voidp)
1000
- user_mem_ptr, user_malloc_fn, user_free_fn);
1001
-
1002
- The error handling routines passed to png_create_read_struct()
1003
- and the memory alloc/free routines passed to png_create_struct_2()
1004
- are only necessary if you are not using the libpng supplied error
1005
- handling and memory alloc/free functions.
1006
-
1007
- When libpng encounters an error, it expects to longjmp back
1008
- to your routine. Therefore, you will need to call setjmp and pass
1009
- your png_jmpbuf(png_ptr). If you read the file from different
1010
- routines, you will need to update the jmpbuf field every time you enter
1011
- a new routine that will call a png_*() function.
1012
-
1013
- See your documentation of setjmp/longjmp for your compiler for more
1014
- information on setjmp/longjmp. See the discussion on libpng error
1015
- handling in the Customizing Libpng section below for more information
1016
- on the libpng error handling. If an error occurs, and libpng longjmp's
1017
- back to your setjmp, you will want to call png_destroy_read_struct() to
1018
- free any memory.
1019
-
1020
- if (setjmp(png_jmpbuf(png_ptr)))
1021
- {
1022
- png_destroy_read_struct(&png_ptr, &info_ptr,
1023
- &end_info);
1024
- fclose(fp);
1025
- return (ERROR);
1026
- }
1027
-
1028
- If you would rather avoid the complexity of setjmp/longjmp issues,
1029
- you can compile libpng with PNG_NO_SETJMP, in which case
1030
- errors will result in a call to PNG_ABORT() which defaults to abort().
1031
-
1032
- You can #define PNG_ABORT() to a function that does something
1033
- more useful than abort(), as long as your function does not
1034
- return.
1035
-
1036
- Now you need to set up the input code. The default for libpng is to
1037
- use the C function fread(). If you use this, you will need to pass a
1038
- valid FILE * in the function png_init_io(). Be sure that the file is
1039
- opened in binary mode. If you wish to handle reading data in another
1040
- way, you need not call the png_init_io() function, but you must then
1041
- implement the libpng I/O methods discussed in the Customizing Libpng
1042
- section below.
1043
-
1044
- png_init_io(png_ptr, fp);
1045
-
1046
- If you had previously opened the file and read any of the signature from
1047
- the beginning in order to see if this was a PNG file, you need to let
1048
- libpng know that there are some bytes missing from the start of the file.
1049
-
1050
- png_set_sig_bytes(png_ptr, number);
1051
-
1052
- You can change the zlib compression buffer size to be used while
1053
- reading compressed data with
1054
-
1055
- png_set_compression_buffer_size(png_ptr, buffer_size);
1056
-
1057
- where the default size is 8192 bytes. Note that the buffer size
1058
- is changed immediately and the buffer is reallocated immediately,
1059
- instead of setting a flag to be acted upon later.
1060
-
1061
- .SS Setting up callback code
1062
-
1063
- You can set up a callback function to handle any unknown chunks in the
1064
- input stream. You must supply the function
1065
-
1066
- read_chunk_callback(png_ptr ptr,
1067
- png_unknown_chunkp chunk);
1068
- {
1069
- /* The unknown chunk structure contains your
1070
- chunk data, along with similar data for any other
1071
- unknown chunks: */
1072
-
1073
- png_byte name[5];
1074
- png_byte *data;
1075
- png_size_t size;
1076
-
1077
- /* Note that libpng has already taken care of
1078
- the CRC handling */
1079
-
1080
- /* put your code here. Search for your chunk in the
1081
- unknown chunk structure, process it, and return one
1082
- of the following: */
1083
-
1084
- return (-n); /* chunk had an error */
1085
- return (0); /* did not recognize */
1086
- return (n); /* success */
1087
- }
1088
-
1089
- (You can give your function another name that you like instead of
1090
- "read_chunk_callback")
1091
-
1092
- To inform libpng about your function, use
1093
-
1094
- png_set_read_user_chunk_fn(png_ptr, user_chunk_ptr,
1095
- read_chunk_callback);
1096
-
1097
- This names not only the callback function, but also a user pointer that
1098
- you can retrieve with
1099
-
1100
- png_get_user_chunk_ptr(png_ptr);
1101
-
1102
- If you call the png_set_read_user_chunk_fn() function, then all unknown
1103
- chunks will be saved when read, in case your callback function will need
1104
- one or more of them. This behavior can be changed with the
1105
- png_set_keep_unknown_chunks() function, described below.
1106
-
1107
- At this point, you can set up a callback function that will be
1108
- called after each row has been read, which you can use to control
1109
- a progress meter or the like. It's demonstrated in pngtest.c.
1110
- You must supply a function
1111
-
1112
- void read_row_callback(png_ptr ptr, png_uint_32 row,
1113
- int pass);
1114
- {
1115
- /* put your code here */
1116
- }
1117
-
1118
- (You can give it another name that you like instead of "read_row_callback")
1119
-
1120
- To inform libpng about your function, use
1121
-
1122
- png_set_read_status_fn(png_ptr, read_row_callback);
1123
-
1124
- .SS Unknown-chunk handling
1125
-
1126
- Now you get to set the way the library processes unknown chunks in the
1127
- input PNG stream. Both known and unknown chunks will be read. Normal
1128
- behavior is that known chunks will be parsed into information in
1129
- various info_ptr members while unknown chunks will be discarded. This
1130
- behavior can be wasteful if your application will never use some known
1131
- chunk types. To change this, you can call:
1132
-
1133
- png_set_keep_unknown_chunks(png_ptr, keep,
1134
- chunk_list, num_chunks);
1135
- keep - 0: default unknown chunk handling
1136
- 1: ignore; do not keep
1137
- 2: keep only if safe-to-copy
1138
- 3: keep even if unsafe-to-copy
1139
- You can use these definitions:
1140
- PNG_HANDLE_CHUNK_AS_DEFAULT 0
1141
- PNG_HANDLE_CHUNK_NEVER 1
1142
- PNG_HANDLE_CHUNK_IF_SAFE 2
1143
- PNG_HANDLE_CHUNK_ALWAYS 3
1144
- chunk_list - list of chunks affected (a byte string,
1145
- five bytes per chunk, NULL or '\0' if
1146
- num_chunks is 0)
1147
- num_chunks - number of chunks affected; if 0, all
1148
- unknown chunks are affected. If nonzero,
1149
- only the chunks in the list are affected
1150
-
1151
- Unknown chunks declared in this way will be saved as raw data onto a
1152
- list of png_unknown_chunk structures. If a chunk that is normally
1153
- known to libpng is named in the list, it will be handled as unknown,
1154
- according to the "keep" directive. If a chunk is named in successive
1155
- instances of png_set_keep_unknown_chunks(), the final instance will
1156
- take precedence. The IHDR and IEND chunks should not be named in
1157
- chunk_list; if they are, libpng will process them normally anyway.
1158
-
1159
- Here is an example of the usage of png_set_keep_unknown_chunks(),
1160
- where the private "vpAg" chunk will later be processed by a user chunk
1161
- callback function:
1162
-
1163
- png_byte vpAg[5]={118, 112, 65, 103, (png_byte) '\0'};
1164
-
1165
- #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
1166
- png_byte unused_chunks[]=
1167
- {
1168
- 104, 73, 83, 84, (png_byte) '\0', /* hIST */
1169
- 105, 84, 88, 116, (png_byte) '\0', /* iTXt */
1170
- 112, 67, 65, 76, (png_byte) '\0', /* pCAL */
1171
- 115, 67, 65, 76, (png_byte) '\0', /* sCAL */
1172
- 115, 80, 76, 84, (png_byte) '\0', /* sPLT */
1173
- 116, 73, 77, 69, (png_byte) '\0', /* tIME */
1174
- };
1175
- #endif
1176
-
1177
- ...
1178
-
1179
- #if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
1180
- /* ignore all unknown chunks: */
1181
- png_set_keep_unknown_chunks(read_ptr, 1, NULL, 0);
1182
- /* except for vpAg: */
1183
- png_set_keep_unknown_chunks(read_ptr, 2, vpAg, 1);
1184
- /* also ignore unused known chunks: */
1185
- png_set_keep_unknown_chunks(read_ptr, 1, unused_chunks,
1186
- (int)sizeof(unused_chunks)/5);
1187
- #endif
1188
-
1189
- .SS User limits
1190
-
1191
- The PNG specification allows the width and height of an image to be as
1192
- large as 2^31-1 (0x7fffffff), or about 2.147 billion rows and columns.
1193
- Since very few applications really need to process such large images,
1194
- we have imposed an arbitrary 1-million limit on rows and columns.
1195
- Larger images will be rejected immediately with a png_error() call. If
1196
- you wish to override this limit, you can use
1197
-
1198
- png_set_user_limits(png_ptr, width_max, height_max);
1199
-
1200
- to set your own limits, or use width_max = height_max = 0x7fffffffL
1201
- to allow all valid dimensions (libpng may reject some very large images
1202
- anyway because of potential buffer overflow conditions).
1203
-
1204
- You should put this statement after you create the PNG structure and
1205
- before calling png_read_info(), png_read_png(), or png_process_data().
1206
- If you need to retrieve the limits that are being applied, use
1207
-
1208
- width_max = png_get_user_width_max(png_ptr);
1209
- height_max = png_get_user_height_max(png_ptr);
1210
-
1211
- The PNG specification sets no limit on the number of ancillary chunks
1212
- allowed in a PNG datastream. You can impose a limit on the total number
1213
- of sPLT, tEXt, iTXt, zTXt, and unknown chunks that will be stored, with
1214
-
1215
- png_set_chunk_cache_max(png_ptr, user_chunk_cache_max);
1216
-
1217
- where 0x7fffffffL means unlimited. You can retrieve this limit with
1218
-
1219
- chunk_cache_max = png_get_chunk_cache_max(png_ptr);
1220
-
1221
- This limit also applies to the number of buffers that can be allocated
1222
- by png_decompress_chunk() while decompressing iTXt, zTXt, and iCCP chunks.
1223
-
1224
- You can also set a limit on the amount of memory that a compressed chunk
1225
- other than IDAT can occupy, with
1226
-
1227
- png_set_chunk_malloc_max(png_ptr, user_chunk_malloc_max);
1228
-
1229
- and you can retrieve the limit with
1230
-
1231
- chunk_malloc_max = png_get_chunk_malloc_max(png_ptr);
1232
-
1233
- Any chunks that would cause either of these limits to be exceeded will
1234
- be ignored.
1235
-
1236
- .SS The high-level read interface
1237
-
1238
- At this point there are two ways to proceed; through the high-level
1239
- read interface, or through a sequence of low-level read operations.
1240
- You can use the high-level interface if (a) you are willing to read
1241
- the entire image into memory, and (b) the input transformations
1242
- you want to do are limited to the following set:
1243
-
1244
- PNG_TRANSFORM_IDENTITY No transformation
1245
- PNG_TRANSFORM_STRIP_16 Strip 16-bit samples to
1246
- 8 bits
1247
- PNG_TRANSFORM_STRIP_ALPHA Discard the alpha channel
1248
- PNG_TRANSFORM_PACKING Expand 1, 2 and 4-bit
1249
- samples to bytes
1250
- PNG_TRANSFORM_PACKSWAP Change order of packed
1251
- pixels to LSB first
1252
- PNG_TRANSFORM_EXPAND Perform set_expand()
1253
- PNG_TRANSFORM_INVERT_MONO Invert monochrome images
1254
- PNG_TRANSFORM_SHIFT Normalize pixels to the
1255
- sBIT depth
1256
- PNG_TRANSFORM_BGR Flip RGB to BGR, RGBA
1257
- to BGRA
1258
- PNG_TRANSFORM_SWAP_ALPHA Flip RGBA to ARGB or GA
1259
- to AG
1260
- PNG_TRANSFORM_INVERT_ALPHA Change alpha from opacity
1261
- to transparency
1262
- PNG_TRANSFORM_SWAP_ENDIAN Byte-swap 16-bit samples
1263
- PNG_TRANSFORM_GRAY_TO_RGB Expand grayscale samples
1264
- to RGB (or GA to RGBA)
1265
-
1266
- (This excludes setting a background color, doing gamma transformation,
1267
- quantizing, and setting filler.) If this is the case, simply do this:
1268
-
1269
- png_read_png(png_ptr, info_ptr, png_transforms, NULL)
1270
-
1271
- where png_transforms is an integer containing the bitwise OR of some
1272
- set of transformation flags. This call is equivalent to png_read_info(),
1273
- followed the set of transformations indicated by the transform mask,
1274
- then png_read_image(), and finally png_read_end().
1275
-
1276
- (The final parameter of this call is not yet used. Someday it might point
1277
- to transformation parameters required by some future input transform.)
1278
-
1279
- You must use png_transforms and not call any png_set_transform() functions
1280
- when you use png_read_png().
1281
-
1282
- After you have called png_read_png(), you can retrieve the image data
1283
- with
1284
-
1285
- row_pointers = png_get_rows(png_ptr, info_ptr);
1286
-
1287
- where row_pointers is an array of pointers to the pixel data for each row:
1288
-
1289
- png_bytep row_pointers[height];
1290
-
1291
- If you know your image size and pixel size ahead of time, you can allocate
1292
- row_pointers prior to calling png_read_png() with
1293
-
1294
- if (height > PNG_UINT_32_MAX/png_sizeof(png_byte))
1295
- png_error (png_ptr,
1296
- "Image is too tall to process in memory");
1297
- if (width > PNG_UINT_32_MAX/pixel_size)
1298
- png_error (png_ptr,
1299
- "Image is too wide to process in memory");
1300
- row_pointers = png_malloc(png_ptr,
1301
- height*png_sizeof(png_bytep));
1302
- for (int i=0; i<height, i++)
1303
- row_pointers[i]=NULL; /* security precaution */
1304
- for (int i=0; i<height, i++)
1305
- row_pointers[i]=png_malloc(png_ptr,
1306
- width*pixel_size);
1307
- png_set_rows(png_ptr, info_ptr, &row_pointers);
1308
-
1309
- Alternatively you could allocate your image in one big block and define
1310
- row_pointers[i] to point into the proper places in your block.
1311
-
1312
- If you use png_set_rows(), the application is responsible for freeing
1313
- row_pointers (and row_pointers[i], if they were separately allocated).
1314
-
1315
- If you don't allocate row_pointers ahead of time, png_read_png() will
1316
- do it, and it'll be free'ed when you call png_destroy_*().
1317
-
1318
- .SS The low-level read interface
1319
-
1320
- If you are going the low-level route, you are now ready to read all
1321
- the file information up to the actual image data. You do this with a
1322
- call to png_read_info().
1323
-
1324
- png_read_info(png_ptr, info_ptr);
1325
-
1326
- This will process all chunks up to but not including the image data.
1327
-
1328
- .SS Querying the info structure
1329
-
1330
- Functions are used to get the information from the info_ptr once it
1331
- has been read. Note that these fields may not be completely filled
1332
- in until png_read_end() has read the chunk data following the image.
1333
-
1334
- png_get_IHDR(png_ptr, info_ptr, &width, &height,
1335
- &bit_depth, &color_type, &interlace_type,
1336
- &compression_type, &filter_method);
1337
-
1338
- width - holds the width of the image
1339
- in pixels (up to 2^31).
1340
- height - holds the height of the image
1341
- in pixels (up to 2^31).
1342
- bit_depth - holds the bit depth of one of the
1343
- image channels. (valid values are
1344
- 1, 2, 4, 8, 16 and depend also on
1345
- the color_type. See also
1346
- significant bits (sBIT) below).
1347
- color_type - describes which color/alpha channels
1348
- are present.
1349
- PNG_COLOR_TYPE_GRAY
1350
- (bit depths 1, 2, 4, 8, 16)
1351
- PNG_COLOR_TYPE_GRAY_ALPHA
1352
- (bit depths 8, 16)
1353
- PNG_COLOR_TYPE_PALETTE
1354
- (bit depths 1, 2, 4, 8)
1355
- PNG_COLOR_TYPE_RGB
1356
- (bit_depths 8, 16)
1357
- PNG_COLOR_TYPE_RGB_ALPHA
1358
- (bit_depths 8, 16)
1359
-
1360
- PNG_COLOR_MASK_PALETTE
1361
- PNG_COLOR_MASK_COLOR
1362
- PNG_COLOR_MASK_ALPHA
1363
-
1364
- filter_method - (must be PNG_FILTER_TYPE_BASE
1365
- for PNG 1.0, and can also be
1366
- PNG_INTRAPIXEL_DIFFERENCING if
1367
- the PNG datastream is embedded in
1368
- a MNG-1.0 datastream)
1369
- compression_type - (must be PNG_COMPRESSION_TYPE_BASE
1370
- for PNG 1.0)
1371
- interlace_type - (PNG_INTERLACE_NONE or
1372
- PNG_INTERLACE_ADAM7)
1373
-
1374
- Any or all of interlace_type, compression_type, or
1375
- filter_method can be NULL if you are
1376
- not interested in their values.
1377
-
1378
- Note that png_get_IHDR() returns 32-bit data into
1379
- the application's width and height variables.
1380
- This is an unsafe situation if these are 16-bit
1381
- variables. In such situations, the
1382
- png_get_image_width() and png_get_image_height()
1383
- functions described below are safer.
1384
-
1385
- width = png_get_image_width(png_ptr,
1386
- info_ptr);
1387
- height = png_get_image_height(png_ptr,
1388
- info_ptr);
1389
- bit_depth = png_get_bit_depth(png_ptr,
1390
- info_ptr);
1391
- color_type = png_get_color_type(png_ptr,
1392
- info_ptr);
1393
- filter_method = png_get_filter_type(png_ptr,
1394
- info_ptr);
1395
- compression_type = png_get_compression_type(png_ptr,
1396
- info_ptr);
1397
- interlace_type = png_get_interlace_type(png_ptr,
1398
- info_ptr);
1399
-
1400
- channels = png_get_channels(png_ptr, info_ptr);
1401
- channels - number of channels of info for the
1402
- color type (valid values are 1 (GRAY,
1403
- PALETTE), 2 (GRAY_ALPHA), 3 (RGB),
1404
- 4 (RGB_ALPHA or RGB + filler byte))
1405
- rowbytes = png_get_rowbytes(png_ptr, info_ptr);
1406
- rowbytes - number of bytes needed to hold a row
1407
-
1408
- signature = png_get_signature(png_ptr, info_ptr);
1409
- signature - holds the signature read from the
1410
- file (if any). The data is kept in
1411
- the same offset it would be if the
1412
- whole signature were read (i.e. if an
1413
- application had already read in 4
1414
- bytes of signature before starting
1415
- libpng, the remaining 4 bytes would
1416
- be in signature[4] through signature[7]
1417
- (see png_set_sig_bytes())).
1418
-
1419
- These are also important, but their validity depends on whether the chunk
1420
- has been read. The png_get_valid(png_ptr, info_ptr, PNG_INFO_<chunk>) and
1421
- png_get_<chunk>(png_ptr, info_ptr, ...) functions return non-zero if the
1422
- data has been read, or zero if it is missing. The parameters to the
1423
- png_get_<chunk> are set directly if they are simple data types, or a
1424
- pointer into the info_ptr is returned for any complex types.
1425
-
1426
- png_get_PLTE(png_ptr, info_ptr, &palette,
1427
- &num_palette);
1428
- palette - the palette for the file
1429
- (array of png_color)
1430
- num_palette - number of entries in the palette
1431
-
1432
- png_get_gAMA(png_ptr, info_ptr, &gamma);
1433
- gamma - the gamma the file is written
1434
- at (PNG_INFO_gAMA)
1435
-
1436
- png_get_sRGB(png_ptr, info_ptr, &srgb_intent);
1437
- srgb_intent - the rendering intent (PNG_INFO_sRGB)
1438
- The presence of the sRGB chunk
1439
- means that the pixel data is in the
1440
- sRGB color space. This chunk also
1441
- implies specific values of gAMA and
1442
- cHRM.
1443
-
1444
- png_get_iCCP(png_ptr, info_ptr, &name,
1445
- &compression_type, &profile, &proflen);
1446
- name - The profile name.
1447
- compression - The compression type; always
1448
- PNG_COMPRESSION_TYPE_BASE for PNG 1.0.
1449
- You may give NULL to this argument to
1450
- ignore it.
1451
- profile - International Color Consortium color
1452
- profile data. May contain NULs.
1453
- proflen - length of profile data in bytes.
1454
-
1455
- png_get_sBIT(png_ptr, info_ptr, &sig_bit);
1456
- sig_bit - the number of significant bits for
1457
- (PNG_INFO_sBIT) each of the gray,
1458
- red, green, and blue channels,
1459
- whichever are appropriate for the
1460
- given color type (png_color_16)
1461
-
1462
- png_get_tRNS(png_ptr, info_ptr, &trans_alpha,
1463
- &num_trans, &trans_color);
1464
- trans_alpha - array of alpha (transparency)
1465
- entries for palette (PNG_INFO_tRNS)
1466
- trans_color - graylevel or color sample values of
1467
- the single transparent color for
1468
- non-paletted images (PNG_INFO_tRNS)
1469
- num_trans - number of transparent entries
1470
- (PNG_INFO_tRNS)
1471
-
1472
- png_get_hIST(png_ptr, info_ptr, &hist);
1473
- (PNG_INFO_hIST)
1474
- hist - histogram of palette (array of
1475
- png_uint_16)
1476
-
1477
- png_get_tIME(png_ptr, info_ptr, &mod_time);
1478
- mod_time - time image was last modified
1479
- (PNG_VALID_tIME)
1480
-
1481
- png_get_bKGD(png_ptr, info_ptr, &background);
1482
- background - background color (PNG_VALID_bKGD)
1483
- valid 16-bit red, green and blue
1484
- values, regardless of color_type
1485
-
1486
- num_comments = png_get_text(png_ptr, info_ptr,
1487
- &text_ptr, &num_text);
1488
- num_comments - number of comments
1489
- text_ptr - array of png_text holding image
1490
- comments
1491
- text_ptr[i].compression - type of compression used
1492
- on "text" PNG_TEXT_COMPRESSION_NONE
1493
- PNG_TEXT_COMPRESSION_zTXt
1494
- PNG_ITXT_COMPRESSION_NONE
1495
- PNG_ITXT_COMPRESSION_zTXt
1496
- text_ptr[i].key - keyword for comment. Must contain
1497
- 1-79 characters.
1498
- text_ptr[i].text - text comments for current
1499
- keyword. Can be empty.
1500
- text_ptr[i].text_length - length of text string,
1501
- after decompression, 0 for iTXt
1502
- text_ptr[i].itxt_length - length of itxt string,
1503
- after decompression, 0 for tEXt/zTXt
1504
- text_ptr[i].lang - language of comment (empty
1505
- string for unknown).
1506
- text_ptr[i].lang_key - keyword in UTF-8
1507
- (empty string for unknown).
1508
- Note that the itxt_length, lang, and lang_key
1509
- members of the text_ptr structure only exist
1510
- when the library is built with iTXt chunk support.
1511
-
1512
- num_text - number of comments (same as
1513
- num_comments; you can put NULL here
1514
- to avoid the duplication)
1515
- Note while png_set_text() will accept text, language,
1516
- and translated keywords that can be NULL pointers, the
1517
- structure returned by png_get_text will always contain
1518
- regular zero-terminated C strings. They might be
1519
- empty strings but they will never be NULL pointers.
1520
-
1521
- num_spalettes = png_get_sPLT(png_ptr, info_ptr,
1522
- &palette_ptr);
1523
- palette_ptr - array of palette structures holding
1524
- contents of one or more sPLT chunks
1525
- read.
1526
- num_spalettes - number of sPLT chunks read.
1527
-
1528
- png_get_oFFs(png_ptr, info_ptr, &offset_x, &offset_y,
1529
- &unit_type);
1530
- offset_x - positive offset from the left edge
1531
- of the screen
1532
- offset_y - positive offset from the top edge
1533
- of the screen
1534
- unit_type - PNG_OFFSET_PIXEL, PNG_OFFSET_MICROMETER
1535
-
1536
- png_get_pHYs(png_ptr, info_ptr, &res_x, &res_y,
1537
- &unit_type);
1538
- res_x - pixels/unit physical resolution in
1539
- x direction
1540
- res_y - pixels/unit physical resolution in
1541
- x direction
1542
- unit_type - PNG_RESOLUTION_UNKNOWN,
1543
- PNG_RESOLUTION_METER
1544
-
1545
- png_get_sCAL(png_ptr, info_ptr, &unit, &width,
1546
- &height)
1547
- unit - physical scale units (an integer)
1548
- width - width of a pixel in physical scale units
1549
- height - height of a pixel in physical scale units
1550
- (width and height are doubles)
1551
-
1552
- png_get_sCAL_s(png_ptr, info_ptr, &unit, &width,
1553
- &height)
1554
- unit - physical scale units (an integer)
1555
- width - width of a pixel in physical scale units
1556
- height - height of a pixel in physical scale units
1557
- (width and height are strings like "2.54")
1558
-
1559
- num_unknown_chunks = png_get_unknown_chunks(png_ptr,
1560
- info_ptr, &unknowns)
1561
- unknowns - array of png_unknown_chunk
1562
- structures holding unknown chunks
1563
- unknowns[i].name - name of unknown chunk
1564
- unknowns[i].data - data of unknown chunk
1565
- unknowns[i].size - size of unknown chunk's data
1566
- unknowns[i].location - position of chunk in file
1567
-
1568
- The value of "i" corresponds to the order in which the
1569
- chunks were read from the PNG file or inserted with the
1570
- png_set_unknown_chunks() function.
1571
-
1572
- The data from the pHYs chunk can be retrieved in several convenient
1573
- forms:
1574
-
1575
- res_x = png_get_x_pixels_per_meter(png_ptr,
1576
- info_ptr)
1577
- res_y = png_get_y_pixels_per_meter(png_ptr,
1578
- info_ptr)
1579
- res_x_and_y = png_get_pixels_per_meter(png_ptr,
1580
- info_ptr)
1581
- res_x = png_get_x_pixels_per_inch(png_ptr,
1582
- info_ptr)
1583
- res_y = png_get_y_pixels_per_inch(png_ptr,
1584
- info_ptr)
1585
- res_x_and_y = png_get_pixels_per_inch(png_ptr,
1586
- info_ptr)
1587
- aspect_ratio = png_get_pixel_aspect_ratio(png_ptr,
1588
- info_ptr)
1589
-
1590
- (Each of these returns 0 [signifying "unknown"] if
1591
- the data is not present or if res_x is 0;
1592
- res_x_and_y is 0 if res_x != res_y)
1593
-
1594
- The data from the oFFs chunk can be retrieved in several convenient
1595
- forms:
1596
-
1597
- x_offset = png_get_x_offset_microns(png_ptr, info_ptr);
1598
- y_offset = png_get_y_offset_microns(png_ptr, info_ptr);
1599
- x_offset = png_get_x_offset_inches(png_ptr, info_ptr);
1600
- y_offset = png_get_y_offset_inches(png_ptr, info_ptr);
1601
-
1602
- (Each of these returns 0 [signifying "unknown" if both
1603
- x and y are 0] if the data is not present or if the
1604
- chunk is present but the unit is the pixel)
1605
-
1606
- For more information, see the png_info definition in png.h and the
1607
- PNG specification for chunk contents. Be careful with trusting
1608
- rowbytes, as some of the transformations could increase the space
1609
- needed to hold a row (expand, filler, gray_to_rgb, etc.).
1610
- See png_read_update_info(), below.
1611
-
1612
- A quick word about text_ptr and num_text. PNG stores comments in
1613
- keyword/text pairs, one pair per chunk, with no limit on the number
1614
- of text chunks, and a 2^31 byte limit on their size. While there are
1615
- suggested keywords, there is no requirement to restrict the use to these
1616
- strings. It is strongly suggested that keywords and text be sensible
1617
- to humans (that's the point), so don't use abbreviations. Non-printing
1618
- symbols are not allowed. See the PNG specification for more details.
1619
- There is also no requirement to have text after the keyword.
1620
-
1621
- Keywords should be limited to 79 Latin-1 characters without leading or
1622
- trailing spaces, but non-consecutive spaces are allowed within the
1623
- keyword. It is possible to have the same keyword any number of times.
1624
- The text_ptr is an array of png_text structures, each holding a
1625
- pointer to a language string, a pointer to a keyword and a pointer to
1626
- a text string. The text string, language code, and translated
1627
- keyword may be empty or NULL pointers. The keyword/text
1628
- pairs are put into the array in the order that they are received.
1629
- However, some or all of the text chunks may be after the image, so, to
1630
- make sure you have read all the text chunks, don't mess with these
1631
- until after you read the stuff after the image. This will be
1632
- mentioned again below in the discussion that goes with png_read_end().
1633
-
1634
- .SS Input transformations
1635
-
1636
- After you've read the header information, you can set up the library
1637
- to handle any special transformations of the image data. The various
1638
- ways to transform the data will be described in the order that they
1639
- should occur. This is important, as some of these change the color
1640
- type and/or bit depth of the data, and some others only work on
1641
- certain color types and bit depths. Even though each transformation
1642
- checks to see if it has data that it can do something with, you should
1643
- make sure to only enable a transformation if it will be valid for the
1644
- data. For example, don't swap red and blue on grayscale data.
1645
-
1646
- The colors used for the background and transparency values should be
1647
- supplied in the same format/depth as the current image data. They
1648
- are stored in the same format/depth as the image data in a bKGD or tRNS
1649
- chunk, so this is what libpng expects for this data. The colors are
1650
- transformed to keep in sync with the image data when an application
1651
- calls the png_read_update_info() routine (see below).
1652
-
1653
- Data will be decoded into the supplied row buffers packed into bytes
1654
- unless the library has been told to transform it into another format.
1655
- For example, 4 bit/pixel paletted or grayscale data will be returned
1656
- 2 pixels/byte with the leftmost pixel in the high-order bits of the
1657
- byte, unless png_set_packing() is called. 8-bit RGB data will be stored
1658
- in RGB RGB RGB format unless png_set_filler() or png_set_add_alpha()
1659
- is called to insert filler bytes, either before or after each RGB triplet.
1660
- 16-bit RGB data will be returned RRGGBB RRGGBB, with the most significant
1661
- byte of the color value first, unless png_set_strip_16() is called to
1662
- transform it to regular RGB RGB triplets, or png_set_filler() or
1663
- png_set_add alpha() is called to insert filler bytes, either before or
1664
- after each RRGGBB triplet. Similarly, 8-bit or 16-bit grayscale data can
1665
- be modified with
1666
- png_set_filler(), png_set_add_alpha(), or png_set_strip_16().
1667
-
1668
- The following code transforms grayscale images of less than 8 to 8 bits,
1669
- changes paletted images to RGB, and adds a full alpha channel if there is
1670
- transparency information in a tRNS chunk. This is most useful on
1671
- grayscale images with bit depths of 2 or 4 or if there is a multiple-image
1672
- viewing application that wishes to treat all images in the same way.
1673
-
1674
- if (color_type == PNG_COLOR_TYPE_PALETTE)
1675
- png_set_palette_to_rgb(png_ptr);
1676
-
1677
- if (color_type == PNG_COLOR_TYPE_GRAY &&
1678
- bit_depth < 8) png_set_expand_gray_1_2_4_to_8(png_ptr);
1679
-
1680
- if (png_get_valid(png_ptr, info_ptr,
1681
- PNG_INFO_tRNS)) png_set_tRNS_to_alpha(png_ptr);
1682
-
1683
- These three functions are actually aliases for png_set_expand(), added
1684
- in libpng version 1.0.4, with the function names expanded to improve code
1685
- readability. In some future version they may actually do different
1686
- things.
1687
-
1688
- As of libpng version 1.2.9, png_set_expand_gray_1_2_4_to_8() was
1689
- added. It expands the sample depth without changing tRNS to alpha.
1690
-
1691
- As of libpng version 1.4.3, not all possible expansions are supported.
1692
-
1693
- In the following table, the 01 means grayscale with depth<8, 31 means
1694
- indexed with depth<8, other numerals represent the color type, "T" means
1695
- the tRNS chunk is present, A means an alpha channel is present, and O
1696
- means tRNS or alpha is present but all pixels in the image are opaque.
1697
-
1698
- FROM 01 31 0 0T 0O 2 2T 2O 3 3T 3O 4A 4O 6A 6O
1699
- TO
1700
- 01 -
1701
- 31 -
1702
- 0 1 -
1703
- 0T -
1704
- 0O -
1705
- 2 GX -
1706
- 2T -
1707
- 2O -
1708
- 3 1 -
1709
- 3T -
1710
- 3O -
1711
- 4A T -
1712
- 4O -
1713
- 6A GX TX TX -
1714
- 6O GX TX -
1715
-
1716
- Within the matrix,
1717
- "-" means the transformation is not supported.
1718
- "X" means the transformation is obtained by png_set_expand().
1719
- "1" means the transformation is obtained by
1720
- png_set_expand_gray_1_2_4_to_8
1721
- "G" means the transformation is obtained by
1722
- png_set_gray_to_rgb().
1723
- "P" means the transformation is obtained by
1724
- png_set_expand_palette_to_rgb().
1725
- "T" means the transformation is obtained by
1726
- png_set_tRNS_to_alpha().
1727
-
1728
- PNG can have files with 16 bits per channel. If you only can handle
1729
- 8 bits per channel, this will strip the pixels down to 8 bit.
1730
-
1731
- if (bit_depth == 16)
1732
- png_set_strip_16(png_ptr);
1733
-
1734
- If, for some reason, you don't need the alpha channel on an image,
1735
- and you want to remove it rather than combining it with the background
1736
- (but the image author certainly had in mind that you *would* combine
1737
- it with the background, so that's what you should probably do):
1738
-
1739
- if (color_type & PNG_COLOR_MASK_ALPHA)
1740
- png_set_strip_alpha(png_ptr);
1741
-
1742
- In PNG files, the alpha channel in an image
1743
- is the level of opacity. If you need the alpha channel in an image to
1744
- be the level of transparency instead of opacity, you can invert the
1745
- alpha channel (or the tRNS chunk data) after it's read, so that 0 is
1746
- fully opaque and 255 (in 8-bit or paletted images) or 65535 (in 16-bit
1747
- images) is fully transparent, with
1748
-
1749
- png_set_invert_alpha(png_ptr);
1750
-
1751
- PNG files pack pixels of bit depths 1, 2, and 4 into bytes as small as
1752
- they can, resulting in, for example, 8 pixels per byte for 1 bit
1753
- files. This code expands to 1 pixel per byte without changing the
1754
- values of the pixels:
1755
-
1756
- if (bit_depth < 8)
1757
- png_set_packing(png_ptr);
1758
-
1759
- PNG files have possible bit depths of 1, 2, 4, 8, and 16. All pixels
1760
- stored in a PNG image have been "scaled" or "shifted" up to the next
1761
- higher possible bit depth (e.g. from 5 bits/sample in the range [0,31]
1762
- to 8 bits/sample in the range [0, 255]). However, it is also possible
1763
- to convert the PNG pixel data back to the original bit depth of the
1764
- image. This call reduces the pixels back down to the original bit depth:
1765
-
1766
- png_color_8p sig_bit;
1767
-
1768
- if (png_get_sBIT(png_ptr, info_ptr, &sig_bit))
1769
- png_set_shift(png_ptr, sig_bit);
1770
-
1771
- PNG files store 3-color pixels in red, green, blue order. This code
1772
- changes the storage of the pixels to blue, green, red:
1773
-
1774
- if (color_type == PNG_COLOR_TYPE_RGB ||
1775
- color_type == PNG_COLOR_TYPE_RGB_ALPHA)
1776
- png_set_bgr(png_ptr);
1777
-
1778
- PNG files store RGB pixels packed into 3 or 6 bytes. This code expands them
1779
- into 4 or 8 bytes for windowing systems that need them in this format:
1780
-
1781
- if (color_type == PNG_COLOR_TYPE_RGB)
1782
- png_set_filler(png_ptr, filler, PNG_FILLER_BEFORE);
1783
-
1784
- where "filler" is the 8 or 16-bit number to fill with, and the location is
1785
- either PNG_FILLER_BEFORE or PNG_FILLER_AFTER, depending upon whether
1786
- you want the filler before the RGB or after. This transformation
1787
- does not affect images that already have full alpha channels. To add an
1788
- opaque alpha channel, use filler=0xff or 0xffff and PNG_FILLER_AFTER which
1789
- will generate RGBA pixels.
1790
-
1791
- Note that png_set_filler() does not change the color type. If you want
1792
- to do that, you can add a true alpha channel with
1793
-
1794
- if (color_type == PNG_COLOR_TYPE_RGB ||
1795
- color_type == PNG_COLOR_TYPE_GRAY)
1796
- png_set_add_alpha(png_ptr, filler, PNG_FILLER_AFTER);
1797
-
1798
- where "filler" contains the alpha value to assign to each pixel.
1799
- This function was added in libpng-1.2.7.
1800
-
1801
- If you are reading an image with an alpha channel, and you need the
1802
- data as ARGB instead of the normal PNG format RGBA:
1803
-
1804
- if (color_type == PNG_COLOR_TYPE_RGB_ALPHA)
1805
- png_set_swap_alpha(png_ptr);
1806
-
1807
- For some uses, you may want a grayscale image to be represented as
1808
- RGB. This code will do that conversion:
1809
-
1810
- if (color_type == PNG_COLOR_TYPE_GRAY ||
1811
- color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
1812
- png_set_gray_to_rgb(png_ptr);
1813
-
1814
- Conversely, you can convert an RGB or RGBA image to grayscale or grayscale
1815
- with alpha.
1816
-
1817
- if (color_type == PNG_COLOR_TYPE_RGB ||
1818
- color_type == PNG_COLOR_TYPE_RGB_ALPHA)
1819
- png_set_rgb_to_gray_fixed(png_ptr, error_action,
1820
- int red_weight, int green_weight);
1821
-
1822
- error_action = 1: silently do the conversion
1823
- error_action = 2: issue a warning if the original
1824
- image has any pixel where
1825
- red != green or red != blue
1826
- error_action = 3: issue an error and abort the
1827
- conversion if the original
1828
- image has any pixel where
1829
- red != green or red != blue
1830
-
1831
- red_weight: weight of red component times 100000
1832
- green_weight: weight of green component times 100000
1833
- If either weight is negative, default
1834
- weights (21268, 71514) are used.
1835
-
1836
- If you have set error_action = 1 or 2, you can
1837
- later check whether the image really was gray, after processing
1838
- the image rows, with the png_get_rgb_to_gray_status(png_ptr) function.
1839
- It will return a png_byte that is zero if the image was gray or
1840
- 1 if there were any non-gray pixels. bKGD and sBIT data
1841
- will be silently converted to grayscale, using the green channel
1842
- data, regardless of the error_action setting.
1843
-
1844
- With red_weight+green_weight<=100000,
1845
- the normalized graylevel is computed:
1846
-
1847
- int rw = red_weight * 65536;
1848
- int gw = green_weight * 65536;
1849
- int bw = 65536 - (rw + gw);
1850
- gray = (rw*red + gw*green + bw*blue)/65536;
1851
-
1852
- The default values approximate those recommended in the Charles
1853
- Poynton's Color FAQ, <http://www.inforamp.net/~poynton/>
1854
- Copyright (c) 1998-01-04 Charles Poynton <poynton at inforamp.net>
1855
-
1856
- Y = 0.212671 * R + 0.715160 * G + 0.072169 * B
1857
-
1858
- Libpng approximates this with
1859
-
1860
- Y = 0.21268 * R + 0.7151 * G + 0.07217 * B
1861
-
1862
- which can be expressed with integers as
1863
-
1864
- Y = (6969 * R + 23434 * G + 2365 * B)/32768
1865
-
1866
- The calculation is done in a linear colorspace, if the image gamma
1867
- is known.
1868
-
1869
- If you have a grayscale and you are using png_set_expand_depth(),
1870
- png_set_expand(), or png_set_gray_to_rgb to change to truecolor or to
1871
- a higher bit-depth, you must either supply the background color as a gray
1872
- value at the original file bit-depth (need_expand = 1) or else supply the
1873
- background color as an RGB triplet at the final, expanded bit depth
1874
- (need_expand = 0). Similarly, if you are reading a paletted image, you
1875
- must either supply the background color as a palette index (need_expand = 1)
1876
- or as an RGB triplet that may or may not be in the palette (need_expand = 0).
1877
-
1878
- png_color_16 my_background;
1879
- png_color_16p image_background;
1880
-
1881
- if (png_get_bKGD(png_ptr, info_ptr, &image_background))
1882
- png_set_background(png_ptr, image_background,
1883
- PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
1884
- else
1885
- png_set_background(png_ptr, &my_background,
1886
- PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
1887
-
1888
- The png_set_background() function tells libpng to composite images
1889
- with alpha or simple transparency against the supplied background
1890
- color. If the PNG file contains a bKGD chunk (PNG_INFO_bKGD valid),
1891
- you may use this color, or supply another color more suitable for
1892
- the current display (e.g., the background color from a web page). You
1893
- need to tell libpng whether the color is in the gamma space of the
1894
- display (PNG_BACKGROUND_GAMMA_SCREEN for colors you supply), the file
1895
- (PNG_BACKGROUND_GAMMA_FILE for colors from the bKGD chunk), or one
1896
- that is neither of these gammas (PNG_BACKGROUND_GAMMA_UNIQUE - I don't
1897
- know why anyone would use this, but it's here).
1898
-
1899
- To properly display PNG images on any kind of system, the application needs
1900
- to know what the display gamma is. Ideally, the user will know this, and
1901
- the application will allow them to set it. One method of allowing the user
1902
- to set the display gamma separately for each system is to check for a
1903
- SCREEN_GAMMA or DISPLAY_GAMMA environment variable, which will hopefully be
1904
- correctly set.
1905
-
1906
- Note that display_gamma is the overall gamma correction required to produce
1907
- pleasing results, which depends on the lighting conditions in the surrounding
1908
- environment. In a dim or brightly lit room, no compensation other than
1909
- the physical gamma exponent of the monitor is needed, while in a dark room
1910
- a slightly smaller exponent is better.
1911
-
1912
- double gamma, screen_gamma;
1913
-
1914
- if (/* We have a user-defined screen
1915
- gamma value */)
1916
- {
1917
- screen_gamma = user_defined_screen_gamma;
1918
- }
1919
- /* One way that applications can share the same
1920
- screen gamma value */
1921
- else if ((gamma_str = getenv("SCREEN_GAMMA"))
1922
- != NULL)
1923
- {
1924
- screen_gamma = (double)atof(gamma_str);
1925
- }
1926
- /* If we don't have another value */
1927
- else
1928
- {
1929
- screen_gamma = 2.2; /* A good guess for a
1930
- PC monitor in a bright office or a dim room */
1931
- screen_gamma = 2.0; /* A good guess for a
1932
- PC monitor in a dark room */
1933
- screen_gamma = 1.7 or 1.0; /* A good
1934
- guess for Mac systems */
1935
- }
1936
-
1937
- The png_set_gamma() function handles gamma transformations of the data.
1938
- Pass both the file gamma and the current screen_gamma. If the file does
1939
- not have a gamma value, you can pass one anyway if you have an idea what
1940
- it is (usually 0.45455 is a good guess for GIF images on PCs). Note
1941
- that file gammas are inverted from screen gammas. See the discussions
1942
- on gamma in the PNG specification for an excellent description of what
1943
- gamma is, and why all applications should support it. It is strongly
1944
- recommended that PNG viewers support gamma correction.
1945
-
1946
- if (png_get_gAMA(png_ptr, info_ptr, &gamma))
1947
- png_set_gamma(png_ptr, screen_gamma, gamma);
1948
- else
1949
- png_set_gamma(png_ptr, screen_gamma, 0.45455);
1950
-
1951
- If you need to reduce an RGB file to a paletted file, or if a paletted
1952
- file has more entries then will fit on your screen, png_set_quantize()
1953
- will do that. Note that this is a simple match dither that merely
1954
- finds the closest color available. This should work fairly well with
1955
- optimized palettes, and fairly badly with linear color cubes. If you
1956
- pass a palette that is larger then maximum_colors, the file will
1957
- reduce the number of colors in the palette so it will fit into
1958
- maximum_colors. If there is a histogram, it will use it to make
1959
- more intelligent choices when reducing the palette. If there is no
1960
- histogram, it may not do as good a job.
1961
-
1962
- if (color_type & PNG_COLOR_MASK_COLOR)
1963
- {
1964
- if (png_get_valid(png_ptr, info_ptr,
1965
- PNG_INFO_PLTE))
1966
- {
1967
- png_uint_16p histogram = NULL;
1968
-
1969
- png_get_hIST(png_ptr, info_ptr,
1970
- &histogram);
1971
- png_set_quantize(png_ptr, palette, num_palette,
1972
- max_screen_colors, histogram, 1);
1973
- }
1974
- else
1975
- {
1976
- png_color std_color_cube[MAX_SCREEN_COLORS] =
1977
- { ... colors ... };
1978
-
1979
- png_set_quantize(png_ptr, std_color_cube,
1980
- MAX_SCREEN_COLORS, MAX_SCREEN_COLORS,
1981
- NULL,0);
1982
- }
1983
- }
1984
-
1985
- PNG files describe monochrome as black being zero and white being one.
1986
- The following code will reverse this (make black be one and white be
1987
- zero):
1988
-
1989
- if (bit_depth == 1 && color_type == PNG_COLOR_TYPE_GRAY)
1990
- png_set_invert_mono(png_ptr);
1991
-
1992
- This function can also be used to invert grayscale and gray-alpha images:
1993
-
1994
- if (color_type == PNG_COLOR_TYPE_GRAY ||
1995
- color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
1996
- png_set_invert_mono(png_ptr);
1997
-
1998
- PNG files store 16 bit pixels in network byte order (big-endian,
1999
- ie. most significant bits first). This code changes the storage to the
2000
- other way (little-endian, i.e. least significant bits first, the
2001
- way PCs store them):
2002
-
2003
- if (bit_depth == 16)
2004
- png_set_swap(png_ptr);
2005
-
2006
- If you are using packed-pixel images (1, 2, or 4 bits/pixel), and you
2007
- need to change the order the pixels are packed into bytes, you can use:
2008
-
2009
- if (bit_depth < 8)
2010
- png_set_packswap(png_ptr);
2011
-
2012
- Finally, you can write your own transformation function if none of
2013
- the existing ones meets your needs. This is done by setting a callback
2014
- with
2015
-
2016
- png_set_read_user_transform_fn(png_ptr,
2017
- read_transform_fn);
2018
-
2019
- You must supply the function
2020
-
2021
- void read_transform_fn(png_ptr ptr, row_info_ptr
2022
- row_info, png_bytep data)
2023
-
2024
- See pngtest.c for a working example. Your function will be called
2025
- after all of the other transformations have been processed.
2026
-
2027
- You can also set up a pointer to a user structure for use by your
2028
- callback function, and you can inform libpng that your transform
2029
- function will change the number of channels or bit depth with the
2030
- function
2031
-
2032
- png_set_user_transform_info(png_ptr, user_ptr,
2033
- user_depth, user_channels);
2034
-
2035
- The user's application, not libpng, is responsible for allocating and
2036
- freeing any memory required for the user structure.
2037
-
2038
- You can retrieve the pointer via the function
2039
- png_get_user_transform_ptr(). For example:
2040
-
2041
- voidp read_user_transform_ptr =
2042
- png_get_user_transform_ptr(png_ptr);
2043
-
2044
- The last thing to handle is interlacing; this is covered in detail below,
2045
- but you must call the function here if you want libpng to handle expansion
2046
- of the interlaced image.
2047
-
2048
- number_of_passes = png_set_interlace_handling(png_ptr);
2049
-
2050
- After setting the transformations, libpng can update your png_info
2051
- structure to reflect any transformations you've requested with this
2052
- call. This is most useful to update the info structure's rowbytes
2053
- field so you can use it to allocate your image memory. This function
2054
- will also update your palette with the correct screen_gamma and
2055
- background if these have been given with the calls above.
2056
-
2057
- png_read_update_info(png_ptr, info_ptr);
2058
-
2059
- After you call png_read_update_info(), you can allocate any
2060
- memory you need to hold the image. The row data is simply
2061
- raw byte data for all forms of images. As the actual allocation
2062
- varies among applications, no example will be given. If you
2063
- are allocating one large chunk, you will need to build an
2064
- array of pointers to each row, as it will be needed for some
2065
- of the functions below.
2066
-
2067
- .SS Reading image data
2068
-
2069
- After you've allocated memory, you can read the image data.
2070
- The simplest way to do this is in one function call. If you are
2071
- allocating enough memory to hold the whole image, you can just
2072
- call png_read_image() and libpng will read in all the image data
2073
- and put it in the memory area supplied. You will need to pass in
2074
- an array of pointers to each row.
2075
-
2076
- This function automatically handles interlacing, so you don't need
2077
- to call png_set_interlace_handling() or call this function multiple
2078
- times, or any of that other stuff necessary with png_read_rows().
2079
-
2080
- png_read_image(png_ptr, row_pointers);
2081
-
2082
- where row_pointers is:
2083
-
2084
- png_bytep row_pointers[height];
2085
-
2086
- You can point to void or char or whatever you use for pixels.
2087
-
2088
- If you don't want to read in the whole image at once, you can
2089
- use png_read_rows() instead. If there is no interlacing (check
2090
- interlace_type == PNG_INTERLACE_NONE), this is simple:
2091
-
2092
- png_read_rows(png_ptr, row_pointers, NULL,
2093
- number_of_rows);
2094
-
2095
- where row_pointers is the same as in the png_read_image() call.
2096
-
2097
- If you are doing this just one row at a time, you can do this with
2098
- a single row_pointer instead of an array of row_pointers:
2099
-
2100
- png_bytep row_pointer = row;
2101
- png_read_row(png_ptr, row_pointer, NULL);
2102
-
2103
- If the file is interlaced (interlace_type != 0 in the IHDR chunk), things
2104
- get somewhat harder. The only current (PNG Specification version 1.2)
2105
- interlacing type for PNG is (interlace_type == PNG_INTERLACE_ADAM7)
2106
- is a somewhat complicated 2D interlace scheme, known as Adam7, that
2107
- breaks down an image into seven smaller images of varying size, based
2108
- on an 8x8 grid.
2109
-
2110
- libpng can fill out those images or it can give them to you "as is".
2111
- If you want them filled out, there are two ways to do that. The one
2112
- mentioned in the PNG specification is to expand each pixel to cover
2113
- those pixels that have not been read yet (the "rectangle" method).
2114
- This results in a blocky image for the first pass, which gradually
2115
- smooths out as more pixels are read. The other method is the "sparkle"
2116
- method, where pixels are drawn only in their final locations, with the
2117
- rest of the image remaining whatever colors they were initialized to
2118
- before the start of the read. The first method usually looks better,
2119
- but tends to be slower, as there are more pixels to put in the rows.
2120
-
2121
- If you don't want libpng to handle the interlacing details, just call
2122
- png_read_rows() seven times to read in all seven images. Each of the
2123
- images is a valid image by itself, or they can all be combined on an
2124
- 8x8 grid to form a single image (although if you intend to combine them
2125
- you would be far better off using the libpng interlace handling).
2126
-
2127
- The first pass will return an image 1/8 as wide as the entire image
2128
- (every 8th column starting in column 0) and 1/8 as high as the original
2129
- (every 8th row starting in row 0), the second will be 1/8 as wide
2130
- (starting in column 4) and 1/8 as high (also starting in row 0). The
2131
- third pass will be 1/4 as wide (every 4th pixel starting in column 0) and
2132
- 1/8 as high (every 8th row starting in row 4), and the fourth pass will
2133
- be 1/4 as wide and 1/4 as high (every 4th column starting in column 2,
2134
- and every 4th row starting in row 0). The fifth pass will return an
2135
- image 1/2 as wide, and 1/4 as high (starting at column 0 and row 2),
2136
- while the sixth pass will be 1/2 as wide and 1/2 as high as the original
2137
- (starting in column 1 and row 0). The seventh and final pass will be as
2138
- wide as the original, and 1/2 as high, containing all of the odd
2139
- numbered scanlines. Phew!
2140
-
2141
- If you want libpng to expand the images, call this before calling
2142
- png_start_read_image() or png_read_update_info():
2143
-
2144
- if (interlace_type == PNG_INTERLACE_ADAM7)
2145
- number_of_passes
2146
- = png_set_interlace_handling(png_ptr);
2147
-
2148
- This will return the number of passes needed. Currently, this
2149
- is seven, but may change if another interlace type is added.
2150
- This function can be called even if the file is not interlaced,
2151
- where it will return one pass.
2152
-
2153
- If you are not going to display the image after each pass, but are
2154
- going to wait until the entire image is read in, use the sparkle
2155
- effect. This effect is faster and the end result of either method
2156
- is exactly the same. If you are planning on displaying the image
2157
- after each pass, the "rectangle" effect is generally considered the
2158
- better looking one.
2159
-
2160
- If you only want the "sparkle" effect, just call png_read_rows() as
2161
- normal, with the third parameter NULL. Make sure you make pass over
2162
- the image number_of_passes times, and you don't change the data in the
2163
- rows between calls. You can change the locations of the data, just
2164
- not the data. Each pass only writes the pixels appropriate for that
2165
- pass, and assumes the data from previous passes is still valid.
2166
-
2167
- png_read_rows(png_ptr, row_pointers, NULL,
2168
- number_of_rows);
2169
-
2170
- If you only want the first effect (the rectangles), do the same as
2171
- before except pass the row buffer in the third parameter, and leave
2172
- the second parameter NULL.
2173
-
2174
- png_read_rows(png_ptr, NULL, row_pointers,
2175
- number_of_rows);
2176
-
2177
- .SS Finishing a sequential read
2178
-
2179
- After you are finished reading the image through the
2180
- low-level interface, you can finish reading the file. If you are
2181
- interested in comments or time, which may be stored either before or
2182
- after the image data, you should pass the separate png_info struct if
2183
- you want to keep the comments from before and after the image
2184
- separate. If you are not interested, you can pass NULL.
2185
-
2186
- png_read_end(png_ptr, end_info);
2187
-
2188
- When you are done, you can free all memory allocated by libpng like this:
2189
-
2190
- png_destroy_read_struct(&png_ptr, &info_ptr,
2191
- &end_info);
2192
-
2193
- It is also possible to individually free the info_ptr members that
2194
- point to libpng-allocated storage with the following function:
2195
-
2196
- png_free_data(png_ptr, info_ptr, mask, seq)
2197
- mask - identifies data to be freed, a mask
2198
- containing the bitwise OR of one or
2199
- more of
2200
- PNG_FREE_PLTE, PNG_FREE_TRNS,
2201
- PNG_FREE_HIST, PNG_FREE_ICCP,
2202
- PNG_FREE_PCAL, PNG_FREE_ROWS,
2203
- PNG_FREE_SCAL, PNG_FREE_SPLT,
2204
- PNG_FREE_TEXT, PNG_FREE_UNKN,
2205
- or simply PNG_FREE_ALL
2206
- seq - sequence number of item to be freed
2207
- (-1 for all items)
2208
-
2209
- This function may be safely called when the relevant storage has
2210
- already been freed, or has not yet been allocated, or was allocated
2211
- by the user and not by libpng, and will in those cases do nothing.
2212
- The "seq" parameter is ignored if only one item of the selected data
2213
- type, such as PLTE, is allowed. If "seq" is not -1, and multiple items
2214
- are allowed for the data type identified in the mask, such as text or
2215
- sPLT, only the n'th item in the structure is freed, where n is "seq".
2216
-
2217
- The default behavior is only to free data that was allocated internally
2218
- by libpng. This can be changed, so that libpng will not free the data,
2219
- or so that it will free data that was allocated by the user with png_malloc()
2220
- or png_zalloc() and passed in via a png_set_*() function, with
2221
-
2222
- png_data_freer(png_ptr, info_ptr, freer, mask)
2223
- mask - which data elements are affected
2224
- same choices as in png_free_data()
2225
- freer - one of
2226
- PNG_DESTROY_WILL_FREE_DATA
2227
- PNG_SET_WILL_FREE_DATA
2228
- PNG_USER_WILL_FREE_DATA
2229
-
2230
- This function only affects data that has already been allocated.
2231
- You can call this function after reading the PNG data but before calling
2232
- any png_set_*() functions, to control whether the user or the png_set_*()
2233
- function is responsible for freeing any existing data that might be present,
2234
- and again after the png_set_*() functions to control whether the user
2235
- or png_destroy_*() is supposed to free the data. When the user assumes
2236
- responsibility for libpng-allocated data, the application must use
2237
- png_free() to free it, and when the user transfers responsibility to libpng
2238
- for data that the user has allocated, the user must have used png_malloc()
2239
- or png_zalloc() to allocate it.
2240
-
2241
- If you allocated your row_pointers in a single block, as suggested above in
2242
- the description of the high level read interface, you must not transfer
2243
- responsibility for freeing it to the png_set_rows or png_read_destroy function,
2244
- because they would also try to free the individual row_pointers[i].
2245
-
2246
- If you allocated text_ptr.text, text_ptr.lang, and text_ptr.translated_keyword
2247
- separately, do not transfer responsibility for freeing text_ptr to libpng,
2248
- because when libpng fills a png_text structure it combines these members with
2249
- the key member, and png_free_data() will free only text_ptr.key. Similarly,
2250
- if you transfer responsibility for free'ing text_ptr from libpng to your
2251
- application, your application must not separately free those members.
2252
-
2253
- The png_free_data() function will turn off the "valid" flag for anything
2254
- it frees. If you need to turn the flag off for a chunk that was freed by
2255
- your application instead of by libpng, you can use
2256
-
2257
- png_set_invalid(png_ptr, info_ptr, mask);
2258
- mask - identifies the chunks to be made invalid,
2259
- containing the bitwise OR of one or
2260
- more of
2261
- PNG_INFO_gAMA, PNG_INFO_sBIT,
2262
- PNG_INFO_cHRM, PNG_INFO_PLTE,
2263
- PNG_INFO_tRNS, PNG_INFO_bKGD,
2264
- PNG_INFO_hIST, PNG_INFO_pHYs,
2265
- PNG_INFO_oFFs, PNG_INFO_tIME,
2266
- PNG_INFO_pCAL, PNG_INFO_sRGB,
2267
- PNG_INFO_iCCP, PNG_INFO_sPLT,
2268
- PNG_INFO_sCAL, PNG_INFO_IDAT
2269
-
2270
- For a more compact example of reading a PNG image, see the file example.c.
2271
-
2272
- .SS Reading PNG files progressively
2273
-
2274
- The progressive reader is slightly different then the non-progressive
2275
- reader. Instead of calling png_read_info(), png_read_rows(), and
2276
- png_read_end(), you make one call to png_process_data(), which calls
2277
- callbacks when it has the info, a row, or the end of the image. You
2278
- set up these callbacks with png_set_progressive_read_fn(). You don't
2279
- have to worry about the input/output functions of libpng, as you are
2280
- giving the library the data directly in png_process_data(). I will
2281
- assume that you have read the section on reading PNG files above,
2282
- so I will only highlight the differences (although I will show
2283
- all of the code).
2284
-
2285
- png_structp png_ptr;
2286
- png_infop info_ptr;
2287
-
2288
- /* An example code fragment of how you would
2289
- initialize the progressive reader in your
2290
- application. */
2291
- int
2292
- initialize_png_reader()
2293
- {
2294
- png_ptr = png_create_read_struct
2295
- (PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
2296
- user_error_fn, user_warning_fn);
2297
- if (!png_ptr)
2298
- return (ERROR);
2299
- info_ptr = png_create_info_struct(png_ptr);
2300
- if (!info_ptr)
2301
- {
2302
- png_destroy_read_struct(&png_ptr, (png_infopp)NULL,
2303
- (png_infopp)NULL);
2304
- return (ERROR);
2305
- }
2306
-
2307
- if (setjmp(png_jmpbuf(png_ptr)))
2308
- {
2309
- png_destroy_read_struct(&png_ptr, &info_ptr,
2310
- (png_infopp)NULL);
2311
- return (ERROR);
2312
- }
2313
-
2314
- /* This one's new. You can provide functions
2315
- to be called when the header info is valid,
2316
- when each row is completed, and when the image
2317
- is finished. If you aren't using all functions,
2318
- you can specify NULL parameters. Even when all
2319
- three functions are NULL, you need to call
2320
- png_set_progressive_read_fn(). You can use
2321
- any struct as the user_ptr (cast to a void pointer
2322
- for the function call), and retrieve the pointer
2323
- from inside the callbacks using the function
2324
-
2325
- png_get_progressive_ptr(png_ptr);
2326
-
2327
- which will return a void pointer, which you have
2328
- to cast appropriately.
2329
- */
2330
- png_set_progressive_read_fn(png_ptr, (void *)user_ptr,
2331
- info_callback, row_callback, end_callback);
2332
-
2333
- return 0;
2334
- }
2335
-
2336
- /* A code fragment that you call as you receive blocks
2337
- of data */
2338
- int
2339
- process_data(png_bytep buffer, png_uint_32 length)
2340
- {
2341
- if (setjmp(png_jmpbuf(png_ptr)))
2342
- {
2343
- png_destroy_read_struct(&png_ptr, &info_ptr,
2344
- (png_infopp)NULL);
2345
- return (ERROR);
2346
- }
2347
-
2348
- /* This one's new also. Simply give it a chunk
2349
- of data from the file stream (in order, of
2350
- course). On machines with segmented memory
2351
- models machines, don't give it any more than
2352
- 64K. The library seems to run fine with sizes
2353
- of 4K. Although you can give it much less if
2354
- necessary (I assume you can give it chunks of
2355
- 1 byte, I haven't tried less then 256 bytes
2356
- yet). When this function returns, you may
2357
- want to display any rows that were generated
2358
- in the row callback if you don't already do
2359
- so there.
2360
- */
2361
- png_process_data(png_ptr, info_ptr, buffer, length);
2362
- return 0;
2363
- }
2364
-
2365
- /* This function is called (as set by
2366
- png_set_progressive_read_fn() above) when enough data
2367
- has been supplied so all of the header has been
2368
- read.
2369
- */
2370
- void
2371
- info_callback(png_structp png_ptr, png_infop info)
2372
- {
2373
- /* Do any setup here, including setting any of
2374
- the transformations mentioned in the Reading
2375
- PNG files section. For now, you _must_ call
2376
- either png_start_read_image() or
2377
- png_read_update_info() after all the
2378
- transformations are set (even if you don't set
2379
- any). You may start getting rows before
2380
- png_process_data() returns, so this is your
2381
- last chance to prepare for that.
2382
- */
2383
- }
2384
-
2385
- /* This function is called when each row of image
2386
- data is complete */
2387
- void
2388
- row_callback(png_structp png_ptr, png_bytep new_row,
2389
- png_uint_32 row_num, int pass)
2390
- {
2391
- /* If the image is interlaced, and you turned
2392
- on the interlace handler, this function will
2393
- be called for every row in every pass. Some
2394
- of these rows will not be changed from the
2395
- previous pass. When the row is not changed,
2396
- the new_row variable will be NULL. The rows
2397
- and passes are called in order, so you don't
2398
- really need the row_num and pass, but I'm
2399
- supplying them because it may make your life
2400
- easier.
2401
-
2402
- For the non-NULL rows of interlaced images,
2403
- you must call png_progressive_combine_row()
2404
- passing in the row and the old row. You can
2405
- call this function for NULL rows (it will just
2406
- return) and for non-interlaced images (it just
2407
- does the memcpy for you) if it will make the
2408
- code easier. Thus, you can just do this for
2409
- all cases:
2410
- */
2411
-
2412
- png_progressive_combine_row(png_ptr, old_row,
2413
- new_row);
2414
-
2415
- /* where old_row is what was displayed for
2416
- previously for the row. Note that the first
2417
- pass (pass == 0, really) will completely cover
2418
- the old row, so the rows do not have to be
2419
- initialized. After the first pass (and only
2420
- for interlaced images), you will have to pass
2421
- the current row, and the function will combine
2422
- the old row and the new row.
2423
- */
2424
- }
2425
-
2426
- void
2427
- end_callback(png_structp png_ptr, png_infop info)
2428
- {
2429
- /* This function is called after the whole image
2430
- has been read, including any chunks after the
2431
- image (up to and including the IEND). You
2432
- will usually have the same info chunk as you
2433
- had in the header, although some data may have
2434
- been added to the comments and time fields.
2435
-
2436
- Most people won't do much here, perhaps setting
2437
- a flag that marks the image as finished.
2438
- */
2439
- }
2440
-
2441
-
2442
-
2443
- .SH IV. Writing
2444
-
2445
- Much of this is very similar to reading. However, everything of
2446
- importance is repeated here, so you won't have to constantly look
2447
- back up in the reading section to understand writing.
2448
-
2449
- .SS Setup
2450
-
2451
- You will want to do the I/O initialization before you get into libpng,
2452
- so if it doesn't work, you don't have anything to undo. If you are not
2453
- using the standard I/O functions, you will need to replace them with
2454
- custom writing functions. See the discussion under Customizing libpng.
2455
-
2456
- FILE *fp = fopen(file_name, "wb");
2457
- if (!fp)
2458
- {
2459
- return (ERROR);
2460
- }
2461
-
2462
- Next, png_struct and png_info need to be allocated and initialized.
2463
- As these can be both relatively large, you may not want to store these
2464
- on the stack, unless you have stack space to spare. Of course, you
2465
- will want to check if they return NULL. If you are also reading,
2466
- you won't want to name your read structure and your write structure
2467
- both "png_ptr"; you can call them anything you like, such as
2468
- "read_ptr" and "write_ptr". Look at pngtest.c, for example.
2469
-
2470
- png_structp png_ptr = png_create_write_struct
2471
- (PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
2472
- user_error_fn, user_warning_fn);
2473
- if (!png_ptr)
2474
- return (ERROR);
2475
-
2476
- png_infop info_ptr = png_create_info_struct(png_ptr);
2477
- if (!info_ptr)
2478
- {
2479
- png_destroy_write_struct(&png_ptr,
2480
- (png_infopp)NULL);
2481
- return (ERROR);
2482
- }
2483
-
2484
- If you want to use your own memory allocation routines,
2485
- define PNG_USER_MEM_SUPPORTED and use
2486
- png_create_write_struct_2() instead of png_create_write_struct():
2487
-
2488
- png_structp png_ptr = png_create_write_struct_2
2489
- (PNG_LIBPNG_VER_STRING, (png_voidp)user_error_ptr,
2490
- user_error_fn, user_warning_fn, (png_voidp)
2491
- user_mem_ptr, user_malloc_fn, user_free_fn);
2492
-
2493
- After you have these structures, you will need to set up the
2494
- error handling. When libpng encounters an error, it expects to
2495
- longjmp() back to your routine. Therefore, you will need to call
2496
- setjmp() and pass the png_jmpbuf(png_ptr). If you
2497
- write the file from different routines, you will need to update
2498
- the png_jmpbuf(png_ptr) every time you enter a new routine that will
2499
- call a png_*() function. See your documentation of setjmp/longjmp
2500
- for your compiler for more information on setjmp/longjmp. See
2501
- the discussion on libpng error handling in the Customizing Libpng
2502
- section below for more information on the libpng error handling.
2503
-
2504
- if (setjmp(png_jmpbuf(png_ptr)))
2505
- {
2506
- png_destroy_write_struct(&png_ptr, &info_ptr);
2507
- fclose(fp);
2508
- return (ERROR);
2509
- }
2510
- ...
2511
- return;
2512
-
2513
- If you would rather avoid the complexity of setjmp/longjmp issues,
2514
- you can compile libpng with PNG_NO_SETJMP, in which case
2515
- errors will result in a call to PNG_ABORT() which defaults to abort().
2516
-
2517
- You can #define PNG_ABORT() to a function that does something
2518
- more useful than abort(), as long as your function does not
2519
- return.
2520
-
2521
- Now you need to set up the output code. The default for libpng is to
2522
- use the C function fwrite(). If you use this, you will need to pass a
2523
- valid FILE * in the function png_init_io(). Be sure that the file is
2524
- opened in binary mode. Again, if you wish to handle writing data in
2525
- another way, see the discussion on libpng I/O handling in the Customizing
2526
- Libpng section below.
2527
-
2528
- png_init_io(png_ptr, fp);
2529
-
2530
- If you are embedding your PNG into a datastream such as MNG, and don't
2531
- want libpng to write the 8-byte signature, or if you have already
2532
- written the signature in your application, use
2533
-
2534
- png_set_sig_bytes(png_ptr, 8);
2535
-
2536
- to inform libpng that it should not write a signature.
2537
-
2538
- .SS Write callbacks
2539
-
2540
- At this point, you can set up a callback function that will be
2541
- called after each row has been written, which you can use to control
2542
- a progress meter or the like. It's demonstrated in pngtest.c.
2543
- You must supply a function
2544
-
2545
- void write_row_callback(png_ptr, png_uint_32 row,
2546
- int pass);
2547
- {
2548
- /* put your code here */
2549
- }
2550
-
2551
- (You can give it another name that you like instead of "write_row_callback")
2552
-
2553
- To inform libpng about your function, use
2554
-
2555
- png_set_write_status_fn(png_ptr, write_row_callback);
2556
-
2557
- You now have the option of modifying how the compression library will
2558
- run. The following functions are mainly for testing, but may be useful
2559
- in some cases, like if you need to write PNG files extremely fast and
2560
- are willing to give up some compression, or if you want to get the
2561
- maximum possible compression at the expense of slower writing. If you
2562
- have no special needs in this area, let the library do what it wants by
2563
- not calling this function at all, as it has been tuned to deliver a good
2564
- speed/compression ratio. The second parameter to png_set_filter() is
2565
- the filter method, for which the only valid values are 0 (as of the
2566
- July 1999 PNG specification, version 1.2) or 64 (if you are writing
2567
- a PNG datastream that is to be embedded in a MNG datastream). The third
2568
- parameter is a flag that indicates which filter type(s) are to be tested
2569
- for each scanline. See the PNG specification for details on the specific
2570
- filter types.
2571
-
2572
-
2573
- /* turn on or off filtering, and/or choose
2574
- specific filters. You can use either a single
2575
- PNG_FILTER_VALUE_NAME or the bitwise OR of one
2576
- or more PNG_FILTER_NAME masks. */
2577
- png_set_filter(png_ptr, 0,
2578
- PNG_FILTER_NONE | PNG_FILTER_VALUE_NONE |
2579
- PNG_FILTER_SUB | PNG_FILTER_VALUE_SUB |
2580
- PNG_FILTER_UP | PNG_FILTER_VALUE_UP |
2581
- PNG_FILTER_AVG | PNG_FILTER_VALUE_AVG |
2582
- PNG_FILTER_PAETH | PNG_FILTER_VALUE_PAETH|
2583
- PNG_ALL_FILTERS);
2584
-
2585
- If an application
2586
- wants to start and stop using particular filters during compression,
2587
- it should start out with all of the filters (to ensure that the previous
2588
- row of pixels will be stored in case it's needed later), and then add
2589
- and remove them after the start of compression.
2590
-
2591
- If you are writing a PNG datastream that is to be embedded in a MNG
2592
- datastream, the second parameter can be either 0 or 64.
2593
-
2594
- The png_set_compression_*() functions interface to the zlib compression
2595
- library, and should mostly be ignored unless you really know what you are
2596
- doing. The only generally useful call is png_set_compression_level()
2597
- which changes how much time zlib spends on trying to compress the image
2598
- data. See the Compression Library (zlib.h and algorithm.txt, distributed
2599
- with zlib) for details on the compression levels.
2600
-
2601
- /* set the zlib compression level */
2602
- png_set_compression_level(png_ptr,
2603
- Z_BEST_COMPRESSION);
2604
-
2605
- /* set other zlib parameters */
2606
- png_set_compression_mem_level(png_ptr, 8);
2607
- png_set_compression_strategy(png_ptr,
2608
- Z_DEFAULT_STRATEGY);
2609
- png_set_compression_window_bits(png_ptr, 15);
2610
- png_set_compression_method(png_ptr, 8);
2611
- png_set_compression_buffer_size(png_ptr, 8192)
2612
-
2613
- extern PNG_EXPORT(void,png_set_zbuf_size)
2614
-
2615
- .SS Setting the contents of info for output
2616
-
2617
- You now need to fill in the png_info structure with all the data you
2618
- wish to write before the actual image. Note that the only thing you
2619
- are allowed to write after the image is the text chunks and the time
2620
- chunk (as of PNG Specification 1.2, anyway). See png_write_end() and
2621
- the latest PNG specification for more information on that. If you
2622
- wish to write them before the image, fill them in now, and flag that
2623
- data as being valid. If you want to wait until after the data, don't
2624
- fill them until png_write_end(). For all the fields in png_info and
2625
- their data types, see png.h. For explanations of what the fields
2626
- contain, see the PNG specification.
2627
-
2628
- Some of the more important parts of the png_info are:
2629
-
2630
- png_set_IHDR(png_ptr, info_ptr, width, height,
2631
- bit_depth, color_type, interlace_type,
2632
- compression_type, filter_method)
2633
- width - holds the width of the image
2634
- in pixels (up to 2^31).
2635
- height - holds the height of the image
2636
- in pixels (up to 2^31).
2637
- bit_depth - holds the bit depth of one of the
2638
- image channels.
2639
- (valid values are 1, 2, 4, 8, 16
2640
- and depend also on the
2641
- color_type. See also significant
2642
- bits (sBIT) below).
2643
- color_type - describes which color/alpha
2644
- channels are present.
2645
- PNG_COLOR_TYPE_GRAY
2646
- (bit depths 1, 2, 4, 8, 16)
2647
- PNG_COLOR_TYPE_GRAY_ALPHA
2648
- (bit depths 8, 16)
2649
- PNG_COLOR_TYPE_PALETTE
2650
- (bit depths 1, 2, 4, 8)
2651
- PNG_COLOR_TYPE_RGB
2652
- (bit_depths 8, 16)
2653
- PNG_COLOR_TYPE_RGB_ALPHA
2654
- (bit_depths 8, 16)
2655
-
2656
- PNG_COLOR_MASK_PALETTE
2657
- PNG_COLOR_MASK_COLOR
2658
- PNG_COLOR_MASK_ALPHA
2659
-
2660
- interlace_type - PNG_INTERLACE_NONE or
2661
- PNG_INTERLACE_ADAM7
2662
- compression_type - (must be
2663
- PNG_COMPRESSION_TYPE_DEFAULT)
2664
- filter_method - (must be PNG_FILTER_TYPE_DEFAULT
2665
- or, if you are writing a PNG to
2666
- be embedded in a MNG datastream,
2667
- can also be
2668
- PNG_INTRAPIXEL_DIFFERENCING)
2669
-
2670
- If you call png_set_IHDR(), the call must appear before any of the
2671
- other png_set_*() functions, because they might require access to some of
2672
- the IHDR settings. The remaining png_set_*() functions can be called
2673
- in any order.
2674
-
2675
- If you wish, you can reset the compression_type, interlace_type, or
2676
- filter_method later by calling png_set_IHDR() again; if you do this, the
2677
- width, height, bit_depth, and color_type must be the same in each call.
2678
-
2679
- png_set_PLTE(png_ptr, info_ptr, palette,
2680
- num_palette);
2681
- palette - the palette for the file
2682
- (array of png_color)
2683
- num_palette - number of entries in the palette
2684
-
2685
- png_set_gAMA(png_ptr, info_ptr, gamma);
2686
- gamma - the gamma the image was created
2687
- at (PNG_INFO_gAMA)
2688
-
2689
- png_set_sRGB(png_ptr, info_ptr, srgb_intent);
2690
- srgb_intent - the rendering intent
2691
- (PNG_INFO_sRGB) The presence of
2692
- the sRGB chunk means that the pixel
2693
- data is in the sRGB color space.
2694
- This chunk also implies specific
2695
- values of gAMA and cHRM. Rendering
2696
- intent is the CSS-1 property that
2697
- has been defined by the International
2698
- Color Consortium
2699
- (http://www.color.org).
2700
- It can be one of
2701
- PNG_sRGB_INTENT_SATURATION,
2702
- PNG_sRGB_INTENT_PERCEPTUAL,
2703
- PNG_sRGB_INTENT_ABSOLUTE, or
2704
- PNG_sRGB_INTENT_RELATIVE.
2705
-
2706
-
2707
- png_set_sRGB_gAMA_and_cHRM(png_ptr, info_ptr,
2708
- srgb_intent);
2709
- srgb_intent - the rendering intent
2710
- (PNG_INFO_sRGB) The presence of the
2711
- sRGB chunk means that the pixel
2712
- data is in the sRGB color space.
2713
- This function also causes gAMA and
2714
- cHRM chunks with the specific values
2715
- that are consistent with sRGB to be
2716
- written.
2717
-
2718
- png_set_iCCP(png_ptr, info_ptr, name, compression_type,
2719
- profile, proflen);
2720
- name - The profile name.
2721
- compression - The compression type; always
2722
- PNG_COMPRESSION_TYPE_BASE for PNG 1.0.
2723
- You may give NULL to this argument to
2724
- ignore it.
2725
- profile - International Color Consortium color
2726
- profile data. May contain NULs.
2727
- proflen - length of profile data in bytes.
2728
-
2729
- png_set_sBIT(png_ptr, info_ptr, sig_bit);
2730
- sig_bit - the number of significant bits for
2731
- (PNG_INFO_sBIT) each of the gray, red,
2732
- green, and blue channels, whichever are
2733
- appropriate for the given color type
2734
- (png_color_16)
2735
-
2736
- png_set_tRNS(png_ptr, info_ptr, trans_alpha,
2737
- num_trans, trans_color);
2738
- trans_alpha - array of alpha (transparency)
2739
- entries for palette (PNG_INFO_tRNS)
2740
- trans_color - graylevel or color sample values
2741
- (in order red, green, blue) of the
2742
- single transparent color for
2743
- non-paletted images (PNG_INFO_tRNS)
2744
- num_trans - number of transparent entries
2745
- (PNG_INFO_tRNS)
2746
-
2747
- png_set_hIST(png_ptr, info_ptr, hist);
2748
- (PNG_INFO_hIST)
2749
- hist - histogram of palette (array of
2750
- png_uint_16)
2751
-
2752
- png_set_tIME(png_ptr, info_ptr, mod_time);
2753
- mod_time - time image was last modified
2754
- (PNG_VALID_tIME)
2755
-
2756
- png_set_bKGD(png_ptr, info_ptr, background);
2757
- background - background color (PNG_VALID_bKGD)
2758
-
2759
- png_set_text(png_ptr, info_ptr, text_ptr, num_text);
2760
- text_ptr - array of png_text holding image
2761
- comments
2762
- text_ptr[i].compression - type of compression used
2763
- on "text" PNG_TEXT_COMPRESSION_NONE
2764
- PNG_TEXT_COMPRESSION_zTXt
2765
- PNG_ITXT_COMPRESSION_NONE
2766
- PNG_ITXT_COMPRESSION_zTXt
2767
- text_ptr[i].key - keyword for comment. Must contain
2768
- 1-79 characters.
2769
- text_ptr[i].text - text comments for current
2770
- keyword. Can be NULL or empty.
2771
- text_ptr[i].text_length - length of text string,
2772
- after decompression, 0 for iTXt
2773
- text_ptr[i].itxt_length - length of itxt string,
2774
- after decompression, 0 for tEXt/zTXt
2775
- text_ptr[i].lang - language of comment (NULL or
2776
- empty for unknown).
2777
- text_ptr[i].translated_keyword - keyword in UTF-8 (NULL
2778
- or empty for unknown).
2779
- Note that the itxt_length, lang, and lang_key
2780
- members of the text_ptr structure only exist
2781
- when the library is built with iTXt chunk support.
2782
-
2783
- num_text - number of comments
2784
-
2785
- png_set_sPLT(png_ptr, info_ptr, &palette_ptr,
2786
- num_spalettes);
2787
- palette_ptr - array of png_sPLT_struct structures
2788
- to be added to the list of palettes
2789
- in the info structure.
2790
- num_spalettes - number of palette structures to be
2791
- added.
2792
-
2793
- png_set_oFFs(png_ptr, info_ptr, offset_x, offset_y,
2794
- unit_type);
2795
- offset_x - positive offset from the left
2796
- edge of the screen
2797
- offset_y - positive offset from the top
2798
- edge of the screen
2799
- unit_type - PNG_OFFSET_PIXEL, PNG_OFFSET_MICROMETER
2800
-
2801
- png_set_pHYs(png_ptr, info_ptr, res_x, res_y,
2802
- unit_type);
2803
- res_x - pixels/unit physical resolution
2804
- in x direction
2805
- res_y - pixels/unit physical resolution
2806
- in y direction
2807
- unit_type - PNG_RESOLUTION_UNKNOWN,
2808
- PNG_RESOLUTION_METER
2809
-
2810
- png_set_sCAL(png_ptr, info_ptr, unit, width, height)
2811
- unit - physical scale units (an integer)
2812
- width - width of a pixel in physical scale units
2813
- height - height of a pixel in physical scale units
2814
- (width and height are doubles)
2815
-
2816
- png_set_sCAL_s(png_ptr, info_ptr, unit, width, height)
2817
- unit - physical scale units (an integer)
2818
- width - width of a pixel in physical scale units
2819
- height - height of a pixel in physical scale units
2820
- (width and height are strings like "2.54")
2821
-
2822
- png_set_unknown_chunks(png_ptr, info_ptr, &unknowns,
2823
- num_unknowns)
2824
- unknowns - array of png_unknown_chunk
2825
- structures holding unknown chunks
2826
- unknowns[i].name - name of unknown chunk
2827
- unknowns[i].data - data of unknown chunk
2828
- unknowns[i].size - size of unknown chunk's data
2829
- unknowns[i].location - position to write chunk in file
2830
- 0: do not write chunk
2831
- PNG_HAVE_IHDR: before PLTE
2832
- PNG_HAVE_PLTE: before IDAT
2833
- PNG_AFTER_IDAT: after IDAT
2834
-
2835
- The "location" member is set automatically according to
2836
- what part of the output file has already been written.
2837
- You can change its value after calling png_set_unknown_chunks()
2838
- as demonstrated in pngtest.c. Within each of the "locations",
2839
- the chunks are sequenced according to their position in the
2840
- structure (that is, the value of "i", which is the order in which
2841
- the chunk was either read from the input file or defined with
2842
- png_set_unknown_chunks).
2843
-
2844
- A quick word about text and num_text. text is an array of png_text
2845
- structures. num_text is the number of valid structures in the array.
2846
- Each png_text structure holds a language code, a keyword, a text value,
2847
- and a compression type.
2848
-
2849
- The compression types have the same valid numbers as the compression
2850
- types of the image data. Currently, the only valid number is zero.
2851
- However, you can store text either compressed or uncompressed, unlike
2852
- images, which always have to be compressed. So if you don't want the
2853
- text compressed, set the compression type to PNG_TEXT_COMPRESSION_NONE.
2854
- Because tEXt and zTXt chunks don't have a language field, if you
2855
- specify PNG_TEXT_COMPRESSION_NONE or PNG_TEXT_COMPRESSION_zTXt
2856
- any language code or translated keyword will not be written out.
2857
-
2858
- Until text gets around 1000 bytes, it is not worth compressing it.
2859
- After the text has been written out to the file, the compression type
2860
- is set to PNG_TEXT_COMPRESSION_NONE_WR or PNG_TEXT_COMPRESSION_zTXt_WR,
2861
- so that it isn't written out again at the end (in case you are calling
2862
- png_write_end() with the same struct.
2863
-
2864
- The keywords that are given in the PNG Specification are:
2865
-
2866
- Title Short (one line) title or
2867
- caption for image
2868
- Author Name of image's creator
2869
- Description Description of image (possibly long)
2870
- Copyright Copyright notice
2871
- Creation Time Time of original image creation
2872
- (usually RFC 1123 format, see below)
2873
- Software Software used to create the image
2874
- Disclaimer Legal disclaimer
2875
- Warning Warning of nature of content
2876
- Source Device used to create the image
2877
- Comment Miscellaneous comment; conversion
2878
- from other image format
2879
-
2880
- The keyword-text pairs work like this. Keywords should be short
2881
- simple descriptions of what the comment is about. Some typical
2882
- keywords are found in the PNG specification, as is some recommendations
2883
- on keywords. You can repeat keywords in a file. You can even write
2884
- some text before the image and some after. For example, you may want
2885
- to put a description of the image before the image, but leave the
2886
- disclaimer until after, so viewers working over modem connections
2887
- don't have to wait for the disclaimer to go over the modem before
2888
- they start seeing the image. Finally, keywords should be full
2889
- words, not abbreviations. Keywords and text are in the ISO 8859-1
2890
- (Latin-1) character set (a superset of regular ASCII) and can not
2891
- contain NUL characters, and should not contain control or other
2892
- unprintable characters. To make the comments widely readable, stick
2893
- with basic ASCII, and avoid machine specific character set extensions
2894
- like the IBM-PC character set. The keyword must be present, but
2895
- you can leave off the text string on non-compressed pairs.
2896
- Compressed pairs must have a text string, as only the text string
2897
- is compressed anyway, so the compression would be meaningless.
2898
-
2899
- PNG supports modification time via the png_time structure. Two
2900
- conversion routines are provided, png_convert_from_time_t() for
2901
- time_t and png_convert_from_struct_tm() for struct tm. The
2902
- time_t routine uses gmtime(). You don't have to use either of
2903
- these, but if you wish to fill in the png_time structure directly,
2904
- you should provide the time in universal time (GMT) if possible
2905
- instead of your local time. Note that the year number is the full
2906
- year (e.g. 1998, rather than 98 - PNG is year 2000 compliant!), and
2907
- that months start with 1.
2908
-
2909
- If you want to store the time of the original image creation, you should
2910
- use a plain tEXt chunk with the "Creation Time" keyword. This is
2911
- necessary because the "creation time" of a PNG image is somewhat vague,
2912
- depending on whether you mean the PNG file, the time the image was
2913
- created in a non-PNG format, a still photo from which the image was
2914
- scanned, or possibly the subject matter itself. In order to facilitate
2915
- machine-readable dates, it is recommended that the "Creation Time"
2916
- tEXt chunk use RFC 1123 format dates (e.g. "22 May 1997 18:07:10 GMT"),
2917
- although this isn't a requirement. Unlike the tIME chunk, the
2918
- "Creation Time" tEXt chunk is not expected to be automatically changed
2919
- by the software. To facilitate the use of RFC 1123 dates, a function
2920
- png_convert_to_rfc1123(png_timep) is provided to convert from PNG
2921
- time to an RFC 1123 format string.
2922
-
2923
- .SS Writing unknown chunks
2924
-
2925
- You can use the png_set_unknown_chunks function to queue up chunks
2926
- for writing. You give it a chunk name, raw data, and a size; that's
2927
- all there is to it. The chunks will be written by the next following
2928
- png_write_info_before_PLTE, png_write_info, or png_write_end function.
2929
- Any chunks previously read into the info structure's unknown-chunk
2930
- list will also be written out in a sequence that satisfies the PNG
2931
- specification's ordering rules.
2932
-
2933
- .SS The high-level write interface
2934
-
2935
- At this point there are two ways to proceed; through the high-level
2936
- write interface, or through a sequence of low-level write operations.
2937
- You can use the high-level interface if your image data is present
2938
- in the info structure. All defined output
2939
- transformations are permitted, enabled by the following masks.
2940
-
2941
- PNG_TRANSFORM_IDENTITY No transformation
2942
- PNG_TRANSFORM_PACKING Pack 1, 2 and 4-bit samples
2943
- PNG_TRANSFORM_PACKSWAP Change order of packed
2944
- pixels to LSB first
2945
- PNG_TRANSFORM_INVERT_MONO Invert monochrome images
2946
- PNG_TRANSFORM_SHIFT Normalize pixels to the
2947
- sBIT depth
2948
- PNG_TRANSFORM_BGR Flip RGB to BGR, RGBA
2949
- to BGRA
2950
- PNG_TRANSFORM_SWAP_ALPHA Flip RGBA to ARGB or GA
2951
- to AG
2952
- PNG_TRANSFORM_INVERT_ALPHA Change alpha from opacity
2953
- to transparency
2954
- PNG_TRANSFORM_SWAP_ENDIAN Byte-swap 16-bit samples
2955
- PNG_TRANSFORM_STRIP_FILLER Strip out filler
2956
- bytes (deprecated).
2957
- PNG_TRANSFORM_STRIP_FILLER_BEFORE Strip out leading
2958
- filler bytes
2959
- PNG_TRANSFORM_STRIP_FILLER_AFTER Strip out trailing
2960
- filler bytes
2961
-
2962
- If you have valid image data in the info structure (you can use
2963
- png_set_rows() to put image data in the info structure), simply do this:
2964
-
2965
- png_write_png(png_ptr, info_ptr, png_transforms, NULL)
2966
-
2967
- where png_transforms is an integer containing the bitwise OR of some set of
2968
- transformation flags. This call is equivalent to png_write_info(),
2969
- followed the set of transformations indicated by the transform mask,
2970
- then png_write_image(), and finally png_write_end().
2971
-
2972
- (The final parameter of this call is not yet used. Someday it might point
2973
- to transformation parameters required by some future output transform.)
2974
-
2975
- You must use png_transforms and not call any png_set_transform() functions
2976
- when you use png_write_png().
2977
-
2978
- .SS The low-level write interface
2979
-
2980
- If you are going the low-level route instead, you are now ready to
2981
- write all the file information up to the actual image data. You do
2982
- this with a call to png_write_info().
2983
-
2984
- png_write_info(png_ptr, info_ptr);
2985
-
2986
- Note that there is one transformation you may need to do before
2987
- png_write_info(). In PNG files, the alpha channel in an image is the
2988
- level of opacity. If your data is supplied as a level of transparency,
2989
- you can invert the alpha channel before you write it, so that 0 is
2990
- fully transparent and 255 (in 8-bit or paletted images) or 65535
2991
- (in 16-bit images) is fully opaque, with
2992
-
2993
- png_set_invert_alpha(png_ptr);
2994
-
2995
- This must appear before png_write_info() instead of later with the
2996
- other transformations because in the case of paletted images the tRNS
2997
- chunk data has to be inverted before the tRNS chunk is written. If
2998
- your image is not a paletted image, the tRNS data (which in such cases
2999
- represents a single color to be rendered as transparent) won't need to
3000
- be changed, and you can safely do this transformation after your
3001
- png_write_info() call.
3002
-
3003
- If you need to write a private chunk that you want to appear before
3004
- the PLTE chunk when PLTE is present, you can write the PNG info in
3005
- two steps, and insert code to write your own chunk between them:
3006
-
3007
- png_write_info_before_PLTE(png_ptr, info_ptr);
3008
- png_set_unknown_chunks(png_ptr, info_ptr, ...);
3009
- png_write_info(png_ptr, info_ptr);
3010
-
3011
- After you've written the file information, you can set up the library
3012
- to handle any special transformations of the image data. The various
3013
- ways to transform the data will be described in the order that they
3014
- should occur. This is important, as some of these change the color
3015
- type and/or bit depth of the data, and some others only work on
3016
- certain color types and bit depths. Even though each transformation
3017
- checks to see if it has data that it can do something with, you should
3018
- make sure to only enable a transformation if it will be valid for the
3019
- data. For example, don't swap red and blue on grayscale data.
3020
-
3021
- PNG files store RGB pixels packed into 3 or 6 bytes. This code tells
3022
- the library to strip input data that has 4 or 8 bytes per pixel down
3023
- to 3 or 6 bytes (or strip 2 or 4-byte grayscale+filler data to 1 or 2
3024
- bytes per pixel).
3025
-
3026
- png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE);
3027
-
3028
- where the 0 is unused, and the location is either PNG_FILLER_BEFORE or
3029
- PNG_FILLER_AFTER, depending upon whether the filler byte in the pixel
3030
- is stored XRGB or RGBX.
3031
-
3032
- PNG files pack pixels of bit depths 1, 2, and 4 into bytes as small as
3033
- they can, resulting in, for example, 8 pixels per byte for 1 bit files.
3034
- If the data is supplied at 1 pixel per byte, use this code, which will
3035
- correctly pack the pixels into a single byte:
3036
-
3037
- png_set_packing(png_ptr);
3038
-
3039
- PNG files reduce possible bit depths to 1, 2, 4, 8, and 16. If your
3040
- data is of another bit depth, you can write an sBIT chunk into the
3041
- file so that decoders can recover the original data if desired.
3042
-
3043
- /* Set the true bit depth of the image data */
3044
- if (color_type & PNG_COLOR_MASK_COLOR)
3045
- {
3046
- sig_bit.red = true_bit_depth;
3047
- sig_bit.green = true_bit_depth;
3048
- sig_bit.blue = true_bit_depth;
3049
- }
3050
- else
3051
- {
3052
- sig_bit.gray = true_bit_depth;
3053
- }
3054
- if (color_type & PNG_COLOR_MASK_ALPHA)
3055
- {
3056
- sig_bit.alpha = true_bit_depth;
3057
- }
3058
-
3059
- png_set_sBIT(png_ptr, info_ptr, &sig_bit);
3060
-
3061
- If the data is stored in the row buffer in a bit depth other than
3062
- one supported by PNG (e.g. 3 bit data in the range 0-7 for a 4-bit PNG),
3063
- this will scale the values to appear to be the correct bit depth as
3064
- is required by PNG.
3065
-
3066
- png_set_shift(png_ptr, &sig_bit);
3067
-
3068
- PNG files store 16 bit pixels in network byte order (big-endian,
3069
- ie. most significant bits first). This code would be used if they are
3070
- supplied the other way (little-endian, i.e. least significant bits
3071
- first, the way PCs store them):
3072
-
3073
- if (bit_depth > 8)
3074
- png_set_swap(png_ptr);
3075
-
3076
- If you are using packed-pixel images (1, 2, or 4 bits/pixel), and you
3077
- need to change the order the pixels are packed into bytes, you can use:
3078
-
3079
- if (bit_depth < 8)
3080
- png_set_packswap(png_ptr);
3081
-
3082
- PNG files store 3 color pixels in red, green, blue order. This code
3083
- would be used if they are supplied as blue, green, red:
3084
-
3085
- png_set_bgr(png_ptr);
3086
-
3087
- PNG files describe monochrome as black being zero and white being
3088
- one. This code would be used if the pixels are supplied with this reversed
3089
- (black being one and white being zero):
3090
-
3091
- png_set_invert_mono(png_ptr);
3092
-
3093
- Finally, you can write your own transformation function if none of
3094
- the existing ones meets your needs. This is done by setting a callback
3095
- with
3096
-
3097
- png_set_write_user_transform_fn(png_ptr,
3098
- write_transform_fn);
3099
-
3100
- You must supply the function
3101
-
3102
- void write_transform_fn(png_ptr ptr, row_info_ptr
3103
- row_info, png_bytep data)
3104
-
3105
- See pngtest.c for a working example. Your function will be called
3106
- before any of the other transformations are processed.
3107
-
3108
- You can also set up a pointer to a user structure for use by your
3109
- callback function.
3110
-
3111
- png_set_user_transform_info(png_ptr, user_ptr, 0, 0);
3112
-
3113
- The user_channels and user_depth parameters of this function are ignored
3114
- when writing; you can set them to zero as shown.
3115
-
3116
- You can retrieve the pointer via the function png_get_user_transform_ptr().
3117
- For example:
3118
-
3119
- voidp write_user_transform_ptr =
3120
- png_get_user_transform_ptr(png_ptr);
3121
-
3122
- It is possible to have libpng flush any pending output, either manually,
3123
- or automatically after a certain number of lines have been written. To
3124
- flush the output stream a single time call:
3125
-
3126
- png_write_flush(png_ptr);
3127
-
3128
- and to have libpng flush the output stream periodically after a certain
3129
- number of scanlines have been written, call:
3130
-
3131
- png_set_flush(png_ptr, nrows);
3132
-
3133
- Note that the distance between rows is from the last time png_write_flush()
3134
- was called, or the first row of the image if it has never been called.
3135
- So if you write 50 lines, and then png_set_flush 25, it will flush the
3136
- output on the next scanline, and every 25 lines thereafter, unless
3137
- png_write_flush() is called before 25 more lines have been written.
3138
- If nrows is too small (less than about 10 lines for a 640 pixel wide
3139
- RGB image) the image compression may decrease noticeably (although this
3140
- may be acceptable for real-time applications). Infrequent flushing will
3141
- only degrade the compression performance by a few percent over images
3142
- that do not use flushing.
3143
-
3144
- .SS Writing the image data
3145
-
3146
- That's it for the transformations. Now you can write the image data.
3147
- The simplest way to do this is in one function call. If you have the
3148
- whole image in memory, you can just call png_write_image() and libpng
3149
- will write the image. You will need to pass in an array of pointers to
3150
- each row. This function automatically handles interlacing, so you don't
3151
- need to call png_set_interlace_handling() or call this function multiple
3152
- times, or any of that other stuff necessary with png_write_rows().
3153
-
3154
- png_write_image(png_ptr, row_pointers);
3155
-
3156
- where row_pointers is:
3157
-
3158
- png_byte *row_pointers[height];
3159
-
3160
- You can point to void or char or whatever you use for pixels.
3161
-
3162
- If you don't want to write the whole image at once, you can
3163
- use png_write_rows() instead. If the file is not interlaced,
3164
- this is simple:
3165
-
3166
- png_write_rows(png_ptr, row_pointers,
3167
- number_of_rows);
3168
-
3169
- row_pointers is the same as in the png_write_image() call.
3170
-
3171
- If you are just writing one row at a time, you can do this with
3172
- a single row_pointer instead of an array of row_pointers:
3173
-
3174
- png_bytep row_pointer = row;
3175
-
3176
- png_write_row(png_ptr, row_pointer);
3177
-
3178
- When the file is interlaced, things can get a good deal more complicated.
3179
- The only currently (as of the PNG Specification version 1.2, dated July
3180
- 1999) defined interlacing scheme for PNG files is the "Adam7" interlace
3181
- scheme, that breaks down an image into seven smaller images of varying
3182
- size. libpng will build these images for you, or you can do them
3183
- yourself. If you want to build them yourself, see the PNG specification
3184
- for details of which pixels to write when.
3185
-
3186
- If you don't want libpng to handle the interlacing details, just
3187
- use png_set_interlace_handling() and call png_write_rows() the
3188
- correct number of times to write all seven sub-images.
3189
-
3190
- If you want libpng to build the sub-images, call this before you start
3191
- writing any rows:
3192
-
3193
- number_of_passes =
3194
- png_set_interlace_handling(png_ptr);
3195
-
3196
- This will return the number of passes needed. Currently, this is seven,
3197
- but may change if another interlace type is added.
3198
-
3199
- Then write the complete image number_of_passes times.
3200
-
3201
- png_write_rows(png_ptr, row_pointers,
3202
- number_of_rows);
3203
-
3204
- As some of these rows are not used, and thus return immediately, you may
3205
- want to read about interlacing in the PNG specification, and only update
3206
- the rows that are actually used.
3207
-
3208
- .SS Finishing a sequential write
3209
-
3210
- After you are finished writing the image, you should finish writing
3211
- the file. If you are interested in writing comments or time, you should
3212
- pass an appropriately filled png_info pointer. If you are not interested,
3213
- you can pass NULL.
3214
-
3215
- png_write_end(png_ptr, info_ptr);
3216
-
3217
- When you are done, you can free all memory used by libpng like this:
3218
-
3219
- png_destroy_write_struct(&png_ptr, &info_ptr);
3220
-
3221
- It is also possible to individually free the info_ptr members that
3222
- point to libpng-allocated storage with the following function:
3223
-
3224
- png_free_data(png_ptr, info_ptr, mask, seq)
3225
- mask - identifies data to be freed, a mask
3226
- containing the bitwise OR of one or
3227
- more of
3228
- PNG_FREE_PLTE, PNG_FREE_TRNS,
3229
- PNG_FREE_HIST, PNG_FREE_ICCP,
3230
- PNG_FREE_PCAL, PNG_FREE_ROWS,
3231
- PNG_FREE_SCAL, PNG_FREE_SPLT,
3232
- PNG_FREE_TEXT, PNG_FREE_UNKN,
3233
- or simply PNG_FREE_ALL
3234
- seq - sequence number of item to be freed
3235
- (-1 for all items)
3236
-
3237
- This function may be safely called when the relevant storage has
3238
- already been freed, or has not yet been allocated, or was allocated
3239
- by the user and not by libpng, and will in those cases do nothing.
3240
- The "seq" parameter is ignored if only one item of the selected data
3241
- type, such as PLTE, is allowed. If "seq" is not -1, and multiple items
3242
- are allowed for the data type identified in the mask, such as text or
3243
- sPLT, only the n'th item in the structure is freed, where n is "seq".
3244
-
3245
- If you allocated data such as a palette that you passed in to libpng
3246
- with png_set_*, you must not free it until just before the call to
3247
- png_destroy_write_struct().
3248
-
3249
- The default behavior is only to free data that was allocated internally
3250
- by libpng. This can be changed, so that libpng will not free the data,
3251
- or so that it will free data that was allocated by the user with png_malloc()
3252
- or png_zalloc() and passed in via a png_set_*() function, with
3253
-
3254
- png_data_freer(png_ptr, info_ptr, freer, mask)
3255
- mask - which data elements are affected
3256
- same choices as in png_free_data()
3257
- freer - one of
3258
- PNG_DESTROY_WILL_FREE_DATA
3259
- PNG_SET_WILL_FREE_DATA
3260
- PNG_USER_WILL_FREE_DATA
3261
-
3262
- For example, to transfer responsibility for some data from a read structure
3263
- to a write structure, you could use
3264
-
3265
- png_data_freer(read_ptr, read_info_ptr,
3266
- PNG_USER_WILL_FREE_DATA,
3267
- PNG_FREE_PLTE|PNG_FREE_tRNS|PNG_FREE_hIST)
3268
- png_data_freer(write_ptr, write_info_ptr,
3269
- PNG_DESTROY_WILL_FREE_DATA,
3270
- PNG_FREE_PLTE|PNG_FREE_tRNS|PNG_FREE_hIST)
3271
-
3272
- thereby briefly reassigning responsibility for freeing to the user but
3273
- immediately afterwards reassigning it once more to the write_destroy
3274
- function. Having done this, it would then be safe to destroy the read
3275
- structure and continue to use the PLTE, tRNS, and hIST data in the write
3276
- structure.
3277
-
3278
- This function only affects data that has already been allocated.
3279
- You can call this function before calling after the png_set_*() functions
3280
- to control whether the user or png_destroy_*() is supposed to free the data.
3281
- When the user assumes responsibility for libpng-allocated data, the
3282
- application must use
3283
- png_free() to free it, and when the user transfers responsibility to libpng
3284
- for data that the user has allocated, the user must have used png_malloc()
3285
- or png_zalloc() to allocate it.
3286
-
3287
- If you allocated text_ptr.text, text_ptr.lang, and text_ptr.translated_keyword
3288
- separately, do not transfer responsibility for freeing text_ptr to libpng,
3289
- because when libpng fills a png_text structure it combines these members with
3290
- the key member, and png_free_data() will free only text_ptr.key. Similarly,
3291
- if you transfer responsibility for free'ing text_ptr from libpng to your
3292
- application, your application must not separately free those members.
3293
- For a more compact example of writing a PNG image, see the file example.c.
3294
-
3295
- .SH V. Modifying/Customizing libpng:
3296
-
3297
- There are two issues here. The first is changing how libpng does
3298
- standard things like memory allocation, input/output, and error handling.
3299
- The second deals with more complicated things like adding new chunks,
3300
- adding new transformations, and generally changing how libpng works.
3301
- Both of those are compile-time issues; that is, they are generally
3302
- determined at the time the code is written, and there is rarely a need
3303
- to provide the user with a means of changing them.
3304
-
3305
- Memory allocation, input/output, and error handling
3306
-
3307
- All of the memory allocation, input/output, and error handling in libpng
3308
- goes through callbacks that are user-settable. The default routines are
3309
- in pngmem.c, pngrio.c, pngwio.c, and pngerror.c, respectively. To change
3310
- these functions, call the appropriate png_set_*_fn() function.
3311
-
3312
- Memory allocation is done through the functions png_malloc(), png_calloc(),
3313
- and png_free(). These currently just call the standard C functions.
3314
- png_calloc() calls png_malloc() and then png_memset() to clear the newly
3315
- allocated memory to zero. If your pointers can't access more then 64K
3316
- at a time, you will want to set MAXSEG_64K in zlib.h. Since it is
3317
- unlikely that the method of handling memory allocation on a platform
3318
- will change between applications, these functions must be modified in
3319
- the library at compile time. If you prefer to use a different method
3320
- of allocating and freeing data, you can use png_create_read_struct_2() or
3321
- png_create_write_struct_2() to register your own functions as described
3322
- above. These functions also provide a void pointer that can be retrieved
3323
- via
3324
-
3325
- mem_ptr=png_get_mem_ptr(png_ptr);
3326
-
3327
- Your replacement memory functions must have prototypes as follows:
3328
-
3329
- png_voidp malloc_fn(png_structp png_ptr,
3330
- png_alloc_size_t size);
3331
- void free_fn(png_structp png_ptr, png_voidp ptr);
3332
-
3333
- Your malloc_fn() must return NULL in case of failure. The png_malloc()
3334
- function will normally call png_error() if it receives a NULL from the
3335
- system memory allocator or from your replacement malloc_fn().
3336
-
3337
- Your free_fn() will never be called with a NULL ptr, since libpng's
3338
- png_free() checks for NULL before calling free_fn().
3339
-
3340
- Input/Output in libpng is done through png_read() and png_write(),
3341
- which currently just call fread() and fwrite(). The FILE * is stored in
3342
- png_struct and is initialized via png_init_io(). If you wish to change
3343
- the method of I/O, the library supplies callbacks that you can set
3344
- through the function png_set_read_fn() and png_set_write_fn() at run
3345
- time, instead of calling the png_init_io() function. These functions
3346
- also provide a void pointer that can be retrieved via the function
3347
- png_get_io_ptr(). For example:
3348
-
3349
- png_set_read_fn(png_structp read_ptr,
3350
- voidp read_io_ptr, png_rw_ptr read_data_fn)
3351
-
3352
- png_set_write_fn(png_structp write_ptr,
3353
- voidp write_io_ptr, png_rw_ptr write_data_fn,
3354
- png_flush_ptr output_flush_fn);
3355
-
3356
- voidp read_io_ptr = png_get_io_ptr(read_ptr);
3357
- voidp write_io_ptr = png_get_io_ptr(write_ptr);
3358
-
3359
- The replacement I/O functions must have prototypes as follows:
3360
-
3361
- void user_read_data(png_structp png_ptr,
3362
- png_bytep data, png_size_t length);
3363
- void user_write_data(png_structp png_ptr,
3364
- png_bytep data, png_size_t length);
3365
- void user_flush_data(png_structp png_ptr);
3366
-
3367
- The user_read_data() function is responsible for detecting and
3368
- handling end-of-data errors.
3369
-
3370
- Supplying NULL for the read, write, or flush functions sets them back
3371
- to using the default C stream functions, which expect the io_ptr to
3372
- point to a standard *FILE structure. It is probably a mistake
3373
- to use NULL for one of write_data_fn and output_flush_fn but not both
3374
- of them, unless you have built libpng with PNG_NO_WRITE_FLUSH defined.
3375
- It is an error to read from a write stream, and vice versa.
3376
-
3377
- Error handling in libpng is done through png_error() and png_warning().
3378
- Errors handled through png_error() are fatal, meaning that png_error()
3379
- should never return to its caller. Currently, this is handled via
3380
- setjmp() and longjmp() (unless you have compiled libpng with
3381
- PNG_NO_SETJMP, in which case it is handled via PNG_ABORT()),
3382
- but you could change this to do things like exit() if you should wish,
3383
- as long as your function does not return.
3384
-
3385
- On non-fatal errors, png_warning() is called
3386
- to print a warning message, and then control returns to the calling code.
3387
- By default png_error() and png_warning() print a message on stderr via
3388
- fprintf() unless the library is compiled with PNG_NO_CONSOLE_IO defined
3389
- (because you don't want the messages) or PNG_NO_STDIO defined (because
3390
- fprintf() isn't available). If you wish to change the behavior of the error
3391
- functions, you will need to set up your own message callbacks. These
3392
- functions are normally supplied at the time that the png_struct is created.
3393
- It is also possible to redirect errors and warnings to your own replacement
3394
- functions after png_create_*_struct() has been called by calling:
3395
-
3396
- png_set_error_fn(png_structp png_ptr,
3397
- png_voidp error_ptr, png_error_ptr error_fn,
3398
- png_error_ptr warning_fn);
3399
-
3400
- png_voidp error_ptr = png_get_error_ptr(png_ptr);
3401
-
3402
- If NULL is supplied for either error_fn or warning_fn, then the libpng
3403
- default function will be used, calling fprintf() and/or longjmp() if a
3404
- problem is encountered. The replacement error functions should have
3405
- parameters as follows:
3406
-
3407
- void user_error_fn(png_structp png_ptr,
3408
- png_const_charp error_msg);
3409
- void user_warning_fn(png_structp png_ptr,
3410
- png_const_charp warning_msg);
3411
-
3412
- The motivation behind using setjmp() and longjmp() is the C++ throw and
3413
- catch exception handling methods. This makes the code much easier to write,
3414
- as there is no need to check every return code of every function call.
3415
- However, there are some uncertainties about the status of local variables
3416
- after a longjmp, so the user may want to be careful about doing anything
3417
- after setjmp returns non-zero besides returning itself. Consult your
3418
- compiler documentation for more details. For an alternative approach, you
3419
- may wish to use the "cexcept" facility (see http://cexcept.sourceforge.net).
3420
-
3421
- .SS Custom chunks
3422
-
3423
- If you need to read or write custom chunks, you may need to get deeper
3424
- into the libpng code. The library now has mechanisms for storing
3425
- and writing chunks of unknown type; you can even declare callbacks
3426
- for custom chunks. However, this may not be good enough if the
3427
- library code itself needs to know about interactions between your
3428
- chunk and existing `intrinsic' chunks.
3429
-
3430
- If you need to write a new intrinsic chunk, first read the PNG
3431
- specification. Acquire a first level of understanding of how it works.
3432
- Pay particular attention to the sections that describe chunk names,
3433
- and look at how other chunks were designed, so you can do things
3434
- similarly. Second, check out the sections of libpng that read and
3435
- write chunks. Try to find a chunk that is similar to yours and use
3436
- it as a template. More details can be found in the comments inside
3437
- the code. It is best to handle unknown chunks in a generic method,
3438
- via callback functions, instead of by modifying libpng functions.
3439
-
3440
- If you wish to write your own transformation for the data, look through
3441
- the part of the code that does the transformations, and check out some of
3442
- the simpler ones to get an idea of how they work. Try to find a similar
3443
- transformation to the one you want to add and copy off of it. More details
3444
- can be found in the comments inside the code itself.
3445
-
3446
- .SS Configuring for 16 bit platforms
3447
-
3448
- You will want to look into zconf.h to tell zlib (and thus libpng) that
3449
- it cannot allocate more then 64K at a time. Even if you can, the memory
3450
- won't be accessible. So limit zlib and libpng to 64K by defining MAXSEG_64K.
3451
-
3452
- .SS Configuring for DOS
3453
-
3454
- For DOS users who only have access to the lower 640K, you will
3455
- have to limit zlib's memory usage via a png_set_compression_mem_level()
3456
- call. See zlib.h or zconf.h in the zlib library for more information.
3457
-
3458
- .SS Configuring for Medium Model
3459
-
3460
- Libpng's support for medium model has been tested on most of the popular
3461
- compilers. Make sure MAXSEG_64K gets defined, USE_FAR_KEYWORD gets
3462
- defined, and FAR gets defined to far in pngconf.h, and you should be
3463
- all set. Everything in the library (except for zlib's structure) is
3464
- expecting far data. You must use the typedefs with the p or pp on
3465
- the end for pointers (or at least look at them and be careful). Make
3466
- note that the rows of data are defined as png_bytepp, which is an
3467
- unsigned char far * far *.
3468
-
3469
- .SS Configuring for gui/windowing platforms:
3470
-
3471
- You will need to write new error and warning functions that use the GUI
3472
- interface, as described previously, and set them to be the error and
3473
- warning functions at the time that png_create_*_struct() is called,
3474
- in order to have them available during the structure initialization.
3475
- They can be changed later via png_set_error_fn(). On some compilers,
3476
- you may also have to change the memory allocators (png_malloc, etc.).
3477
-
3478
- .SS Configuring for compiler xxx:
3479
-
3480
- All includes for libpng are in pngconf.h. If you need to add, change
3481
- or delete an include, this is the place to do it.
3482
- The includes that are not needed outside libpng are placed in pngpriv.h,
3483
- which is only used by the routines inside libpng itself.
3484
- The files in libpng proper only include pngpriv.h and png.h, which
3485
- in turn includes pngconf.h.
3486
-
3487
- .SS Configuring zlib:
3488
-
3489
- There are special functions to configure the compression. Perhaps the
3490
- most useful one changes the compression level, which currently uses
3491
- input compression values in the range 0 - 9. The library normally
3492
- uses the default compression level (Z_DEFAULT_COMPRESSION = 6). Tests
3493
- have shown that for a large majority of images, compression values in
3494
- the range 3-6 compress nearly as well as higher levels, and do so much
3495
- faster. For online applications it may be desirable to have maximum speed
3496
- (Z_BEST_SPEED = 1). With versions of zlib after v0.99, you can also
3497
- specify no compression (Z_NO_COMPRESSION = 0), but this would create
3498
- files larger than just storing the raw bitmap. You can specify the
3499
- compression level by calling:
3500
-
3501
- png_set_compression_level(png_ptr, level);
3502
-
3503
- Another useful one is to reduce the memory level used by the library.
3504
- The memory level defaults to 8, but it can be lowered if you are
3505
- short on memory (running DOS, for example, where you only have 640K).
3506
- Note that the memory level does have an effect on compression; among
3507
- other things, lower levels will result in sections of incompressible
3508
- data being emitted in smaller stored blocks, with a correspondingly
3509
- larger relative overhead of up to 15% in the worst case.
3510
-
3511
- png_set_compression_mem_level(png_ptr, level);
3512
-
3513
- The other functions are for configuring zlib. They are not recommended
3514
- for normal use and may result in writing an invalid PNG file. See
3515
- zlib.h for more information on what these mean.
3516
-
3517
- png_set_compression_strategy(png_ptr,
3518
- strategy);
3519
- png_set_compression_window_bits(png_ptr,
3520
- window_bits);
3521
- png_set_compression_method(png_ptr, method);
3522
- png_set_compression_buffer_size(png_ptr, size);
3523
-
3524
- .SS Controlling row filtering
3525
-
3526
- If you want to control whether libpng uses filtering or not, which
3527
- filters are used, and how it goes about picking row filters, you
3528
- can call one of these functions. The selection and configuration
3529
- of row filters can have a significant impact on the size and
3530
- encoding speed and a somewhat lesser impact on the decoding speed
3531
- of an image. Filtering is enabled by default for RGB and grayscale
3532
- images (with and without alpha), but not for paletted images nor
3533
- for any images with bit depths less than 8 bits/pixel.
3534
-
3535
- The 'method' parameter sets the main filtering method, which is
3536
- currently only '0' in the PNG 1.2 specification. The 'filters'
3537
- parameter sets which filter(s), if any, should be used for each
3538
- scanline. Possible values are PNG_ALL_FILTERS and PNG_NO_FILTERS
3539
- to turn filtering on and off, respectively.
3540
-
3541
- Individual filter types are PNG_FILTER_NONE, PNG_FILTER_SUB,
3542
- PNG_FILTER_UP, PNG_FILTER_AVG, PNG_FILTER_PAETH, which can be bitwise
3543
- ORed together with '|' to specify one or more filters to use.
3544
- These filters are described in more detail in the PNG specification.
3545
- If you intend to change the filter type during the course of writing
3546
- the image, you should start with flags set for all of the filters
3547
- you intend to use so that libpng can initialize its internal
3548
- structures appropriately for all of the filter types. (Note that this
3549
- means the first row must always be adaptively filtered, because libpng
3550
- currently does not allocate the filter buffers until png_write_row()
3551
- is called for the first time.)
3552
-
3553
- filters = PNG_FILTER_NONE | PNG_FILTER_SUB
3554
- PNG_FILTER_UP | PNG_FILTER_AVG |
3555
- PNG_FILTER_PAETH | PNG_ALL_FILTERS;
3556
-
3557
- png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE,
3558
- filters);
3559
- The second parameter can also be
3560
- PNG_INTRAPIXEL_DIFFERENCING if you are
3561
- writing a PNG to be embedded in a MNG
3562
- datastream. This parameter must be the
3563
- same as the value of filter_method used
3564
- in png_set_IHDR().
3565
-
3566
- It is also possible to influence how libpng chooses from among the
3567
- available filters. This is done in one or both of two ways - by
3568
- telling it how important it is to keep the same filter for successive
3569
- rows, and by telling it the relative computational costs of the filters.
3570
-
3571
- double weights[3] = {1.5, 1.3, 1.1},
3572
- costs[PNG_FILTER_VALUE_LAST] =
3573
- {1.0, 1.3, 1.3, 1.5, 1.7};
3574
-
3575
- png_set_filter_heuristics(png_ptr,
3576
- PNG_FILTER_HEURISTIC_WEIGHTED, 3,
3577
- weights, costs);
3578
-
3579
- The weights are multiplying factors that indicate to libpng that the
3580
- row filter should be the same for successive rows unless another row filter
3581
- is that many times better than the previous filter. In the above example,
3582
- if the previous 3 filters were SUB, SUB, NONE, the SUB filter could have a
3583
- "sum of absolute differences" 1.5 x 1.3 times higher than other filters
3584
- and still be chosen, while the NONE filter could have a sum 1.1 times
3585
- higher than other filters and still be chosen. Unspecified weights are
3586
- taken to be 1.0, and the specified weights should probably be declining
3587
- like those above in order to emphasize recent filters over older filters.
3588
-
3589
- The filter costs specify for each filter type a relative decoding cost
3590
- to be considered when selecting row filters. This means that filters
3591
- with higher costs are less likely to be chosen over filters with lower
3592
- costs, unless their "sum of absolute differences" is that much smaller.
3593
- The costs do not necessarily reflect the exact computational speeds of
3594
- the various filters, since this would unduly influence the final image
3595
- size.
3596
-
3597
- Note that the numbers above were invented purely for this example and
3598
- are given only to help explain the function usage. Little testing has
3599
- been done to find optimum values for either the costs or the weights.
3600
-
3601
- .SS Removing unwanted object code
3602
-
3603
- There are a bunch of #define's in pngconf.h that control what parts of
3604
- libpng are compiled. All the defines end in _SUPPORTED. If you are
3605
- never going to use a capability, you can change the #define to #undef
3606
- before recompiling libpng and save yourself code and data space, or
3607
- you can turn off individual capabilities with defines that begin with
3608
- PNG_NO_.
3609
-
3610
- You can also turn all of the transforms and ancillary chunk capabilities
3611
- off en masse with compiler directives that define
3612
- PNG_NO_READ[or WRITE]_TRANSFORMS, or PNG_NO_READ[or WRITE]_ANCILLARY_CHUNKS,
3613
- or all four,
3614
- along with directives to turn on any of the capabilities that you do
3615
- want. The PNG_NO_READ[or WRITE]_TRANSFORMS directives disable the extra
3616
- transformations but still leave the library fully capable of reading
3617
- and writing PNG files with all known public chunks. Use of the
3618
- PNG_NO_READ[or WRITE]_ANCILLARY_CHUNKS directive produces a library
3619
- that is incapable of reading or writing ancillary chunks. If you are
3620
- not using the progressive reading capability, you can turn that off
3621
- with PNG_NO_PROGRESSIVE_READ (don't confuse this with the INTERLACING
3622
- capability, which you'll still have).
3623
-
3624
- All the reading and writing specific code are in separate files, so the
3625
- linker should only grab the files it needs. However, if you want to
3626
- make sure, or if you are building a stand alone library, all the
3627
- reading files start with pngr and all the writing files start with
3628
- pngw. The files that don't match either (like png.c, pngtrans.c, etc.)
3629
- are used for both reading and writing, and always need to be included.
3630
- The progressive reader is in pngpread.c
3631
-
3632
- If you are creating or distributing a dynamically linked library (a .so
3633
- or DLL file), you should not remove or disable any parts of the library,
3634
- as this will cause applications linked with different versions of the
3635
- library to fail if they call functions not available in your library.
3636
- The size of the library itself should not be an issue, because only
3637
- those sections that are actually used will be loaded into memory.
3638
-
3639
- .SS Requesting debug printout
3640
-
3641
- The macro definition PNG_DEBUG can be used to request debugging
3642
- printout. Set it to an integer value in the range 0 to 3. Higher
3643
- numbers result in increasing amounts of debugging information. The
3644
- information is printed to the "stderr" file, unless another file
3645
- name is specified in the PNG_DEBUG_FILE macro definition.
3646
-
3647
- When PNG_DEBUG > 0, the following functions (macros) become available:
3648
-
3649
- png_debug(level, message)
3650
- png_debug1(level, message, p1)
3651
- png_debug2(level, message, p1, p2)
3652
-
3653
- in which "level" is compared to PNG_DEBUG to decide whether to print
3654
- the message, "message" is the formatted string to be printed,
3655
- and p1 and p2 are parameters that are to be embedded in the string
3656
- according to printf-style formatting directives. For example,
3657
-
3658
- png_debug1(2, "foo=%d\n", foo);
3659
-
3660
- is expanded to
3661
-
3662
- if(PNG_DEBUG > 2)
3663
- fprintf(PNG_DEBUG_FILE, "foo=%d\n", foo);
3664
-
3665
- When PNG_DEBUG is defined but is zero, the macros aren't defined, but you
3666
- can still use PNG_DEBUG to control your own debugging:
3667
-
3668
- #ifdef PNG_DEBUG
3669
- fprintf(stderr, ...
3670
- #endif
3671
-
3672
- When PNG_DEBUG = 1, the macros are defined, but only png_debug statements
3673
- having level = 0 will be printed. There aren't any such statements in
3674
- this version of libpng, but if you insert some they will be printed.
3675
-
3676
- .SH VI. MNG support
3677
-
3678
- The MNG specification (available at http://www.libpng.org/pub/mng) allows
3679
- certain extensions to PNG for PNG images that are embedded in MNG datastreams.
3680
- Libpng can support some of these extensions. To enable them, use the
3681
- png_permit_mng_features() function:
3682
-
3683
- feature_set = png_permit_mng_features(png_ptr, mask)
3684
- mask is a png_uint_32 containing the bitwise OR of the
3685
- features you want to enable. These include
3686
- PNG_FLAG_MNG_EMPTY_PLTE
3687
- PNG_FLAG_MNG_FILTER_64
3688
- PNG_ALL_MNG_FEATURES
3689
- feature_set is a png_uint_32 that is the bitwise AND of
3690
- your mask with the set of MNG features that is
3691
- supported by the version of libpng that you are using.
3692
-
3693
- It is an error to use this function when reading or writing a standalone
3694
- PNG file with the PNG 8-byte signature. The PNG datastream must be wrapped
3695
- in a MNG datastream. As a minimum, it must have the MNG 8-byte signature
3696
- and the MHDR and MEND chunks. Libpng does not provide support for these
3697
- or any other MNG chunks; your application must provide its own support for
3698
- them. You may wish to consider using libmng (available at
3699
- http://www.libmng.com) instead.
3700
-
3701
- .SH VII. Changes to Libpng from version 0.88
3702
-
3703
- It should be noted that versions of libpng later than 0.96 are not
3704
- distributed by the original libpng author, Guy Schalnat, nor by
3705
- Andreas Dilger, who had taken over from Guy during 1996 and 1997, and
3706
- distributed versions 0.89 through 0.96, but rather by another member
3707
- of the original PNG Group, Glenn Randers-Pehrson. Guy and Andreas are
3708
- still alive and well, but they have moved on to other things.
3709
-
3710
- The old libpng functions png_read_init(), png_write_init(),
3711
- png_info_init(), png_read_destroy(), and png_write_destroy() have been
3712
- moved to PNG_INTERNAL in version 0.95 to discourage their use. These
3713
- functions will be removed from libpng version 2.0.0.
3714
-
3715
- The preferred method of creating and initializing the libpng structures is
3716
- via the png_create_read_struct(), png_create_write_struct(), and
3717
- png_create_info_struct() because they isolate the size of the structures
3718
- from the application, allow version error checking, and also allow the
3719
- use of custom error handling routines during the initialization, which
3720
- the old functions do not. The functions png_read_destroy() and
3721
- png_write_destroy() do not actually free the memory that libpng
3722
- allocated for these structs, but just reset the data structures, so they
3723
- can be used instead of png_destroy_read_struct() and
3724
- png_destroy_write_struct() if you feel there is too much system overhead
3725
- allocating and freeing the png_struct for each image read.
3726
-
3727
- Setting the error callbacks via png_set_message_fn() before
3728
- png_read_init() as was suggested in libpng-0.88 is no longer supported
3729
- because this caused applications that do not use custom error functions
3730
- to fail if the png_ptr was not initialized to zero. It is still possible
3731
- to set the error callbacks AFTER png_read_init(), or to change them with
3732
- png_set_error_fn(), which is essentially the same function, but with a new
3733
- name to force compilation errors with applications that try to use the old
3734
- method.
3735
-
3736
- Starting with version 1.0.7, you can find out which version of the library
3737
- you are using at run-time:
3738
-
3739
- png_uint_32 libpng_vn = png_access_version_number();
3740
-
3741
- The number libpng_vn is constructed from the major version, minor
3742
- version with leading zero, and release number with leading zero,
3743
- (e.g., libpng_vn for version 1.0.7 is 10007).
3744
-
3745
- You can also check which version of png.h you used when compiling your
3746
- application:
3747
-
3748
- png_uint_32 application_vn = PNG_LIBPNG_VER;
3749
-
3750
- .SH VIII. Changes to Libpng from version 1.0.x to 1.2.x
3751
-
3752
- Support for user memory management was enabled by default. To
3753
- accomplish this, the functions png_create_read_struct_2(),
3754
- png_create_write_struct_2(), png_set_mem_fn(), png_get_mem_ptr(),
3755
- png_malloc_default(), and png_free_default() were added.
3756
-
3757
- Support for the iTXt chunk has been enabled by default as of
3758
- version 1.2.41.
3759
-
3760
- Support for certain MNG features was enabled.
3761
-
3762
- Support for numbered error messages was added. However, we never got
3763
- around to actually numbering the error messages. The function
3764
- png_set_strip_error_numbers() was added (Note: the prototype for this
3765
- function was inadvertently removed from png.h in PNG_NO_ASSEMBLER_CODE
3766
- builds of libpng-1.2.15. It was restored in libpng-1.2.36).
3767
-
3768
- The png_malloc_warn() function was added at libpng-1.2.3. This issues
3769
- a png_warning and returns NULL instead of aborting when it fails to
3770
- acquire the requested memory allocation.
3771
-
3772
- Support for setting user limits on image width and height was enabled
3773
- by default. The functions png_set_user_limits(), png_get_user_width_max(),
3774
- and png_get_user_height_max() were added at libpng-1.2.6.
3775
-
3776
- The png_set_add_alpha() function was added at libpng-1.2.7.
3777
-
3778
- The function png_set_expand_gray_1_2_4_to_8() was added at libpng-1.2.9.
3779
- Unlike png_set_gray_1_2_4_to_8(), the new function does not expand the
3780
- tRNS chunk to alpha. The png_set_gray_1_2_4_to_8() function is
3781
- deprecated.
3782
-
3783
- A number of macro definitions in support of runtime selection of
3784
- assembler code features (especially Intel MMX code support) were
3785
- added at libpng-1.2.0:
3786
-
3787
- PNG_ASM_FLAG_MMX_SUPPORT_COMPILED
3788
- PNG_ASM_FLAG_MMX_SUPPORT_IN_CPU
3789
- PNG_ASM_FLAG_MMX_READ_COMBINE_ROW
3790
- PNG_ASM_FLAG_MMX_READ_INTERLACE
3791
- PNG_ASM_FLAG_MMX_READ_FILTER_SUB
3792
- PNG_ASM_FLAG_MMX_READ_FILTER_UP
3793
- PNG_ASM_FLAG_MMX_READ_FILTER_AVG
3794
- PNG_ASM_FLAG_MMX_READ_FILTER_PAETH
3795
- PNG_ASM_FLAGS_INITIALIZED
3796
- PNG_MMX_READ_FLAGS
3797
- PNG_MMX_FLAGS
3798
- PNG_MMX_WRITE_FLAGS
3799
- PNG_MMX_FLAGS
3800
-
3801
- We added the following functions in support of runtime
3802
- selection of assembler code features:
3803
-
3804
- png_get_mmx_flagmask()
3805
- png_set_mmx_thresholds()
3806
- png_get_asm_flags()
3807
- png_get_mmx_bitdepth_threshold()
3808
- png_get_mmx_rowbytes_threshold()
3809
- png_set_asm_flags()
3810
-
3811
- We replaced all of these functions with simple stubs in libpng-1.2.20,
3812
- when the Intel assembler code was removed due to a licensing issue.
3813
-
3814
- These macros are deprecated:
3815
-
3816
- PNG_READ_TRANSFORMS_NOT_SUPPORTED
3817
- PNG_PROGRESSIVE_READ_NOT_SUPPORTED
3818
- PNG_NO_SEQUENTIAL_READ_SUPPORTED
3819
- PNG_WRITE_TRANSFORMS_NOT_SUPPORTED
3820
- PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED
3821
- PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED
3822
-
3823
- They have been replaced, respectively, by:
3824
-
3825
- PNG_NO_READ_TRANSFORMS
3826
- PNG_NO_PROGRESSIVE_READ
3827
- PNG_NO_SEQUENTIAL_READ
3828
- PNG_NO_WRITE_TRANSFORMS
3829
- PNG_NO_READ_ANCILLARY_CHUNKS
3830
- PNG_NO_WRITE_ANCILLARY_CHUNKS
3831
-
3832
- PNG_MAX_UINT was replaced with PNG_UINT_31_MAX. It has been
3833
- deprecated since libpng-1.0.16 and libpng-1.2.6.
3834
-
3835
- The function
3836
- png_check_sig(sig, num)
3837
- was replaced with
3838
- !png_sig_cmp(sig, 0, num)
3839
- It has been deprecated since libpng-0.90.
3840
-
3841
- The function
3842
- png_set_gray_1_2_4_to_8()
3843
- which also expands tRNS to alpha was replaced with
3844
- png_set_expand_gray_1_2_4_to_8()
3845
- which does not. It has been deprecated since libpng-1.0.18 and 1.2.9.
3846
-
3847
- .SH IX. Changes to Libpng from version 1.0.x/1.2.x to 1.4.x
3848
-
3849
- Private libpng prototypes and macro definitions were moved from
3850
- png.h and pngconf.h into a new pngpriv.h header file.
3851
-
3852
- Functions png_set_benign_errors(), png_benign_error(), and
3853
- png_chunk_benign_error() were added.
3854
-
3855
- Support for setting the maximum amount of memory that the application
3856
- will allocate for reading chunks was added, as a security measure.
3857
- The functions png_set_chunk_cache_max() and png_get_chunk_cache_max()
3858
- were added to the library.
3859
-
3860
- We implemented support for I/O states by adding png_ptr member io_state
3861
- and functions png_get_io_chunk_name() and png_get_io_state() in pngget.c
3862
-
3863
- We added PNG_TRANSFORM_GRAY_TO_RGB to the available high-level
3864
- input transforms.
3865
-
3866
- Checking for and reporting of errors in the IHDR chunk is more thorough.
3867
-
3868
- Support for global arrays was removed, to improve thread safety.
3869
-
3870
- Some obsolete/deprecated macros and functions have been removed.
3871
-
3872
- Typecasted NULL definitions such as
3873
- #define png_voidp_NULL (png_voidp)NULL
3874
- were eliminated. If you used these in your application, just use
3875
- NULL instead.
3876
-
3877
- The png_struct and info_struct members "trans" and "trans_values" were
3878
- changed to "trans_alpha" and "trans_color", respectively.
3879
-
3880
- The obsolete, unused pnggccrd.c and pngvcrd.c files and related makefiles
3881
- were removed.
3882
-
3883
- The PNG_1_0_X and PNG_1_2_X macros were eliminated.
3884
-
3885
- The PNG_LEGACY_SUPPORTED macro was eliminated.
3886
-
3887
- Many WIN32_WCE #ifdefs were removed.
3888
-
3889
- The functions png_read_init(info_ptr), png_write_init(info_ptr),
3890
- png_info_init(info_ptr), png_read_destroy(), and png_write_destroy()
3891
- have been removed. They have been deprecated since libpng-0.95.
3892
-
3893
- The png_permit_empty_plte() was removed. It has been deprecated
3894
- since libpng-1.0.9. Use png_permit_mng_features() instead.
3895
-
3896
- We removed the obsolete stub functions png_get_mmx_flagmask(),
3897
- png_set_mmx_thresholds(), png_get_asm_flags(),
3898
- png_get_mmx_bitdepth_threshold(), png_get_mmx_rowbytes_threshold(),
3899
- png_set_asm_flags(), and png_mmx_supported()
3900
-
3901
- We removed the obsolete png_check_sig(), png_memcpy_check(), and
3902
- png_memset_check() functions. Instead use !png_sig_cmp(), png_memcpy(),
3903
- and png_memset(), respectively.
3904
-
3905
- The function png_set_gray_1_2_4_to_8() was removed. It has been
3906
- deprecated since libpng-1.0.18 and 1.2.9, when it was replaced with
3907
- png_set_expand_gray_1_2_4_to_8() because the former function also
3908
- expanded palette images.
3909
-
3910
- We changed the prototype for png_malloc() from
3911
- png_malloc(png_structp png_ptr, png_uint_32 size)
3912
- to
3913
- png_malloc(png_structp png_ptr, png_alloc_size_t size)
3914
-
3915
- This also applies to the prototype for the user replacement malloc_fn().
3916
-
3917
- The png_calloc() function was added and is used in place of
3918
- of "png_malloc(); png_memset();" except in the case in png_read_png()
3919
- where the array consists of pointers; in this case a "for" loop is used
3920
- after the png_malloc() to set the pointers to NULL, to give robust.
3921
- behavior in case the application runs out of memory part-way through
3922
- the process.
3923
-
3924
- We changed the prototypes of png_get_compression_buffer_size() and
3925
- png_set_compression_buffer_size() to work with png_size_t instead of
3926
- png_uint_32.
3927
-
3928
- Support for numbered error messages was removed by default, since we
3929
- never got around to actually numbering the error messages. The function
3930
- png_set_strip_error_numbers() was removed from the library by default.
3931
-
3932
- The png_zalloc() and png_zfree() functions are no longer exported.
3933
- The png_zalloc() function no longer zeroes out the memory that it
3934
- allocates.
3935
-
3936
- Support for dithering was disabled by default in libpng-1.4.0, because
3937
- been well tested and doesn't actually "dither". The code was not
3938
- removed, however, and could be enabled by building libpng with
3939
- PNG_READ_DITHER_SUPPORTED defined. In libpng-1.4.2, this support
3940
- was reenabled, but the function was renamed png_set_quantize() to
3941
- reflect more accurately what it actually does. At the same time,
3942
- the PNG_DITHER_[RED,GREEN_BLUE]_BITS macros were also renamed to
3943
- PNG_QUANTIZE_[RED,GREEN,BLUE]_BITS.
3944
-
3945
- We removed the trailing '.' from the warning and error messages.
3946
-
3947
- .SH X. Detecting libpng
3948
-
3949
- The png_get_io_ptr() function has been present since libpng-0.88, has never
3950
- changed, and is unaffected by conditional compilation macros. It is the
3951
- best choice for use in configure scripts for detecting the presence of any
3952
- libpng version since 0.88. In an autoconf "configure.in" you could use
3953
-
3954
- AC_CHECK_LIB(png, png_get_io_ptr, ...
3955
-
3956
- .SH XI. Source code repository
3957
-
3958
- Since about February 2009, version 1.2.34, libpng has been under "git" source
3959
- control. The git repository was built from old libpng-x.y.z.tar.gz files
3960
- going back to version 0.70. You can access the git repository (read only)
3961
- at
3962
-
3963
- git://libpng.git.sourceforge.net/gitroot/libpng
3964
-
3965
- or you can browse it via "gitweb" at
3966
-
3967
- http://libpng.git.sourceforge.net/git/gitweb.cgi?p=libpng
3968
-
3969
- Patches can be sent to glennrp at users.sourceforge.net or to
3970
- png-mng-implement at lists.sourceforge.net or you can upload them to
3971
- the libpng bug tracker at
3972
-
3973
- http://libpng.sourceforge.net
3974
-
3975
- .SH XII. Coding style
3976
-
3977
- Our coding style is similar to the "Allman" style, with curly
3978
- braces on separate lines:
3979
-
3980
- if (condition)
3981
- {
3982
- action;
3983
- }
3984
-
3985
- else if (another condition)
3986
- {
3987
- another action;
3988
- }
3989
-
3990
- The braces can be omitted from simple one-line actions:
3991
-
3992
- if (condition)
3993
- return (0);
3994
-
3995
- We use 3-space indentation, except for continued statements which
3996
- are usually indented the same as the first line of the statement
3997
- plus four more spaces.
3998
-
3999
- For macro definitions we use 2-space indentation, always leaving the "#"
4000
- in the first column.
4001
-
4002
- #ifndef PNG_NO_FEATURE
4003
- # ifndef PNG_FEATURE_SUPPORTED
4004
- # define PNG_FEATURE_SUPPORTED
4005
- # endif
4006
- #endif
4007
-
4008
- Comments appear with the leading "/*" at the same indentation as
4009
- the statement that follows the comment:
4010
-
4011
- /* Single-line comment */
4012
- statement;
4013
-
4014
- /* This is a multiple-line
4015
- * comment.
4016
- */
4017
- statement;
4018
-
4019
- Very short comments can be placed after the end of the statement
4020
- to which they pertain:
4021
-
4022
- statement; /* comment */
4023
-
4024
- We don't use C++ style ("//") comments. We have, however,
4025
- used them in the past in some now-abandoned MMX assembler
4026
- code.
4027
-
4028
- Functions and their curly braces are not indented, and
4029
- exported functions are marked with PNGAPI:
4030
-
4031
- /* This is a public function that is visible to
4032
- * application programers. It does thus-and-so.
4033
- */
4034
- void PNGAPI
4035
- png_exported_function(png_ptr, png_info, foo)
4036
- {
4037
- body;
4038
- }
4039
-
4040
- The prototypes for all exported functions appear in png.h,
4041
- above the comment that says
4042
-
4043
- /* Maintainer: Put new public prototypes here ... */
4044
-
4045
- We mark all non-exported functions with "/* PRIVATE */"":
4046
-
4047
- void /* PRIVATE */
4048
- png_non_exported_function(png_ptr, png_info, foo)
4049
- {
4050
- body;
4051
- }
4052
-
4053
- The prototypes for non-exported functions (except for those in
4054
- pngtest) appear in
4055
- pngpriv.h
4056
- above the comment that says
4057
-
4058
- /* Maintainer: Put new private prototypes here ^ and in libpngpf.3 */
4059
-
4060
- The names of all exported functions and variables begin
4061
- with "png_", and all publicly visible C preprocessor
4062
- macros begin with "PNG_".
4063
-
4064
- We put a space after each comma and after each semicolon
4065
- in "for" statments, and we put spaces before and after each
4066
- C binary operator and after "for" or "while", and before
4067
- "?". We don't put a space between a typecast and the expression
4068
- being cast, nor do we put one between a function name and the
4069
- left parenthesis that follows it:
4070
-
4071
- for (i = 2; i > 0; --i)
4072
- y[i] = a(x) + (int)b;
4073
-
4074
- We prefer #ifdef and #ifndef to #if defined() and if !defined()
4075
- when there is only one macro being tested.
4076
-
4077
- We do not use the TAB character for indentation in the C sources.
4078
-
4079
- Lines do not exceed 80 characters.
4080
-
4081
- Other rules can be inferred by inspecting the libpng source.
4082
-
4083
- .SH XIII. Y2K Compliance in libpng
4084
-
4085
- June 26, 2010
4086
-
4087
- Since the PNG Development group is an ad-hoc body, we can't make
4088
- an official declaration.
4089
-
4090
- This is your unofficial assurance that libpng from version 0.71 and
4091
- upward through 1.4.3 are Y2K compliant. It is my belief that earlier
4092
- versions were also Y2K compliant.
4093
-
4094
- Libpng only has three year fields. One is a 2-byte unsigned integer that
4095
- will hold years up to 65535. The other two hold the date in text
4096
- format, and will hold years up to 9999.
4097
-
4098
- The integer is
4099
- "png_uint_16 year" in png_time_struct.
4100
-
4101
- The strings are
4102
- "png_charp time_buffer" in png_struct and
4103
- "near_time_buffer", which is a local character string in png.c.
4104
-
4105
- There are seven time-related functions:
4106
-
4107
- png_convert_to_rfc_1123() in png.c
4108
- (formerly png_convert_to_rfc_1152() in error)
4109
- png_convert_from_struct_tm() in pngwrite.c, called
4110
- in pngwrite.c
4111
- png_convert_from_time_t() in pngwrite.c
4112
- png_get_tIME() in pngget.c
4113
- png_handle_tIME() in pngrutil.c, called in pngread.c
4114
- png_set_tIME() in pngset.c
4115
- png_write_tIME() in pngwutil.c, called in pngwrite.c
4116
-
4117
- All appear to handle dates properly in a Y2K environment. The
4118
- png_convert_from_time_t() function calls gmtime() to convert from system
4119
- clock time, which returns (year - 1900), which we properly convert to
4120
- the full 4-digit year. There is a possibility that applications using
4121
- libpng are not passing 4-digit years into the png_convert_to_rfc_1123()
4122
- function, or that they are incorrectly passing only a 2-digit year
4123
- instead of "year - 1900" into the png_convert_from_struct_tm() function,
4124
- but this is not under our control. The libpng documentation has always
4125
- stated that it works with 4-digit years, and the APIs have been
4126
- documented as such.
4127
-
4128
- The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned
4129
- integer to hold the year, and can hold years as large as 65535.
4130
-
4131
- zlib, upon which libpng depends, is also Y2K compliant. It contains
4132
- no date-related code.
4133
-
4134
-
4135
- Glenn Randers-Pehrson
4136
- libpng maintainer
4137
- PNG Development Group
4138
-
4139
- .SH NOTE
4140
-
4141
- Note about libpng version numbers:
4142
-
4143
- Due to various miscommunications, unforeseen code incompatibilities
4144
- and occasional factors outside the authors' control, version numbering
4145
- on the library has not always been consistent and straightforward.
4146
- The following table summarizes matters since version 0.89c, which was
4147
- the first widely used release:
4148
-
4149
- source png.h png.h shared-lib
4150
- version string int version
4151
- ------- ------ ----- ----------
4152
- 0.89c ("beta 3") 0.89 89 1.0.89
4153
- 0.90 ("beta 4") 0.90 90 0.90
4154
- 0.95 ("beta 5") 0.95 95 0.95
4155
- 0.96 ("beta 6") 0.96 96 0.96
4156
- 0.97b ("beta 7") 1.00.97 97 1.0.1
4157
- 0.97c 0.97 97 2.0.97
4158
- 0.98 0.98 98 2.0.98
4159
- 0.99 0.99 98 2.0.99
4160
- 0.99a-m 0.99 99 2.0.99
4161
- 1.00 1.00 100 2.1.0
4162
- 1.0.0 1.0.0 100 2.1.0
4163
- 1.0.0 (from here on, the 100 2.1.0
4164
- 1.0.1 png.h string is 10001 2.1.0
4165
- 1.0.1a-e identical to the 10002 from here on, the
4166
- 1.0.2 source version) 10002 shared library is 2.V
4167
- 1.0.2a-b 10003 where V is the source
4168
- 1.0.1 10001 code version except as
4169
- 1.0.1a-e 10002 2.1.0.1a-e noted.
4170
- 1.0.2 10002 2.1.0.2
4171
- 1.0.2a-b 10003 2.1.0.2a-b
4172
- 1.0.3 10003 2.1.0.3
4173
- 1.0.3a-d 10004 2.1.0.3a-d
4174
- 1.0.4 10004 2.1.0.4
4175
- 1.0.4a-f 10005 2.1.0.4a-f
4176
- 1.0.5 (+ 2 patches) 10005 2.1.0.5
4177
- 1.0.5a-d 10006 2.1.0.5a-d
4178
- 1.0.5e-r 10100 2.1.0.5e-r
4179
- 1.0.5s-v 10006 2.1.0.5s-v
4180
- 1.0.6 (+ 3 patches) 10006 2.1.0.6
4181
- 1.0.6d-g 10007 2.1.0.6d-g
4182
- 1.0.6h 10007 10.6h
4183
- 1.0.6i 10007 10.6i
4184
- 1.0.6j 10007 2.1.0.6j
4185
- 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14
4186
- 1.0.7beta15-18 1 10007 2.1.0.7beta15-18
4187
- 1.0.7rc1-2 1 10007 2.1.0.7rc1-2
4188
- 1.0.7 1 10007 2.1.0.7
4189
- 1.0.8beta1-4 1 10008 2.1.0.8beta1-4
4190
- 1.0.8rc1 1 10008 2.1.0.8rc1
4191
- 1.0.8 1 10008 2.1.0.8
4192
- 1.0.9beta1-6 1 10009 2.1.0.9beta1-6
4193
- 1.0.9rc1 1 10009 2.1.0.9rc1
4194
- 1.0.9beta7-10 1 10009 2.1.0.9beta7-10
4195
- 1.0.9rc2 1 10009 2.1.0.9rc2
4196
- 1.0.9 1 10009 2.1.0.9
4197
- 1.0.10beta1 1 10010 2.1.0.10beta1
4198
- 1.0.10rc1 1 10010 2.1.0.10rc1
4199
- 1.0.10 1 10010 2.1.0.10
4200
- 1.0.11beta1-3 1 10011 2.1.0.11beta1-3
4201
- 1.0.11rc1 1 10011 2.1.0.11rc1
4202
- 1.0.11 1 10011 2.1.0.11
4203
- 1.0.12beta1-2 2 10012 2.1.0.12beta1-2
4204
- 1.0.12rc1 2 10012 2.1.0.12rc1
4205
- 1.0.12 2 10012 2.1.0.12
4206
- 1.1.0a-f - 10100 2.1.1.0a-f abandoned
4207
- 1.2.0beta1-2 2 10200 2.1.2.0beta1-2
4208
- 1.2.0beta3-5 3 10200 3.1.2.0beta3-5
4209
- 1.2.0rc1 3 10200 3.1.2.0rc1
4210
- 1.2.0 3 10200 3.1.2.0
4211
- 1.2.1beta-4 3 10201 3.1.2.1beta1-4
4212
- 1.2.1rc1-2 3 10201 3.1.2.1rc1-2
4213
- 1.2.1 3 10201 3.1.2.1
4214
- 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6
4215
- 1.0.13beta1 10 10013 10.so.0.1.0.13beta1
4216
- 1.0.13rc1 10 10013 10.so.0.1.0.13rc1
4217
- 1.2.2rc1 12 10202 12.so.0.1.2.2rc1
4218
- 1.0.13 10 10013 10.so.0.1.0.13
4219
- 1.2.2 12 10202 12.so.0.1.2.2
4220
- 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6
4221
- 1.2.3 12 10203 12.so.0.1.2.3
4222
- 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3
4223
- 1.2.4rc1 13 10204 12.so.0.1.2.4rc1
4224
- 1.0.14 10 10014 10.so.0.1.0.14
4225
- 1.2.4 13 10204 12.so.0.1.2.4
4226
- 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2
4227
- 1.0.15rc1 10 10015 10.so.0.1.0.15rc1
4228
- 1.0.15 10 10015 10.so.0.1.0.15
4229
- 1.2.5 13 10205 12.so.0.1.2.5
4230
- 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4
4231
- 1.2.6rc1-5 13 10206 12.so.0.1.2.6rc1-5
4232
- 1.0.16 10 10016 10.so.0.1.0.16
4233
- 1.2.6 13 10206 12.so.0.1.2.6
4234
- 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2
4235
- 1.0.17rc1 10 10017 12.so.0.1.0.17rc1
4236
- 1.2.7rc1 13 10207 12.so.0.1.2.7rc1
4237
- 1.0.17 10 10017 12.so.0.1.0.17
4238
- 1.2.7 13 10207 12.so.0.1.2.7
4239
- 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5
4240
- 1.0.18rc1-5 10 10018 12.so.0.1.0.18rc1-5
4241
- 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5
4242
- 1.0.18 10 10018 12.so.0.1.0.18
4243
- 1.2.8 13 10208 12.so.0.1.2.8
4244
- 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3
4245
- 1.2.9beta4-11 13 10209 12.so.0.9[.0]
4246
- 1.2.9rc1 13 10209 12.so.0.9[.0]
4247
- 1.2.9 13 10209 12.so.0.9[.0]
4248
- 1.2.10beta1-7 13 10210 12.so.0.10[.0]
4249
- 1.2.10rc1-2 13 10210 12.so.0.10[.0]
4250
- 1.2.10 13 10210 12.so.0.10[.0]
4251
- 1.4.0beta1-6 14 10400 14.so.0.0[.0]
4252
- 1.2.11beta1-4 13 10210 12.so.0.11[.0]
4253
- 1.4.0beta7-8 14 10400 14.so.0.0[.0]
4254
- 1.2.11 13 10211 12.so.0.11[.0]
4255
- 1.2.12 13 10212 12.so.0.12[.0]
4256
- 1.4.0beta9-14 14 10400 14.so.0.0[.0]
4257
- 1.2.13 13 10213 12.so.0.13[.0]
4258
- 1.4.0beta15-36 14 10400 14.so.0.0[.0]
4259
- 1.4.0beta37-87 14 10400 14.so.14.0[.0]
4260
- 1.4.0rc01 14 10400 14.so.14.0[.0]
4261
- 1.4.0beta88-109 14 10400 14.so.14.0[.0]
4262
- 1.4.0rc02-08 14 10400 14.so.14.0[.0]
4263
- 1.4.0 14 10400 14.so.14.0[.0]
4264
- 1.4.1beta01-03 14 10401 14.so.14.1[.0]
4265
- 1.4.1rc01 14 10401 14.so.14.1[.0]
4266
- 1.4.1beta04-12 14 10401 14.so.14.1[.0]
4267
- 1.4.1rc02-04 14 10401 14.so.14.1[.0]
4268
- 1.4.1 14 10401 14.so.14.1[.0]
4269
- 1.4.2beta01 14 10402 14.so.14.2[.0]
4270
- 1.4.2rc02-06 14 10402 14.so.14.2[.0]
4271
- 1.4.2 14 10402 14.so.14.2[.0]
4272
- 1.4.3beta01-05 14 10403 14.so.14.3[.0]
4273
- 1.4.3rc01-03 14 10403 14.so.14.3[.0]
4274
- 1.4.3 14 10403 14.so.14.3[.0]
4275
-
4276
- Henceforth the source version will match the shared-library minor
4277
- and patch numbers; the shared-library major version number will be
4278
- used for changes in backward compatibility, as it is intended. The
4279
- PNG_PNGLIB_VER macro, which is not used within libpng but is available
4280
- for applications, is an unsigned integer of the form xyyzz corresponding
4281
- to the source version x.y.z (leading zeros in y and z). Beta versions
4282
- were given the previous public release number plus a letter, until
4283
- version 1.0.6j; from then on they were given the upcoming public
4284
- release number plus "betaNN" or "rcN".
4285
-
4286
- .SH "SEE ALSO"
4287
- libpngpf(3), png(5)
4288
- .LP
4289
- .IR libpng :
4290
- .IP
4291
- http://libpng.sourceforge.net (follow the [DOWNLOAD] link)
4292
- http://www.libpng.org/pub/png
4293
-
4294
- .LP
4295
- .IR zlib :
4296
- .IP
4297
- (generally) at the same location as
4298
- .I libpng
4299
- or at
4300
- .br
4301
- ftp://ftp.info-zip.org/pub/infozip/zlib
4302
-
4303
- .LP
4304
- .IR PNG specification: RFC 2083
4305
- .IP
4306
- (generally) at the same location as
4307
- .I libpng
4308
- or at
4309
- .br
4310
- ftp://ds.internic.net/rfc/rfc2083.txt
4311
- .br
4312
- or (as a W3C Recommendation) at
4313
- .br
4314
- http://www.w3.org/TR/REC-png.html
4315
-
4316
- .LP
4317
- In the case of any inconsistency between the PNG specification
4318
- and this library, the specification takes precedence.
4319
-
4320
- .SH AUTHORS
4321
- This man page: Glenn Randers-Pehrson
4322
- <glennrp at users.sourceforge.net>
4323
-
4324
- The contributing authors would like to thank all those who helped
4325
- with testing, bug fixes, and patience. This wouldn't have been
4326
- possible without all of you.
4327
-
4328
- Thanks to Frank J. T. Wojcik for helping with the documentation.
4329
-
4330
- Libpng version 1.4.3 - June 26, 2010:
4331
- Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
4332
- Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
4333
-
4334
- Supported by the PNG development group
4335
- .br
4336
- png-mng-implement at lists.sf.net
4337
- (subscription required; visit
4338
- png-mng-implement at lists.sourceforge.net (subscription required; visit
4339
- https://lists.sourceforge.net/lists/listinfo/png-mng-implement
4340
- to subscribe).
4341
-
4342
- .SH COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
4343
-
4344
- (This copy of the libpng notices is provided for your convenience. In case of
4345
- any discrepancy between this copy and the notices in the file png.h that is
4346
- included in the libpng distribution, the latter shall prevail.)
4347
-
4348
- If you modify libpng you may insert additional notices immediately following
4349
- this sentence.
4350
-
4351
- This code is released under the libpng license.
4352
-
4353
- libpng versions 1.2.6, August 15, 2004, through 1.4.3, June 26, 2010, are
4354
- Copyright (c) 2004,2006-2007 Glenn Randers-Pehrson, and are
4355
- distributed according to the same disclaimer and license as libpng-1.2.5
4356
- with the following individual added to the list of Contributing Authors
4357
-
4358
- Cosmin Truta
4359
-
4360
- libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
4361
- Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
4362
- distributed according to the same disclaimer and license as libpng-1.0.6
4363
- with the following individuals added to the list of Contributing Authors
4364
-
4365
- Simon-Pierre Cadieux
4366
- Eric S. Raymond
4367
- Gilles Vollant
4368
-
4369
- and with the following additions to the disclaimer:
4370
-
4371
- There is no warranty against interference with your
4372
- enjoyment of the library or against infringement.
4373
- There is no warranty that our efforts or the library
4374
- will fulfill any of your particular purposes or needs.
4375
- This library is provided with all faults, and the entire
4376
- risk of satisfactory quality, performance, accuracy, and
4377
- effort is with the user.
4378
-
4379
- libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
4380
- Copyright (c) 1998, 1999 Glenn Randers-Pehrson
4381
- Distributed according to the same disclaimer and license as libpng-0.96,
4382
- with the following individuals added to the list of Contributing Authors:
4383
-
4384
- Tom Lane
4385
- Glenn Randers-Pehrson
4386
- Willem van Schaik
4387
-
4388
- libpng versions 0.89, June 1996, through 0.96, May 1997, are
4389
- Copyright (c) 1996, 1997 Andreas Dilger
4390
- Distributed according to the same disclaimer and license as libpng-0.88,
4391
- with the following individuals added to the list of Contributing Authors:
4392
-
4393
- John Bowler
4394
- Kevin Bracey
4395
- Sam Bushell
4396
- Magnus Holmgren
4397
- Greg Roelofs
4398
- Tom Tanner
4399
-
4400
- libpng versions 0.5, May 1995, through 0.88, January 1996, are
4401
- Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
4402
-
4403
- For the purposes of this copyright and license, "Contributing Authors"
4404
- is defined as the following set of individuals:
4405
-
4406
- Andreas Dilger
4407
- Dave Martindale
4408
- Guy Eric Schalnat
4409
- Paul Schmidt
4410
- Tim Wegner
4411
-
4412
- The PNG Reference Library is supplied "AS IS". The Contributing Authors
4413
- and Group 42, Inc. disclaim all warranties, expressed or implied,
4414
- including, without limitation, the warranties of merchantability and of
4415
- fitness for any purpose. The Contributing Authors and Group 42, Inc.
4416
- assume no liability for direct, indirect, incidental, special, exemplary,
4417
- or consequential damages, which may result from the use of the PNG
4418
- Reference Library, even if advised of the possibility of such damage.
4419
-
4420
- Permission is hereby granted to use, copy, modify, and distribute this
4421
- source code, or portions hereof, for any purpose, without fee, subject
4422
- to the following restrictions:
4423
-
4424
- 1. The origin of this source code must not be misrepresented.
4425
-
4426
- 2. Altered versions must be plainly marked as such and
4427
- must not be misrepresented as being the original source.
4428
-
4429
- 3. This Copyright notice may not be removed or altered from
4430
- any source or altered source distribution.
4431
-
4432
- The Contributing Authors and Group 42, Inc. specifically permit, without
4433
- fee, and encourage the use of this source code as a component to
4434
- supporting the PNG file format in commercial products. If you use this
4435
- source code in a product, acknowledgment is not required but would be
4436
- appreciated.
4437
-
4438
-
4439
- A "png_get_copyright" function is available, for convenient use in "about"
4440
- boxes and the like:
4441
-
4442
- printf("%s",png_get_copyright(NULL));
4443
-
4444
- Also, the PNG logo (in PNG format, of course) is supplied in the
4445
- files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
4446
-
4447
- Libpng is OSI Certified Open Source Software. OSI Certified Open Source is a
4448
- certification mark of the Open Source Initiative.
4449
-
4450
- Glenn Randers-Pehrson
4451
- glennrp at users.sourceforge.net
4452
- June 26, 2010
4453
-
4454
- .\" end of man page
4455
-