Fetch binary chunk and draw on canvas

This commit is contained in:
Guntis Smaukstelis
2025-02-03 23:33:28 +02:00
parent c1b1226678
commit df8d16ed4a
18 changed files with 898 additions and 6 deletions
+34
View File
@@ -0,0 +1,34 @@
import { u8ToBits } from '../../helpers/u8ToBits.js'
import { MeteoGrid } from '../interfaces.js'
export function applyBitmask(
grid: MeteoGrid,
buffer: Uint8Array,
bitmask: Uint8Array,
bytesPerPoint: number,
): Uint8Array {
const newBuffer = new Uint8Array(grid.rows * grid.cols * bytesPerPoint)
let i=0, bufferI=0
for (; i<bitmask.length; i++) {
const bits = u8ToBits(bitmask[i])
for (let bitI=0; bitI<bits.length; bitI++) {
const newI = (i*8 + bitI) * bytesPerPoint
if (newI >= newBuffer.length) {
break;
}
if (bits[bitI]) {
newBuffer[newI] = buffer[bufferI]
newBuffer[newI+1] = buffer[bufferI+1]
newBuffer[newI+2] = buffer[bufferI+2]
bufferI += bytesPerPoint
} else {
newBuffer[newI] = 255
newBuffer[newI+1] = 255
newBuffer[newI+2] = 255
}
}
}
return newBuffer
}