@@ -22,7 +22,7 @@ const haveSharedArrayBuffer = typeof globalThis.SharedArrayBuffer === 'function'
2222const encoder = new TextEncoder ( )
2323const decoder = new TextDecoder ( 'utf-8' )
2424
25- function readFileSharedArray (
25+ function readFileSharedArray (
2626 emscriptenModule : PipelineEmscriptenModule ,
2727 path : string
2828) : Uint8Array {
@@ -42,7 +42,7 @@ function readFileSharedArray(
4242 return array
4343}
4444
45- function memoryUint8SharedArray (
45+ function memoryUint8SharedArray (
4646 emscriptenModule : PipelineEmscriptenModule ,
4747 byteOffset : number ,
4848 length : number
@@ -63,7 +63,7 @@ function memoryUint8SharedArray(
6363 return array
6464}
6565
66- function setPipelineModuleInputArray (
66+ function setPipelineModuleInputArray (
6767 emscriptenModule : PipelineEmscriptenModule ,
6868 dataArray : TypedArray | null ,
6969 inputIndex : number ,
@@ -82,7 +82,7 @@ function setPipelineModuleInputArray(
8282 return dataPtr
8383}
8484
85- function setPipelineModuleInputJSON (
85+ function setPipelineModuleInputJSON (
8686 emscriptenModule : PipelineEmscriptenModule ,
8787 dataObject : object ,
8888 inputIndex : number
@@ -98,13 +98,13 @@ function setPipelineModuleInputJSON(
9898 emscriptenModule . stringToUTF8 ( dataJSON , jsonPtr , length )
9999}
100100
101- function getPipelineModuleOutputArray (
101+ function getPipelineModuleOutputArray (
102102 emscriptenModule : PipelineEmscriptenModule ,
103103 outputIndex : number ,
104104 subIndex : number ,
105105 componentType :
106- | ( typeof IntTypes ) [ keyof typeof IntTypes ]
107- | ( typeof FloatTypes ) [ keyof typeof FloatTypes ]
106+ | ( typeof IntTypes ) [ keyof typeof IntTypes ]
107+ | ( typeof FloatTypes ) [ keyof typeof FloatTypes ]
108108) : TypedArray | Float32Array | Uint32Array | null {
109109 const dataPtr = emscriptenModule . ccall (
110110 'itk_wasm_output_array_address' ,
@@ -123,7 +123,7 @@ function getPipelineModuleOutputArray(
123123 return data
124124}
125125
126- function getPipelineModuleOutputJSON (
126+ function getPipelineModuleOutputJSON (
127127 emscriptenModule : PipelineEmscriptenModule ,
128128 outputIndex : number
129129) : object {
@@ -138,7 +138,7 @@ function getPipelineModuleOutputJSON(
138138 return dataObject
139139}
140140
141- function runPipelineEmscripten (
141+ function runPipelineEmscripten (
142142 pipelineModule : PipelineEmscriptenModule ,
143143 args : string [ ] ,
144144 outputs : PipelineOutput [ ] | null ,
@@ -313,21 +313,34 @@ function runPipelineEmscripten(
313313 case InterfaceTypes . TransformList : {
314314 const transformList = input . data as TransformList
315315 const transformListJSON : any = [ ]
316- transformList . forEach ( ( transform , transformIndex ) => {
317- const fixedParameterPtr = setPipelineModuleInputArray (
318- pipelineModule ,
319- transform . fixedParameters ,
320- index ,
321- transformIndex * 2
322- )
323- const fixedParameters = `data:application/vnd.itk.address,0:${ fixedParameterPtr } `
324- const parameterPtr = setPipelineModuleInputArray (
325- pipelineModule ,
326- transform . parameters ,
327- index ,
328- transformIndex * 2 + 1
329- )
330- const parameters = `data:application/vnd.itk.address,0:${ parameterPtr } `
316+ let inputArrayIndex = 0
317+ transformList . forEach ( ( transform ) => {
318+ let fixedParameters = ''
319+ let parameters = ''
320+
321+ // Skip setting input arrays for Composite transforms as they don't have array data
322+ if (
323+ transform . transformType . transformParameterization !== 'Composite'
324+ ) {
325+ const fixedParameterPtr = setPipelineModuleInputArray (
326+ pipelineModule ,
327+ transform . fixedParameters ,
328+ index ,
329+ inputArrayIndex
330+ )
331+ fixedParameters = `data:application/vnd.itk.address,0:${ fixedParameterPtr } `
332+ inputArrayIndex += 1
333+
334+ const parameterPtr = setPipelineModuleInputArray (
335+ pipelineModule ,
336+ transform . parameters ,
337+ index ,
338+ inputArrayIndex
339+ )
340+ parameters = `data:application/vnd.itk.address,0:${ parameterPtr } `
341+ inputArrayIndex += 1
342+ }
343+
331344 const transformJSON = {
332345 transformType : transform . transformType ,
333346 numberOfFixedParameters : transform . numberOfFixedParameters ,
0 commit comments