本文整理汇总了TypeScript中neuroglancer/sliceview/compressed_segmentation/encode_common.ts.writeBlock方法的典型用法代码示例。如果您正苦于以下问题:TypeScript ts.writeBlock方法的具体用法?TypeScript ts.writeBlock怎么用?TypeScript ts.writeBlock使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类neuroglancer/sliceview/compressed_segmentation/encode_common.ts
的用法示例。
在下文中一共展示了ts.writeBlock方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: encodeBlock
//.........这里部分代码省略.........
let sx = inputStrides[0], sy = inputStrides[1], sz = inputStrides[2];
sz -= sy * ay;
sy -= sx * ax;
if (ax * ay * az === 0) {
return [0, 0];
}
let numBlockElements = bx * by * bz + 31; // Add padding elements.
if (tempEncodingBuffer === undefined || tempEncodingBuffer.length < numBlockElements) {
tempEncodingBuffer = new Uint32Array(numBlockElements);
tempValuesBuffer1 = new Uint32Array(numBlockElements * uint32sPerElement);
tempValuesBuffer2 = new Uint32Array(numBlockElements * uint32sPerElement);
tempIndexBuffer1 = new Uint32Array(numBlockElements);
tempIndexBuffer2 = new Uint32Array(numBlockElements);
}
const encodingBuffer = tempEncodingBuffer.subarray(0, numBlockElements);
encodingBuffer.fill(0);
const valuesBuffer1 = tempValuesBuffer1;
const valuesBuffer2 = tempValuesBuffer2;
const indexBuffer1 = tempIndexBuffer1;
const indexBuffer2 = tempIndexBuffer2;
let noAdjacentDuplicateIndex = 0;
{
let prevLow = ((rawData[inputOffset] + 1) >>> 0);
let prevHigh = 0;
let curInputOff = inputOffset;
let blockElementIndex = 0;
let bsy = bx - ax;
let bsz = bx * by - bx * ay;
for (let z = 0; z < az; ++z, curInputOff += sz, blockElementIndex += bsz) {
for (let y = 0; y < ay; ++y, curInputOff += sy, blockElementIndex += bsy) {
for (let x = 0; x < ax; ++x, curInputOff += sx) {
let valueLow = rawData[curInputOff];
let valueHigh = rawData[curInputOff + 1];
if (valueLow !== prevLow
|| valueHigh !== prevHigh
) {
prevLow = valuesBuffer1[noAdjacentDuplicateIndex * 2] = valueLow;
prevHigh = valuesBuffer1[noAdjacentDuplicateIndex * 2 + 1] = valueHigh;
indexBuffer1[noAdjacentDuplicateIndex] = noAdjacentDuplicateIndex++;
}
encodingBuffer[blockElementIndex++] = noAdjacentDuplicateIndex;
}
}
}
}
indexBuffer1.subarray(0, noAdjacentDuplicateIndex).sort((a, b) => {
let aHigh = valuesBuffer1[2 * a + 1];
let bHigh = valuesBuffer1[2 * b + 1];
let aLow = valuesBuffer1[2 * a];
let bLow = valuesBuffer1[2 * b];
return (aHigh - bHigh) || (aLow - bLow);
});
let numUniqueValues = -1;
{
let prevLow = (valuesBuffer1[indexBuffer1[0] * uint32sPerElement] + 1) >>> 0;
let prevHigh = 0;
for (let i = 0; i < noAdjacentDuplicateIndex; ++i) {
let index = indexBuffer1[i];
let valueIndex = index * uint32sPerElement;
let valueLow = valuesBuffer1[valueIndex];
let valueHigh = valuesBuffer1[valueIndex + 1];
if (valueLow !== prevLow
|| valueHigh !== prevHigh
) {
++numUniqueValues;
let outputIndex2 = numUniqueValues * uint32sPerElement;
prevLow = valuesBuffer2[outputIndex2] = valueLow;
prevHigh = valuesBuffer2[outputIndex2 + 1] = valueHigh;
}
indexBuffer2[index + 1] = numUniqueValues;
}
++numUniqueValues;
}
return writeBlock(output, baseOffset, cache, bx * by * bz, numUniqueValues, valuesBuffer2, encodingBuffer,
indexBuffer2, uint32sPerElement);
}