Showing
1 changed file
with
35 additions
and
35 deletions
@@ -19,70 +19,70 @@ part of pdf; | @@ -19,70 +19,70 @@ part of pdf; | ||
19 | class Ascii85Encoder extends Converter<List<int>, List<int>> { | 19 | class Ascii85Encoder extends Converter<List<int>, List<int>> { |
20 | @override | 20 | @override |
21 | List<int> convert(List<int> input) { | 21 | List<int> convert(List<int> input) { |
22 | - final Uint8List buffer = Uint8List(_maxEncodedLen(input.length) + 2); | 22 | + final Uint8List output = Uint8List(_maxEncodedLen(input.length) + 2); |
23 | 23 | ||
24 | - int b = 0; | ||
25 | - int s = 0; | 24 | + int outputOffset = 0; |
25 | + int inputOffset = 0; | ||
26 | 26 | ||
27 | - while (s < input.length) { | ||
28 | - buffer[b + 0] = 0; | ||
29 | - buffer[b + 1] = 0; | ||
30 | - buffer[b + 2] = 0; | ||
31 | - buffer[b + 3] = 0; | ||
32 | - buffer[b + 4] = 0; | 27 | + while (inputOffset < input.length) { |
28 | + output[outputOffset + 0] = 0; | ||
29 | + output[outputOffset + 1] = 0; | ||
30 | + output[outputOffset + 2] = 0; | ||
31 | + output[outputOffset + 3] = 0; | ||
32 | + output[outputOffset + 4] = 0; | ||
33 | 33 | ||
34 | // Unpack 4 bytes into int to repack into base 85 5-byte. | 34 | // Unpack 4 bytes into int to repack into base 85 5-byte. |
35 | - int v = 0; | 35 | + int value = 0; |
36 | 36 | ||
37 | - switch (input.length - s) { | 37 | + switch (input.length - inputOffset) { |
38 | case 3: | 38 | case 3: |
39 | - v |= input[s + 0] << 24; | ||
40 | - v |= input[s + 1] << 16; | ||
41 | - v |= input[s + 2] << 8; | 39 | + value |= input[inputOffset + 0] << 24; |
40 | + value |= input[inputOffset + 1] << 16; | ||
41 | + value |= input[inputOffset + 2] << 8; | ||
42 | break; | 42 | break; |
43 | case 2: | 43 | case 2: |
44 | - v |= input[s + 0] << 24; | ||
45 | - v |= input[s + 1] << 16; | 44 | + value |= input[inputOffset + 0] << 24; |
45 | + value |= input[inputOffset + 1] << 16; | ||
46 | break; | 46 | break; |
47 | case 1: | 47 | case 1: |
48 | - v |= input[s + 0] << 24; | 48 | + value |= input[inputOffset + 0] << 24; |
49 | break; | 49 | break; |
50 | default: | 50 | default: |
51 | - v |= input[s + 0] << 24; | ||
52 | - v |= input[s + 1] << 16; | ||
53 | - v |= input[s + 2] << 8; | ||
54 | - v |= input[s + 3]; | 51 | + value |= input[inputOffset + 0] << 24; |
52 | + value |= input[inputOffset + 1] << 16; | ||
53 | + value |= input[inputOffset + 2] << 8; | ||
54 | + value |= input[inputOffset + 3]; | ||
55 | } | 55 | } |
56 | 56 | ||
57 | // Special case: zero (!!!!!) shortens to z. | 57 | // Special case: zero (!!!!!) shortens to z. |
58 | - if (v == 0 && input.length - s >= 4) { | ||
59 | - buffer[b] = 122; | ||
60 | - b++; | ||
61 | - s += 4; | 58 | + if (value == 0 && input.length - inputOffset >= 4) { |
59 | + output[outputOffset] = 122; | ||
60 | + outputOffset++; | ||
61 | + inputOffset += 4; | ||
62 | continue; | 62 | continue; |
63 | } | 63 | } |
64 | 64 | ||
65 | // Otherwise, 5 base 85 digits starting at !. | 65 | // Otherwise, 5 base 85 digits starting at !. |
66 | for (int i = 4; i >= 0; i--) { | 66 | for (int i = 4; i >= 0; i--) { |
67 | - buffer[b + i] = 33 + v % 85; | ||
68 | - v ~/= 85; | 67 | + output[outputOffset + i] = 33 + value % 85; |
68 | + value ~/= 85; | ||
69 | } | 69 | } |
70 | 70 | ||
71 | - if (input.length - s < 4) { | 71 | + if (input.length - inputOffset < 4) { |
72 | // If input was short, discard the low destination bytes. | 72 | // If input was short, discard the low destination bytes. |
73 | - b += input.length - s + 1; | 73 | + outputOffset += input.length - inputOffset + 1; |
74 | break; | 74 | break; |
75 | } | 75 | } |
76 | 76 | ||
77 | - s += 4; | ||
78 | - b += 5; | 77 | + inputOffset += 4; |
78 | + outputOffset += 5; | ||
79 | } | 79 | } |
80 | 80 | ||
81 | - buffer[b] = 0x7e; | ||
82 | - buffer[b + 1] = 0x3e; | 81 | + output[outputOffset] = 0x7e; |
82 | + output[outputOffset + 1] = 0x3e; | ||
83 | 83 | ||
84 | - return buffer.sublist(0, b + 2); | 84 | + return output.sublist(0, outputOffset + 2); |
85 | } | 85 | } |
86 | 86 | ||
87 | - int _maxEncodedLen(int n) => (n + 3) ~/ 4 * 5; | 87 | + int _maxEncodedLen(int length) => (length + 3) ~/ 4 * 5; |
88 | } | 88 | } |
-
Please register or login to post a comment