Use Uint32Array to copy an entire pixel per op

This commit is contained in:
Surma
2019-01-23 10:17:52 -05:00
parent 887db675c8
commit 507921cbe8

View File

@@ -61,16 +61,15 @@ export function rotate(data: ImageData, opts: RotateOptions): ImageData {
d2Multiplier = 1; d2Multiplier = 1;
} }
const inB = new Uint32Array(data.data.buffer);
const outB = new Uint32Array(out.data.buffer);
for (let d2 = d2Start; d2 >= 0 && d2 < d2Limit; d2 += d2Advance) { for (let d2 = d2Start; d2 >= 0 && d2 < d2Limit; d2 += d2Advance) {
for (let d1 = d1Start; d1 >= 0 && d1 < d1Limit; d1 += d1Advance) { for (let d1 = d1Start; d1 >= 0 && d1 < d1Limit; d1 += d1Advance) {
// Iterate over channels: const start = ((d1 * d1Multiplier) + (d2 * d2Multiplier));
const start = ((d1 * d1Multiplier) + (d2 * d2Multiplier)) * bpp; outB[i] = inB[start];
for (let j = 0; j < bpp; j += 1) {
out.data[i] = data.data[start + j];
i += 1; i += 1;
} }
} }
}
return out; return out;
} }