本文整理汇总了TypeScript中neuroglancer/sliceview/compressed_segmentation/encode_common.ts类的典型用法代码示例。如果您正苦于以下问题:TypeScript ts类的具体用法?TypeScript ts怎么用?TypeScript ts使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ts类的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: encodeBlock
export function encodeBlock(
rawData: Uint32Array, inputOffset: number, inputStrides: ArrayLike<number>,
blockSize: ArrayLike<number>, actualSize: ArrayLike<number>, baseOffset: number,
cache: Map<string, number>, output: Uint32ArrayBuilder): [number, number] {
const ax = actualSize[0], ay = actualSize[1], az = actualSize[2];
const bx = blockSize[0], by = blockSize[1], bz = blockSize[2];
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;
}
//.........这里部分代码省略.........
示例2: encodeChannels
export function encodeChannels(
output: Uint32ArrayBuilder, blockSize: ArrayLike<number>, rawData: Uint32Array,
volumeSize: ArrayLike<number>, baseInputOffset: number = 0,
inputStrides = getFortranOrderStrides(volumeSize, 2)) {
return encodeChannelsCommon(
output, blockSize, rawData, volumeSize, baseInputOffset, inputStrides, encodeBlock);
}