@loaders.gl/textures 3.4.0-alpha.2 → 3.4.0-alpha.3

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 (140) hide show
  1. package/dist/basis-nodejs-worker.js +124 -45
  2. package/dist/basis-worker.js +3 -3
  3. package/dist/compressed-texture-worker.js +3 -3
  4. package/dist/crunch-worker.js +2 -2
  5. package/dist/es5/basis-loader.js +0 -2
  6. package/dist/es5/basis-loader.js.map +1 -1
  7. package/dist/es5/compressed-texture-loader.js +24 -31
  8. package/dist/es5/compressed-texture-loader.js.map +1 -1
  9. package/dist/es5/compressed-texture-writer.js +0 -1
  10. package/dist/es5/compressed-texture-writer.js.map +1 -1
  11. package/dist/es5/crunch-loader.js +0 -2
  12. package/dist/es5/crunch-loader.js.map +1 -1
  13. package/dist/es5/index.js +0 -2
  14. package/dist/es5/index.js.map +1 -1
  15. package/dist/es5/ktx2-basis-writer-nodejs.js.map +1 -1
  16. package/dist/es5/ktx2-basis-writer.js +0 -1
  17. package/dist/es5/ktx2-basis-writer.js.map +1 -1
  18. package/dist/es5/lib/encoders/encode-ktx.js.map +1 -1
  19. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js +36 -38
  20. package/dist/es5/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  21. package/dist/es5/lib/encoders/encode-texture.js +15 -18
  22. package/dist/es5/lib/encoders/encode-texture.js.map +1 -1
  23. package/dist/es5/lib/gl-extensions.js +0 -8
  24. package/dist/es5/lib/gl-extensions.js.map +1 -1
  25. package/dist/es5/lib/parsers/basis-module-loader.js +93 -104
  26. package/dist/es5/lib/parsers/basis-module-loader.js.map +1 -1
  27. package/dist/es5/lib/parsers/crunch-module-loader.js +31 -36
  28. package/dist/es5/lib/parsers/crunch-module-loader.js.map +1 -1
  29. package/dist/es5/lib/parsers/parse-basis.js +46 -59
  30. package/dist/es5/lib/parsers/parse-basis.js.map +1 -1
  31. package/dist/es5/lib/parsers/parse-compressed-texture.js.map +1 -1
  32. package/dist/es5/lib/parsers/parse-crunch.js +39 -49
  33. package/dist/es5/lib/parsers/parse-crunch.js.map +1 -1
  34. package/dist/es5/lib/parsers/parse-dds.js +0 -5
  35. package/dist/es5/lib/parsers/parse-dds.js.map +1 -1
  36. package/dist/es5/lib/parsers/parse-ktx.js +2 -16
  37. package/dist/es5/lib/parsers/parse-ktx.js.map +1 -1
  38. package/dist/es5/lib/parsers/parse-npy.js +0 -5
  39. package/dist/es5/lib/parsers/parse-npy.js.map +1 -1
  40. package/dist/es5/lib/parsers/parse-pvr.js +0 -20
  41. package/dist/es5/lib/parsers/parse-pvr.js.map +1 -1
  42. package/dist/es5/lib/texture-api/async-deep-map.js +93 -85
  43. package/dist/es5/lib/texture-api/async-deep-map.js.map +1 -1
  44. package/dist/es5/lib/texture-api/deep-load.js +28 -32
  45. package/dist/es5/lib/texture-api/deep-load.js.map +1 -1
  46. package/dist/es5/lib/texture-api/generate-url.js +0 -1
  47. package/dist/es5/lib/texture-api/generate-url.js.map +1 -1
  48. package/dist/es5/lib/texture-api/load-image-array.js +31 -35
  49. package/dist/es5/lib/texture-api/load-image-array.js.map +1 -1
  50. package/dist/es5/lib/texture-api/load-image-cube.js +59 -45
  51. package/dist/es5/lib/texture-api/load-image-cube.js.map +1 -1
  52. package/dist/es5/lib/texture-api/load-image.js +65 -72
  53. package/dist/es5/lib/texture-api/load-image.js.map +1 -1
  54. package/dist/es5/lib/utils/extract-mipmap-images.js.map +1 -1
  55. package/dist/es5/lib/utils/ktx-format-helper.js +0 -1
  56. package/dist/es5/lib/utils/ktx-format-helper.js.map +1 -1
  57. package/dist/es5/lib/utils/texture-formats.js +1 -4
  58. package/dist/es5/lib/utils/texture-formats.js.map +1 -1
  59. package/dist/es5/lib/utils/version.js +1 -1
  60. package/dist/es5/lib/utils/version.js.map +1 -1
  61. package/dist/es5/npy-loader.js +6 -11
  62. package/dist/es5/npy-loader.js.map +1 -1
  63. package/dist/es5/workers/basis-nodejs-worker.js.map +1 -1
  64. package/dist/es5/workers/basis-worker.js.map +1 -1
  65. package/dist/es5/workers/compressed-texture-worker.js.map +1 -1
  66. package/dist/es5/workers/crunch-worker.js.map +1 -1
  67. package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js +29 -31
  68. package/dist/es5/workers/ktx2-basis-writer-nodejs-worker.js.map +1 -1
  69. package/dist/es5/workers/ktx2-basis-writer-worker.js +29 -31
  70. package/dist/es5/workers/ktx2-basis-writer-worker.js.map +1 -1
  71. package/dist/es5/workers/npy-worker.js.map +1 -1
  72. package/dist/esm/basis-loader.js +0 -3
  73. package/dist/esm/basis-loader.js.map +1 -1
  74. package/dist/esm/bundle.js +0 -1
  75. package/dist/esm/bundle.js.map +1 -1
  76. package/dist/esm/compressed-texture-loader.js +1 -6
  77. package/dist/esm/compressed-texture-loader.js.map +1 -1
  78. package/dist/esm/compressed-texture-writer.js +0 -1
  79. package/dist/esm/compressed-texture-writer.js.map +1 -1
  80. package/dist/esm/crunch-loader.js +0 -2
  81. package/dist/esm/crunch-loader.js.map +1 -1
  82. package/dist/esm/index.js +0 -5
  83. package/dist/esm/index.js.map +1 -1
  84. package/dist/esm/ktx2-basis-writer-nodejs.js +0 -1
  85. package/dist/esm/ktx2-basis-writer-nodejs.js.map +1 -1
  86. package/dist/esm/ktx2-basis-writer.js +0 -2
  87. package/dist/esm/ktx2-basis-writer.js.map +1 -1
  88. package/dist/esm/lib/encoders/encode-ktx.js.map +1 -1
  89. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js +0 -1
  90. package/dist/esm/lib/encoders/encode-ktx2-basis-texture.js.map +1 -1
  91. package/dist/esm/lib/encoders/encode-texture.js +1 -2
  92. package/dist/esm/lib/encoders/encode-texture.js.map +1 -1
  93. package/dist/esm/lib/gl-extensions.js +0 -9
  94. package/dist/esm/lib/gl-extensions.js.map +1 -1
  95. package/dist/esm/lib/parsers/basis-module-loader.js +1 -11
  96. package/dist/esm/lib/parsers/basis-module-loader.js.map +1 -1
  97. package/dist/esm/lib/parsers/crunch-module-loader.js +0 -4
  98. package/dist/esm/lib/parsers/crunch-module-loader.js.map +1 -1
  99. package/dist/esm/lib/parsers/parse-basis.js +0 -13
  100. package/dist/esm/lib/parsers/parse-basis.js.map +1 -1
  101. package/dist/esm/lib/parsers/parse-compressed-texture.js +0 -1
  102. package/dist/esm/lib/parsers/parse-compressed-texture.js.map +1 -1
  103. package/dist/esm/lib/parsers/parse-crunch.js +0 -12
  104. package/dist/esm/lib/parsers/parse-crunch.js.map +1 -1
  105. package/dist/esm/lib/parsers/parse-dds.js +0 -5
  106. package/dist/esm/lib/parsers/parse-dds.js.map +1 -1
  107. package/dist/esm/lib/parsers/parse-ktx.js +2 -16
  108. package/dist/esm/lib/parsers/parse-ktx.js.map +1 -1
  109. package/dist/esm/lib/parsers/parse-npy.js +0 -6
  110. package/dist/esm/lib/parsers/parse-npy.js.map +1 -1
  111. package/dist/esm/lib/parsers/parse-pvr.js +0 -21
  112. package/dist/esm/lib/parsers/parse-pvr.js.map +1 -1
  113. package/dist/esm/lib/texture-api/async-deep-map.js +0 -5
  114. package/dist/esm/lib/texture-api/async-deep-map.js.map +1 -1
  115. package/dist/esm/lib/texture-api/deep-load.js +0 -1
  116. package/dist/esm/lib/texture-api/deep-load.js.map +1 -1
  117. package/dist/esm/lib/texture-api/generate-url.js +0 -2
  118. package/dist/esm/lib/texture-api/generate-url.js.map +1 -1
  119. package/dist/esm/lib/texture-api/load-image-array.js +0 -1
  120. package/dist/esm/lib/texture-api/load-image-array.js.map +1 -1
  121. package/dist/esm/lib/texture-api/load-image-cube.js +0 -3
  122. package/dist/esm/lib/texture-api/load-image-cube.js.map +1 -1
  123. package/dist/esm/lib/texture-api/load-image.js +0 -4
  124. package/dist/esm/lib/texture-api/load-image.js.map +1 -1
  125. package/dist/esm/lib/utils/extract-mipmap-images.js +0 -1
  126. package/dist/esm/lib/utils/extract-mipmap-images.js.map +1 -1
  127. package/dist/esm/lib/utils/ktx-format-helper.js +0 -1
  128. package/dist/esm/lib/utils/ktx-format-helper.js.map +1 -1
  129. package/dist/esm/lib/utils/texture-formats.js +0 -3
  130. package/dist/esm/lib/utils/texture-formats.js.map +1 -1
  131. package/dist/esm/lib/utils/version.js +1 -2
  132. package/dist/esm/lib/utils/version.js.map +1 -1
  133. package/dist/esm/npy-loader.js +0 -4
  134. package/dist/esm/npy-loader.js.map +1 -1
  135. package/dist/esm/workers/crunch-worker.js +0 -1
  136. package/dist/esm/workers/crunch-worker.js.map +1 -1
  137. package/dist/ktx2-basis-writer-nodejs-worker.js +124 -45
  138. package/dist/ktx2-basis-writer-worker.js +3 -3
  139. package/dist/npy-worker.js +1 -1
  140. package/package.json +7 -7
@@ -8,24 +8,10 @@ exports.parseKTX = parseKTX;
8
8
  var _ktxParse = require("ktx-parse");
9
9
  var _extractMipmapImages = require("../utils/extract-mipmap-images");
10
10
  var _ktxFormatHelper = require("../utils/ktx-format-helper");
11
- var KTX2_ID = [
12
- 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a];
13
-
11
+ var KTX2_ID = [0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a];
14
12
  function isKTX(data) {
15
13
  var id = new Uint8Array(data);
16
- var notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] ||
17
- id[1] !== KTX2_ID[1] ||
18
- id[2] !== KTX2_ID[2] ||
19
- id[3] !== KTX2_ID[3] ||
20
- id[4] !== KTX2_ID[4] ||
21
- id[5] !== KTX2_ID[5] ||
22
- id[6] !== KTX2_ID[6] ||
23
- id[7] !== KTX2_ID[7] ||
24
- id[8] !== KTX2_ID[8] ||
25
- id[9] !== KTX2_ID[9] ||
26
- id[10] !== KTX2_ID[10] ||
27
- id[11] !== KTX2_ID[11];
28
-
14
+ var notKTX = id.byteLength < KTX2_ID.length || id[0] !== KTX2_ID[0] || id[1] !== KTX2_ID[1] || id[2] !== KTX2_ID[2] || id[3] !== KTX2_ID[3] || id[4] !== KTX2_ID[4] || id[5] !== KTX2_ID[5] || id[6] !== KTX2_ID[6] || id[7] !== KTX2_ID[7] || id[8] !== KTX2_ID[8] || id[9] !== KTX2_ID[9] || id[10] !== KTX2_ID[10] || id[11] !== KTX2_ID[11];
29
15
  return !notKTX;
30
16
  }
31
17
  function parseKTX(arrayBuffer) {
@@ -1 +1 @@
1
- {"version":3,"file":"parse-ktx.js","names":["KTX2_ID","isKTX","data","id","Uint8Array","notKTX","byteLength","length","parseKTX","arrayBuffer","uint8Array","ktx","read","mipMapLevels","Math","max","levels","width","pixelWidth","height","pixelHeight","internalFormat","mapVkFormatToWebGL","vkFormat","extractMipmapImages","sizeFunction","level","uncompressedByteLength"],"sources":["../../../../src/lib/parsers/parse-ktx.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {read} from 'ktx-parse';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\nimport {mapVkFormatToWebGL} from '../utils/ktx-format-helper';\n\nconst KTX2_ID = [\n // '´', 'K', 'T', 'X', '2', '0', 'ª', '\\r', '\\n', '\\x1A', '\\n'\n 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a\n];\n\n// eslint-disable-next-line complexity\nexport function isKTX(data: ArrayBuffer) {\n // const id = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n const id = new Uint8Array(data);\n const notKTX =\n id.byteLength < KTX2_ID.length ||\n id[0] !== KTX2_ID[0] || // '´'\n id[1] !== KTX2_ID[1] || // 'K'\n id[2] !== KTX2_ID[2] || // 'T'\n id[3] !== KTX2_ID[3] || // 'X'\n id[4] !== KTX2_ID[4] || // ' '\n id[5] !== KTX2_ID[5] || // '2'\n id[6] !== KTX2_ID[6] || // '0'\n id[7] !== KTX2_ID[7] || // 'ª'\n id[8] !== KTX2_ID[8] || // '\\r'\n id[9] !== KTX2_ID[9] || // '\\n'\n id[10] !== KTX2_ID[10] || // '\\x1A'\n id[11] !== KTX2_ID[11]; // '\\n'\n\n return !notKTX;\n}\n\nexport function parseKTX(arrayBuffer: ArrayBuffer): TextureLevel[] {\n const uint8Array = new Uint8Array(arrayBuffer);\n const ktx = read(uint8Array);\n const mipMapLevels = Math.max(1, ktx.levels.length);\n const width = ktx.pixelWidth;\n const height = ktx.pixelHeight;\n const internalFormat = mapVkFormatToWebGL(ktx.vkFormat);\n\n return extractMipmapImages(ktx.levels, {\n mipMapLevels,\n width,\n height,\n sizeFunction: (level: any): number => level.uncompressedByteLength,\n internalFormat\n });\n}\n"],"mappings":";;;;;;;AACA;AACA;AACA;AAEA,IAAMA,OAAO,GAAG;AAEd,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvE;;AAGM,SAASC,KAAK,CAACC,IAAiB,EAAE;EAEvC,IAAMC,EAAE,GAAG,IAAIC,UAAU,CAACF,IAAI,CAAC;EAC/B,IAAMG,MAAM,GACVF,EAAE,CAACG,UAAU,GAAGN,OAAO,CAACO,MAAM,IAC9BJ,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC;EACpBG,EAAE,CAAC,EAAE,CAAC,KAAKH,OAAO,CAAC,EAAE,CAAC;EACtBG,EAAE,CAAC,EAAE,CAAC,KAAKH,OAAO,CAAC,EAAE,CAAC;;EAExB,OAAO,CAACK,MAAM;AAChB;AAEO,SAASG,QAAQ,CAACC,WAAwB,EAAkB;EACjE,IAAMC,UAAU,GAAG,IAAIN,UAAU,CAACK,WAAW,CAAC;EAC9C,IAAME,GAAG,GAAG,IAAAC,cAAI,EAACF,UAAU,CAAC;EAC5B,IAAMG,YAAY,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,GAAG,CAACK,MAAM,CAACT,MAAM,CAAC;EACnD,IAAMU,KAAK,GAAGN,GAAG,CAACO,UAAU;EAC5B,IAAMC,MAAM,GAAGR,GAAG,CAACS,WAAW;EAC9B,IAAMC,cAAc,GAAG,IAAAC,mCAAkB,EAACX,GAAG,CAACY,QAAQ,CAAC;EAEvD,OAAO,IAAAC,wCAAmB,EAACb,GAAG,CAACK,MAAM,EAAE;IACrCH,YAAY,EAAZA,YAAY;IACZI,KAAK,EAALA,KAAK;IACLE,MAAM,EAANA,MAAM;IACNM,YAAY,EAAE,sBAACC,KAAU;MAAA,OAAaA,KAAK,CAACC,sBAAsB;IAAA;IAClEN,cAAc,EAAdA;EACF,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"parse-ktx.js","names":["_ktxParse","require","_extractMipmapImages","_ktxFormatHelper","KTX2_ID","isKTX","data","id","Uint8Array","notKTX","byteLength","length","parseKTX","arrayBuffer","uint8Array","ktx","read","mipMapLevels","Math","max","levels","width","pixelWidth","height","pixelHeight","internalFormat","mapVkFormatToWebGL","vkFormat","extractMipmapImages","sizeFunction","level","uncompressedByteLength"],"sources":["../../../../src/lib/parsers/parse-ktx.ts"],"sourcesContent":["import type {TextureLevel} from '@loaders.gl/schema';\nimport {read} from 'ktx-parse';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\nimport {mapVkFormatToWebGL} from '../utils/ktx-format-helper';\n\nconst KTX2_ID = [\n // '´', 'K', 'T', 'X', '2', '0', 'ª', '\\r', '\\n', '\\x1A', '\\n'\n 0xab, 0x4b, 0x54, 0x58, 0x20, 0x32, 0x30, 0xbb, 0x0d, 0x0a, 0x1a, 0x0a\n];\n\n// eslint-disable-next-line complexity\nexport function isKTX(data: ArrayBuffer) {\n // const id = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n const id = new Uint8Array(data);\n const notKTX =\n id.byteLength < KTX2_ID.length ||\n id[0] !== KTX2_ID[0] || // '´'\n id[1] !== KTX2_ID[1] || // 'K'\n id[2] !== KTX2_ID[2] || // 'T'\n id[3] !== KTX2_ID[3] || // 'X'\n id[4] !== KTX2_ID[4] || // ' '\n id[5] !== KTX2_ID[5] || // '2'\n id[6] !== KTX2_ID[6] || // '0'\n id[7] !== KTX2_ID[7] || // 'ª'\n id[8] !== KTX2_ID[8] || // '\\r'\n id[9] !== KTX2_ID[9] || // '\\n'\n id[10] !== KTX2_ID[10] || // '\\x1A'\n id[11] !== KTX2_ID[11]; // '\\n'\n\n return !notKTX;\n}\n\nexport function parseKTX(arrayBuffer: ArrayBuffer): TextureLevel[] {\n const uint8Array = new Uint8Array(arrayBuffer);\n const ktx = read(uint8Array);\n const mipMapLevels = Math.max(1, ktx.levels.length);\n const width = ktx.pixelWidth;\n const height = ktx.pixelHeight;\n const internalFormat = mapVkFormatToWebGL(ktx.vkFormat);\n\n return extractMipmapImages(ktx.levels, {\n mipMapLevels,\n width,\n height,\n sizeFunction: (level: any): number => level.uncompressedByteLength,\n internalFormat\n });\n}\n"],"mappings":";;;;;;;AACA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AAEA,IAAMG,OAAO,GAAG,CAEd,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvE;AAGM,SAASC,KAAKA,CAACC,IAAiB,EAAE;EAEvC,IAAMC,EAAE,GAAG,IAAIC,UAAU,CAACF,IAAI,CAAC;EAC/B,IAAMG,MAAM,GACVF,EAAE,CAACG,UAAU,GAAGN,OAAO,CAACO,MAAM,IAC9BJ,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,CAAC,CAAC,KAAKH,OAAO,CAAC,CAAC,CAAC,IACpBG,EAAE,CAAC,EAAE,CAAC,KAAKH,OAAO,CAAC,EAAE,CAAC,IACtBG,EAAE,CAAC,EAAE,CAAC,KAAKH,OAAO,CAAC,EAAE,CAAC;EAExB,OAAO,CAACK,MAAM;AAChB;AAEO,SAASG,QAAQA,CAACC,WAAwB,EAAkB;EACjE,IAAMC,UAAU,GAAG,IAAIN,UAAU,CAACK,WAAW,CAAC;EAC9C,IAAME,GAAG,GAAG,IAAAC,cAAI,EAACF,UAAU,CAAC;EAC5B,IAAMG,YAAY,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEJ,GAAG,CAACK,MAAM,CAACT,MAAM,CAAC;EACnD,IAAMU,KAAK,GAAGN,GAAG,CAACO,UAAU;EAC5B,IAAMC,MAAM,GAAGR,GAAG,CAACS,WAAW;EAC9B,IAAMC,cAAc,GAAG,IAAAC,mCAAkB,EAACX,GAAG,CAACY,QAAQ,CAAC;EAEvD,OAAO,IAAAC,wCAAmB,EAACb,GAAG,CAACK,MAAM,EAAE;IACrCH,YAAY,EAAZA,YAAY;IACZI,KAAK,EAALA,KAAK;IACLE,MAAM,EAANA,MAAM;IACNM,YAAY,EAAE,SAAAA,aAACC,KAAU;MAAA,OAAaA,KAAK,CAACC,sBAAsB;IAAA;IAClEN,cAAc,EAAdA;EACF,CAAC,CAAC;AACJ"}
@@ -4,14 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.parseNPY = parseNPY;
7
-
8
7
  function systemIsLittleEndian() {
9
8
  var a = new Uint32Array([0x12345678]);
10
9
  var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);
11
10
  return !(b[0] === 0x12);
12
11
  }
13
12
  var LITTLE_ENDIAN_OS = systemIsLittleEndian();
14
-
15
13
  var DTYPES = {
16
14
  u1: Uint8Array,
17
15
  i1: Int8Array,
@@ -44,7 +42,6 @@ function parseNPY(arrayBuffer, options) {
44
42
  throw new Error('Buffer overflow');
45
43
  }
46
44
  var data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));
47
-
48
45
  if (numpyType[0] === '>' && LITTLE_ENDIAN_OS || numpyType[0] === '<' && !LITTLE_ENDIAN_OS) {
49
46
  throw new Error('Incorrect endianness');
50
47
  }
@@ -53,10 +50,8 @@ function parseNPY(arrayBuffer, options) {
53
50
  header: header
54
51
  };
55
52
  }
56
-
57
53
  function parseHeader(view) {
58
54
  var majorVersion = view.getUint8(6);
59
-
60
55
  var offset = 8;
61
56
  var headerLength;
62
57
  if (majorVersion >= 2) {
@@ -1 +1 @@
1
- {"version":3,"file":"parse-npy.js","names":["systemIsLittleEndian","a","Uint32Array","b","Uint8Array","buffer","byteOffset","byteLength","LITTLE_ENDIAN_OS","DTYPES","u1","i1","Int8Array","u2","Uint16Array","i2","Int16Array","u4","i4","Int32Array","f4","Float32Array","f8","Float64Array","parseNPY","arrayBuffer","options","view","DataView","parseHeader","header","headerEndOffset","numpyType","descr","ArrayType","slice","Error","nArrayElements","shape","reduce","arrayByteLength","BYTES_PER_ELEMENT","data","majorVersion","getUint8","offset","headerLength","getUint32","getUint16","encoding","decoder","TextDecoder","headerArray","headerText","decode","JSON","parse","replace"],"sources":["../../../../src/lib/parsers/parse-npy.ts"],"sourcesContent":["// import type {TextureLevel} from '@loaders.gl/schema';\n\ntype NumpyHeader = {descr: string; shape: number[]};\ntype TypedArrayConstructor =\n | typeof Int8Array\n | typeof Uint8Array\n | typeof Int16Array\n | typeof Uint16Array\n | typeof Int32Array\n | typeof Uint32Array\n | typeof Int32Array\n | typeof Uint32Array\n | typeof Float32Array\n | typeof Float64Array;\n\nfunction systemIsLittleEndian() {\n const a = new Uint32Array([0x12345678]);\n const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return !(b[0] === 0x12);\n}\n\nconst LITTLE_ENDIAN_OS = systemIsLittleEndian();\n\n// The basic string format consists of 3 characters:\n// 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)\n// 2. a character code giving the basic type of the array\n// 3. an integer providing the number of bytes the type uses.\n// https://numpy.org/doc/stable/reference/arrays.interface.html\n//\n// Here I only include the second and third characters, and check endianness\n// separately\nconst DTYPES: Record<string, TypedArrayConstructor> = {\n u1: Uint8Array,\n i1: Int8Array,\n u2: Uint16Array,\n i2: Int16Array,\n u4: Uint32Array,\n i4: Int32Array,\n f4: Float32Array,\n f8: Float64Array\n};\n\nexport function parseNPY(arrayBuffer: ArrayBuffer, options?: unknown) {\n if (!arrayBuffer) {\n return null;\n }\n\n const view = new DataView(arrayBuffer);\n const {header, headerEndOffset} = parseHeader(view);\n\n const numpyType = header.descr;\n const ArrayType = DTYPES[numpyType.slice(1, 3)];\n if (!ArrayType) {\n throw new Error(`Unimplemented type ${numpyType}`);\n }\n\n const nArrayElements = header.shape?.reduce((a: number, b: number): number => a * b);\n const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;\n\n if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {\n throw new Error('Buffer overflow');\n }\n const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));\n\n // Swap endianness if needed\n if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {\n throw new Error('Incorrect endianness');\n }\n\n return {\n data,\n header\n };\n}\n\n/**\n * Parse NPY header\n *\n * @param view\n * @return\n */\nfunction parseHeader(view: DataView): {header: NumpyHeader; headerEndOffset: number} {\n const majorVersion = view.getUint8(6);\n // const minorVersion = view.getUint8(7);\n\n let offset = 8;\n let headerLength: number;\n if (majorVersion >= 2) {\n headerLength = view.getUint32(offset, true);\n offset += 4;\n } else {\n headerLength = view.getUint16(offset, true);\n offset += 2;\n }\n\n const encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';\n const decoder = new TextDecoder(encoding);\n const headerArray = new Uint8Array(view.buffer, offset, headerLength);\n const headerText = decoder.decode(headerArray);\n offset += headerLength;\n\n const header = JSON.parse(\n headerText\n .replace(/'/g, '\"')\n .replace('False', 'false')\n .replace('(', '[')\n .replace(/,*\\),*/g, ']')\n );\n\n return {header, headerEndOffset: offset};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-npy.js","names":["systemIsLittleEndian","a","Uint32Array","b","Uint8Array","buffer","byteOffset","byteLength","LITTLE_ENDIAN_OS","DTYPES","u1","i1","Int8Array","u2","Uint16Array","i2","Int16Array","u4","i4","Int32Array","f4","Float32Array","f8","Float64Array","parseNPY","arrayBuffer","options","_header$shape","view","DataView","_parseHeader","parseHeader","header","headerEndOffset","numpyType","descr","ArrayType","slice","Error","concat","nArrayElements","shape","reduce","arrayByteLength","BYTES_PER_ELEMENT","data","majorVersion","getUint8","offset","headerLength","getUint32","getUint16","encoding","decoder","TextDecoder","headerArray","headerText","decode","JSON","parse","replace"],"sources":["../../../../src/lib/parsers/parse-npy.ts"],"sourcesContent":["// import type {TextureLevel} from '@loaders.gl/schema';\n\ntype NumpyHeader = {descr: string; shape: number[]};\ntype TypedArrayConstructor =\n | typeof Int8Array\n | typeof Uint8Array\n | typeof Int16Array\n | typeof Uint16Array\n | typeof Int32Array\n | typeof Uint32Array\n | typeof Int32Array\n | typeof Uint32Array\n | typeof Float32Array\n | typeof Float64Array;\n\nfunction systemIsLittleEndian() {\n const a = new Uint32Array([0x12345678]);\n const b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return !(b[0] === 0x12);\n}\n\nconst LITTLE_ENDIAN_OS = systemIsLittleEndian();\n\n// The basic string format consists of 3 characters:\n// 1. a character describing the byteorder of the data (<: little-endian, >: big-endian, |: not-relevant)\n// 2. a character code giving the basic type of the array\n// 3. an integer providing the number of bytes the type uses.\n// https://numpy.org/doc/stable/reference/arrays.interface.html\n//\n// Here I only include the second and third characters, and check endianness\n// separately\nconst DTYPES: Record<string, TypedArrayConstructor> = {\n u1: Uint8Array,\n i1: Int8Array,\n u2: Uint16Array,\n i2: Int16Array,\n u4: Uint32Array,\n i4: Int32Array,\n f4: Float32Array,\n f8: Float64Array\n};\n\nexport function parseNPY(arrayBuffer: ArrayBuffer, options?: unknown) {\n if (!arrayBuffer) {\n return null;\n }\n\n const view = new DataView(arrayBuffer);\n const {header, headerEndOffset} = parseHeader(view);\n\n const numpyType = header.descr;\n const ArrayType = DTYPES[numpyType.slice(1, 3)];\n if (!ArrayType) {\n throw new Error(`Unimplemented type ${numpyType}`);\n }\n\n const nArrayElements = header.shape?.reduce((a: number, b: number): number => a * b);\n const arrayByteLength = nArrayElements * ArrayType.BYTES_PER_ELEMENT;\n\n if (arrayBuffer.byteLength < headerEndOffset + arrayByteLength) {\n throw new Error('Buffer overflow');\n }\n const data = new ArrayType(arrayBuffer.slice(headerEndOffset, headerEndOffset + arrayByteLength));\n\n // Swap endianness if needed\n if ((numpyType[0] === '>' && LITTLE_ENDIAN_OS) || (numpyType[0] === '<' && !LITTLE_ENDIAN_OS)) {\n throw new Error('Incorrect endianness');\n }\n\n return {\n data,\n header\n };\n}\n\n/**\n * Parse NPY header\n *\n * @param view\n * @return\n */\nfunction parseHeader(view: DataView): {header: NumpyHeader; headerEndOffset: number} {\n const majorVersion = view.getUint8(6);\n // const minorVersion = view.getUint8(7);\n\n let offset = 8;\n let headerLength: number;\n if (majorVersion >= 2) {\n headerLength = view.getUint32(offset, true);\n offset += 4;\n } else {\n headerLength = view.getUint16(offset, true);\n offset += 2;\n }\n\n const encoding = majorVersion <= 2 ? 'latin1' : 'utf-8';\n const decoder = new TextDecoder(encoding);\n const headerArray = new Uint8Array(view.buffer, offset, headerLength);\n const headerText = decoder.decode(headerArray);\n offset += headerLength;\n\n const header = JSON.parse(\n headerText\n .replace(/'/g, '\"')\n .replace('False', 'false')\n .replace('(', '[')\n .replace(/,*\\),*/g, ']')\n );\n\n return {header, headerEndOffset: offset};\n}\n"],"mappings":"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"}
@@ -7,7 +7,6 @@ exports.isPVR = isPVR;
7
7
  exports.parsePVR = parsePVR;
8
8
  var _glExtensions = require("../gl-extensions");
9
9
  var _extractMipmapImages = require("../utils/extract-mipmap-images");
10
-
11
10
  var PVR_CONSTANTS = {
12
11
  MAGIC_NUMBER: 0x03525650,
13
12
  MAGIC_NUMBER_EXTRA: 0x50565203,
@@ -79,13 +78,11 @@ var PVR_SIZE_FUNCTIONS = {
79
78
  39: atc12x10Size,
80
79
  40: atc12x12Size
81
80
  };
82
-
83
81
  function isPVR(data) {
84
82
  var header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
85
83
  var version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];
86
84
  return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;
87
85
  }
88
-
89
86
  function parsePVR(data) {
90
87
  var header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);
91
88
  var pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];
@@ -106,75 +103,58 @@ function parsePVR(data) {
106
103
  internalFormat: internalFormat
107
104
  });
108
105
  }
109
-
110
106
  function pvrtc2bppSize(width, height) {
111
107
  width = Math.max(width, 16);
112
108
  height = Math.max(height, 8);
113
109
  return width * height / 4;
114
110
  }
115
-
116
111
  function pvrtc4bppSize(width, height) {
117
112
  width = Math.max(width, 8);
118
113
  height = Math.max(height, 8);
119
114
  return width * height / 2;
120
115
  }
121
-
122
116
  function dxtEtcSmallSize(width, height) {
123
117
  return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;
124
118
  }
125
-
126
119
  function dxtEtcAstcBigSize(width, height) {
127
120
  return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;
128
121
  }
129
-
130
122
  function atc5x4Size(width, height) {
131
123
  return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;
132
124
  }
133
-
134
125
  function atc5x5Size(width, height) {
135
126
  return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;
136
127
  }
137
-
138
128
  function atc6x5Size(width, height) {
139
129
  return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;
140
130
  }
141
-
142
131
  function atc6x6Size(width, height) {
143
132
  return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;
144
133
  }
145
-
146
134
  function atc8x5Size(width, height) {
147
135
  return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;
148
136
  }
149
-
150
137
  function atc8x6Size(width, height) {
151
138
  return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;
152
139
  }
153
-
154
140
  function atc8x8Size(width, height) {
155
141
  return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;
156
142
  }
157
-
158
143
  function atc10x5Size(width, height) {
159
144
  return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;
160
145
  }
161
-
162
146
  function atc10x6Size(width, height) {
163
147
  return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;
164
148
  }
165
-
166
149
  function atc10x8Size(width, height) {
167
150
  return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;
168
151
  }
169
-
170
152
  function atc10x10Size(width, height) {
171
153
  return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;
172
154
  }
173
-
174
155
  function atc12x10Size(width, height) {
175
156
  return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;
176
157
  }
177
-
178
158
  function atc12x12Size(width, height) {
179
159
  return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;
180
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parse-pvr.js","names":["PVR_CONSTANTS","MAGIC_NUMBER","MAGIC_NUMBER_EXTRA","HEADER_LENGTH","HEADER_SIZE","MAGIC_NUMBER_INDEX","PIXEL_FORMAT_INDEX","COLOUR_SPACE_INDEX","HEIGHT_INDEX","WIDTH_INDEX","MIPMAPCOUNT_INDEX","METADATA_SIZE_INDEX","PVR_PIXEL_FORMATS","GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_RGBA_ASTC_4X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR","COMPRESSED_RGBA_ASTC_5X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR","COMPRESSED_RGBA_ASTC_5X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR","COMPRESSED_RGBA_ASTC_6X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR","COMPRESSED_RGBA_ASTC_6X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR","COMPRESSED_RGBA_ASTC_8X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR","COMPRESSED_RGBA_ASTC_8X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR","COMPRESSED_RGBA_ASTC_8X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR","COMPRESSED_RGBA_ASTC_10X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR","COMPRESSED_RGBA_ASTC_10X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR","COMPRESSED_RGBA_ASTC_10X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR","COMPRESSED_RGBA_ASTC_10X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR","COMPRESSED_RGBA_ASTC_12X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR","COMPRESSED_RGBA_ASTC_12X12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR","PVR_SIZE_FUNCTIONS","pvrtc2bppSize","pvrtc4bppSize","dxtEtcSmallSize","dxtEtcAstcBigSize","atc5x4Size","atc5x5Size","atc6x5Size","atc6x6Size","atc8x5Size","atc8x6Size","atc8x8Size","atc10x5Size","atc10x6Size","atc10x8Size","atc10x10Size","atc12x10Size","atc12x12Size","isPVR","data","header","Uint32Array","version","parsePVR","pvrFormat","colourSpace","pixelFormats","internalFormat","length","sizeFunction","mipMapLevels","width","height","dataOffset","image","Uint8Array","extractMipmapImages","Math","max","floor"],"sources":["../../../../src/lib/parsers/parse-pvr.ts"],"sourcesContent":["/* eslint-disable camelcase */\n// Forked from PicoGL: https://github.com/tsherif/picogl.js/blob/master/examples/utils/utils.js\n// Copyright (c) 2017 Tarek Sherif, The MIT License (MIT)\n\nimport type {TextureLevel} from '@loaders.gl/schema';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\nconst PVR_CONSTANTS: Record<string, number> = {\n MAGIC_NUMBER: 0x03525650,\n MAGIC_NUMBER_EXTRA: 0x50565203,\n HEADER_LENGTH: 13,\n HEADER_SIZE: 52,\n MAGIC_NUMBER_INDEX: 0,\n PIXEL_FORMAT_INDEX: 2,\n COLOUR_SPACE_INDEX: 4,\n HEIGHT_INDEX: 6,\n WIDTH_INDEX: 7,\n MIPMAPCOUNT_INDEX: 11,\n METADATA_SIZE_INDEX: 12\n};\n\nconst PVR_PIXEL_FORMATS: Record<number, number[]> = {\n 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],\n 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],\n 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],\n 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],\n 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],\n 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],\n 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],\n 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],\n 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],\n 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],\n 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],\n 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],\n 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],\n 27: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR\n ],\n 28: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR\n ],\n 29: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR\n ],\n 30: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR\n ],\n 31: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR\n ],\n 32: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR\n ],\n 33: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR\n ],\n 34: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR\n ],\n 35: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR\n ],\n 36: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR\n ],\n 37: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR\n ],\n 38: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR\n ],\n 39: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR\n ],\n 40: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR\n ]\n};\n\nconst PVR_SIZE_FUNCTIONS: Record<number, (width: number, height: number) => number> = {\n 0: pvrtc2bppSize,\n 1: pvrtc2bppSize,\n 2: pvrtc4bppSize,\n 3: pvrtc4bppSize,\n 6: dxtEtcSmallSize,\n 7: dxtEtcSmallSize,\n 9: dxtEtcAstcBigSize,\n 11: dxtEtcAstcBigSize,\n 22: dxtEtcSmallSize,\n 23: dxtEtcAstcBigSize,\n 24: dxtEtcSmallSize,\n 25: dxtEtcSmallSize,\n 26: dxtEtcAstcBigSize,\n 27: dxtEtcAstcBigSize,\n 28: atc5x4Size,\n 29: atc5x5Size,\n 30: atc6x5Size,\n 31: atc6x6Size,\n 32: atc8x5Size,\n 33: atc8x6Size,\n 34: atc8x8Size,\n 35: atc10x5Size,\n 36: atc10x6Size,\n 37: atc10x8Size,\n 38: atc10x10Size,\n 39: atc12x10Size,\n 40: atc12x12Size\n};\n\n/**\n * Check if data is in \"PVR\" format by its magic number\n * @param data - binary data of compressed texture\n * @returns true - data in \"PVR\" format, else - false\n */\nexport function isPVR(data: ArrayBuffer): boolean {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];\n\n return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;\n}\n\n/**\n * Parse texture data as \"PVR\" format\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n * @see http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf\n */\nexport function parsePVR(data: ArrayBuffer): TextureLevel[] {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n\n const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];\n const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];\n const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];\n const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];\n\n const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];\n\n const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];\n\n const width = header[PVR_CONSTANTS.WIDTH_INDEX];\n const height = header[PVR_CONSTANTS.HEIGHT_INDEX];\n\n const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];\n\n const image = new Uint8Array(data, dataOffset);\n\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat\n });\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc2bppSize(width: number, height: number): number {\n width = Math.max(width, 16);\n height = Math.max(height, 8);\n\n return (width * height) / 4;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc4bppSize(width: number, height: number): number {\n width = Math.max(width, 8);\n height = Math.max(height, 8);\n\n return (width * height) / 2;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// Size for:\n// COMPRESSED_RGB_S3TC_DXT1_EXT\n// COMPRESSED_R11_EAC\n// COMPRESSED_SIGNED_R11_EAC\n// COMPRESSED_RGB8_ETC2\n// COMPRESSED_SRGB8_ETC2\n// COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\n// COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\nfunction dxtEtcSmallSize(width: number, height: number): number {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\n// Size for:\n// COMPRESSED_RGBA_S3TC_DXT3_EXT\n// COMPRESSED_RGBA_S3TC_DXT5_EXT\n// COMPRESSED_RG11_EAC\n// COMPRESSED_SIGNED_RG11_EAC\n// COMPRESSED_RGBA8_ETC2_EAC\n// COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n// COMPRESSED_RGBA_ASTC_4x4_KHR\nfunction dxtEtcAstcBigSize(width: number, height: number): number {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x4Size(width: number, height: number): number {\n return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x5Size(width: number, height: number): number {\n return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x5Size(width: number, height: number): number {\n return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x6Size(width: number, height: number): number {\n return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x5Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x6Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x8Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x5Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x6Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x8Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x10Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x10Size(width: number, height: number): number {\n return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x12Size(width: number, height: number): number {\n return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-pvr.js","names":["_glExtensions","require","_extractMipmapImages","PVR_CONSTANTS","MAGIC_NUMBER","MAGIC_NUMBER_EXTRA","HEADER_LENGTH","HEADER_SIZE","MAGIC_NUMBER_INDEX","PIXEL_FORMAT_INDEX","COLOUR_SPACE_INDEX","HEIGHT_INDEX","WIDTH_INDEX","MIPMAPCOUNT_INDEX","METADATA_SIZE_INDEX","PVR_PIXEL_FORMATS","GL_EXTENSIONS_CONSTANTS","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB_ETC1_WEBGL","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2","COMPRESSED_R11_EAC","COMPRESSED_RG11_EAC","COMPRESSED_RGBA_ASTC_4X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR","COMPRESSED_RGBA_ASTC_5X4_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR","COMPRESSED_RGBA_ASTC_5X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR","COMPRESSED_RGBA_ASTC_6X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR","COMPRESSED_RGBA_ASTC_6X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR","COMPRESSED_RGBA_ASTC_8X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR","COMPRESSED_RGBA_ASTC_8X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR","COMPRESSED_RGBA_ASTC_8X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR","COMPRESSED_RGBA_ASTC_10X5_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR","COMPRESSED_RGBA_ASTC_10X6_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR","COMPRESSED_RGBA_ASTC_10X8_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR","COMPRESSED_RGBA_ASTC_10X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR","COMPRESSED_RGBA_ASTC_12X10_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR","COMPRESSED_RGBA_ASTC_12X12_KHR","COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR","PVR_SIZE_FUNCTIONS","pvrtc2bppSize","pvrtc4bppSize","dxtEtcSmallSize","dxtEtcAstcBigSize","atc5x4Size","atc5x5Size","atc6x5Size","atc6x6Size","atc8x5Size","atc8x6Size","atc8x8Size","atc10x5Size","atc10x6Size","atc10x8Size","atc10x10Size","atc12x10Size","atc12x12Size","isPVR","data","header","Uint32Array","version","parsePVR","pvrFormat","colourSpace","pixelFormats","internalFormat","length","sizeFunction","mipMapLevels","width","height","dataOffset","image","Uint8Array","extractMipmapImages","Math","max","floor"],"sources":["../../../../src/lib/parsers/parse-pvr.ts"],"sourcesContent":["/* eslint-disable camelcase */\n// Forked from PicoGL: https://github.com/tsherif/picogl.js/blob/master/examples/utils/utils.js\n// Copyright (c) 2017 Tarek Sherif, The MIT License (MIT)\n\nimport type {TextureLevel} from '@loaders.gl/schema';\nimport {GL_EXTENSIONS_CONSTANTS} from '../gl-extensions';\nimport {extractMipmapImages} from '../utils/extract-mipmap-images';\n\nconst PVR_CONSTANTS: Record<string, number> = {\n MAGIC_NUMBER: 0x03525650,\n MAGIC_NUMBER_EXTRA: 0x50565203,\n HEADER_LENGTH: 13,\n HEADER_SIZE: 52,\n MAGIC_NUMBER_INDEX: 0,\n PIXEL_FORMAT_INDEX: 2,\n COLOUR_SPACE_INDEX: 4,\n HEIGHT_INDEX: 6,\n WIDTH_INDEX: 7,\n MIPMAPCOUNT_INDEX: 11,\n METADATA_SIZE_INDEX: 12\n};\n\nconst PVR_PIXEL_FORMATS: Record<number, number[]> = {\n 0: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_2BPPV1_IMG],\n 1: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG],\n 2: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG],\n 3: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG],\n 6: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_ETC1_WEBGL],\n 7: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB_S3TC_DXT1_EXT],\n 9: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT3_EXT],\n 11: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_S3TC_DXT5_EXT],\n 22: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_ETC2],\n 23: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA8_ETC2_EAC],\n 24: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2],\n 25: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_R11_EAC],\n 26: [GL_EXTENSIONS_CONSTANTS.COMPRESSED_RG11_EAC],\n 27: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_4X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_4X4_KHR\n ],\n 28: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X4_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X4_KHR\n ],\n 29: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_5X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_5X5_KHR\n ],\n 30: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X5_KHR\n ],\n 31: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_6X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_6X6_KHR\n ],\n 32: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X5_KHR\n ],\n 33: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X6_KHR\n ],\n 34: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_8X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_8X8_KHR\n ],\n 35: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X5_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X5_KHR\n ],\n 36: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X6_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X6_KHR\n ],\n 37: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X8_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X8_KHR\n ],\n 38: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_10X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_10X10_KHR\n ],\n 39: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X10_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X10_KHR\n ],\n 40: [\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_RGBA_ASTC_12X12_KHR,\n GL_EXTENSIONS_CONSTANTS.COMPRESSED_SRGB8_ALPHA8_ASTC_12X12_KHR\n ]\n};\n\nconst PVR_SIZE_FUNCTIONS: Record<number, (width: number, height: number) => number> = {\n 0: pvrtc2bppSize,\n 1: pvrtc2bppSize,\n 2: pvrtc4bppSize,\n 3: pvrtc4bppSize,\n 6: dxtEtcSmallSize,\n 7: dxtEtcSmallSize,\n 9: dxtEtcAstcBigSize,\n 11: dxtEtcAstcBigSize,\n 22: dxtEtcSmallSize,\n 23: dxtEtcAstcBigSize,\n 24: dxtEtcSmallSize,\n 25: dxtEtcSmallSize,\n 26: dxtEtcAstcBigSize,\n 27: dxtEtcAstcBigSize,\n 28: atc5x4Size,\n 29: atc5x5Size,\n 30: atc6x5Size,\n 31: atc6x6Size,\n 32: atc8x5Size,\n 33: atc8x6Size,\n 34: atc8x8Size,\n 35: atc10x5Size,\n 36: atc10x6Size,\n 37: atc10x8Size,\n 38: atc10x10Size,\n 39: atc12x10Size,\n 40: atc12x12Size\n};\n\n/**\n * Check if data is in \"PVR\" format by its magic number\n * @param data - binary data of compressed texture\n * @returns true - data in \"PVR\" format, else - false\n */\nexport function isPVR(data: ArrayBuffer): boolean {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n const version = header[PVR_CONSTANTS.MAGIC_NUMBER_INDEX];\n\n return version === PVR_CONSTANTS.MAGIC_NUMBER || version === PVR_CONSTANTS.MAGIC_NUMBER_EXTRA;\n}\n\n/**\n * Parse texture data as \"PVR\" format\n * @param data - binary data of compressed texture\n * @returns Array of the texture levels\n * @see http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf\n */\nexport function parsePVR(data: ArrayBuffer): TextureLevel[] {\n const header = new Uint32Array(data, 0, PVR_CONSTANTS.HEADER_LENGTH);\n\n const pvrFormat = header[PVR_CONSTANTS.PIXEL_FORMAT_INDEX];\n const colourSpace = header[PVR_CONSTANTS.COLOUR_SPACE_INDEX];\n const pixelFormats = PVR_PIXEL_FORMATS[pvrFormat] || [];\n const internalFormat = pixelFormats.length > 1 && colourSpace ? pixelFormats[1] : pixelFormats[0];\n\n const sizeFunction = PVR_SIZE_FUNCTIONS[pvrFormat];\n\n const mipMapLevels = header[PVR_CONSTANTS.MIPMAPCOUNT_INDEX];\n\n const width = header[PVR_CONSTANTS.WIDTH_INDEX];\n const height = header[PVR_CONSTANTS.HEIGHT_INDEX];\n\n const dataOffset = PVR_CONSTANTS.HEADER_SIZE + header[PVR_CONSTANTS.METADATA_SIZE_INDEX];\n\n const image = new Uint8Array(data, dataOffset);\n\n return extractMipmapImages(image, {\n mipMapLevels,\n width,\n height,\n sizeFunction,\n internalFormat\n });\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc2bppSize(width: number, height: number): number {\n width = Math.max(width, 16);\n height = Math.max(height, 8);\n\n return (width * height) / 4;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_pvrtc/\nfunction pvrtc4bppSize(width: number, height: number): number {\n width = Math.max(width, 8);\n height = Math.max(height, 8);\n\n return (width * height) / 2;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// Size for:\n// COMPRESSED_RGB_S3TC_DXT1_EXT\n// COMPRESSED_R11_EAC\n// COMPRESSED_SIGNED_R11_EAC\n// COMPRESSED_RGB8_ETC2\n// COMPRESSED_SRGB8_ETC2\n// COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2\n// COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2\nfunction dxtEtcSmallSize(width: number, height: number): number {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 8;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_s3tc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_etc/\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\n// Size for:\n// COMPRESSED_RGBA_S3TC_DXT3_EXT\n// COMPRESSED_RGBA_S3TC_DXT5_EXT\n// COMPRESSED_RG11_EAC\n// COMPRESSED_SIGNED_RG11_EAC\n// COMPRESSED_RGBA8_ETC2_EAC\n// COMPRESSED_SRGB8_ALPHA8_ETC2_EAC\n// COMPRESSED_RGBA_ASTC_4x4_KHR\nfunction dxtEtcAstcBigSize(width: number, height: number): number {\n return Math.floor((width + 3) / 4) * Math.floor((height + 3) / 4) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x4Size(width: number, height: number): number {\n return Math.floor((width + 4) / 5) * Math.floor((height + 3) / 4) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc5x5Size(width: number, height: number): number {\n return Math.floor((width + 4) / 5) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x5Size(width: number, height: number): number {\n return Math.floor((width + 5) / 6) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc6x6Size(width: number, height: number): number {\n return Math.floor((width + 5) / 6) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x5Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x6Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc8x8Size(width: number, height: number): number {\n return Math.floor((width + 7) / 8) * Math.floor((height + 7) / 8) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x5Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 4) / 5) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x6Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 5) / 6) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x8Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 7) / 8) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc10x10Size(width: number, height: number): number {\n return Math.floor((width + 9) / 10) * Math.floor((height + 9) / 10) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x10Size(width: number, height: number): number {\n return Math.floor((width + 11) / 12) * Math.floor((height + 9) / 10) * 16;\n}\n\n// https://www.khronos.org/registry/webgl/extensions/WEBGL_compressed_texture_astc/\nfunction atc12x12Size(width: number, height: number): number {\n return Math.floor((width + 11) / 12) * Math.floor((height + 11) / 12) * 16;\n}\n"],"mappings":"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"}
@@ -9,11 +9,9 @@ exports.mapSubtree = mapSubtree;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
11
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
12
-
13
12
  var isObject = function isObject(value) {
14
13
  return value && (0, _typeof2.default)(value) === 'object';
15
14
  };
16
-
17
15
  function asyncDeepMap(_x, _x2) {
18
16
  return _asyncDeepMap.apply(this, arguments);
19
17
  }
@@ -22,18 +20,16 @@ function _asyncDeepMap() {
22
20
  var options,
23
21
  _args = arguments;
24
22
  return _regenerator.default.wrap(function _callee$(_context) {
25
- while (1) {
26
- switch (_context.prev = _context.next) {
27
- case 0:
28
- options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};
29
- _context.next = 3;
30
- return mapSubtree(tree, func, options);
31
- case 3:
32
- return _context.abrupt("return", _context.sent);
33
- case 4:
34
- case "end":
35
- return _context.stop();
36
- }
23
+ while (1) switch (_context.prev = _context.next) {
24
+ case 0:
25
+ options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};
26
+ _context.next = 3;
27
+ return mapSubtree(tree, func, options);
28
+ case 3:
29
+ return _context.abrupt("return", _context.sent);
30
+ case 4:
31
+ case "end":
32
+ return _context.stop();
37
33
  }
38
34
  }, _callee);
39
35
  }));
@@ -46,36 +42,34 @@ function _mapSubtree() {
46
42
  _mapSubtree = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(object, func, options) {
47
43
  var url;
48
44
  return _regenerator.default.wrap(function _callee2$(_context2) {
49
- while (1) {
50
- switch (_context2.prev = _context2.next) {
51
- case 0:
52
- if (!Array.isArray(object)) {
53
- _context2.next = 4;
54
- break;
55
- }
56
- _context2.next = 3;
57
- return mapArray(object, func, options);
58
- case 3:
59
- return _context2.abrupt("return", _context2.sent);
60
- case 4:
61
- if (!isObject(object)) {
62
- _context2.next = 8;
63
- break;
64
- }
65
- _context2.next = 7;
66
- return mapObject(object, func, options);
67
- case 7:
68
- return _context2.abrupt("return", _context2.sent);
69
- case 8:
70
- url = object;
71
- _context2.next = 11;
72
- return func(url, options);
73
- case 11:
74
- return _context2.abrupt("return", _context2.sent);
75
- case 12:
76
- case "end":
77
- return _context2.stop();
78
- }
45
+ while (1) switch (_context2.prev = _context2.next) {
46
+ case 0:
47
+ if (!Array.isArray(object)) {
48
+ _context2.next = 4;
49
+ break;
50
+ }
51
+ _context2.next = 3;
52
+ return mapArray(object, func, options);
53
+ case 3:
54
+ return _context2.abrupt("return", _context2.sent);
55
+ case 4:
56
+ if (!isObject(object)) {
57
+ _context2.next = 8;
58
+ break;
59
+ }
60
+ _context2.next = 7;
61
+ return mapObject(object, func, options);
62
+ case 7:
63
+ return _context2.abrupt("return", _context2.sent);
64
+ case 8:
65
+ url = object;
66
+ _context2.next = 11;
67
+ return func(url, options);
68
+ case 11:
69
+ return _context2.abrupt("return", _context2.sent);
70
+ case 12:
71
+ case "end":
72
+ return _context2.stop();
79
73
  }
80
74
  }, _callee2);
81
75
  }));
@@ -87,30 +81,46 @@ function mapObject(_x6, _x7, _x8) {
87
81
  function _mapObject() {
88
82
  _mapObject = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3(object, func, options) {
89
83
  var promises, values, _loop, key;
90
- return _regenerator.default.wrap(function _callee3$(_context3) {
91
- while (1) {
92
- switch (_context3.prev = _context3.next) {
93
- case 0:
94
- promises = [];
95
- values = {};
96
- _loop = function _loop(key) {
97
- var url = object[key];
98
- var promise = mapSubtree(url, func, options).then(function (value) {
99
- values[key] = value;
100
- });
101
- promises.push(promise);
102
- };
103
- for (key in object) {
104
- _loop(key);
105
- }
106
- _context3.next = 6;
107
- return Promise.all(promises);
108
- case 6:
109
- return _context3.abrupt("return", values);
110
- case 7:
111
- case "end":
112
- return _context3.stop();
113
- }
84
+ return _regenerator.default.wrap(function _callee3$(_context4) {
85
+ while (1) switch (_context4.prev = _context4.next) {
86
+ case 0:
87
+ promises = [];
88
+ values = {};
89
+ _loop = _regenerator.default.mark(function _loop(key) {
90
+ var url, promise;
91
+ return _regenerator.default.wrap(function _loop$(_context3) {
92
+ while (1) switch (_context3.prev = _context3.next) {
93
+ case 0:
94
+ url = object[key];
95
+ promise = mapSubtree(url, func, options).then(function (value) {
96
+ values[key] = value;
97
+ });
98
+ promises.push(promise);
99
+ case 3:
100
+ case "end":
101
+ return _context3.stop();
102
+ }
103
+ }, _loop);
104
+ });
105
+ _context4.t0 = _regenerator.default.keys(object);
106
+ case 4:
107
+ if ((_context4.t1 = _context4.t0()).done) {
108
+ _context4.next = 9;
109
+ break;
110
+ }
111
+ key = _context4.t1.value;
112
+ return _context4.delegateYield(_loop(key), "t2", 7);
113
+ case 7:
114
+ _context4.next = 4;
115
+ break;
116
+ case 9:
117
+ _context4.next = 11;
118
+ return Promise.all(promises);
119
+ case 11:
120
+ return _context4.abrupt("return", values);
121
+ case 12:
122
+ case "end":
123
+ return _context4.stop();
114
124
  }
115
125
  }, _callee3);
116
126
  }));
@@ -123,23 +133,21 @@ function _mapArray() {
123
133
  _mapArray = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4(urlArray, func) {
124
134
  var options,
125
135
  promises,
126
- _args4 = arguments;
127
- return _regenerator.default.wrap(function _callee4$(_context4) {
128
- while (1) {
129
- switch (_context4.prev = _context4.next) {
130
- case 0:
131
- options = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : {};
132
- promises = urlArray.map(function (url) {
133
- return mapSubtree(url, func, options);
134
- });
135
- _context4.next = 4;
136
- return Promise.all(promises);
137
- case 4:
138
- return _context4.abrupt("return", _context4.sent);
139
- case 5:
140
- case "end":
141
- return _context4.stop();
142
- }
136
+ _args5 = arguments;
137
+ return _regenerator.default.wrap(function _callee4$(_context5) {
138
+ while (1) switch (_context5.prev = _context5.next) {
139
+ case 0:
140
+ options = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : {};
141
+ promises = urlArray.map(function (url) {
142
+ return mapSubtree(url, func, options);
143
+ });
144
+ _context5.next = 4;
145
+ return Promise.all(promises);
146
+ case 4:
147
+ return _context5.abrupt("return", _context5.sent);
148
+ case 5:
149
+ case "end":
150
+ return _context5.stop();
143
151
  }
144
152
  }, _callee4);
145
153
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"async-deep-map.js","names":["isObject","value","asyncDeepMap","tree","func","options","mapSubtree","object","Array","isArray","mapArray","mapObject","url","promises","values","key","promise","then","push","Promise","all","urlArray","map"],"sources":["../../../../src/lib/texture-api/async-deep-map.ts"],"sourcesContent":["// loaders.gl, MIT license\n/*\nAsynchronously maps a deep structure of values (e.g. objects and arrays of urls).\n\nE.g. a mipmapped cubemap\n{\n [CUBE_FACE_FRONT]: [\n \"image-front-0.jpg\",\n \"image-front-1.jpg\",\n \"image-front-2.jpg\",\n ],\n [CUBE_MAP_BACK]: [\n ...\n ]\n}\n*/\nexport type Options = Record<string, any>;\nexport type Func = (url: string, options: Options) => unknown;\n\nconst isObject = (value: any): boolean => value && typeof value === 'object';\n\n// Loads a deep structure of urls (objects and arrays of urls)\n// Returns an object with six key-value pairs containing the images (or image mip arrays)\n// for each cube face\nexport async function asyncDeepMap(tree: unknown, func: Func, options: Options = {}) {\n return await mapSubtree(tree, func, options);\n}\n\nexport async function mapSubtree(object: unknown, func: Func, options: Options) {\n if (Array.isArray(object)) {\n return await mapArray(object, func, options);\n }\n\n if (isObject(object)) {\n return await mapObject(object as object, func, options);\n }\n\n // TODO - ignore non-urls, non-arraybuffers?\n const url = object as string;\n return await func(url, options);\n}\n\n// HELPERS\n\nasync function mapObject(\n object: Record<string, any>,\n func: Func,\n options: Options\n): Promise<Record<string, any>> {\n const promises: Promise<any>[] = [];\n const values: Record<string, any> = {};\n\n for (const key in object) {\n const url = object[key];\n const promise = mapSubtree(url, func, options).then((value) => {\n values[key] = value;\n });\n promises.push(promise);\n }\n\n await Promise.all(promises);\n\n return values;\n}\n\nasync function mapArray(urlArray: string[], func: Func, options = {}): Promise<any[]> {\n const promises = urlArray.map((url) => mapSubtree(url, func, options));\n return await Promise.all(promises);\n}\n"],"mappings":";;;;;;;;;;;;AAmBA,IAAMA,QAAQ,GAAG,SAAXA,QAAQ,CAAIC,KAAU;EAAA,OAAcA,KAAK,IAAI,sBAAOA,KAAK,MAAK,QAAQ;AAAA;;AAAC,SAKvDC,YAAY;EAAA;AAAA;AAAA;EAAA,0EAA3B,iBAA4BC,IAAa,EAAEC,IAAU;IAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAAEC,OAAgB,2DAAG,CAAC,CAAC;YAAA;YAAA,OACpEC,UAAU,CAACH,IAAI,EAAEC,IAAI,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAC7C;EAAA;AAAA;AAAA,SAEqBC,UAAU;EAAA;AAAA;AAAA;EAAA,wEAAzB,kBAA0BC,MAAe,EAAEH,IAAU,EAAEC,OAAgB;IAAA;IAAA;MAAA;QAAA;UAAA;YAAA,KACxEG,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC;cAAA;cAAA;YAAA;YAAA;YAAA,OACVG,QAAQ,CAACH,MAAM,EAAEH,IAAI,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAAA,KAG1CL,QAAQ,CAACO,MAAM,CAAC;cAAA;cAAA;YAAA;YAAA;YAAA,OACLI,SAAS,CAACJ,MAAM,EAAYH,IAAI,EAAEC,OAAO,CAAC;UAAA;YAAA;UAAA;YAInDO,GAAG,GAAGL,MAAM;YAAA;YAAA,OACLH,IAAI,CAACQ,GAAG,EAAEP,OAAO,CAAC;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CAChC;EAAA;AAAA;AAAA,SAIcM,SAAS;EAAA;AAAA;AAAA;EAAA,uEAAxB,kBACEJ,MAA2B,EAC3BH,IAAU,EACVC,OAAgB;IAAA;IAAA;MAAA;QAAA;UAAA;YAEVQ,QAAwB,GAAG,EAAE;YAC7BC,MAA2B,GAAG,CAAC,CAAC;YAAA,uBAE3BC,GAAG;cACZ,IAAMH,GAAG,GAAGL,MAAM,CAACQ,GAAG,CAAC;cACvB,IAAMC,OAAO,GAAGV,UAAU,CAACM,GAAG,EAAER,IAAI,EAAEC,OAAO,CAAC,CAACY,IAAI,CAAC,UAAChB,KAAK,EAAK;gBAC7Da,MAAM,CAACC,GAAG,CAAC,GAAGd,KAAK;cACrB,CAAC,CAAC;cACFY,QAAQ,CAACK,IAAI,CAACF,OAAO,CAAC;YAAC;YALzB,KAAWD,GAAG,IAAIR,MAAM,EAAE;cAAA,MAAfQ,GAAG;YAMd;YAAC;YAAA,OAEKI,OAAO,CAACC,GAAG,CAACP,QAAQ,CAAC;UAAA;YAAA,kCAEpBC,MAAM;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACd;EAAA;AAAA;AAAA,SAEcJ,QAAQ;EAAA;AAAA;AAAA;EAAA,sEAAvB,kBAAwBW,QAAkB,EAAEjB,IAAU;IAAA;MAAA;MAAA;IAAA;MAAA;QAAA;UAAA;YAAEC,OAAO,8DAAG,CAAC,CAAC;YAC5DQ,QAAQ,GAAGQ,QAAQ,CAACC,GAAG,CAAC,UAACV,GAAG;cAAA,OAAKN,UAAU,CAACM,GAAG,EAAER,IAAI,EAAEC,OAAO,CAAC;YAAA,EAAC;YAAA;YAAA,OACzDc,OAAO,CAACC,GAAG,CAACP,QAAQ,CAAC;UAAA;YAAA;UAAA;UAAA;YAAA;QAAA;MAAA;IAAA;EAAA,CACnC;EAAA;AAAA"}
1
+ {"version":3,"file":"async-deep-map.js","names":["isObject","value","_typeof2","default","asyncDeepMap","_x","_x2","_asyncDeepMap","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","tree","func","options","_args","wrap","_callee$","_context","prev","next","length","undefined","mapSubtree","abrupt","sent","stop","_x3","_x4","_x5","_mapSubtree","_callee2","object","url","_callee2$","_context2","Array","isArray","mapArray","mapObject","_x6","_x7","_x8","_mapObject","_callee3","promises","values","_loop","key","_callee3$","_context4","promise","_loop$","_context3","then","push","t0","keys","t1","done","delegateYield","Promise","all","_x9","_x10","_mapArray","_callee4","urlArray","_args5","_callee4$","_context5","map"],"sources":["../../../../src/lib/texture-api/async-deep-map.ts"],"sourcesContent":["// loaders.gl, MIT license\n/*\nAsynchronously maps a deep structure of values (e.g. objects and arrays of urls).\n\nE.g. a mipmapped cubemap\n{\n [CUBE_FACE_FRONT]: [\n \"image-front-0.jpg\",\n \"image-front-1.jpg\",\n \"image-front-2.jpg\",\n ],\n [CUBE_MAP_BACK]: [\n ...\n ]\n}\n*/\nexport type Options = Record<string, any>;\nexport type Func = (url: string, options: Options) => unknown;\n\nconst isObject = (value: any): boolean => value && typeof value === 'object';\n\n// Loads a deep structure of urls (objects and arrays of urls)\n// Returns an object with six key-value pairs containing the images (or image mip arrays)\n// for each cube face\nexport async function asyncDeepMap(tree: unknown, func: Func, options: Options = {}) {\n return await mapSubtree(tree, func, options);\n}\n\nexport async function mapSubtree(object: unknown, func: Func, options: Options) {\n if (Array.isArray(object)) {\n return await mapArray(object, func, options);\n }\n\n if (isObject(object)) {\n return await mapObject(object as object, func, options);\n }\n\n // TODO - ignore non-urls, non-arraybuffers?\n const url = object as string;\n return await func(url, options);\n}\n\n// HELPERS\n\nasync function mapObject(\n object: Record<string, any>,\n func: Func,\n options: Options\n): Promise<Record<string, any>> {\n const promises: Promise<any>[] = [];\n const values: Record<string, any> = {};\n\n for (const key in object) {\n const url = object[key];\n const promise = mapSubtree(url, func, options).then((value) => {\n values[key] = value;\n });\n promises.push(promise);\n }\n\n await Promise.all(promises);\n\n return values;\n}\n\nasync function mapArray(urlArray: string[], func: Func, options = {}): Promise<any[]> {\n const promises = urlArray.map((url) => mapSubtree(url, func, options));\n return await Promise.all(promises);\n}\n"],"mappings":"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"}