All files / png / decode / _from.ts

100.00% Branches 8/8
100.00% Lines 51/51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
x2
x2
x2
x2
x2
 
x4
x262
x264
x264
x262
x4
 
x2
x4
x4
x9
x9
x9
x9
x9
x4
 
x2
x5
x5
x267
x267
x267
x267
x267
x5
 
x2
x4
x4
x265
x265
x265
x265
x265
x4
 
x2
x2
x2
x2
 
x4
x4
x9
x9
x9
x9
x9
x9
x4























































export function makePixelTransparent(
  output: Uint8Array,
  r: number,
  g: number,
  b: number,
): void {
  for (let i = 0; i < output.length; i += 4) {
    if (output[i] === r && output[i + 1] === g && output[i + 2] === b) {
      output[i + 3] = 0;
    }
  }
}

export function fromGrayscale(output: Uint8Array, i: number): void {
  let o = 0;
  for (; i < output.length; ++i) {
    output[o++] = output[i];
    output[o++] = output[i];
    output[o++] = output[i];
    output[o++] = 255;
  }
}

export function fromGrayscaleAlpha(output: Uint8Array, i: number): void {
  let o = 0;
  for (; i < output.length; i += 2) {
    output[o++] = output[i];
    output[o++] = output[i];
    output[o++] = output[i];
    output[o++] = output[i + 1];
  }
}

export function fromTruecolor(output: Uint8Array, i: number): void {
  let o = 0;
  for (; i < output.length; i += 3) {
    output[o++] = output[i];
    output[o++] = output[i + 1];
    output[o++] = output[i + 2];
    output[o++] = 255;
  }
}

export function fromIndex(
  output: Uint8Array,
  i: number,
  palette: Uint32Array,
): void {
  let o = 0;
  for (; i < output.length; ++i) {
    const pixel = palette[output[i]];
    output[o++] = pixel >>> 24 & 0xFF;
    output[o++] = pixel >>> 16 & 0xFF;
    output[o++] = pixel >>> 8 & 0xFF;
    output[o++] = pixel & 0xFF;
  }
}