@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.
- package/LICENSE.txt +10 -0
- package/README.md +85 -0
- package/dist/.tscache +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/models/cel.d.ts +9 -0
- package/dist/models/cel.d.ts.map +1 -0
- package/dist/models/cel.js +3 -0
- package/dist/models/cel.js.map +1 -0
- package/dist/models/cursor.d.ts +7 -0
- package/dist/models/cursor.d.ts.map +1 -0
- package/dist/models/cursor.js +3 -0
- package/dist/models/cursor.js.map +1 -0
- package/dist/models/draw-command.d.ts +43 -0
- package/dist/models/draw-command.d.ts.map +1 -0
- package/dist/models/draw-command.js +10 -0
- package/dist/models/draw-command.js.map +1 -0
- package/dist/models/font-face.d.ts +6 -0
- package/dist/models/font-face.d.ts.map +1 -0
- package/dist/models/font-face.js +3 -0
- package/dist/models/font-face.js.map +1 -0
- package/dist/models/resource-header.d.ts +7 -0
- package/dist/models/resource-header.d.ts.map +1 -0
- package/dist/models/resource-header.js +3 -0
- package/dist/models/resource-header.js.map +1 -0
- package/dist/models/resource-id.d.ts +10 -0
- package/dist/models/resource-id.d.ts.map +1 -0
- package/dist/models/resource-id.js +66 -0
- package/dist/models/resource-id.js.map +1 -0
- package/dist/models/resource-map.d.ts +6 -0
- package/dist/models/resource-map.d.ts.map +1 -0
- package/dist/models/resource-map.js +3 -0
- package/dist/models/resource-map.js.map +1 -0
- package/dist/models/resource-type.d.ts +24 -0
- package/dist/models/resource-type.d.ts.map +1 -0
- package/dist/models/resource-type.js +26 -0
- package/dist/models/resource-type.js.map +1 -0
- package/dist/models/view.d.ts +7 -0
- package/dist/models/view.d.ts.map +1 -0
- package/dist/models/view.js +3 -0
- package/dist/models/view.js.map +1 -0
- package/dist/parsers/cel.d.ts +3 -0
- package/dist/parsers/cel.d.ts.map +1 -0
- package/dist/parsers/cel.js +34 -0
- package/dist/parsers/cel.js.map +1 -0
- package/dist/parsers/compression.d.ts +2 -0
- package/dist/parsers/compression.d.ts.map +1 -0
- package/dist/parsers/compression.js +36 -0
- package/dist/parsers/compression.js.map +1 -0
- package/dist/parsers/cursor.d.ts +15 -0
- package/dist/parsers/cursor.d.ts.map +1 -0
- package/dist/parsers/cursor.js +36 -0
- package/dist/parsers/cursor.js.map +1 -0
- package/dist/parsers/font.d.ts +7 -0
- package/dist/parsers/font.d.ts.map +1 -0
- package/dist/parsers/font.js +38 -0
- package/dist/parsers/font.js.map +1 -0
- package/dist/parsers/mapping.d.ts +4 -0
- package/dist/parsers/mapping.d.ts.map +1 -0
- package/dist/parsers/mapping.js +36 -0
- package/dist/parsers/mapping.js.map +1 -0
- package/dist/parsers/pic/handlers.d.ts +9 -0
- package/dist/parsers/pic/handlers.d.ts.map +1 -0
- package/dist/parsers/pic/handlers.js +205 -0
- package/dist/parsers/pic/handlers.js.map +1 -0
- package/dist/parsers/pic/index.d.ts +2 -0
- package/dist/parsers/pic/index.d.ts.map +1 -0
- package/dist/parsers/pic/index.js +6 -0
- package/dist/parsers/pic/index.js.map +1 -0
- package/dist/parsers/pic/op-codes.d.ts +32 -0
- package/dist/parsers/pic/op-codes.d.ts.map +1 -0
- package/dist/parsers/pic/op-codes.js +44 -0
- package/dist/parsers/pic/op-codes.js.map +1 -0
- package/dist/parsers/pic/parser.d.ts +3 -0
- package/dist/parsers/pic/parser.d.ts.map +1 -0
- package/dist/parsers/pic/parser.js +28 -0
- package/dist/parsers/pic/parser.js.map +1 -0
- package/dist/parsers/pic/pic-state.d.ts +8 -0
- package/dist/parsers/pic/pic-state.d.ts.map +1 -0
- package/dist/parsers/pic/pic-state.js +17 -0
- package/dist/parsers/pic/pic-state.js.map +1 -0
- package/dist/parsers/pic/points.d.ts +6 -0
- package/dist/parsers/pic/points.d.ts.map +1 -0
- package/dist/parsers/pic/points.js +53 -0
- package/dist/parsers/pic/points.js.map +1 -0
- package/dist/parsers/resource-header.d.ts +4 -0
- package/dist/parsers/resource-header.d.ts.map +1 -0
- package/dist/parsers/resource-header.js +16 -0
- package/dist/parsers/resource-header.js.map +1 -0
- package/dist/parsers/view.d.ts +3 -0
- package/dist/parsers/view.d.ts.map +1 -0
- package/dist/parsers/view.js +27 -0
- package/dist/parsers/view.js.map +1 -0
- package/dist/screen/buffer.d.ts +7 -0
- package/dist/screen/buffer.d.ts.map +1 -0
- package/dist/screen/buffer.js +31 -0
- package/dist/screen/buffer.js.map +1 -0
- package/dist/screen/circles.d.ts +3 -0
- package/dist/screen/circles.d.ts.map +1 -0
- package/dist/screen/circles.js +87 -0
- package/dist/screen/circles.js.map +1 -0
- package/dist/screen/default-palette.d.ts +2 -0
- package/dist/screen/default-palette.d.ts.map +1 -0
- package/dist/screen/default-palette.js +10 -0
- package/dist/screen/default-palette.js.map +1 -0
- package/dist/screen/index.d.ts +3 -0
- package/dist/screen/index.d.ts.map +1 -0
- package/dist/screen/index.js +8 -0
- package/dist/screen/index.js.map +1 -0
- package/dist/screen/noise.d.ts +3 -0
- package/dist/screen/noise.d.ts.map +1 -0
- package/dist/screen/noise.js +24 -0
- package/dist/screen/noise.js.map +1 -0
- package/dist/screen/render-cel.d.ts +9 -0
- package/dist/screen/render-cel.d.ts.map +1 -0
- package/dist/screen/render-cel.js +24 -0
- package/dist/screen/render-cel.js.map +1 -0
- package/dist/screen/render-pic.d.ts +14 -0
- package/dist/screen/render-pic.d.ts.map +1 -0
- package/dist/screen/render-pic.js +104 -0
- package/dist/screen/render-pic.js.map +1 -0
- package/dist/screen/sci0-screen-impl.d.ts +7 -0
- package/dist/screen/sci0-screen-impl.d.ts.map +1 -0
- package/dist/screen/sci0-screen-impl.js +113 -0
- package/dist/screen/sci0-screen-impl.js.map +1 -0
- package/dist/screen/screen.d.ts +13 -0
- package/dist/screen/screen.d.ts.map +1 -0
- package/dist/screen/screen.js +3 -0
- package/dist/screen/screen.js.map +1 -0
- package/dist/stream/index.d.ts +2 -0
- package/dist/stream/index.d.ts.map +1 -0
- package/dist/stream/index.js +6 -0
- package/dist/stream/index.js.map +1 -0
- package/dist/stream/mapping-parser.d.ts +3 -0
- package/dist/stream/mapping-parser.d.ts.map +1 -0
- package/dist/stream/mapping-parser.js +44 -0
- package/dist/stream/mapping-parser.js.map +1 -0
- package/dist/utils/repeat.d.ts +2 -0
- package/dist/utils/repeat.d.ts.map +1 -0
- package/dist/utils/repeat.js +8 -0
- package/dist/utils/repeat.js.map +1 -0
- package/package.json +33 -0
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/models/view.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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"}
|