@patleeman/pi-boy 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1361) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +189 -0
  3. package/index.ts +1 -0
  4. package/mgba-bridge/build.sh +31 -0
  5. package/mgba-bridge/src/main.c +740 -0
  6. package/mgba-bridge/vendor/mgba/.clang-format +34 -0
  7. package/mgba-bridge/vendor/mgba/.gitlab-ci.yml +267 -0
  8. package/mgba-bridge/vendor/mgba/CHANGES +2094 -0
  9. package/mgba-bridge/vendor/mgba/CMakeLists.txt +1373 -0
  10. package/mgba-bridge/vendor/mgba/CMakePresets.json +21 -0
  11. package/mgba-bridge/vendor/mgba/CONTRIBUTING.md +196 -0
  12. package/mgba-bridge/vendor/mgba/LICENSE +373 -0
  13. package/mgba-bridge/vendor/mgba/Makefile +1 -0
  14. package/mgba-bridge/vendor/mgba/Makefile.libretro +490 -0
  15. package/mgba-bridge/vendor/mgba/PORTING.md +21 -0
  16. package/mgba-bridge/vendor/mgba/README.md +270 -0
  17. package/mgba-bridge/vendor/mgba/README_DE.md +255 -0
  18. package/mgba-bridge/vendor/mgba/README_ES.md +255 -0
  19. package/mgba-bridge/vendor/mgba/README_JP.md +268 -0
  20. package/mgba-bridge/vendor/mgba/README_ZH_CN.md +268 -0
  21. package/mgba-bridge/vendor/mgba/Tupfile +3 -0
  22. package/mgba-bridge/vendor/mgba/include/mgba/core/bitmap-cache.h +64 -0
  23. package/mgba-bridge/vendor/mgba/include/mgba/core/cache-set.h +38 -0
  24. package/mgba-bridge/vendor/mgba/include/mgba/core/cheats.h +130 -0
  25. package/mgba-bridge/vendor/mgba/include/mgba/core/config.h +118 -0
  26. package/mgba-bridge/vendor/mgba/include/mgba/core/core.h +232 -0
  27. package/mgba-bridge/vendor/mgba/include/mgba/core/cpu.h +40 -0
  28. package/mgba-bridge/vendor/mgba/include/mgba/core/directories.h +42 -0
  29. package/mgba-bridge/vendor/mgba/include/mgba/core/input.h +91 -0
  30. package/mgba-bridge/vendor/mgba/include/mgba/core/interface.h +199 -0
  31. package/mgba-bridge/vendor/mgba/include/mgba/core/library.h +62 -0
  32. package/mgba-bridge/vendor/mgba/include/mgba/core/lockstep.h +77 -0
  33. package/mgba-bridge/vendor/mgba/include/mgba/core/log.h +88 -0
  34. package/mgba-bridge/vendor/mgba/include/mgba/core/map-cache.h +82 -0
  35. package/mgba-bridge/vendor/mgba/include/mgba/core/mem-search.h +62 -0
  36. package/mgba-bridge/vendor/mgba/include/mgba/core/rewind.h +47 -0
  37. package/mgba-bridge/vendor/mgba/include/mgba/core/scripting.h +65 -0
  38. package/mgba-bridge/vendor/mgba/include/mgba/core/serialize.h +61 -0
  39. package/mgba-bridge/vendor/mgba/include/mgba/core/sync.h +44 -0
  40. package/mgba-bridge/vendor/mgba/include/mgba/core/thread.h +135 -0
  41. package/mgba-bridge/vendor/mgba/include/mgba/core/tile-cache.h +63 -0
  42. package/mgba-bridge/vendor/mgba/include/mgba/core/timing.h +55 -0
  43. package/mgba-bridge/vendor/mgba/include/mgba/core/version.h +27 -0
  44. package/mgba-bridge/vendor/mgba/include/mgba/debugger/debugger.h +267 -0
  45. package/mgba-bridge/vendor/mgba/include/mgba/feature/commandline.h +71 -0
  46. package/mgba-bridge/vendor/mgba/include/mgba/feature/proxy-backend.h +83 -0
  47. package/mgba-bridge/vendor/mgba/include/mgba/feature/thread-proxy.h +41 -0
  48. package/mgba-bridge/vendor/mgba/include/mgba/feature/updater.h +51 -0
  49. package/mgba-bridge/vendor/mgba/include/mgba/feature/video-backend.h +81 -0
  50. package/mgba-bridge/vendor/mgba/include/mgba/feature/video-logger.h +145 -0
  51. package/mgba-bridge/vendor/mgba/include/mgba/gb/core.h +21 -0
  52. package/mgba-bridge/vendor/mgba/include/mgba/gb/interface.h +112 -0
  53. package/mgba-bridge/vendor/mgba/include/mgba/gba/core.h +21 -0
  54. package/mgba-bridge/vendor/mgba/include/mgba/gba/interface.h +168 -0
  55. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/arm.h +217 -0
  56. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/debugger/cli-debugger.h +18 -0
  57. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/debugger/debugger.h +52 -0
  58. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/debugger/memory-debugger.h +20 -0
  59. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/decoder-inlines.h +37 -0
  60. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/decoder.h +231 -0
  61. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/emitter-arm.h +336 -0
  62. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/emitter-inlines.h +32 -0
  63. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/emitter-thumb.h +113 -0
  64. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/isa-arm.h +22 -0
  65. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/isa-inlines.h +186 -0
  66. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/isa-thumb.h +20 -0
  67. package/mgba-bridge/vendor/mgba/include/mgba/internal/arm/macros.h +18 -0
  68. package/mgba-bridge/vendor/mgba/include/mgba/internal/debugger/access-logger.h +57 -0
  69. package/mgba-bridge/vendor/mgba/include/mgba/internal/debugger/cli-debugger.h +108 -0
  70. package/mgba-bridge/vendor/mgba/include/mgba/internal/debugger/cli-el-backend.h +21 -0
  71. package/mgba-bridge/vendor/mgba/include/mgba/internal/debugger/gdb-stub.h +62 -0
  72. package/mgba-bridge/vendor/mgba/include/mgba/internal/debugger/parser.h +81 -0
  73. package/mgba-bridge/vendor/mgba/include/mgba/internal/debugger/stack-trace.h +32 -0
  74. package/mgba-bridge/vendor/mgba/include/mgba/internal/debugger/symbols.h +29 -0
  75. package/mgba-bridge/vendor/mgba/include/mgba/internal/defines.h +31 -0
  76. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/audio.h +257 -0
  77. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/cheats.h +26 -0
  78. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/debugger/cli.h +28 -0
  79. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/debugger/debugger.h +20 -0
  80. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/debugger/symbols.h +19 -0
  81. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/gb.h +202 -0
  82. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/input.h +31 -0
  83. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/io.h +127 -0
  84. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/mbc.h +72 -0
  85. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/memory.h +385 -0
  86. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/overrides.h +21 -0
  87. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/renderers/cache-set.h +23 -0
  88. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/renderers/proxy.h +29 -0
  89. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/renderers/software.h +72 -0
  90. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/serialize.h +536 -0
  91. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/sio/lockstep.h +49 -0
  92. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/sio/printer.h +74 -0
  93. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/sio.h +52 -0
  94. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/timer.h +45 -0
  95. package/mgba-bridge/vendor/mgba/include/mgba/internal/gb/video.h +201 -0
  96. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/audio.h +291 -0
  97. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/bios.h +73 -0
  98. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/cart/ereader.h +127 -0
  99. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/cart/gpio.h +110 -0
  100. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/cart/matrix.h +35 -0
  101. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/cart/unlicensed.h +77 -0
  102. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/cheats.h +175 -0
  103. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/debugger/cli.h +30 -0
  104. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/dma.h +73 -0
  105. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/gba.h +194 -0
  106. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/input.h +34 -0
  107. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/io.h +190 -0
  108. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/memory.h +184 -0
  109. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/overrides.h +21 -0
  110. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/renderers/cache-set.h +22 -0
  111. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/renderers/common.h +27 -0
  112. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/renderers/gl.h +218 -0
  113. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/renderers/proxy.h +29 -0
  114. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/renderers/video-software.h +160 -0
  115. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/savedata.h +130 -0
  116. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/serialize.h +496 -0
  117. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/sharkport.h +27 -0
  118. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/sio/dolphin.h +41 -0
  119. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/sio/gbp.h +38 -0
  120. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/sio/lockstep.h +95 -0
  121. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/sio.h +98 -0
  122. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/timer.h +36 -0
  123. package/mgba-bridge/vendor/mgba/include/mgba/internal/gba/video.h +251 -0
  124. package/mgba-bridge/vendor/mgba/include/mgba/internal/script/lua.h +12 -0
  125. package/mgba-bridge/vendor/mgba/include/mgba/internal/script/socket.h +31 -0
  126. package/mgba-bridge/vendor/mgba/include/mgba/internal/script/types.h +20 -0
  127. package/mgba-bridge/vendor/mgba/include/mgba/internal/sm83/debugger/cli-debugger.h +18 -0
  128. package/mgba-bridge/vendor/mgba/include/mgba/internal/sm83/debugger/debugger.h +43 -0
  129. package/mgba-bridge/vendor/mgba/include/mgba/internal/sm83/debugger/memory-debugger.h +20 -0
  130. package/mgba-bridge/vendor/mgba/include/mgba/internal/sm83/decoder.h +113 -0
  131. package/mgba-bridge/vendor/mgba/include/mgba/internal/sm83/emitter-sm83.h +528 -0
  132. package/mgba-bridge/vendor/mgba/include/mgba/internal/sm83/isa-sm83.h +20 -0
  133. package/mgba-bridge/vendor/mgba/include/mgba/internal/sm83/sm83.h +174 -0
  134. package/mgba-bridge/vendor/mgba/include/mgba/script/base.h +28 -0
  135. package/mgba-bridge/vendor/mgba/include/mgba/script/canvas.h +24 -0
  136. package/mgba-bridge/vendor/mgba/include/mgba/script/console.h +51 -0
  137. package/mgba-bridge/vendor/mgba/include/mgba/script/context.h +126 -0
  138. package/mgba-bridge/vendor/mgba/include/mgba/script/input.h +272 -0
  139. package/mgba-bridge/vendor/mgba/include/mgba/script/macros.h +680 -0
  140. package/mgba-bridge/vendor/mgba/include/mgba/script/storage.h +28 -0
  141. package/mgba-bridge/vendor/mgba/include/mgba/script/types.h +400 -0
  142. package/mgba-bridge/vendor/mgba/include/mgba/script.h +18 -0
  143. package/mgba-bridge/vendor/mgba/include/mgba-util/audio-buffer.h +34 -0
  144. package/mgba-bridge/vendor/mgba/include/mgba-util/audio-resampler.h +42 -0
  145. package/mgba-bridge/vendor/mgba/include/mgba-util/circle-buffer.h +39 -0
  146. package/mgba-bridge/vendor/mgba/include/mgba-util/common.h +352 -0
  147. package/mgba-bridge/vendor/mgba/include/mgba-util/configuration.h +50 -0
  148. package/mgba-bridge/vendor/mgba/include/mgba-util/convolve.h +33 -0
  149. package/mgba-bridge/vendor/mgba/include/mgba-util/crc32.h +26 -0
  150. package/mgba-bridge/vendor/mgba/include/mgba-util/dllexports.h +19 -0
  151. package/mgba-bridge/vendor/mgba/include/mgba-util/elf-read.h +45 -0
  152. package/mgba-bridge/vendor/mgba/include/mgba-util/formatting.h +36 -0
  153. package/mgba-bridge/vendor/mgba/include/mgba-util/geometry.h +31 -0
  154. package/mgba-bridge/vendor/mgba/include/mgba-util/gui/file-select.h +21 -0
  155. package/mgba-bridge/vendor/mgba/include/mgba-util/gui/font-metrics.h +15 -0
  156. package/mgba-bridge/vendor/mgba/include/mgba-util/gui/font.h +149 -0
  157. package/mgba-bridge/vendor/mgba/include/mgba-util/gui/menu.h +126 -0
  158. package/mgba-bridge/vendor/mgba/include/mgba-util/gui.h +136 -0
  159. package/mgba-bridge/vendor/mgba/include/mgba-util/hash.h +17 -0
  160. package/mgba-bridge/vendor/mgba/include/mgba-util/image/export.h +20 -0
  161. package/mgba-bridge/vendor/mgba/include/mgba-util/image/png-io.h +54 -0
  162. package/mgba-bridge/vendor/mgba/include/mgba-util/image.h +442 -0
  163. package/mgba-bridge/vendor/mgba/include/mgba-util/interpolator.h +51 -0
  164. package/mgba-bridge/vendor/mgba/include/mgba-util/macros.h +92 -0
  165. package/mgba-bridge/vendor/mgba/include/mgba-util/math.h +145 -0
  166. package/mgba-bridge/vendor/mgba/include/mgba-util/md5.h +34 -0
  167. package/mgba-bridge/vendor/mgba/include/mgba-util/memory.h +18 -0
  168. package/mgba-bridge/vendor/mgba/include/mgba-util/patch/fast.h +38 -0
  169. package/mgba-bridge/vendor/mgba/include/mgba-util/patch/ips.h +19 -0
  170. package/mgba-bridge/vendor/mgba/include/mgba-util/patch/ups.h +19 -0
  171. package/mgba-bridge/vendor/mgba/include/mgba-util/patch.h +26 -0
  172. package/mgba-bridge/vendor/mgba/include/mgba-util/platform/3ds/3ds-vfs.h +17 -0
  173. package/mgba-bridge/vendor/mgba/include/mgba-util/platform/3ds/threading.h +88 -0
  174. package/mgba-bridge/vendor/mgba/include/mgba-util/platform/posix/threading.h +125 -0
  175. package/mgba-bridge/vendor/mgba/include/mgba-util/platform/psp2/sce-vfs.h +18 -0
  176. package/mgba-bridge/vendor/mgba/include/mgba-util/platform/psp2/threading.h +161 -0
  177. package/mgba-bridge/vendor/mgba/include/mgba-util/platform/switch/threading.h +88 -0
  178. package/mgba-bridge/vendor/mgba/include/mgba-util/platform/windows/getopt.h +609 -0
  179. package/mgba-bridge/vendor/mgba/include/mgba-util/platform/windows/threading.h +106 -0
  180. package/mgba-bridge/vendor/mgba/include/mgba-util/ring-fifo.h +30 -0
  181. package/mgba-bridge/vendor/mgba/include/mgba-util/sfo.h +30 -0
  182. package/mgba-bridge/vendor/mgba/include/mgba-util/sha1.h +33 -0
  183. package/mgba-bridge/vendor/mgba/include/mgba-util/socket.h +542 -0
  184. package/mgba-bridge/vendor/mgba/include/mgba-util/string.h +55 -0
  185. package/mgba-bridge/vendor/mgba/include/mgba-util/table.h +93 -0
  186. package/mgba-bridge/vendor/mgba/include/mgba-util/text-codec.h +36 -0
  187. package/mgba-bridge/vendor/mgba/include/mgba-util/threading.h +123 -0
  188. package/mgba-bridge/vendor/mgba/include/mgba-util/vector.h +128 -0
  189. package/mgba-bridge/vendor/mgba/include/mgba-util/vfs.h +125 -0
  190. package/mgba-bridge/vendor/mgba/intl/activate.py +70 -0
  191. package/mgba-bridge/vendor/mgba/intl/core_option_regex.py +95 -0
  192. package/mgba-bridge/vendor/mgba/intl/core_option_translation.py +633 -0
  193. package/mgba-bridge/vendor/mgba/intl/crowdin.yaml +13 -0
  194. package/mgba-bridge/vendor/mgba/intl/crowdin_prep.py +30 -0
  195. package/mgba-bridge/vendor/mgba/intl/crowdin_source_upload.py +93 -0
  196. package/mgba-bridge/vendor/mgba/intl/crowdin_translate.py +39 -0
  197. package/mgba-bridge/vendor/mgba/intl/crowdin_translation_download.py +93 -0
  198. package/mgba-bridge/vendor/mgba/intl/download_workflow.py +16 -0
  199. package/mgba-bridge/vendor/mgba/intl/initial_sync.py +125 -0
  200. package/mgba-bridge/vendor/mgba/intl/remove_initial_cycle.py +30 -0
  201. package/mgba-bridge/vendor/mgba/intl/upload_workflow.py +15 -0
  202. package/mgba-bridge/vendor/mgba/intl/v1_to_v2_converter.py +483 -0
  203. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.android_arm64-v8a +96 -0
  204. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.android_armeabi +96 -0
  205. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.android_armeabi-v7a +96 -0
  206. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.android_mips +96 -0
  207. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.android_mips64 +96 -0
  208. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.android_x86 +96 -0
  209. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.android_x86_64 +96 -0
  210. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.common +156 -0
  211. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.linux-portable_x86 +96 -0
  212. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.linux-portable_x86_64 +96 -0
  213. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.linux_x86 +96 -0
  214. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.linux_x86_64 +96 -0
  215. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.mingw_x86 +96 -0
  216. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.mingw_x86_64 +96 -0
  217. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.osx_x86 +96 -0
  218. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.osx_x86_64 +96 -0
  219. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.rules +45 -0
  220. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.vita_arm +96 -0
  221. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.wii_ppc +96 -0
  222. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.windows_x86 +96 -0
  223. package/mgba-bridge/vendor/mgba/libretro-build/Makefile.windows_x86_64 +96 -0
  224. package/mgba-bridge/vendor/mgba/libretro-build/include/libz/zconf.h +511 -0
  225. package/mgba-bridge/vendor/mgba/libretro-build/jni/Android.mk +23 -0
  226. package/mgba-bridge/vendor/mgba/libretro-build/jni/Application.mk +2 -0
  227. package/mgba-bridge/vendor/mgba/libretro-build/link.T +5 -0
  228. package/mgba-bridge/vendor/mgba/link.T +4 -0
  229. package/mgba-bridge/vendor/mgba/opt/libgba/mgba.c +94 -0
  230. package/mgba-bridge/vendor/mgba/opt/libgba/mgba.h +46 -0
  231. package/mgba-bridge/vendor/mgba/src/arm/CMakeLists.txt +19 -0
  232. package/mgba-bridge/vendor/mgba/src/arm/arm.c +264 -0
  233. package/mgba-bridge/vendor/mgba/src/arm/debugger/cli-debugger.c +187 -0
  234. package/mgba-bridge/vendor/mgba/src/arm/debugger/debugger.c +588 -0
  235. package/mgba-bridge/vendor/mgba/src/arm/debugger/memory-debugger.c +158 -0
  236. package/mgba-bridge/vendor/mgba/src/arm/decoder-arm.c +466 -0
  237. package/mgba-bridge/vendor/mgba/src/arm/decoder-thumb.c +344 -0
  238. package/mgba-bridge/vendor/mgba/src/arm/decoder.c +601 -0
  239. package/mgba-bridge/vendor/mgba/src/arm/isa-arm.c +784 -0
  240. package/mgba-bridge/vendor/mgba/src/arm/isa-thumb.c +417 -0
  241. package/mgba-bridge/vendor/mgba/src/core/CMakeLists.txt +47 -0
  242. package/mgba-bridge/vendor/mgba/src/core/bitmap-cache.c +187 -0
  243. package/mgba-bridge/vendor/mgba/src/core/cache-set.c +83 -0
  244. package/mgba-bridge/vendor/mgba/src/core/cheats.c +807 -0
  245. package/mgba-bridge/vendor/mgba/src/core/config.c +548 -0
  246. package/mgba-bridge/vendor/mgba/src/core/core-serialize.c +585 -0
  247. package/mgba-bridge/vendor/mgba/src/core/core.c +539 -0
  248. package/mgba-bridge/vendor/mgba/src/core/directories.c +196 -0
  249. package/mgba-bridge/vendor/mgba/src/core/flags.h.in +204 -0
  250. package/mgba-bridge/vendor/mgba/src/core/input.c +677 -0
  251. package/mgba-bridge/vendor/mgba/src/core/interface.c +154 -0
  252. package/mgba-bridge/vendor/mgba/src/core/library.c +584 -0
  253. package/mgba-bridge/vendor/mgba/src/core/lockstep.c +43 -0
  254. package/mgba-bridge/vendor/mgba/src/core/log.c +294 -0
  255. package/mgba-bridge/vendor/mgba/src/core/map-cache.c +219 -0
  256. package/mgba-bridge/vendor/mgba/src/core/mem-search.c +342 -0
  257. package/mgba-bridge/vendor/mgba/src/core/rewind.c +186 -0
  258. package/mgba-bridge/vendor/mgba/src/core/scripting.c +1481 -0
  259. package/mgba-bridge/vendor/mgba/src/core/sync.c +121 -0
  260. package/mgba-bridge/vendor/mgba/src/core/thread.c +726 -0
  261. package/mgba-bridge/vendor/mgba/src/core/tile-cache.c +283 -0
  262. package/mgba-bridge/vendor/mgba/src/core/timing.c +137 -0
  263. package/mgba-bridge/vendor/mgba/src/core/version.c.in +14 -0
  264. package/mgba-bridge/vendor/mgba/src/debugger/CMakeLists.txt +30 -0
  265. package/mgba-bridge/vendor/mgba/src/debugger/access-logger.c +592 -0
  266. package/mgba-bridge/vendor/mgba/src/debugger/cli-debugger-scripting.c +137 -0
  267. package/mgba-bridge/vendor/mgba/src/debugger/cli-debugger.c +1482 -0
  268. package/mgba-bridge/vendor/mgba/src/debugger/cli-el-backend.c +248 -0
  269. package/mgba-bridge/vendor/mgba/src/debugger/debugger.c +327 -0
  270. package/mgba-bridge/vendor/mgba/src/debugger/gdb-stub.c +918 -0
  271. package/mgba-bridge/vendor/mgba/src/debugger/parser.c +902 -0
  272. package/mgba-bridge/vendor/mgba/src/debugger/stack-trace.c +133 -0
  273. package/mgba-bridge/vendor/mgba/src/debugger/symbols.c +109 -0
  274. package/mgba-bridge/vendor/mgba/src/feature/CMakeLists.txt +24 -0
  275. package/mgba-bridge/vendor/mgba/src/feature/commandline.c +404 -0
  276. package/mgba-bridge/vendor/mgba/src/feature/ffmpeg/ffmpeg-common.h +95 -0
  277. package/mgba-bridge/vendor/mgba/src/feature/ffmpeg/ffmpeg-decoder.c +204 -0
  278. package/mgba-bridge/vendor/mgba/src/feature/ffmpeg/ffmpeg-decoder.h +45 -0
  279. package/mgba-bridge/vendor/mgba/src/feature/ffmpeg/ffmpeg-encoder.c +960 -0
  280. package/mgba-bridge/vendor/mgba/src/feature/ffmpeg/ffmpeg-encoder.h +91 -0
  281. package/mgba-bridge/vendor/mgba/src/feature/ffmpeg/ffmpeg-scale.c +36 -0
  282. package/mgba-bridge/vendor/mgba/src/feature/ffmpeg/ffmpeg-scale.h +21 -0
  283. package/mgba-bridge/vendor/mgba/src/feature/gui/cheats.c +195 -0
  284. package/mgba-bridge/vendor/mgba/src/feature/gui/cheats.h +18 -0
  285. package/mgba-bridge/vendor/mgba/src/feature/gui/gui-config.c +438 -0
  286. package/mgba-bridge/vendor/mgba/src/feature/gui/gui-config.h +19 -0
  287. package/mgba-bridge/vendor/mgba/src/feature/gui/gui-runner.c +853 -0
  288. package/mgba-bridge/vendor/mgba/src/feature/gui/gui-runner.h +114 -0
  289. package/mgba-bridge/vendor/mgba/src/feature/gui/remap.c +88 -0
  290. package/mgba-bridge/vendor/mgba/src/feature/gui/remap.h +27 -0
  291. package/mgba-bridge/vendor/mgba/src/feature/proxy-backend.c +286 -0
  292. package/mgba-bridge/vendor/mgba/src/feature/thread-proxy.c +213 -0
  293. package/mgba-bridge/vendor/mgba/src/feature/updater.c +227 -0
  294. package/mgba-bridge/vendor/mgba/src/feature/video-backend.c +45 -0
  295. package/mgba-bridge/vendor/mgba/src/feature/video-logger.c +1092 -0
  296. package/mgba-bridge/vendor/mgba/src/gb/CMakeLists.txt +53 -0
  297. package/mgba-bridge/vendor/mgba/src/gb/audio.c +1149 -0
  298. package/mgba-bridge/vendor/mgba/src/gb/cheats.c +190 -0
  299. package/mgba-bridge/vendor/mgba/src/gb/core.c +1539 -0
  300. package/mgba-bridge/vendor/mgba/src/gb/debugger/cli.c +115 -0
  301. package/mgba-bridge/vendor/mgba/src/gb/debugger/debugger.c +46 -0
  302. package/mgba-bridge/vendor/mgba/src/gb/debugger/symbols.c +61 -0
  303. package/mgba-bridge/vendor/mgba/src/gb/extra/proxy.c +328 -0
  304. package/mgba-bridge/vendor/mgba/src/gb/gb.c +1261 -0
  305. package/mgba-bridge/vendor/mgba/src/gb/input.c +29 -0
  306. package/mgba-bridge/vendor/mgba/src/gb/io.c +735 -0
  307. package/mgba-bridge/vendor/mgba/src/gb/mbc/huc-3.c +218 -0
  308. package/mgba-bridge/vendor/mgba/src/gb/mbc/licensed.c +84 -0
  309. package/mgba-bridge/vendor/mgba/src/gb/mbc/mbc-private.h +66 -0
  310. package/mgba-bridge/vendor/mgba/src/gb/mbc/mbc.c +583 -0
  311. package/mgba-bridge/vendor/mgba/src/gb/mbc/pocket-cam.c +142 -0
  312. package/mgba-bridge/vendor/mgba/src/gb/mbc/tama5.c +433 -0
  313. package/mgba-bridge/vendor/mgba/src/gb/mbc/unlicensed.c +601 -0
  314. package/mgba-bridge/vendor/mgba/src/gb/mbc.c +650 -0
  315. package/mgba-bridge/vendor/mgba/src/gb/memory.c +1079 -0
  316. package/mgba-bridge/vendor/mgba/src/gb/overrides.c +939 -0
  317. package/mgba-bridge/vendor/mgba/src/gb/renderers/cache-set.c +129 -0
  318. package/mgba-bridge/vendor/mgba/src/gb/renderers/software.c +1169 -0
  319. package/mgba-bridge/vendor/mgba/src/gb/serialize.c +310 -0
  320. package/mgba-bridge/vendor/mgba/src/gb/sio/lockstep.c +284 -0
  321. package/mgba-bridge/vendor/mgba/src/gb/sio/printer.c +237 -0
  322. package/mgba-bridge/vendor/mgba/src/gb/sio.c +106 -0
  323. package/mgba-bridge/vendor/mgba/src/gb/timer.c +150 -0
  324. package/mgba-bridge/vendor/mgba/src/gb/video.c +1216 -0
  325. package/mgba-bridge/vendor/mgba/src/gba/CMakeLists.txt +62 -0
  326. package/mgba-bridge/vendor/mgba/src/gba/audio.c +555 -0
  327. package/mgba-bridge/vendor/mgba/src/gba/bios.c +981 -0
  328. package/mgba-bridge/vendor/mgba/src/gba/cart/ereader.c +1639 -0
  329. package/mgba-bridge/vendor/mgba/src/gba/cart/gpio.c +584 -0
  330. package/mgba-bridge/vendor/mgba/src/gba/cart/matrix.c +134 -0
  331. package/mgba-bridge/vendor/mgba/src/gba/cart/unlicensed.c +255 -0
  332. package/mgba-bridge/vendor/mgba/src/gba/cart/vfame.c +320 -0
  333. package/mgba-bridge/vendor/mgba/src/gba/cheats/codebreaker.c +323 -0
  334. package/mgba-bridge/vendor/mgba/src/gba/cheats/gameshark.c +318 -0
  335. package/mgba-bridge/vendor/mgba/src/gba/cheats/gameshark.h +32 -0
  336. package/mgba-bridge/vendor/mgba/src/gba/cheats/parv3.c +442 -0
  337. package/mgba-bridge/vendor/mgba/src/gba/cheats/parv3.h +21 -0
  338. package/mgba-bridge/vendor/mgba/src/gba/cheats.c +386 -0
  339. package/mgba-bridge/vendor/mgba/src/gba/core.c +1822 -0
  340. package/mgba-bridge/vendor/mgba/src/gba/debugger/cli.c +116 -0
  341. package/mgba-bridge/vendor/mgba/src/gba/dma.c +363 -0
  342. package/mgba-bridge/vendor/mgba/src/gba/extra/battlechip.c +171 -0
  343. package/mgba-bridge/vendor/mgba/src/gba/extra/proxy.c +408 -0
  344. package/mgba-bridge/vendor/mgba/src/gba/gba.c +1095 -0
  345. package/mgba-bridge/vendor/mgba/src/gba/hle-bios-src.s +400 -0
  346. package/mgba-bridge/vendor/mgba/src/gba/hle-bios.c +103 -0
  347. package/mgba-bridge/vendor/mgba/src/gba/hle-bios.h +17 -0
  348. package/mgba-bridge/vendor/mgba/src/gba/hle-bios.make +18 -0
  349. package/mgba-bridge/vendor/mgba/src/gba/input.c +31 -0
  350. package/mgba-bridge/vendor/mgba/src/gba/io.c +1085 -0
  351. package/mgba-bridge/vendor/mgba/src/gba/memory.c +1974 -0
  352. package/mgba-bridge/vendor/mgba/src/gba/overrides.c +435 -0
  353. package/mgba-bridge/vendor/mgba/src/gba/renderers/cache-set.c +219 -0
  354. package/mgba-bridge/vendor/mgba/src/gba/renderers/common.c +59 -0
  355. package/mgba-bridge/vendor/mgba/src/gba/renderers/gl.c +2137 -0
  356. package/mgba-bridge/vendor/mgba/src/gba/renderers/software-bg.c +228 -0
  357. package/mgba-bridge/vendor/mgba/src/gba/renderers/software-mode0.c +576 -0
  358. package/mgba-bridge/vendor/mgba/src/gba/renderers/software-obj.c +431 -0
  359. package/mgba-bridge/vendor/mgba/src/gba/renderers/software-private.h +283 -0
  360. package/mgba-bridge/vendor/mgba/src/gba/renderers/video-software.c +1117 -0
  361. package/mgba-bridge/vendor/mgba/src/gba/savedata.c +792 -0
  362. package/mgba-bridge/vendor/mgba/src/gba/serialize.c +242 -0
  363. package/mgba-bridge/vendor/mgba/src/gba/sharkport.c +389 -0
  364. package/mgba-bridge/vendor/mgba/src/gba/sio/dolphin.c +217 -0
  365. package/mgba-bridge/vendor/mgba/src/gba/sio/gbp.c +150 -0
  366. package/mgba-bridge/vendor/mgba/src/gba/sio/lockstep.c +1063 -0
  367. package/mgba-bridge/vendor/mgba/src/gba/sio.c +493 -0
  368. package/mgba-bridge/vendor/mgba/src/gba/timer.c +153 -0
  369. package/mgba-bridge/vendor/mgba/src/gba/video.c +470 -0
  370. package/mgba-bridge/vendor/mgba/src/platform/cmake/DMGOverrides.cmake.in +6 -0
  371. package/mgba-bridge/vendor/mgba/src/platform/cmake/DebugStrip.cmake +12 -0
  372. package/mgba-bridge/vendor/mgba/src/platform/cmake/ExportDirectory.cmake +7 -0
  373. package/mgba-bridge/vendor/mgba/src/platform/cmake/FindFeature.cmake +88 -0
  374. package/mgba-bridge/vendor/mgba/src/platform/cmake/FindFunction.cmake +14 -0
  375. package/mgba-bridge/vendor/mgba/src/platform/cmake/FindSDL2.cmake +164 -0
  376. package/mgba-bridge/vendor/mgba/src/platform/cmake/Findepoxy.cmake +10 -0
  377. package/mgba-bridge/vendor/mgba/src/platform/cmake/devkitPro.cmake +44 -0
  378. package/mgba-bridge/vendor/mgba/src/platform/example/client-server/client.c +160 -0
  379. package/mgba-bridge/vendor/mgba/src/platform/example/client-server/server.c +168 -0
  380. package/mgba-bridge/vendor/mgba/src/platform/headless-main.c +379 -0
  381. package/mgba-bridge/vendor/mgba/src/platform/libretro/libretro.c +2611 -0
  382. package/mgba-bridge/vendor/mgba/src/platform/libretro/libretro.h +7846 -0
  383. package/mgba-bridge/vendor/mgba/src/platform/libretro/libretro_core_options.h +721 -0
  384. package/mgba-bridge/vendor/mgba/src/platform/libretro/libretro_core_options_intl.h +17798 -0
  385. package/mgba-bridge/vendor/mgba/src/platform/libretro/memory.c +22 -0
  386. package/mgba-bridge/vendor/mgba/src/platform/libretro/retro_inline.h +39 -0
  387. package/mgba-bridge/vendor/mgba/src/platform/opengl/gl.c +304 -0
  388. package/mgba-bridge/vendor/mgba/src/platform/opengl/gl.h +40 -0
  389. package/mgba-bridge/vendor/mgba/src/platform/opengl/gles2.c +1230 -0
  390. package/mgba-bridge/vendor/mgba/src/platform/opengl/gles2.h +117 -0
  391. package/mgba-bridge/vendor/mgba/src/platform/posix/memory.c +37 -0
  392. package/mgba-bridge/vendor/mgba/src/script/CMakeLists.txt +38 -0
  393. package/mgba-bridge/vendor/mgba/src/script/canvas.c +292 -0
  394. package/mgba-bridge/vendor/mgba/src/script/console.c +141 -0
  395. package/mgba-bridge/vendor/mgba/src/script/context.c +492 -0
  396. package/mgba-bridge/vendor/mgba/src/script/engines/lua.c +1617 -0
  397. package/mgba-bridge/vendor/mgba/src/script/image.c +338 -0
  398. package/mgba-bridge/vendor/mgba/src/script/input.c +612 -0
  399. package/mgba-bridge/vendor/mgba/src/script/socket.c +284 -0
  400. package/mgba-bridge/vendor/mgba/src/script/stdlib.c +306 -0
  401. package/mgba-bridge/vendor/mgba/src/script/storage.c +557 -0
  402. package/mgba-bridge/vendor/mgba/src/script/test.h +29 -0
  403. package/mgba-bridge/vendor/mgba/src/script/types.c +1886 -0
  404. package/mgba-bridge/vendor/mgba/src/sm83/CMakeLists.txt +16 -0
  405. package/mgba-bridge/vendor/mgba/src/sm83/debugger/cli-debugger.c +110 -0
  406. package/mgba-bridge/vendor/mgba/src/sm83/debugger/debugger.c +266 -0
  407. package/mgba-bridge/vendor/mgba/src/sm83/debugger/memory-debugger.c +84 -0
  408. package/mgba-bridge/vendor/mgba/src/sm83/decoder.c +608 -0
  409. package/mgba-bridge/vendor/mgba/src/sm83/isa-sm83.c +817 -0
  410. package/mgba-bridge/vendor/mgba/src/sm83/sm83.c +199 -0
  411. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/.clang-format +92 -0
  412. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/CMakeLists.txt +18 -0
  413. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/LICENSE +19 -0
  414. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/README.md +152 -0
  415. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/discord_register.h +26 -0
  416. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/discord_rpc.h +87 -0
  417. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/mingw-std-threads/LICENSE +24 -0
  418. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/mingw-std-threads/README.md +41 -0
  419. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/mingw-std-threads/condition_variable +549 -0
  420. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/mingw-std-threads/mutex +474 -0
  421. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/mingw-std-threads/shared_mutex +497 -0
  422. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/mingw-std-threads/thread +410 -0
  423. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/allocators.h +271 -0
  424. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/document.h +2573 -0
  425. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/encodedstream.h +299 -0
  426. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/encodings.h +716 -0
  427. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/error/en.h +74 -0
  428. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/error/error.h +155 -0
  429. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/filereadstream.h +99 -0
  430. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/filewritestream.h +104 -0
  431. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/fwd.h +151 -0
  432. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/biginteger.h +290 -0
  433. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/diyfp.h +258 -0
  434. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/dtoa.h +245 -0
  435. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/ieee754.h +78 -0
  436. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/itoa.h +304 -0
  437. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/meta.h +181 -0
  438. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/pow10.h +55 -0
  439. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/regex.h +701 -0
  440. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/stack.h +230 -0
  441. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/strfunc.h +55 -0
  442. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/strtod.h +269 -0
  443. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/internal/swap.h +46 -0
  444. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/istreamwrapper.h +115 -0
  445. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/license.txt +57 -0
  446. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/memorybuffer.h +70 -0
  447. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/memorystream.h +71 -0
  448. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/msinttypes/inttypes.h +316 -0
  449. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/msinttypes/stdint.h +300 -0
  450. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/ostreamwrapper.h +81 -0
  451. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/pointer.h +1358 -0
  452. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/prettywriter.h +255 -0
  453. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/rapidjson.h +615 -0
  454. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/reader.h +1879 -0
  455. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/schema.h +2006 -0
  456. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/stream.h +179 -0
  457. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/stringbuffer.h +117 -0
  458. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/include/rapidjson/writer.h +610 -0
  459. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/CMakeLists.txt +90 -0
  460. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/backoff.h +40 -0
  461. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/connection.h +19 -0
  462. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/connection_unix.cpp +125 -0
  463. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/connection_win.cpp +128 -0
  464. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/discord_register_linux.cpp +102 -0
  465. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/discord_register_osx.m +80 -0
  466. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/discord_register_win.cpp +185 -0
  467. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/discord_rpc.cpp +504 -0
  468. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/dllmain.cpp +8 -0
  469. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/msg_queue.h +36 -0
  470. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/rpc_connection.cpp +137 -0
  471. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/rpc_connection.h +59 -0
  472. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/serialization.cpp +245 -0
  473. package/mgba-bridge/vendor/mgba/src/third-party/discord-rpc/src/serialization.h +215 -0
  474. package/mgba-bridge/vendor/mgba/src/third-party/inih/LICENSE.txt +27 -0
  475. package/mgba-bridge/vendor/mgba/src/third-party/inih/README.md +157 -0
  476. package/mgba-bridge/vendor/mgba/src/third-party/inih/ini.c +288 -0
  477. package/mgba-bridge/vendor/mgba/src/third-party/inih/ini.h +148 -0
  478. package/mgba-bridge/vendor/mgba/src/third-party/libpng/ANNOUNCE +47 -0
  479. package/mgba-bridge/vendor/mgba/src/third-party/libpng/AUTHORS +45 -0
  480. package/mgba-bridge/vendor/mgba/src/third-party/libpng/CHANGES +6109 -0
  481. package/mgba-bridge/vendor/mgba/src/third-party/libpng/CMakeLists.txt +931 -0
  482. package/mgba-bridge/vendor/mgba/src/third-party/libpng/INSTALL +465 -0
  483. package/mgba-bridge/vendor/mgba/src/third-party/libpng/LICENSE +134 -0
  484. package/mgba-bridge/vendor/mgba/src/third-party/libpng/Makefile.am +393 -0
  485. package/mgba-bridge/vendor/mgba/src/third-party/libpng/Makefile.in +2428 -0
  486. package/mgba-bridge/vendor/mgba/src/third-party/libpng/README +183 -0
  487. package/mgba-bridge/vendor/mgba/src/third-party/libpng/TODO +23 -0
  488. package/mgba-bridge/vendor/mgba/src/third-party/libpng/TRADEMARK +8 -0
  489. package/mgba-bridge/vendor/mgba/src/third-party/libpng/aclocal.m4 +1196 -0
  490. package/mgba-bridge/vendor/mgba/src/third-party/libpng/arm/arm_init.c +136 -0
  491. package/mgba-bridge/vendor/mgba/src/third-party/libpng/arm/filter_neon.S +253 -0
  492. package/mgba-bridge/vendor/mgba/src/third-party/libpng/arm/filter_neon_intrinsics.c +402 -0
  493. package/mgba-bridge/vendor/mgba/src/third-party/libpng/arm/palette_neon_intrinsics.c +149 -0
  494. package/mgba-bridge/vendor/mgba/src/third-party/libpng/autogen.sh +225 -0
  495. package/mgba-bridge/vendor/mgba/src/third-party/libpng/compile +348 -0
  496. package/mgba-bridge/vendor/mgba/src/third-party/libpng/config.guess +1476 -0
  497. package/mgba-bridge/vendor/mgba/src/third-party/libpng/config.h.in +126 -0
  498. package/mgba-bridge/vendor/mgba/src/third-party/libpng/config.sub +1801 -0
  499. package/mgba-bridge/vendor/mgba/src/third-party/libpng/configure +16116 -0
  500. package/mgba-bridge/vendor/mgba/src/third-party/libpng/configure.ac +532 -0
  501. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/README.txt +5 -0
  502. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/arm-neon/README +83 -0
  503. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/arm-neon/android-ndk.c +39 -0
  504. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/arm-neon/linux-auxv.c +120 -0
  505. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/arm-neon/linux.c +161 -0
  506. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/conftest/README +49 -0
  507. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/conftest/pngcp.dfa +57 -0
  508. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/conftest/read.dfa +58 -0
  509. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/conftest/s_read.dfa +35 -0
  510. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/conftest/s_write.dfa +33 -0
  511. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/conftest/simple.dfa +36 -0
  512. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/conftest/write.dfa +45 -0
  513. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/examples/README.txt +24 -0
  514. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/examples/iccfrompng.c +185 -0
  515. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/examples/pngpixel.c +371 -0
  516. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/examples/pngtopng.c +98 -0
  517. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/examples/simpleover.c +648 -0
  518. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/COPYING +340 -0
  519. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/LICENSE +50 -0
  520. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/Makefile.mingw32 +131 -0
  521. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/Makefile.sgi +105 -0
  522. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/Makefile.unx +134 -0
  523. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/Makefile.w32 +114 -0
  524. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/README +186 -0
  525. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/makevms.com +132 -0
  526. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/readpng.c +323 -0
  527. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/readpng.h +88 -0
  528. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/readpng2.c +521 -0
  529. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/readpng2.h +116 -0
  530. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/readppm.c +188 -0
  531. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/rpng-win.c +735 -0
  532. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/rpng-x.c +911 -0
  533. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/rpng2-win.c +1261 -0
  534. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/rpng2-x.c +2143 -0
  535. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/toucan.png +0 -0
  536. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/wpng.c +865 -0
  537. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/writepng.c +401 -0
  538. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/gregbook/writepng.h +133 -0
  539. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/fakepng.c +65 -0
  540. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/gentests.sh +102 -0
  541. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/makepng.c +1941 -0
  542. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/pngimage.c +1712 -0
  543. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/pngstest-errors.h +165 -0
  544. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/pngstest.c +3828 -0
  545. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/pngunknown.c +1294 -0
  546. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/pngvalid.c +12230 -0
  547. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/readpng.c +115 -0
  548. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/tarith.c +999 -0
  549. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/libtests/timepng.c +608 -0
  550. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/mips-msa/README +83 -0
  551. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/mips-msa/linux.c +64 -0
  552. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/oss-fuzz/Dockerfile +25 -0
  553. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/oss-fuzz/README.txt +37 -0
  554. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/oss-fuzz/build.sh +51 -0
  555. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/oss-fuzz/libpng_read_fuzzer.cc +190 -0
  556. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/oss-fuzz/libpng_read_fuzzer.options +2 -0
  557. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/oss-fuzz/png.dict +39 -0
  558. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/README +5 -0
  559. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/decoder/README +10 -0
  560. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/decoder/makefile +151 -0
  561. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/decoder/pngusr.dfa +40 -0
  562. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/decoder/pngusr.h +23 -0
  563. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/encoder/README +10 -0
  564. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/encoder/makefile +150 -0
  565. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/encoder/pngusr.dfa +39 -0
  566. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/encoder/pngusr.h +23 -0
  567. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/preader/README +15 -0
  568. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/preader/makefile +166 -0
  569. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/preader/pngusr.dfa +40 -0
  570. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminim/preader/pngusr.h +23 -0
  571. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/CHANGES.txt +13 -0
  572. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/CMakeLists.txt +24 -0
  573. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/LICENSE.txt +22 -0
  574. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/Makefile +62 -0
  575. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/README.txt +120 -0
  576. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/makevms.com +92 -0
  577. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/png2pnm.bat +41 -0
  578. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/png2pnm.c +427 -0
  579. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/png2pnm.sh +42 -0
  580. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/pngminus.bat +4 -0
  581. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/pngminus.sh +5 -0
  582. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/pnm2png.bat +41 -0
  583. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/pnm2png.c +620 -0
  584. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngminus/pnm2png.sh +42 -0
  585. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/README +107 -0
  586. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/bad_interlace_conversions.txt +9 -0
  587. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn0g01.png +0 -0
  588. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn0g02.png +0 -0
  589. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn0g04.png +0 -0
  590. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn0g08.png +0 -0
  591. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn0g16.png +0 -0
  592. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn2c08.png +0 -0
  593. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn2c16.png +0 -0
  594. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn3p01.png +0 -0
  595. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn3p02.png +0 -0
  596. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn3p04.png +0 -0
  597. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn3p08.png +0 -0
  598. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn4a08.png +0 -0
  599. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn4a16.png +0 -0
  600. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn6a08.png +0 -0
  601. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/basn6a16.png +0 -0
  602. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbbn0g01.png +0 -0
  603. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbbn0g02.png +0 -0
  604. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbbn0g04.png +0 -0
  605. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbbn2c16.png +0 -0
  606. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbbn3p08.png +0 -0
  607. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbgn2c16.png +0 -0
  608. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbgn3p08.png +0 -0
  609. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbrn2c08.png +0 -0
  610. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbwn0g16.png +0 -0
  611. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbwn3p08.png +0 -0
  612. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftbyn3p08.png +0 -0
  613. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftp0n0g08.png +0 -0
  614. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftp0n2c08.png +0 -0
  615. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftp0n3p08.png +0 -0
  616. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ftp1n3p08.png +0 -0
  617. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ibasn0g08.png +0 -0
  618. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ibasn0g16.png +0 -0
  619. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ibasn2c08.png +0 -0
  620. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ibasn2c16.png +0 -0
  621. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ibasn3p08.png +0 -0
  622. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ibasn4a08.png +0 -0
  623. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ibasn4a16.png +0 -0
  624. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ibasn6a08.png +0 -0
  625. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/ibasn6a16.png +0 -0
  626. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftbbn2c16.png +0 -0
  627. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftbbn3p08.png +0 -0
  628. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftbgn2c16.png +0 -0
  629. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftbgn3p08.png +0 -0
  630. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftbrn2c08.png +0 -0
  631. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftbwn0g16.png +0 -0
  632. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftbwn3p08.png +0 -0
  633. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftbyn3p08.png +0 -0
  634. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftp0n0g08.png +0 -0
  635. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftp0n2c08.png +0 -0
  636. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftp0n3p08.png +0 -0
  637. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/iftp1n3p08.png +0 -0
  638. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/README +2 -0
  639. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/ibasn0g01.png +0 -0
  640. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/ibasn0g02.png +0 -0
  641. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/ibasn0g04.png +0 -0
  642. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/ibasn3p01.png +0 -0
  643. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/ibasn3p02.png +0 -0
  644. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/ibasn3p04.png +0 -0
  645. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/iftbbn0g01.png +0 -0
  646. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/iftbbn0g02.png +0 -0
  647. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/pngsuite/interlaced/iftbbn0g04.png +0 -0
  648. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/powerpc-vsx/README +81 -0
  649. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/powerpc-vsx/linux.c +57 -0
  650. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/powerpc-vsx/linux_aux.c +34 -0
  651. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/bad_iCCP.png +0 -0
  652. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/badadler.png +0 -0
  653. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/badcrc.png +0 -0
  654. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/empty_ancillary_chunks.png +0 -0
  655. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_IDAT.png +0 -0
  656. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_bKGD_chunk.png +0 -0
  657. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_cHRM_chunk.png +0 -0
  658. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_eXIf_chunk.png +0 -0
  659. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_gAMA_chunk.png +0 -0
  660. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_hIST_chunk.png +0 -0
  661. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_iCCP_chunk.png +0 -0
  662. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_iTXt_chunk.png +0 -0
  663. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_juNK_unsafe_to_copy.png +0 -0
  664. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_juNk_safe_to_copy.png +0 -0
  665. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_pCAL_chunk.png +0 -0
  666. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_pHYs_chunk.png +0 -0
  667. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_sCAL_chunk.png +0 -0
  668. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_sPLT_chunk.png +0 -0
  669. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_sRGB_chunk.png +0 -0
  670. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_sTER_chunk.png +0 -0
  671. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_tEXt_chunk.png +0 -0
  672. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_tIME_chunk.png +0 -0
  673. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/crashers/huge_zTXt_chunk.png +0 -0
  674. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-1-1.8-tRNS.png +0 -0
  675. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-1-1.8.png +0 -0
  676. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-1-linear-tRNS.png +0 -0
  677. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-1-linear.png +0 -0
  678. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-1-sRGB-tRNS.png +0 -0
  679. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-1-sRGB.png +0 -0
  680. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-1-tRNS.png +0 -0
  681. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-1.png +0 -0
  682. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-16-1.8-tRNS.png +0 -0
  683. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-16-1.8.png +0 -0
  684. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-16-linear-tRNS.png +0 -0
  685. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-16-linear.png +0 -0
  686. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-16-sRGB-tRNS.png +0 -0
  687. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-16-sRGB.png +0 -0
  688. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-16-tRNS.png +0 -0
  689. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-16.png +0 -0
  690. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-2-1.8-tRNS.png +0 -0
  691. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-2-1.8.png +0 -0
  692. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-2-linear-tRNS.png +0 -0
  693. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-2-linear.png +0 -0
  694. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-2-sRGB-tRNS.png +0 -0
  695. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-2-sRGB.png +0 -0
  696. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-2-tRNS.png +0 -0
  697. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-2.png +0 -0
  698. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-4-1.8-tRNS.png +0 -0
  699. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-4-1.8.png +0 -0
  700. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-4-linear-tRNS.png +0 -0
  701. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-4-linear.png +0 -0
  702. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-4-sRGB-tRNS.png +0 -0
  703. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-4-sRGB.png +0 -0
  704. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-4-tRNS.png +0 -0
  705. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-4.png +0 -0
  706. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-8-1.8-tRNS.png +0 -0
  707. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-8-1.8.png +0 -0
  708. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-8-linear-tRNS.png +0 -0
  709. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-8-linear.png +0 -0
  710. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-8-sRGB-tRNS.png +0 -0
  711. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-8-sRGB.png +0 -0
  712. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-8-tRNS.png +0 -0
  713. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-8.png +0 -0
  714. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-alpha-16-1.8.png +0 -0
  715. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-alpha-16-linear.png +0 -0
  716. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-alpha-16-sRGB.png +0 -0
  717. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-alpha-16.png +0 -0
  718. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-alpha-8-1.8.png +0 -0
  719. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-alpha-8-linear.png +0 -0
  720. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-alpha-8-sRGB.png +0 -0
  721. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/gray-alpha-8.png +0 -0
  722. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/makepngs.sh +94 -0
  723. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-1-1.8-tRNS.png +0 -0
  724. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-1-1.8.png +0 -0
  725. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-1-linear-tRNS.png +0 -0
  726. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-1-linear.png +0 -0
  727. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-1-sRGB-tRNS.png +0 -0
  728. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-1-sRGB.png +0 -0
  729. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-1-tRNS.png +0 -0
  730. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-1.png +0 -0
  731. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-2-1.8-tRNS.png +0 -0
  732. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-2-1.8.png +0 -0
  733. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-2-linear-tRNS.png +0 -0
  734. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-2-linear.png +0 -0
  735. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-2-sRGB-tRNS.png +0 -0
  736. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-2-sRGB.png +0 -0
  737. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-2-tRNS.png +0 -0
  738. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-2.png +0 -0
  739. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-4-1.8-tRNS.png +0 -0
  740. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-4-1.8.png +0 -0
  741. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-4-linear-tRNS.png +0 -0
  742. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-4-linear.png +0 -0
  743. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-4-sRGB-tRNS.png +0 -0
  744. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-4-sRGB.png +0 -0
  745. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-4-tRNS.png +0 -0
  746. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-4.png +0 -0
  747. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-8-1.8-tRNS.png +0 -0
  748. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-8-1.8.png +0 -0
  749. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-8-linear-tRNS.png +0 -0
  750. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-8-linear.png +0 -0
  751. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-8-sRGB-tRNS.png +0 -0
  752. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-8-sRGB.png +0 -0
  753. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-8-tRNS.png +0 -0
  754. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/palette-8.png +0 -0
  755. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-16-1.8-tRNS.png +0 -0
  756. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-16-1.8.png +0 -0
  757. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-16-linear-tRNS.png +0 -0
  758. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-16-linear.png +0 -0
  759. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-16-sRGB-tRNS.png +0 -0
  760. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-16-sRGB.png +0 -0
  761. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-16-tRNS.png +0 -0
  762. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-16.png +0 -0
  763. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-8-1.8-tRNS.png +0 -0
  764. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-8-1.8.png +0 -0
  765. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-8-linear-tRNS.png +0 -0
  766. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-8-linear.png +0 -0
  767. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-8-sRGB-tRNS.png +0 -0
  768. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-8-sRGB.png +0 -0
  769. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-8-tRNS.png +0 -0
  770. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-8.png +0 -0
  771. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-alpha-16-1.8.png +0 -0
  772. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-alpha-16-linear.png +0 -0
  773. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-alpha-16-sRGB.png +0 -0
  774. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-alpha-16.png +0 -0
  775. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-alpha-8-1.8.png +0 -0
  776. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-alpha-8-linear.png +0 -0
  777. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-alpha-8-sRGB.png +0 -0
  778. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/testpngs/rgb-alpha-8.png +0 -0
  779. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/README.txt +27 -0
  780. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/checksum-icc.c +102 -0
  781. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/chkfmt +144 -0
  782. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/cvtcolor.c +188 -0
  783. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/genpng.c +881 -0
  784. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/intgamma.sh +110 -0
  785. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/makesRGB.c +430 -0
  786. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/png-fix-itxt.c +164 -0
  787. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/pngcp.c +2453 -0
  788. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/pngfix.c +4049 -0
  789. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/reindent +25 -0
  790. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/tools/sRGB.h +48 -0
  791. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/PngFile.c +454 -0
  792. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/PngFile.h +30 -0
  793. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/README.txt +61 -0
  794. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/VisualPng.c +978 -0
  795. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/VisualPng.dsp +147 -0
  796. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/VisualPng.dsw +29 -0
  797. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/VisualPng.ico +0 -0
  798. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/VisualPng.png +0 -0
  799. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/VisualPng.rc +152 -0
  800. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/cexcept.h +248 -0
  801. package/mgba-bridge/vendor/mgba/src/third-party/libpng/contrib/visupng/resource.h +23 -0
  802. package/mgba-bridge/vendor/mgba/src/third-party/libpng/depcomp +791 -0
  803. package/mgba-bridge/vendor/mgba/src/third-party/libpng/example.c +1040 -0
  804. package/mgba-bridge/vendor/mgba/src/third-party/libpng/install-sh +518 -0
  805. package/mgba-bridge/vendor/mgba/src/third-party/libpng/intel/filter_sse2_intrinsics.c +391 -0
  806. package/mgba-bridge/vendor/mgba/src/third-party/libpng/intel/intel_init.c +52 -0
  807. package/mgba-bridge/vendor/mgba/src/third-party/libpng/libpng-config.in +127 -0
  808. package/mgba-bridge/vendor/mgba/src/third-party/libpng/libpng-manual.txt +5409 -0
  809. package/mgba-bridge/vendor/mgba/src/third-party/libpng/libpng.3 +6052 -0
  810. package/mgba-bridge/vendor/mgba/src/third-party/libpng/libpng.pc.in +12 -0
  811. package/mgba-bridge/vendor/mgba/src/third-party/libpng/libpngpf.3 +24 -0
  812. package/mgba-bridge/vendor/mgba/src/third-party/libpng/ltmain.sh +11147 -0
  813. package/mgba-bridge/vendor/mgba/src/third-party/libpng/mips/filter_msa_intrinsics.c +808 -0
  814. package/mgba-bridge/vendor/mgba/src/third-party/libpng/mips/mips_init.c +130 -0
  815. package/mgba-bridge/vendor/mgba/src/third-party/libpng/missing +215 -0
  816. package/mgba-bridge/vendor/mgba/src/third-party/libpng/png.5 +84 -0
  817. package/mgba-bridge/vendor/mgba/src/third-party/libpng/png.c +4607 -0
  818. package/mgba-bridge/vendor/mgba/src/third-party/libpng/png.h +3247 -0
  819. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngbar.jpg +0 -0
  820. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngbar.png +0 -0
  821. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngconf.h +623 -0
  822. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngdebug.h +153 -0
  823. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngerror.c +963 -0
  824. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngget.c +1249 -0
  825. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pnginfo.h +267 -0
  826. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngmem.c +284 -0
  827. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngnow.png +0 -0
  828. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngpread.c +1096 -0
  829. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngpriv.h +2152 -0
  830. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngread.c +4225 -0
  831. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngrio.c +120 -0
  832. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngrtran.c +5044 -0
  833. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngrutil.c +4681 -0
  834. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngset.c +1802 -0
  835. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngstruct.h +489 -0
  836. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngtest.c +2158 -0
  837. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngtest.png +0 -0
  838. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngtrans.c +864 -0
  839. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngusr.dfa +14 -0
  840. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngwio.c +168 -0
  841. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngwrite.c +2395 -0
  842. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngwtran.c +575 -0
  843. package/mgba-bridge/vendor/mgba/src/third-party/libpng/pngwutil.c +2781 -0
  844. package/mgba-bridge/vendor/mgba/src/third-party/libpng/powerpc/filter_vsx_intrinsics.c +768 -0
  845. package/mgba-bridge/vendor/mgba/src/third-party/libpng/powerpc/powerpc_init.c +126 -0
  846. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/owatcom/libpng.tgt +383 -0
  847. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/owatcom/libpng.wpj +112 -0
  848. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/owatcom/pngconfig.mak +160 -0
  849. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/owatcom/pngstest.tgt +219 -0
  850. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/owatcom/pngtest.tgt +179 -0
  851. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/owatcom/pngvalid.tgt +210 -0
  852. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/visualc71/PRJ0041.mak +21 -0
  853. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/visualc71/README.txt +58 -0
  854. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/visualc71/README_zlib.txt +44 -0
  855. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/visualc71/libpng.sln +60 -0
  856. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/visualc71/libpng.vcproj +419 -0
  857. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/visualc71/pngtest.vcproj +267 -0
  858. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/visualc71/zlib.vcproj +391 -0
  859. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/vstudio/libpng/libpng.vcxproj +234 -0
  860. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/vstudio/pnglibconf/pnglibconf.vcxproj +61 -0
  861. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/vstudio/pngstest/pngstest.vcxproj +219 -0
  862. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/vstudio/pngtest/pngtest.vcxproj +220 -0
  863. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/vstudio/pngunknown/pngunknown.vcxproj +219 -0
  864. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/vstudio/pngvalid/pngvalid.vcxproj +219 -0
  865. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/vstudio/vstudio.sln +109 -0
  866. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/vstudio/zlib/zlib.vcxproj +175 -0
  867. package/mgba-bridge/vendor/mgba/src/third-party/libpng/projects/vstudio/zlib.props +57 -0
  868. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/README.txt +79 -0
  869. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/SCOPTIONS.ppc +7 -0
  870. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/checksym.awk +173 -0
  871. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/descrip.mms +52 -0
  872. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/dfn.awk +203 -0
  873. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/genchk.cmake.in +37 -0
  874. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/genout.cmake.in +93 -0
  875. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/gensrc.cmake.in +138 -0
  876. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/intprefix.c +22 -0
  877. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/libpng-config-body.in +96 -0
  878. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/libpng-config-head.in +24 -0
  879. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/libpng.pc.in +10 -0
  880. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/libtool.m4 +8369 -0
  881. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/ltoptions.m4 +437 -0
  882. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/ltsugar.m4 +124 -0
  883. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/ltversion.m4 +23 -0
  884. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/lt~obsolete.m4 +99 -0
  885. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/macro.lst +3 -0
  886. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.32sunu +244 -0
  887. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.64sunu +244 -0
  888. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.acorn +57 -0
  889. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.aix +116 -0
  890. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.amiga +58 -0
  891. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.atari +71 -0
  892. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.bc32 +158 -0
  893. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.beos +222 -0
  894. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.cegcc +116 -0
  895. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.clang +87 -0
  896. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.clang-asan +87 -0
  897. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.darwin +225 -0
  898. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.dec +210 -0
  899. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.dj2 +72 -0
  900. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.freebsd +69 -0
  901. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.gcc +87 -0
  902. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.gcc-asan +87 -0
  903. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.hp64 +231 -0
  904. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.hpgcc +234 -0
  905. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.hpux +229 -0
  906. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.ibmc +90 -0
  907. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.intel +115 -0
  908. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.linux +246 -0
  909. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.linux-opt +265 -0
  910. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.mips +103 -0
  911. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.msys +202 -0
  912. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.netbsd +55 -0
  913. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.openbsd +86 -0
  914. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.sco +226 -0
  915. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.sggcc +236 -0
  916. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.sgi +237 -0
  917. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.so9 +247 -0
  918. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.solaris +243 -0
  919. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.std +134 -0
  920. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.sunos +115 -0
  921. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makefile.vcwin32 +113 -0
  922. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/makevms.com +142 -0
  923. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/options.awk +898 -0
  924. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/pnglibconf.dfa +920 -0
  925. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/pnglibconf.h.prebuilt +219 -0
  926. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/pnglibconf.mak +55 -0
  927. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/pngwin.rc +112 -0
  928. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/prefix.c +24 -0
  929. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/smakefile.ppc +34 -0
  930. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/sym.c +15 -0
  931. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/symbols.c +58 -0
  932. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/symbols.def +255 -0
  933. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/test.cmake.in +31 -0
  934. package/mgba-bridge/vendor/mgba/src/third-party/libpng/scripts/vers.c +19 -0
  935. package/mgba-bridge/vendor/mgba/src/third-party/libpng/test-driver +148 -0
  936. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7z.h +202 -0
  937. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zAlloc.c +80 -0
  938. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zAlloc.h +19 -0
  939. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zArcIn.c +1771 -0
  940. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zBuf.c +36 -0
  941. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zBuf.h +35 -0
  942. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zBuf2.c +52 -0
  943. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zCrc.c +128 -0
  944. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zCrc.h +25 -0
  945. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zCrcOpt.c +115 -0
  946. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zDec.c +591 -0
  947. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zFile.c +286 -0
  948. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zFile.h +83 -0
  949. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zStream.c +176 -0
  950. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zTypes.h +375 -0
  951. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zVersion.h +27 -0
  952. package/mgba-bridge/vendor/mgba/src/third-party/lzma/7zVersion.rc +55 -0
  953. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Aes.c +306 -0
  954. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Aes.h +38 -0
  955. package/mgba-bridge/vendor/mgba/src/third-party/lzma/AesOpt.c +184 -0
  956. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Alloc.c +455 -0
  957. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Alloc.h +51 -0
  958. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Bcj2.c +257 -0
  959. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Bcj2.h +146 -0
  960. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Bcj2Enc.c +311 -0
  961. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Bra.c +230 -0
  962. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Bra.h +64 -0
  963. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Bra86.c +82 -0
  964. package/mgba-bridge/vendor/mgba/src/third-party/lzma/BraIA64.c +53 -0
  965. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Compiler.h +33 -0
  966. package/mgba-bridge/vendor/mgba/src/third-party/lzma/CpuArch.c +218 -0
  967. package/mgba-bridge/vendor/mgba/src/third-party/lzma/CpuArch.h +336 -0
  968. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Delta.c +64 -0
  969. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Delta.h +19 -0
  970. package/mgba-bridge/vendor/mgba/src/third-party/lzma/DllSecur.c +108 -0
  971. package/mgba-bridge/vendor/mgba/src/third-party/lzma/DllSecur.h +20 -0
  972. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzFind.c +1127 -0
  973. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzFind.h +121 -0
  974. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzFindMt.c +853 -0
  975. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzFindMt.h +101 -0
  976. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzHash.h +57 -0
  977. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Lzma2Dec.c +488 -0
  978. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Lzma2Dec.h +120 -0
  979. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Lzma2DecMt.c +1082 -0
  980. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Lzma2DecMt.h +79 -0
  981. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Lzma2Enc.c +803 -0
  982. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Lzma2Enc.h +55 -0
  983. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Lzma86.h +111 -0
  984. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Lzma86Dec.c +54 -0
  985. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Lzma86Enc.c +106 -0
  986. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzmaDec.c +1185 -0
  987. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzmaDec.h +234 -0
  988. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzmaEnc.c +2976 -0
  989. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzmaEnc.h +76 -0
  990. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzmaLib.c +40 -0
  991. package/mgba-bridge/vendor/mgba/src/third-party/lzma/LzmaLib.h +131 -0
  992. package/mgba-bridge/vendor/mgba/src/third-party/lzma/MtCoder.c +601 -0
  993. package/mgba-bridge/vendor/mgba/src/third-party/lzma/MtCoder.h +141 -0
  994. package/mgba-bridge/vendor/mgba/src/third-party/lzma/MtDec.c +1138 -0
  995. package/mgba-bridge/vendor/mgba/src/third-party/lzma/MtDec.h +201 -0
  996. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Ppmd.h +85 -0
  997. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Ppmd7.c +712 -0
  998. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Ppmd7.h +142 -0
  999. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Ppmd7Dec.c +191 -0
  1000. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Ppmd7Enc.c +187 -0
  1001. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Precomp.h +10 -0
  1002. package/mgba-bridge/vendor/mgba/src/third-party/lzma/RotateDefs.h +30 -0
  1003. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Sha256.c +248 -0
  1004. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Sha256.h +26 -0
  1005. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Sort.c +141 -0
  1006. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Sort.h +18 -0
  1007. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Threads.c +95 -0
  1008. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Threads.h +68 -0
  1009. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/7z/7z.dsp +241 -0
  1010. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/7z/7z.dsw +29 -0
  1011. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/7z/7zMain.c +686 -0
  1012. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/7z/Precomp.c +4 -0
  1013. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/7z/Precomp.h +10 -0
  1014. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/7z/makefile +40 -0
  1015. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/7z/makefile.gcc +75 -0
  1016. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/Lzma/LzmaUtil.c +258 -0
  1017. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/Lzma/LzmaUtil.dsp +168 -0
  1018. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/Lzma/LzmaUtil.dsw +29 -0
  1019. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/Lzma/makefile +28 -0
  1020. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/Lzma/makefile.gcc +44 -0
  1021. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/LzmaLib/LzmaLib.def +4 -0
  1022. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/LzmaLib/LzmaLib.dsp +178 -0
  1023. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/LzmaLib/LzmaLib.dsw +29 -0
  1024. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/LzmaLib/LzmaLibExports.c +14 -0
  1025. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/LzmaLib/makefile +34 -0
  1026. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/LzmaLib/resource.rc +3 -0
  1027. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/SfxSetup/Precomp.c +4 -0
  1028. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/SfxSetup/Precomp.h +10 -0
  1029. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/SfxSetup/SfxSetup.c +640 -0
  1030. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/SfxSetup/SfxSetup.dsp +231 -0
  1031. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/SfxSetup/SfxSetup.dsw +29 -0
  1032. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/SfxSetup/makefile +37 -0
  1033. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/SfxSetup/makefile_con +38 -0
  1034. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/SfxSetup/resource.rc +5 -0
  1035. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Util/SfxSetup/setup.ico +0 -0
  1036. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Xz.c +90 -0
  1037. package/mgba-bridge/vendor/mgba/src/third-party/lzma/Xz.h +460 -0
  1038. package/mgba-bridge/vendor/mgba/src/third-party/lzma/XzCrc64.c +86 -0
  1039. package/mgba-bridge/vendor/mgba/src/third-party/lzma/XzCrc64.h +26 -0
  1040. package/mgba-bridge/vendor/mgba/src/third-party/lzma/XzCrc64Opt.c +69 -0
  1041. package/mgba-bridge/vendor/mgba/src/third-party/lzma/XzDec.c +2766 -0
  1042. package/mgba-bridge/vendor/mgba/src/third-party/lzma/XzEnc.c +1329 -0
  1043. package/mgba-bridge/vendor/mgba/src/third-party/lzma/XzEnc.h +60 -0
  1044. package/mgba-bridge/vendor/mgba/src/third-party/lzma/XzIn.c +319 -0
  1045. package/mgba-bridge/vendor/mgba/src/third-party/zlib/CMakeLists.txt +249 -0
  1046. package/mgba-bridge/vendor/mgba/src/third-party/zlib/ChangeLog +1578 -0
  1047. package/mgba-bridge/vendor/mgba/src/third-party/zlib/FAQ +368 -0
  1048. package/mgba-bridge/vendor/mgba/src/third-party/zlib/INDEX +68 -0
  1049. package/mgba-bridge/vendor/mgba/src/third-party/zlib/Makefile +5 -0
  1050. package/mgba-bridge/vendor/mgba/src/third-party/zlib/Makefile.in +408 -0
  1051. package/mgba-bridge/vendor/mgba/src/third-party/zlib/README +118 -0
  1052. package/mgba-bridge/vendor/mgba/src/third-party/zlib/adler32.c +186 -0
  1053. package/mgba-bridge/vendor/mgba/src/third-party/zlib/amiga/Makefile.pup +69 -0
  1054. package/mgba-bridge/vendor/mgba/src/third-party/zlib/amiga/Makefile.sas +68 -0
  1055. package/mgba-bridge/vendor/mgba/src/third-party/zlib/compress.c +86 -0
  1056. package/mgba-bridge/vendor/mgba/src/third-party/zlib/configure +927 -0
  1057. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/README.contrib +57 -0
  1058. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/buffer_demo.adb +106 -0
  1059. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/mtest.adb +156 -0
  1060. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/read.adb +156 -0
  1061. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/readme.txt +65 -0
  1062. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/test.adb +463 -0
  1063. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/zlib-streams.adb +225 -0
  1064. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/zlib-streams.ads +114 -0
  1065. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/zlib-thin.adb +141 -0
  1066. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/zlib-thin.ads +450 -0
  1067. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/zlib.adb +701 -0
  1068. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/zlib.ads +328 -0
  1069. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/ada/zlib.gpr +20 -0
  1070. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/blast/Makefile +8 -0
  1071. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/blast/README +4 -0
  1072. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/blast/blast.c +466 -0
  1073. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/blast/blast.h +83 -0
  1074. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/blast/test.pk +0 -0
  1075. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/blast/test.txt +1 -0
  1076. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/delphi/ZLib.pas +557 -0
  1077. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/delphi/ZLibConst.pas +11 -0
  1078. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/delphi/readme.txt +76 -0
  1079. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/delphi/zlibd32.mak +99 -0
  1080. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +58 -0
  1081. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +202 -0
  1082. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +83 -0
  1083. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +198 -0
  1084. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/Deflater.cs +106 -0
  1085. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +288 -0
  1086. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +141 -0
  1087. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +301 -0
  1088. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/Inflater.cs +105 -0
  1089. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +274 -0
  1090. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib.build +33 -0
  1091. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib.chm +0 -0
  1092. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/DotZLib.sln +21 -0
  1093. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/LICENSE_1_0.txt +23 -0
  1094. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/dotzlib/readme.txt +58 -0
  1095. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/gcc_gvmat64/gvmat64.S +574 -0
  1096. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/infback9/README +1 -0
  1097. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/infback9/infback9.c +615 -0
  1098. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/infback9/infback9.h +37 -0
  1099. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/infback9/inffix9.h +107 -0
  1100. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/infback9/inflate9.h +47 -0
  1101. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/infback9/inftree9.c +324 -0
  1102. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/infback9/inftree9.h +61 -0
  1103. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream/test.cpp +24 -0
  1104. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream/zfstream.cpp +329 -0
  1105. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream/zfstream.h +128 -0
  1106. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream2/zstream.h +307 -0
  1107. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream2/zstream_test.cpp +25 -0
  1108. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream3/README +35 -0
  1109. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream3/TODO +17 -0
  1110. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream3/test.cc +50 -0
  1111. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream3/zfstream.cc +479 -0
  1112. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/iostream3/zfstream.h +466 -0
  1113. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/Makefile +29 -0
  1114. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/Makefile.am +45 -0
  1115. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/MiniZip64_Changes.txt +6 -0
  1116. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/MiniZip64_info.txt +74 -0
  1117. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/configure.ac +32 -0
  1118. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/crypt.h +132 -0
  1119. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/ioapi.c +257 -0
  1120. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/ioapi.h +210 -0
  1121. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/iowin32.c +462 -0
  1122. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/iowin32.h +28 -0
  1123. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/make_vms.com +25 -0
  1124. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/miniunz.c +659 -0
  1125. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/miniunzip.1 +63 -0
  1126. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/minizip.1 +46 -0
  1127. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/minizip.c +521 -0
  1128. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/minizip.pc.in +12 -0
  1129. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/mztools.c +291 -0
  1130. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/mztools.h +37 -0
  1131. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/unzip.c +2128 -0
  1132. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/unzip.h +437 -0
  1133. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/zip.c +2007 -0
  1134. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/minizip/zip.h +367 -0
  1135. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/pascal/example.pas +599 -0
  1136. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/pascal/readme.txt +76 -0
  1137. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/pascal/zlibd32.mak +99 -0
  1138. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/pascal/zlibpas.pas +276 -0
  1139. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/puff/Makefile +42 -0
  1140. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/puff/README +63 -0
  1141. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/puff/puff.c +840 -0
  1142. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/puff/puff.h +35 -0
  1143. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/puff/pufftest.c +165 -0
  1144. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/puff/zeros.raw +0 -0
  1145. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/testzlib/testzlib.c +275 -0
  1146. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/testzlib/testzlib.txt +10 -0
  1147. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/untgz/Makefile +14 -0
  1148. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/untgz/Makefile.msc +17 -0
  1149. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/untgz/untgz.c +674 -0
  1150. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/readme.txt +78 -0
  1151. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj +310 -0
  1152. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters +22 -0
  1153. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/minizip.vcxproj +307 -0
  1154. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters +22 -0
  1155. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj +420 -0
  1156. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters +58 -0
  1157. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj +310 -0
  1158. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters +22 -0
  1159. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/zlib.rc +32 -0
  1160. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj +473 -0
  1161. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters +77 -0
  1162. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/zlibvc.def +158 -0
  1163. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/zlibvc.sln +135 -0
  1164. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj +657 -0
  1165. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters +118 -0
  1166. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc11/miniunz.vcxproj +314 -0
  1167. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc11/minizip.vcxproj +311 -0
  1168. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc11/testzlib.vcxproj +426 -0
  1169. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc11/testzlibdll.vcxproj +314 -0
  1170. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc11/zlib.rc +32 -0
  1171. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc11/zlibstat.vcxproj +464 -0
  1172. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc11/zlibvc.def +158 -0
  1173. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc11/zlibvc.sln +117 -0
  1174. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc11/zlibvc.vcxproj +688 -0
  1175. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc12/miniunz.vcxproj +316 -0
  1176. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc12/minizip.vcxproj +313 -0
  1177. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc12/testzlib.vcxproj +430 -0
  1178. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc12/testzlibdll.vcxproj +316 -0
  1179. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc12/zlib.rc +32 -0
  1180. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc12/zlibstat.vcxproj +467 -0
  1181. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc12/zlibvc.def +158 -0
  1182. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc12/zlibvc.sln +119 -0
  1183. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc12/zlibvc.vcxproj +692 -0
  1184. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc14/miniunz.vcxproj +316 -0
  1185. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc14/minizip.vcxproj +313 -0
  1186. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc14/testzlib.vcxproj +430 -0
  1187. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc14/testzlibdll.vcxproj +316 -0
  1188. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc14/zlib.rc +32 -0
  1189. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc14/zlibstat.vcxproj +467 -0
  1190. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc14/zlibvc.def +158 -0
  1191. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc14/zlibvc.sln +119 -0
  1192. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc14/zlibvc.vcxproj +692 -0
  1193. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc9/miniunz.vcproj +565 -0
  1194. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc9/minizip.vcproj +562 -0
  1195. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc9/testzlib.vcproj +852 -0
  1196. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc9/testzlibdll.vcproj +565 -0
  1197. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc9/zlib.rc +32 -0
  1198. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc9/zlibstat.vcproj +835 -0
  1199. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc9/zlibvc.def +158 -0
  1200. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc9/zlibvc.sln +144 -0
  1201. package/mgba-bridge/vendor/mgba/src/third-party/zlib/contrib/vstudio/vc9/zlibvc.vcproj +1156 -0
  1202. package/mgba-bridge/vendor/mgba/src/third-party/zlib/crc32.c +1116 -0
  1203. package/mgba-bridge/vendor/mgba/src/third-party/zlib/crc32.h +9446 -0
  1204. package/mgba-bridge/vendor/mgba/src/third-party/zlib/deflate.c +2211 -0
  1205. package/mgba-bridge/vendor/mgba/src/third-party/zlib/deflate.h +346 -0
  1206. package/mgba-bridge/vendor/mgba/src/third-party/zlib/doc/algorithm.txt +209 -0
  1207. package/mgba-bridge/vendor/mgba/src/third-party/zlib/doc/crc-doc.1.0.pdf +0 -0
  1208. package/mgba-bridge/vendor/mgba/src/third-party/zlib/doc/rfc1950.txt +619 -0
  1209. package/mgba-bridge/vendor/mgba/src/third-party/zlib/doc/rfc1951.txt +955 -0
  1210. package/mgba-bridge/vendor/mgba/src/third-party/zlib/doc/rfc1952.txt +675 -0
  1211. package/mgba-bridge/vendor/mgba/src/third-party/zlib/doc/txtvsbin.txt +107 -0
  1212. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/README.examples +54 -0
  1213. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/enough.c +597 -0
  1214. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/fitblk.c +233 -0
  1215. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/gun.c +702 -0
  1216. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/gzappend.c +504 -0
  1217. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/gzjoin.c +449 -0
  1218. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/gzlog.c +1061 -0
  1219. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/gzlog.h +91 -0
  1220. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/gznorm.c +470 -0
  1221. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/zlib_how.html +545 -0
  1222. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/zpipe.c +205 -0
  1223. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/zran.c +479 -0
  1224. package/mgba-bridge/vendor/mgba/src/third-party/zlib/examples/zran.h +40 -0
  1225. package/mgba-bridge/vendor/mgba/src/third-party/zlib/gzclose.c +25 -0
  1226. package/mgba-bridge/vendor/mgba/src/third-party/zlib/gzguts.h +219 -0
  1227. package/mgba-bridge/vendor/mgba/src/third-party/zlib/gzlib.c +639 -0
  1228. package/mgba-bridge/vendor/mgba/src/third-party/zlib/gzread.c +652 -0
  1229. package/mgba-bridge/vendor/mgba/src/third-party/zlib/gzwrite.c +677 -0
  1230. package/mgba-bridge/vendor/mgba/src/third-party/zlib/infback.c +641 -0
  1231. package/mgba-bridge/vendor/mgba/src/third-party/zlib/inffast.c +323 -0
  1232. package/mgba-bridge/vendor/mgba/src/third-party/zlib/inffast.h +11 -0
  1233. package/mgba-bridge/vendor/mgba/src/third-party/zlib/inffixed.h +94 -0
  1234. package/mgba-bridge/vendor/mgba/src/third-party/zlib/inflate.c +1592 -0
  1235. package/mgba-bridge/vendor/mgba/src/third-party/zlib/inflate.h +126 -0
  1236. package/mgba-bridge/vendor/mgba/src/third-party/zlib/inftrees.c +304 -0
  1237. package/mgba-bridge/vendor/mgba/src/third-party/zlib/inftrees.h +62 -0
  1238. package/mgba-bridge/vendor/mgba/src/third-party/zlib/make_vms.com +867 -0
  1239. package/mgba-bridge/vendor/mgba/src/third-party/zlib/msdos/Makefile.bor +115 -0
  1240. package/mgba-bridge/vendor/mgba/src/third-party/zlib/msdos/Makefile.dj2 +104 -0
  1241. package/mgba-bridge/vendor/mgba/src/third-party/zlib/msdos/Makefile.emx +69 -0
  1242. package/mgba-bridge/vendor/mgba/src/third-party/zlib/msdos/Makefile.msc +112 -0
  1243. package/mgba-bridge/vendor/mgba/src/third-party/zlib/msdos/Makefile.tc +100 -0
  1244. package/mgba-bridge/vendor/mgba/src/third-party/zlib/nintendods/Makefile +126 -0
  1245. package/mgba-bridge/vendor/mgba/src/third-party/zlib/nintendods/README +5 -0
  1246. package/mgba-bridge/vendor/mgba/src/third-party/zlib/old/Makefile.emx +69 -0
  1247. package/mgba-bridge/vendor/mgba/src/third-party/zlib/old/Makefile.riscos +151 -0
  1248. package/mgba-bridge/vendor/mgba/src/third-party/zlib/old/README +3 -0
  1249. package/mgba-bridge/vendor/mgba/src/third-party/zlib/old/descrip.mms +48 -0
  1250. package/mgba-bridge/vendor/mgba/src/third-party/zlib/old/os2/Makefile.os2 +136 -0
  1251. package/mgba-bridge/vendor/mgba/src/third-party/zlib/old/os2/zlib.def +51 -0
  1252. package/mgba-bridge/vendor/mgba/src/third-party/zlib/old/visual-basic.txt +160 -0
  1253. package/mgba-bridge/vendor/mgba/src/third-party/zlib/os400/README400 +48 -0
  1254. package/mgba-bridge/vendor/mgba/src/third-party/zlib/os400/bndsrc +119 -0
  1255. package/mgba-bridge/vendor/mgba/src/third-party/zlib/os400/make.sh +366 -0
  1256. package/mgba-bridge/vendor/mgba/src/third-party/zlib/os400/zlib.inc +527 -0
  1257. package/mgba-bridge/vendor/mgba/src/third-party/zlib/qnx/package.qpg +141 -0
  1258. package/mgba-bridge/vendor/mgba/src/third-party/zlib/treebuild.xml +116 -0
  1259. package/mgba-bridge/vendor/mgba/src/third-party/zlib/trees.c +1182 -0
  1260. package/mgba-bridge/vendor/mgba/src/third-party/zlib/trees.h +128 -0
  1261. package/mgba-bridge/vendor/mgba/src/third-party/zlib/uncompr.c +93 -0
  1262. package/mgba-bridge/vendor/mgba/src/third-party/zlib/watcom/watcom_f.mak +43 -0
  1263. package/mgba-bridge/vendor/mgba/src/third-party/zlib/watcom/watcom_l.mak +43 -0
  1264. package/mgba-bridge/vendor/mgba/src/third-party/zlib/win32/DLL_FAQ.txt +397 -0
  1265. package/mgba-bridge/vendor/mgba/src/third-party/zlib/win32/Makefile.bor +109 -0
  1266. package/mgba-bridge/vendor/mgba/src/third-party/zlib/win32/Makefile.gcc +177 -0
  1267. package/mgba-bridge/vendor/mgba/src/third-party/zlib/win32/Makefile.msc +159 -0
  1268. package/mgba-bridge/vendor/mgba/src/third-party/zlib/win32/README-WIN32.txt +103 -0
  1269. package/mgba-bridge/vendor/mgba/src/third-party/zlib/win32/VisualC.txt +3 -0
  1270. package/mgba-bridge/vendor/mgba/src/third-party/zlib/win32/zlib.def +97 -0
  1271. package/mgba-bridge/vendor/mgba/src/third-party/zlib/win32/zlib1.rc +40 -0
  1272. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zconf.h +534 -0
  1273. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zconf.h.cmakein +536 -0
  1274. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zconf.h.in +534 -0
  1275. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zlib.3 +149 -0
  1276. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zlib.3.pdf +0 -0
  1277. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zlib.h +1935 -0
  1278. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zlib.map +100 -0
  1279. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zlib.pc.cmakein +13 -0
  1280. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zlib.pc.in +13 -0
  1281. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zlib2ansi +152 -0
  1282. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zutil.c +325 -0
  1283. package/mgba-bridge/vendor/mgba/src/third-party/zlib/zutil.h +274 -0
  1284. package/mgba-bridge/vendor/mgba/src/tools/docgen.c +541 -0
  1285. package/mgba-bridge/vendor/mgba/src/tools/font-sdf.c +136 -0
  1286. package/mgba-bridge/vendor/mgba/src/tools/updater-main.c +377 -0
  1287. package/mgba-bridge/vendor/mgba/src/util/CMakeLists.txt +68 -0
  1288. package/mgba-bridge/vendor/mgba/src/util/audio-buffer.c +62 -0
  1289. package/mgba-bridge/vendor/mgba/src/util/audio-resampler.c +109 -0
  1290. package/mgba-bridge/vendor/mgba/src/util/circle-buffer.c +274 -0
  1291. package/mgba-bridge/vendor/mgba/src/util/configuration.c +233 -0
  1292. package/mgba-bridge/vendor/mgba/src/util/convolve.c +182 -0
  1293. package/mgba-bridge/vendor/mgba/src/util/crc32.c +138 -0
  1294. package/mgba-bridge/vendor/mgba/src/util/elf-read.c +128 -0
  1295. package/mgba-bridge/vendor/mgba/src/util/formatting.c +87 -0
  1296. package/mgba-bridge/vendor/mgba/src/util/gbk-table.c +129 -0
  1297. package/mgba-bridge/vendor/mgba/src/util/geometry.c +94 -0
  1298. package/mgba-bridge/vendor/mgba/src/util/gui/file-select.c +236 -0
  1299. package/mgba-bridge/vendor/mgba/src/util/gui/font-metrics.c +199 -0
  1300. package/mgba-bridge/vendor/mgba/src/util/gui/font.c +169 -0
  1301. package/mgba-bridge/vendor/mgba/src/util/gui/menu.c +412 -0
  1302. package/mgba-bridge/vendor/mgba/src/util/gui.c +81 -0
  1303. package/mgba-bridge/vendor/mgba/src/util/hash.c +108 -0
  1304. package/mgba-bridge/vendor/mgba/src/util/image/export.c +81 -0
  1305. package/mgba-bridge/vendor/mgba/src/util/image/font.c +274 -0
  1306. package/mgba-bridge/vendor/mgba/src/util/image/png-io.c +730 -0
  1307. package/mgba-bridge/vendor/mgba/src/util/image.c +1109 -0
  1308. package/mgba-bridge/vendor/mgba/src/util/interpolator.c +116 -0
  1309. package/mgba-bridge/vendor/mgba/src/util/md5.c +228 -0
  1310. package/mgba-bridge/vendor/mgba/src/util/memory.c +15 -0
  1311. package/mgba-bridge/vendor/mgba/src/util/patch-fast.c +130 -0
  1312. package/mgba-bridge/vendor/mgba/src/util/patch-ips.c +93 -0
  1313. package/mgba-bridge/vendor/mgba/src/util/patch-ups.c +254 -0
  1314. package/mgba-bridge/vendor/mgba/src/util/patch.c +25 -0
  1315. package/mgba-bridge/vendor/mgba/src/util/ring-fifo.c +104 -0
  1316. package/mgba-bridge/vendor/mgba/src/util/sfo.c +229 -0
  1317. package/mgba-bridge/vendor/mgba/src/util/sha1.c +258 -0
  1318. package/mgba-bridge/vendor/mgba/src/util/string.c +652 -0
  1319. package/mgba-bridge/vendor/mgba/src/util/table.c +682 -0
  1320. package/mgba-bridge/vendor/mgba/src/util/text-codec.c +197 -0
  1321. package/mgba-bridge/vendor/mgba/src/util/vector.c +18 -0
  1322. package/mgba-bridge/vendor/mgba/src/util/vfs/vfs-devlist.c +104 -0
  1323. package/mgba-bridge/vendor/mgba/src/util/vfs/vfs-dirent.c +173 -0
  1324. package/mgba-bridge/vendor/mgba/src/util/vfs/vfs-fd.c +282 -0
  1325. package/mgba-bridge/vendor/mgba/src/util/vfs/vfs-fifo.c +102 -0
  1326. package/mgba-bridge/vendor/mgba/src/util/vfs/vfs-file.c +159 -0
  1327. package/mgba-bridge/vendor/mgba/src/util/vfs/vfs-lzma.c +404 -0
  1328. package/mgba-bridge/vendor/mgba/src/util/vfs/vfs-mem.c +331 -0
  1329. package/mgba-bridge/vendor/mgba/src/util/vfs/vfs-zip.c +804 -0
  1330. package/mgba-bridge/vendor/mgba/src/util/vfs.c +320 -0
  1331. package/mgba-bridge/vendor/mgba/tools/deploy-mac.py +178 -0
  1332. package/mgba-bridge/vendor/mgba/tools/deploy-win.sh +27 -0
  1333. package/mgba-bridge/vendor/mgba/tools/dlls.gdb +3 -0
  1334. package/mgba-bridge/vendor/mgba/tools/make-dotcode.py +154 -0
  1335. package/mgba-bridge/vendor/mgba/tools/perf.py +230 -0
  1336. package/mgba-bridge/vendor/mgba/tools/sanitize-deb.sh +74 -0
  1337. package/mgba-bridge/vendor/mgba/tools/snes-tile.py +94 -0
  1338. package/mgba-bridge/vendor/mgba/version.cmake +62 -0
  1339. package/package.json +47 -0
  1340. package/src/audio-output.ts +387 -0
  1341. package/src/config.ts +114 -0
  1342. package/src/constants.ts +37 -0
  1343. package/src/extension.ts +570 -0
  1344. package/src/gameboy-mgba.ts +133 -0
  1345. package/src/gameboy-types.ts +24 -0
  1346. package/src/gameboy.ts +33 -0
  1347. package/src/index.ts +1 -0
  1348. package/src/mgba/bridge-bin.ts +66 -0
  1349. package/src/mgba/bridge.ts +145 -0
  1350. package/src/mgba/protocol.ts +30 -0
  1351. package/src/mgba/stdio.ts +74 -0
  1352. package/src/notify.ts +12 -0
  1353. package/src/pi-boy-component.ts +372 -0
  1354. package/src/render/ansi.ts +239 -0
  1355. package/src/render/kitty.ts +154 -0
  1356. package/src/roms.ts +163 -0
  1357. package/src/runtime.ts +36 -0
  1358. package/src/save-state.ts +94 -0
  1359. package/src/terminal.ts +18 -0
  1360. package/tsconfig.json +11 -0
  1361. package/types/shims.d.ts +121 -0
@@ -0,0 +1,2781 @@
1
+
2
+ /* pngwutil.c - utilities to write a PNG file
3
+ *
4
+ * Copyright (c) 2018 Cosmin Truta
5
+ * Copyright (c) 1998-2002,2004,2006-2018 Glenn Randers-Pehrson
6
+ * Copyright (c) 1996-1997 Andreas Dilger
7
+ * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
8
+ *
9
+ * This code is released under the libpng license.
10
+ * For conditions of distribution and use, see the disclaimer
11
+ * and license in png.h
12
+ */
13
+
14
+ #include "pngpriv.h"
15
+
16
+ #ifdef PNG_WRITE_SUPPORTED
17
+
18
+ #ifdef PNG_WRITE_INT_FUNCTIONS_SUPPORTED
19
+ /* Place a 32-bit number into a buffer in PNG byte order. We work
20
+ * with unsigned numbers for convenience, although one supported
21
+ * ancillary chunk uses signed (two's complement) numbers.
22
+ */
23
+ void PNGAPI
24
+ png_save_uint_32(png_bytep buf, png_uint_32 i)
25
+ {
26
+ buf[0] = (png_byte)((i >> 24) & 0xffU);
27
+ buf[1] = (png_byte)((i >> 16) & 0xffU);
28
+ buf[2] = (png_byte)((i >> 8) & 0xffU);
29
+ buf[3] = (png_byte)( i & 0xffU);
30
+ }
31
+
32
+ /* Place a 16-bit number into a buffer in PNG byte order.
33
+ * The parameter is declared unsigned int, not png_uint_16,
34
+ * just to avoid potential problems on pre-ANSI C compilers.
35
+ */
36
+ void PNGAPI
37
+ png_save_uint_16(png_bytep buf, unsigned int i)
38
+ {
39
+ buf[0] = (png_byte)((i >> 8) & 0xffU);
40
+ buf[1] = (png_byte)( i & 0xffU);
41
+ }
42
+ #endif
43
+
44
+ /* Simple function to write the signature. If we have already written
45
+ * the magic bytes of the signature, or more likely, the PNG stream is
46
+ * being embedded into another stream and doesn't need its own signature,
47
+ * we should call png_set_sig_bytes() to tell libpng how many of the
48
+ * bytes have already been written.
49
+ */
50
+ void PNGAPI
51
+ png_write_sig(png_structrp png_ptr)
52
+ {
53
+ png_byte png_signature[8] = {137, 80, 78, 71, 13, 10, 26, 10};
54
+
55
+ #ifdef PNG_IO_STATE_SUPPORTED
56
+ /* Inform the I/O callback that the signature is being written */
57
+ png_ptr->io_state = PNG_IO_WRITING | PNG_IO_SIGNATURE;
58
+ #endif
59
+
60
+ /* Write the rest of the 8 byte signature */
61
+ png_write_data(png_ptr, &png_signature[png_ptr->sig_bytes],
62
+ (size_t)(8 - png_ptr->sig_bytes));
63
+
64
+ if (png_ptr->sig_bytes < 3)
65
+ png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
66
+ }
67
+
68
+ /* Write the start of a PNG chunk. The type is the chunk type.
69
+ * The total_length is the sum of the lengths of all the data you will be
70
+ * passing in png_write_chunk_data().
71
+ */
72
+ static void
73
+ png_write_chunk_header(png_structrp png_ptr, png_uint_32 chunk_name,
74
+ png_uint_32 length)
75
+ {
76
+ png_byte buf[8];
77
+
78
+ #if defined(PNG_DEBUG) && (PNG_DEBUG > 0)
79
+ PNG_CSTRING_FROM_CHUNK(buf, chunk_name);
80
+ png_debug2(0, "Writing %s chunk, length = %lu", buf, (unsigned long)length);
81
+ #endif
82
+
83
+ if (png_ptr == NULL)
84
+ return;
85
+
86
+ #ifdef PNG_IO_STATE_SUPPORTED
87
+ /* Inform the I/O callback that the chunk header is being written.
88
+ * PNG_IO_CHUNK_HDR requires a single I/O call.
89
+ */
90
+ png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_HDR;
91
+ #endif
92
+
93
+ /* Write the length and the chunk name */
94
+ png_save_uint_32(buf, length);
95
+ png_save_uint_32(buf + 4, chunk_name);
96
+ png_write_data(png_ptr, buf, 8);
97
+
98
+ /* Put the chunk name into png_ptr->chunk_name */
99
+ png_ptr->chunk_name = chunk_name;
100
+
101
+ /* Reset the crc and run it over the chunk name */
102
+ png_reset_crc(png_ptr);
103
+
104
+ png_calculate_crc(png_ptr, buf + 4, 4);
105
+
106
+ #ifdef PNG_IO_STATE_SUPPORTED
107
+ /* Inform the I/O callback that chunk data will (possibly) be written.
108
+ * PNG_IO_CHUNK_DATA does NOT require a specific number of I/O calls.
109
+ */
110
+ png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_DATA;
111
+ #endif
112
+ }
113
+
114
+ void PNGAPI
115
+ png_write_chunk_start(png_structrp png_ptr, png_const_bytep chunk_string,
116
+ png_uint_32 length)
117
+ {
118
+ png_write_chunk_header(png_ptr, PNG_CHUNK_FROM_STRING(chunk_string), length);
119
+ }
120
+
121
+ /* Write the data of a PNG chunk started with png_write_chunk_header().
122
+ * Note that multiple calls to this function are allowed, and that the
123
+ * sum of the lengths from these calls *must* add up to the total_length
124
+ * given to png_write_chunk_header().
125
+ */
126
+ void PNGAPI
127
+ png_write_chunk_data(png_structrp png_ptr, png_const_bytep data, size_t length)
128
+ {
129
+ /* Write the data, and run the CRC over it */
130
+ if (png_ptr == NULL)
131
+ return;
132
+
133
+ if (data != NULL && length > 0)
134
+ {
135
+ png_write_data(png_ptr, data, length);
136
+
137
+ /* Update the CRC after writing the data,
138
+ * in case the user I/O routine alters it.
139
+ */
140
+ png_calculate_crc(png_ptr, data, length);
141
+ }
142
+ }
143
+
144
+ /* Finish a chunk started with png_write_chunk_header(). */
145
+ void PNGAPI
146
+ png_write_chunk_end(png_structrp png_ptr)
147
+ {
148
+ png_byte buf[4];
149
+
150
+ if (png_ptr == NULL) return;
151
+
152
+ #ifdef PNG_IO_STATE_SUPPORTED
153
+ /* Inform the I/O callback that the chunk CRC is being written.
154
+ * PNG_IO_CHUNK_CRC requires a single I/O function call.
155
+ */
156
+ png_ptr->io_state = PNG_IO_WRITING | PNG_IO_CHUNK_CRC;
157
+ #endif
158
+
159
+ /* Write the crc in a single operation */
160
+ png_save_uint_32(buf, png_ptr->crc);
161
+
162
+ png_write_data(png_ptr, buf, 4);
163
+ }
164
+
165
+ /* Write a PNG chunk all at once. The type is an array of ASCII characters
166
+ * representing the chunk name. The array must be at least 4 bytes in
167
+ * length, and does not need to be null terminated. To be safe, pass the
168
+ * pre-defined chunk names here, and if you need a new one, define it
169
+ * where the others are defined. The length is the length of the data.
170
+ * All the data must be present. If that is not possible, use the
171
+ * png_write_chunk_start(), png_write_chunk_data(), and png_write_chunk_end()
172
+ * functions instead.
173
+ */
174
+ static void
175
+ png_write_complete_chunk(png_structrp png_ptr, png_uint_32 chunk_name,
176
+ png_const_bytep data, size_t length)
177
+ {
178
+ if (png_ptr == NULL)
179
+ return;
180
+
181
+ /* On 64-bit architectures 'length' may not fit in a png_uint_32. */
182
+ if (length > PNG_UINT_31_MAX)
183
+ png_error(png_ptr, "length exceeds PNG maximum");
184
+
185
+ png_write_chunk_header(png_ptr, chunk_name, (png_uint_32)length);
186
+ png_write_chunk_data(png_ptr, data, length);
187
+ png_write_chunk_end(png_ptr);
188
+ }
189
+
190
+ /* This is the API that calls the internal function above. */
191
+ void PNGAPI
192
+ png_write_chunk(png_structrp png_ptr, png_const_bytep chunk_string,
193
+ png_const_bytep data, size_t length)
194
+ {
195
+ png_write_complete_chunk(png_ptr, PNG_CHUNK_FROM_STRING(chunk_string), data,
196
+ length);
197
+ }
198
+
199
+ /* This is used below to find the size of an image to pass to png_deflate_claim,
200
+ * so it only needs to be accurate if the size is less than 16384 bytes (the
201
+ * point at which a lower LZ window size can be used.)
202
+ */
203
+ static png_alloc_size_t
204
+ png_image_size(png_structrp png_ptr)
205
+ {
206
+ /* Only return sizes up to the maximum of a png_uint_32; do this by limiting
207
+ * the width and height used to 15 bits.
208
+ */
209
+ png_uint_32 h = png_ptr->height;
210
+
211
+ if (png_ptr->rowbytes < 32768 && h < 32768)
212
+ {
213
+ if (png_ptr->interlaced != 0)
214
+ {
215
+ /* Interlacing makes the image larger because of the replication of
216
+ * both the filter byte and the padding to a byte boundary.
217
+ */
218
+ png_uint_32 w = png_ptr->width;
219
+ unsigned int pd = png_ptr->pixel_depth;
220
+ png_alloc_size_t cb_base;
221
+ int pass;
222
+
223
+ for (cb_base=0, pass=0; pass<=6; ++pass)
224
+ {
225
+ png_uint_32 pw = PNG_PASS_COLS(w, pass);
226
+
227
+ if (pw > 0)
228
+ cb_base += (PNG_ROWBYTES(pd, pw)+1) * PNG_PASS_ROWS(h, pass);
229
+ }
230
+
231
+ return cb_base;
232
+ }
233
+
234
+ else
235
+ return (png_ptr->rowbytes+1) * h;
236
+ }
237
+
238
+ else
239
+ return 0xffffffffU;
240
+ }
241
+
242
+ #ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED
243
+ /* This is the code to hack the first two bytes of the deflate stream (the
244
+ * deflate header) to correct the windowBits value to match the actual data
245
+ * size. Note that the second argument is the *uncompressed* size but the
246
+ * first argument is the *compressed* data (and it must be deflate
247
+ * compressed.)
248
+ */
249
+ static void
250
+ optimize_cmf(png_bytep data, png_alloc_size_t data_size)
251
+ {
252
+ /* Optimize the CMF field in the zlib stream. The resultant zlib stream is
253
+ * still compliant to the stream specification.
254
+ */
255
+ if (data_size <= 16384) /* else windowBits must be 15 */
256
+ {
257
+ unsigned int z_cmf = data[0]; /* zlib compression method and flags */
258
+
259
+ if ((z_cmf & 0x0f) == 8 && (z_cmf & 0xf0) <= 0x70)
260
+ {
261
+ unsigned int z_cinfo;
262
+ unsigned int half_z_window_size;
263
+
264
+ z_cinfo = z_cmf >> 4;
265
+ half_z_window_size = 1U << (z_cinfo + 7);
266
+
267
+ if (data_size <= half_z_window_size) /* else no change */
268
+ {
269
+ unsigned int tmp;
270
+
271
+ do
272
+ {
273
+ half_z_window_size >>= 1;
274
+ --z_cinfo;
275
+ }
276
+ while (z_cinfo > 0 && data_size <= half_z_window_size);
277
+
278
+ z_cmf = (z_cmf & 0x0f) | (z_cinfo << 4);
279
+
280
+ data[0] = (png_byte)z_cmf;
281
+ tmp = data[1] & 0xe0;
282
+ tmp += 0x1f - ((z_cmf << 8) + tmp) % 0x1f;
283
+ data[1] = (png_byte)tmp;
284
+ }
285
+ }
286
+ }
287
+ }
288
+ #endif /* WRITE_OPTIMIZE_CMF */
289
+
290
+ /* Initialize the compressor for the appropriate type of compression. */
291
+ static int
292
+ png_deflate_claim(png_structrp png_ptr, png_uint_32 owner,
293
+ png_alloc_size_t data_size)
294
+ {
295
+ if (png_ptr->zowner != 0)
296
+ {
297
+ #if defined(PNG_WARNINGS_SUPPORTED) || defined(PNG_ERROR_TEXT_SUPPORTED)
298
+ char msg[64];
299
+
300
+ PNG_STRING_FROM_CHUNK(msg, owner);
301
+ msg[4] = ':';
302
+ msg[5] = ' ';
303
+ PNG_STRING_FROM_CHUNK(msg+6, png_ptr->zowner);
304
+ /* So the message that results is "<chunk> using zstream"; this is an
305
+ * internal error, but is very useful for debugging. i18n requirements
306
+ * are minimal.
307
+ */
308
+ (void)png_safecat(msg, (sizeof msg), 10, " using zstream");
309
+ #endif
310
+ #if PNG_RELEASE_BUILD
311
+ png_warning(png_ptr, msg);
312
+
313
+ /* Attempt sane error recovery */
314
+ if (png_ptr->zowner == png_IDAT) /* don't steal from IDAT */
315
+ {
316
+ png_ptr->zstream.msg = PNGZ_MSG_CAST("in use by IDAT");
317
+ return Z_STREAM_ERROR;
318
+ }
319
+
320
+ png_ptr->zowner = 0;
321
+ #else
322
+ png_error(png_ptr, msg);
323
+ #endif
324
+ }
325
+
326
+ {
327
+ int level = png_ptr->zlib_level;
328
+ int method = png_ptr->zlib_method;
329
+ int windowBits = png_ptr->zlib_window_bits;
330
+ int memLevel = png_ptr->zlib_mem_level;
331
+ int strategy; /* set below */
332
+ int ret; /* zlib return code */
333
+
334
+ if (owner == png_IDAT)
335
+ {
336
+ if ((png_ptr->flags & PNG_FLAG_ZLIB_CUSTOM_STRATEGY) != 0)
337
+ strategy = png_ptr->zlib_strategy;
338
+
339
+ else if (png_ptr->do_filter != PNG_FILTER_NONE)
340
+ strategy = PNG_Z_DEFAULT_STRATEGY;
341
+
342
+ else
343
+ strategy = PNG_Z_DEFAULT_NOFILTER_STRATEGY;
344
+ }
345
+
346
+ else
347
+ {
348
+ #ifdef PNG_WRITE_CUSTOMIZE_ZTXT_COMPRESSION_SUPPORTED
349
+ level = png_ptr->zlib_text_level;
350
+ method = png_ptr->zlib_text_method;
351
+ windowBits = png_ptr->zlib_text_window_bits;
352
+ memLevel = png_ptr->zlib_text_mem_level;
353
+ strategy = png_ptr->zlib_text_strategy;
354
+ #else
355
+ /* If customization is not supported the values all come from the
356
+ * IDAT values except for the strategy, which is fixed to the
357
+ * default. (This is the pre-1.6.0 behavior too, although it was
358
+ * implemented in a very different way.)
359
+ */
360
+ strategy = Z_DEFAULT_STRATEGY;
361
+ #endif
362
+ }
363
+
364
+ /* Adjust 'windowBits' down if larger than 'data_size'; to stop this
365
+ * happening just pass 32768 as the data_size parameter. Notice that zlib
366
+ * requires an extra 262 bytes in the window in addition to the data to be
367
+ * able to see the whole of the data, so if data_size+262 takes us to the
368
+ * next windowBits size we need to fix up the value later. (Because even
369
+ * though deflate needs the extra window, inflate does not!)
370
+ */
371
+ if (data_size <= 16384)
372
+ {
373
+ /* IMPLEMENTATION NOTE: this 'half_window_size' stuff is only here to
374
+ * work round a Microsoft Visual C misbehavior which, contrary to C-90,
375
+ * widens the result of the following shift to 64-bits if (and,
376
+ * apparently, only if) it is used in a test.
377
+ */
378
+ unsigned int half_window_size = 1U << (windowBits-1);
379
+
380
+ while (data_size + 262 <= half_window_size)
381
+ {
382
+ half_window_size >>= 1;
383
+ --windowBits;
384
+ }
385
+ }
386
+
387
+ /* Check against the previous initialized values, if any. */
388
+ if ((png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) != 0 &&
389
+ (png_ptr->zlib_set_level != level ||
390
+ png_ptr->zlib_set_method != method ||
391
+ png_ptr->zlib_set_window_bits != windowBits ||
392
+ png_ptr->zlib_set_mem_level != memLevel ||
393
+ png_ptr->zlib_set_strategy != strategy))
394
+ {
395
+ if (deflateEnd(&png_ptr->zstream) != Z_OK)
396
+ png_warning(png_ptr, "deflateEnd failed (ignored)");
397
+
398
+ png_ptr->flags &= ~PNG_FLAG_ZSTREAM_INITIALIZED;
399
+ }
400
+
401
+ /* For safety clear out the input and output pointers (currently zlib
402
+ * doesn't use them on Init, but it might in the future).
403
+ */
404
+ png_ptr->zstream.next_in = NULL;
405
+ png_ptr->zstream.avail_in = 0;
406
+ png_ptr->zstream.next_out = NULL;
407
+ png_ptr->zstream.avail_out = 0;
408
+
409
+ /* Now initialize if required, setting the new parameters, otherwise just
410
+ * do a simple reset to the previous parameters.
411
+ */
412
+ if ((png_ptr->flags & PNG_FLAG_ZSTREAM_INITIALIZED) != 0)
413
+ ret = deflateReset(&png_ptr->zstream);
414
+
415
+ else
416
+ {
417
+ ret = deflateInit2(&png_ptr->zstream, level, method, windowBits,
418
+ memLevel, strategy);
419
+
420
+ if (ret == Z_OK)
421
+ png_ptr->flags |= PNG_FLAG_ZSTREAM_INITIALIZED;
422
+ }
423
+
424
+ /* The return code is from either deflateReset or deflateInit2; they have
425
+ * pretty much the same set of error codes.
426
+ */
427
+ if (ret == Z_OK)
428
+ png_ptr->zowner = owner;
429
+
430
+ else
431
+ png_zstream_error(png_ptr, ret);
432
+
433
+ return ret;
434
+ }
435
+ }
436
+
437
+ /* Clean up (or trim) a linked list of compression buffers. */
438
+ void /* PRIVATE */
439
+ png_free_buffer_list(png_structrp png_ptr, png_compression_bufferp *listp)
440
+ {
441
+ png_compression_bufferp list = *listp;
442
+
443
+ if (list != NULL)
444
+ {
445
+ *listp = NULL;
446
+
447
+ do
448
+ {
449
+ png_compression_bufferp next = list->next;
450
+
451
+ png_free(png_ptr, list);
452
+ list = next;
453
+ }
454
+ while (list != NULL);
455
+ }
456
+ }
457
+
458
+ #ifdef PNG_WRITE_COMPRESSED_TEXT_SUPPORTED
459
+ /* This pair of functions encapsulates the operation of (a) compressing a
460
+ * text string, and (b) issuing it later as a series of chunk data writes.
461
+ * The compression_state structure is shared context for these functions
462
+ * set up by the caller to allow access to the relevant local variables.
463
+ *
464
+ * compression_buffer (new in 1.6.0) is just a linked list of zbuffer_size
465
+ * temporary buffers. From 1.6.0 it is retained in png_struct so that it will
466
+ * be correctly freed in the event of a write error (previous implementations
467
+ * just leaked memory.)
468
+ */
469
+ typedef struct
470
+ {
471
+ png_const_bytep input; /* The uncompressed input data */
472
+ png_alloc_size_t input_len; /* Its length */
473
+ png_uint_32 output_len; /* Final compressed length */
474
+ png_byte output[1024]; /* First block of output */
475
+ } compression_state;
476
+
477
+ static void
478
+ png_text_compress_init(compression_state *comp, png_const_bytep input,
479
+ png_alloc_size_t input_len)
480
+ {
481
+ comp->input = input;
482
+ comp->input_len = input_len;
483
+ comp->output_len = 0;
484
+ }
485
+
486
+ /* Compress the data in the compression state input */
487
+ static int
488
+ png_text_compress(png_structrp png_ptr, png_uint_32 chunk_name,
489
+ compression_state *comp, png_uint_32 prefix_len)
490
+ {
491
+ int ret;
492
+
493
+ /* To find the length of the output it is necessary to first compress the
494
+ * input. The result is buffered rather than using the two-pass algorithm
495
+ * that is used on the inflate side; deflate is assumed to be slower and a
496
+ * PNG writer is assumed to have more memory available than a PNG reader.
497
+ *
498
+ * IMPLEMENTATION NOTE: the zlib API deflateBound() can be used to find an
499
+ * upper limit on the output size, but it is always bigger than the input
500
+ * size so it is likely to be more efficient to use this linked-list
501
+ * approach.
502
+ */
503
+ ret = png_deflate_claim(png_ptr, chunk_name, comp->input_len);
504
+
505
+ if (ret != Z_OK)
506
+ return ret;
507
+
508
+ /* Set up the compression buffers, we need a loop here to avoid overflowing a
509
+ * uInt. Use ZLIB_IO_MAX to limit the input. The output is always limited
510
+ * by the output buffer size, so there is no need to check that. Since this
511
+ * is ANSI-C we know that an 'int', hence a uInt, is always at least 16 bits
512
+ * in size.
513
+ */
514
+ {
515
+ png_compression_bufferp *end = &png_ptr->zbuffer_list;
516
+ png_alloc_size_t input_len = comp->input_len; /* may be zero! */
517
+ png_uint_32 output_len;
518
+
519
+ /* zlib updates these for us: */
520
+ png_ptr->zstream.next_in = PNGZ_INPUT_CAST(comp->input);
521
+ png_ptr->zstream.avail_in = 0; /* Set below */
522
+ png_ptr->zstream.next_out = comp->output;
523
+ png_ptr->zstream.avail_out = (sizeof comp->output);
524
+
525
+ output_len = png_ptr->zstream.avail_out;
526
+
527
+ do
528
+ {
529
+ uInt avail_in = ZLIB_IO_MAX;
530
+
531
+ if (avail_in > input_len)
532
+ avail_in = (uInt)input_len;
533
+
534
+ input_len -= avail_in;
535
+
536
+ png_ptr->zstream.avail_in = avail_in;
537
+
538
+ if (png_ptr->zstream.avail_out == 0)
539
+ {
540
+ png_compression_buffer *next;
541
+
542
+ /* Chunk data is limited to 2^31 bytes in length, so the prefix
543
+ * length must be counted here.
544
+ */
545
+ if (output_len + prefix_len > PNG_UINT_31_MAX)
546
+ {
547
+ ret = Z_MEM_ERROR;
548
+ break;
549
+ }
550
+
551
+ /* Need a new (malloc'ed) buffer, but there may be one present
552
+ * already.
553
+ */
554
+ next = *end;
555
+ if (next == NULL)
556
+ {
557
+ next = png_voidcast(png_compression_bufferp, png_malloc_base
558
+ (png_ptr, PNG_COMPRESSION_BUFFER_SIZE(png_ptr)));
559
+
560
+ if (next == NULL)
561
+ {
562
+ ret = Z_MEM_ERROR;
563
+ break;
564
+ }
565
+
566
+ /* Link in this buffer (so that it will be freed later) */
567
+ next->next = NULL;
568
+ *end = next;
569
+ }
570
+
571
+ png_ptr->zstream.next_out = next->output;
572
+ png_ptr->zstream.avail_out = png_ptr->zbuffer_size;
573
+ output_len += png_ptr->zstream.avail_out;
574
+
575
+ /* Move 'end' to the next buffer pointer. */
576
+ end = &next->next;
577
+ }
578
+
579
+ /* Compress the data */
580
+ ret = deflate(&png_ptr->zstream,
581
+ input_len > 0 ? Z_NO_FLUSH : Z_FINISH);
582
+
583
+ /* Claw back input data that was not consumed (because avail_in is
584
+ * reset above every time round the loop).
585
+ */
586
+ input_len += png_ptr->zstream.avail_in;
587
+ png_ptr->zstream.avail_in = 0; /* safety */
588
+ }
589
+ while (ret == Z_OK);
590
+
591
+ /* There may be some space left in the last output buffer. This needs to
592
+ * be subtracted from output_len.
593
+ */
594
+ output_len -= png_ptr->zstream.avail_out;
595
+ png_ptr->zstream.avail_out = 0; /* safety */
596
+ comp->output_len = output_len;
597
+
598
+ /* Now double check the output length, put in a custom message if it is
599
+ * too long. Otherwise ensure the z_stream::msg pointer is set to
600
+ * something.
601
+ */
602
+ if (output_len + prefix_len >= PNG_UINT_31_MAX)
603
+ {
604
+ png_ptr->zstream.msg = PNGZ_MSG_CAST("compressed data too long");
605
+ ret = Z_MEM_ERROR;
606
+ }
607
+
608
+ else
609
+ png_zstream_error(png_ptr, ret);
610
+
611
+ /* Reset zlib for another zTXt/iTXt or image data */
612
+ png_ptr->zowner = 0;
613
+
614
+ /* The only success case is Z_STREAM_END, input_len must be 0; if not this
615
+ * is an internal error.
616
+ */
617
+ if (ret == Z_STREAM_END && input_len == 0)
618
+ {
619
+ #ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED
620
+ /* Fix up the deflate header, if required */
621
+ optimize_cmf(comp->output, comp->input_len);
622
+ #endif
623
+ /* But Z_OK is returned, not Z_STREAM_END; this allows the claim
624
+ * function above to return Z_STREAM_END on an error (though it never
625
+ * does in the current versions of zlib.)
626
+ */
627
+ return Z_OK;
628
+ }
629
+
630
+ else
631
+ return ret;
632
+ }
633
+ }
634
+
635
+ /* Ship the compressed text out via chunk writes */
636
+ static void
637
+ png_write_compressed_data_out(png_structrp png_ptr, compression_state *comp)
638
+ {
639
+ png_uint_32 output_len = comp->output_len;
640
+ png_const_bytep output = comp->output;
641
+ png_uint_32 avail = (sizeof comp->output);
642
+ png_compression_buffer *next = png_ptr->zbuffer_list;
643
+
644
+ for (;;)
645
+ {
646
+ if (avail > output_len)
647
+ avail = output_len;
648
+
649
+ png_write_chunk_data(png_ptr, output, avail);
650
+
651
+ output_len -= avail;
652
+
653
+ if (output_len == 0 || next == NULL)
654
+ break;
655
+
656
+ avail = png_ptr->zbuffer_size;
657
+ output = next->output;
658
+ next = next->next;
659
+ }
660
+
661
+ /* This is an internal error; 'next' must have been NULL! */
662
+ if (output_len > 0)
663
+ png_error(png_ptr, "error writing ancillary chunked compressed data");
664
+ }
665
+ #endif /* WRITE_COMPRESSED_TEXT */
666
+
667
+ /* Write the IHDR chunk, and update the png_struct with the necessary
668
+ * information. Note that the rest of this code depends upon this
669
+ * information being correct.
670
+ */
671
+ void /* PRIVATE */
672
+ png_write_IHDR(png_structrp png_ptr, png_uint_32 width, png_uint_32 height,
673
+ int bit_depth, int color_type, int compression_type, int filter_type,
674
+ int interlace_type)
675
+ {
676
+ png_byte buf[13]; /* Buffer to store the IHDR info */
677
+ int is_invalid_depth;
678
+
679
+ png_debug(1, "in png_write_IHDR");
680
+
681
+ /* Check that we have valid input data from the application info */
682
+ switch (color_type)
683
+ {
684
+ case PNG_COLOR_TYPE_GRAY:
685
+ switch (bit_depth)
686
+ {
687
+ case 1:
688
+ case 2:
689
+ case 4:
690
+ case 8:
691
+ #ifdef PNG_WRITE_16BIT_SUPPORTED
692
+ case 16:
693
+ #endif
694
+ png_ptr->channels = 1; break;
695
+
696
+ default:
697
+ png_error(png_ptr,
698
+ "Invalid bit depth for grayscale image");
699
+ }
700
+ break;
701
+
702
+ case PNG_COLOR_TYPE_RGB:
703
+ is_invalid_depth = (bit_depth != 8);
704
+ #ifdef PNG_WRITE_16BIT_SUPPORTED
705
+ is_invalid_depth = (is_invalid_depth && bit_depth != 16);
706
+ #endif
707
+ if (is_invalid_depth)
708
+ png_error(png_ptr, "Invalid bit depth for RGB image");
709
+
710
+ png_ptr->channels = 3;
711
+ break;
712
+
713
+ case PNG_COLOR_TYPE_PALETTE:
714
+ switch (bit_depth)
715
+ {
716
+ case 1:
717
+ case 2:
718
+ case 4:
719
+ case 8:
720
+ png_ptr->channels = 1;
721
+ break;
722
+
723
+ default:
724
+ png_error(png_ptr, "Invalid bit depth for paletted image");
725
+ }
726
+ break;
727
+
728
+ case PNG_COLOR_TYPE_GRAY_ALPHA:
729
+ is_invalid_depth = (bit_depth != 8);
730
+ #ifdef PNG_WRITE_16BIT_SUPPORTED
731
+ is_invalid_depth = (is_invalid_depth && bit_depth != 16);
732
+ #endif
733
+ if (is_invalid_depth)
734
+ png_error(png_ptr, "Invalid bit depth for grayscale+alpha image");
735
+
736
+ png_ptr->channels = 2;
737
+ break;
738
+
739
+ case PNG_COLOR_TYPE_RGB_ALPHA:
740
+ is_invalid_depth = (bit_depth != 8);
741
+ #ifdef PNG_WRITE_16BIT_SUPPORTED
742
+ is_invalid_depth = (is_invalid_depth && bit_depth != 16);
743
+ #endif
744
+ if (is_invalid_depth)
745
+ png_error(png_ptr, "Invalid bit depth for RGBA image");
746
+
747
+ png_ptr->channels = 4;
748
+ break;
749
+
750
+ default:
751
+ png_error(png_ptr, "Invalid image color type specified");
752
+ }
753
+
754
+ if (compression_type != PNG_COMPRESSION_TYPE_BASE)
755
+ {
756
+ png_warning(png_ptr, "Invalid compression type specified");
757
+ compression_type = PNG_COMPRESSION_TYPE_BASE;
758
+ }
759
+
760
+ /* Write filter_method 64 (intrapixel differencing) only if
761
+ * 1. Libpng was compiled with PNG_MNG_FEATURES_SUPPORTED and
762
+ * 2. Libpng did not write a PNG signature (this filter_method is only
763
+ * used in PNG datastreams that are embedded in MNG datastreams) and
764
+ * 3. The application called png_permit_mng_features with a mask that
765
+ * included PNG_FLAG_MNG_FILTER_64 and
766
+ * 4. The filter_method is 64 and
767
+ * 5. The color_type is RGB or RGBA
768
+ */
769
+ if (
770
+ #ifdef PNG_MNG_FEATURES_SUPPORTED
771
+ !((png_ptr->mng_features_permitted & PNG_FLAG_MNG_FILTER_64) != 0 &&
772
+ ((png_ptr->mode & PNG_HAVE_PNG_SIGNATURE) == 0) &&
773
+ (color_type == PNG_COLOR_TYPE_RGB ||
774
+ color_type == PNG_COLOR_TYPE_RGB_ALPHA) &&
775
+ (filter_type == PNG_INTRAPIXEL_DIFFERENCING)) &&
776
+ #endif
777
+ filter_type != PNG_FILTER_TYPE_BASE)
778
+ {
779
+ png_warning(png_ptr, "Invalid filter type specified");
780
+ filter_type = PNG_FILTER_TYPE_BASE;
781
+ }
782
+
783
+ #ifdef PNG_WRITE_INTERLACING_SUPPORTED
784
+ if (interlace_type != PNG_INTERLACE_NONE &&
785
+ interlace_type != PNG_INTERLACE_ADAM7)
786
+ {
787
+ png_warning(png_ptr, "Invalid interlace type specified");
788
+ interlace_type = PNG_INTERLACE_ADAM7;
789
+ }
790
+ #else
791
+ interlace_type=PNG_INTERLACE_NONE;
792
+ #endif
793
+
794
+ /* Save the relevant information */
795
+ png_ptr->bit_depth = (png_byte)bit_depth;
796
+ png_ptr->color_type = (png_byte)color_type;
797
+ png_ptr->interlaced = (png_byte)interlace_type;
798
+ #ifdef PNG_MNG_FEATURES_SUPPORTED
799
+ png_ptr->filter_type = (png_byte)filter_type;
800
+ #endif
801
+ png_ptr->compression_type = (png_byte)compression_type;
802
+ png_ptr->width = width;
803
+ png_ptr->height = height;
804
+
805
+ png_ptr->pixel_depth = (png_byte)(bit_depth * png_ptr->channels);
806
+ png_ptr->rowbytes = PNG_ROWBYTES(png_ptr->pixel_depth, width);
807
+ /* Set the usr info, so any transformations can modify it */
808
+ png_ptr->usr_width = png_ptr->width;
809
+ png_ptr->usr_bit_depth = png_ptr->bit_depth;
810
+ png_ptr->usr_channels = png_ptr->channels;
811
+
812
+ /* Pack the header information into the buffer */
813
+ png_save_uint_32(buf, width);
814
+ png_save_uint_32(buf + 4, height);
815
+ buf[8] = (png_byte)bit_depth;
816
+ buf[9] = (png_byte)color_type;
817
+ buf[10] = (png_byte)compression_type;
818
+ buf[11] = (png_byte)filter_type;
819
+ buf[12] = (png_byte)interlace_type;
820
+
821
+ /* Write the chunk */
822
+ png_write_complete_chunk(png_ptr, png_IHDR, buf, 13);
823
+
824
+ if ((png_ptr->do_filter) == PNG_NO_FILTERS)
825
+ {
826
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE ||
827
+ png_ptr->bit_depth < 8)
828
+ png_ptr->do_filter = PNG_FILTER_NONE;
829
+
830
+ else
831
+ png_ptr->do_filter = PNG_ALL_FILTERS;
832
+ }
833
+
834
+ png_ptr->mode = PNG_HAVE_IHDR; /* not READY_FOR_ZTXT */
835
+ }
836
+
837
+ /* Write the palette. We are careful not to trust png_color to be in the
838
+ * correct order for PNG, so people can redefine it to any convenient
839
+ * structure.
840
+ */
841
+ void /* PRIVATE */
842
+ png_write_PLTE(png_structrp png_ptr, png_const_colorp palette,
843
+ png_uint_32 num_pal)
844
+ {
845
+ png_uint_32 max_palette_length, i;
846
+ png_const_colorp pal_ptr;
847
+ png_byte buf[3];
848
+
849
+ png_debug(1, "in png_write_PLTE");
850
+
851
+ max_palette_length = (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) ?
852
+ (1 << png_ptr->bit_depth) : PNG_MAX_PALETTE_LENGTH;
853
+
854
+ if ((
855
+ #ifdef PNG_MNG_FEATURES_SUPPORTED
856
+ (png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) == 0 &&
857
+ #endif
858
+ num_pal == 0) || num_pal > max_palette_length)
859
+ {
860
+ if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE)
861
+ {
862
+ png_error(png_ptr, "Invalid number of colors in palette");
863
+ }
864
+
865
+ else
866
+ {
867
+ png_warning(png_ptr, "Invalid number of colors in palette");
868
+ return;
869
+ }
870
+ }
871
+
872
+ if ((png_ptr->color_type & PNG_COLOR_MASK_COLOR) == 0)
873
+ {
874
+ png_warning(png_ptr,
875
+ "Ignoring request to write a PLTE chunk in grayscale PNG");
876
+
877
+ return;
878
+ }
879
+
880
+ png_ptr->num_palette = (png_uint_16)num_pal;
881
+ png_debug1(3, "num_palette = %d", png_ptr->num_palette);
882
+
883
+ png_write_chunk_header(png_ptr, png_PLTE, (png_uint_32)(num_pal * 3));
884
+ #ifdef PNG_POINTER_INDEXING_SUPPORTED
885
+
886
+ for (i = 0, pal_ptr = palette; i < num_pal; i++, pal_ptr++)
887
+ {
888
+ buf[0] = pal_ptr->red;
889
+ buf[1] = pal_ptr->green;
890
+ buf[2] = pal_ptr->blue;
891
+ png_write_chunk_data(png_ptr, buf, 3);
892
+ }
893
+
894
+ #else
895
+ /* This is a little slower but some buggy compilers need to do this
896
+ * instead
897
+ */
898
+ pal_ptr=palette;
899
+
900
+ for (i = 0; i < num_pal; i++)
901
+ {
902
+ buf[0] = pal_ptr[i].red;
903
+ buf[1] = pal_ptr[i].green;
904
+ buf[2] = pal_ptr[i].blue;
905
+ png_write_chunk_data(png_ptr, buf, 3);
906
+ }
907
+
908
+ #endif
909
+ png_write_chunk_end(png_ptr);
910
+ png_ptr->mode |= PNG_HAVE_PLTE;
911
+ }
912
+
913
+ /* This is similar to png_text_compress, above, except that it does not require
914
+ * all of the data at once and, instead of buffering the compressed result,
915
+ * writes it as IDAT chunks. Unlike png_text_compress it *can* png_error out
916
+ * because it calls the write interface. As a result it does its own error
917
+ * reporting and does not return an error code. In the event of error it will
918
+ * just call png_error. The input data length may exceed 32-bits. The 'flush'
919
+ * parameter is exactly the same as that to deflate, with the following
920
+ * meanings:
921
+ *
922
+ * Z_NO_FLUSH: normal incremental output of compressed data
923
+ * Z_SYNC_FLUSH: do a SYNC_FLUSH, used by png_write_flush
924
+ * Z_FINISH: this is the end of the input, do a Z_FINISH and clean up
925
+ *
926
+ * The routine manages the acquire and release of the png_ptr->zstream by
927
+ * checking and (at the end) clearing png_ptr->zowner; it does some sanity
928
+ * checks on the 'mode' flags while doing this.
929
+ */
930
+ void /* PRIVATE */
931
+ png_compress_IDAT(png_structrp png_ptr, png_const_bytep input,
932
+ png_alloc_size_t input_len, int flush)
933
+ {
934
+ if (png_ptr->zowner != png_IDAT)
935
+ {
936
+ /* First time. Ensure we have a temporary buffer for compression and
937
+ * trim the buffer list if it has more than one entry to free memory.
938
+ * If 'WRITE_COMPRESSED_TEXT' is not set the list will never have been
939
+ * created at this point, but the check here is quick and safe.
940
+ */
941
+ if (png_ptr->zbuffer_list == NULL)
942
+ {
943
+ png_ptr->zbuffer_list = png_voidcast(png_compression_bufferp,
944
+ png_malloc(png_ptr, PNG_COMPRESSION_BUFFER_SIZE(png_ptr)));
945
+ png_ptr->zbuffer_list->next = NULL;
946
+ }
947
+
948
+ else
949
+ png_free_buffer_list(png_ptr, &png_ptr->zbuffer_list->next);
950
+
951
+ /* It is a terminal error if we can't claim the zstream. */
952
+ if (png_deflate_claim(png_ptr, png_IDAT, png_image_size(png_ptr)) != Z_OK)
953
+ png_error(png_ptr, png_ptr->zstream.msg);
954
+
955
+ /* The output state is maintained in png_ptr->zstream, so it must be
956
+ * initialized here after the claim.
957
+ */
958
+ png_ptr->zstream.next_out = png_ptr->zbuffer_list->output;
959
+ png_ptr->zstream.avail_out = png_ptr->zbuffer_size;
960
+ }
961
+
962
+ /* Now loop reading and writing until all the input is consumed or an error
963
+ * terminates the operation. The _out values are maintained across calls to
964
+ * this function, but the input must be reset each time.
965
+ */
966
+ png_ptr->zstream.next_in = PNGZ_INPUT_CAST(input);
967
+ png_ptr->zstream.avail_in = 0; /* set below */
968
+ for (;;)
969
+ {
970
+ int ret;
971
+
972
+ /* INPUT: from the row data */
973
+ uInt avail = ZLIB_IO_MAX;
974
+
975
+ if (avail > input_len)
976
+ avail = (uInt)input_len; /* safe because of the check */
977
+
978
+ png_ptr->zstream.avail_in = avail;
979
+ input_len -= avail;
980
+
981
+ ret = deflate(&png_ptr->zstream, input_len > 0 ? Z_NO_FLUSH : flush);
982
+
983
+ /* Include as-yet unconsumed input */
984
+ input_len += png_ptr->zstream.avail_in;
985
+ png_ptr->zstream.avail_in = 0;
986
+
987
+ /* OUTPUT: write complete IDAT chunks when avail_out drops to zero. Note
988
+ * that these two zstream fields are preserved across the calls, therefore
989
+ * there is no need to set these up on entry to the loop.
990
+ */
991
+ if (png_ptr->zstream.avail_out == 0)
992
+ {
993
+ png_bytep data = png_ptr->zbuffer_list->output;
994
+ uInt size = png_ptr->zbuffer_size;
995
+
996
+ /* Write an IDAT containing the data then reset the buffer. The
997
+ * first IDAT may need deflate header optimization.
998
+ */
999
+ #ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED
1000
+ if ((png_ptr->mode & PNG_HAVE_IDAT) == 0 &&
1001
+ png_ptr->compression_type == PNG_COMPRESSION_TYPE_BASE)
1002
+ optimize_cmf(data, png_image_size(png_ptr));
1003
+ #endif
1004
+
1005
+ if (size > 0)
1006
+ png_write_complete_chunk(png_ptr, png_IDAT, data, size);
1007
+ png_ptr->mode |= PNG_HAVE_IDAT;
1008
+
1009
+ png_ptr->zstream.next_out = data;
1010
+ png_ptr->zstream.avail_out = size;
1011
+
1012
+ /* For SYNC_FLUSH or FINISH it is essential to keep calling zlib with
1013
+ * the same flush parameter until it has finished output, for NO_FLUSH
1014
+ * it doesn't matter.
1015
+ */
1016
+ if (ret == Z_OK && flush != Z_NO_FLUSH)
1017
+ continue;
1018
+ }
1019
+
1020
+ /* The order of these checks doesn't matter much; it just affects which
1021
+ * possible error might be detected if multiple things go wrong at once.
1022
+ */
1023
+ if (ret == Z_OK) /* most likely return code! */
1024
+ {
1025
+ /* If all the input has been consumed then just return. If Z_FINISH
1026
+ * was used as the flush parameter something has gone wrong if we get
1027
+ * here.
1028
+ */
1029
+ if (input_len == 0)
1030
+ {
1031
+ if (flush == Z_FINISH)
1032
+ png_error(png_ptr, "Z_OK on Z_FINISH with output space");
1033
+
1034
+ return;
1035
+ }
1036
+ }
1037
+
1038
+ else if (ret == Z_STREAM_END && flush == Z_FINISH)
1039
+ {
1040
+ /* This is the end of the IDAT data; any pending output must be
1041
+ * flushed. For small PNG files we may still be at the beginning.
1042
+ */
1043
+ png_bytep data = png_ptr->zbuffer_list->output;
1044
+ uInt size = png_ptr->zbuffer_size - png_ptr->zstream.avail_out;
1045
+
1046
+ #ifdef PNG_WRITE_OPTIMIZE_CMF_SUPPORTED
1047
+ if ((png_ptr->mode & PNG_HAVE_IDAT) == 0 &&
1048
+ png_ptr->compression_type == PNG_COMPRESSION_TYPE_BASE)
1049
+ optimize_cmf(data, png_image_size(png_ptr));
1050
+ #endif
1051
+
1052
+ if (size > 0)
1053
+ png_write_complete_chunk(png_ptr, png_IDAT, data, size);
1054
+ png_ptr->zstream.avail_out = 0;
1055
+ png_ptr->zstream.next_out = NULL;
1056
+ png_ptr->mode |= PNG_HAVE_IDAT | PNG_AFTER_IDAT;
1057
+
1058
+ png_ptr->zowner = 0; /* Release the stream */
1059
+ return;
1060
+ }
1061
+
1062
+ else
1063
+ {
1064
+ /* This is an error condition. */
1065
+ png_zstream_error(png_ptr, ret);
1066
+ png_error(png_ptr, png_ptr->zstream.msg);
1067
+ }
1068
+ }
1069
+ }
1070
+
1071
+ /* Write an IEND chunk */
1072
+ void /* PRIVATE */
1073
+ png_write_IEND(png_structrp png_ptr)
1074
+ {
1075
+ png_debug(1, "in png_write_IEND");
1076
+
1077
+ png_write_complete_chunk(png_ptr, png_IEND, NULL, 0);
1078
+ png_ptr->mode |= PNG_HAVE_IEND;
1079
+ }
1080
+
1081
+ #ifdef PNG_WRITE_gAMA_SUPPORTED
1082
+ /* Write a gAMA chunk */
1083
+ void /* PRIVATE */
1084
+ png_write_gAMA_fixed(png_structrp png_ptr, png_fixed_point file_gamma)
1085
+ {
1086
+ png_byte buf[4];
1087
+
1088
+ png_debug(1, "in png_write_gAMA");
1089
+
1090
+ /* file_gamma is saved in 1/100,000ths */
1091
+ png_save_uint_32(buf, (png_uint_32)file_gamma);
1092
+ png_write_complete_chunk(png_ptr, png_gAMA, buf, 4);
1093
+ }
1094
+ #endif
1095
+
1096
+ #ifdef PNG_WRITE_sRGB_SUPPORTED
1097
+ /* Write a sRGB chunk */
1098
+ void /* PRIVATE */
1099
+ png_write_sRGB(png_structrp png_ptr, int srgb_intent)
1100
+ {
1101
+ png_byte buf[1];
1102
+
1103
+ png_debug(1, "in png_write_sRGB");
1104
+
1105
+ if (srgb_intent >= PNG_sRGB_INTENT_LAST)
1106
+ png_warning(png_ptr,
1107
+ "Invalid sRGB rendering intent specified");
1108
+
1109
+ buf[0]=(png_byte)srgb_intent;
1110
+ png_write_complete_chunk(png_ptr, png_sRGB, buf, 1);
1111
+ }
1112
+ #endif
1113
+
1114
+ #ifdef PNG_WRITE_iCCP_SUPPORTED
1115
+ /* Write an iCCP chunk */
1116
+ void /* PRIVATE */
1117
+ png_write_iCCP(png_structrp png_ptr, png_const_charp name,
1118
+ png_const_bytep profile)
1119
+ {
1120
+ png_uint_32 name_len;
1121
+ png_uint_32 profile_len;
1122
+ png_byte new_name[81]; /* 1 byte for the compression byte */
1123
+ compression_state comp;
1124
+ png_uint_32 temp;
1125
+
1126
+ png_debug(1, "in png_write_iCCP");
1127
+
1128
+ /* These are all internal problems: the profile should have been checked
1129
+ * before when it was stored.
1130
+ */
1131
+ if (profile == NULL)
1132
+ png_error(png_ptr, "No profile for iCCP chunk"); /* internal error */
1133
+
1134
+ profile_len = png_get_uint_32(profile);
1135
+
1136
+ if (profile_len < 132)
1137
+ png_error(png_ptr, "ICC profile too short");
1138
+
1139
+ temp = (png_uint_32) (*(profile+8));
1140
+ if (temp > 3 && (profile_len & 0x03))
1141
+ png_error(png_ptr, "ICC profile length invalid (not a multiple of 4)");
1142
+
1143
+ {
1144
+ png_uint_32 embedded_profile_len = png_get_uint_32(profile);
1145
+
1146
+ if (profile_len != embedded_profile_len)
1147
+ png_error(png_ptr, "Profile length does not match profile");
1148
+ }
1149
+
1150
+ name_len = png_check_keyword(png_ptr, name, new_name);
1151
+
1152
+ if (name_len == 0)
1153
+ png_error(png_ptr, "iCCP: invalid keyword");
1154
+
1155
+ new_name[++name_len] = PNG_COMPRESSION_TYPE_BASE;
1156
+
1157
+ /* Make sure we include the NULL after the name and the compression type */
1158
+ ++name_len;
1159
+
1160
+ png_text_compress_init(&comp, profile, profile_len);
1161
+
1162
+ /* Allow for keyword terminator and compression byte */
1163
+ if (png_text_compress(png_ptr, png_iCCP, &comp, name_len) != Z_OK)
1164
+ png_error(png_ptr, png_ptr->zstream.msg);
1165
+
1166
+ png_write_chunk_header(png_ptr, png_iCCP, name_len + comp.output_len);
1167
+
1168
+ png_write_chunk_data(png_ptr, new_name, name_len);
1169
+
1170
+ png_write_compressed_data_out(png_ptr, &comp);
1171
+
1172
+ png_write_chunk_end(png_ptr);
1173
+ }
1174
+ #endif
1175
+
1176
+ #ifdef PNG_WRITE_sPLT_SUPPORTED
1177
+ /* Write a sPLT chunk */
1178
+ void /* PRIVATE */
1179
+ png_write_sPLT(png_structrp png_ptr, png_const_sPLT_tp spalette)
1180
+ {
1181
+ png_uint_32 name_len;
1182
+ png_byte new_name[80];
1183
+ png_byte entrybuf[10];
1184
+ size_t entry_size = (spalette->depth == 8 ? 6 : 10);
1185
+ size_t palette_size = entry_size * (size_t)spalette->nentries;
1186
+ png_sPLT_entryp ep;
1187
+ #ifndef PNG_POINTER_INDEXING_SUPPORTED
1188
+ int i;
1189
+ #endif
1190
+
1191
+ png_debug(1, "in png_write_sPLT");
1192
+
1193
+ name_len = png_check_keyword(png_ptr, spalette->name, new_name);
1194
+
1195
+ if (name_len == 0)
1196
+ png_error(png_ptr, "sPLT: invalid keyword");
1197
+
1198
+ /* Make sure we include the NULL after the name */
1199
+ png_write_chunk_header(png_ptr, png_sPLT,
1200
+ (png_uint_32)(name_len + 2 + palette_size));
1201
+
1202
+ png_write_chunk_data(png_ptr, (png_bytep)new_name, (size_t)(name_len + 1));
1203
+
1204
+ png_write_chunk_data(png_ptr, &spalette->depth, 1);
1205
+
1206
+ /* Loop through each palette entry, writing appropriately */
1207
+ #ifdef PNG_POINTER_INDEXING_SUPPORTED
1208
+ for (ep = spalette->entries; ep<spalette->entries + spalette->nentries; ep++)
1209
+ {
1210
+ if (spalette->depth == 8)
1211
+ {
1212
+ entrybuf[0] = (png_byte)ep->red;
1213
+ entrybuf[1] = (png_byte)ep->green;
1214
+ entrybuf[2] = (png_byte)ep->blue;
1215
+ entrybuf[3] = (png_byte)ep->alpha;
1216
+ png_save_uint_16(entrybuf + 4, ep->frequency);
1217
+ }
1218
+
1219
+ else
1220
+ {
1221
+ png_save_uint_16(entrybuf + 0, ep->red);
1222
+ png_save_uint_16(entrybuf + 2, ep->green);
1223
+ png_save_uint_16(entrybuf + 4, ep->blue);
1224
+ png_save_uint_16(entrybuf + 6, ep->alpha);
1225
+ png_save_uint_16(entrybuf + 8, ep->frequency);
1226
+ }
1227
+
1228
+ png_write_chunk_data(png_ptr, entrybuf, entry_size);
1229
+ }
1230
+ #else
1231
+ ep=spalette->entries;
1232
+ for (i = 0; i>spalette->nentries; i++)
1233
+ {
1234
+ if (spalette->depth == 8)
1235
+ {
1236
+ entrybuf[0] = (png_byte)ep[i].red;
1237
+ entrybuf[1] = (png_byte)ep[i].green;
1238
+ entrybuf[2] = (png_byte)ep[i].blue;
1239
+ entrybuf[3] = (png_byte)ep[i].alpha;
1240
+ png_save_uint_16(entrybuf + 4, ep[i].frequency);
1241
+ }
1242
+
1243
+ else
1244
+ {
1245
+ png_save_uint_16(entrybuf + 0, ep[i].red);
1246
+ png_save_uint_16(entrybuf + 2, ep[i].green);
1247
+ png_save_uint_16(entrybuf + 4, ep[i].blue);
1248
+ png_save_uint_16(entrybuf + 6, ep[i].alpha);
1249
+ png_save_uint_16(entrybuf + 8, ep[i].frequency);
1250
+ }
1251
+
1252
+ png_write_chunk_data(png_ptr, entrybuf, entry_size);
1253
+ }
1254
+ #endif
1255
+
1256
+ png_write_chunk_end(png_ptr);
1257
+ }
1258
+ #endif
1259
+
1260
+ #ifdef PNG_WRITE_sBIT_SUPPORTED
1261
+ /* Write the sBIT chunk */
1262
+ void /* PRIVATE */
1263
+ png_write_sBIT(png_structrp png_ptr, png_const_color_8p sbit, int color_type)
1264
+ {
1265
+ png_byte buf[4];
1266
+ size_t size;
1267
+
1268
+ png_debug(1, "in png_write_sBIT");
1269
+
1270
+ /* Make sure we don't depend upon the order of PNG_COLOR_8 */
1271
+ if ((color_type & PNG_COLOR_MASK_COLOR) != 0)
1272
+ {
1273
+ png_byte maxbits;
1274
+
1275
+ maxbits = (png_byte)(color_type==PNG_COLOR_TYPE_PALETTE ? 8 :
1276
+ png_ptr->usr_bit_depth);
1277
+
1278
+ if (sbit->red == 0 || sbit->red > maxbits ||
1279
+ sbit->green == 0 || sbit->green > maxbits ||
1280
+ sbit->blue == 0 || sbit->blue > maxbits)
1281
+ {
1282
+ png_warning(png_ptr, "Invalid sBIT depth specified");
1283
+ return;
1284
+ }
1285
+
1286
+ buf[0] = sbit->red;
1287
+ buf[1] = sbit->green;
1288
+ buf[2] = sbit->blue;
1289
+ size = 3;
1290
+ }
1291
+
1292
+ else
1293
+ {
1294
+ if (sbit->gray == 0 || sbit->gray > png_ptr->usr_bit_depth)
1295
+ {
1296
+ png_warning(png_ptr, "Invalid sBIT depth specified");
1297
+ return;
1298
+ }
1299
+
1300
+ buf[0] = sbit->gray;
1301
+ size = 1;
1302
+ }
1303
+
1304
+ if ((color_type & PNG_COLOR_MASK_ALPHA) != 0)
1305
+ {
1306
+ if (sbit->alpha == 0 || sbit->alpha > png_ptr->usr_bit_depth)
1307
+ {
1308
+ png_warning(png_ptr, "Invalid sBIT depth specified");
1309
+ return;
1310
+ }
1311
+
1312
+ buf[size++] = sbit->alpha;
1313
+ }
1314
+
1315
+ png_write_complete_chunk(png_ptr, png_sBIT, buf, size);
1316
+ }
1317
+ #endif
1318
+
1319
+ #ifdef PNG_WRITE_cHRM_SUPPORTED
1320
+ /* Write the cHRM chunk */
1321
+ void /* PRIVATE */
1322
+ png_write_cHRM_fixed(png_structrp png_ptr, const png_xy *xy)
1323
+ {
1324
+ png_byte buf[32];
1325
+
1326
+ png_debug(1, "in png_write_cHRM");
1327
+
1328
+ /* Each value is saved in 1/100,000ths */
1329
+ png_save_int_32(buf, xy->whitex);
1330
+ png_save_int_32(buf + 4, xy->whitey);
1331
+
1332
+ png_save_int_32(buf + 8, xy->redx);
1333
+ png_save_int_32(buf + 12, xy->redy);
1334
+
1335
+ png_save_int_32(buf + 16, xy->greenx);
1336
+ png_save_int_32(buf + 20, xy->greeny);
1337
+
1338
+ png_save_int_32(buf + 24, xy->bluex);
1339
+ png_save_int_32(buf + 28, xy->bluey);
1340
+
1341
+ png_write_complete_chunk(png_ptr, png_cHRM, buf, 32);
1342
+ }
1343
+ #endif
1344
+
1345
+ #ifdef PNG_WRITE_tRNS_SUPPORTED
1346
+ /* Write the tRNS chunk */
1347
+ void /* PRIVATE */
1348
+ png_write_tRNS(png_structrp png_ptr, png_const_bytep trans_alpha,
1349
+ png_const_color_16p tran, int num_trans, int color_type)
1350
+ {
1351
+ png_byte buf[6];
1352
+
1353
+ png_debug(1, "in png_write_tRNS");
1354
+
1355
+ if (color_type == PNG_COLOR_TYPE_PALETTE)
1356
+ {
1357
+ if (num_trans <= 0 || num_trans > (int)png_ptr->num_palette)
1358
+ {
1359
+ png_app_warning(png_ptr,
1360
+ "Invalid number of transparent colors specified");
1361
+ return;
1362
+ }
1363
+
1364
+ /* Write the chunk out as it is */
1365
+ png_write_complete_chunk(png_ptr, png_tRNS, trans_alpha,
1366
+ (size_t)num_trans);
1367
+ }
1368
+
1369
+ else if (color_type == PNG_COLOR_TYPE_GRAY)
1370
+ {
1371
+ /* One 16-bit value */
1372
+ if (tran->gray >= (1 << png_ptr->bit_depth))
1373
+ {
1374
+ png_app_warning(png_ptr,
1375
+ "Ignoring attempt to write tRNS chunk out-of-range for bit_depth");
1376
+
1377
+ return;
1378
+ }
1379
+
1380
+ png_save_uint_16(buf, tran->gray);
1381
+ png_write_complete_chunk(png_ptr, png_tRNS, buf, 2);
1382
+ }
1383
+
1384
+ else if (color_type == PNG_COLOR_TYPE_RGB)
1385
+ {
1386
+ /* Three 16-bit values */
1387
+ png_save_uint_16(buf, tran->red);
1388
+ png_save_uint_16(buf + 2, tran->green);
1389
+ png_save_uint_16(buf + 4, tran->blue);
1390
+ #ifdef PNG_WRITE_16BIT_SUPPORTED
1391
+ if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]) != 0)
1392
+ #else
1393
+ if ((buf[0] | buf[2] | buf[4]) != 0)
1394
+ #endif
1395
+ {
1396
+ png_app_warning(png_ptr,
1397
+ "Ignoring attempt to write 16-bit tRNS chunk when bit_depth is 8");
1398
+ return;
1399
+ }
1400
+
1401
+ png_write_complete_chunk(png_ptr, png_tRNS, buf, 6);
1402
+ }
1403
+
1404
+ else
1405
+ {
1406
+ png_app_warning(png_ptr, "Can't write tRNS with an alpha channel");
1407
+ }
1408
+ }
1409
+ #endif
1410
+
1411
+ #ifdef PNG_WRITE_bKGD_SUPPORTED
1412
+ /* Write the background chunk */
1413
+ void /* PRIVATE */
1414
+ png_write_bKGD(png_structrp png_ptr, png_const_color_16p back, int color_type)
1415
+ {
1416
+ png_byte buf[6];
1417
+
1418
+ png_debug(1, "in png_write_bKGD");
1419
+
1420
+ if (color_type == PNG_COLOR_TYPE_PALETTE)
1421
+ {
1422
+ if (
1423
+ #ifdef PNG_MNG_FEATURES_SUPPORTED
1424
+ (png_ptr->num_palette != 0 ||
1425
+ (png_ptr->mng_features_permitted & PNG_FLAG_MNG_EMPTY_PLTE) == 0) &&
1426
+ #endif
1427
+ back->index >= png_ptr->num_palette)
1428
+ {
1429
+ png_warning(png_ptr, "Invalid background palette index");
1430
+ return;
1431
+ }
1432
+
1433
+ buf[0] = back->index;
1434
+ png_write_complete_chunk(png_ptr, png_bKGD, buf, 1);
1435
+ }
1436
+
1437
+ else if ((color_type & PNG_COLOR_MASK_COLOR) != 0)
1438
+ {
1439
+ png_save_uint_16(buf, back->red);
1440
+ png_save_uint_16(buf + 2, back->green);
1441
+ png_save_uint_16(buf + 4, back->blue);
1442
+ #ifdef PNG_WRITE_16BIT_SUPPORTED
1443
+ if (png_ptr->bit_depth == 8 && (buf[0] | buf[2] | buf[4]) != 0)
1444
+ #else
1445
+ if ((buf[0] | buf[2] | buf[4]) != 0)
1446
+ #endif
1447
+ {
1448
+ png_warning(png_ptr,
1449
+ "Ignoring attempt to write 16-bit bKGD chunk "
1450
+ "when bit_depth is 8");
1451
+
1452
+ return;
1453
+ }
1454
+
1455
+ png_write_complete_chunk(png_ptr, png_bKGD, buf, 6);
1456
+ }
1457
+
1458
+ else
1459
+ {
1460
+ if (back->gray >= (1 << png_ptr->bit_depth))
1461
+ {
1462
+ png_warning(png_ptr,
1463
+ "Ignoring attempt to write bKGD chunk out-of-range for bit_depth");
1464
+
1465
+ return;
1466
+ }
1467
+
1468
+ png_save_uint_16(buf, back->gray);
1469
+ png_write_complete_chunk(png_ptr, png_bKGD, buf, 2);
1470
+ }
1471
+ }
1472
+ #endif
1473
+
1474
+ #ifdef PNG_WRITE_eXIf_SUPPORTED
1475
+ /* Write the Exif data */
1476
+ void /* PRIVATE */
1477
+ png_write_eXIf(png_structrp png_ptr, png_bytep exif, int num_exif)
1478
+ {
1479
+ int i;
1480
+ png_byte buf[1];
1481
+
1482
+ png_debug(1, "in png_write_eXIf");
1483
+
1484
+ png_write_chunk_header(png_ptr, png_eXIf, (png_uint_32)(num_exif));
1485
+
1486
+ for (i = 0; i < num_exif; i++)
1487
+ {
1488
+ buf[0] = exif[i];
1489
+ png_write_chunk_data(png_ptr, buf, 1);
1490
+ }
1491
+
1492
+ png_write_chunk_end(png_ptr);
1493
+ }
1494
+ #endif
1495
+
1496
+ #ifdef PNG_WRITE_hIST_SUPPORTED
1497
+ /* Write the histogram */
1498
+ void /* PRIVATE */
1499
+ png_write_hIST(png_structrp png_ptr, png_const_uint_16p hist, int num_hist)
1500
+ {
1501
+ int i;
1502
+ png_byte buf[3];
1503
+
1504
+ png_debug(1, "in png_write_hIST");
1505
+
1506
+ if (num_hist > (int)png_ptr->num_palette)
1507
+ {
1508
+ png_debug2(3, "num_hist = %d, num_palette = %d", num_hist,
1509
+ png_ptr->num_palette);
1510
+
1511
+ png_warning(png_ptr, "Invalid number of histogram entries specified");
1512
+ return;
1513
+ }
1514
+
1515
+ png_write_chunk_header(png_ptr, png_hIST, (png_uint_32)(num_hist * 2));
1516
+
1517
+ for (i = 0; i < num_hist; i++)
1518
+ {
1519
+ png_save_uint_16(buf, hist[i]);
1520
+ png_write_chunk_data(png_ptr, buf, 2);
1521
+ }
1522
+
1523
+ png_write_chunk_end(png_ptr);
1524
+ }
1525
+ #endif
1526
+
1527
+ #ifdef PNG_WRITE_tEXt_SUPPORTED
1528
+ /* Write a tEXt chunk */
1529
+ void /* PRIVATE */
1530
+ png_write_tEXt(png_structrp png_ptr, png_const_charp key, png_const_charp text,
1531
+ size_t text_len)
1532
+ {
1533
+ png_uint_32 key_len;
1534
+ png_byte new_key[80];
1535
+
1536
+ png_debug(1, "in png_write_tEXt");
1537
+
1538
+ key_len = png_check_keyword(png_ptr, key, new_key);
1539
+
1540
+ if (key_len == 0)
1541
+ png_error(png_ptr, "tEXt: invalid keyword");
1542
+
1543
+ if (text == NULL || *text == '\0')
1544
+ text_len = 0;
1545
+
1546
+ else
1547
+ text_len = strlen(text);
1548
+
1549
+ if (text_len > PNG_UINT_31_MAX - (key_len+1))
1550
+ png_error(png_ptr, "tEXt: text too long");
1551
+
1552
+ /* Make sure we include the 0 after the key */
1553
+ png_write_chunk_header(png_ptr, png_tEXt,
1554
+ (png_uint_32)/*checked above*/(key_len + text_len + 1));
1555
+ /*
1556
+ * We leave it to the application to meet PNG-1.0 requirements on the
1557
+ * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of
1558
+ * any non-Latin-1 characters except for NEWLINE. ISO PNG will forbid them.
1559
+ * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
1560
+ */
1561
+ png_write_chunk_data(png_ptr, new_key, key_len + 1);
1562
+
1563
+ if (text_len != 0)
1564
+ png_write_chunk_data(png_ptr, (png_const_bytep)text, text_len);
1565
+
1566
+ png_write_chunk_end(png_ptr);
1567
+ }
1568
+ #endif
1569
+
1570
+ #ifdef PNG_WRITE_zTXt_SUPPORTED
1571
+ /* Write a compressed text chunk */
1572
+ void /* PRIVATE */
1573
+ png_write_zTXt(png_structrp png_ptr, png_const_charp key, png_const_charp text,
1574
+ int compression)
1575
+ {
1576
+ png_uint_32 key_len;
1577
+ png_byte new_key[81];
1578
+ compression_state comp;
1579
+
1580
+ png_debug(1, "in png_write_zTXt");
1581
+
1582
+ if (compression == PNG_TEXT_COMPRESSION_NONE)
1583
+ {
1584
+ png_write_tEXt(png_ptr, key, text, 0);
1585
+ return;
1586
+ }
1587
+
1588
+ if (compression != PNG_TEXT_COMPRESSION_zTXt)
1589
+ png_error(png_ptr, "zTXt: invalid compression type");
1590
+
1591
+ key_len = png_check_keyword(png_ptr, key, new_key);
1592
+
1593
+ if (key_len == 0)
1594
+ png_error(png_ptr, "zTXt: invalid keyword");
1595
+
1596
+ /* Add the compression method and 1 for the keyword separator. */
1597
+ new_key[++key_len] = PNG_COMPRESSION_TYPE_BASE;
1598
+ ++key_len;
1599
+
1600
+ /* Compute the compressed data; do it now for the length */
1601
+ png_text_compress_init(&comp, (png_const_bytep)text,
1602
+ text == NULL ? 0 : strlen(text));
1603
+
1604
+ if (png_text_compress(png_ptr, png_zTXt, &comp, key_len) != Z_OK)
1605
+ png_error(png_ptr, png_ptr->zstream.msg);
1606
+
1607
+ /* Write start of chunk */
1608
+ png_write_chunk_header(png_ptr, png_zTXt, key_len + comp.output_len);
1609
+
1610
+ /* Write key */
1611
+ png_write_chunk_data(png_ptr, new_key, key_len);
1612
+
1613
+ /* Write the compressed data */
1614
+ png_write_compressed_data_out(png_ptr, &comp);
1615
+
1616
+ /* Close the chunk */
1617
+ png_write_chunk_end(png_ptr);
1618
+ }
1619
+ #endif
1620
+
1621
+ #ifdef PNG_WRITE_iTXt_SUPPORTED
1622
+ /* Write an iTXt chunk */
1623
+ void /* PRIVATE */
1624
+ png_write_iTXt(png_structrp png_ptr, int compression, png_const_charp key,
1625
+ png_const_charp lang, png_const_charp lang_key, png_const_charp text)
1626
+ {
1627
+ png_uint_32 key_len, prefix_len;
1628
+ size_t lang_len, lang_key_len;
1629
+ png_byte new_key[82];
1630
+ compression_state comp;
1631
+
1632
+ png_debug(1, "in png_write_iTXt");
1633
+
1634
+ key_len = png_check_keyword(png_ptr, key, new_key);
1635
+
1636
+ if (key_len == 0)
1637
+ png_error(png_ptr, "iTXt: invalid keyword");
1638
+
1639
+ /* Set the compression flag */
1640
+ switch (compression)
1641
+ {
1642
+ case PNG_ITXT_COMPRESSION_NONE:
1643
+ case PNG_TEXT_COMPRESSION_NONE:
1644
+ compression = new_key[++key_len] = 0; /* no compression */
1645
+ break;
1646
+
1647
+ case PNG_TEXT_COMPRESSION_zTXt:
1648
+ case PNG_ITXT_COMPRESSION_zTXt:
1649
+ compression = new_key[++key_len] = 1; /* compressed */
1650
+ break;
1651
+
1652
+ default:
1653
+ png_error(png_ptr, "iTXt: invalid compression");
1654
+ }
1655
+
1656
+ new_key[++key_len] = PNG_COMPRESSION_TYPE_BASE;
1657
+ ++key_len; /* for the keywod separator */
1658
+
1659
+ /* We leave it to the application to meet PNG-1.0 requirements on the
1660
+ * contents of the text. PNG-1.0 through PNG-1.2 discourage the use of
1661
+ * any non-Latin-1 characters except for NEWLINE. ISO PNG, however,
1662
+ * specifies that the text is UTF-8 and this really doesn't require any
1663
+ * checking.
1664
+ *
1665
+ * The NUL character is forbidden by PNG-1.0 through PNG-1.2 and ISO PNG.
1666
+ *
1667
+ * TODO: validate the language tag correctly (see the spec.)
1668
+ */
1669
+ if (lang == NULL) lang = ""; /* empty language is valid */
1670
+ lang_len = strlen(lang)+1;
1671
+ if (lang_key == NULL) lang_key = ""; /* may be empty */
1672
+ lang_key_len = strlen(lang_key)+1;
1673
+ if (text == NULL) text = ""; /* may be empty */
1674
+
1675
+ prefix_len = key_len;
1676
+ if (lang_len > PNG_UINT_31_MAX-prefix_len)
1677
+ prefix_len = PNG_UINT_31_MAX;
1678
+ else
1679
+ prefix_len = (png_uint_32)(prefix_len + lang_len);
1680
+
1681
+ if (lang_key_len > PNG_UINT_31_MAX-prefix_len)
1682
+ prefix_len = PNG_UINT_31_MAX;
1683
+ else
1684
+ prefix_len = (png_uint_32)(prefix_len + lang_key_len);
1685
+
1686
+ png_text_compress_init(&comp, (png_const_bytep)text, strlen(text));
1687
+
1688
+ if (compression != 0)
1689
+ {
1690
+ if (png_text_compress(png_ptr, png_iTXt, &comp, prefix_len) != Z_OK)
1691
+ png_error(png_ptr, png_ptr->zstream.msg);
1692
+ }
1693
+
1694
+ else
1695
+ {
1696
+ if (comp.input_len > PNG_UINT_31_MAX-prefix_len)
1697
+ png_error(png_ptr, "iTXt: uncompressed text too long");
1698
+
1699
+ /* So the string will fit in a chunk: */
1700
+ comp.output_len = (png_uint_32)/*SAFE*/comp.input_len;
1701
+ }
1702
+
1703
+ png_write_chunk_header(png_ptr, png_iTXt, comp.output_len + prefix_len);
1704
+
1705
+ png_write_chunk_data(png_ptr, new_key, key_len);
1706
+
1707
+ png_write_chunk_data(png_ptr, (png_const_bytep)lang, lang_len);
1708
+
1709
+ png_write_chunk_data(png_ptr, (png_const_bytep)lang_key, lang_key_len);
1710
+
1711
+ if (compression != 0)
1712
+ png_write_compressed_data_out(png_ptr, &comp);
1713
+
1714
+ else
1715
+ png_write_chunk_data(png_ptr, (png_const_bytep)text, comp.output_len);
1716
+
1717
+ png_write_chunk_end(png_ptr);
1718
+ }
1719
+ #endif
1720
+
1721
+ #ifdef PNG_WRITE_oFFs_SUPPORTED
1722
+ /* Write the oFFs chunk */
1723
+ void /* PRIVATE */
1724
+ png_write_oFFs(png_structrp png_ptr, png_int_32 x_offset, png_int_32 y_offset,
1725
+ int unit_type)
1726
+ {
1727
+ png_byte buf[9];
1728
+
1729
+ png_debug(1, "in png_write_oFFs");
1730
+
1731
+ if (unit_type >= PNG_OFFSET_LAST)
1732
+ png_warning(png_ptr, "Unrecognized unit type for oFFs chunk");
1733
+
1734
+ png_save_int_32(buf, x_offset);
1735
+ png_save_int_32(buf + 4, y_offset);
1736
+ buf[8] = (png_byte)unit_type;
1737
+
1738
+ png_write_complete_chunk(png_ptr, png_oFFs, buf, 9);
1739
+ }
1740
+ #endif
1741
+ #ifdef PNG_WRITE_pCAL_SUPPORTED
1742
+ /* Write the pCAL chunk (described in the PNG extensions document) */
1743
+ void /* PRIVATE */
1744
+ png_write_pCAL(png_structrp png_ptr, png_charp purpose, png_int_32 X0,
1745
+ png_int_32 X1, int type, int nparams, png_const_charp units,
1746
+ png_charpp params)
1747
+ {
1748
+ png_uint_32 purpose_len;
1749
+ size_t units_len, total_len;
1750
+ png_size_tp params_len;
1751
+ png_byte buf[10];
1752
+ png_byte new_purpose[80];
1753
+ int i;
1754
+
1755
+ png_debug1(1, "in png_write_pCAL (%d parameters)", nparams);
1756
+
1757
+ if (type >= PNG_EQUATION_LAST)
1758
+ png_error(png_ptr, "Unrecognized equation type for pCAL chunk");
1759
+
1760
+ purpose_len = png_check_keyword(png_ptr, purpose, new_purpose);
1761
+
1762
+ if (purpose_len == 0)
1763
+ png_error(png_ptr, "pCAL: invalid keyword");
1764
+
1765
+ ++purpose_len; /* terminator */
1766
+
1767
+ png_debug1(3, "pCAL purpose length = %d", (int)purpose_len);
1768
+ units_len = strlen(units) + (nparams == 0 ? 0 : 1);
1769
+ png_debug1(3, "pCAL units length = %d", (int)units_len);
1770
+ total_len = purpose_len + units_len + 10;
1771
+
1772
+ params_len = (png_size_tp)png_malloc(png_ptr,
1773
+ (png_alloc_size_t)((png_alloc_size_t)nparams * (sizeof (size_t))));
1774
+
1775
+ /* Find the length of each parameter, making sure we don't count the
1776
+ * null terminator for the last parameter.
1777
+ */
1778
+ for (i = 0; i < nparams; i++)
1779
+ {
1780
+ params_len[i] = strlen(params[i]) + (i == nparams - 1 ? 0 : 1);
1781
+ png_debug2(3, "pCAL parameter %d length = %lu", i,
1782
+ (unsigned long)params_len[i]);
1783
+ total_len += params_len[i];
1784
+ }
1785
+
1786
+ png_debug1(3, "pCAL total length = %d", (int)total_len);
1787
+ png_write_chunk_header(png_ptr, png_pCAL, (png_uint_32)total_len);
1788
+ png_write_chunk_data(png_ptr, new_purpose, purpose_len);
1789
+ png_save_int_32(buf, X0);
1790
+ png_save_int_32(buf + 4, X1);
1791
+ buf[8] = (png_byte)type;
1792
+ buf[9] = (png_byte)nparams;
1793
+ png_write_chunk_data(png_ptr, buf, 10);
1794
+ png_write_chunk_data(png_ptr, (png_const_bytep)units, (size_t)units_len);
1795
+
1796
+ for (i = 0; i < nparams; i++)
1797
+ {
1798
+ png_write_chunk_data(png_ptr, (png_const_bytep)params[i], params_len[i]);
1799
+ }
1800
+
1801
+ png_free(png_ptr, params_len);
1802
+ png_write_chunk_end(png_ptr);
1803
+ }
1804
+ #endif
1805
+
1806
+ #ifdef PNG_WRITE_sCAL_SUPPORTED
1807
+ /* Write the sCAL chunk */
1808
+ void /* PRIVATE */
1809
+ png_write_sCAL_s(png_structrp png_ptr, int unit, png_const_charp width,
1810
+ png_const_charp height)
1811
+ {
1812
+ png_byte buf[64];
1813
+ size_t wlen, hlen, total_len;
1814
+
1815
+ png_debug(1, "in png_write_sCAL_s");
1816
+
1817
+ wlen = strlen(width);
1818
+ hlen = strlen(height);
1819
+ total_len = wlen + hlen + 2;
1820
+
1821
+ if (total_len > 64)
1822
+ {
1823
+ png_warning(png_ptr, "Can't write sCAL (buffer too small)");
1824
+ return;
1825
+ }
1826
+
1827
+ buf[0] = (png_byte)unit;
1828
+ memcpy(buf + 1, width, wlen + 1); /* Append the '\0' here */
1829
+ memcpy(buf + wlen + 2, height, hlen); /* Do NOT append the '\0' here */
1830
+
1831
+ png_debug1(3, "sCAL total length = %u", (unsigned int)total_len);
1832
+ png_write_complete_chunk(png_ptr, png_sCAL, buf, total_len);
1833
+ }
1834
+ #endif
1835
+
1836
+ #ifdef PNG_WRITE_pHYs_SUPPORTED
1837
+ /* Write the pHYs chunk */
1838
+ void /* PRIVATE */
1839
+ png_write_pHYs(png_structrp png_ptr, png_uint_32 x_pixels_per_unit,
1840
+ png_uint_32 y_pixels_per_unit,
1841
+ int unit_type)
1842
+ {
1843
+ png_byte buf[9];
1844
+
1845
+ png_debug(1, "in png_write_pHYs");
1846
+
1847
+ if (unit_type >= PNG_RESOLUTION_LAST)
1848
+ png_warning(png_ptr, "Unrecognized unit type for pHYs chunk");
1849
+
1850
+ png_save_uint_32(buf, x_pixels_per_unit);
1851
+ png_save_uint_32(buf + 4, y_pixels_per_unit);
1852
+ buf[8] = (png_byte)unit_type;
1853
+
1854
+ png_write_complete_chunk(png_ptr, png_pHYs, buf, 9);
1855
+ }
1856
+ #endif
1857
+
1858
+ #ifdef PNG_WRITE_tIME_SUPPORTED
1859
+ /* Write the tIME chunk. Use either png_convert_from_struct_tm()
1860
+ * or png_convert_from_time_t(), or fill in the structure yourself.
1861
+ */
1862
+ void /* PRIVATE */
1863
+ png_write_tIME(png_structrp png_ptr, png_const_timep mod_time)
1864
+ {
1865
+ png_byte buf[7];
1866
+
1867
+ png_debug(1, "in png_write_tIME");
1868
+
1869
+ if (mod_time->month > 12 || mod_time->month < 1 ||
1870
+ mod_time->day > 31 || mod_time->day < 1 ||
1871
+ mod_time->hour > 23 || mod_time->second > 60)
1872
+ {
1873
+ png_warning(png_ptr, "Invalid time specified for tIME chunk");
1874
+ return;
1875
+ }
1876
+
1877
+ png_save_uint_16(buf, mod_time->year);
1878
+ buf[2] = mod_time->month;
1879
+ buf[3] = mod_time->day;
1880
+ buf[4] = mod_time->hour;
1881
+ buf[5] = mod_time->minute;
1882
+ buf[6] = mod_time->second;
1883
+
1884
+ png_write_complete_chunk(png_ptr, png_tIME, buf, 7);
1885
+ }
1886
+ #endif
1887
+
1888
+ /* Initializes the row writing capability of libpng */
1889
+ void /* PRIVATE */
1890
+ png_write_start_row(png_structrp png_ptr)
1891
+ {
1892
+ #ifdef PNG_WRITE_INTERLACING_SUPPORTED
1893
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
1894
+
1895
+ /* Start of interlace block */
1896
+ static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
1897
+
1898
+ /* Offset to next interlace block */
1899
+ static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
1900
+
1901
+ /* Start of interlace block in the y direction */
1902
+ static const png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
1903
+
1904
+ /* Offset to next interlace block in the y direction */
1905
+ static const png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
1906
+ #endif
1907
+
1908
+ png_alloc_size_t buf_size;
1909
+ int usr_pixel_depth;
1910
+
1911
+ #ifdef PNG_WRITE_FILTER_SUPPORTED
1912
+ png_byte filters;
1913
+ #endif
1914
+
1915
+ png_debug(1, "in png_write_start_row");
1916
+
1917
+ usr_pixel_depth = png_ptr->usr_channels * png_ptr->usr_bit_depth;
1918
+ buf_size = PNG_ROWBYTES(usr_pixel_depth, png_ptr->width) + 1;
1919
+
1920
+ /* 1.5.6: added to allow checking in the row write code. */
1921
+ png_ptr->transformed_pixel_depth = png_ptr->pixel_depth;
1922
+ png_ptr->maximum_pixel_depth = (png_byte)usr_pixel_depth;
1923
+
1924
+ /* Set up row buffer */
1925
+ png_ptr->row_buf = png_voidcast(png_bytep, png_malloc(png_ptr, buf_size));
1926
+
1927
+ png_ptr->row_buf[0] = PNG_FILTER_VALUE_NONE;
1928
+
1929
+ #ifdef PNG_WRITE_FILTER_SUPPORTED
1930
+ filters = png_ptr->do_filter;
1931
+
1932
+ if (png_ptr->height == 1)
1933
+ filters &= 0xff & ~(PNG_FILTER_UP|PNG_FILTER_AVG|PNG_FILTER_PAETH);
1934
+
1935
+ if (png_ptr->width == 1)
1936
+ filters &= 0xff & ~(PNG_FILTER_SUB|PNG_FILTER_AVG|PNG_FILTER_PAETH);
1937
+
1938
+ if (filters == 0)
1939
+ filters = PNG_FILTER_NONE;
1940
+
1941
+ png_ptr->do_filter = filters;
1942
+
1943
+ if (((filters & (PNG_FILTER_SUB | PNG_FILTER_UP | PNG_FILTER_AVG |
1944
+ PNG_FILTER_PAETH)) != 0) && png_ptr->try_row == NULL)
1945
+ {
1946
+ int num_filters = 0;
1947
+
1948
+ png_ptr->try_row = png_voidcast(png_bytep, png_malloc(png_ptr, buf_size));
1949
+
1950
+ if (filters & PNG_FILTER_SUB)
1951
+ num_filters++;
1952
+
1953
+ if (filters & PNG_FILTER_UP)
1954
+ num_filters++;
1955
+
1956
+ if (filters & PNG_FILTER_AVG)
1957
+ num_filters++;
1958
+
1959
+ if (filters & PNG_FILTER_PAETH)
1960
+ num_filters++;
1961
+
1962
+ if (num_filters > 1)
1963
+ png_ptr->tst_row = png_voidcast(png_bytep, png_malloc(png_ptr,
1964
+ buf_size));
1965
+ }
1966
+
1967
+ /* We only need to keep the previous row if we are using one of the following
1968
+ * filters.
1969
+ */
1970
+ if ((filters & (PNG_FILTER_AVG | PNG_FILTER_UP | PNG_FILTER_PAETH)) != 0)
1971
+ png_ptr->prev_row = png_voidcast(png_bytep,
1972
+ png_calloc(png_ptr, buf_size));
1973
+ #endif /* WRITE_FILTER */
1974
+
1975
+ #ifdef PNG_WRITE_INTERLACING_SUPPORTED
1976
+ /* If interlaced, we need to set up width and height of pass */
1977
+ if (png_ptr->interlaced != 0)
1978
+ {
1979
+ if ((png_ptr->transformations & PNG_INTERLACE) == 0)
1980
+ {
1981
+ png_ptr->num_rows = (png_ptr->height + png_pass_yinc[0] - 1 -
1982
+ png_pass_ystart[0]) / png_pass_yinc[0];
1983
+
1984
+ png_ptr->usr_width = (png_ptr->width + png_pass_inc[0] - 1 -
1985
+ png_pass_start[0]) / png_pass_inc[0];
1986
+ }
1987
+
1988
+ else
1989
+ {
1990
+ png_ptr->num_rows = png_ptr->height;
1991
+ png_ptr->usr_width = png_ptr->width;
1992
+ }
1993
+ }
1994
+
1995
+ else
1996
+ #endif
1997
+ {
1998
+ png_ptr->num_rows = png_ptr->height;
1999
+ png_ptr->usr_width = png_ptr->width;
2000
+ }
2001
+ }
2002
+
2003
+ /* Internal use only. Called when finished processing a row of data. */
2004
+ void /* PRIVATE */
2005
+ png_write_finish_row(png_structrp png_ptr)
2006
+ {
2007
+ #ifdef PNG_WRITE_INTERLACING_SUPPORTED
2008
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
2009
+
2010
+ /* Start of interlace block */
2011
+ static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
2012
+
2013
+ /* Offset to next interlace block */
2014
+ static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
2015
+
2016
+ /* Start of interlace block in the y direction */
2017
+ static const png_byte png_pass_ystart[7] = {0, 0, 4, 0, 2, 0, 1};
2018
+
2019
+ /* Offset to next interlace block in the y direction */
2020
+ static const png_byte png_pass_yinc[7] = {8, 8, 8, 4, 4, 2, 2};
2021
+ #endif
2022
+
2023
+ png_debug(1, "in png_write_finish_row");
2024
+
2025
+ /* Next row */
2026
+ png_ptr->row_number++;
2027
+
2028
+ /* See if we are done */
2029
+ if (png_ptr->row_number < png_ptr->num_rows)
2030
+ return;
2031
+
2032
+ #ifdef PNG_WRITE_INTERLACING_SUPPORTED
2033
+ /* If interlaced, go to next pass */
2034
+ if (png_ptr->interlaced != 0)
2035
+ {
2036
+ png_ptr->row_number = 0;
2037
+ if ((png_ptr->transformations & PNG_INTERLACE) != 0)
2038
+ {
2039
+ png_ptr->pass++;
2040
+ }
2041
+
2042
+ else
2043
+ {
2044
+ /* Loop until we find a non-zero width or height pass */
2045
+ do
2046
+ {
2047
+ png_ptr->pass++;
2048
+
2049
+ if (png_ptr->pass >= 7)
2050
+ break;
2051
+
2052
+ png_ptr->usr_width = (png_ptr->width +
2053
+ png_pass_inc[png_ptr->pass] - 1 -
2054
+ png_pass_start[png_ptr->pass]) /
2055
+ png_pass_inc[png_ptr->pass];
2056
+
2057
+ png_ptr->num_rows = (png_ptr->height +
2058
+ png_pass_yinc[png_ptr->pass] - 1 -
2059
+ png_pass_ystart[png_ptr->pass]) /
2060
+ png_pass_yinc[png_ptr->pass];
2061
+
2062
+ if ((png_ptr->transformations & PNG_INTERLACE) != 0)
2063
+ break;
2064
+
2065
+ } while (png_ptr->usr_width == 0 || png_ptr->num_rows == 0);
2066
+
2067
+ }
2068
+
2069
+ /* Reset the row above the image for the next pass */
2070
+ if (png_ptr->pass < 7)
2071
+ {
2072
+ if (png_ptr->prev_row != NULL)
2073
+ memset(png_ptr->prev_row, 0,
2074
+ PNG_ROWBYTES(png_ptr->usr_channels *
2075
+ png_ptr->usr_bit_depth, png_ptr->width) + 1);
2076
+
2077
+ return;
2078
+ }
2079
+ }
2080
+ #endif
2081
+
2082
+ /* If we get here, we've just written the last row, so we need
2083
+ to flush the compressor */
2084
+ png_compress_IDAT(png_ptr, NULL, 0, Z_FINISH);
2085
+ }
2086
+
2087
+ #ifdef PNG_WRITE_INTERLACING_SUPPORTED
2088
+ /* Pick out the correct pixels for the interlace pass.
2089
+ * The basic idea here is to go through the row with a source
2090
+ * pointer and a destination pointer (sp and dp), and copy the
2091
+ * correct pixels for the pass. As the row gets compacted,
2092
+ * sp will always be >= dp, so we should never overwrite anything.
2093
+ * See the default: case for the easiest code to understand.
2094
+ */
2095
+ void /* PRIVATE */
2096
+ png_do_write_interlace(png_row_infop row_info, png_bytep row, int pass)
2097
+ {
2098
+ /* Arrays to facilitate easy interlacing - use pass (0 - 6) as index */
2099
+
2100
+ /* Start of interlace block */
2101
+ static const png_byte png_pass_start[7] = {0, 4, 0, 2, 0, 1, 0};
2102
+
2103
+ /* Offset to next interlace block */
2104
+ static const png_byte png_pass_inc[7] = {8, 8, 4, 4, 2, 2, 1};
2105
+
2106
+ png_debug(1, "in png_do_write_interlace");
2107
+
2108
+ /* We don't have to do anything on the last pass (6) */
2109
+ if (pass < 6)
2110
+ {
2111
+ /* Each pixel depth is handled separately */
2112
+ switch (row_info->pixel_depth)
2113
+ {
2114
+ case 1:
2115
+ {
2116
+ png_bytep sp;
2117
+ png_bytep dp;
2118
+ unsigned int shift;
2119
+ int d;
2120
+ int value;
2121
+ png_uint_32 i;
2122
+ png_uint_32 row_width = row_info->width;
2123
+
2124
+ dp = row;
2125
+ d = 0;
2126
+ shift = 7;
2127
+
2128
+ for (i = png_pass_start[pass]; i < row_width;
2129
+ i += png_pass_inc[pass])
2130
+ {
2131
+ sp = row + (size_t)(i >> 3);
2132
+ value = (int)(*sp >> (7 - (int)(i & 0x07))) & 0x01;
2133
+ d |= (value << shift);
2134
+
2135
+ if (shift == 0)
2136
+ {
2137
+ shift = 7;
2138
+ *dp++ = (png_byte)d;
2139
+ d = 0;
2140
+ }
2141
+
2142
+ else
2143
+ shift--;
2144
+
2145
+ }
2146
+ if (shift != 7)
2147
+ *dp = (png_byte)d;
2148
+
2149
+ break;
2150
+ }
2151
+
2152
+ case 2:
2153
+ {
2154
+ png_bytep sp;
2155
+ png_bytep dp;
2156
+ unsigned int shift;
2157
+ int d;
2158
+ int value;
2159
+ png_uint_32 i;
2160
+ png_uint_32 row_width = row_info->width;
2161
+
2162
+ dp = row;
2163
+ shift = 6;
2164
+ d = 0;
2165
+
2166
+ for (i = png_pass_start[pass]; i < row_width;
2167
+ i += png_pass_inc[pass])
2168
+ {
2169
+ sp = row + (size_t)(i >> 2);
2170
+ value = (*sp >> ((3 - (int)(i & 0x03)) << 1)) & 0x03;
2171
+ d |= (value << shift);
2172
+
2173
+ if (shift == 0)
2174
+ {
2175
+ shift = 6;
2176
+ *dp++ = (png_byte)d;
2177
+ d = 0;
2178
+ }
2179
+
2180
+ else
2181
+ shift -= 2;
2182
+ }
2183
+ if (shift != 6)
2184
+ *dp = (png_byte)d;
2185
+
2186
+ break;
2187
+ }
2188
+
2189
+ case 4:
2190
+ {
2191
+ png_bytep sp;
2192
+ png_bytep dp;
2193
+ unsigned int shift;
2194
+ int d;
2195
+ int value;
2196
+ png_uint_32 i;
2197
+ png_uint_32 row_width = row_info->width;
2198
+
2199
+ dp = row;
2200
+ shift = 4;
2201
+ d = 0;
2202
+ for (i = png_pass_start[pass]; i < row_width;
2203
+ i += png_pass_inc[pass])
2204
+ {
2205
+ sp = row + (size_t)(i >> 1);
2206
+ value = (*sp >> ((1 - (int)(i & 0x01)) << 2)) & 0x0f;
2207
+ d |= (value << shift);
2208
+
2209
+ if (shift == 0)
2210
+ {
2211
+ shift = 4;
2212
+ *dp++ = (png_byte)d;
2213
+ d = 0;
2214
+ }
2215
+
2216
+ else
2217
+ shift -= 4;
2218
+ }
2219
+ if (shift != 4)
2220
+ *dp = (png_byte)d;
2221
+
2222
+ break;
2223
+ }
2224
+
2225
+ default:
2226
+ {
2227
+ png_bytep sp;
2228
+ png_bytep dp;
2229
+ png_uint_32 i;
2230
+ png_uint_32 row_width = row_info->width;
2231
+ size_t pixel_bytes;
2232
+
2233
+ /* Start at the beginning */
2234
+ dp = row;
2235
+
2236
+ /* Find out how many bytes each pixel takes up */
2237
+ pixel_bytes = (row_info->pixel_depth >> 3);
2238
+
2239
+ /* Loop through the row, only looking at the pixels that matter */
2240
+ for (i = png_pass_start[pass]; i < row_width;
2241
+ i += png_pass_inc[pass])
2242
+ {
2243
+ /* Find out where the original pixel is */
2244
+ sp = row + (size_t)i * pixel_bytes;
2245
+
2246
+ /* Move the pixel */
2247
+ if (dp != sp)
2248
+ memcpy(dp, sp, pixel_bytes);
2249
+
2250
+ /* Next pixel */
2251
+ dp += pixel_bytes;
2252
+ }
2253
+ break;
2254
+ }
2255
+ }
2256
+ /* Set new row width */
2257
+ row_info->width = (row_info->width +
2258
+ png_pass_inc[pass] - 1 -
2259
+ png_pass_start[pass]) /
2260
+ png_pass_inc[pass];
2261
+
2262
+ row_info->rowbytes = PNG_ROWBYTES(row_info->pixel_depth,
2263
+ row_info->width);
2264
+ }
2265
+ }
2266
+ #endif
2267
+
2268
+
2269
+ /* This filters the row, chooses which filter to use, if it has not already
2270
+ * been specified by the application, and then writes the row out with the
2271
+ * chosen filter.
2272
+ */
2273
+ static void /* PRIVATE */
2274
+ png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row,
2275
+ size_t row_bytes);
2276
+
2277
+ #ifdef PNG_WRITE_FILTER_SUPPORTED
2278
+ static size_t /* PRIVATE */
2279
+ png_setup_sub_row(png_structrp png_ptr, png_uint_32 bpp,
2280
+ size_t row_bytes, size_t lmins)
2281
+ {
2282
+ png_bytep rp, dp, lp;
2283
+ size_t i;
2284
+ size_t sum = 0;
2285
+ unsigned int v;
2286
+
2287
+ png_ptr->try_row[0] = PNG_FILTER_VALUE_SUB;
2288
+
2289
+ for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1; i < bpp;
2290
+ i++, rp++, dp++)
2291
+ {
2292
+ v = *dp = *rp;
2293
+ #ifdef PNG_USE_ABS
2294
+ sum += 128 - abs((int)v - 128);
2295
+ #else
2296
+ sum += (v < 128) ? v : 256 - v;
2297
+ #endif
2298
+ }
2299
+
2300
+ for (lp = png_ptr->row_buf + 1; i < row_bytes;
2301
+ i++, rp++, lp++, dp++)
2302
+ {
2303
+ v = *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff);
2304
+ #ifdef PNG_USE_ABS
2305
+ sum += 128 - abs((int)v - 128);
2306
+ #else
2307
+ sum += (v < 128) ? v : 256 - v;
2308
+ #endif
2309
+
2310
+ if (sum > lmins) /* We are already worse, don't continue. */
2311
+ break;
2312
+ }
2313
+
2314
+ return (sum);
2315
+ }
2316
+
2317
+ static void /* PRIVATE */
2318
+ png_setup_sub_row_only(png_structrp png_ptr, png_uint_32 bpp,
2319
+ size_t row_bytes)
2320
+ {
2321
+ png_bytep rp, dp, lp;
2322
+ size_t i;
2323
+
2324
+ png_ptr->try_row[0] = PNG_FILTER_VALUE_SUB;
2325
+
2326
+ for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1; i < bpp;
2327
+ i++, rp++, dp++)
2328
+ {
2329
+ *dp = *rp;
2330
+ }
2331
+
2332
+ for (lp = png_ptr->row_buf + 1; i < row_bytes;
2333
+ i++, rp++, lp++, dp++)
2334
+ {
2335
+ *dp = (png_byte)(((int)*rp - (int)*lp) & 0xff);
2336
+ }
2337
+ }
2338
+
2339
+ static size_t /* PRIVATE */
2340
+ png_setup_up_row(png_structrp png_ptr, size_t row_bytes, size_t lmins)
2341
+ {
2342
+ png_bytep rp, dp, pp;
2343
+ size_t i;
2344
+ size_t sum = 0;
2345
+ unsigned int v;
2346
+
2347
+ png_ptr->try_row[0] = PNG_FILTER_VALUE_UP;
2348
+
2349
+ for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1,
2350
+ pp = png_ptr->prev_row + 1; i < row_bytes;
2351
+ i++, rp++, pp++, dp++)
2352
+ {
2353
+ v = *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff);
2354
+ #ifdef PNG_USE_ABS
2355
+ sum += 128 - abs((int)v - 128);
2356
+ #else
2357
+ sum += (v < 128) ? v : 256 - v;
2358
+ #endif
2359
+
2360
+ if (sum > lmins) /* We are already worse, don't continue. */
2361
+ break;
2362
+ }
2363
+
2364
+ return (sum);
2365
+ }
2366
+ static void /* PRIVATE */
2367
+ png_setup_up_row_only(png_structrp png_ptr, size_t row_bytes)
2368
+ {
2369
+ png_bytep rp, dp, pp;
2370
+ size_t i;
2371
+
2372
+ png_ptr->try_row[0] = PNG_FILTER_VALUE_UP;
2373
+
2374
+ for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1,
2375
+ pp = png_ptr->prev_row + 1; i < row_bytes;
2376
+ i++, rp++, pp++, dp++)
2377
+ {
2378
+ *dp = (png_byte)(((int)*rp - (int)*pp) & 0xff);
2379
+ }
2380
+ }
2381
+
2382
+ static size_t /* PRIVATE */
2383
+ png_setup_avg_row(png_structrp png_ptr, png_uint_32 bpp,
2384
+ size_t row_bytes, size_t lmins)
2385
+ {
2386
+ png_bytep rp, dp, pp, lp;
2387
+ png_uint_32 i;
2388
+ size_t sum = 0;
2389
+ unsigned int v;
2390
+
2391
+ png_ptr->try_row[0] = PNG_FILTER_VALUE_AVG;
2392
+
2393
+ for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1,
2394
+ pp = png_ptr->prev_row + 1; i < bpp; i++)
2395
+ {
2396
+ v = *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff);
2397
+
2398
+ #ifdef PNG_USE_ABS
2399
+ sum += 128 - abs((int)v - 128);
2400
+ #else
2401
+ sum += (v < 128) ? v : 256 - v;
2402
+ #endif
2403
+ }
2404
+
2405
+ for (lp = png_ptr->row_buf + 1; i < row_bytes; i++)
2406
+ {
2407
+ v = *dp++ = (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2))
2408
+ & 0xff);
2409
+
2410
+ #ifdef PNG_USE_ABS
2411
+ sum += 128 - abs((int)v - 128);
2412
+ #else
2413
+ sum += (v < 128) ? v : 256 - v;
2414
+ #endif
2415
+
2416
+ if (sum > lmins) /* We are already worse, don't continue. */
2417
+ break;
2418
+ }
2419
+
2420
+ return (sum);
2421
+ }
2422
+ static void /* PRIVATE */
2423
+ png_setup_avg_row_only(png_structrp png_ptr, png_uint_32 bpp,
2424
+ size_t row_bytes)
2425
+ {
2426
+ png_bytep rp, dp, pp, lp;
2427
+ png_uint_32 i;
2428
+
2429
+ png_ptr->try_row[0] = PNG_FILTER_VALUE_AVG;
2430
+
2431
+ for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1,
2432
+ pp = png_ptr->prev_row + 1; i < bpp; i++)
2433
+ {
2434
+ *dp++ = (png_byte)(((int)*rp++ - ((int)*pp++ / 2)) & 0xff);
2435
+ }
2436
+
2437
+ for (lp = png_ptr->row_buf + 1; i < row_bytes; i++)
2438
+ {
2439
+ *dp++ = (png_byte)(((int)*rp++ - (((int)*pp++ + (int)*lp++) / 2))
2440
+ & 0xff);
2441
+ }
2442
+ }
2443
+
2444
+ static size_t /* PRIVATE */
2445
+ png_setup_paeth_row(png_structrp png_ptr, png_uint_32 bpp,
2446
+ size_t row_bytes, size_t lmins)
2447
+ {
2448
+ png_bytep rp, dp, pp, cp, lp;
2449
+ size_t i;
2450
+ size_t sum = 0;
2451
+ unsigned int v;
2452
+
2453
+ png_ptr->try_row[0] = PNG_FILTER_VALUE_PAETH;
2454
+
2455
+ for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1,
2456
+ pp = png_ptr->prev_row + 1; i < bpp; i++)
2457
+ {
2458
+ v = *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff);
2459
+
2460
+ #ifdef PNG_USE_ABS
2461
+ sum += 128 - abs((int)v - 128);
2462
+ #else
2463
+ sum += (v < 128) ? v : 256 - v;
2464
+ #endif
2465
+ }
2466
+
2467
+ for (lp = png_ptr->row_buf + 1, cp = png_ptr->prev_row + 1; i < row_bytes;
2468
+ i++)
2469
+ {
2470
+ int a, b, c, pa, pb, pc, p;
2471
+
2472
+ b = *pp++;
2473
+ c = *cp++;
2474
+ a = *lp++;
2475
+
2476
+ p = b - c;
2477
+ pc = a - c;
2478
+
2479
+ #ifdef PNG_USE_ABS
2480
+ pa = abs(p);
2481
+ pb = abs(pc);
2482
+ pc = abs(p + pc);
2483
+ #else
2484
+ pa = p < 0 ? -p : p;
2485
+ pb = pc < 0 ? -pc : pc;
2486
+ pc = (p + pc) < 0 ? -(p + pc) : p + pc;
2487
+ #endif
2488
+
2489
+ p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c;
2490
+
2491
+ v = *dp++ = (png_byte)(((int)*rp++ - p) & 0xff);
2492
+
2493
+ #ifdef PNG_USE_ABS
2494
+ sum += 128 - abs((int)v - 128);
2495
+ #else
2496
+ sum += (v < 128) ? v : 256 - v;
2497
+ #endif
2498
+
2499
+ if (sum > lmins) /* We are already worse, don't continue. */
2500
+ break;
2501
+ }
2502
+
2503
+ return (sum);
2504
+ }
2505
+ static void /* PRIVATE */
2506
+ png_setup_paeth_row_only(png_structrp png_ptr, png_uint_32 bpp,
2507
+ size_t row_bytes)
2508
+ {
2509
+ png_bytep rp, dp, pp, cp, lp;
2510
+ size_t i;
2511
+
2512
+ png_ptr->try_row[0] = PNG_FILTER_VALUE_PAETH;
2513
+
2514
+ for (i = 0, rp = png_ptr->row_buf + 1, dp = png_ptr->try_row + 1,
2515
+ pp = png_ptr->prev_row + 1; i < bpp; i++)
2516
+ {
2517
+ *dp++ = (png_byte)(((int)*rp++ - (int)*pp++) & 0xff);
2518
+ }
2519
+
2520
+ for (lp = png_ptr->row_buf + 1, cp = png_ptr->prev_row + 1; i < row_bytes;
2521
+ i++)
2522
+ {
2523
+ int a, b, c, pa, pb, pc, p;
2524
+
2525
+ b = *pp++;
2526
+ c = *cp++;
2527
+ a = *lp++;
2528
+
2529
+ p = b - c;
2530
+ pc = a - c;
2531
+
2532
+ #ifdef PNG_USE_ABS
2533
+ pa = abs(p);
2534
+ pb = abs(pc);
2535
+ pc = abs(p + pc);
2536
+ #else
2537
+ pa = p < 0 ? -p : p;
2538
+ pb = pc < 0 ? -pc : pc;
2539
+ pc = (p + pc) < 0 ? -(p + pc) : p + pc;
2540
+ #endif
2541
+
2542
+ p = (pa <= pb && pa <=pc) ? a : (pb <= pc) ? b : c;
2543
+
2544
+ *dp++ = (png_byte)(((int)*rp++ - p) & 0xff);
2545
+ }
2546
+ }
2547
+ #endif /* WRITE_FILTER */
2548
+
2549
+ void /* PRIVATE */
2550
+ png_write_find_filter(png_structrp png_ptr, png_row_infop row_info)
2551
+ {
2552
+ #ifndef PNG_WRITE_FILTER_SUPPORTED
2553
+ png_write_filtered_row(png_ptr, png_ptr->row_buf, row_info->rowbytes+1);
2554
+ #else
2555
+ unsigned int filter_to_do = png_ptr->do_filter;
2556
+ png_bytep row_buf;
2557
+ png_bytep best_row;
2558
+ png_uint_32 bpp;
2559
+ size_t mins;
2560
+ size_t row_bytes = row_info->rowbytes;
2561
+
2562
+ png_debug(1, "in png_write_find_filter");
2563
+
2564
+ /* Find out how many bytes offset each pixel is */
2565
+ bpp = (row_info->pixel_depth + 7) >> 3;
2566
+
2567
+ row_buf = png_ptr->row_buf;
2568
+ mins = PNG_SIZE_MAX - 256/* so we can detect potential overflow of the
2569
+ running sum */;
2570
+
2571
+ /* The prediction method we use is to find which method provides the
2572
+ * smallest value when summing the absolute values of the distances
2573
+ * from zero, using anything >= 128 as negative numbers. This is known
2574
+ * as the "minimum sum of absolute differences" heuristic. Other
2575
+ * heuristics are the "weighted minimum sum of absolute differences"
2576
+ * (experimental and can in theory improve compression), and the "zlib
2577
+ * predictive" method (not implemented yet), which does test compressions
2578
+ * of lines using different filter methods, and then chooses the
2579
+ * (series of) filter(s) that give minimum compressed data size (VERY
2580
+ * computationally expensive).
2581
+ *
2582
+ * GRR 980525: consider also
2583
+ *
2584
+ * (1) minimum sum of absolute differences from running average (i.e.,
2585
+ * keep running sum of non-absolute differences & count of bytes)
2586
+ * [track dispersion, too? restart average if dispersion too large?]
2587
+ *
2588
+ * (1b) minimum sum of absolute differences from sliding average, probably
2589
+ * with window size <= deflate window (usually 32K)
2590
+ *
2591
+ * (2) minimum sum of squared differences from zero or running average
2592
+ * (i.e., ~ root-mean-square approach)
2593
+ */
2594
+
2595
+
2596
+ /* We don't need to test the 'no filter' case if this is the only filter
2597
+ * that has been chosen, as it doesn't actually do anything to the data.
2598
+ */
2599
+ best_row = png_ptr->row_buf;
2600
+
2601
+ if (PNG_SIZE_MAX/128 <= row_bytes)
2602
+ {
2603
+ /* Overflow can occur in the calculation, just select the lowest set
2604
+ * filter.
2605
+ */
2606
+ filter_to_do &= 0U-filter_to_do;
2607
+ }
2608
+ else if ((filter_to_do & PNG_FILTER_NONE) != 0 &&
2609
+ filter_to_do != PNG_FILTER_NONE)
2610
+ {
2611
+ /* Overflow not possible and multiple filters in the list, including the
2612
+ * 'none' filter.
2613
+ */
2614
+ png_bytep rp;
2615
+ size_t sum = 0;
2616
+ size_t i;
2617
+ unsigned int v;
2618
+
2619
+ {
2620
+ for (i = 0, rp = row_buf + 1; i < row_bytes; i++, rp++)
2621
+ {
2622
+ v = *rp;
2623
+ #ifdef PNG_USE_ABS
2624
+ sum += 128 - abs((int)v - 128);
2625
+ #else
2626
+ sum += (v < 128) ? v : 256 - v;
2627
+ #endif
2628
+ }
2629
+ }
2630
+
2631
+ mins = sum;
2632
+ }
2633
+
2634
+ /* Sub filter */
2635
+ if (filter_to_do == PNG_FILTER_SUB)
2636
+ /* It's the only filter so no testing is needed */
2637
+ {
2638
+ png_setup_sub_row_only(png_ptr, bpp, row_bytes);
2639
+ best_row = png_ptr->try_row;
2640
+ }
2641
+
2642
+ else if ((filter_to_do & PNG_FILTER_SUB) != 0)
2643
+ {
2644
+ size_t sum;
2645
+ size_t lmins = mins;
2646
+
2647
+ sum = png_setup_sub_row(png_ptr, bpp, row_bytes, lmins);
2648
+
2649
+ if (sum < mins)
2650
+ {
2651
+ mins = sum;
2652
+ best_row = png_ptr->try_row;
2653
+ if (png_ptr->tst_row != NULL)
2654
+ {
2655
+ png_ptr->try_row = png_ptr->tst_row;
2656
+ png_ptr->tst_row = best_row;
2657
+ }
2658
+ }
2659
+ }
2660
+
2661
+ /* Up filter */
2662
+ if (filter_to_do == PNG_FILTER_UP)
2663
+ {
2664
+ png_setup_up_row_only(png_ptr, row_bytes);
2665
+ best_row = png_ptr->try_row;
2666
+ }
2667
+
2668
+ else if ((filter_to_do & PNG_FILTER_UP) != 0)
2669
+ {
2670
+ size_t sum;
2671
+ size_t lmins = mins;
2672
+
2673
+ sum = png_setup_up_row(png_ptr, row_bytes, lmins);
2674
+
2675
+ if (sum < mins)
2676
+ {
2677
+ mins = sum;
2678
+ best_row = png_ptr->try_row;
2679
+ if (png_ptr->tst_row != NULL)
2680
+ {
2681
+ png_ptr->try_row = png_ptr->tst_row;
2682
+ png_ptr->tst_row = best_row;
2683
+ }
2684
+ }
2685
+ }
2686
+
2687
+ /* Avg filter */
2688
+ if (filter_to_do == PNG_FILTER_AVG)
2689
+ {
2690
+ png_setup_avg_row_only(png_ptr, bpp, row_bytes);
2691
+ best_row = png_ptr->try_row;
2692
+ }
2693
+
2694
+ else if ((filter_to_do & PNG_FILTER_AVG) != 0)
2695
+ {
2696
+ size_t sum;
2697
+ size_t lmins = mins;
2698
+
2699
+ sum= png_setup_avg_row(png_ptr, bpp, row_bytes, lmins);
2700
+
2701
+ if (sum < mins)
2702
+ {
2703
+ mins = sum;
2704
+ best_row = png_ptr->try_row;
2705
+ if (png_ptr->tst_row != NULL)
2706
+ {
2707
+ png_ptr->try_row = png_ptr->tst_row;
2708
+ png_ptr->tst_row = best_row;
2709
+ }
2710
+ }
2711
+ }
2712
+
2713
+ /* Paeth filter */
2714
+ if (filter_to_do == PNG_FILTER_PAETH)
2715
+ {
2716
+ png_setup_paeth_row_only(png_ptr, bpp, row_bytes);
2717
+ best_row = png_ptr->try_row;
2718
+ }
2719
+
2720
+ else if ((filter_to_do & PNG_FILTER_PAETH) != 0)
2721
+ {
2722
+ size_t sum;
2723
+ size_t lmins = mins;
2724
+
2725
+ sum = png_setup_paeth_row(png_ptr, bpp, row_bytes, lmins);
2726
+
2727
+ if (sum < mins)
2728
+ {
2729
+ best_row = png_ptr->try_row;
2730
+ if (png_ptr->tst_row != NULL)
2731
+ {
2732
+ png_ptr->try_row = png_ptr->tst_row;
2733
+ png_ptr->tst_row = best_row;
2734
+ }
2735
+ }
2736
+ }
2737
+
2738
+ /* Do the actual writing of the filtered row data from the chosen filter. */
2739
+ png_write_filtered_row(png_ptr, best_row, row_info->rowbytes+1);
2740
+
2741
+ #endif /* WRITE_FILTER */
2742
+ }
2743
+
2744
+
2745
+ /* Do the actual writing of a previously filtered row. */
2746
+ static void
2747
+ png_write_filtered_row(png_structrp png_ptr, png_bytep filtered_row,
2748
+ size_t full_row_length/*includes filter byte*/)
2749
+ {
2750
+ png_debug(1, "in png_write_filtered_row");
2751
+
2752
+ png_debug1(2, "filter = %d", filtered_row[0]);
2753
+
2754
+ png_compress_IDAT(png_ptr, filtered_row, full_row_length, Z_NO_FLUSH);
2755
+
2756
+ #ifdef PNG_WRITE_FILTER_SUPPORTED
2757
+ /* Swap the current and previous rows */
2758
+ if (png_ptr->prev_row != NULL)
2759
+ {
2760
+ png_bytep tptr;
2761
+
2762
+ tptr = png_ptr->prev_row;
2763
+ png_ptr->prev_row = png_ptr->row_buf;
2764
+ png_ptr->row_buf = tptr;
2765
+ }
2766
+ #endif /* WRITE_FILTER */
2767
+
2768
+ /* Finish row - updates counters and flushes zlib if last row */
2769
+ png_write_finish_row(png_ptr);
2770
+
2771
+ #ifdef PNG_WRITE_FLUSH_SUPPORTED
2772
+ png_ptr->flush_rows++;
2773
+
2774
+ if (png_ptr->flush_dist > 0 &&
2775
+ png_ptr->flush_rows >= png_ptr->flush_dist)
2776
+ {
2777
+ png_write_flush(png_ptr);
2778
+ }
2779
+ #endif /* WRITE_FLUSH */
2780
+ }
2781
+ #endif /* WRITE */