@4bitlabs/sci0 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/LICENSE.txt +10 -0
  2. package/README.md +85 -0
  3. package/dist/.tscache +1 -0
  4. package/dist/index.d.ts +14 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +50 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/models/cel.d.ts +9 -0
  9. package/dist/models/cel.d.ts.map +1 -0
  10. package/dist/models/cel.js +3 -0
  11. package/dist/models/cel.js.map +1 -0
  12. package/dist/models/cursor.d.ts +7 -0
  13. package/dist/models/cursor.d.ts.map +1 -0
  14. package/dist/models/cursor.js +3 -0
  15. package/dist/models/cursor.js.map +1 -0
  16. package/dist/models/draw-command.d.ts +43 -0
  17. package/dist/models/draw-command.d.ts.map +1 -0
  18. package/dist/models/draw-command.js +10 -0
  19. package/dist/models/draw-command.js.map +1 -0
  20. package/dist/models/font-face.d.ts +6 -0
  21. package/dist/models/font-face.d.ts.map +1 -0
  22. package/dist/models/font-face.js +3 -0
  23. package/dist/models/font-face.js.map +1 -0
  24. package/dist/models/resource-header.d.ts +7 -0
  25. package/dist/models/resource-header.d.ts.map +1 -0
  26. package/dist/models/resource-header.js +3 -0
  27. package/dist/models/resource-header.js.map +1 -0
  28. package/dist/models/resource-id.d.ts +10 -0
  29. package/dist/models/resource-id.d.ts.map +1 -0
  30. package/dist/models/resource-id.js +66 -0
  31. package/dist/models/resource-id.js.map +1 -0
  32. package/dist/models/resource-map.d.ts +6 -0
  33. package/dist/models/resource-map.d.ts.map +1 -0
  34. package/dist/models/resource-map.js +3 -0
  35. package/dist/models/resource-map.js.map +1 -0
  36. package/dist/models/resource-type.d.ts +24 -0
  37. package/dist/models/resource-type.d.ts.map +1 -0
  38. package/dist/models/resource-type.js +26 -0
  39. package/dist/models/resource-type.js.map +1 -0
  40. package/dist/models/view.d.ts +7 -0
  41. package/dist/models/view.d.ts.map +1 -0
  42. package/dist/models/view.js +3 -0
  43. package/dist/models/view.js.map +1 -0
  44. package/dist/parsers/cel.d.ts +3 -0
  45. package/dist/parsers/cel.d.ts.map +1 -0
  46. package/dist/parsers/cel.js +34 -0
  47. package/dist/parsers/cel.js.map +1 -0
  48. package/dist/parsers/compression.d.ts +2 -0
  49. package/dist/parsers/compression.d.ts.map +1 -0
  50. package/dist/parsers/compression.js +36 -0
  51. package/dist/parsers/compression.js.map +1 -0
  52. package/dist/parsers/cursor.d.ts +15 -0
  53. package/dist/parsers/cursor.d.ts.map +1 -0
  54. package/dist/parsers/cursor.js +36 -0
  55. package/dist/parsers/cursor.js.map +1 -0
  56. package/dist/parsers/font.d.ts +7 -0
  57. package/dist/parsers/font.d.ts.map +1 -0
  58. package/dist/parsers/font.js +38 -0
  59. package/dist/parsers/font.js.map +1 -0
  60. package/dist/parsers/mapping.d.ts +4 -0
  61. package/dist/parsers/mapping.d.ts.map +1 -0
  62. package/dist/parsers/mapping.js +36 -0
  63. package/dist/parsers/mapping.js.map +1 -0
  64. package/dist/parsers/pic/handlers.d.ts +9 -0
  65. package/dist/parsers/pic/handlers.d.ts.map +1 -0
  66. package/dist/parsers/pic/handlers.js +205 -0
  67. package/dist/parsers/pic/handlers.js.map +1 -0
  68. package/dist/parsers/pic/index.d.ts +2 -0
  69. package/dist/parsers/pic/index.d.ts.map +1 -0
  70. package/dist/parsers/pic/index.js +6 -0
  71. package/dist/parsers/pic/index.js.map +1 -0
  72. package/dist/parsers/pic/op-codes.d.ts +32 -0
  73. package/dist/parsers/pic/op-codes.d.ts.map +1 -0
  74. package/dist/parsers/pic/op-codes.js +44 -0
  75. package/dist/parsers/pic/op-codes.js.map +1 -0
  76. package/dist/parsers/pic/parser.d.ts +3 -0
  77. package/dist/parsers/pic/parser.d.ts.map +1 -0
  78. package/dist/parsers/pic/parser.js +28 -0
  79. package/dist/parsers/pic/parser.js.map +1 -0
  80. package/dist/parsers/pic/pic-state.d.ts +8 -0
  81. package/dist/parsers/pic/pic-state.d.ts.map +1 -0
  82. package/dist/parsers/pic/pic-state.js +17 -0
  83. package/dist/parsers/pic/pic-state.js.map +1 -0
  84. package/dist/parsers/pic/points.d.ts +6 -0
  85. package/dist/parsers/pic/points.d.ts.map +1 -0
  86. package/dist/parsers/pic/points.js +53 -0
  87. package/dist/parsers/pic/points.js.map +1 -0
  88. package/dist/parsers/resource-header.d.ts +4 -0
  89. package/dist/parsers/resource-header.d.ts.map +1 -0
  90. package/dist/parsers/resource-header.js +16 -0
  91. package/dist/parsers/resource-header.js.map +1 -0
  92. package/dist/parsers/view.d.ts +3 -0
  93. package/dist/parsers/view.d.ts.map +1 -0
  94. package/dist/parsers/view.js +27 -0
  95. package/dist/parsers/view.js.map +1 -0
  96. package/dist/screen/buffer.d.ts +7 -0
  97. package/dist/screen/buffer.d.ts.map +1 -0
  98. package/dist/screen/buffer.js +31 -0
  99. package/dist/screen/buffer.js.map +1 -0
  100. package/dist/screen/circles.d.ts +3 -0
  101. package/dist/screen/circles.d.ts.map +1 -0
  102. package/dist/screen/circles.js +87 -0
  103. package/dist/screen/circles.js.map +1 -0
  104. package/dist/screen/default-palette.d.ts +2 -0
  105. package/dist/screen/default-palette.d.ts.map +1 -0
  106. package/dist/screen/default-palette.js +10 -0
  107. package/dist/screen/default-palette.js.map +1 -0
  108. package/dist/screen/index.d.ts +3 -0
  109. package/dist/screen/index.d.ts.map +1 -0
  110. package/dist/screen/index.js +8 -0
  111. package/dist/screen/index.js.map +1 -0
  112. package/dist/screen/noise.d.ts +3 -0
  113. package/dist/screen/noise.d.ts.map +1 -0
  114. package/dist/screen/noise.js +24 -0
  115. package/dist/screen/noise.js.map +1 -0
  116. package/dist/screen/render-cel.d.ts +9 -0
  117. package/dist/screen/render-cel.d.ts.map +1 -0
  118. package/dist/screen/render-cel.js +24 -0
  119. package/dist/screen/render-cel.js.map +1 -0
  120. package/dist/screen/render-pic.d.ts +14 -0
  121. package/dist/screen/render-pic.d.ts.map +1 -0
  122. package/dist/screen/render-pic.js +104 -0
  123. package/dist/screen/render-pic.js.map +1 -0
  124. package/dist/screen/sci0-screen-impl.d.ts +7 -0
  125. package/dist/screen/sci0-screen-impl.d.ts.map +1 -0
  126. package/dist/screen/sci0-screen-impl.js +113 -0
  127. package/dist/screen/sci0-screen-impl.js.map +1 -0
  128. package/dist/screen/screen.d.ts +13 -0
  129. package/dist/screen/screen.d.ts.map +1 -0
  130. package/dist/screen/screen.js +3 -0
  131. package/dist/screen/screen.js.map +1 -0
  132. package/dist/stream/index.d.ts +2 -0
  133. package/dist/stream/index.d.ts.map +1 -0
  134. package/dist/stream/index.js +6 -0
  135. package/dist/stream/index.js.map +1 -0
  136. package/dist/stream/mapping-parser.d.ts +3 -0
  137. package/dist/stream/mapping-parser.d.ts.map +1 -0
  138. package/dist/stream/mapping-parser.js +44 -0
  139. package/dist/stream/mapping-parser.js.map +1 -0
  140. package/dist/utils/repeat.d.ts +2 -0
  141. package/dist/utils/repeat.d.ts.map +1 -0
  142. package/dist/utils/repeat.js +8 -0
  143. package/dist/utils/repeat.js.map +1 -0
  144. package/package.json +33 -0
@@ -0,0 +1,7 @@
1
+ import { Cel } from './cel';
2
+ export interface ViewGroup {
3
+ frames: Cel[];
4
+ isMirrored: boolean;
5
+ }
6
+ export type View = ViewGroup[];
7
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/models/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/models/view.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { Cel } from '../models/cel';
2
+ export declare const parseCel: (frameView: DataView) => Cel;
3
+ //# sourceMappingURL=cel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cel.d.ts","sourceRoot":"","sources":["../../src/parsers/cel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,eAAO,MAAM,QAAQ,cAAe,QAAQ,KAAG,GAgC9C,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCel = void 0;
4
+ const parseCel = (frameView) => {
5
+ const [width, height] = [
6
+ frameView.getUint16(0, true),
7
+ frameView.getUint16(2, true),
8
+ ];
9
+ const [dx, dy] = [frameView.getInt8(4), frameView.getInt8(5)];
10
+ const keyColor = frameView.getUint8(6);
11
+ const total = width * height;
12
+ const pixels = new ArrayBuffer(total);
13
+ const bytes = new Uint8ClampedArray(pixels, 0, total);
14
+ let idx = 0;
15
+ for (let i = 0; i < total;) {
16
+ const data = frameView.getUint8(7 + idx);
17
+ idx += 1;
18
+ const [color, repeat] = [data & 0xf, data >>> 4];
19
+ for (let r = 0; r < repeat; r++) {
20
+ bytes[i] = color;
21
+ i += 1;
22
+ }
23
+ }
24
+ return {
25
+ data: pixels,
26
+ height,
27
+ keyColor,
28
+ width,
29
+ dx,
30
+ dy,
31
+ };
32
+ };
33
+ exports.parseCel = parseCel;
34
+ //# sourceMappingURL=cel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cel.js","sourceRoot":"","sources":["../../src/parsers/cel.ts"],"names":[],"mappings":";;;AAEO,MAAM,QAAQ,GAAG,CAAC,SAAmB,EAAO,EAAE;IACnD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG;QACtB,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;QAC5B,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC;KAC7B,CAAC;IACF,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAEtD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,GAAI,CAAC;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACzC,GAAG,IAAI,CAAC,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YACjB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,MAAM;QACN,QAAQ;QACR,KAAK;QACL,EAAE;QACF,EAAE;KACH,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,QAAQ,YAgCnB"}
@@ -0,0 +1,2 @@
1
+ export declare const decompress: (mode: 'sci0' | 'sci01', method: number, bytes: Uint8Array) => Uint8Array;
2
+ //# sourceMappingURL=compression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compression.d.ts","sourceRoot":"","sources":["../../src/parsers/compression.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,UAAU,SACf,MAAM,GAAG,OAAO,UACd,MAAM,SACP,UAAU,KAChB,UAeF,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decompress = void 0;
4
+ const lzw_1 = require("@4bitlabs/codecs/lzw");
5
+ const huffman_1 = require("@4bitlabs/codecs/huffman");
6
+ const isSupported = (it) => [0, 1, 2].includes(it);
7
+ const SCI0 = {
8
+ 0: (bytes) => bytes,
9
+ 1: (bytes) => (0, lzw_1.decode)(bytes, { literalWidth: 8, order: 'lsb' }),
10
+ 2: (bytes) => (0, huffman_1.decode)(bytes),
11
+ };
12
+ const SCI01 = {
13
+ 0: (bytes) => bytes,
14
+ 1: (bytes) => (0, huffman_1.decode)(bytes),
15
+ 2: () => {
16
+ throw new Error('unsupported');
17
+ },
18
+ };
19
+ const decompress = (mode, method, bytes) => {
20
+ switch (mode) {
21
+ case 'sci0': {
22
+ if (!isSupported(method))
23
+ throw new Error(`unsupported compression algorithm: ${method}`);
24
+ return SCI0[method](bytes);
25
+ }
26
+ case 'sci01': {
27
+ if (!isSupported(method))
28
+ throw new Error(`unsupported compression algorithm: ${method}`);
29
+ return SCI01[method](bytes);
30
+ }
31
+ default:
32
+ throw new Error(`unsupported compression mode: ${mode}`);
33
+ }
34
+ };
35
+ exports.decompress = decompress;
36
+ //# sourceMappingURL=compression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compression.js","sourceRoot":"","sources":["../../src/parsers/compression.ts"],"names":[],"mappings":";;;AAAA,8CAA2D;AAC3D,sDAAmE;AAGnE,MAAM,WAAW,GAAG,CAAC,EAAO,EAA6B,EAAE,CACzD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAEzB,MAAM,IAAI,GAAyD;IACjE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACnB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,YAAS,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACjE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAa,EAAC,KAAK,CAAC;CACnC,CAAC;AAEF,MAAM,KAAK,GAAyD;IAClE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;IACnB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,gBAAa,EAAC,KAAK,CAAC;IAClC,CAAC,EAAE,GAAG,EAAE;QACN,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;CACF,CAAC;AAEK,MAAM,UAAU,GAAG,CACxB,IAAsB,EACtB,MAAc,EACd,KAAiB,EACL,EAAE;IACd,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC;AAnBW,QAAA,UAAU,cAmBrB"}
@@ -0,0 +1,15 @@
1
+ import { Cursor } from '../models/cursor';
2
+ type CursorMapping = [
3
+ Uint8ClampedArray,
4
+ Uint8ClampedArray,
5
+ Uint8ClampedArray,
6
+ Uint8ClampedArray
7
+ ];
8
+ export declare const DEFAULT_MAPPING: CursorMapping;
9
+ export declare const LB_MAPPING: CursorMapping;
10
+ interface ParseCursorOptions {
11
+ mapping?: CursorMapping;
12
+ }
13
+ export declare const parseFrom: (source: Uint8Array, options?: ParseCursorOptions) => Cursor;
14
+ export {};
15
+ //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/parsers/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAO1C,KAAK,aAAa,GAAG;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,aAA2C,CAAC;AAC1E,eAAO,MAAM,UAAU,EAAE,aAA4C,CAAC;AAEtE,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,eAAO,MAAM,SAAS,WACZ,UAAU,YACT,kBAAkB,KAC1B,MAkCF,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFrom = exports.LB_MAPPING = exports.DEFAULT_MAPPING = void 0;
4
+ const BLACK = Uint8ClampedArray.of(0x00, 0x00, 0x00, 0xff);
5
+ const WHITE = Uint8ClampedArray.of(0xff, 0xff, 0xff, 0xff);
6
+ const GRAY = Uint8ClampedArray.of(0xaa, 0xaa, 0xaa, 0xff);
7
+ const TRANS = Uint8ClampedArray.of(0x7f, 0x7f, 0x7f, 0x00);
8
+ exports.DEFAULT_MAPPING = [BLACK, WHITE, TRANS, GRAY];
9
+ exports.LB_MAPPING = [BLACK, WHITE, TRANS, WHITE];
10
+ const parseFrom = (source, options = {}) => {
11
+ const { mapping = exports.DEFAULT_MAPPING } = options;
12
+ const view = new DataView(source.buffer, source.byteOffset, source.byteLength);
13
+ // Parse data;
14
+ const hotspot = [view.getUint16(0, true), view.getUint16(2, true)];
15
+ const data = new Uint8ClampedArray(16 * 16 * 4);
16
+ const stride = 16 * 4;
17
+ for (let y = 0; y < 16; y++) {
18
+ for (let x = 0; x < 16; x++) {
19
+ const idx = 4 + y * 2;
20
+ const tx = view.getUint16(idx, true);
21
+ const clr = view.getUint16(idx + 32, true);
22
+ const a = (tx >> (15 - x)) & 1;
23
+ const b = (clr >> (15 - x)) & 1;
24
+ const value = (a << 1) | b;
25
+ data.set(mapping[value], x * 4 + y * stride);
26
+ }
27
+ }
28
+ return {
29
+ width: 16,
30
+ height: 16,
31
+ data,
32
+ hotspot,
33
+ };
34
+ };
35
+ exports.parseFrom = parseFrom;
36
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/parsers/cursor.ts"],"names":[],"mappings":";;;AAEA,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3D,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3D,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1D,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAS9C,QAAA,eAAe,GAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC7D,QAAA,UAAU,GAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAM/D,MAAM,SAAS,GAAG,CACvB,MAAkB,EAClB,UAA8B,EAAE,EACxB,EAAE;IACV,MAAM,EAAE,OAAO,GAAG,uBAAe,EAAE,GAAG,OAAO,CAAC;IAE9C,MAAM,IAAI,GAAG,IAAI,QAAQ,CACvB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,CAClB,CAAC;IAEF,cAAc;IACd,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAU,CAAC;IAE5E,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEtB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;YAE3C,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,SAAS,aAqCpB"}
@@ -0,0 +1,7 @@
1
+ import { FontFace } from '../models/font-face';
2
+ interface ParseFontOptions {
3
+ colors?: [Uint8ClampedArray, Uint8ClampedArray];
4
+ }
5
+ export declare const parseFrom: (source: Uint8Array, options?: ParseFontOptions) => FontFace;
6
+ export {};
7
+ //# sourceMappingURL=font.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font.d.ts","sourceRoot":"","sources":["../../src/parsers/font.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAK/C,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;CACjD;AAED,eAAO,MAAM,SAAS,WACZ,UAAU,YACT,gBAAgB,KACxB,QAwCF,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFrom = void 0;
4
+ const repeat_1 = require("../utils/repeat");
5
+ const WHITE = Uint8ClampedArray.of(0xff, 0xff, 0xff, 0xff);
6
+ const TRANS = Uint8ClampedArray.of(0xff, 0xff, 0xff, 0x00);
7
+ const parseFrom = (source, options = {}) => {
8
+ const { colors: [OFF, ON] = [TRANS, WHITE] } = options;
9
+ const headerView = new DataView(source.buffer, source.byteOffset, 6);
10
+ const count = headerView.getUint16(2, true);
11
+ const lineHeight = headerView.getUint16(4, true);
12
+ const pointersView = new DataView(source.buffer, source.byteOffset + 6, count * 2);
13
+ const pointers = (0, repeat_1.repeat)(count, (i) => pointersView.getUint16(i * 2, true));
14
+ const characters = pointers.map((offset) => {
15
+ const [width, height] = [source[offset], source[offset + 1]];
16
+ const widthBytes = (width + 7) >>> 3;
17
+ const data = new Uint8ClampedArray(width * height * 4);
18
+ for (let y = 0; y < height; y++) {
19
+ const yOffset = offset + 2 + y * widthBytes;
20
+ for (let x = 0; x < width; x++) {
21
+ const idx = yOffset + (x >>> 3);
22
+ const bit = (source[idx] >>> (7 - (x & 0b111))) & 1;
23
+ data.set(bit ? ON : OFF, x * 4 + y * width * 4);
24
+ }
25
+ }
26
+ return {
27
+ width,
28
+ height,
29
+ data,
30
+ };
31
+ });
32
+ return {
33
+ characters,
34
+ lineHeight,
35
+ };
36
+ };
37
+ exports.parseFrom = parseFrom;
38
+ //# sourceMappingURL=font.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"font.js","sourceRoot":"","sources":["../../src/parsers/font.ts"],"names":[],"mappings":";;;AACA,4CAAyC;AAGzC,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3D,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAMpD,MAAM,SAAS,GAAG,CACvB,MAAkB,EAClB,UAA4B,EAAE,EACpB,EAAE;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAEjD,MAAM,YAAY,GAAG,IAAI,QAAQ,CAC/B,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,GAAG,CAAC,EACrB,KAAK,GAAG,CAAC,CACV,CAAC;IACF,MAAM,QAAQ,GAAG,IAAA,eAAM,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3E,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAgB,CAAC,MAAM,EAAE,EAAE;QACxD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAE7D,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;QAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;YAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,OAAO;YACL,KAAK;YACL,MAAM;YACN,IAAI;SACL,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,UAAU;QACV,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AA3CW,QAAA,SAAS,aA2CpB"}
@@ -0,0 +1,4 @@
1
+ import { ResourceMap } from '../models/resource-map';
2
+ export declare const consume: (bytes: Uint8Array, callback: (e: ResourceMap) => void) => true | Uint8Array;
3
+ export declare const parseAll: (bytes: Uint8Array) => [ResourceMap[], boolean];
4
+ //# sourceMappingURL=mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/parsers/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAuBrD,eAAO,MAAM,OAAO,UACX,UAAU,gBACH,WAAW,KAAK,IAAI,KACjC,IAAI,GAAG,UAUT,CAAC;AAEF,eAAO,MAAM,QAAQ,UAAW,UAAU,KAAG,CAAC,WAAW,EAAE,EAAE,OAAO,CAInE,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseAll = exports.consume = void 0;
4
+ const EMPTY = Uint8Array.of(0);
5
+ const HEAD_END_TOKEN = ~0 >>> 16;
6
+ const TAIL_END_TOKEN = ~0 >>> 0;
7
+ const read = (view, offset) => {
8
+ const head = view.getUint16(offset, true);
9
+ const tail = view.getUint32(offset + 2, true);
10
+ return [head, tail];
11
+ };
12
+ const parse = ([head, tail]) => ({
13
+ id: head,
14
+ file: tail >>> 26,
15
+ offset: tail & 67108863,
16
+ });
17
+ const isEnd = ([head, tail]) => HEAD_END_TOKEN === head && TAIL_END_TOKEN === tail;
18
+ const consume = (bytes, callback) => {
19
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
20
+ let i;
21
+ for (i = 0; i + 5 < bytes.length; i += 6) {
22
+ const token = read(view, i);
23
+ if (isEnd(token))
24
+ return true;
25
+ callback(parse(token));
26
+ }
27
+ return i % 6 !== 0 ? bytes.slice(i) : EMPTY;
28
+ };
29
+ exports.consume = consume;
30
+ const parseAll = (bytes) => {
31
+ const result = [];
32
+ const ended = (0, exports.consume)(bytes, (rm) => result.push(rm));
33
+ return [result, ended === true];
34
+ };
35
+ exports.parseAll = parseAll;
36
+ //# sourceMappingURL=mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/parsers/mapping.ts"],"names":[],"mappings":";;;AAIA,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACjC,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAEhC,MAAM,IAAI,GAAG,CAAC,IAAc,EAAE,MAAc,EAAS,EAAE;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAQ,EAAe,EAAE,CAAC,CAAC;IACnD,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,IAAI,KAAK,EAAE;IACjB,MAAM,EAAE,IAAI,GAAG,QAAkC;CAClD,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAQ,EAAE,EAAE,CACpC,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,IAAI,CAAC;AAE9C,MAAM,OAAO,GAAG,CACrB,KAAiB,EACjB,QAAkC,EACf,EAAE;IACrB,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAE5E,IAAI,CAAS,CAAC;IACd,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9B,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9C,CAAC,CAAC;AAbW,QAAA,OAAO,WAalB;AAEK,MAAM,QAAQ,GAAG,CAAC,KAAiB,EAA4B,EAAE;IACtE,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAJW,QAAA,QAAQ,YAInB"}
@@ -0,0 +1,9 @@
1
+ import { BitReader } from '@4bitlabs/readers';
2
+ import { DrawCommand } from '../../models/draw-command';
3
+ import { OpCode } from './op-codes';
4
+ import { PicState } from './pic-state';
5
+ export declare const IS_DONE: unique symbol;
6
+ type CodeHandler = (br: BitReader, state: PicState) => DrawCommand[] | typeof IS_DONE | void;
7
+ export declare const CodeHandlers: Record<OpCode, CodeHandler>;
8
+ export {};
9
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/parsers/pic/handlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAY,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAoC,MAAM,EAAE,MAAM,YAAY,CAAC;AAGtE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,eAAO,MAAM,OAAO,eAAiB,CAAC;AAEtC,KAAK,WAAW,GAAG,CACjB,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,QAAQ,KACZ,WAAW,EAAE,GAAG,OAAO,OAAO,GAAG,IAAI,CAAC;AAE3C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAsJpD,CAAC"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CodeHandlers = exports.IS_DONE = void 0;
4
+ const gl_matrix_1 = require("gl-matrix");
5
+ const draw_command_1 = require("../../models/draw-command");
6
+ const repeat_1 = require("../../utils/repeat");
7
+ const op_codes_1 = require("./op-codes");
8
+ const points_1 = require("./points");
9
+ const cel_1 = require("../cel");
10
+ exports.IS_DONE = Symbol('done');
11
+ exports.CodeHandlers = {
12
+ [op_codes_1.OpCode.SetVisual](br, state) {
13
+ const [, priorityCode, controlCode] = state.drawCodes;
14
+ const visualCode = br.read32(8);
15
+ state.drawCodes = [visualCode, priorityCode, controlCode];
16
+ state.drawMode |= draw_command_1.DrawMode.Visual;
17
+ },
18
+ [op_codes_1.OpCode.ClearVisual](br, state) {
19
+ state.drawMode &= ~draw_command_1.DrawMode.Visual;
20
+ },
21
+ [op_codes_1.OpCode.SetPriority](br, state) {
22
+ const [visualCode, , controlCode] = state.drawCodes;
23
+ const priorityCode = br.read32(8);
24
+ state.drawCodes = [visualCode, priorityCode, controlCode];
25
+ state.drawMode |= draw_command_1.DrawMode.Priority;
26
+ },
27
+ [op_codes_1.OpCode.ClearPriority](br, state) {
28
+ state.drawMode &= ~draw_command_1.DrawMode.Priority;
29
+ },
30
+ [op_codes_1.OpCode.SetControl](br, state) {
31
+ const [visualCode, priorityCode] = state.drawCodes;
32
+ const controlCode = br.read32(8);
33
+ state.drawCodes = [visualCode, priorityCode, controlCode];
34
+ state.drawMode |= draw_command_1.DrawMode.Control;
35
+ },
36
+ [op_codes_1.OpCode.ClearControl](br, state) {
37
+ state.drawMode &= ~draw_command_1.DrawMode.Control;
38
+ },
39
+ [op_codes_1.OpCode.ShortLines](br, { drawMode, drawCodes }) {
40
+ const points = [];
41
+ const prev = (0, points_1.getPoint24)(br, gl_matrix_1.vec2.create());
42
+ points.push(gl_matrix_1.vec2.clone(prev));
43
+ while (br.peek32(8) < 0xf0) {
44
+ const next = (0, points_1.getPoint8)(br, gl_matrix_1.vec2.create(), prev);
45
+ points.push(next);
46
+ gl_matrix_1.vec2.copy(prev, next);
47
+ }
48
+ return [['PLINE', drawMode, drawCodes, ...points]];
49
+ },
50
+ [op_codes_1.OpCode.MediumLines](br, { drawMode, drawCodes }) {
51
+ const points = [];
52
+ const prev = (0, points_1.getPoint24)(br, gl_matrix_1.vec2.create());
53
+ points.push(gl_matrix_1.vec2.clone(prev));
54
+ while (br.peek32(8) < 0xf0) {
55
+ const next = (0, points_1.getPoint16)(br, gl_matrix_1.vec2.create(), prev);
56
+ points.push(next);
57
+ gl_matrix_1.vec2.copy(prev, next);
58
+ }
59
+ return [['PLINE', drawMode, drawCodes, ...points]];
60
+ },
61
+ [op_codes_1.OpCode.LongLines](br, { drawMode, drawCodes }) {
62
+ const points = [];
63
+ points.push((0, points_1.getPoint24)(br, gl_matrix_1.vec2.create()));
64
+ while (br.peek32(8) < 0xf0) {
65
+ points.push((0, points_1.getPoint24)(br, gl_matrix_1.vec2.create()));
66
+ }
67
+ return [['PLINE', drawMode, drawCodes, ...points]];
68
+ },
69
+ // Patterns
70
+ [op_codes_1.OpCode.SetPattern](br, state) {
71
+ const code = br.read32(8);
72
+ state.patternCode = [
73
+ code & 0b00111,
74
+ (code & 0b010000) !== 0,
75
+ (code & 0b100000) !== 0,
76
+ ];
77
+ },
78
+ [op_codes_1.OpCode.ShortBrushes](br, { drawMode, drawCodes, patternCode }) {
79
+ const cmds = [];
80
+ const prev = gl_matrix_1.vec2.create();
81
+ const [, , isTextured] = patternCode;
82
+ let texture = isTextured ? br.read32(8) >> 1 : 0;
83
+ (0, points_1.getPoint24)(br, prev);
84
+ cmds.push([
85
+ 'BRUSH',
86
+ drawMode,
87
+ drawCodes,
88
+ patternCode,
89
+ texture,
90
+ gl_matrix_1.vec2.clone(prev),
91
+ ]);
92
+ while (br.peek32(8) < 0xf0) {
93
+ texture = isTextured ? br.read32(8) >> 1 : 0;
94
+ const next = (0, points_1.getPoint8)(br, gl_matrix_1.vec2.create(), prev);
95
+ cmds.push(['BRUSH', drawMode, drawCodes, patternCode, texture, next]);
96
+ gl_matrix_1.vec2.copy(prev, next);
97
+ }
98
+ return cmds;
99
+ },
100
+ [op_codes_1.OpCode.MediumBrushes](br, { drawMode, drawCodes, patternCode }) {
101
+ const cmds = [];
102
+ const prev = gl_matrix_1.vec2.create();
103
+ const [, , isTextured] = patternCode;
104
+ let texture = isTextured ? br.read32(8) >> 1 : 0;
105
+ (0, points_1.getPoint24)(br, prev);
106
+ cmds.push([
107
+ 'BRUSH',
108
+ drawMode,
109
+ drawCodes,
110
+ patternCode,
111
+ texture,
112
+ gl_matrix_1.vec2.clone(prev),
113
+ ]);
114
+ while (br.peek32(8) < 0xf0) {
115
+ texture = isTextured ? br.read32(8) >> 1 : 0;
116
+ const next = (0, points_1.getPoint16)(br, gl_matrix_1.vec2.create(), prev);
117
+ cmds.push(['BRUSH', drawMode, drawCodes, patternCode, texture, next]);
118
+ gl_matrix_1.vec2.copy(prev, next);
119
+ }
120
+ return cmds;
121
+ },
122
+ [op_codes_1.OpCode.LongBrushes](br, { drawMode, drawCodes, patternCode }) {
123
+ const cmds = [];
124
+ const [, , isTextured] = patternCode;
125
+ while (br.peek32(8) < 0xf0) {
126
+ const texture = isTextured ? br.read32(8) >> 1 : 0;
127
+ const pos = (0, points_1.getPoint24)(br, gl_matrix_1.vec2.create());
128
+ cmds.push(['BRUSH', drawMode, drawCodes, patternCode, texture, pos]);
129
+ }
130
+ return cmds;
131
+ },
132
+ // Fills
133
+ [op_codes_1.OpCode.Fills](br, { drawMode, drawCodes }) {
134
+ const fills = [];
135
+ const p1 = gl_matrix_1.vec2.create();
136
+ while (true) {
137
+ const peek = br.peek32(8);
138
+ if (peek >= 0xf0)
139
+ break;
140
+ (0, points_1.getPoint24)(br, p1);
141
+ fills.push(['FILL', drawMode, drawCodes, gl_matrix_1.vec2.clone(p1)]);
142
+ }
143
+ return fills;
144
+ },
145
+ [op_codes_1.OpCode.XOp](br, state) {
146
+ const opx = br.read32(8);
147
+ if (!(0, op_codes_1.isExtendedOpCode)(opx))
148
+ throw new Error(`Unrecognized xopcode: 0x${opx.toString(16)}`);
149
+ return ExtendedHandlers[opx](br, state);
150
+ },
151
+ [op_codes_1.OpCode.Done]: () => exports.IS_DONE,
152
+ };
153
+ const ExtendedHandlers = {
154
+ [op_codes_1.ExtendedOpCode.UpdatePalette](br) {
155
+ const entries = [];
156
+ while (br.peek32(8) < 0xf0) {
157
+ const entry = br.read32(8);
158
+ const pal = (entry / 40) >>> 0;
159
+ const idx = entry % 40;
160
+ const code = br.read32(8);
161
+ entries.push([pal, idx, code]);
162
+ }
163
+ return [['UPDATE_PALETTE', entries]];
164
+ },
165
+ [op_codes_1.ExtendedOpCode.SetPalette](br) {
166
+ const pal = br.read32(8);
167
+ const colors = new Uint8Array(40);
168
+ (0, repeat_1.repeat)(40, (i) => (colors[i] = br.read32(8)));
169
+ return [['SET_PALETTE', pal, colors]];
170
+ },
171
+ [op_codes_1.ExtendedOpCode.x02](br) {
172
+ // Looks like a palette, but i'm not sure what this chunk is for
173
+ br.skip(8);
174
+ br.skip(8 * 40);
175
+ },
176
+ [op_codes_1.ExtendedOpCode.x03](br) {
177
+ // Not sure what byte this is for
178
+ br.skip(8);
179
+ },
180
+ [op_codes_1.ExtendedOpCode.x04]() {
181
+ // Not sure what this code means
182
+ // NOOP
183
+ },
184
+ [op_codes_1.ExtendedOpCode.x05](br) {
185
+ // Not sure what byte this is for
186
+ br.skip(8);
187
+ },
188
+ [op_codes_1.ExtendedOpCode.x06]() {
189
+ // Not sure what this code means
190
+ // NOOP
191
+ },
192
+ [op_codes_1.ExtendedOpCode.x07](br, state) {
193
+ const pos = (0, points_1.getPoint24)(br, gl_matrix_1.vec2.create());
194
+ const size = br.read32(8) | (br.read32(8) << 8);
195
+ const buffer = new ArrayBuffer(size);
196
+ const view = new DataView(buffer);
197
+ (0, repeat_1.repeat)(size, (i) => view.setUint8(i, br.read32(8)));
198
+ const cel = (0, cel_1.parseCel)(view);
199
+ return [['CEL', state.drawMode, pos, cel]];
200
+ },
201
+ [op_codes_1.ExtendedOpCode.x08](br) {
202
+ (0, repeat_1.repeat)(14, () => br.read32(8));
203
+ },
204
+ };
205
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/parsers/pic/handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { parseFrom } from './parser';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parsers/pic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFrom = void 0;
4
+ var parser_1 = require("./parser");
5
+ Object.defineProperty(exports, "parseFrom", { enumerable: true, get: function () { return parser_1.parseFrom; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/pic/index.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAA5B,mGAAA,SAAS,OAAA"}
@@ -0,0 +1,32 @@
1
+ export declare enum OpCode {
2
+ SetVisual = 240,
3
+ ClearVisual = 241,
4
+ SetPriority = 242,
5
+ ClearPriority = 243,
6
+ SetControl = 251,
7
+ ClearControl = 252,
8
+ ShortLines = 247,
9
+ MediumLines = 245,
10
+ LongLines = 246,
11
+ SetPattern = 249,
12
+ ShortBrushes = 244,
13
+ MediumBrushes = 253,
14
+ LongBrushes = 250,
15
+ Fills = 248,
16
+ XOp = 254,
17
+ Done = 255
18
+ }
19
+ export declare const isOpCode: (it: any) => it is OpCode;
20
+ export declare enum ExtendedOpCode {
21
+ UpdatePalette = 0,
22
+ SetPalette = 1,
23
+ x02 = 2,
24
+ x03 = 3,
25
+ x04 = 4,
26
+ x05 = 5,
27
+ x06 = 6,
28
+ x07 = 7,
29
+ x08 = 8
30
+ }
31
+ export declare const isExtendedOpCode: (it: any) => it is ExtendedOpCode;
32
+ //# sourceMappingURL=op-codes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op-codes.d.ts","sourceRoot":"","sources":["../../../src/parsers/pic/op-codes.ts"],"names":[],"mappings":"AAAA,oBAAY,MAAM;IAEhB,SAAS,MAAO;IAChB,WAAW,MAAO;IAClB,WAAW,MAAO;IAClB,aAAa,MAAO;IACpB,UAAU,MAAO;IACjB,YAAY,MAAO;IAGnB,UAAU,MAAO;IACjB,WAAW,MAAO;IAClB,SAAS,MAAO;IAGhB,UAAU,MAAO;IACjB,YAAY,MAAO;IACnB,aAAa,MAAO;IACpB,WAAW,MAAO;IAGlB,KAAK,MAAO;IAGZ,GAAG,MAAO;IACV,IAAI,MAAO;CACZ;AAED,eAAO,MAAM,QAAQ,OAAQ,GAAG,iBACI,CAAC;AAErC,oBAAY,cAAc;IACxB,aAAa,IAAO;IACpB,UAAU,IAAO;IACjB,GAAG,IAAO;IACV,GAAG,IAAO;IACV,GAAG,IAAO;IACV,GAAG,IAAO;IACV,GAAG,IAAO;IACV,GAAG,IAAO;IACV,GAAG,IAAO;CACX;AAED,eAAO,MAAM,gBAAgB,OAAQ,GAAG,yBACI,CAAC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isExtendedOpCode = exports.ExtendedOpCode = exports.isOpCode = exports.OpCode = void 0;
4
+ var OpCode;
5
+ (function (OpCode) {
6
+ // Layer Control
7
+ OpCode[OpCode["SetVisual"] = 240] = "SetVisual";
8
+ OpCode[OpCode["ClearVisual"] = 241] = "ClearVisual";
9
+ OpCode[OpCode["SetPriority"] = 242] = "SetPriority";
10
+ OpCode[OpCode["ClearPriority"] = 243] = "ClearPriority";
11
+ OpCode[OpCode["SetControl"] = 251] = "SetControl";
12
+ OpCode[OpCode["ClearControl"] = 252] = "ClearControl";
13
+ // Lines
14
+ OpCode[OpCode["ShortLines"] = 247] = "ShortLines";
15
+ OpCode[OpCode["MediumLines"] = 245] = "MediumLines";
16
+ OpCode[OpCode["LongLines"] = 246] = "LongLines";
17
+ // Patterns
18
+ OpCode[OpCode["SetPattern"] = 249] = "SetPattern";
19
+ OpCode[OpCode["ShortBrushes"] = 244] = "ShortBrushes";
20
+ OpCode[OpCode["MediumBrushes"] = 253] = "MediumBrushes";
21
+ OpCode[OpCode["LongBrushes"] = 250] = "LongBrushes";
22
+ // Fills
23
+ OpCode[OpCode["Fills"] = 248] = "Fills";
24
+ // Extensions
25
+ OpCode[OpCode["XOp"] = 254] = "XOp";
26
+ OpCode[OpCode["Done"] = 255] = "Done";
27
+ })(OpCode || (exports.OpCode = OpCode = {}));
28
+ const isOpCode = (it) => Object.values(OpCode).includes(it);
29
+ exports.isOpCode = isOpCode;
30
+ var ExtendedOpCode;
31
+ (function (ExtendedOpCode) {
32
+ ExtendedOpCode[ExtendedOpCode["UpdatePalette"] = 0] = "UpdatePalette";
33
+ ExtendedOpCode[ExtendedOpCode["SetPalette"] = 1] = "SetPalette";
34
+ ExtendedOpCode[ExtendedOpCode["x02"] = 2] = "x02";
35
+ ExtendedOpCode[ExtendedOpCode["x03"] = 3] = "x03";
36
+ ExtendedOpCode[ExtendedOpCode["x04"] = 4] = "x04";
37
+ ExtendedOpCode[ExtendedOpCode["x05"] = 5] = "x05";
38
+ ExtendedOpCode[ExtendedOpCode["x06"] = 6] = "x06";
39
+ ExtendedOpCode[ExtendedOpCode["x07"] = 7] = "x07";
40
+ ExtendedOpCode[ExtendedOpCode["x08"] = 8] = "x08";
41
+ })(ExtendedOpCode || (exports.ExtendedOpCode = ExtendedOpCode = {}));
42
+ const isExtendedOpCode = (it) => Object.values(ExtendedOpCode).includes(it);
43
+ exports.isExtendedOpCode = isExtendedOpCode;
44
+ //# sourceMappingURL=op-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"op-codes.js","sourceRoot":"","sources":["../../../src/parsers/pic/op-codes.ts"],"names":[],"mappings":";;;AAAA,IAAY,MA0BX;AA1BD,WAAY,MAAM;IAChB,gBAAgB;IAChB,+CAAgB,CAAA;IAChB,mDAAkB,CAAA;IAClB,mDAAkB,CAAA;IAClB,uDAAoB,CAAA;IACpB,iDAAiB,CAAA;IACjB,qDAAmB,CAAA;IAEnB,QAAQ;IACR,iDAAiB,CAAA;IACjB,mDAAkB,CAAA;IAClB,+CAAgB,CAAA;IAEhB,WAAW;IACX,iDAAiB,CAAA;IACjB,qDAAmB,CAAA;IACnB,uDAAoB,CAAA;IACpB,mDAAkB,CAAA;IAElB,QAAQ;IACR,uCAAY,CAAA;IAEZ,aAAa;IACb,mCAAU,CAAA;IACV,qCAAW,CAAA;AACb,CAAC,EA1BW,MAAM,sBAAN,MAAM,QA0BjB;AAEM,MAAM,QAAQ,GAAG,CAAC,EAAO,EAAgB,EAAE,CAChD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AADxB,QAAA,QAAQ,YACgB;AAErC,IAAY,cAUX;AAVD,WAAY,cAAc;IACxB,qEAAoB,CAAA;IACpB,+DAAiB,CAAA;IACjB,iDAAU,CAAA;IACV,iDAAU,CAAA;IACV,iDAAU,CAAA;IACV,iDAAU,CAAA;IACV,iDAAU,CAAA;IACV,iDAAU,CAAA;IACV,iDAAU,CAAA;AACZ,CAAC,EAVW,cAAc,8BAAd,cAAc,QAUzB;AAEM,MAAM,gBAAgB,GAAG,CAAC,EAAO,EAAwB,EAAE,CAChE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AADhC,QAAA,gBAAgB,oBACgB"}