decodeUniversalBlock function

List<(int, int, int, int)> decodeUniversalBlock(
  1. Uint8List blocks,
  2. int index
)

The sixteen texels of block index, row-major — what the legs with no structural shortcut start from, and what a test compares against.

Implementation

List<(int, int, int, int)> decodeUniversalBlock(Uint8List blocks, int index) {
  final at = index * kUniversalBlockBytes;
  final e0 = (blocks[at], blocks[at + 1], blocks[at + 2]);
  final e1 = (blocks[at + 3], blocks[at + 4], blocks[at + 5]);
  final a0 = blocks[at + _kAlphaHigh];
  final a1 = blocks[at + _kAlphaLow];
  return <(int, int, int, int)>[
    for (var i = 0; i < 16; i++)
      _texel(
        e0,
        e1,
        a0,
        a1,
        _weight(blocks, at + _kColorWeights, i),
        _weight(blocks, at + _kAlphaWeights, i),
      ),
  ];
}