@basemaps/lambda-tiler 6.20.0 → 6.21.1

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 (618) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/build/__test__/tile.set.cache.test.js +4 -10
  3. package/build/cli/validate.js +2 -1
  4. package/build/index.d.ts.map +1 -1
  5. package/build/index.js +8 -1
  6. package/build/routes/__test__/attribution.test.js +3 -13
  7. package/build/routes/attribution.d.ts.map +1 -1
  8. package/build/routes/attribution.js +7 -20
  9. package/build/routes/tile.wmts.js +2 -2
  10. package/build/source.tracer.d.ts +17 -0
  11. package/build/source.tracer.d.ts.map +1 -0
  12. package/build/source.tracer.js +22 -0
  13. package/build/tile.set.cache.js +3 -3
  14. package/build/tile.set.d.ts +0 -16
  15. package/build/tile.set.d.ts.map +1 -1
  16. package/build/tile.set.js +1 -20
  17. package/build/tile.set.raster.d.ts +7 -4
  18. package/build/tile.set.raster.d.ts.map +1 -1
  19. package/build/tile.set.raster.js +14 -5
  20. package/build/tile.set.vector.d.ts +10 -4
  21. package/build/tile.set.vector.d.ts.map +1 -1
  22. package/build/tile.set.vector.js +17 -7
  23. package/bundle.sh +2 -2
  24. package/package.json +11 -11
  25. package/scripts/create.deployment.package.mjs +34 -0
  26. package/src/__test__/tile.set.cache.test.ts +4 -12
  27. package/src/cli/validate.ts +2 -1
  28. package/src/index.ts +11 -1
  29. package/src/routes/__test__/attribution.test.ts +3 -13
  30. package/src/routes/attribution.ts +6 -17
  31. package/src/routes/tile.wmts.ts +2 -2
  32. package/src/source.tracer.ts +34 -0
  33. package/src/tile.set.cache.ts +3 -3
  34. package/src/tile.set.raster.ts +28 -6
  35. package/src/tile.set.ts +0 -40
  36. package/src/tile.set.vector.ts +25 -6
  37. package/tsconfig.tsbuildinfo +1 -1
  38. package/dist/index.js +0 -30702
  39. package/dist/node_modules/ansi-regex/index.js +0 -4
  40. package/dist/node_modules/ansi-regex/license +0 -21
  41. package/dist/node_modules/ansi-regex/package.json +0 -108
  42. package/dist/node_modules/ansi-regex/readme.md +0 -39
  43. package/dist/node_modules/aproba/LICENSE +0 -14
  44. package/dist/node_modules/aproba/README.md +0 -94
  45. package/dist/node_modules/aproba/index.js +0 -105
  46. package/dist/node_modules/aproba/package.json +0 -62
  47. package/dist/node_modules/are-we-there-yet/CHANGES.md +0 -37
  48. package/dist/node_modules/are-we-there-yet/LICENSE +0 -5
  49. package/dist/node_modules/are-we-there-yet/README.md +0 -195
  50. package/dist/node_modules/are-we-there-yet/index.js +0 -4
  51. package/dist/node_modules/are-we-there-yet/package.json +0 -63
  52. package/dist/node_modules/are-we-there-yet/tracker-base.js +0 -11
  53. package/dist/node_modules/are-we-there-yet/tracker-group.js +0 -107
  54. package/dist/node_modules/are-we-there-yet/tracker-stream.js +0 -36
  55. package/dist/node_modules/are-we-there-yet/tracker.js +0 -30
  56. package/dist/node_modules/base64-js/LICENSE +0 -21
  57. package/dist/node_modules/base64-js/README.md +0 -34
  58. package/dist/node_modules/base64-js/base64js.min.js +0 -1
  59. package/dist/node_modules/base64-js/index.d.ts +0 -3
  60. package/dist/node_modules/base64-js/index.js +0 -150
  61. package/dist/node_modules/base64-js/package.json +0 -75
  62. package/dist/node_modules/bl/.travis.yml +0 -17
  63. package/dist/node_modules/bl/BufferList.js +0 -396
  64. package/dist/node_modules/bl/LICENSE.md +0 -13
  65. package/dist/node_modules/bl/README.md +0 -247
  66. package/dist/node_modules/bl/bl.js +0 -84
  67. package/dist/node_modules/bl/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  68. package/dist/node_modules/bl/node_modules/readable-stream/GOVERNANCE.md +0 -136
  69. package/dist/node_modules/bl/node_modules/readable-stream/LICENSE +0 -47
  70. package/dist/node_modules/bl/node_modules/readable-stream/README.md +0 -106
  71. package/dist/node_modules/bl/node_modules/readable-stream/errors-browser.js +0 -127
  72. package/dist/node_modules/bl/node_modules/readable-stream/errors.js +0 -116
  73. package/dist/node_modules/bl/node_modules/readable-stream/experimentalWarning.js +0 -17
  74. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_duplex.js +0 -139
  75. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_passthrough.js +0 -39
  76. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_readable.js +0 -1124
  77. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_transform.js +0 -201
  78. package/dist/node_modules/bl/node_modules/readable-stream/lib/_stream_writable.js +0 -697
  79. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -207
  80. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -210
  81. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -105
  82. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -104
  83. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  84. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/from.js +0 -64
  85. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -97
  86. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/state.js +0 -27
  87. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  88. package/dist/node_modules/bl/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  89. package/dist/node_modules/bl/node_modules/readable-stream/package.json +0 -97
  90. package/dist/node_modules/bl/node_modules/readable-stream/readable-browser.js +0 -9
  91. package/dist/node_modules/bl/node_modules/readable-stream/readable.js +0 -16
  92. package/dist/node_modules/bl/package.json +0 -69
  93. package/dist/node_modules/bl/test/convert.js +0 -21
  94. package/dist/node_modules/bl/test/indexOf.js +0 -492
  95. package/dist/node_modules/bl/test/isBufferList.js +0 -32
  96. package/dist/node_modules/bl/test/test.js +0 -869
  97. package/dist/node_modules/buffer/AUTHORS.md +0 -70
  98. package/dist/node_modules/buffer/LICENSE +0 -21
  99. package/dist/node_modules/buffer/README.md +0 -410
  100. package/dist/node_modules/buffer/index.d.ts +0 -186
  101. package/dist/node_modules/buffer/index.js +0 -1817
  102. package/dist/node_modules/buffer/package.json +0 -127
  103. package/dist/node_modules/chownr/LICENSE +0 -15
  104. package/dist/node_modules/chownr/README.md +0 -3
  105. package/dist/node_modules/chownr/chownr.js +0 -167
  106. package/dist/node_modules/chownr/package.json +0 -62
  107. package/dist/node_modules/code-point-at/index.js +0 -32
  108. package/dist/node_modules/code-point-at/license +0 -21
  109. package/dist/node_modules/code-point-at/package.json +0 -70
  110. package/dist/node_modules/code-point-at/readme.md +0 -32
  111. package/dist/node_modules/color/LICENSE +0 -21
  112. package/dist/node_modules/color/README.md +0 -123
  113. package/dist/node_modules/color/index.js +0 -497
  114. package/dist/node_modules/color/package.json +0 -74
  115. package/dist/node_modules/color-convert/CHANGELOG.md +0 -54
  116. package/dist/node_modules/color-convert/LICENSE +0 -21
  117. package/dist/node_modules/color-convert/README.md +0 -68
  118. package/dist/node_modules/color-convert/conversions.js +0 -839
  119. package/dist/node_modules/color-convert/index.js +0 -81
  120. package/dist/node_modules/color-convert/package.json +0 -83
  121. package/dist/node_modules/color-convert/route.js +0 -97
  122. package/dist/node_modules/color-name/LICENSE +0 -8
  123. package/dist/node_modules/color-name/README.md +0 -11
  124. package/dist/node_modules/color-name/index.js +0 -152
  125. package/dist/node_modules/color-name/package.json +0 -57
  126. package/dist/node_modules/color-string/LICENSE +0 -21
  127. package/dist/node_modules/color-string/README.md +0 -62
  128. package/dist/node_modules/color-string/index.js +0 -242
  129. package/dist/node_modules/color-string/package.json +0 -81
  130. package/dist/node_modules/console-control-strings/LICENSE +0 -13
  131. package/dist/node_modules/console-control-strings/README.md +0 -145
  132. package/dist/node_modules/console-control-strings/README.md~ +0 -140
  133. package/dist/node_modules/console-control-strings/index.js +0 -125
  134. package/dist/node_modules/console-control-strings/package.json +0 -61
  135. package/dist/node_modules/core-util-is/LICENSE +0 -19
  136. package/dist/node_modules/core-util-is/README.md +0 -3
  137. package/dist/node_modules/core-util-is/lib/util.js +0 -107
  138. package/dist/node_modules/core-util-is/package.json +0 -68
  139. package/dist/node_modules/decompress-response/index.d.ts +0 -22
  140. package/dist/node_modules/decompress-response/index.js +0 -58
  141. package/dist/node_modules/decompress-response/license +0 -9
  142. package/dist/node_modules/decompress-response/package.json +0 -88
  143. package/dist/node_modules/decompress-response/readme.md +0 -48
  144. package/dist/node_modules/deep-extend/CHANGELOG.md +0 -46
  145. package/dist/node_modules/deep-extend/LICENSE +0 -20
  146. package/dist/node_modules/deep-extend/README.md +0 -91
  147. package/dist/node_modules/deep-extend/index.js +0 -1
  148. package/dist/node_modules/deep-extend/lib/deep-extend.js +0 -150
  149. package/dist/node_modules/deep-extend/package.json +0 -92
  150. package/dist/node_modules/delegates/History.md +0 -22
  151. package/dist/node_modules/delegates/License +0 -20
  152. package/dist/node_modules/delegates/Makefile +0 -8
  153. package/dist/node_modules/delegates/Readme.md +0 -94
  154. package/dist/node_modules/delegates/index.js +0 -121
  155. package/dist/node_modules/delegates/package.json +0 -48
  156. package/dist/node_modules/delegates/test/index.js +0 -94
  157. package/dist/node_modules/detect-libc/LICENSE +0 -201
  158. package/dist/node_modules/detect-libc/README.md +0 -78
  159. package/dist/node_modules/detect-libc/bin/detect-libc.js +0 -18
  160. package/dist/node_modules/detect-libc/lib/detect-libc.js +0 -92
  161. package/dist/node_modules/detect-libc/package.json +0 -70
  162. package/dist/node_modules/end-of-stream/LICENSE +0 -21
  163. package/dist/node_modules/end-of-stream/README.md +0 -54
  164. package/dist/node_modules/end-of-stream/index.js +0 -94
  165. package/dist/node_modules/end-of-stream/package.json +0 -66
  166. package/dist/node_modules/expand-template/.travis.yml +0 -6
  167. package/dist/node_modules/expand-template/LICENSE +0 -21
  168. package/dist/node_modules/expand-template/README.md +0 -43
  169. package/dist/node_modules/expand-template/index.js +0 -26
  170. package/dist/node_modules/expand-template/package.json +0 -60
  171. package/dist/node_modules/expand-template/test.js +0 -67
  172. package/dist/node_modules/fs-constants/LICENSE +0 -21
  173. package/dist/node_modules/fs-constants/README.md +0 -26
  174. package/dist/node_modules/fs-constants/browser.js +0 -1
  175. package/dist/node_modules/fs-constants/index.js +0 -1
  176. package/dist/node_modules/fs-constants/package.json +0 -47
  177. package/dist/node_modules/gauge/CHANGELOG.md +0 -160
  178. package/dist/node_modules/gauge/LICENSE +0 -13
  179. package/dist/node_modules/gauge/README.md +0 -399
  180. package/dist/node_modules/gauge/base-theme.js +0 -14
  181. package/dist/node_modules/gauge/error.js +0 -24
  182. package/dist/node_modules/gauge/has-color.js +0 -12
  183. package/dist/node_modules/gauge/index.js +0 -233
  184. package/dist/node_modules/gauge/package.json +0 -91
  185. package/dist/node_modules/gauge/plumbing.js +0 -48
  186. package/dist/node_modules/gauge/process.js +0 -3
  187. package/dist/node_modules/gauge/progress-bar.js +0 -35
  188. package/dist/node_modules/gauge/render-template.js +0 -181
  189. package/dist/node_modules/gauge/set-immediate.js +0 -7
  190. package/dist/node_modules/gauge/set-interval.js +0 -3
  191. package/dist/node_modules/gauge/spin.js +0 -5
  192. package/dist/node_modules/gauge/template-item.js +0 -73
  193. package/dist/node_modules/gauge/theme-set.js +0 -115
  194. package/dist/node_modules/gauge/themes.js +0 -54
  195. package/dist/node_modules/gauge/wide-truncate.js +0 -25
  196. package/dist/node_modules/github-from-package/.travis.yml +0 -4
  197. package/dist/node_modules/github-from-package/LICENSE +0 -18
  198. package/dist/node_modules/github-from-package/example/package.json +0 -8
  199. package/dist/node_modules/github-from-package/example/url.js +0 -3
  200. package/dist/node_modules/github-from-package/index.js +0 -17
  201. package/dist/node_modules/github-from-package/package.json +0 -58
  202. package/dist/node_modules/github-from-package/readme.markdown +0 -53
  203. package/dist/node_modules/github-from-package/test/a.json +0 -8
  204. package/dist/node_modules/github-from-package/test/b.json +0 -5
  205. package/dist/node_modules/github-from-package/test/c.json +0 -5
  206. package/dist/node_modules/github-from-package/test/d.json +0 -7
  207. package/dist/node_modules/github-from-package/test/e.json +0 -5
  208. package/dist/node_modules/github-from-package/test/url.js +0 -19
  209. package/dist/node_modules/has-unicode/LICENSE +0 -14
  210. package/dist/node_modules/has-unicode/README.md +0 -43
  211. package/dist/node_modules/has-unicode/index.js +0 -16
  212. package/dist/node_modules/has-unicode/package.json +0 -58
  213. package/dist/node_modules/ieee754/LICENSE +0 -11
  214. package/dist/node_modules/ieee754/README.md +0 -51
  215. package/dist/node_modules/ieee754/index.d.ts +0 -10
  216. package/dist/node_modules/ieee754/index.js +0 -85
  217. package/dist/node_modules/ieee754/package.json +0 -84
  218. package/dist/node_modules/inherits/LICENSE +0 -16
  219. package/dist/node_modules/inherits/README.md +0 -42
  220. package/dist/node_modules/inherits/inherits.js +0 -9
  221. package/dist/node_modules/inherits/inherits_browser.js +0 -27
  222. package/dist/node_modules/inherits/package.json +0 -65
  223. package/dist/node_modules/ini/LICENSE +0 -15
  224. package/dist/node_modules/ini/README.md +0 -102
  225. package/dist/node_modules/ini/ini.js +0 -206
  226. package/dist/node_modules/ini/package.json +0 -66
  227. package/dist/node_modules/is-arrayish/LICENSE +0 -21
  228. package/dist/node_modules/is-arrayish/README.md +0 -16
  229. package/dist/node_modules/is-arrayish/index.js +0 -9
  230. package/dist/node_modules/is-arrayish/package.json +0 -77
  231. package/dist/node_modules/is-arrayish/yarn-error.log +0 -1443
  232. package/dist/node_modules/is-fullwidth-code-point/index.js +0 -46
  233. package/dist/node_modules/is-fullwidth-code-point/license +0 -21
  234. package/dist/node_modules/is-fullwidth-code-point/package.json +0 -77
  235. package/dist/node_modules/is-fullwidth-code-point/readme.md +0 -39
  236. package/dist/node_modules/isarray/.travis.yml +0 -4
  237. package/dist/node_modules/isarray/Makefile +0 -6
  238. package/dist/node_modules/isarray/README.md +0 -60
  239. package/dist/node_modules/isarray/component.json +0 -19
  240. package/dist/node_modules/isarray/index.js +0 -5
  241. package/dist/node_modules/isarray/package.json +0 -73
  242. package/dist/node_modules/isarray/test.js +0 -20
  243. package/dist/node_modules/lru-cache/LICENSE +0 -15
  244. package/dist/node_modules/lru-cache/README.md +0 -166
  245. package/dist/node_modules/lru-cache/index.js +0 -334
  246. package/dist/node_modules/lru-cache/package.json +0 -69
  247. package/dist/node_modules/mimic-response/index.d.ts +0 -17
  248. package/dist/node_modules/mimic-response/index.js +0 -77
  249. package/dist/node_modules/mimic-response/license +0 -9
  250. package/dist/node_modules/mimic-response/package.json +0 -74
  251. package/dist/node_modules/mimic-response/readme.md +0 -78
  252. package/dist/node_modules/minimist/.travis.yml +0 -8
  253. package/dist/node_modules/minimist/LICENSE +0 -18
  254. package/dist/node_modules/minimist/example/parse.js +0 -2
  255. package/dist/node_modules/minimist/index.js +0 -245
  256. package/dist/node_modules/minimist/package.json +0 -74
  257. package/dist/node_modules/minimist/readme.markdown +0 -95
  258. package/dist/node_modules/minimist/test/all_bool.js +0 -32
  259. package/dist/node_modules/minimist/test/bool.js +0 -178
  260. package/dist/node_modules/minimist/test/dash.js +0 -31
  261. package/dist/node_modules/minimist/test/default_bool.js +0 -35
  262. package/dist/node_modules/minimist/test/dotted.js +0 -22
  263. package/dist/node_modules/minimist/test/kv_short.js +0 -16
  264. package/dist/node_modules/minimist/test/long.js +0 -31
  265. package/dist/node_modules/minimist/test/num.js +0 -36
  266. package/dist/node_modules/minimist/test/parse.js +0 -197
  267. package/dist/node_modules/minimist/test/parse_modified.js +0 -9
  268. package/dist/node_modules/minimist/test/proto.js +0 -44
  269. package/dist/node_modules/minimist/test/short.js +0 -67
  270. package/dist/node_modules/minimist/test/stop_early.js +0 -15
  271. package/dist/node_modules/minimist/test/unknown.js +0 -102
  272. package/dist/node_modules/minimist/test/whitespace.js +0 -8
  273. package/dist/node_modules/mkdirp-classic/LICENSE +0 -21
  274. package/dist/node_modules/mkdirp-classic/README.md +0 -18
  275. package/dist/node_modules/mkdirp-classic/index.js +0 -98
  276. package/dist/node_modules/mkdirp-classic/package.json +0 -47
  277. package/dist/node_modules/napi-build-utils/LICENSE +0 -21
  278. package/dist/node_modules/napi-build-utils/README.md +0 -48
  279. package/dist/node_modules/napi-build-utils/index.js +0 -213
  280. package/dist/node_modules/napi-build-utils/index.md +0 -81
  281. package/dist/node_modules/napi-build-utils/package.json +0 -68
  282. package/dist/node_modules/node-abi/.circleci/config.yml +0 -63
  283. package/dist/node_modules/node-abi/.github/workflows/update-abi.yml +0 -41
  284. package/dist/node_modules/node-abi/.releaserc.json +0 -9
  285. package/dist/node_modules/node-abi/CODE_OF_CONDUCT.md +0 -73
  286. package/dist/node_modules/node-abi/CONTRIBUTING.md +0 -53
  287. package/dist/node_modules/node-abi/LICENSE +0 -21
  288. package/dist/node_modules/node-abi/README.md +0 -50
  289. package/dist/node_modules/node-abi/abi_registry.json +0 -179
  290. package/dist/node_modules/node-abi/index.js +0 -179
  291. package/dist/node_modules/node-abi/package.json +0 -66
  292. package/dist/node_modules/node-abi/scripts/update-abi-registry.js +0 -119
  293. package/dist/node_modules/node-abi/test/index.js +0 -166
  294. package/dist/node_modules/node-addon-api/LICENSE.md +0 -13
  295. package/dist/node_modules/node-addon-api/README.md +0 -293
  296. package/dist/node_modules/node-addon-api/common.gypi +0 -21
  297. package/dist/node_modules/node-addon-api/except.gypi +0 -25
  298. package/dist/node_modules/node-addon-api/index.js +0 -11
  299. package/dist/node_modules/node-addon-api/napi-inl.deprecated.h +0 -192
  300. package/dist/node_modules/node-addon-api/napi-inl.h +0 -6209
  301. package/dist/node_modules/node-addon-api/napi.h +0 -2983
  302. package/dist/node_modules/node-addon-api/node_api.gyp +0 -9
  303. package/dist/node_modules/node-addon-api/noexcept.gypi +0 -26
  304. package/dist/node_modules/node-addon-api/nothing.c +0 -0
  305. package/dist/node_modules/node-addon-api/package-support.json +0 -21
  306. package/dist/node_modules/node-addon-api/package.json +0 -422
  307. package/dist/node_modules/node-addon-api/tools/README.md +0 -73
  308. package/dist/node_modules/node-addon-api/tools/check-napi.js +0 -100
  309. package/dist/node_modules/node-addon-api/tools/clang-format.js +0 -68
  310. package/dist/node_modules/node-addon-api/tools/conversion.js +0 -309
  311. package/dist/node_modules/node-addon-api/tools/eslint-format.js +0 -71
  312. package/dist/node_modules/npmlog/CHANGELOG.md +0 -49
  313. package/dist/node_modules/npmlog/LICENSE +0 -15
  314. package/dist/node_modules/npmlog/README.md +0 -216
  315. package/dist/node_modules/npmlog/log.js +0 -309
  316. package/dist/node_modules/npmlog/package.json +0 -61
  317. package/dist/node_modules/number-is-nan/index.js +0 -4
  318. package/dist/node_modules/number-is-nan/license +0 -21
  319. package/dist/node_modules/number-is-nan/package.json +0 -67
  320. package/dist/node_modules/number-is-nan/readme.md +0 -28
  321. package/dist/node_modules/object-assign/index.js +0 -90
  322. package/dist/node_modules/object-assign/license +0 -21
  323. package/dist/node_modules/object-assign/package.json +0 -74
  324. package/dist/node_modules/object-assign/readme.md +0 -61
  325. package/dist/node_modules/once/LICENSE +0 -15
  326. package/dist/node_modules/once/README.md +0 -79
  327. package/dist/node_modules/once/once.js +0 -42
  328. package/dist/node_modules/once/package.json +0 -68
  329. package/dist/node_modules/prebuild-install/CHANGELOG.md +0 -98
  330. package/dist/node_modules/prebuild-install/CONTRIBUTING.md +0 -6
  331. package/dist/node_modules/prebuild-install/LICENSE +0 -21
  332. package/dist/node_modules/prebuild-install/README.md +0 -159
  333. package/dist/node_modules/prebuild-install/asset.js +0 -44
  334. package/dist/node_modules/prebuild-install/bin.js +0 -78
  335. package/dist/node_modules/prebuild-install/download.js +0 -142
  336. package/dist/node_modules/prebuild-install/error.js +0 -14
  337. package/dist/node_modules/prebuild-install/help.txt +0 -16
  338. package/dist/node_modules/prebuild-install/index.js +0 -1
  339. package/dist/node_modules/prebuild-install/log.js +0 -25
  340. package/dist/node_modules/prebuild-install/node_modules/detect-libc/LICENSE +0 -201
  341. package/dist/node_modules/prebuild-install/node_modules/detect-libc/README.md +0 -160
  342. package/dist/node_modules/prebuild-install/node_modules/detect-libc/index.d.ts +0 -11
  343. package/dist/node_modules/prebuild-install/node_modules/detect-libc/lib/detect-libc.js +0 -178
  344. package/dist/node_modules/prebuild-install/node_modules/detect-libc/lib/process.js +0 -16
  345. package/dist/node_modules/prebuild-install/node_modules/detect-libc/package.json +0 -71
  346. package/dist/node_modules/prebuild-install/package.json +0 -126
  347. package/dist/node_modules/prebuild-install/proxy.js +0 -35
  348. package/dist/node_modules/prebuild-install/rc.js +0 -60
  349. package/dist/node_modules/prebuild-install/util.js +0 -143
  350. package/dist/node_modules/process-nextick-args/index.js +0 -45
  351. package/dist/node_modules/process-nextick-args/license.md +0 -19
  352. package/dist/node_modules/process-nextick-args/package.json +0 -50
  353. package/dist/node_modules/process-nextick-args/readme.md +0 -18
  354. package/dist/node_modules/pump/.travis.yml +0 -5
  355. package/dist/node_modules/pump/LICENSE +0 -21
  356. package/dist/node_modules/pump/README.md +0 -65
  357. package/dist/node_modules/pump/index.js +0 -82
  358. package/dist/node_modules/pump/package.json +0 -60
  359. package/dist/node_modules/pump/test-browser.js +0 -66
  360. package/dist/node_modules/pump/test-node.js +0 -53
  361. package/dist/node_modules/rc/LICENSE.APACHE2 +0 -15
  362. package/dist/node_modules/rc/LICENSE.BSD +0 -26
  363. package/dist/node_modules/rc/LICENSE.MIT +0 -24
  364. package/dist/node_modules/rc/README.md +0 -227
  365. package/dist/node_modules/rc/browser.js +0 -7
  366. package/dist/node_modules/rc/cli.js +0 -4
  367. package/dist/node_modules/rc/index.js +0 -53
  368. package/dist/node_modules/rc/lib/utils.js +0 -104
  369. package/dist/node_modules/rc/package.json +0 -64
  370. package/dist/node_modules/rc/test/ini.js +0 -16
  371. package/dist/node_modules/rc/test/nested-env-vars.js +0 -50
  372. package/dist/node_modules/rc/test/test.js +0 -59
  373. package/dist/node_modules/readable-stream/.travis.yml +0 -34
  374. package/dist/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  375. package/dist/node_modules/readable-stream/GOVERNANCE.md +0 -136
  376. package/dist/node_modules/readable-stream/LICENSE +0 -47
  377. package/dist/node_modules/readable-stream/README.md +0 -58
  378. package/dist/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  379. package/dist/node_modules/readable-stream/duplex-browser.js +0 -1
  380. package/dist/node_modules/readable-stream/duplex.js +0 -1
  381. package/dist/node_modules/readable-stream/lib/_stream_duplex.js +0 -131
  382. package/dist/node_modules/readable-stream/lib/_stream_passthrough.js +0 -47
  383. package/dist/node_modules/readable-stream/lib/_stream_readable.js +0 -1019
  384. package/dist/node_modules/readable-stream/lib/_stream_transform.js +0 -214
  385. package/dist/node_modules/readable-stream/lib/_stream_writable.js +0 -687
  386. package/dist/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -79
  387. package/dist/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -74
  388. package/dist/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  389. package/dist/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  390. package/dist/node_modules/readable-stream/package.json +0 -81
  391. package/dist/node_modules/readable-stream/passthrough.js +0 -1
  392. package/dist/node_modules/readable-stream/readable-browser.js +0 -7
  393. package/dist/node_modules/readable-stream/readable.js +0 -19
  394. package/dist/node_modules/readable-stream/transform.js +0 -1
  395. package/dist/node_modules/readable-stream/writable-browser.js +0 -1
  396. package/dist/node_modules/readable-stream/writable.js +0 -8
  397. package/dist/node_modules/safe-buffer/LICENSE +0 -21
  398. package/dist/node_modules/safe-buffer/README.md +0 -584
  399. package/dist/node_modules/safe-buffer/index.d.ts +0 -187
  400. package/dist/node_modules/safe-buffer/index.js +0 -62
  401. package/dist/node_modules/safe-buffer/package.json +0 -64
  402. package/dist/node_modules/semver/CHANGELOG.md +0 -111
  403. package/dist/node_modules/semver/LICENSE +0 -15
  404. package/dist/node_modules/semver/README.md +0 -566
  405. package/dist/node_modules/semver/bin/semver.js +0 -173
  406. package/dist/node_modules/semver/classes/comparator.js +0 -135
  407. package/dist/node_modules/semver/classes/index.js +0 -5
  408. package/dist/node_modules/semver/classes/range.js +0 -510
  409. package/dist/node_modules/semver/classes/semver.js +0 -287
  410. package/dist/node_modules/semver/functions/clean.js +0 -6
  411. package/dist/node_modules/semver/functions/cmp.js +0 -48
  412. package/dist/node_modules/semver/functions/coerce.js +0 -51
  413. package/dist/node_modules/semver/functions/compare-build.js +0 -7
  414. package/dist/node_modules/semver/functions/compare-loose.js +0 -3
  415. package/dist/node_modules/semver/functions/compare.js +0 -5
  416. package/dist/node_modules/semver/functions/diff.js +0 -23
  417. package/dist/node_modules/semver/functions/eq.js +0 -3
  418. package/dist/node_modules/semver/functions/gt.js +0 -3
  419. package/dist/node_modules/semver/functions/gte.js +0 -3
  420. package/dist/node_modules/semver/functions/inc.js +0 -15
  421. package/dist/node_modules/semver/functions/lt.js +0 -3
  422. package/dist/node_modules/semver/functions/lte.js +0 -3
  423. package/dist/node_modules/semver/functions/major.js +0 -3
  424. package/dist/node_modules/semver/functions/minor.js +0 -3
  425. package/dist/node_modules/semver/functions/neq.js +0 -3
  426. package/dist/node_modules/semver/functions/parse.js +0 -33
  427. package/dist/node_modules/semver/functions/patch.js +0 -3
  428. package/dist/node_modules/semver/functions/prerelease.js +0 -6
  429. package/dist/node_modules/semver/functions/rcompare.js +0 -3
  430. package/dist/node_modules/semver/functions/rsort.js +0 -3
  431. package/dist/node_modules/semver/functions/satisfies.js +0 -10
  432. package/dist/node_modules/semver/functions/sort.js +0 -3
  433. package/dist/node_modules/semver/functions/valid.js +0 -6
  434. package/dist/node_modules/semver/index.js +0 -48
  435. package/dist/node_modules/semver/internal/constants.js +0 -17
  436. package/dist/node_modules/semver/internal/debug.js +0 -9
  437. package/dist/node_modules/semver/internal/identifiers.js +0 -23
  438. package/dist/node_modules/semver/internal/parse-options.js +0 -11
  439. package/dist/node_modules/semver/internal/re.js +0 -182
  440. package/dist/node_modules/semver/package.json +0 -74
  441. package/dist/node_modules/semver/preload.js +0 -2
  442. package/dist/node_modules/semver/range.bnf +0 -16
  443. package/dist/node_modules/semver/ranges/gtr.js +0 -4
  444. package/dist/node_modules/semver/ranges/intersects.js +0 -7
  445. package/dist/node_modules/semver/ranges/ltr.js +0 -4
  446. package/dist/node_modules/semver/ranges/max-satisfying.js +0 -25
  447. package/dist/node_modules/semver/ranges/min-satisfying.js +0 -24
  448. package/dist/node_modules/semver/ranges/min-version.js +0 -60
  449. package/dist/node_modules/semver/ranges/outside.js +0 -80
  450. package/dist/node_modules/semver/ranges/simplify.js +0 -44
  451. package/dist/node_modules/semver/ranges/subset.js +0 -222
  452. package/dist/node_modules/semver/ranges/to-comparators.js +0 -8
  453. package/dist/node_modules/semver/ranges/valid.js +0 -11
  454. package/dist/node_modules/set-blocking/CHANGELOG.md +0 -26
  455. package/dist/node_modules/set-blocking/LICENSE.txt +0 -14
  456. package/dist/node_modules/set-blocking/README.md +0 -31
  457. package/dist/node_modules/set-blocking/index.js +0 -7
  458. package/dist/node_modules/set-blocking/package.json +0 -70
  459. package/dist/node_modules/sharp/LICENSE +0 -191
  460. package/dist/node_modules/sharp/README.md +0 -117
  461. package/dist/node_modules/sharp/binding.gyp +0 -233
  462. package/dist/node_modules/sharp/build/Release/sharp-linux-x64.node +0 -0
  463. package/dist/node_modules/sharp/install/can-compile.js +0 -11
  464. package/dist/node_modules/sharp/install/dll-copy.js +0 -37
  465. package/dist/node_modules/sharp/install/libvips.js +0 -176
  466. package/dist/node_modules/sharp/lib/agent.js +0 -40
  467. package/dist/node_modules/sharp/lib/channel.js +0 -171
  468. package/dist/node_modules/sharp/lib/colour.js +0 -171
  469. package/dist/node_modules/sharp/lib/composite.js +0 -178
  470. package/dist/node_modules/sharp/lib/constructor.js +0 -379
  471. package/dist/node_modules/sharp/lib/index.js +0 -13
  472. package/dist/node_modules/sharp/lib/input.js +0 -471
  473. package/dist/node_modules/sharp/lib/is.js +0 -143
  474. package/dist/node_modules/sharp/lib/libvips.js +0 -108
  475. package/dist/node_modules/sharp/lib/operation.js +0 -671
  476. package/dist/node_modules/sharp/lib/output.js +0 -1166
  477. package/dist/node_modules/sharp/lib/platform.js +0 -25
  478. package/dist/node_modules/sharp/lib/resize.js +0 -454
  479. package/dist/node_modules/sharp/lib/sharp.js +0 -31
  480. package/dist/node_modules/sharp/lib/utility.js +0 -180
  481. package/dist/node_modules/sharp/package.json +0 -436
  482. package/dist/node_modules/sharp/src/common.cc +0 -883
  483. package/dist/node_modules/sharp/src/common.h +0 -328
  484. package/dist/node_modules/sharp/src/libvips/cplusplus/VConnection.cpp +0 -152
  485. package/dist/node_modules/sharp/src/libvips/cplusplus/VError.cpp +0 -50
  486. package/dist/node_modules/sharp/src/libvips/cplusplus/VImage.cpp +0 -1505
  487. package/dist/node_modules/sharp/src/libvips/cplusplus/VInterpolate.cpp +0 -63
  488. package/dist/node_modules/sharp/src/libvips/cplusplus/vips-operators.cpp +0 -3710
  489. package/dist/node_modules/sharp/src/metadata.cc +0 -285
  490. package/dist/node_modules/sharp/src/metadata.h +0 -91
  491. package/dist/node_modules/sharp/src/operations.cc +0 -311
  492. package/dist/node_modules/sharp/src/operations.h +0 -113
  493. package/dist/node_modules/sharp/src/pipeline.cc +0 -1584
  494. package/dist/node_modules/sharp/src/pipeline.h +0 -345
  495. package/dist/node_modules/sharp/src/sharp.cc +0 -52
  496. package/dist/node_modules/sharp/src/stats.cc +0 -193
  497. package/dist/node_modules/sharp/src/stats.h +0 -70
  498. package/dist/node_modules/sharp/src/utilities.cc +0 -243
  499. package/dist/node_modules/sharp/src/utilities.h +0 -29
  500. package/dist/node_modules/sharp/vendor/8.11.3/linux-x64/THIRD-PARTY-NOTICES.md +0 -41
  501. package/dist/node_modules/sharp/vendor/8.11.3/linux-x64/lib/libvips-cpp.so.42 +0 -0
  502. package/dist/node_modules/sharp/vendor/8.11.3/linux-x64/platform.json +0 -1
  503. package/dist/node_modules/sharp/vendor/8.11.3/linux-x64/versions.json +0 -30
  504. package/dist/node_modules/signal-exit/LICENSE.txt +0 -16
  505. package/dist/node_modules/signal-exit/README.md +0 -39
  506. package/dist/node_modules/signal-exit/index.js +0 -200
  507. package/dist/node_modules/signal-exit/package.json +0 -66
  508. package/dist/node_modules/signal-exit/signals.js +0 -53
  509. package/dist/node_modules/simple-concat/.travis.yml +0 -3
  510. package/dist/node_modules/simple-concat/LICENSE +0 -20
  511. package/dist/node_modules/simple-concat/README.md +0 -44
  512. package/dist/node_modules/simple-concat/index.js +0 -15
  513. package/dist/node_modules/simple-concat/package.json +0 -72
  514. package/dist/node_modules/simple-concat/test/basic.js +0 -41
  515. package/dist/node_modules/simple-get/.github/dependabot.yml +0 -15
  516. package/dist/node_modules/simple-get/.github/workflows/ci.yml +0 -23
  517. package/dist/node_modules/simple-get/LICENSE +0 -20
  518. package/dist/node_modules/simple-get/README.md +0 -333
  519. package/dist/node_modules/simple-get/index.js +0 -108
  520. package/dist/node_modules/simple-get/package.json +0 -93
  521. package/dist/node_modules/simple-swizzle/LICENSE +0 -21
  522. package/dist/node_modules/simple-swizzle/README.md +0 -39
  523. package/dist/node_modules/simple-swizzle/index.js +0 -29
  524. package/dist/node_modules/simple-swizzle/package.json +0 -71
  525. package/dist/node_modules/string-width/index.js +0 -37
  526. package/dist/node_modules/string-width/license +0 -21
  527. package/dist/node_modules/string-width/package.json +0 -89
  528. package/dist/node_modules/string-width/readme.md +0 -42
  529. package/dist/node_modules/string_decoder/.travis.yml +0 -50
  530. package/dist/node_modules/string_decoder/LICENSE +0 -48
  531. package/dist/node_modules/string_decoder/README.md +0 -47
  532. package/dist/node_modules/string_decoder/lib/string_decoder.js +0 -296
  533. package/dist/node_modules/string_decoder/package.json +0 -61
  534. package/dist/node_modules/strip-ansi/index.js +0 -6
  535. package/dist/node_modules/strip-ansi/license +0 -21
  536. package/dist/node_modules/strip-ansi/package.json +0 -102
  537. package/dist/node_modules/strip-ansi/readme.md +0 -33
  538. package/dist/node_modules/strip-json-comments/index.js +0 -70
  539. package/dist/node_modules/strip-json-comments/license +0 -21
  540. package/dist/node_modules/strip-json-comments/package.json +0 -74
  541. package/dist/node_modules/strip-json-comments/readme.md +0 -64
  542. package/dist/node_modules/tar-fs/.travis.yml +0 -6
  543. package/dist/node_modules/tar-fs/LICENSE +0 -21
  544. package/dist/node_modules/tar-fs/README.md +0 -165
  545. package/dist/node_modules/tar-fs/index.js +0 -351
  546. package/dist/node_modules/tar-fs/package.json +0 -69
  547. package/dist/node_modules/tar-fs/test/fixtures/a/hello.txt +0 -1
  548. package/dist/node_modules/tar-fs/test/fixtures/b/a/test.txt +0 -1
  549. package/dist/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
  550. package/dist/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
  551. package/dist/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
  552. package/dist/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
  553. package/dist/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
  554. package/dist/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
  555. package/dist/node_modules/tar-fs/test/fixtures/e/file +0 -0
  556. package/dist/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
  557. package/dist/node_modules/tar-fs/test/index.js +0 -346
  558. package/dist/node_modules/tar-stream/LICENSE +0 -21
  559. package/dist/node_modules/tar-stream/README.md +0 -168
  560. package/dist/node_modules/tar-stream/extract.js +0 -257
  561. package/dist/node_modules/tar-stream/headers.js +0 -295
  562. package/dist/node_modules/tar-stream/index.js +0 -2
  563. package/dist/node_modules/tar-stream/node_modules/readable-stream/CONTRIBUTING.md +0 -38
  564. package/dist/node_modules/tar-stream/node_modules/readable-stream/GOVERNANCE.md +0 -136
  565. package/dist/node_modules/tar-stream/node_modules/readable-stream/LICENSE +0 -47
  566. package/dist/node_modules/tar-stream/node_modules/readable-stream/README.md +0 -106
  567. package/dist/node_modules/tar-stream/node_modules/readable-stream/errors-browser.js +0 -127
  568. package/dist/node_modules/tar-stream/node_modules/readable-stream/errors.js +0 -116
  569. package/dist/node_modules/tar-stream/node_modules/readable-stream/experimentalWarning.js +0 -17
  570. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_duplex.js +0 -139
  571. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_passthrough.js +0 -39
  572. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_readable.js +0 -1124
  573. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_transform.js +0 -201
  574. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/_stream_writable.js +0 -697
  575. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -207
  576. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -210
  577. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -105
  578. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -104
  579. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  580. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/from.js +0 -64
  581. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -97
  582. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/state.js +0 -27
  583. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  584. package/dist/node_modules/tar-stream/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  585. package/dist/node_modules/tar-stream/node_modules/readable-stream/package.json +0 -97
  586. package/dist/node_modules/tar-stream/node_modules/readable-stream/readable-browser.js +0 -9
  587. package/dist/node_modules/tar-stream/node_modules/readable-stream/readable.js +0 -16
  588. package/dist/node_modules/tar-stream/pack.js +0 -255
  589. package/dist/node_modules/tar-stream/package.json +0 -90
  590. package/dist/node_modules/tar-stream/sandbox.js +0 -11
  591. package/dist/node_modules/tunnel-agent/LICENSE +0 -55
  592. package/dist/node_modules/tunnel-agent/README.md +0 -4
  593. package/dist/node_modules/tunnel-agent/index.js +0 -244
  594. package/dist/node_modules/tunnel-agent/package.json +0 -56
  595. package/dist/node_modules/util-deprecate/History.md +0 -16
  596. package/dist/node_modules/util-deprecate/LICENSE +0 -24
  597. package/dist/node_modules/util-deprecate/README.md +0 -53
  598. package/dist/node_modules/util-deprecate/browser.js +0 -67
  599. package/dist/node_modules/util-deprecate/node.js +0 -6
  600. package/dist/node_modules/util-deprecate/package.json +0 -58
  601. package/dist/node_modules/wide-align/LICENSE +0 -14
  602. package/dist/node_modules/wide-align/README.md +0 -47
  603. package/dist/node_modules/wide-align/align.js +0 -65
  604. package/dist/node_modules/wide-align/package.json +0 -66
  605. package/dist/node_modules/wrappy/LICENSE +0 -15
  606. package/dist/node_modules/wrappy/README.md +0 -36
  607. package/dist/node_modules/wrappy/package.json +0 -58
  608. package/dist/node_modules/wrappy/wrappy.js +0 -33
  609. package/dist/node_modules/yallist/LICENSE +0 -15
  610. package/dist/node_modules/yallist/README.md +0 -204
  611. package/dist/node_modules/yallist/iterator.js +0 -8
  612. package/dist/node_modules/yallist/package.json +0 -62
  613. package/dist/node_modules/yallist/yallist.js +0 -426
  614. package/dist/package-lock.json +0 -507
  615. package/dist/package.json +0 -63
  616. package/dist/static/expected_tile_2193_153_255_z7.png +0 -0
  617. package/dist/static/expected_tile_NZTM2000Quad_30_33_z6.png +0 -0
  618. package/dist/static/expected_tile_WebMercatorQuad_252_156_z8.png +0 -0
@@ -1,883 +0,0 @@
1
- // Copyright 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Lovell Fuller and contributors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #include <cstdlib>
16
- #include <string>
17
- #include <string.h>
18
- #include <vector>
19
- #include <queue>
20
- #include <map>
21
- #include <mutex> // NOLINT(build/c++11)
22
-
23
- #include <napi.h>
24
- #include <vips/vips8>
25
-
26
- #include "common.h"
27
-
28
- using vips::VImage;
29
-
30
- namespace sharp {
31
-
32
- // Convenience methods to access the attributes of a Napi::Object
33
- bool HasAttr(Napi::Object obj, std::string attr) {
34
- return obj.Has(attr);
35
- }
36
- std::string AttrAsStr(Napi::Object obj, std::string attr) {
37
- return obj.Get(attr).As<Napi::String>();
38
- }
39
- std::string AttrAsStr(Napi::Object obj, unsigned int const attr) {
40
- return obj.Get(attr).As<Napi::String>();
41
- }
42
- uint32_t AttrAsUint32(Napi::Object obj, std::string attr) {
43
- return obj.Get(attr).As<Napi::Number>().Uint32Value();
44
- }
45
- int32_t AttrAsInt32(Napi::Object obj, std::string attr) {
46
- return obj.Get(attr).As<Napi::Number>().Int32Value();
47
- }
48
- int32_t AttrAsInt32(Napi::Object obj, unsigned int const attr) {
49
- return obj.Get(attr).As<Napi::Number>().Int32Value();
50
- }
51
- double AttrAsDouble(Napi::Object obj, std::string attr) {
52
- return obj.Get(attr).As<Napi::Number>().DoubleValue();
53
- }
54
- double AttrAsDouble(Napi::Object obj, unsigned int const attr) {
55
- return obj.Get(attr).As<Napi::Number>().DoubleValue();
56
- }
57
- bool AttrAsBool(Napi::Object obj, std::string attr) {
58
- return obj.Get(attr).As<Napi::Boolean>().Value();
59
- }
60
- std::vector<double> AttrAsVectorOfDouble(Napi::Object obj, std::string attr) {
61
- Napi::Array napiArray = obj.Get(attr).As<Napi::Array>();
62
- std::vector<double> vectorOfDouble(napiArray.Length());
63
- for (unsigned int i = 0; i < napiArray.Length(); i++) {
64
- vectorOfDouble[i] = AttrAsDouble(napiArray, i);
65
- }
66
- return vectorOfDouble;
67
- }
68
- std::vector<int32_t> AttrAsInt32Vector(Napi::Object obj, std::string attr) {
69
- Napi::Array array = obj.Get(attr).As<Napi::Array>();
70
- std::vector<int32_t> vector(array.Length());
71
- for (unsigned int i = 0; i < array.Length(); i++) {
72
- vector[i] = AttrAsInt32(array, i);
73
- }
74
- return vector;
75
- }
76
-
77
- // Create an InputDescriptor instance from a Napi::Object describing an input image
78
- InputDescriptor* CreateInputDescriptor(Napi::Object input) {
79
- InputDescriptor *descriptor = new InputDescriptor;
80
- if (HasAttr(input, "file")) {
81
- descriptor->file = AttrAsStr(input, "file");
82
- } else if (HasAttr(input, "buffer")) {
83
- Napi::Buffer<char> buffer = input.Get("buffer").As<Napi::Buffer<char>>();
84
- descriptor->bufferLength = buffer.Length();
85
- descriptor->buffer = buffer.Data();
86
- descriptor->isBuffer = TRUE;
87
- }
88
- descriptor->failOnError = AttrAsBool(input, "failOnError");
89
- // Density for vector-based input
90
- if (HasAttr(input, "density")) {
91
- descriptor->density = AttrAsDouble(input, "density");
92
- }
93
- // Raw pixel input
94
- if (HasAttr(input, "rawChannels")) {
95
- descriptor->rawDepth = static_cast<VipsBandFormat>(
96
- vips_enum_from_nick(nullptr, VIPS_TYPE_BAND_FORMAT,
97
- AttrAsStr(input, "rawDepth").data()));
98
- descriptor->rawChannels = AttrAsUint32(input, "rawChannels");
99
- descriptor->rawWidth = AttrAsUint32(input, "rawWidth");
100
- descriptor->rawHeight = AttrAsUint32(input, "rawHeight");
101
- descriptor->rawPremultiplied = AttrAsBool(input, "rawPremultiplied");
102
- }
103
- // Multi-page input (GIF, TIFF, PDF)
104
- if (HasAttr(input, "pages")) {
105
- descriptor->pages = AttrAsInt32(input, "pages");
106
- }
107
- if (HasAttr(input, "page")) {
108
- descriptor->page = AttrAsUint32(input, "page");
109
- }
110
- // Multi-level input (OpenSlide)
111
- if (HasAttr(input, "level")) {
112
- descriptor->level = AttrAsUint32(input, "level");
113
- }
114
- // subIFD (OME-TIFF)
115
- if (HasAttr(input, "subifd")) {
116
- descriptor->subifd = AttrAsInt32(input, "subifd");
117
- }
118
- // Create new image
119
- if (HasAttr(input, "createChannels")) {
120
- descriptor->createChannels = AttrAsUint32(input, "createChannels");
121
- descriptor->createWidth = AttrAsUint32(input, "createWidth");
122
- descriptor->createHeight = AttrAsUint32(input, "createHeight");
123
- if (HasAttr(input, "createNoiseType")) {
124
- descriptor->createNoiseType = AttrAsStr(input, "createNoiseType");
125
- descriptor->createNoiseMean = AttrAsDouble(input, "createNoiseMean");
126
- descriptor->createNoiseSigma = AttrAsDouble(input, "createNoiseSigma");
127
- } else {
128
- descriptor->createBackground = AttrAsVectorOfDouble(input, "createBackground");
129
- }
130
- }
131
- // Limit input images to a given number of pixels, where pixels = width * height
132
- descriptor->limitInputPixels = AttrAsUint32(input, "limitInputPixels");
133
- // Allow switch from random to sequential access
134
- descriptor->access = AttrAsBool(input, "sequentialRead") ? VIPS_ACCESS_SEQUENTIAL : VIPS_ACCESS_RANDOM;
135
- return descriptor;
136
- }
137
-
138
- // How many tasks are in the queue?
139
- volatile int counterQueue = 0;
140
-
141
- // How many tasks are being processed?
142
- volatile int counterProcess = 0;
143
-
144
- // Filename extension checkers
145
- static bool EndsWith(std::string const &str, std::string const &end) {
146
- return str.length() >= end.length() && 0 == str.compare(str.length() - end.length(), end.length(), end);
147
- }
148
- bool IsJpeg(std::string const &str) {
149
- return EndsWith(str, ".jpg") || EndsWith(str, ".jpeg") || EndsWith(str, ".JPG") || EndsWith(str, ".JPEG");
150
- }
151
- bool IsPng(std::string const &str) {
152
- return EndsWith(str, ".png") || EndsWith(str, ".PNG");
153
- }
154
- bool IsWebp(std::string const &str) {
155
- return EndsWith(str, ".webp") || EndsWith(str, ".WEBP");
156
- }
157
- bool IsGif(std::string const &str) {
158
- return EndsWith(str, ".gif") || EndsWith(str, ".GIF");
159
- }
160
- bool IsJp2(std::string const &str) {
161
- return EndsWith(str, ".jp2") || EndsWith(str, ".jpx") || EndsWith(str, ".j2k") || EndsWith(str, ".j2c")
162
- || EndsWith(str, ".JP2") || EndsWith(str, ".JPX") || EndsWith(str, ".J2K") || EndsWith(str, ".J2C");
163
- }
164
- bool IsTiff(std::string const &str) {
165
- return EndsWith(str, ".tif") || EndsWith(str, ".tiff") || EndsWith(str, ".TIF") || EndsWith(str, ".TIFF");
166
- }
167
- bool IsHeic(std::string const &str) {
168
- return EndsWith(str, ".heic") || EndsWith(str, ".HEIC");
169
- }
170
- bool IsHeif(std::string const &str) {
171
- return EndsWith(str, ".heif") || EndsWith(str, ".HEIF") || IsHeic(str) || IsAvif(str);
172
- }
173
- bool IsAvif(std::string const &str) {
174
- return EndsWith(str, ".avif") || EndsWith(str, ".AVIF");
175
- }
176
- bool IsDz(std::string const &str) {
177
- return EndsWith(str, ".dzi") || EndsWith(str, ".DZI");
178
- }
179
- bool IsDzZip(std::string const &str) {
180
- return EndsWith(str, ".zip") || EndsWith(str, ".ZIP") || EndsWith(str, ".szi") || EndsWith(str, ".SZI");
181
- }
182
- bool IsV(std::string const &str) {
183
- return EndsWith(str, ".v") || EndsWith(str, ".V") || EndsWith(str, ".vips") || EndsWith(str, ".VIPS");
184
- }
185
-
186
- /*
187
- Provide a string identifier for the given image type.
188
- */
189
- std::string ImageTypeId(ImageType const imageType) {
190
- std::string id;
191
- switch (imageType) {
192
- case ImageType::JPEG: id = "jpeg"; break;
193
- case ImageType::PNG: id = "png"; break;
194
- case ImageType::WEBP: id = "webp"; break;
195
- case ImageType::TIFF: id = "tiff"; break;
196
- case ImageType::GIF: id = "gif"; break;
197
- case ImageType::JP2: id = "jp2"; break;
198
- case ImageType::SVG: id = "svg"; break;
199
- case ImageType::HEIF: id = "heif"; break;
200
- case ImageType::PDF: id = "pdf"; break;
201
- case ImageType::MAGICK: id = "magick"; break;
202
- case ImageType::OPENSLIDE: id = "openslide"; break;
203
- case ImageType::PPM: id = "ppm"; break;
204
- case ImageType::FITS: id = "fits"; break;
205
- case ImageType::EXR: id = "exr"; break;
206
- case ImageType::VIPS: id = "vips"; break;
207
- case ImageType::RAW: id = "raw"; break;
208
- case ImageType::UNKNOWN: id = "unknown"; break;
209
- case ImageType::MISSING: id = "missing"; break;
210
- }
211
- return id;
212
- }
213
-
214
- /**
215
- * Regenerate this table with something like:
216
- *
217
- * $ vips -l foreign | grep -i load | awk '{ print $2, $1; }'
218
- *
219
- * Plus a bit of editing.
220
- */
221
- std::map<std::string, ImageType> loaderToType = {
222
- { "VipsForeignLoadJpegFile", ImageType::JPEG },
223
- { "VipsForeignLoadJpegBuffer", ImageType::JPEG },
224
- { "VipsForeignLoadPngFile", ImageType::PNG },
225
- { "VipsForeignLoadPngBuffer", ImageType::PNG },
226
- { "VipsForeignLoadWebpFile", ImageType::WEBP },
227
- { "VipsForeignLoadWebpBuffer", ImageType::WEBP },
228
- { "VipsForeignLoadTiffFile", ImageType::TIFF },
229
- { "VipsForeignLoadTiffBuffer", ImageType::TIFF },
230
- { "VipsForeignLoadGifFile", ImageType::GIF },
231
- { "VipsForeignLoadGifBuffer", ImageType::GIF },
232
- { "VipsForeignLoadNsgifFile", ImageType::GIF },
233
- { "VipsForeignLoadNsgifBuffer", ImageType::GIF },
234
- { "VipsForeignLoadJp2kBuffer", ImageType::JP2 },
235
- { "VipsForeignLoadJp2kFile", ImageType::JP2 },
236
- { "VipsForeignLoadSvgFile", ImageType::SVG },
237
- { "VipsForeignLoadSvgBuffer", ImageType::SVG },
238
- { "VipsForeignLoadHeifFile", ImageType::HEIF },
239
- { "VipsForeignLoadHeifBuffer", ImageType::HEIF },
240
- { "VipsForeignLoadPdfFile", ImageType::PDF },
241
- { "VipsForeignLoadPdfBuffer", ImageType::PDF },
242
- { "VipsForeignLoadMagickFile", ImageType::MAGICK },
243
- { "VipsForeignLoadMagickBuffer", ImageType::MAGICK },
244
- { "VipsForeignLoadMagick7File", ImageType::MAGICK },
245
- { "VipsForeignLoadMagick7Buffer", ImageType::MAGICK },
246
- { "VipsForeignLoadOpenslide", ImageType::OPENSLIDE },
247
- { "VipsForeignLoadPpmFile", ImageType::PPM },
248
- { "VipsForeignLoadFits", ImageType::FITS },
249
- { "VipsForeignLoadOpenexr", ImageType::EXR },
250
- { "VipsForeignLoadVips", ImageType::VIPS },
251
- { "VipsForeignLoadVipsFile", ImageType::VIPS },
252
- { "VipsForeignLoadRaw", ImageType::RAW }
253
- };
254
-
255
- /*
256
- Determine image format of a buffer.
257
- */
258
- ImageType DetermineImageType(void *buffer, size_t const length) {
259
- ImageType imageType = ImageType::UNKNOWN;
260
- char const *load = vips_foreign_find_load_buffer(buffer, length);
261
- if (load != nullptr) {
262
- auto it = loaderToType.find(load);
263
- if (it != loaderToType.end()) {
264
- imageType = it->second;
265
- }
266
- }
267
- return imageType;
268
- }
269
-
270
- /*
271
- Determine image format, reads the first few bytes of the file
272
- */
273
- ImageType DetermineImageType(char const *file) {
274
- ImageType imageType = ImageType::UNKNOWN;
275
- char const *load = vips_foreign_find_load(file);
276
- if (load != nullptr) {
277
- auto it = loaderToType.find(load);
278
- if (it != loaderToType.end()) {
279
- imageType = it->second;
280
- }
281
- } else {
282
- if (EndsWith(vips::VError().what(), " does not exist\n")) {
283
- imageType = ImageType::MISSING;
284
- }
285
- }
286
- return imageType;
287
- }
288
-
289
- /*
290
- Does this image type support multiple pages?
291
- */
292
- bool ImageTypeSupportsPage(ImageType imageType) {
293
- return
294
- imageType == ImageType::WEBP ||
295
- imageType == ImageType::MAGICK ||
296
- imageType == ImageType::GIF ||
297
- imageType == ImageType::JP2 ||
298
- imageType == ImageType::TIFF ||
299
- imageType == ImageType::HEIF ||
300
- imageType == ImageType::PDF;
301
- }
302
-
303
- /*
304
- Open an image from the given InputDescriptor (filesystem, compressed buffer, raw pixel data)
305
- */
306
- std::tuple<VImage, ImageType> OpenInput(InputDescriptor *descriptor) {
307
- VImage image;
308
- ImageType imageType;
309
- if (descriptor->isBuffer) {
310
- if (descriptor->rawChannels > 0) {
311
- // Raw, uncompressed pixel data
312
- image = VImage::new_from_memory(descriptor->buffer, descriptor->bufferLength,
313
- descriptor->rawWidth, descriptor->rawHeight, descriptor->rawChannels, descriptor->rawDepth);
314
- if (descriptor->rawChannels < 3) {
315
- image.get_image()->Type = VIPS_INTERPRETATION_B_W;
316
- } else {
317
- image.get_image()->Type = VIPS_INTERPRETATION_sRGB;
318
- }
319
- if (descriptor->rawPremultiplied) {
320
- image = image.unpremultiply();
321
- }
322
- imageType = ImageType::RAW;
323
- } else {
324
- // Compressed data
325
- imageType = DetermineImageType(descriptor->buffer, descriptor->bufferLength);
326
- if (imageType != ImageType::UNKNOWN) {
327
- try {
328
- vips::VOption *option = VImage::option()
329
- ->set("access", descriptor->access)
330
- ->set("fail", descriptor->failOnError);
331
- if (imageType == ImageType::SVG) {
332
- option->set("unlimited", TRUE);
333
- }
334
- if (imageType == ImageType::SVG || imageType == ImageType::PDF) {
335
- option->set("dpi", descriptor->density);
336
- }
337
- if (imageType == ImageType::MAGICK) {
338
- option->set("density", std::to_string(descriptor->density).data());
339
- }
340
- if (ImageTypeSupportsPage(imageType)) {
341
- option->set("n", descriptor->pages);
342
- option->set("page", descriptor->page);
343
- }
344
- if (imageType == ImageType::OPENSLIDE) {
345
- option->set("level", descriptor->level);
346
- }
347
- if (imageType == ImageType::TIFF) {
348
- option->set("subifd", descriptor->subifd);
349
- }
350
- image = VImage::new_from_buffer(descriptor->buffer, descriptor->bufferLength, nullptr, option);
351
- if (imageType == ImageType::SVG || imageType == ImageType::PDF || imageType == ImageType::MAGICK) {
352
- image = SetDensity(image, descriptor->density);
353
- }
354
- } catch (vips::VError const &err) {
355
- throw vips::VError(std::string("Input buffer has corrupt header: ") + err.what());
356
- }
357
- } else {
358
- throw vips::VError("Input buffer contains unsupported image format");
359
- }
360
- }
361
- } else {
362
- if (descriptor->createChannels > 0) {
363
- // Create new image
364
- if (descriptor->createNoiseType == "gaussian") {
365
- int const channels = descriptor->createChannels;
366
- image = VImage::new_matrix(descriptor->createWidth, descriptor->createHeight);
367
- std::vector<VImage> bands = {};
368
- bands.reserve(channels);
369
- for (int _band = 0; _band < channels; _band++) {
370
- bands.push_back(image.gaussnoise(
371
- descriptor->createWidth,
372
- descriptor->createHeight,
373
- VImage::option()->set("mean", descriptor->createNoiseMean)->set("sigma", descriptor->createNoiseSigma)));
374
- }
375
- image = image.bandjoin(bands);
376
- image = image.cast(VipsBandFormat::VIPS_FORMAT_UCHAR);
377
- if (channels < 3) {
378
- image = image.colourspace(VIPS_INTERPRETATION_B_W);
379
- } else {
380
- image = image.colourspace(VIPS_INTERPRETATION_sRGB);
381
- }
382
- } else {
383
- std::vector<double> background = {
384
- descriptor->createBackground[0],
385
- descriptor->createBackground[1],
386
- descriptor->createBackground[2]
387
- };
388
- if (descriptor->createChannels == 4) {
389
- background.push_back(descriptor->createBackground[3]);
390
- }
391
- image = VImage::new_matrix(descriptor->createWidth, descriptor->createHeight).new_from_image(background);
392
- }
393
- image.get_image()->Type = VIPS_INTERPRETATION_sRGB;
394
- imageType = ImageType::RAW;
395
- } else {
396
- // From filesystem
397
- imageType = DetermineImageType(descriptor->file.data());
398
- if (imageType == ImageType::MISSING) {
399
- throw vips::VError("Input file is missing");
400
- }
401
- if (imageType != ImageType::UNKNOWN) {
402
- try {
403
- vips::VOption *option = VImage::option()
404
- ->set("access", descriptor->access)
405
- ->set("fail", descriptor->failOnError);
406
- if (imageType == ImageType::SVG) {
407
- option->set("unlimited", TRUE);
408
- }
409
- if (imageType == ImageType::SVG || imageType == ImageType::PDF) {
410
- option->set("dpi", descriptor->density);
411
- }
412
- if (imageType == ImageType::MAGICK) {
413
- option->set("density", std::to_string(descriptor->density).data());
414
- }
415
- if (ImageTypeSupportsPage(imageType)) {
416
- option->set("n", descriptor->pages);
417
- option->set("page", descriptor->page);
418
- }
419
- if (imageType == ImageType::OPENSLIDE) {
420
- option->set("level", descriptor->level);
421
- }
422
- if (imageType == ImageType::TIFF) {
423
- option->set("subifd", descriptor->subifd);
424
- }
425
- image = VImage::new_from_file(descriptor->file.data(), option);
426
- if (imageType == ImageType::SVG || imageType == ImageType::PDF || imageType == ImageType::MAGICK) {
427
- image = SetDensity(image, descriptor->density);
428
- }
429
- } catch (vips::VError const &err) {
430
- throw vips::VError(std::string("Input file has corrupt header: ") + err.what());
431
- }
432
- } else {
433
- throw vips::VError("Input file contains unsupported image format");
434
- }
435
- }
436
- }
437
- // Limit input images to a given number of pixels, where pixels = width * height
438
- if (descriptor->limitInputPixels > 0 &&
439
- static_cast<uint64_t>(image.width() * image.height()) > static_cast<uint64_t>(descriptor->limitInputPixels)) {
440
- throw vips::VError("Input image exceeds pixel limit");
441
- }
442
- return std::make_tuple(image, imageType);
443
- }
444
-
445
- /*
446
- Does this image have an embedded profile?
447
- */
448
- bool HasProfile(VImage image) {
449
- return (image.get_typeof(VIPS_META_ICC_NAME) != 0) ? TRUE : FALSE;
450
- }
451
-
452
- /*
453
- Does this image have an alpha channel?
454
- Uses colour space interpretation with number of channels to guess this.
455
- */
456
- bool HasAlpha(VImage image) {
457
- return image.has_alpha();
458
- }
459
-
460
- /*
461
- Get EXIF Orientation of image, if any.
462
- */
463
- int ExifOrientation(VImage image) {
464
- int orientation = 0;
465
- if (image.get_typeof(VIPS_META_ORIENTATION) != 0) {
466
- orientation = image.get_int(VIPS_META_ORIENTATION);
467
- }
468
- return orientation;
469
- }
470
-
471
- /*
472
- Set EXIF Orientation of image.
473
- */
474
- VImage SetExifOrientation(VImage image, int const orientation) {
475
- VImage copy = image.copy();
476
- copy.set(VIPS_META_ORIENTATION, orientation);
477
- return copy;
478
- }
479
-
480
- /*
481
- Remove EXIF Orientation from image.
482
- */
483
- VImage RemoveExifOrientation(VImage image) {
484
- VImage copy = image.copy();
485
- copy.remove(VIPS_META_ORIENTATION);
486
- return copy;
487
- }
488
-
489
- /*
490
- Set animation properties if necessary.
491
- Non-provided properties will be loaded from image.
492
- */
493
- VImage SetAnimationProperties(VImage image, int pageHeight, std::vector<int> delay, int loop) {
494
- bool hasDelay = delay.size() != 1 || delay.front() != -1;
495
-
496
- if (pageHeight == 0 && image.get_typeof(VIPS_META_PAGE_HEIGHT) == G_TYPE_INT) {
497
- pageHeight = image.get_int(VIPS_META_PAGE_HEIGHT);
498
- }
499
-
500
- if (!hasDelay && image.get_typeof("delay") == VIPS_TYPE_ARRAY_INT) {
501
- delay = image.get_array_int("delay");
502
- hasDelay = true;
503
- }
504
-
505
- if (loop == -1 && image.get_typeof("loop") == G_TYPE_INT) {
506
- loop = image.get_int("loop");
507
- }
508
-
509
- if (pageHeight == 0) return image;
510
-
511
- // It is necessary to create the copy as otherwise, pageHeight will be ignored!
512
- VImage copy = image.copy();
513
-
514
- copy.set(VIPS_META_PAGE_HEIGHT, pageHeight);
515
- if (hasDelay) copy.set("delay", delay);
516
- if (loop != -1) copy.set("loop", loop);
517
-
518
- return copy;
519
- }
520
-
521
- /*
522
- Remove animation properties from image.
523
- */
524
- VImage RemoveAnimationProperties(VImage image) {
525
- VImage copy = image.copy();
526
- copy.remove(VIPS_META_PAGE_HEIGHT);
527
- copy.remove("delay");
528
- copy.remove("loop");
529
- return copy;
530
- }
531
-
532
- /*
533
- Does this image have a non-default density?
534
- */
535
- bool HasDensity(VImage image) {
536
- return image.xres() > 1.0;
537
- }
538
-
539
- /*
540
- Get pixels/mm resolution as pixels/inch density.
541
- */
542
- int GetDensity(VImage image) {
543
- return static_cast<int>(round(image.xres() * 25.4));
544
- }
545
-
546
- /*
547
- Set pixels/mm resolution based on a pixels/inch density.
548
- */
549
- VImage SetDensity(VImage image, const double density) {
550
- const double pixelsPerMm = density / 25.4;
551
- VImage copy = image.copy();
552
- copy.get_image()->Xres = pixelsPerMm;
553
- copy.get_image()->Yres = pixelsPerMm;
554
- return copy;
555
- }
556
-
557
- /*
558
- Check the proposed format supports the current dimensions.
559
- */
560
- void AssertImageTypeDimensions(VImage image, ImageType const imageType) {
561
- const int height = image.get_typeof(VIPS_META_PAGE_HEIGHT) == G_TYPE_INT
562
- ? image.get_int(VIPS_META_PAGE_HEIGHT)
563
- : image.height();
564
- if (imageType == ImageType::JPEG) {
565
- if (image.width() > 65535 || height > 65535) {
566
- throw vips::VError("Processed image is too large for the JPEG format");
567
- }
568
- } else if (imageType == ImageType::WEBP) {
569
- if (image.width() > 16383 || height > 16383) {
570
- throw vips::VError("Processed image is too large for the WebP format");
571
- }
572
- } else if (imageType == ImageType::GIF) {
573
- if (image.width() > 65535 || height > 65535) {
574
- throw vips::VError("Processed image is too large for the GIF format");
575
- }
576
- }
577
- }
578
-
579
- /*
580
- Called when a Buffer undergoes GC, required to support mixed runtime libraries in Windows
581
- */
582
- std::function<void(void*, char*)> FreeCallback = [](void*, char* data) {
583
- g_free(data);
584
- };
585
-
586
- /*
587
- Temporary buffer of warnings
588
- */
589
- std::queue<std::string> vipsWarnings;
590
- std::mutex vipsWarningsMutex;
591
-
592
- /*
593
- Called with warnings from the glib-registered "VIPS" domain
594
- */
595
- void VipsWarningCallback(char const* log_domain, GLogLevelFlags log_level, char const* message, void* ignore) {
596
- std::lock_guard<std::mutex> lock(vipsWarningsMutex);
597
- vipsWarnings.emplace(message);
598
- }
599
-
600
- /*
601
- Pop the oldest warning message from the queue
602
- */
603
- std::string VipsWarningPop() {
604
- std::string warning;
605
- std::lock_guard<std::mutex> lock(vipsWarningsMutex);
606
- if (!vipsWarnings.empty()) {
607
- warning = vipsWarnings.front();
608
- vipsWarnings.pop();
609
- }
610
- return warning;
611
- }
612
-
613
- /*
614
- Attach an event listener for progress updates, used to detect timeout
615
- */
616
- void SetTimeout(VImage image, int const seconds) {
617
- if (seconds > 0) {
618
- VipsImage *im = image.get_image();
619
- if (im->progress_signal == NULL) {
620
- int *timeout = VIPS_NEW(im, int);
621
- *timeout = seconds;
622
- g_signal_connect(im, "eval", G_CALLBACK(VipsProgressCallBack), timeout);
623
- vips_image_set_progress(im, TRUE);
624
- }
625
- }
626
- }
627
-
628
- /*
629
- Event listener for progress updates, used to detect timeout
630
- */
631
- void VipsProgressCallBack(VipsImage *im, VipsProgress *progress, int *timeout) {
632
- // printf("VipsProgressCallBack progress=%d run=%d timeout=%d\n", progress->percent, progress->run, *timeout);
633
- if (*timeout > 0 && progress->run >= *timeout) {
634
- vips_image_set_kill(im, TRUE);
635
- vips_error("timeout", "%d%% complete", progress->percent);
636
- *timeout = 0;
637
- }
638
- }
639
-
640
- /*
641
- Calculate the (left, top) coordinates of the output image
642
- within the input image, applying the given gravity during an embed.
643
-
644
- @Azurebyte: We are basically swapping the inWidth and outWidth, inHeight and outHeight from the CalculateCrop function.
645
- */
646
- std::tuple<int, int> CalculateEmbedPosition(int const inWidth, int const inHeight,
647
- int const outWidth, int const outHeight, int const gravity) {
648
-
649
- int left = 0;
650
- int top = 0;
651
- switch (gravity) {
652
- case 1:
653
- // North
654
- left = (outWidth - inWidth) / 2;
655
- break;
656
- case 2:
657
- // East
658
- left = outWidth - inWidth;
659
- top = (outHeight - inHeight) / 2;
660
- break;
661
- case 3:
662
- // South
663
- left = (outWidth - inWidth) / 2;
664
- top = outHeight - inHeight;
665
- break;
666
- case 4:
667
- // West
668
- top = (outHeight - inHeight) / 2;
669
- break;
670
- case 5:
671
- // Northeast
672
- left = outWidth - inWidth;
673
- break;
674
- case 6:
675
- // Southeast
676
- left = outWidth - inWidth;
677
- top = outHeight - inHeight;
678
- break;
679
- case 7:
680
- // Southwest
681
- top = outHeight - inHeight;
682
- break;
683
- case 8:
684
- // Northwest
685
- // Which is the default is 0,0 so we do not assign anything here.
686
- break;
687
- default:
688
- // Centre
689
- left = (outWidth - inWidth) / 2;
690
- top = (outHeight - inHeight) / 2;
691
- }
692
- return std::make_tuple(left, top);
693
- }
694
-
695
- /*
696
- Calculate the (left, top) coordinates of the output image
697
- within the input image, applying the given gravity during a crop.
698
- */
699
- std::tuple<int, int> CalculateCrop(int const inWidth, int const inHeight,
700
- int const outWidth, int const outHeight, int const gravity) {
701
-
702
- int left = 0;
703
- int top = 0;
704
- switch (gravity) {
705
- case 1:
706
- // North
707
- left = (inWidth - outWidth + 1) / 2;
708
- break;
709
- case 2:
710
- // East
711
- left = inWidth - outWidth;
712
- top = (inHeight - outHeight + 1) / 2;
713
- break;
714
- case 3:
715
- // South
716
- left = (inWidth - outWidth + 1) / 2;
717
- top = inHeight - outHeight;
718
- break;
719
- case 4:
720
- // West
721
- top = (inHeight - outHeight + 1) / 2;
722
- break;
723
- case 5:
724
- // Northeast
725
- left = inWidth - outWidth;
726
- break;
727
- case 6:
728
- // Southeast
729
- left = inWidth - outWidth;
730
- top = inHeight - outHeight;
731
- break;
732
- case 7:
733
- // Southwest
734
- top = inHeight - outHeight;
735
- break;
736
- case 8:
737
- // Northwest
738
- break;
739
- default:
740
- // Centre
741
- left = (inWidth - outWidth + 1) / 2;
742
- top = (inHeight - outHeight + 1) / 2;
743
- }
744
- return std::make_tuple(left, top);
745
- }
746
-
747
- /*
748
- Calculate the (left, top) coordinates of the output image
749
- within the input image, applying the given x and y offsets.
750
- */
751
- std::tuple<int, int> CalculateCrop(int const inWidth, int const inHeight,
752
- int const outWidth, int const outHeight, int const x, int const y) {
753
-
754
- // default values
755
- int left = 0;
756
- int top = 0;
757
-
758
- // assign only if valid
759
- if (x < (inWidth - outWidth)) {
760
- left = x;
761
- } else if (x >= (inWidth - outWidth)) {
762
- left = inWidth - outWidth;
763
- }
764
-
765
- if (y < (inHeight - outHeight)) {
766
- top = y;
767
- } else if (y >= (inHeight - outHeight)) {
768
- top = inHeight - outHeight;
769
- }
770
-
771
- return std::make_tuple(left, top);
772
- }
773
-
774
- /*
775
- Are pixel values in this image 16-bit integer?
776
- */
777
- bool Is16Bit(VipsInterpretation const interpretation) {
778
- return interpretation == VIPS_INTERPRETATION_RGB16 || interpretation == VIPS_INTERPRETATION_GREY16;
779
- }
780
-
781
- /*
782
- Return the image alpha maximum. Useful for combining alpha bands. scRGB
783
- images are 0 - 1 for image data, but the alpha is 0 - 255.
784
- */
785
- double MaximumImageAlpha(VipsInterpretation const interpretation) {
786
- return Is16Bit(interpretation) ? 65535.0 : 255.0;
787
- }
788
-
789
- /*
790
- Get boolean operation type from string
791
- */
792
- VipsOperationBoolean GetBooleanOperation(std::string const opStr) {
793
- return static_cast<VipsOperationBoolean>(
794
- vips_enum_from_nick(nullptr, VIPS_TYPE_OPERATION_BOOLEAN, opStr.data()));
795
- }
796
-
797
- /*
798
- Get interpretation type from string
799
- */
800
- VipsInterpretation GetInterpretation(std::string const typeStr) {
801
- return static_cast<VipsInterpretation>(
802
- vips_enum_from_nick(nullptr, VIPS_TYPE_INTERPRETATION, typeStr.data()));
803
- }
804
-
805
- /*
806
- Convert RGBA value to another colourspace
807
- */
808
- std::vector<double> GetRgbaAsColourspace(std::vector<double> const rgba,
809
- VipsInterpretation const interpretation, bool premultiply) {
810
- int const bands = static_cast<int>(rgba.size());
811
- if (bands < 3) {
812
- return rgba;
813
- }
814
- VImage pixel = VImage::new_matrix(1, 1);
815
- pixel.set("bands", bands);
816
- pixel = pixel
817
- .new_from_image(rgba)
818
- .colourspace(interpretation, VImage::option()->set("source_space", VIPS_INTERPRETATION_sRGB));
819
- if (premultiply) {
820
- pixel = pixel.premultiply();
821
- }
822
- return pixel(0, 0);
823
- }
824
-
825
- /*
826
- Apply the alpha channel to a given colour
827
- */
828
- std::tuple<VImage, std::vector<double>> ApplyAlpha(VImage image, std::vector<double> colour, bool premultiply) {
829
- // Scale up 8-bit values to match 16-bit input image
830
- double const multiplier = sharp::Is16Bit(image.interpretation()) ? 256.0 : 1.0;
831
- // Create alphaColour colour
832
- std::vector<double> alphaColour;
833
- if (image.bands() > 2) {
834
- alphaColour = {
835
- multiplier * colour[0],
836
- multiplier * colour[1],
837
- multiplier * colour[2]
838
- };
839
- } else {
840
- // Convert sRGB to greyscale
841
- alphaColour = { multiplier * (
842
- 0.2126 * colour[0] +
843
- 0.7152 * colour[1] +
844
- 0.0722 * colour[2])
845
- };
846
- }
847
- // Add alpha channel to alphaColour colour
848
- if (colour[3] < 255.0 || HasAlpha(image)) {
849
- alphaColour.push_back(colour[3] * multiplier);
850
- }
851
- // Ensure alphaColour colour uses correct colourspace
852
- alphaColour = sharp::GetRgbaAsColourspace(alphaColour, image.interpretation(), premultiply);
853
- // Add non-transparent alpha channel, if required
854
- if (colour[3] < 255.0 && !HasAlpha(image)) {
855
- image = image.bandjoin(
856
- VImage::new_matrix(image.width(), image.height()).new_from_image(255 * multiplier));
857
- }
858
- return std::make_tuple(image, alphaColour);
859
- }
860
-
861
- /*
862
- Removes alpha channel, if any.
863
- */
864
- VImage RemoveAlpha(VImage image) {
865
- if (HasAlpha(image)) {
866
- image = image.extract_band(0, VImage::option()->set("n", image.bands() - 1));
867
- }
868
- return image;
869
- }
870
-
871
- /*
872
- Ensures alpha channel, if missing.
873
- */
874
- VImage EnsureAlpha(VImage image, double const value) {
875
- if (!HasAlpha(image)) {
876
- std::vector<double> alpha;
877
- alpha.push_back(value * sharp::MaximumImageAlpha(image.interpretation()));
878
- image = image.bandjoin_const(alpha);
879
- }
880
- return image;
881
- }
882
-
883
- } // namespace sharp