@carbonenginejs/runtime-resource 0.9.2 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +3 -2
- package/README.md +47 -6
- package/dist/CjsMotherLode.js +88 -88
- package/dist/CjsMotherLode.js.map +1 -1
- package/dist/CjsResMan.js +717 -228
- package/dist/CjsResMan.js.map +1 -1
- package/dist/CjsResManFetchProvider.js +94 -0
- package/dist/CjsResManFetchProvider.js.map +1 -0
- package/dist/{CjsResManQueue.js → CjsResManWorkQueue.js} +112 -25
- package/dist/CjsResManWorkQueue.js.map +1 -0
- package/dist/format/CjsBlueReader.js +89 -0
- package/dist/format/CjsBlueReader.js.map +1 -1
- package/dist/format/CjsFormat.js +42 -16
- package/dist/format/CjsFormat.js.map +1 -1
- package/dist/format/CjsReader.js +4 -0
- package/dist/format/CjsReader.js.map +1 -1
- package/dist/format/CjsResourceProbe.js +2 -0
- package/dist/format/CjsResourceProbe.js.map +1 -1
- package/dist/format/payloadContract.js +20 -0
- package/dist/format/payloadContract.js.map +1 -1
- package/dist/formats/black/CjsBlackFormat.js +15 -1
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
- package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +61 -0
- package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
- package/dist/formats/black/core/CjsBlackReader.js +125 -0
- package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
- package/dist/formats/black/core/helpers.js +17 -0
- package/dist/formats/black/core/helpers.js.map +1 -1
- package/dist/formats/bnk/CjsBnkFormat.js +8 -0
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/helpers.js +20 -0
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +40 -3
- package/dist/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
- package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
- package/dist/formats/cmf/core/binary.js +71 -0
- package/dist/formats/cmf/core/binary.js.map +1 -1
- package/dist/formats/cmf/core/buffers.js +4 -0
- package/dist/formats/cmf/core/buffers.js.map +1 -1
- package/dist/formats/cmf/core/helpers.js +31 -0
- package/dist/formats/cmf/core/helpers.js.map +1 -1
- package/dist/formats/cmf/core/schema.js +10 -0
- package/dist/formats/cmf/core/schema.js.map +1 -1
- package/dist/formats/cmf/core/shared.js +9 -0
- package/dist/formats/cmf/core/shared.js.map +1 -1
- package/dist/formats/cmf/core/writer.js +54 -0
- package/dist/formats/cmf/core/writer.js.map +1 -1
- package/dist/formats/dds/core/bc6h.js +10 -0
- package/dist/formats/dds/core/bc6h.js.map +1 -1
- package/dist/formats/dds/core/bc7.js +16 -0
- package/dist/formats/dds/core/bc7.js.map +1 -1
- package/dist/formats/dds/core/helpers.js +47 -0
- package/dist/formats/dds/core/helpers.js.map +1 -1
- package/dist/formats/fbx/core/helpers.js +21 -0
- package/dist/formats/fbx/core/helpers.js.map +1 -1
- package/dist/formats/flac/CjsFlacFormat.js +49 -0
- package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/formats/flac/core/helpers.js +20 -0
- package/dist/formats/flac/core/helpers.js.map +1 -1
- package/dist/formats/gif/CjsGifFormat.js +49 -0
- package/dist/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/formats/gif/core/helpers.js +20 -0
- package/dist/formats/gif/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/helpers.js +15 -0
- package/dist/formats/gltf/core/helpers.js.map +1 -1
- package/dist/formats/gltf/core/parser.js +13 -0
- package/dist/formats/gltf/core/parser.js.map +1 -1
- package/dist/formats/gltf/core/targets.js +10 -0
- package/dist/formats/gltf/core/targets.js.map +1 -1
- package/dist/formats/gr2/core/bitknit2.js +2 -0
- package/dist/formats/gr2/core/bitknit2.js.map +1 -1
- package/dist/formats/gr2/core/helpers.js +20 -0
- package/dist/formats/gr2/core/helpers.js.map +1 -1
- package/dist/formats/gr2/core/targets.js +10 -0
- package/dist/formats/gr2/core/targets.js.map +1 -1
- package/dist/formats/jpeg/core/helpers.js +52 -0
- package/dist/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/formats/jpeg/core/jpeg.js +93 -0
- package/dist/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/formats/mp3/core/helpers.js +37 -0
- package/dist/formats/mp3/core/helpers.js.map +1 -1
- package/dist/formats/mp4/core/helpers.js +35 -0
- package/dist/formats/mp4/core/helpers.js.map +1 -1
- package/dist/formats/ogg/CjsOggFormat.js +49 -0
- package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/formats/ogg/core/helpers.js +23 -0
- package/dist/formats/ogg/core/helpers.js.map +1 -1
- package/dist/formats/ogg/core/vorbis.js +13 -0
- package/dist/formats/ogg/core/vorbis.js.map +1 -1
- package/dist/formats/png/core/helpers.js +52 -0
- package/dist/formats/png/core/helpers.js.map +1 -1
- package/dist/formats/red/CjsRedFormat.js +2 -0
- package/dist/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/formats/red/core/CjsRedReader.js +52 -0
- package/dist/formats/red/core/CjsRedReader.js.map +1 -1
- package/dist/formats/red/core/helpers.js +19 -0
- package/dist/formats/red/core/helpers.js.map +1 -1
- package/dist/formats/stl/core/stl.js +8 -0
- package/dist/formats/stl/core/stl.js.map +1 -1
- package/dist/formats/stl/core/targets.js +10 -0
- package/dist/formats/stl/core/targets.js.map +1 -1
- package/dist/formats/tga/core/helpers.js +47 -0
- package/dist/formats/tga/core/helpers.js.map +1 -1
- package/dist/formats/wav/core/helpers.js +37 -0
- package/dist/formats/wav/core/helpers.js.map +1 -1
- package/dist/formats/webm/core/helpers.js +35 -0
- package/dist/formats/webm/core/helpers.js.map +1 -1
- package/dist/formats/webp/CjsWebpFormat.js +49 -0
- package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/formats/webp/core/helpers.js +23 -0
- package/dist/formats/webp/core/helpers.js.map +1 -1
- package/dist/formats/wem/CjsWemFormat.js +8 -0
- package/dist/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/formats/wem/core/bitStream.js +2 -0
- package/dist/formats/wem/core/bitStream.js.map +1 -1
- package/dist/formats/wem/core/helpers.js +20 -0
- package/dist/formats/wem/core/helpers.js.map +1 -1
- package/dist/formats/yaml/CjsYamlFormat.js +45 -0
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/formats/yaml/core/helpers.js +10 -0
- package/dist/formats/yaml/core/helpers.js.map +1 -1
- package/dist/index.js +56 -43
- package/dist/index.js.map +1 -1
- package/dist/{CjsResource.js → resource/CjsResource.js} +232 -17
- package/dist/resource/CjsResource.js.map +1 -0
- package/dist/{resources → resource}/Tr2LightProfileRes.js +4 -3
- package/dist/resource/Tr2LightProfileRes.js.map +1 -0
- package/dist/{resources → resource/audio}/AudioGeometryResData.js +1 -1
- package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
- package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
- package/dist/resource/audio/CjsAudioRes.js +213 -0
- package/dist/resource/audio/CjsAudioRes.js.map +1 -0
- package/dist/resource/audio/index.js +4 -0
- package/dist/resource/audio/index.js.map +1 -0
- package/dist/{resources → resource/geometry}/MeshDecalData.js +1 -1
- package/dist/resource/geometry/MeshDecalData.js.map +1 -0
- package/dist/{resources → resource/geometry}/MeshDecalLodData.js +1 -1
- package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
- package/dist/resource/geometry/TriGeometryRes.js +656 -0
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +1 -1
- package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +1 -1
- package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +1 -1
- package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +1 -1
- package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +1 -1
- package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriJointBinding.js +1 -1
- package/dist/resource/geometry/TriJointBinding.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +1 -1
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
- package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +1 -1
- package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +1 -1
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +1 -1
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +6 -5
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +6 -5
- package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
- package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
- package/dist/resource/geometry/granny/enums.js.map +1 -0
- package/dist/resource/geometry/granny/index.js +6 -0
- package/dist/resource/geometry/granny/index.js.map +1 -0
- package/dist/resource/geometry/index.js +17 -0
- package/dist/resource/geometry/index.js.map +1 -0
- package/dist/resource/index.js +52 -0
- package/dist/resource/index.js.map +1 -0
- package/dist/resource/resourceBoundary.js +64 -0
- package/dist/resource/resourceBoundary.js.map +1 -0
- package/dist/resource/shader/Tr2EffectRes.js +420 -0
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
- package/dist/{resources → resource/shader}/Tr2MaterialArea.js +9 -4
- package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
- package/dist/{resources → resource/shader}/Tr2MaterialMesh.js +8 -3
- package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
- package/dist/{resources → resource/shader}/Tr2MaterialRes.js +10 -4
- package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
- package/dist/resource/shader/Tr2Shader.js +250 -0
- package/dist/resource/shader/Tr2Shader.js.map +1 -0
- package/dist/{resources → resource/shader}/Tr2ShaderPermutation.js +13 -7
- package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
- package/dist/resource/shader/index.js +17 -0
- package/dist/resource/shader/index.js.map +1 -0
- package/dist/resource/shader/portable.js +33 -0
- package/dist/resource/shader/portable.js.map +1 -0
- package/dist/resource/shader/portableValidation.js +461 -0
- package/dist/resource/shader/portableValidation.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +100 -0
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +34 -0
- package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +113 -0
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +141 -0
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +107 -0
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectResource.js +90 -0
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +235 -0
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +71 -0
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
- package/dist/resource/shader/reflection/Tr2Pass.js +111 -0
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +80 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
- package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +83 -6
- package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
- package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +56 -10
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2ImageRes.js +6 -4
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +3 -1
- package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +1 -1
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +1 -1
- package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +6 -4
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
- package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
- package/dist/{resources → resource/texture}/TriTextureRes.js +42 -26
- package/dist/resource/texture/TriTextureRes.js.map +1 -0
- package/dist/resource/texture/index.js +15 -0
- package/dist/resource/texture/index.js.map +1 -0
- package/dist/{resources → resource/texture}/texturePipelineBehavior.js +59 -59
- package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
- package/dist/worker/CjsResManMainThreadLoader.js +87 -0
- package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
- package/dist/worker/CjsResManWorker.js +217 -0
- package/dist/worker/CjsResManWorker.js.map +1 -0
- package/dist/worker/CjsResManWorkerLoader.js +434 -0
- package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
- package/dist/worker/protocol.js +12 -0
- package/dist/worker/protocol.js.map +1 -0
- package/docs/README.md +16 -3
- package/docs/architecture.md +39 -16
- package/docs/concepts/resource-lifecycle.md +2 -1
- package/docs/formats/README.md +4 -0
- package/docs/reference/classes/README.md +6 -4
- package/docs/reference/classes/audio.md +30 -0
- package/docs/reference/classes/core.md +31 -11
- package/docs/reference/classes/resources.md +151 -41
- package/docs/reference/classes/texture.md +7 -7
- package/docs/reference/motherlode-cache.md +17 -0
- package/docs/reference/queues.md +9 -1
- package/docs/reference/workers.md +135 -0
- package/docs/roadmap.md +27 -1
- package/package.json +8 -1
- package/dist/CjsResManQueue.js.map +0 -1
- package/dist/CjsResource.js.map +0 -1
- package/dist/CjsResourceSource.js +0 -68
- package/dist/CjsResourceSource.js.map +0 -1
- package/dist/resourcePath.js +0 -18
- package/dist/resourcePath.js.map +0 -1
- package/dist/resourceStates.js +0 -9
- package/dist/resourceStates.js.map +0 -1
- package/dist/resources/AudioGeometryResData.js.map +0 -1
- package/dist/resources/GStateBindingCallbackData.js.map +0 -1
- package/dist/resources/MeshDecalData.js.map +0 -1
- package/dist/resources/MeshDecalLodData.js.map +0 -1
- package/dist/resources/Tr2EffectRes.js +0 -71
- package/dist/resources/Tr2EffectRes.js.map +0 -1
- package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
- package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
- package/dist/resources/Tr2ImageRes.js.map +0 -1
- package/dist/resources/Tr2LightProfileRes.js.map +0 -1
- package/dist/resources/Tr2MaterialArea.js.map +0 -1
- package/dist/resources/Tr2MaterialMesh.js.map +0 -1
- package/dist/resources/Tr2MaterialRes.js.map +0 -1
- package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
- package/dist/resources/Tr2TextureLodManager.js.map +0 -1
- package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
- package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
- package/dist/resources/Tr2TexturePipeline.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
- package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
- package/dist/resources/TriGeometryRes.js +0 -239
- package/dist/resources/TriGeometryRes.js.map +0 -1
- package/dist/resources/TriGeometryResAreaData.js.map +0 -1
- package/dist/resources/TriGeometryResJointData.js.map +0 -1
- package/dist/resources/TriGeometryResLodData.js.map +0 -1
- package/dist/resources/TriGeometryResMeshData.js.map +0 -1
- package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
- package/dist/resources/TriGrannyRes.js.map +0 -1
- package/dist/resources/TriJointBinding.js.map +0 -1
- package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
- package/dist/resources/TriRtGeometryConstants.js.map +0 -1
- package/dist/resources/TriTextureRes.js.map +0 -1
- package/dist/resources/enums.js.map +0 -1
- package/dist/resources/resourceBoundary.js +0 -47
- package/dist/resources/resourceBoundary.js.map +0 -1
- package/dist/resources/texturePipelineBehavior.js.map +0 -1
- package/dist/texture/CjsTextureArrayRes.js.map +0 -1
- package/dist/texture/CjsTextureParameterProxy.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../src/formats/gr2/core/helpers.js"],"sourcesContent":["import { readGr2Raw } from \"./reader.js\";\nimport { emitJson, CLASS_KEYS as GR2_CLASS_KEYS } from \"./json.js\";\nimport { tangents } from \"./tangents.js\";\nimport { decompressAnimationCurves } from \"./curves.js\";\nimport { buildCmfFromShared, CMF_CLASS_KEYS, hydrateCmf } from \"./targets.js\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_GR2_JSON = \"gr2Json\";\nexport const OUTPUT_CMF = \"cmf\";\nexport const OUTPUT_RAW = \"raw\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_JSON,\n decompressCurves: false,\n unpackTangents: false,\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"decompressCurves\",\n \"unpackTangents\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\nfunction normalizeEmit(emit)\n{\n if (emit === undefined || emit === OUTPUT_JSON) return OUTPUT_JSON;\n if (emit === OUTPUT_GR2_JSON) return OUTPUT_GR2_JSON;\n if (emit === OUTPUT_GR2) return OUTPUT_GR2;\n if (emit === OUTPUT_CMF) return OUTPUT_CMF;\n if (emit === OUTPUT_RAW) return OUTPUT_RAW;\n throw new Error(`CjsFormatGr2 unknown emit value \"${emit}\"`);\n}\n\nfunction hasOwn(value, key)\n{\n return Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction classMap(values)\n{\n return values && values.classes ? values.classes : {};\n}\n\nfunction cloneValues(values)\n{\n return {\n emit: values.emit,\n decompressCurves: values.decompressCurves,\n unpackTangents: values.unpackTangents,\n rebuildMissingNormals: values.rebuildMissingNormals,\n rebuildMissingTangents: values.rebuildMissingTangents,\n rebuildMissingBiNormals: values.rebuildMissingBiNormals,\n classes: { ...classMap(values) }\n };\n}\n\nfunction assertKnownOptions(options)\n{\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`CjsFormatGr2 unknown option \"${key}\"`);\n }\n }\n}\n\nfunction validateBoolean(name, value)\n{\n if (typeof value !== \"boolean\")\n {\n throw new TypeError(`CjsFormatGr2 ${name} option must be true or false`);\n }\n return value;\n}\n\nfunction validateRule(name, value)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`CjsFormatGr2 ${name} option must be true, false, or a function`);\n}\n\nexport function validateClassKey(key)\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`CjsFormatGr2 unknown class type \"${key}\"`);\n }\n}\n\nexport function validateClass(type, Class)\n{\n validateClassKey(type);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`CjsFormatGr2 class \"${type}\" must be a constructor`);\n }\n}\n\nfunction mergeClasses(values, classes)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(\"CjsFormatGr2 classes option must be an object\");\n }\n\n const next = { ...values.classes };\n for (const [ type, Class ] of Object.entries(classes))\n {\n validateClass(type, Class);\n next[type] = Class;\n }\n values.classes = next;\n}\n\nfunction optionValue(options, keys)\n{\n for (const key of keys)\n {\n if (hasOwn(options, key)) return options[key];\n }\n return undefined;\n}\n\nexport function normalizeValues(base = DEFAULT_VALUES, options = {})\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(\"CjsFormatGr2 options must be an object\");\n }\n\n assertKnownOptions(options);\n\n const values = cloneValues(base);\n\n if (hasOwn(options, \"emit\")) values.emit = normalizeEmit(options.emit);\n if (hasOwn(options, \"decompressCurves\"))\n {\n values.decompressCurves = validateBoolean(\"decompressCurves\", options.decompressCurves);\n }\n\n const unpackTangents = optionValue(options, [ \"unpackTangents\" ]);\n if (unpackTangents !== undefined)\n {\n values.unpackTangents = validateRule(\"unpackTangents\", unpackTangents);\n }\n\n const rebuildMissingNormals = optionValue(options, [ \"rebuildMissingNormals\" ]);\n if (rebuildMissingNormals !== undefined)\n {\n values.rebuildMissingNormals = validateRule(\"rebuildMissingNormals\", rebuildMissingNormals);\n }\n\n const rebuildMissingTangents = optionValue(options, [ \"rebuildMissingTangents\" ]);\n if (rebuildMissingTangents !== undefined)\n {\n values.rebuildMissingTangents = validateRule(\"rebuildMissingTangents\", rebuildMissingTangents);\n }\n\n const rebuildMissingBiNormals = optionValue(options, [ \"rebuildMissingBiNormals\" ]);\n if (rebuildMissingBiNormals !== undefined)\n {\n values.rebuildMissingBiNormals = validateRule(\"rebuildMissingBiNormals\", rebuildMissingBiNormals);\n }\n\n if (hasOwn(options, \"classes\"))\n {\n mergeClasses(values, options.classes);\n }\n\n if ((values.emit === OUTPUT_GR2 || values.emit === OUTPUT_CMF) && !hasClasses(values.classes))\n {\n throw new TypeError(`CjsFormatGr2 emit \"${values.emit}\" requires explicit classes`);\n }\n\n return values;\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\nfunction isRawGr2Result(value)\n{\n return !!value && typeof value === \"object\" && \"fileInfo\" in value &&\n typeof value.version === \"number\";\n}\n\n/**\n * Normalizes GR2 input into a Uint8Array. readGr2Raw indexes `.buffer`,\n * `.byteOffset`, `.byteLength` and calls `.subarray()`, so a raw\n * ArrayBuffer (e.g. from `fetch(...).then(r => r.arrayBuffer())`, which\n * is how ccpwgl's resource loader supplies bytes) must be wrapped in a\n * view before it reaches readGr2Raw, not passed straight through.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input GR2 bytes.\n * @returns {Uint8Array} A Uint8Array view over the same bytes.\n */\nfunction toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (typeof ArrayBuffer !== \"undefined\" && input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"CjsFormatGr2: input must be GR2 bytes (Uint8Array, Buffer, DataView or ArrayBuffer)\");\n}\n\nexport function readRawInput(input)\n{\n return isRawGr2Result(input) ? input : readGr2Raw(toBytes(input));\n}\n\nfunction meshName(mesh, meshIndex)\n{\n return mesh && mesh.name ? `\"${mesh.name}\"` : `#${meshIndex}`;\n}\n\nfunction vertexChannel(mesh, channel)\n{\n return mesh && mesh.vertex && mesh.vertex[channel];\n}\n\nfunction hasVertexChannel(mesh, channel)\n{\n const value = vertexChannel(mesh, channel);\n return !!value && value.length > 0;\n}\n\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = vertexChannel(mesh, channel);\n if (!value || value.length === 0)\n {\n throw new Error(`CjsFormatGr2 ${feature} requires mesh.vertex.${channel} for mesh ${meshName(mesh, meshIndex)}`);\n }\n return value;\n}\n\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n\n if (faces.length === 0)\n {\n throw new Error(`CjsFormatGr2 ${feature} requires triangle indices for mesh ${meshName(mesh, meshIndex)}`);\n }\n\n return faces;\n}\n\nfunction shouldApplyMeshRule(reader, rule, context)\n{\n const fullContext = { reader, ...context };\n\n if (typeof rule === \"function\")\n {\n const result = rule(fullContext);\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsFormatGr2 ${context.feature} rule must return true or false`);\n }\n return result;\n }\n\n return rule;\n}\n\nfunction unpackMeshTangents(reader, json, raw, values)\n{\n for (let meshIndex = 0; meshIndex < (json.meshes || []).length; meshIndex++)\n {\n const mesh = json.meshes[meshIndex];\n if (shouldApplyMeshRule(reader, values.unpackTangents, {\n options: values, raw, json, mesh, meshIndex,\n feature: \"unpackTangents\",\n channel: \"tangent\"\n }))\n {\n tangents.unpack(mesh);\n }\n }\n}\n\nfunction rebuildMeshNormals(mesh, meshIndex)\n{\n const\n positions = requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n faces = triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\");\n\n mesh.vertex.normal = Array.from(tangents.generateNormals(positions, faces));\n}\n\nfunction rebuildMeshTangents(mesh, meshIndex)\n{\n const\n positions = requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n normals = requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n uvs = requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n faces = triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\");\n\n mesh.vertex.tangent = Array.from(tangents.generateTangents(positions, normals, uvs, faces));\n}\n\nfunction rebuildMeshBiNormals(mesh, meshIndex)\n{\n const\n normals = requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingBiNormals\"),\n tangentValues = requireVertexChannel(mesh, meshIndex, \"tangent\", \"rebuildMissingBiNormals\");\n\n mesh.vertex.binormal = tangents.generateBiNormals(normals, tangentValues);\n}\n\nfunction rebuildMissingMeshData(reader, json, raw, values)\n{\n for (let meshIndex = 0; meshIndex < (json.meshes || []).length; meshIndex++)\n {\n const mesh = json.meshes[meshIndex];\n if (!hasVertexChannel(mesh, \"normal\") && shouldApplyMeshRule(\n reader,\n values.rebuildMissingNormals,\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingNormals\", channel: \"normal\" }))\n {\n rebuildMeshNormals(mesh, meshIndex);\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && shouldApplyMeshRule(\n reader,\n values.rebuildMissingTangents,\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingTangents\", channel: \"tangent\" }))\n {\n rebuildMeshTangents(mesh, meshIndex);\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && shouldApplyMeshRule(\n reader,\n values.rebuildMissingBiNormals,\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }))\n {\n rebuildMeshBiNormals(mesh, meshIndex);\n }\n }\n}\n\nfunction processMeshData(reader, json, raw, values)\n{\n unpackMeshTangents(reader, json, raw, values);\n rebuildMissingMeshData(reader, json, raw, values);\n}\n\nfunction buildJson(reader, raw, values)\n{\n const json = emitJson(raw.fileInfo, raw.version, {\n classes: values.emit === OUTPUT_GR2 || ((values.emit === OUTPUT_JSON || values.emit === OUTPUT_GR2_JSON) && hasClasses(values.classes))\n ? values.classes\n : {}\n });\n\n if (values.decompressCurves)\n {\n decompressAnimationCurves(json);\n }\n\n processMeshData(reader, json, raw, values);\n\n return json;\n}\n\nexport function readWithValues(reader, input, values)\n{\n const parsed = readRawInput(input);\n if (values.emit === OUTPUT_RAW) return parsed;\n const json = buildJson(reader, parsed, values);\n return values.emit === OUTPUT_CMF\n ? hydrateCmf(buildCmfFromShared(json), values.classes, { source: values.source })\n : json;\n}\n\nexport function toJsonValue(value, seen = new WeakSet())\n{\n if (value === null || typeof value !== \"object\") return value;\n if (ArrayBuffer.isView(value)) return Array.from(value, item => toJsonValue(item, seen));\n if (Array.isArray(value)) return value.map(item => toJsonValue(item, seen));\n\n if (seen.has(value))\n {\n throw new TypeError(\"CjsFormatGr2.toJSON cannot convert circular data\");\n }\n\n if (typeof value.toJSON === \"function\")\n {\n seen.add(value);\n const json = toJsonValue(value.toJSON(), seen);\n seen.delete(value);\n return json;\n }\n\n seen.add(value);\n const out = {};\n for (const key of Object.keys(value))\n {\n out[key] = toJsonValue(value[key], seen);\n }\n seen.delete(value);\n return out;\n}\n\nexport function inspectRawGr2Result(parsed)\n{\n const\n fileInfo = parsed.fileInfo || {},\n count = value => Array.isArray(value) ? value.filter(Boolean).length : 0;\n\n return {\n reader: \"CjsFormatGr2\",\n format: \"gr2\",\n version: parsed.version | 0,\n sectionCount: parsed.secCount | 0,\n source: fileInfo.FromFileName ?? \"\",\n counts: {\n meshes: count(fileInfo.Meshes),\n models: count(fileInfo.Models),\n animations: count(fileInfo.Animations),\n materials: count(fileInfo.Materials),\n textures: count(fileInfo.Textures)\n }\n };\n}\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GR2","OUTPUT_GR2_JSON","OUTPUT_CMF","OUTPUT_RAW","DEFAULT_VALUES","emit","decompressCurves","unpackTangents","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","normalizeEmit","undefined","Error","hasOwn","value","key","prototype","hasOwnProperty","call","classMap","values","cloneValues","assertKnownOptions","options","keys","has","TypeError","validateBoolean","name","validateRule","validateClassKey","includes","validateClass","type","Class","mergeClasses","next","entries","optionValue","normalizeValues","base","hasClasses","some","isRawGr2Result","version","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","readRawInput","readGr2Raw","meshName","mesh","meshIndex","vertexChannel","channel","vertex","hasVertexChannel","length","requireVertexChannel","feature","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","reader","rule","context","fullContext","result","unpackMeshTangents","json","raw","meshes","tangents","unpack","rebuildMeshNormals","positions","normal","generateNormals","rebuildMeshTangents","normals","uvs","tangent","generateTangents","rebuildMeshBiNormals","tangentValues","binormal","generateBiNormals","rebuildMissingMeshData","processMeshData","buildJson","emitJson","fileInfo","decompressAnimationCurves","readWithValues","parsed","hydrateCmf","buildCmfFromShared","source","toJsonValue","seen","WeakSet","item","isArray","map","toJSON","add","delete","out","inspectRawGr2Result","count","filter","Boolean","format","sectionCount","secCount","FromFileName","counts","Meshes","models","Models","animations","Animations","materials","Materials","textures","Textures"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../src/formats/gr2/core/helpers.js"],"sourcesContent":["import { readGr2Raw } from \"./reader.js\";\nimport { emitJson, CLASS_KEYS as GR2_CLASS_KEYS } from \"./json.js\";\nimport { tangents } from \"./tangents.js\";\nimport { decompressAnimationCurves } from \"./curves.js\";\nimport { buildCmfFromShared, CMF_CLASS_KEYS, hydrateCmf } from \"./targets.js\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_GR2_JSON = \"gr2Json\";\nexport const OUTPUT_CMF = \"cmf\";\nexport const OUTPUT_RAW = \"raw\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_JSON,\n decompressCurves: false,\n unpackTangents: false,\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"decompressCurves\",\n \"unpackTangents\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\nfunction normalizeEmit(emit)\n{\n if (emit === undefined || emit === OUTPUT_JSON) return OUTPUT_JSON;\n if (emit === OUTPUT_GR2_JSON) return OUTPUT_GR2_JSON;\n if (emit === OUTPUT_GR2) return OUTPUT_GR2;\n if (emit === OUTPUT_CMF) return OUTPUT_CMF;\n if (emit === OUTPUT_RAW) return OUTPUT_RAW;\n throw new Error(`CjsFormatGr2 unknown emit value \"${emit}\"`);\n}\n\nfunction hasOwn(value, key)\n{\n return Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction classMap(values)\n{\n return values && values.classes ? values.classes : {};\n}\n\nfunction cloneValues(values)\n{\n return {\n emit: values.emit,\n decompressCurves: values.decompressCurves,\n unpackTangents: values.unpackTangents,\n rebuildMissingNormals: values.rebuildMissingNormals,\n rebuildMissingTangents: values.rebuildMissingTangents,\n rebuildMissingBiNormals: values.rebuildMissingBiNormals,\n classes: { ...classMap(values) }\n };\n}\n\nfunction assertKnownOptions(options)\n{\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`CjsFormatGr2 unknown option \"${key}\"`);\n }\n }\n}\n\nfunction validateBoolean(name, value)\n{\n if (typeof value !== \"boolean\")\n {\n throw new TypeError(`CjsFormatGr2 ${name} option must be true or false`);\n }\n return value;\n}\n\nfunction validateRule(name, value)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`CjsFormatGr2 ${name} option must be true, false, or a function`);\n}\n\n/** Validates a requested runtime class key for the GR2 format reader. */\nexport function validateClassKey(key)\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`CjsFormatGr2 unknown class type \"${key}\"`);\n }\n}\n\n/** Validates a resolved runtime class constructor for the GR2 format reader. */\nexport function validateClass(type, Class)\n{\n validateClassKey(type);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`CjsFormatGr2 class \"${type}\" must be a constructor`);\n }\n}\n\nfunction mergeClasses(values, classes)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(\"CjsFormatGr2 classes option must be an object\");\n }\n\n const next = { ...values.classes };\n for (const [ type, Class ] of Object.entries(classes))\n {\n validateClass(type, Class);\n next[type] = Class;\n }\n values.classes = next;\n}\n\nfunction optionValue(options, keys)\n{\n for (const key of keys)\n {\n if (hasOwn(options, key)) return options[key];\n }\n return undefined;\n}\n\n/**\n * Normalizes reader options against their supported defaults for the GR2 format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {})\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(\"CjsFormatGr2 options must be an object\");\n }\n\n assertKnownOptions(options);\n\n const values = cloneValues(base);\n\n if (hasOwn(options, \"emit\")) values.emit = normalizeEmit(options.emit);\n if (hasOwn(options, \"decompressCurves\"))\n {\n values.decompressCurves = validateBoolean(\"decompressCurves\", options.decompressCurves);\n }\n\n const unpackTangents = optionValue(options, [ \"unpackTangents\" ]);\n if (unpackTangents !== undefined)\n {\n values.unpackTangents = validateRule(\"unpackTangents\", unpackTangents);\n }\n\n const rebuildMissingNormals = optionValue(options, [ \"rebuildMissingNormals\" ]);\n if (rebuildMissingNormals !== undefined)\n {\n values.rebuildMissingNormals = validateRule(\"rebuildMissingNormals\", rebuildMissingNormals);\n }\n\n const rebuildMissingTangents = optionValue(options, [ \"rebuildMissingTangents\" ]);\n if (rebuildMissingTangents !== undefined)\n {\n values.rebuildMissingTangents = validateRule(\"rebuildMissingTangents\", rebuildMissingTangents);\n }\n\n const rebuildMissingBiNormals = optionValue(options, [ \"rebuildMissingBiNormals\" ]);\n if (rebuildMissingBiNormals !== undefined)\n {\n values.rebuildMissingBiNormals = validateRule(\"rebuildMissingBiNormals\", rebuildMissingBiNormals);\n }\n\n if (hasOwn(options, \"classes\"))\n {\n mergeClasses(values, options.classes);\n }\n\n if ((values.emit === OUTPUT_GR2 || values.emit === OUTPUT_CMF) && !hasClasses(values.classes))\n {\n throw new TypeError(`CjsFormatGr2 emit \"${values.emit}\" requires explicit classes`);\n }\n\n return values;\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\nfunction isRawGr2Result(value)\n{\n return !!value && typeof value === \"object\" && \"fileInfo\" in value &&\n typeof value.version === \"number\";\n}\n\n/**\n * Normalizes GR2 input into a Uint8Array. readGr2Raw indexes `.buffer`,\n * `.byteOffset`, `.byteLength` and calls `.subarray()`, so a raw\n * ArrayBuffer (e.g. from `fetch(...).then(r => r.arrayBuffer())`, which\n * is how ccpwgl's resource loader supplies bytes) must be wrapped in a\n * view before it reaches readGr2Raw, not passed straight through.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input GR2 bytes.\n * @returns {Uint8Array} A Uint8Array view over the same bytes.\n */\nfunction toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (typeof ArrayBuffer !== \"undefined\" && input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"CjsFormatGr2: input must be GR2 bytes (Uint8Array, Buffer, DataView or ArrayBuffer)\");\n}\n\n/** Reads and validates raw input bytes for the GR2 format reader. */\nexport function readRawInput(input)\n{\n return isRawGr2Result(input) ? input : readGr2Raw(toBytes(input));\n}\n\nfunction meshName(mesh, meshIndex)\n{\n return mesh && mesh.name ? `\"${mesh.name}\"` : `#${meshIndex}`;\n}\n\nfunction vertexChannel(mesh, channel)\n{\n return mesh && mesh.vertex && mesh.vertex[channel];\n}\n\nfunction hasVertexChannel(mesh, channel)\n{\n const value = vertexChannel(mesh, channel);\n return !!value && value.length > 0;\n}\n\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = vertexChannel(mesh, channel);\n if (!value || value.length === 0)\n {\n throw new Error(`CjsFormatGr2 ${feature} requires mesh.vertex.${channel} for mesh ${meshName(mesh, meshIndex)}`);\n }\n return value;\n}\n\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n\n if (faces.length === 0)\n {\n throw new Error(`CjsFormatGr2 ${feature} requires triangle indices for mesh ${meshName(mesh, meshIndex)}`);\n }\n\n return faces;\n}\n\nfunction shouldApplyMeshRule(reader, rule, context)\n{\n const fullContext = { reader, ...context };\n\n if (typeof rule === \"function\")\n {\n const result = rule(fullContext);\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsFormatGr2 ${context.feature} rule must return true or false`);\n }\n return result;\n }\n\n return rule;\n}\n\nfunction unpackMeshTangents(reader, json, raw, values)\n{\n for (let meshIndex = 0; meshIndex < (json.meshes || []).length; meshIndex++)\n {\n const mesh = json.meshes[meshIndex];\n if (shouldApplyMeshRule(reader, values.unpackTangents, {\n options: values, raw, json, mesh, meshIndex,\n feature: \"unpackTangents\",\n channel: \"tangent\"\n }))\n {\n tangents.unpack(mesh);\n }\n }\n}\n\nfunction rebuildMeshNormals(mesh, meshIndex)\n{\n const\n positions = requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n faces = triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\");\n\n mesh.vertex.normal = Array.from(tangents.generateNormals(positions, faces));\n}\n\nfunction rebuildMeshTangents(mesh, meshIndex)\n{\n const\n positions = requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n normals = requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n uvs = requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n faces = triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\");\n\n mesh.vertex.tangent = Array.from(tangents.generateTangents(positions, normals, uvs, faces));\n}\n\nfunction rebuildMeshBiNormals(mesh, meshIndex)\n{\n const\n normals = requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingBiNormals\"),\n tangentValues = requireVertexChannel(mesh, meshIndex, \"tangent\", \"rebuildMissingBiNormals\");\n\n mesh.vertex.binormal = tangents.generateBiNormals(normals, tangentValues);\n}\n\nfunction rebuildMissingMeshData(reader, json, raw, values)\n{\n for (let meshIndex = 0; meshIndex < (json.meshes || []).length; meshIndex++)\n {\n const mesh = json.meshes[meshIndex];\n if (!hasVertexChannel(mesh, \"normal\") && shouldApplyMeshRule(\n reader,\n values.rebuildMissingNormals,\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingNormals\", channel: \"normal\" }))\n {\n rebuildMeshNormals(mesh, meshIndex);\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && shouldApplyMeshRule(\n reader,\n values.rebuildMissingTangents,\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingTangents\", channel: \"tangent\" }))\n {\n rebuildMeshTangents(mesh, meshIndex);\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && shouldApplyMeshRule(\n reader,\n values.rebuildMissingBiNormals,\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }))\n {\n rebuildMeshBiNormals(mesh, meshIndex);\n }\n }\n}\n\nfunction processMeshData(reader, json, raw, values)\n{\n unpackMeshTangents(reader, json, raw, values);\n rebuildMissingMeshData(reader, json, raw, values);\n}\n\nfunction buildJson(reader, raw, values)\n{\n const json = emitJson(raw.fileInfo, raw.version, {\n classes: values.emit === OUTPUT_GR2 || ((values.emit === OUTPUT_JSON || values.emit === OUTPUT_GR2_JSON) && hasClasses(values.classes))\n ? values.classes\n : {}\n });\n\n if (values.decompressCurves)\n {\n decompressAnimationCurves(json);\n }\n\n processMeshData(reader, json, raw, values);\n\n return json;\n}\n\n/** Reads input using normalized format options for the GR2 format reader. */\nexport function readWithValues(reader, input, values)\n{\n const parsed = readRawInput(input);\n if (values.emit === OUTPUT_RAW) return parsed;\n const json = buildJson(reader, parsed, values);\n return values.emit === OUTPUT_CMF\n ? hydrateCmf(buildCmfFromShared(json), values.classes, { source: values.source })\n : json;\n}\n\n/** Converts a parsed payload into a JSON-safe value for the GR2 format reader. */\nexport function toJsonValue(value, seen = new WeakSet())\n{\n if (value === null || typeof value !== \"object\") return value;\n if (ArrayBuffer.isView(value)) return Array.from(value, item => toJsonValue(item, seen));\n if (Array.isArray(value)) return value.map(item => toJsonValue(item, seen));\n\n if (seen.has(value))\n {\n throw new TypeError(\"CjsFormatGr2.toJSON cannot convert circular data\");\n }\n\n if (typeof value.toJSON === \"function\")\n {\n seen.add(value);\n const json = toJsonValue(value.toJSON(), seen);\n seen.delete(value);\n return json;\n }\n\n seen.add(value);\n const out = {};\n for (const key of Object.keys(value))\n {\n out[key] = toJsonValue(value[key], seen);\n }\n seen.delete(value);\n return out;\n}\n\n/**\n * Inspects raw GR2 result without materializing the full GR2 format reader\n * payload.\n */\nexport function inspectRawGr2Result(parsed)\n{\n const\n fileInfo = parsed.fileInfo || {},\n count = value => Array.isArray(value) ? value.filter(Boolean).length : 0;\n\n return {\n reader: \"CjsFormatGr2\",\n format: \"gr2\",\n version: parsed.version | 0,\n sectionCount: parsed.secCount | 0,\n source: fileInfo.FromFileName ?? \"\",\n counts: {\n meshes: count(fileInfo.Meshes),\n models: count(fileInfo.Models),\n animations: count(fileInfo.Animations),\n materials: count(fileInfo.Materials),\n textures: count(fileInfo.Textures)\n }\n };\n}\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GR2","OUTPUT_GR2_JSON","OUTPUT_CMF","OUTPUT_RAW","DEFAULT_VALUES","emit","decompressCurves","unpackTangents","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","normalizeEmit","undefined","Error","hasOwn","value","key","prototype","hasOwnProperty","call","classMap","values","cloneValues","assertKnownOptions","options","keys","has","TypeError","validateBoolean","name","validateRule","validateClassKey","includes","validateClass","type","Class","mergeClasses","next","entries","optionValue","normalizeValues","base","hasClasses","some","isRawGr2Result","version","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","readRawInput","readGr2Raw","meshName","mesh","meshIndex","vertexChannel","channel","vertex","hasVertexChannel","length","requireVertexChannel","feature","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","reader","rule","context","fullContext","result","unpackMeshTangents","json","raw","meshes","tangents","unpack","rebuildMeshNormals","positions","normal","generateNormals","rebuildMeshTangents","normals","uvs","tangent","generateTangents","rebuildMeshBiNormals","tangentValues","binormal","generateBiNormals","rebuildMissingMeshData","processMeshData","buildJson","emitJson","fileInfo","decompressAnimationCurves","readWithValues","parsed","hydrateCmf","buildCmfFromShared","source","toJsonValue","seen","WeakSet","item","isArray","map","toJSON","add","delete","out","inspectRawGr2Result","count","filter","Boolean","format","sectionCount","secCount","FromFileName","counts","Meshes","models","Models","animations","Animations","materials","Materials","textures","Textures"],"mappings":"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"}
|
|
@@ -44,6 +44,11 @@ const CHANNELS = Object.freeze([{
|
|
|
44
44
|
elementCount: 4,
|
|
45
45
|
usageIndex: 0
|
|
46
46
|
}]);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Builds a CMF document from normalized shared geometry for the GR2
|
|
50
|
+
* shared-geometry adapter.
|
|
51
|
+
*/
|
|
47
52
|
function buildCmfFromShared(root) {
|
|
48
53
|
return {
|
|
49
54
|
version: 1,
|
|
@@ -294,6 +299,11 @@ function maxDisplacement(deltaPositions) {
|
|
|
294
299
|
}
|
|
295
300
|
return max;
|
|
296
301
|
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Hydrates a CMF document through the configured runtime-class resolver for the
|
|
305
|
+
* GR2 shared-geometry adapter.
|
|
306
|
+
*/
|
|
297
307
|
function hydrateCmf(root, classes, hydrationOptions = {}) {
|
|
298
308
|
const hydrationClasses = createHydrationClasses(classes, hydrationOptions);
|
|
299
309
|
return hydrate("Root", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.js","sources":["../../../../../src/formats/gr2/core/targets.js"],"sourcesContent":["export const CMF_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Section\",\n \"Metadata\",\n \"MetadataEntry\",\n \"Mesh\",\n \"IndexGroup\",\n \"VertexElement\",\n \"MeshLod\",\n \"MeshArea\",\n \"LodMeshArea\",\n \"BoneBinding\",\n \"MorphTargets\",\n \"MorphTarget\",\n \"LodMorphTarget\",\n \"AudioOcclusionMesh\",\n \"Skeleton\",\n \"BoneMask\",\n \"BoneWeight\",\n \"Animation\",\n \"AnimationChannel\",\n \"AnimationCurve\"\n]);\n\nconst CHANNELS = Object.freeze([\n { name: \"position\", usage: \"Position\", elementCount: 3 },\n { name: \"normal\", usage: \"Normal\", elementCount: 3 },\n { name: \"tangent\", usage: \"Tangent\", elementCount: 4, flexible: true },\n { name: \"binormal\", usage: \"Binormal\", elementCount: 4, flexible: true },\n { name: \"texcoord0\", usage: \"TexCoord\", elementCount: 2, usageIndex: 0 },\n { name: \"texcoord1\", usage: \"TexCoord\", elementCount: 2, usageIndex: 1 },\n { name: \"color0\", usage: \"Color\", elementCount: 4, usageIndex: 0 },\n { name: \"blendIndice\", usage: \"BoneIndices\", elementCount: 4, usageIndex: 0, type: \"UInt16\" },\n { name: \"blendWeight\", usage: \"BoneWeights\", elementCount: 4, usageIndex: 0 }\n]);\n\nexport function buildCmfFromShared(root)\n{\n return {\n version: 1,\n metadata: null,\n meshes: (root.meshes ?? []).map((mesh) => buildMesh(mesh)),\n skeletons: [],\n animations: []\n };\n}\n\nfunction buildMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n indices = mesh.indices ?? [],\n boneBindings = (mesh.boneBindings ?? []).map((binding) => buildBoneBinding(binding)),\n affectedByBones = boneBindings.length > 0,\n morphTargets = buildMorphTargets(mesh),\n affectedByMorphTargets = morphTargets.targets.length > 0,\n vertexCount = vertexCountOf(vertex),\n stride = estimateVertexStride(vertex, vertexCount);\n\n return {\n name: mesh.name ?? \"\",\n decl: buildDecl(vertex),\n lods: [ {\n vb: { index: 1, offset: 0, size: vertexCount * stride, stride },\n ib: { index: 2, offset: 0, size: totalIndexCount(indices) * bytesPerIndex(indices), stride: bytesPerIndex(indices) },\n areas: indices.map((group, index) => ({\n firstElement: firstTriangle(indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: morphTargets.lods,\n threshold: 0xffffffff,\n vertex,\n indices\n } ],\n areas: indices.map((group) => ({\n name: group.name ?? \"\",\n bounds: bounds(mesh),\n bones: [],\n affectedByBones,\n affectedByMorphTargets\n })),\n boneBindings,\n morphTargets: {\n decl: morphTargets.decl,\n targets: morphTargets.targets\n },\n uvDensities: [],\n bounds: bounds(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: null,\n vertex,\n indices\n };\n}\n\nfunction buildMorphTargets(mesh)\n{\n const targets = mesh.morphTargets ?? [];\n if (!targets.length)\n {\n return { decl: [], targets: [], lods: [] };\n }\n\n const\n baseVertex = mesh.vertex ?? {},\n vertexCount = vertexCountOf(baseVertex),\n specs = morphChannelSpecs(targets, baseVertex, vertexCount),\n decl = buildDeclFromSpecs(specs),\n stride = estimateStrideFromDecl(decl),\n vertices = targets.map((target) => canonicalMorphVertex(baseVertex, target, specs, vertexCount));\n\n return {\n decl,\n targets: targets.map((target, index) => ({\n name: target.name ?? \"\",\n maxDisplacement: target.maxDisplacement ?? maxDisplacement(vertices[index].position ?? [])\n })),\n lods: vertices.map((vertex) => ({\n vb: { index: 0, offset: 0, size: vertexCount * stride, stride },\n vertex\n }))\n };\n}\n\nfunction morphChannelSpecs(targets, baseVertex, vertexCount)\n{\n return CHANNELS.flatMap((spec) =>\n {\n let elementCount = 0;\n for (const target of targets)\n {\n const\n vertex = target.vertex ?? {},\n values = vertex[spec.name] ?? [];\n if (!values.length) continue;\n const count = targetSourceCount(target, vertexCount);\n elementCount = Math.max(elementCount, channelWidth(spec, vertex, count));\n }\n if (!elementCount) return [];\n if ((baseVertex[spec.name] ?? []).length)\n {\n elementCount = Math.max(elementCount, channelWidth(spec, baseVertex, vertexCount));\n }\n return [ { ...spec, elementCount } ];\n });\n}\n\nfunction canonicalMorphVertex(baseVertex, target, specs, vertexCount)\n{\n const\n sourceVertex = target.vertex ?? {},\n vertexIndices = Array.isArray(target.vertexIndices) ? target.vertexIndices : null,\n sourceCount = targetSourceCount(target, vertexCount),\n result = {};\n\n for (const spec of specs)\n {\n const\n source = sourceVertex[spec.name] ?? [],\n output = new Array(vertexCount * spec.elementCount).fill(0),\n sourceWidth = channelWidth(spec, sourceVertex, sourceCount),\n base = baseVertex[spec.name] ?? [],\n baseWidth = channelWidth(spec, baseVertex, vertexCount),\n rowCount = Math.min(sourceCount, sourceWidth ? Math.floor(source.length / sourceWidth) : 0);\n\n for (let row = 0; row < rowCount; row++)\n {\n const vertexIndex = vertexIndices ? vertexIndices[row] : row;\n if (!Number.isInteger(vertexIndex) || vertexIndex < 0 || vertexIndex >= vertexCount) continue;\n\n const count = Math.min(sourceWidth, spec.elementCount);\n for (let component = 0; component < count; component++)\n {\n const\n sourceValue = source[row * sourceWidth + component],\n baseValue = base[vertexIndex * baseWidth + component] ?? 0;\n output[vertexIndex * spec.elementCount + component] = target.dataIsDeltas === false\n ? sourceValue - baseValue\n : sourceValue;\n }\n }\n result[spec.name] = output;\n }\n\n return result;\n}\n\nfunction targetSourceCount(target, fallbackCount)\n{\n if (Array.isArray(target.vertexIndices)) return target.vertexIndices.length;\n return vertexCountOf(target.vertex ?? {}, fallbackCount);\n}\n\nfunction buildBoneBinding(binding)\n{\n return {\n name: binding.name ?? \"\",\n bounds: {\n min: binding.minBounds ?? binding.bounds?.min ?? [ 0, 0, 0 ],\n max: binding.maxBounds ?? binding.bounds?.max ?? [ 0, 0, 0 ]\n }\n };\n}\n\nfunction buildDecl(vertex, vertexCount = vertexCountOf(vertex))\n{\n const specs = CHANNELS\n .filter((spec) => Array.isArray(vertex[spec.name]) && vertex[spec.name].length > 0)\n .map((spec) => ({ ...spec, elementCount: channelWidth(spec, vertex, vertexCount) }));\n return buildDeclFromSpecs(specs);\n}\n\nfunction buildDeclFromSpecs(specs)\n{\n const decl = [];\n let offset = 0;\n for (const spec of specs)\n {\n const { usage, usageIndex = 0, type = \"Float32\", elementCount } = spec;\n decl.push({ usage, usageIndex, type, elementCount, offset });\n offset += elementCount * elementTypeSize(type);\n }\n return decl;\n}\n\nfunction channelWidth(spec, vertex, vertexCount)\n{\n const values = vertex[spec.name] ?? [];\n if (spec.flexible && vertexCount > 0 && values.length % vertexCount === 0)\n {\n const width = values.length / vertexCount;\n if (width === 3 || width === 4) return width;\n }\n return spec.elementCount;\n}\n\nfunction vertexCountOf(vertex, expectedCount = 0)\n{\n if (expectedCount > 0)\n {\n for (const spec of CHANNELS)\n {\n const values = vertex[spec.name] ?? [];\n if (values.length && values.length % expectedCount === 0) return expectedCount;\n }\n }\n\n for (const spec of CHANNELS)\n {\n const values = vertex[spec.name] ?? [];\n if (!values.length) continue;\n if (spec.flexible)\n {\n if (values.length % spec.elementCount === 0) return values.length / spec.elementCount;\n if (values.length % 3 === 0) return values.length / 3;\n }\n const count = values.length / spec.elementCount;\n if (Number.isInteger(count)) return count;\n }\n return 0;\n}\n\nfunction estimateVertexStride(vertex, vertexCount)\n{\n return estimateStrideFromDecl(buildDecl(vertex, vertexCount));\n}\n\nfunction estimateStrideFromDecl(decl)\n{\n return decl.reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * elementTypeSize(element.type)), 0);\n}\n\nfunction elementTypeSize(type)\n{\n return type === \"Float32\" ? 4 : type.includes(\"16\") ? 2 : 1;\n}\n\nfunction totalIndexCount(indices)\n{\n return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);\n}\n\nfunction bytesPerIndex(indices)\n{\n return indices.some((group) => group.bytesPerIndex === 4 || (group.faces ?? []).some((index) => index > 0xffff)) ? 4 : 2;\n}\n\nfunction firstTriangle(indices, areaIndex)\n{\n let first = 0;\n for (let i = 0; i < areaIndex; i++) first += Math.floor((indices[i].faces ?? []).length / 3);\n return first;\n}\n\nfunction bounds(mesh)\n{\n return {\n min: mesh.minBounds ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? [ 0, 0, 0 ]\n };\n}\n\nfunction maxDisplacement(deltaPositions)\n{\n let max = 0;\n for (let i = 0; i + 2 < deltaPositions.length; i += 3)\n {\n max = Math.max(max, Math.hypot(\n deltaPositions[i],\n deltaPositions[i + 1],\n deltaPositions[i + 2]\n ));\n }\n return max;\n}\n\nexport function hydrateCmf(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n ...root,\n metadata: root.metadata ? hydrate(\"Metadata\", root.metadata, hydrationClasses) : null,\n meshes: root.meshes.map((mesh) => hydrateMesh(mesh, hydrationClasses)),\n skeletons: root.skeletons.map((skeleton) => hydrate(\"Skeleton\", skeleton, hydrationClasses)),\n animations: root.animations.map((animation) => hydrate(\"Animation\", animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateMesh(mesh, classes)\n{\n return hydrate(\"Mesh\", {\n ...mesh,\n decl: mesh.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n lods: mesh.lods.map((lod) => hydrate(\"MeshLod\", {\n ...lod,\n areas: lod.areas.map((area) => hydrate(\"LodMeshArea\", area, classes)),\n morphTargets: lod.morphTargets.map((target) => hydrate(\"LodMorphTarget\", target, classes))\n }, classes)),\n areas: mesh.areas.map((area) => hydrate(\"MeshArea\", area, classes)),\n boneBindings: mesh.boneBindings.map((binding) => hydrate(\"BoneBinding\", binding, classes)),\n morphTargets: hydrate(\"MorphTargets\", {\n decl: mesh.morphTargets.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n targets: mesh.morphTargets.targets.map((target) => hydrate(\"MorphTarget\", target, classes))\n }, classes),\n audioOcclusionMesh: hydrate(\"AudioOcclusionMesh\", mesh.audioOcclusionMesh, classes)\n }, classes);\n}\n\nfunction hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return Class ? populate(new Class(), fields, options) : fields;\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsFormatGr2 CMF class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n"],"names":["CMF_CLASS_KEYS","Object","freeze","CHANNELS","name","usage","elementCount","flexible","usageIndex","type","buildCmfFromShared","root","version","metadata","meshes","map","mesh","buildMesh","skeletons","animations","vertex","indices","boneBindings","binding","buildBoneBinding","affectedByBones","length","morphTargets","buildMorphTargets","affectedByMorphTargets","targets","vertexCount","vertexCountOf","stride","estimateVertexStride","decl","buildDecl","lods","vb","index","offset","size","ib","totalIndexCount","bytesPerIndex","areas","group","firstElement","firstTriangle","Math","floor","faces","threshold","bounds","bones","uvDensities","audioOcclusionMesh","vertices","min","max","topology","skeleton","baseVertex","specs","morphChannelSpecs","buildDeclFromSpecs","estimateStrideFromDecl","target","canonicalMorphVertex","maxDisplacement","position","flatMap","spec","values","count","targetSourceCount","channelWidth","sourceVertex","vertexIndices","Array","isArray","sourceCount","result","source","output","fill","sourceWidth","base","baseWidth","rowCount","row","vertexIndex","Number","isInteger","component","sourceValue","baseValue","dataIsDeltas","fallbackCount","minBounds","maxBounds","filter","push","elementTypeSize","width","expectedCount","reduce","element","includes","total","some","areaIndex","first","i","deltaPositions","hypot","hydrateCmf","classes","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","hydrateMesh","animation","lod","area","fields","Class","options","keys","__hydrationOptions","populate","instance","SetValues","TypeError","skipUpdate","skipEvents","create","defineProperty","value","enumerable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"targets.js","sources":["../../../../../src/formats/gr2/core/targets.js"],"sourcesContent":["export const CMF_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Section\",\n \"Metadata\",\n \"MetadataEntry\",\n \"Mesh\",\n \"IndexGroup\",\n \"VertexElement\",\n \"MeshLod\",\n \"MeshArea\",\n \"LodMeshArea\",\n \"BoneBinding\",\n \"MorphTargets\",\n \"MorphTarget\",\n \"LodMorphTarget\",\n \"AudioOcclusionMesh\",\n \"Skeleton\",\n \"BoneMask\",\n \"BoneWeight\",\n \"Animation\",\n \"AnimationChannel\",\n \"AnimationCurve\"\n]);\n\nconst CHANNELS = Object.freeze([\n { name: \"position\", usage: \"Position\", elementCount: 3 },\n { name: \"normal\", usage: \"Normal\", elementCount: 3 },\n { name: \"tangent\", usage: \"Tangent\", elementCount: 4, flexible: true },\n { name: \"binormal\", usage: \"Binormal\", elementCount: 4, flexible: true },\n { name: \"texcoord0\", usage: \"TexCoord\", elementCount: 2, usageIndex: 0 },\n { name: \"texcoord1\", usage: \"TexCoord\", elementCount: 2, usageIndex: 1 },\n { name: \"color0\", usage: \"Color\", elementCount: 4, usageIndex: 0 },\n { name: \"blendIndice\", usage: \"BoneIndices\", elementCount: 4, usageIndex: 0, type: \"UInt16\" },\n { name: \"blendWeight\", usage: \"BoneWeights\", elementCount: 4, usageIndex: 0 }\n]);\n\n/**\n * Builds a CMF document from normalized shared geometry for the GR2\n * shared-geometry adapter.\n */\nexport function buildCmfFromShared(root)\n{\n return {\n version: 1,\n metadata: null,\n meshes: (root.meshes ?? []).map((mesh) => buildMesh(mesh)),\n skeletons: [],\n animations: []\n };\n}\n\nfunction buildMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n indices = mesh.indices ?? [],\n boneBindings = (mesh.boneBindings ?? []).map((binding) => buildBoneBinding(binding)),\n affectedByBones = boneBindings.length > 0,\n morphTargets = buildMorphTargets(mesh),\n affectedByMorphTargets = morphTargets.targets.length > 0,\n vertexCount = vertexCountOf(vertex),\n stride = estimateVertexStride(vertex, vertexCount);\n\n return {\n name: mesh.name ?? \"\",\n decl: buildDecl(vertex),\n lods: [ {\n vb: { index: 1, offset: 0, size: vertexCount * stride, stride },\n ib: { index: 2, offset: 0, size: totalIndexCount(indices) * bytesPerIndex(indices), stride: bytesPerIndex(indices) },\n areas: indices.map((group, index) => ({\n firstElement: firstTriangle(indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: morphTargets.lods,\n threshold: 0xffffffff,\n vertex,\n indices\n } ],\n areas: indices.map((group) => ({\n name: group.name ?? \"\",\n bounds: bounds(mesh),\n bones: [],\n affectedByBones,\n affectedByMorphTargets\n })),\n boneBindings,\n morphTargets: {\n decl: morphTargets.decl,\n targets: morphTargets.targets\n },\n uvDensities: [],\n bounds: bounds(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: null,\n vertex,\n indices\n };\n}\n\nfunction buildMorphTargets(mesh)\n{\n const targets = mesh.morphTargets ?? [];\n if (!targets.length)\n {\n return { decl: [], targets: [], lods: [] };\n }\n\n const\n baseVertex = mesh.vertex ?? {},\n vertexCount = vertexCountOf(baseVertex),\n specs = morphChannelSpecs(targets, baseVertex, vertexCount),\n decl = buildDeclFromSpecs(specs),\n stride = estimateStrideFromDecl(decl),\n vertices = targets.map((target) => canonicalMorphVertex(baseVertex, target, specs, vertexCount));\n\n return {\n decl,\n targets: targets.map((target, index) => ({\n name: target.name ?? \"\",\n maxDisplacement: target.maxDisplacement ?? maxDisplacement(vertices[index].position ?? [])\n })),\n lods: vertices.map((vertex) => ({\n vb: { index: 0, offset: 0, size: vertexCount * stride, stride },\n vertex\n }))\n };\n}\n\nfunction morphChannelSpecs(targets, baseVertex, vertexCount)\n{\n return CHANNELS.flatMap((spec) =>\n {\n let elementCount = 0;\n for (const target of targets)\n {\n const\n vertex = target.vertex ?? {},\n values = vertex[spec.name] ?? [];\n if (!values.length) continue;\n const count = targetSourceCount(target, vertexCount);\n elementCount = Math.max(elementCount, channelWidth(spec, vertex, count));\n }\n if (!elementCount) return [];\n if ((baseVertex[spec.name] ?? []).length)\n {\n elementCount = Math.max(elementCount, channelWidth(spec, baseVertex, vertexCount));\n }\n return [ { ...spec, elementCount } ];\n });\n}\n\nfunction canonicalMorphVertex(baseVertex, target, specs, vertexCount)\n{\n const\n sourceVertex = target.vertex ?? {},\n vertexIndices = Array.isArray(target.vertexIndices) ? target.vertexIndices : null,\n sourceCount = targetSourceCount(target, vertexCount),\n result = {};\n\n for (const spec of specs)\n {\n const\n source = sourceVertex[spec.name] ?? [],\n output = new Array(vertexCount * spec.elementCount).fill(0),\n sourceWidth = channelWidth(spec, sourceVertex, sourceCount),\n base = baseVertex[spec.name] ?? [],\n baseWidth = channelWidth(spec, baseVertex, vertexCount),\n rowCount = Math.min(sourceCount, sourceWidth ? Math.floor(source.length / sourceWidth) : 0);\n\n for (let row = 0; row < rowCount; row++)\n {\n const vertexIndex = vertexIndices ? vertexIndices[row] : row;\n if (!Number.isInteger(vertexIndex) || vertexIndex < 0 || vertexIndex >= vertexCount) continue;\n\n const count = Math.min(sourceWidth, spec.elementCount);\n for (let component = 0; component < count; component++)\n {\n const\n sourceValue = source[row * sourceWidth + component],\n baseValue = base[vertexIndex * baseWidth + component] ?? 0;\n output[vertexIndex * spec.elementCount + component] = target.dataIsDeltas === false\n ? sourceValue - baseValue\n : sourceValue;\n }\n }\n result[spec.name] = output;\n }\n\n return result;\n}\n\nfunction targetSourceCount(target, fallbackCount)\n{\n if (Array.isArray(target.vertexIndices)) return target.vertexIndices.length;\n return vertexCountOf(target.vertex ?? {}, fallbackCount);\n}\n\nfunction buildBoneBinding(binding)\n{\n return {\n name: binding.name ?? \"\",\n bounds: {\n min: binding.minBounds ?? binding.bounds?.min ?? [ 0, 0, 0 ],\n max: binding.maxBounds ?? binding.bounds?.max ?? [ 0, 0, 0 ]\n }\n };\n}\n\nfunction buildDecl(vertex, vertexCount = vertexCountOf(vertex))\n{\n const specs = CHANNELS\n .filter((spec) => Array.isArray(vertex[spec.name]) && vertex[spec.name].length > 0)\n .map((spec) => ({ ...spec, elementCount: channelWidth(spec, vertex, vertexCount) }));\n return buildDeclFromSpecs(specs);\n}\n\nfunction buildDeclFromSpecs(specs)\n{\n const decl = [];\n let offset = 0;\n for (const spec of specs)\n {\n const { usage, usageIndex = 0, type = \"Float32\", elementCount } = spec;\n decl.push({ usage, usageIndex, type, elementCount, offset });\n offset += elementCount * elementTypeSize(type);\n }\n return decl;\n}\n\nfunction channelWidth(spec, vertex, vertexCount)\n{\n const values = vertex[spec.name] ?? [];\n if (spec.flexible && vertexCount > 0 && values.length % vertexCount === 0)\n {\n const width = values.length / vertexCount;\n if (width === 3 || width === 4) return width;\n }\n return spec.elementCount;\n}\n\nfunction vertexCountOf(vertex, expectedCount = 0)\n{\n if (expectedCount > 0)\n {\n for (const spec of CHANNELS)\n {\n const values = vertex[spec.name] ?? [];\n if (values.length && values.length % expectedCount === 0) return expectedCount;\n }\n }\n\n for (const spec of CHANNELS)\n {\n const values = vertex[spec.name] ?? [];\n if (!values.length) continue;\n if (spec.flexible)\n {\n if (values.length % spec.elementCount === 0) return values.length / spec.elementCount;\n if (values.length % 3 === 0) return values.length / 3;\n }\n const count = values.length / spec.elementCount;\n if (Number.isInteger(count)) return count;\n }\n return 0;\n}\n\nfunction estimateVertexStride(vertex, vertexCount)\n{\n return estimateStrideFromDecl(buildDecl(vertex, vertexCount));\n}\n\nfunction estimateStrideFromDecl(decl)\n{\n return decl.reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * elementTypeSize(element.type)), 0);\n}\n\nfunction elementTypeSize(type)\n{\n return type === \"Float32\" ? 4 : type.includes(\"16\") ? 2 : 1;\n}\n\nfunction totalIndexCount(indices)\n{\n return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);\n}\n\nfunction bytesPerIndex(indices)\n{\n return indices.some((group) => group.bytesPerIndex === 4 || (group.faces ?? []).some((index) => index > 0xffff)) ? 4 : 2;\n}\n\nfunction firstTriangle(indices, areaIndex)\n{\n let first = 0;\n for (let i = 0; i < areaIndex; i++) first += Math.floor((indices[i].faces ?? []).length / 3);\n return first;\n}\n\nfunction bounds(mesh)\n{\n return {\n min: mesh.minBounds ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? [ 0, 0, 0 ]\n };\n}\n\nfunction maxDisplacement(deltaPositions)\n{\n let max = 0;\n for (let i = 0; i + 2 < deltaPositions.length; i += 3)\n {\n max = Math.max(max, Math.hypot(\n deltaPositions[i],\n deltaPositions[i + 1],\n deltaPositions[i + 2]\n ));\n }\n return max;\n}\n\n/**\n * Hydrates a CMF document through the configured runtime-class resolver for the\n * GR2 shared-geometry adapter.\n */\nexport function hydrateCmf(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n ...root,\n metadata: root.metadata ? hydrate(\"Metadata\", root.metadata, hydrationClasses) : null,\n meshes: root.meshes.map((mesh) => hydrateMesh(mesh, hydrationClasses)),\n skeletons: root.skeletons.map((skeleton) => hydrate(\"Skeleton\", skeleton, hydrationClasses)),\n animations: root.animations.map((animation) => hydrate(\"Animation\", animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateMesh(mesh, classes)\n{\n return hydrate(\"Mesh\", {\n ...mesh,\n decl: mesh.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n lods: mesh.lods.map((lod) => hydrate(\"MeshLod\", {\n ...lod,\n areas: lod.areas.map((area) => hydrate(\"LodMeshArea\", area, classes)),\n morphTargets: lod.morphTargets.map((target) => hydrate(\"LodMorphTarget\", target, classes))\n }, classes)),\n areas: mesh.areas.map((area) => hydrate(\"MeshArea\", area, classes)),\n boneBindings: mesh.boneBindings.map((binding) => hydrate(\"BoneBinding\", binding, classes)),\n morphTargets: hydrate(\"MorphTargets\", {\n decl: mesh.morphTargets.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n targets: mesh.morphTargets.targets.map((target) => hydrate(\"MorphTarget\", target, classes))\n }, classes),\n audioOcclusionMesh: hydrate(\"AudioOcclusionMesh\", mesh.audioOcclusionMesh, classes)\n }, classes);\n}\n\nfunction hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return Class ? populate(new Class(), fields, options) : fields;\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsFormatGr2 CMF class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n"],"names":["CMF_CLASS_KEYS","Object","freeze","CHANNELS","name","usage","elementCount","flexible","usageIndex","type","buildCmfFromShared","root","version","metadata","meshes","map","mesh","buildMesh","skeletons","animations","vertex","indices","boneBindings","binding","buildBoneBinding","affectedByBones","length","morphTargets","buildMorphTargets","affectedByMorphTargets","targets","vertexCount","vertexCountOf","stride","estimateVertexStride","decl","buildDecl","lods","vb","index","offset","size","ib","totalIndexCount","bytesPerIndex","areas","group","firstElement","firstTriangle","Math","floor","faces","threshold","bounds","bones","uvDensities","audioOcclusionMesh","vertices","min","max","topology","skeleton","baseVertex","specs","morphChannelSpecs","buildDeclFromSpecs","estimateStrideFromDecl","target","canonicalMorphVertex","maxDisplacement","position","flatMap","spec","values","count","targetSourceCount","channelWidth","sourceVertex","vertexIndices","Array","isArray","sourceCount","result","source","output","fill","sourceWidth","base","baseWidth","rowCount","row","vertexIndex","Number","isInteger","component","sourceValue","baseValue","dataIsDeltas","fallbackCount","minBounds","maxBounds","filter","push","elementTypeSize","width","expectedCount","reduce","element","includes","total","some","areaIndex","first","i","deltaPositions","hypot","hydrateCmf","classes","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","hydrateMesh","animation","lod","area","fields","Class","options","keys","__hydrationOptions","populate","instance","SetValues","TypeError","skipUpdate","skipEvents","create","defineProperty","value","enumerable"],"mappings":"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"}
|
|
@@ -23,6 +23,11 @@ const IMAGE_MIME_TYPES = Object.freeze({
|
|
|
23
23
|
tga: "image/x-tga",
|
|
24
24
|
dds: "image/vnd-ms.dds"
|
|
25
25
|
});
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Normalizes reader options against their supported defaults for the JPEG format
|
|
29
|
+
* reader.
|
|
30
|
+
*/
|
|
26
31
|
function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsImageFormat") {
|
|
27
32
|
const values = {
|
|
28
33
|
...DEFAULT_VALUES,
|
|
@@ -33,11 +38,15 @@ function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsI
|
|
|
33
38
|
values.emit = normalizeEmit(values.emit, values.inputType, readerName);
|
|
34
39
|
return values;
|
|
35
40
|
}
|
|
41
|
+
|
|
42
|
+
/** Normalizes the requested input representation for the JPEG format reader. */
|
|
36
43
|
function normalizeInputType(inputType) {
|
|
37
44
|
if (!inputType) return "";
|
|
38
45
|
const value = String(inputType).replace(/^\./u, "").toLowerCase();
|
|
39
46
|
return value === "jpg" ? "jpeg" : value;
|
|
40
47
|
}
|
|
48
|
+
|
|
49
|
+
/** Normalizes the requested output representation for the JPEG format reader. */
|
|
41
50
|
function normalizeEmit(emit, inputType, readerName) {
|
|
42
51
|
if (emit === undefined || emit === null) return OUTPUT_RAW;
|
|
43
52
|
if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;
|
|
@@ -45,12 +54,16 @@ function normalizeEmit(emit, inputType, readerName) {
|
|
|
45
54
|
if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;
|
|
46
55
|
throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);
|
|
47
56
|
}
|
|
57
|
+
|
|
58
|
+
/** Returns a byte view over the supplied binary input for the JPEG format reader. */
|
|
48
59
|
function toBytes(input) {
|
|
49
60
|
if (input instanceof Uint8Array) return input;
|
|
50
61
|
if (input instanceof ArrayBuffer) return new Uint8Array(input);
|
|
51
62
|
if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
|
|
52
63
|
throw new TypeError("Image input must be Uint8Array, ArrayBuffer, or DataView");
|
|
53
64
|
}
|
|
65
|
+
|
|
66
|
+
/** Inspects input using normalized format options for the JPEG format reader. */
|
|
54
67
|
function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
|
|
55
68
|
const bytes = toBytes(input);
|
|
56
69
|
const detected = inspectBytes(bytes);
|
|
@@ -66,6 +79,11 @@ function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
|
|
|
66
79
|
...detected
|
|
67
80
|
};
|
|
68
81
|
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Reports whether input is supported under normalized format options for the
|
|
85
|
+
* JPEG format reader.
|
|
86
|
+
*/
|
|
69
87
|
function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
|
|
70
88
|
try {
|
|
71
89
|
const metadata = inspectWithValues(input, values, expectedType);
|
|
@@ -107,6 +125,8 @@ function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = ""
|
|
|
107
125
|
};
|
|
108
126
|
}
|
|
109
127
|
}
|
|
128
|
+
|
|
129
|
+
/** Reads input using normalized format options for the JPEG format reader. */
|
|
110
130
|
function readWithValues(input, values = DEFAULT_VALUES, expectedType = "") {
|
|
111
131
|
const bytes = toBytes(input);
|
|
112
132
|
const metadata = inspectWithValues(bytes, values, expectedType);
|
|
@@ -154,6 +174,8 @@ function rawVariant(metadata, canDecode) {
|
|
|
154
174
|
function imageMimeType(sourceFormat) {
|
|
155
175
|
return IMAGE_MIME_TYPES[sourceFormat] || "application/octet-stream";
|
|
156
176
|
}
|
|
177
|
+
|
|
178
|
+
/** Converts a parsed payload into a JSON-safe value for the JPEG format reader. */
|
|
157
179
|
function toJsonValue(value) {
|
|
158
180
|
if (value instanceof Uint8Array) {
|
|
159
181
|
return {
|
|
@@ -168,6 +190,11 @@ function toJsonValue(value) {
|
|
|
168
190
|
}
|
|
169
191
|
return value;
|
|
170
192
|
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Inspects the supplied bytes without decoding their payload for the JPEG format
|
|
196
|
+
* reader.
|
|
197
|
+
*/
|
|
171
198
|
function inspectBytes(bytes) {
|
|
172
199
|
if (isPNG(bytes)) return inspectPNG(bytes);
|
|
173
200
|
if (isJPEG(bytes)) return inspectJPEG(bytes);
|
|
@@ -179,18 +206,43 @@ function inspectBytes(bytes) {
|
|
|
179
206
|
height: 0
|
|
180
207
|
};
|
|
181
208
|
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Reports whether the supplied bytes begin with a PNG signature for the JPEG
|
|
212
|
+
* format reader.
|
|
213
|
+
*/
|
|
182
214
|
function isPNG(bytes) {
|
|
183
215
|
return bytes.byteLength >= 24 && bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 && bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;
|
|
184
216
|
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Reports whether the supplied bytes begin with a JPEG signature for the JPEG
|
|
220
|
+
* format reader.
|
|
221
|
+
*/
|
|
185
222
|
function isJPEG(bytes) {
|
|
186
223
|
return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;
|
|
187
224
|
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Reports whether the supplied bytes begin with a JPEG signature accepted as JPG
|
|
228
|
+
* for the JPEG format reader.
|
|
229
|
+
*/
|
|
188
230
|
function isJPG(bytes) {
|
|
189
231
|
return isJPEG(bytes);
|
|
190
232
|
}
|
|
233
|
+
|
|
234
|
+
/**
|
|
235
|
+
* Reports whether the supplied bytes begin with a DDS signature for the JPEG
|
|
236
|
+
* format reader.
|
|
237
|
+
*/
|
|
191
238
|
function isDDS(bytes) {
|
|
192
239
|
return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;
|
|
193
240
|
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Reports whether the supplied bytes have a supported TGA header for the JPEG
|
|
244
|
+
* format reader.
|
|
245
|
+
*/
|
|
194
246
|
function isTGA(bytes) {
|
|
195
247
|
if (bytes.byteLength < 18) return false;
|
|
196
248
|
const imageType = bytes[2],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../src/formats/jpeg/core/helpers.js"],"sourcesContent":["export const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_TEXTURE = \"texture\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nimport { canDecodeJpeg, decodeJpegToRgba } from \"./jpeg.js\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n png: \"pngJson\",\n jpeg: \"jpegJson\",\n jpg: \"jpegJson\",\n tga: \"tgaJson\",\n dds: \"ddsJson\"\n});\n\nconst IMAGE_MIME_TYPES = Object.freeze({\n png: \"image/png\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n tga: \"image/x-tga\",\n dds: \"image/vnd-ms.dds\"\n});\n\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsImageFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\nexport function normalizeInputType(inputType)\n{\n if (!inputType) return \"\";\n const value = String(inputType).replace(/^\\./u, \"\").toLowerCase();\n return value === \"jpg\" ? \"jpeg\" : value;\n}\n\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"Image input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const detected = inspectBytes(bytes);\n const sourceFormat = expectedType || values.inputType || detected.sourceFormat;\n\n if (expectedType && detected.sourceFormat && detected.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsFormat${capitalize(expectedType)}: expected ${expectedType}, got ${detected.sourceFormat}`);\n }\n\n return {\n payloadType: sourceFormat === \"dds\" ? \"texture\" : \"image\",\n mediaTypes: sourceFormat === \"dds\" ? [ \"texture\", \"image\" ] : [ \"image\" ],\n sourceFormat,\n byteLength: bytes.byteLength,\n ...detected\n };\n}\n\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const canDecode = metadata.sourceFormat === \"jpeg\" && canDecodeJpeg(metadata);\n const variants = [\n { kind: \"rgba\", payloadType: \"rgba\", codec: \"rgba8unorm\", supported: canDecode, reason: canDecode ? \"\" : jpegDecodeReason(metadata), containerOnly: false, isDecoded: canDecode, rgbaDecodeSupported: canDecode },\n rawVariant(metadata, canDecode)\n ];\n\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (variants.some(variant => variant.supported && variant.kind === \"rgba\") ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: variants.find(v => v.supported)?.codec || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized image format.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"jpeg\" && canDecodeJpeg(metadata),\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return metadata;\n }\n\n if ((values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE) && metadata.sourceFormat === \"jpeg\")\n {\n if (!canDecodeJpeg(metadata))\n {\n const error = new Error(`jpeg: ${jpegDecodeReason(metadata)}`);\n error.code = \"CJS_FORMAT_OUTPUT_UNSUPPORTED\";\n throw error;\n }\n return decodeJpegToRgba(bytes, metadata);\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nfunction rawVariant(metadata, canDecode)\n{\n return {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n supported: true,\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"jpeg\" && canDecode === true\n };\n}\n\nfunction imageMimeType(sourceFormat)\n{\n return IMAGE_MIME_TYPES[sourceFormat] || \"application/octet-stream\";\n}\n\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\nexport function inspectBytes(bytes)\n{\n if (isPNG(bytes)) return inspectPNG(bytes);\n if (isJPEG(bytes)) return inspectJPEG(bytes);\n if (isDDS(bytes)) return inspectDDS(bytes);\n if (isTGA(bytes)) return inspectTGA(bytes);\n return { sourceFormat: \"\", width: 0, height: 0 };\n}\n\nexport function isPNG(bytes)\n{\n return bytes.byteLength >= 24 &&\n bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 &&\n bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;\n}\n\nexport function isJPEG(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;\n}\n\nexport function isJPG(bytes)\n{\n return isJPEG(bytes);\n}\n\nexport function isDDS(bytes)\n{\n return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;\n}\n\nexport function isTGA(bytes)\n{\n if (bytes.byteLength < 18) return false;\n const imageType = bytes[2], width = readU16LE(bytes, 12), height = readU16LE(bytes, 14), bpp = bytes[16];\n return width > 0 && height > 0 && [ 1, 2, 3, 9, 10, 11 ].includes(imageType) && [ 8, 16, 24, 32 ].includes(bpp);\n}\n\nfunction inspectPNG(bytes)\n{\n const colorType = bytes[25], bitDepth = bytes[24];\n return {\n sourceFormat: \"png\",\n width: readU32BE(bytes, 16),\n height: readU32BE(bytes, 20),\n bitDepth,\n colorType,\n channels: pngChannels(colorType),\n pixelFormat: `png-${bitDepth}-${colorType}`,\n isCompressed: false\n };\n}\n\nfunction inspectJPEG(bytes)\n{\n let offset = 2;\n let frame = null;\n const summary = {\n appMarkerCount: 0,\n commentCount: 0,\n hasExif: false,\n hasIccProfile: false\n };\n while (offset + 9 < bytes.byteLength)\n {\n if (bytes[offset] !== 0xff)\n {\n offset++;\n continue;\n }\n const marker = bytes[offset + 1], length = readU16BE(bytes, offset + 2);\n const dataStart = offset + 4;\n const dataEnd = offset + 2 + length;\n if (marker >= 0xe0 && marker <= 0xef)\n {\n summary.appMarkerCount++;\n if (marker === 0xe1 && ascii(bytes, dataStart, Math.min(6, dataEnd - dataStart)) === \"Exif\\0\\0\") summary.hasExif = true;\n if (marker === 0xe2 && ascii(bytes, dataStart, Math.min(12, dataEnd - dataStart)) === \"ICC_PROFILE\\0\") summary.hasIccProfile = true;\n }\n else if (marker === 0xfe)\n {\n summary.commentCount++;\n }\n if ([ 0xc0, 0xc1, 0xc2, 0xc3 ].includes(marker))\n {\n frame = {\n sourceFormat: \"jpeg\",\n width: readU16BE(bytes, offset + 7),\n height: readU16BE(bytes, offset + 5),\n channels: bytes[offset + 9],\n components: bytes[offset + 9],\n precision: bytes[offset + 4],\n marker,\n progressive: marker === 0xc2 || marker === 0xc3,\n pixelFormat: \"jpeg-ycbcr\",\n isCompressed: true\n };\n }\n if (marker === 0xda && frame)\n {\n const scanStart = offset + 4;\n const scanComponents = bytes[scanStart];\n const spectralStart = bytes[scanStart + 1 + scanComponents * 2];\n const spectralEnd = bytes[scanStart + 2 + scanComponents * 2];\n const successive = bytes[scanStart + 3 + scanComponents * 2];\n return {\n ...frame,\n ...summary,\n scanComponents,\n spectralStart,\n spectralEnd,\n successive,\n progressive: frame.progressive || spectralStart !== 0 || spectralEnd !== 63 || successive !== 0\n };\n }\n offset += Math.max(length + 2, 2);\n }\n return frame ? { ...frame, ...summary } : { sourceFormat: \"jpeg\", width: 0, height: 0, channels: 0, pixelFormat: \"jpeg\", isCompressed: true, ...summary };\n}\n\nfunction jpegDecodeReason(metadata)\n{\n if (metadata.sourceFormat !== \"jpeg\") return `${metadata.sourceFormat.toUpperCase()} RGBA decode is not implemented yet.`;\n if (metadata.progressive) return \"Progressive JPEG software decode is not implemented yet.\";\n if (metadata.marker !== undefined && metadata.marker !== 0xc0 && metadata.marker !== 0xc1)\n {\n return \"Only sequential baseline JPEG frames are supported by the software decoder.\";\n }\n if (metadata.precision !== undefined && metadata.precision !== 8)\n {\n return `JPEG sample precision ${metadata.precision} is not supported by the software decoder.`;\n }\n if (metadata.components > 3) return \"CMYK/YCCK JPEG software decode is not implemented yet.\";\n return \"JPEG baseline frame metadata is incomplete or unsupported.\";\n}\n\nfunction inspectDDS(bytes)\n{\n const fourCc = String.fromCharCode(bytes[84], bytes[85], bytes[86], bytes[87]).replace(/\\0+$/u, \"\");\n return {\n sourceFormat: \"dds\",\n width: readU32LE(bytes, 16),\n height: readU32LE(bytes, 12),\n mipCount: Math.max(readU32LE(bytes, 28), 1),\n fourCc,\n textureFormat: fourCc || \"dds-legacy\",\n isCompressed: !!fourCc,\n hasMipMaps: readU32LE(bytes, 28) > 1\n };\n}\n\nfunction inspectTGA(bytes)\n{\n return {\n sourceFormat: \"tga\",\n width: readU16LE(bytes, 12),\n height: readU16LE(bytes, 14),\n channels: Math.max(bytes[16] / 8, 1),\n imageType: bytes[2],\n pixelFormat: `tga-${bytes[16]}`,\n isCompressed: [ 9, 10, 11 ].includes(bytes[2])\n };\n}\n\nfunction pngChannels(colorType)\n{\n if (colorType === 0) return 1;\n if (colorType === 2) return 3;\n if (colorType === 3) return 1;\n if (colorType === 4) return 2;\n if (colorType === 6) return 4;\n return 0;\n}\n\nfunction readU16BE(bytes, offset)\n{\n return (bytes[offset] << 8) | bytes[offset + 1];\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n\nfunction readU32BE(bytes, offset)\n{\n return ((bytes[offset] * 0x1000000) + ((bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3])) >>> 0;\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction ascii(bytes, offset, length)\n{\n return String.fromCharCode(...bytes.subarray(offset, offset + length));\n}\n\nfunction capitalize(value)\n{\n return value ? value[0].toUpperCase() + value.slice(1) : \"Image\";\n}\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","png","jpeg","jpg","tga","dds","IMAGE_MIME_TYPES","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","value","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","inspectWithValues","expectedType","bytes","detected","inspectBytes","sourceFormat","capitalize","payloadType","mediaTypes","isSupportedWithValues","metadata","canDecode","canDecodeJpeg","variants","kind","codec","supported","reason","jpegDecodeReason","containerOnly","isDecoded","rgbaDecodeSupported","rawVariant","format","some","variant","confidence","preferred","find","v","warnings","errors","error","message","readWithValues","mimeType","imageMimeType","Error","code","decodeJpegToRgba","toJsonValue","Array","isArray","map","output","key","entry","entries","isPNG","inspectPNG","isJPEG","inspectJPEG","isDDS","inspectDDS","isTGA","inspectTGA","width","height","isJPG","imageType","readU16LE","bpp","colorType","bitDepth","readU32BE","channels","pngChannels","pixelFormat","isCompressed","offset","frame","summary","appMarkerCount","commentCount","hasExif","hasIccProfile","marker","length","readU16BE","dataStart","dataEnd","ascii","Math","min","components","precision","progressive","scanStart","scanComponents","spectralStart","spectralEnd","successive","max","toUpperCase","fourCc","fromCharCode","readU32LE","mipCount","textureFormat","hasMipMaps","subarray","slice"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../src/formats/jpeg/core/helpers.js"],"sourcesContent":["export const OUTPUT_IMAGE = \"image\";\nexport const OUTPUT_TEXTURE = \"texture\";\nexport const OUTPUT_RGBA = \"rgba\";\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\n\nimport { canDecodeJpeg, decodeJpegToRgba } from \"./jpeg.js\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"\",\n source: \"\"\n});\n\nconst DEBUG_OUTPUTS = Object.freeze({\n png: \"pngJson\",\n jpeg: \"jpegJson\",\n jpg: \"jpegJson\",\n tga: \"tgaJson\",\n dds: \"ddsJson\"\n});\n\nconst IMAGE_MIME_TYPES = Object.freeze({\n png: \"image/png\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n tga: \"image/x-tga\",\n dds: \"image/vnd-ms.dds\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the JPEG format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsImageFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = normalizeInputType(values.inputType);\n values.emit = normalizeEmit(values.emit, values.inputType, readerName);\n return values;\n}\n\n/** Normalizes the requested input representation for the JPEG format reader. */\nexport function normalizeInputType(inputType)\n{\n if (!inputType) return \"\";\n const value = String(inputType).replace(/^\\./u, \"\").toLowerCase();\n return value === \"jpg\" ? \"jpeg\" : value;\n}\n\n/** Normalizes the requested output representation for the JPEG format reader. */\nexport function normalizeEmit(emit, inputType, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON && inputType) return DEBUG_OUTPUTS[inputType] || OUTPUT_JSON;\n if ([ OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON ].includes(emit)) return emit;\n if (Object.values(DEBUG_OUTPUTS).includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the JPEG format reader. */\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"Image input must be Uint8Array, ArrayBuffer, or DataView\");\n}\n\n/** Inspects input using normalized format options for the JPEG format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const detected = inspectBytes(bytes);\n const sourceFormat = expectedType || values.inputType || detected.sourceFormat;\n\n if (expectedType && detected.sourceFormat && detected.sourceFormat !== expectedType)\n {\n throw new TypeError(`CjsFormat${capitalize(expectedType)}: expected ${expectedType}, got ${detected.sourceFormat}`);\n }\n\n return {\n payloadType: sourceFormat === \"dds\" ? \"texture\" : \"image\",\n mediaTypes: sourceFormat === \"dds\" ? [ \"texture\", \"image\" ] : [ \"image\" ],\n sourceFormat,\n byteLength: bytes.byteLength,\n ...detected\n };\n}\n\n/**\n * Reports whether input is supported under normalized format options for the\n * JPEG format reader.\n */\nexport function isSupportedWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n try\n {\n const metadata = inspectWithValues(input, values, expectedType);\n const canDecode = metadata.sourceFormat === \"jpeg\" && canDecodeJpeg(metadata);\n const variants = [\n { kind: \"rgba\", payloadType: \"rgba\", codec: \"rgba8unorm\", supported: canDecode, reason: canDecode ? \"\" : jpegDecodeReason(metadata), containerOnly: false, isDecoded: canDecode, rgbaDecodeSupported: canDecode },\n rawVariant(metadata, canDecode)\n ];\n\n return {\n format: metadata.sourceFormat,\n source: values.source || \"buffer\",\n supported: metadata.sourceFormat ? (variants.some(variant => variant.supported && variant.kind === \"rgba\") ? \"full\" : \"partial\") : \"none\",\n confidence: metadata.sourceFormat ? 1 : 0,\n preferred: variants.find(v => v.supported)?.codec || \"\",\n reason: metadata.sourceFormat ? \"Container/header recognized.\" : \"Unrecognized image format.\",\n metadata,\n variants,\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: expectedType || values.inputType || \"\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the JPEG format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES, expectedType = \"\")\n{\n const bytes = toBytes(input);\n const metadata = inspectWithValues(bytes, values, expectedType);\n\n if (values.emit === OUTPUT_RAW)\n {\n return {\n payloadType: \"raw\",\n sourceFormat: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"jpeg\" && canDecodeJpeg(metadata),\n metadata,\n bytes\n };\n }\n\n if (values.emit === OUTPUT_JSON || values.emit === DEBUG_OUTPUTS[metadata.sourceFormat])\n {\n return metadata;\n }\n\n if ((values.emit === OUTPUT_RGBA || values.emit === OUTPUT_IMAGE) && metadata.sourceFormat === \"jpeg\")\n {\n if (!canDecodeJpeg(metadata))\n {\n const error = new Error(`jpeg: ${jpegDecodeReason(metadata)}`);\n error.code = \"CJS_FORMAT_OUTPUT_UNSUPPORTED\";\n throw error;\n }\n return decodeJpegToRgba(bytes, metadata);\n }\n\n const error = new Error(`${metadata.sourceFormat}: emit \"${values.emit}\" is not implemented yet`);\n error.code = \"CJS_FORMAT_OUTPUT_NOT_IMPLEMENTED\";\n error.sourceFormat = metadata.sourceFormat;\n error.emit = values.emit;\n throw error;\n}\n\nfunction rawVariant(metadata, canDecode)\n{\n return {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: metadata.sourceFormat,\n mimeType: imageMimeType(metadata.sourceFormat),\n supported: true,\n containerOnly: true,\n isDecoded: false,\n rgbaDecodeSupported: metadata.sourceFormat === \"jpeg\" && canDecode === true\n };\n}\n\nfunction imageMimeType(sourceFormat)\n{\n return IMAGE_MIME_TYPES[sourceFormat] || \"application/octet-stream\";\n}\n\n/** Converts a parsed payload into a JSON-safe value for the JPEG format reader. */\nexport function toJsonValue(value)\n{\n if (value instanceof Uint8Array)\n {\n return { byteLength: value.byteLength };\n }\n if (Array.isArray(value)) return value.map(toJsonValue);\n if (value && typeof value === \"object\")\n {\n const output = {};\n for (const [ key, entry ] of Object.entries(value)) output[key] = toJsonValue(entry);\n return output;\n }\n return value;\n}\n\n/**\n * Inspects the supplied bytes without decoding their payload for the JPEG format\n * reader.\n */\nexport function inspectBytes(bytes)\n{\n if (isPNG(bytes)) return inspectPNG(bytes);\n if (isJPEG(bytes)) return inspectJPEG(bytes);\n if (isDDS(bytes)) return inspectDDS(bytes);\n if (isTGA(bytes)) return inspectTGA(bytes);\n return { sourceFormat: \"\", width: 0, height: 0 };\n}\n\n/**\n * Reports whether the supplied bytes begin with a PNG signature for the JPEG\n * format reader.\n */\nexport function isPNG(bytes)\n{\n return bytes.byteLength >= 24 &&\n bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47 &&\n bytes[4] === 0x0d && bytes[5] === 0x0a && bytes[6] === 0x1a && bytes[7] === 0x0a;\n}\n\n/**\n * Reports whether the supplied bytes begin with a JPEG signature for the JPEG\n * format reader.\n */\nexport function isJPEG(bytes)\n{\n return bytes.byteLength >= 4 && bytes[0] === 0xff && bytes[1] === 0xd8;\n}\n\n/**\n * Reports whether the supplied bytes begin with a JPEG signature accepted as JPG\n * for the JPEG format reader.\n */\nexport function isJPG(bytes)\n{\n return isJPEG(bytes);\n}\n\n/**\n * Reports whether the supplied bytes begin with a DDS signature for the JPEG\n * format reader.\n */\nexport function isDDS(bytes)\n{\n return bytes.byteLength >= 128 && bytes[0] === 0x44 && bytes[1] === 0x44 && bytes[2] === 0x53 && bytes[3] === 0x20;\n}\n\n/**\n * Reports whether the supplied bytes have a supported TGA header for the JPEG\n * format reader.\n */\nexport function isTGA(bytes)\n{\n if (bytes.byteLength < 18) return false;\n const imageType = bytes[2], width = readU16LE(bytes, 12), height = readU16LE(bytes, 14), bpp = bytes[16];\n return width > 0 && height > 0 && [ 1, 2, 3, 9, 10, 11 ].includes(imageType) && [ 8, 16, 24, 32 ].includes(bpp);\n}\n\nfunction inspectPNG(bytes)\n{\n const colorType = bytes[25], bitDepth = bytes[24];\n return {\n sourceFormat: \"png\",\n width: readU32BE(bytes, 16),\n height: readU32BE(bytes, 20),\n bitDepth,\n colorType,\n channels: pngChannels(colorType),\n pixelFormat: `png-${bitDepth}-${colorType}`,\n isCompressed: false\n };\n}\n\nfunction inspectJPEG(bytes)\n{\n let offset = 2;\n let frame = null;\n const summary = {\n appMarkerCount: 0,\n commentCount: 0,\n hasExif: false,\n hasIccProfile: false\n };\n while (offset + 9 < bytes.byteLength)\n {\n if (bytes[offset] !== 0xff)\n {\n offset++;\n continue;\n }\n const marker = bytes[offset + 1], length = readU16BE(bytes, offset + 2);\n const dataStart = offset + 4;\n const dataEnd = offset + 2 + length;\n if (marker >= 0xe0 && marker <= 0xef)\n {\n summary.appMarkerCount++;\n if (marker === 0xe1 && ascii(bytes, dataStart, Math.min(6, dataEnd - dataStart)) === \"Exif\\0\\0\") summary.hasExif = true;\n if (marker === 0xe2 && ascii(bytes, dataStart, Math.min(12, dataEnd - dataStart)) === \"ICC_PROFILE\\0\") summary.hasIccProfile = true;\n }\n else if (marker === 0xfe)\n {\n summary.commentCount++;\n }\n if ([ 0xc0, 0xc1, 0xc2, 0xc3 ].includes(marker))\n {\n frame = {\n sourceFormat: \"jpeg\",\n width: readU16BE(bytes, offset + 7),\n height: readU16BE(bytes, offset + 5),\n channels: bytes[offset + 9],\n components: bytes[offset + 9],\n precision: bytes[offset + 4],\n marker,\n progressive: marker === 0xc2 || marker === 0xc3,\n pixelFormat: \"jpeg-ycbcr\",\n isCompressed: true\n };\n }\n if (marker === 0xda && frame)\n {\n const scanStart = offset + 4;\n const scanComponents = bytes[scanStart];\n const spectralStart = bytes[scanStart + 1 + scanComponents * 2];\n const spectralEnd = bytes[scanStart + 2 + scanComponents * 2];\n const successive = bytes[scanStart + 3 + scanComponents * 2];\n return {\n ...frame,\n ...summary,\n scanComponents,\n spectralStart,\n spectralEnd,\n successive,\n progressive: frame.progressive || spectralStart !== 0 || spectralEnd !== 63 || successive !== 0\n };\n }\n offset += Math.max(length + 2, 2);\n }\n return frame ? { ...frame, ...summary } : { sourceFormat: \"jpeg\", width: 0, height: 0, channels: 0, pixelFormat: \"jpeg\", isCompressed: true, ...summary };\n}\n\nfunction jpegDecodeReason(metadata)\n{\n if (metadata.sourceFormat !== \"jpeg\") return `${metadata.sourceFormat.toUpperCase()} RGBA decode is not implemented yet.`;\n if (metadata.progressive) return \"Progressive JPEG software decode is not implemented yet.\";\n if (metadata.marker !== undefined && metadata.marker !== 0xc0 && metadata.marker !== 0xc1)\n {\n return \"Only sequential baseline JPEG frames are supported by the software decoder.\";\n }\n if (metadata.precision !== undefined && metadata.precision !== 8)\n {\n return `JPEG sample precision ${metadata.precision} is not supported by the software decoder.`;\n }\n if (metadata.components > 3) return \"CMYK/YCCK JPEG software decode is not implemented yet.\";\n return \"JPEG baseline frame metadata is incomplete or unsupported.\";\n}\n\nfunction inspectDDS(bytes)\n{\n const fourCc = String.fromCharCode(bytes[84], bytes[85], bytes[86], bytes[87]).replace(/\\0+$/u, \"\");\n return {\n sourceFormat: \"dds\",\n width: readU32LE(bytes, 16),\n height: readU32LE(bytes, 12),\n mipCount: Math.max(readU32LE(bytes, 28), 1),\n fourCc,\n textureFormat: fourCc || \"dds-legacy\",\n isCompressed: !!fourCc,\n hasMipMaps: readU32LE(bytes, 28) > 1\n };\n}\n\nfunction inspectTGA(bytes)\n{\n return {\n sourceFormat: \"tga\",\n width: readU16LE(bytes, 12),\n height: readU16LE(bytes, 14),\n channels: Math.max(bytes[16] / 8, 1),\n imageType: bytes[2],\n pixelFormat: `tga-${bytes[16]}`,\n isCompressed: [ 9, 10, 11 ].includes(bytes[2])\n };\n}\n\nfunction pngChannels(colorType)\n{\n if (colorType === 0) return 1;\n if (colorType === 2) return 3;\n if (colorType === 3) return 1;\n if (colorType === 4) return 2;\n if (colorType === 6) return 4;\n return 0;\n}\n\nfunction readU16BE(bytes, offset)\n{\n return (bytes[offset] << 8) | bytes[offset + 1];\n}\n\nfunction readU16LE(bytes, offset)\n{\n return bytes[offset] | (bytes[offset + 1] << 8);\n}\n\nfunction readU32BE(bytes, offset)\n{\n return ((bytes[offset] * 0x1000000) + ((bytes[offset + 1] << 16) | (bytes[offset + 2] << 8) | bytes[offset + 3])) >>> 0;\n}\n\nfunction readU32LE(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nfunction ascii(bytes, offset, length)\n{\n return String.fromCharCode(...bytes.subarray(offset, offset + length));\n}\n\nfunction capitalize(value)\n{\n return value ? value[0].toUpperCase() + value.slice(1) : \"Image\";\n}\n"],"names":["OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","DEFAULT_VALUES","Object","freeze","emit","inputType","source","DEBUG_OUTPUTS","png","jpeg","jpg","tga","dds","IMAGE_MIME_TYPES","normalizeValues","base","options","readerName","values","normalizeInputType","normalizeEmit","value","String","replace","toLowerCase","undefined","includes","TypeError","JSON","stringify","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","inspectWithValues","expectedType","bytes","detected","inspectBytes","sourceFormat","capitalize","payloadType","mediaTypes","isSupportedWithValues","metadata","canDecode","canDecodeJpeg","variants","kind","codec","supported","reason","jpegDecodeReason","containerOnly","isDecoded","rgbaDecodeSupported","rawVariant","format","some","variant","confidence","preferred","find","v","warnings","errors","error","message","readWithValues","mimeType","imageMimeType","Error","code","decodeJpegToRgba","toJsonValue","Array","isArray","map","output","key","entry","entries","isPNG","inspectPNG","isJPEG","inspectJPEG","isDDS","inspectDDS","isTGA","inspectTGA","width","height","isJPG","imageType","readU16LE","bpp","colorType","bitDepth","readU32BE","channels","pngChannels","pixelFormat","isCompressed","offset","frame","summary","appMarkerCount","commentCount","hasExif","hasIccProfile","marker","length","readU16BE","dataStart","dataEnd","ascii","Math","min","components","precision","progressive","scanStart","scanComponents","spectralStart","spectralEnd","successive","max","toUpperCase","fourCc","fromCharCode","readU32LE","mipCount","textureFormat","hasMipMaps","subarray","slice"],"mappings":"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"}
|