当前位置: 首页>>代码示例>>TypeScript>>正文


TypeScript ts.writeBlock方法代码示例

本文整理汇总了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);
}
开发者ID:j6k4m8,项目名称:neuroglancer,代码行数:101,代码来源:encode_uint64.ts


注:本文中的neuroglancer/sliceview/compressed_segmentation/encode_common.ts.writeBlock方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。