From 507921cbe8fd811c4139e7f0e48c8fc9d4f879d0 Mon Sep 17 00:00:00 2001 From: Surma Date: Wed, 23 Jan 2019 10:17:52 -0500 Subject: [PATCH] Use Uint32Array to copy an entire pixel per op --- src/codecs/rotate/processor.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/codecs/rotate/processor.ts b/src/codecs/rotate/processor.ts index daefdd22..9d4a4e47 100644 --- a/src/codecs/rotate/processor.ts +++ b/src/codecs/rotate/processor.ts @@ -61,14 +61,13 @@ export function rotate(data: ImageData, opts: RotateOptions): ImageData { 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 d1 = d1Start; d1 >= 0 && d1 < d1Limit; d1 += d1Advance) { - // Iterate over channels: - const start = ((d1 * d1Multiplier) + (d2 * d2Multiplier)) * bpp; - for (let j = 0; j < bpp; j += 1) { - out.data[i] = data.data[start + j]; - i += 1; - } + const start = ((d1 * d1Multiplier) + (d2 * d2Multiplier)); + outB[i] = inB[start]; + i += 1; } }