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