@4bitlabs/sci0 4.0.1 → 5.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/README.md +14 -27
- package/dist/index.d.ts +18 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -46
- package/dist/index.js.map +1 -1
- package/dist/models/draw-codes.d.ts +6 -0
- package/dist/models/draw-codes.d.ts.map +1 -0
- package/dist/{screen/render-result.js → models/draw-codes.js} +1 -1
- package/dist/models/draw-codes.js.map +1 -0
- package/dist/models/draw-command.d.ts +1 -56
- package/dist/models/draw-command.d.ts.map +1 -1
- package/dist/models/draw-command.js +0 -18
- package/dist/models/draw-command.js.map +1 -1
- package/dist/models/draw-commands.d.ts +47 -0
- package/dist/models/draw-commands.d.ts.map +1 -0
- package/dist/models/draw-commands.js +3 -0
- package/dist/models/draw-commands.js.map +1 -0
- package/dist/models/draw-mode.d.ts +21 -0
- package/dist/models/draw-mode.d.ts.map +1 -0
- package/dist/models/draw-mode.js +26 -0
- package/dist/models/draw-mode.js.map +1 -0
- package/dist/models/pattern-code.d.ts +6 -0
- package/dist/models/pattern-code.d.ts.map +1 -0
- package/dist/models/pattern-code.js +3 -0
- package/dist/models/pattern-code.js.map +1 -0
- package/dist/models/pic.d.ts +10 -0
- package/dist/models/pic.d.ts.map +1 -0
- package/dist/{screen/screen.js → models/pic.js} +1 -1
- package/dist/models/pic.js.map +1 -0
- package/dist/models/resource-header.d.ts +4 -0
- package/dist/models/resource-header.d.ts.map +1 -1
- package/dist/models/resource-id.d.ts +4 -8
- package/dist/models/resource-id.d.ts.map +1 -1
- package/dist/models/resource-id.js +21 -48
- package/dist/models/resource-id.js.map +1 -1
- package/dist/models/resource-type.d.ts +1 -22
- package/dist/models/resource-type.d.ts.map +1 -1
- package/dist/models/resource-type.js +0 -23
- package/dist/models/resource-type.js.map +1 -1
- package/dist/models/resource-types.d.ts +11 -0
- package/dist/models/resource-types.d.ts.map +1 -0
- package/dist/models/resource-types.js +14 -0
- package/dist/models/resource-types.js.map +1 -0
- package/dist/parsers/compression.d.ts +25 -1
- package/dist/parsers/compression.d.ts.map +1 -1
- package/dist/parsers/compression.js +33 -9
- package/dist/parsers/compression.js.map +1 -1
- package/dist/parsers/mapping.d.ts +2 -2
- package/dist/parsers/mapping.d.ts.map +1 -1
- package/dist/parsers/mapping.js +19 -29
- package/dist/parsers/mapping.js.map +1 -1
- package/dist/parsers/{cel.d.ts → parse-cel.d.ts} +1 -1
- package/dist/parsers/parse-cel.d.ts.map +1 -0
- package/dist/parsers/{cel.js → parse-cel.js} +1 -1
- package/dist/parsers/parse-cel.js.map +1 -0
- package/dist/parsers/parse-cursor-options.d.ts +9 -0
- package/dist/parsers/parse-cursor-options.d.ts.map +1 -0
- package/dist/parsers/parse-cursor-options.js +3 -0
- package/dist/parsers/parse-cursor-options.js.map +1 -0
- package/dist/parsers/parse-cursor.d.ts +4 -0
- package/dist/parsers/parse-cursor.d.ts.map +1 -0
- package/dist/parsers/{cursor.js → parse-cursor.js} +4 -4
- package/dist/parsers/parse-cursor.js.map +1 -0
- package/dist/parsers/parse-font-options.d.ts +5 -0
- package/dist/parsers/parse-font-options.d.ts.map +1 -0
- package/dist/parsers/parse-font-options.js +3 -0
- package/dist/parsers/parse-font-options.js.map +1 -0
- package/dist/parsers/parse-font.d.ts +4 -0
- package/dist/parsers/parse-font.d.ts.map +1 -0
- package/dist/parsers/{font.js → parse-font.js} +4 -4
- package/dist/parsers/parse-font.js.map +1 -0
- package/dist/parsers/parse-pic.d.ts +20 -0
- package/dist/parsers/parse-pic.d.ts.map +1 -0
- package/dist/parsers/parse-pic.js +34 -0
- package/dist/parsers/parse-pic.js.map +1 -0
- package/dist/parsers/parse-view.d.ts +3 -0
- package/dist/parsers/parse-view.d.ts.map +1 -0
- package/dist/parsers/{view.js → parse-view.js} +6 -6
- package/dist/parsers/parse-view.js.map +1 -0
- package/dist/parsers/pic/handlers.d.ts +1 -6
- package/dist/parsers/pic/handlers.d.ts.map +1 -1
- package/dist/parsers/pic/handlers.js +60 -47
- package/dist/parsers/pic/handlers.js.map +1 -1
- package/dist/parsers/pic/op-codes.d.ts.map +1 -1
- package/dist/parsers/pic/pic-state.d.ts +3 -1
- package/dist/parsers/pic/pic-state.d.ts.map +1 -1
- package/dist/parsers/pic/pic-state.js +2 -2
- package/dist/parsers/pic/pic-state.js.map +1 -1
- package/dist/parsers/pic/points.d.ts +4 -4
- package/dist/parsers/pic/points.d.ts.map +1 -1
- package/dist/parsers/pic/points.js +3 -4
- package/dist/parsers/pic/points.js.map +1 -1
- package/dist/parsers/resource-header.d.ts +2 -2
- package/dist/parsers/resource-header.d.ts.map +1 -1
- package/dist/parsers/resource-header.js +18 -9
- package/dist/parsers/resource-header.js.map +1 -1
- package/dist/utils/exhaustive.js +1 -2
- package/dist/utils/exhaustive.js.map +1 -1
- package/dist/utils/repeat.d.ts.map +1 -1
- package/package.json +6 -7
- package/dist/models/vec2.d.ts +0 -8
- package/dist/models/vec2.d.ts.map +0 -1
- package/dist/models/vec2.js +0 -22
- package/dist/models/vec2.js.map +0 -1
- package/dist/parsers/cel.d.ts.map +0 -1
- package/dist/parsers/cel.js.map +0 -1
- package/dist/parsers/cursor.d.ts +0 -13
- package/dist/parsers/cursor.d.ts.map +0 -1
- package/dist/parsers/cursor.js.map +0 -1
- package/dist/parsers/font.d.ts +0 -7
- package/dist/parsers/font.d.ts.map +0 -1
- package/dist/parsers/font.js.map +0 -1
- package/dist/parsers/pic/index.d.ts +0 -2
- package/dist/parsers/pic/index.d.ts.map +0 -1
- package/dist/parsers/pic/index.js +0 -6
- package/dist/parsers/pic/index.js.map +0 -1
- package/dist/parsers/pic/parser.d.ts +0 -3
- package/dist/parsers/pic/parser.d.ts.map +0 -1
- package/dist/parsers/pic/parser.js +0 -31
- package/dist/parsers/pic/parser.js.map +0 -1
- package/dist/parsers/view.d.ts +0 -3
- package/dist/parsers/view.d.ts.map +0 -1
- package/dist/parsers/view.js.map +0 -1
- package/dist/screen/circles.d.ts +0 -3
- package/dist/screen/circles.d.ts.map +0 -1
- package/dist/screen/circles.js +0 -87
- package/dist/screen/circles.js.map +0 -1
- package/dist/screen/default-palette.d.ts +0 -2
- package/dist/screen/default-palette.d.ts.map +0 -1
- package/dist/screen/default-palette.js +0 -11
- package/dist/screen/default-palette.js.map +0 -1
- package/dist/screen/index.d.ts +0 -3
- package/dist/screen/index.d.ts.map +0 -1
- package/dist/screen/index.js +0 -9
- package/dist/screen/index.js.map +0 -1
- package/dist/screen/loop-padding-filter.d.ts +0 -5
- package/dist/screen/loop-padding-filter.d.ts.map +0 -1
- package/dist/screen/loop-padding-filter.js +0 -34
- package/dist/screen/loop-padding-filter.js.map +0 -1
- package/dist/screen/noise.d.ts +0 -3
- package/dist/screen/noise.d.ts.map +0 -1
- package/dist/screen/noise.js +0 -24
- package/dist/screen/noise.js.map +0 -1
- package/dist/screen/render-pic.d.ts +0 -11
- package/dist/screen/render-pic.d.ts.map +0 -1
- package/dist/screen/render-pic.js +0 -79
- package/dist/screen/render-pic.js.map +0 -1
- package/dist/screen/render-result.d.ts +0 -8
- package/dist/screen/render-result.d.ts.map +0 -1
- package/dist/screen/render-result.js.map +0 -1
- package/dist/screen/sci0-screen-impl.d.ts +0 -7
- package/dist/screen/sci0-screen-impl.d.ts.map +0 -1
- package/dist/screen/sci0-screen-impl.js +0 -163
- package/dist/screen/sci0-screen-impl.js.map +0 -1
- package/dist/screen/screen-buffer.d.ts +0 -6
- package/dist/screen/screen-buffer.d.ts.map +0 -1
- package/dist/screen/screen-buffer.js +0 -70
- package/dist/screen/screen-buffer.js.map +0 -1
- package/dist/screen/screen.d.ts +0 -17
- package/dist/screen/screen.d.ts.map +0 -1
- package/dist/screen/screen.js.map +0 -1
- package/dist/screen/tools/circles.d.ts +0 -3
- package/dist/screen/tools/circles.d.ts.map +0 -1
- package/dist/screen/tools/circles.js +0 -87
- package/dist/screen/tools/circles.js.map +0 -1
- package/dist/screen/tools/create-blitter.d.ts +0 -5
- package/dist/screen/tools/create-blitter.d.ts.map +0 -1
- package/dist/screen/tools/create-blitter.js +0 -22
- package/dist/screen/tools/create-blitter.js.map +0 -1
- package/dist/screen/tools/create-brush.d.ts +0 -3
- package/dist/screen/tools/create-brush.d.ts.map +0 -1
- package/dist/screen/tools/create-brush.js +0 -37
- package/dist/screen/tools/create-brush.js.map +0 -1
- package/dist/screen/tools/create-flood-fill.d.ts +0 -3
- package/dist/screen/tools/create-flood-fill.d.ts.map +0 -1
- package/dist/screen/tools/create-flood-fill.js +0 -63
- package/dist/screen/tools/create-flood-fill.js.map +0 -1
- package/dist/screen/tools/create-line.d.ts +0 -3
- package/dist/screen/tools/create-line.d.ts.map +0 -1
- package/dist/screen/tools/create-line.js +0 -46
- package/dist/screen/tools/create-line.js.map +0 -1
- package/dist/screen/tools/create-marker.d.ts +0 -3
- package/dist/screen/tools/create-marker.d.ts.map +0 -1
- package/dist/screen/tools/create-marker.js +0 -11
- package/dist/screen/tools/create-marker.js.map +0 -1
- package/dist/screen/tools/index.d.ts +0 -6
- package/dist/screen/tools/index.d.ts.map +0 -1
- package/dist/screen/tools/index.js +0 -14
- package/dist/screen/tools/index.js.map +0 -1
- package/dist/screen/tools/noise.d.ts +0 -3
- package/dist/screen/tools/noise.d.ts.map +0 -1
- package/dist/screen/tools/noise.js +0 -24
- package/dist/screen/tools/noise.js.map +0 -1
- package/dist/utils/tbuffer-helpers.d.ts +0 -5
- package/dist/utils/tbuffer-helpers.d.ts.map +0 -1
- package/dist/utils/tbuffer-helpers.js +0 -11
- package/dist/utils/tbuffer-helpers.js.map +0 -1
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createMarker = exports.createBrush = exports.createFloodFill = exports.createLine = void 0;
|
|
7
|
-
const numeric_deque_1 = require("@4bitlabs/numeric-deque");
|
|
8
|
-
const circles_1 = __importDefault(require("./circles"));
|
|
9
|
-
const noise_1 = require("./noise");
|
|
10
|
-
const createLine = (plot) => function line(x0, y0, x1, y1, drawMode, drawCodes) {
|
|
11
|
-
if (x0 === x1) {
|
|
12
|
-
for (let y = Math.min(y0, y1); y <= Math.max(y0, y1); y++)
|
|
13
|
-
plot(x0, y, drawMode, drawCodes);
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
if (y0 === y1) {
|
|
17
|
-
for (let x = Math.min(x0, x1); x <= Math.max(x0, x1); x++)
|
|
18
|
-
plot(x, y0, drawMode, drawCodes);
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
plot(x0, y0, drawMode, drawCodes);
|
|
22
|
-
plot(x1, y1, drawMode, drawCodes);
|
|
23
|
-
const dx = x1 - x0;
|
|
24
|
-
const dy = y1 - y0;
|
|
25
|
-
const adx = Math.abs(dx);
|
|
26
|
-
const ady = Math.abs(dy);
|
|
27
|
-
const sx = dx > 0 ? 1 : -1;
|
|
28
|
-
const sy = dy > 0 ? 1 : -1;
|
|
29
|
-
let eps = 0;
|
|
30
|
-
if (adx > ady) {
|
|
31
|
-
for (let x = x0, y = y0; sx < 0 ? x >= x1 : x <= x1; x += sx) {
|
|
32
|
-
plot(x, y, drawMode, drawCodes);
|
|
33
|
-
eps += ady;
|
|
34
|
-
if (eps << 1 >= adx) {
|
|
35
|
-
y += sy;
|
|
36
|
-
eps -= adx;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
for (let x = x0, y = y0; sy < 0 ? y >= y1 : y <= y1; y += sy) {
|
|
42
|
-
plot(x, y, drawMode, drawCodes);
|
|
43
|
-
eps += adx;
|
|
44
|
-
if (eps << 1 >= ady) {
|
|
45
|
-
x += sx;
|
|
46
|
-
eps -= ady;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
exports.createLine = createLine;
|
|
52
|
-
const createFloodFill = (plot, isLegal, [width, height]) => {
|
|
53
|
-
const visited = new Uint8ClampedArray(width * height);
|
|
54
|
-
const stack = new numeric_deque_1.NumericDeque(width * height, Uint32Array);
|
|
55
|
-
return function floodFill(ix, iy, drawMode, drawCodes) {
|
|
56
|
-
visited.fill(0);
|
|
57
|
-
stack.clear();
|
|
58
|
-
const start = iy * width + ix;
|
|
59
|
-
stack.push(start);
|
|
60
|
-
while (!stack.isEmpty()) {
|
|
61
|
-
const i = stack.shift();
|
|
62
|
-
if (visited[i])
|
|
63
|
-
continue;
|
|
64
|
-
visited[i] = 0xff;
|
|
65
|
-
const x = i % width;
|
|
66
|
-
const y = (i / width) >>> 0;
|
|
67
|
-
if (!isLegal(x, y, drawMode))
|
|
68
|
-
continue;
|
|
69
|
-
plot(x, y, drawMode, drawCodes);
|
|
70
|
-
if (y - 1 >= 0) {
|
|
71
|
-
if (!visited[i - width]) {
|
|
72
|
-
if (isLegal(x, y - 1, drawMode)) {
|
|
73
|
-
stack.push(i - width);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (y + 1 < height) {
|
|
78
|
-
if (!visited[i + width]) {
|
|
79
|
-
if (isLegal(x, y + 1, drawMode)) {
|
|
80
|
-
stack.push(i + width);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// scan right
|
|
85
|
-
for (let sx = x + 1; sx < width && isLegal(sx, y, drawMode); sx++) {
|
|
86
|
-
const idx = i + (sx - x);
|
|
87
|
-
visited[idx] = 0xff;
|
|
88
|
-
plot(sx, y, drawMode, drawCodes);
|
|
89
|
-
if (y - 1 >= 0) {
|
|
90
|
-
if (!visited[idx - width]) {
|
|
91
|
-
if (isLegal(sx, y - 1, drawMode)) {
|
|
92
|
-
stack.push(idx - width);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
if (y + 1 < height) {
|
|
97
|
-
if (!visited[idx + width]) {
|
|
98
|
-
if (isLegal(sx, y + 1, drawMode)) {
|
|
99
|
-
stack.push(idx + width);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
// scan right
|
|
105
|
-
for (let sx = x - 1; sx >= 0 && isLegal(sx, y, drawMode); sx--) {
|
|
106
|
-
const idx = i + (sx - x);
|
|
107
|
-
visited[idx] = 0xff;
|
|
108
|
-
plot(sx, y, drawMode, drawCodes);
|
|
109
|
-
if (y - 1 >= 0) {
|
|
110
|
-
if (!visited[idx - width]) {
|
|
111
|
-
if (isLegal(sx, y - 1, drawMode)) {
|
|
112
|
-
stack.push(idx - width);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
if (y + 1 < height) {
|
|
117
|
-
if (!visited[idx + width]) {
|
|
118
|
-
if (isLegal(sx, y + 1, drawMode)) {
|
|
119
|
-
stack.push(idx + width);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
};
|
|
127
|
-
exports.createFloodFill = createFloodFill;
|
|
128
|
-
const createBrush = (plot, [stageWidth, stageHeight]) => function brush(cx, cy, size, isRect, isSpray, textureCode, drawMode, drawCodes) {
|
|
129
|
-
const baseWidth = isRect ? 2 : 1;
|
|
130
|
-
const width = baseWidth + size * 2;
|
|
131
|
-
const height = 1 + size * 2;
|
|
132
|
-
let top = Math.max(0, cy - size);
|
|
133
|
-
let left = Math.max(0, cx - size);
|
|
134
|
-
const bottom = top + height;
|
|
135
|
-
const right = left + width;
|
|
136
|
-
if (right >= stageWidth)
|
|
137
|
-
left = stageWidth - width;
|
|
138
|
-
if (bottom >= stageHeight)
|
|
139
|
-
top = stageHeight - height;
|
|
140
|
-
let noiseIdx = noise_1.NOISE_OFFSETS[textureCode];
|
|
141
|
-
for (let py = top; py < bottom; py += 1)
|
|
142
|
-
for (let px = left; px < right; px += 1) {
|
|
143
|
-
if (!isRect) {
|
|
144
|
-
const sprite = circles_1.default[size];
|
|
145
|
-
const row = sprite[py - top];
|
|
146
|
-
const shift = width - (px - left) - 1;
|
|
147
|
-
if (((row >>> shift) & 0b1) === 0)
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
if (isSpray && !noise_1.NOISE[noiseIdx++ & 0xff])
|
|
151
|
-
continue;
|
|
152
|
-
plot(px, py, drawMode, drawCodes);
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
exports.createBrush = createBrush;
|
|
156
|
-
const createMarker = (plot) => function marker(x, y, drawMode, drawCodes) {
|
|
157
|
-
plot(x - 1, y, drawMode, drawCodes);
|
|
158
|
-
plot(x, y - 1, drawMode, drawCodes);
|
|
159
|
-
plot(x + 1, y, drawMode, drawCodes);
|
|
160
|
-
plot(x, y + 1, drawMode, drawCodes);
|
|
161
|
-
};
|
|
162
|
-
exports.createMarker = createMarker;
|
|
163
|
-
//# sourceMappingURL=sci0-screen-impl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sci0-screen-impl.js","sourceRoot":"","sources":["../../src/screen/sci0-screen-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { type Screen } from './screen';
|
|
2
|
-
import { type RenderResult } from './render-result';
|
|
3
|
-
type SetTValueFn = (n: number) => void;
|
|
4
|
-
export declare const createScreenBuffer: (forcePal: 0 | 1 | 2 | 3 | undefined, palettes: [Uint8Array, Uint8Array, Uint8Array, Uint8Array], [width, height]: [number, number]) => [RenderResult, Screen, SetTValueFn];
|
|
5
|
-
export {};
|
|
6
|
-
//# sourceMappingURL=screen-buffer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"screen-buffer.d.ts","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":"AACA,OAAO,EAAwC,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAM7E,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQpD,KAAK,WAAW,GAAG,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvC,eAAO,MAAM,kBAAkB,aACnB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,YACzB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,mBACzC,CAAC,MAAM,EAAE,MAAM,CAAC,KAChC,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CA0EpC,CAAC"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createScreenBuffer = void 0;
|
|
4
|
-
const image_1 = require("@4bitlabs/image");
|
|
5
|
-
const draw_command_1 = require("../models/draw-command");
|
|
6
|
-
const tools_1 = require("./tools");
|
|
7
|
-
const createScreenBuffer = (forcePal, palettes, [width, height]) => {
|
|
8
|
-
const visible = (0, image_1.createIndexedPixelData)(width, height);
|
|
9
|
-
const priority = (0, image_1.createIndexedPixelData)(width, height);
|
|
10
|
-
const control = (0, image_1.createIndexedPixelData)(width, height);
|
|
11
|
-
const tBuffer = new Uint32Array(width * height).fill(-1);
|
|
12
|
-
let t = 0;
|
|
13
|
-
const setTValue = (next) => {
|
|
14
|
-
t = next;
|
|
15
|
-
};
|
|
16
|
-
visible.pixels.fill(0xff);
|
|
17
|
-
priority.pixels.fill(0x00);
|
|
18
|
-
control.pixels.fill(0x00);
|
|
19
|
-
const setPixel = (x, y, color) => {
|
|
20
|
-
const idx = width * y + x;
|
|
21
|
-
visible.pixels[idx] = (color & 0b1111) | (color << 4);
|
|
22
|
-
};
|
|
23
|
-
const plot = (x, y, drawMode, drawCodes) => {
|
|
24
|
-
if (x < 0 || x >= width || y < 0 || y >= height)
|
|
25
|
-
return;
|
|
26
|
-
const idx = width * y + x;
|
|
27
|
-
if ((0, draw_command_1.isVisualMode)(drawMode)) {
|
|
28
|
-
const pal = forcePal !== null && forcePal !== void 0 ? forcePal : (drawCodes[0] / 40) >>> 0;
|
|
29
|
-
const palette = palettes[pal];
|
|
30
|
-
const palIndex = drawCodes[0] % 40 >>> 0;
|
|
31
|
-
visible.pixels[idx] = palette[palIndex];
|
|
32
|
-
tBuffer[idx] = t;
|
|
33
|
-
}
|
|
34
|
-
if ((0, draw_command_1.isPriorityMode)(drawMode)) {
|
|
35
|
-
priority.pixels[idx] = drawCodes[1];
|
|
36
|
-
}
|
|
37
|
-
if ((0, draw_command_1.isControlMode)(drawMode)) {
|
|
38
|
-
control.pixels[idx] = drawCodes[2];
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
const isFillable = (x, y, drawMode) => {
|
|
42
|
-
const idx = x + y * width;
|
|
43
|
-
if ((0, draw_command_1.isVisualMode)(drawMode)) {
|
|
44
|
-
const dither = (x & 1) ^ (y & 1);
|
|
45
|
-
const val = visible.pixels[idx];
|
|
46
|
-
const [high, low] = [val >>> 4, val & 0b1111];
|
|
47
|
-
return 0xf === (dither ? high : low);
|
|
48
|
-
}
|
|
49
|
-
/* TODO not sure if this is correct… but it looks *okay*-ish.
|
|
50
|
-
* SCI Companion seems to be able to recognize the difference between "never-touched" pixels and
|
|
51
|
-
* replaced 0x00 pixels in control and priority layers. Not sure if its intentional or not. But
|
|
52
|
-
* may require a different way of modeling indexed "alpha" channel.
|
|
53
|
-
*/
|
|
54
|
-
return (((0, draw_command_1.isPriorityMode)(drawMode) && priority.pixels[idx] === 0x00) ||
|
|
55
|
-
((0, draw_command_1.isControlMode)(drawMode) && control.pixels[idx] === 0x00));
|
|
56
|
-
};
|
|
57
|
-
return [
|
|
58
|
-
{ visible, priority, control, tBuffer },
|
|
59
|
-
{
|
|
60
|
-
setPixel,
|
|
61
|
-
brush: (0, tools_1.createBrush)(plot, [width, height]),
|
|
62
|
-
fill: (0, tools_1.createFloodFill)(plot, isFillable, [width, height]),
|
|
63
|
-
line: (0, tools_1.createLine)(plot),
|
|
64
|
-
blit: (0, tools_1.createBlitter)(setPixel, [width, height]),
|
|
65
|
-
},
|
|
66
|
-
setTValue,
|
|
67
|
-
];
|
|
68
|
-
};
|
|
69
|
-
exports.createScreenBuffer = createScreenBuffer;
|
|
70
|
-
//# sourceMappingURL=screen-buffer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"screen-buffer.js","sourceRoot":"","sources":["../../src/screen/screen-buffer.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AAEzD,yDAIgC;AAEhC,mCAKiB;AAIV,MAAM,kBAAkB,GAAG,CAChC,QAAmC,EACnC,QAA0D,EAC1D,CAAC,KAAK,EAAE,MAAM,CAAmB,EACI,EAAE;IACvC,MAAM,OAAO,GAAG,IAAA,8BAAsB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAA,8BAAsB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAA,8BAAsB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;QACjC,CAAC,GAAG,IAAI,CAAC;IACX,CAAC,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1B,MAAM,QAAQ,GAAe,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,EAAE;QACnE,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;IAEF,MAAM,IAAI,GAAY,CAAC,CAAS,EAAE,CAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;QAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM;YAAE,OAAO;QAExD,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1B,IAAI,IAAA,2BAAY,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,IAAA,6BAAc,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,IAAA,4BAAa,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAe,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAE1B,IAAI,IAAA,2BAAY,EAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC;YAC9C,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QAED;;;;WAIG;QACH,OAAO,CACL,CAAC,IAAA,6BAAc,EAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;YAC3D,CAAC,IAAA,4BAAa,EAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAC1D,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;QACvC;YACE,QAAQ;YACR,KAAK,EAAE,IAAA,mBAAW,EAAC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzC,IAAI,EAAE,IAAA,uBAAe,EAAC,IAAI,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,EAAE,IAAA,kBAAU,EAAC,IAAI,CAAC;YACtB,IAAI,EAAE,IAAA,qBAAa,EAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAC/C;QACD,SAAS;KACV,CAAC;AACJ,CAAC,CAAC;AA9EW,QAAA,kBAAkB,sBA8E7B"}
|
package/dist/screen/screen.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { DrawCodes, DrawMode } from '../models/draw-command';
|
|
2
|
-
import { Cel } from '../models/cel';
|
|
3
|
-
export type RawPlotter = (x: number, y: number, color: number) => void;
|
|
4
|
-
export type Plotter = (x: number, y: number, drawMode: DrawMode, drawCodes: DrawCodes) => void;
|
|
5
|
-
export type IsFillable = (x: number, y: number, drawMode: DrawMode) => boolean;
|
|
6
|
-
export type Filler = (x: number, y: number, drawMode: DrawMode, drawCodes: DrawCodes) => void;
|
|
7
|
-
export type Liner = (x0: number, y0: number, x1: number, y1: number, drawMode: DrawMode, drawCodes: DrawCodes) => void;
|
|
8
|
-
export type Brusher = (cx: number, cy: number, drawMode: DrawMode, drawCodes: DrawCodes, size: number, isRect: boolean, isSpray: boolean, textureCode: number) => void;
|
|
9
|
-
export type Blitter = (x: number, y: number, drawMode: DrawMode, cel: Cel) => void;
|
|
10
|
-
export interface Screen {
|
|
11
|
-
brush: Brusher;
|
|
12
|
-
fill: Filler;
|
|
13
|
-
line: Liner;
|
|
14
|
-
setPixel: RawPlotter;
|
|
15
|
-
blit: Blitter;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=screen.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../src/screen/screen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAEvE,MAAM,MAAM,OAAO,GAAG,CACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;AAE/E,MAAM,MAAM,MAAM,GAAG,CACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,KAAK,GAAG,CAClB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,OAAO,GAAG,CACpB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;AAEV,MAAM,MAAM,OAAO,GAAG,CACpB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,GAAG,KACL,IAAI,CAAC;AAEV,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,QAAQ,EAAE,UAAU,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;CACf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"screen.js","sourceRoot":"","sources":["../../src/screen/screen.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"circles.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/circles.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,aAAa,EAAE,MAAM,EAAE,EAoF5B,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// prettier-ignore
|
|
4
|
-
const circleBitmaps = [
|
|
5
|
-
[
|
|
6
|
-
0b1
|
|
7
|
-
],
|
|
8
|
-
[
|
|
9
|
-
0b010,
|
|
10
|
-
0b111,
|
|
11
|
-
0b010,
|
|
12
|
-
],
|
|
13
|
-
[
|
|
14
|
-
0b01110,
|
|
15
|
-
0b11111,
|
|
16
|
-
0b11111,
|
|
17
|
-
0b11111,
|
|
18
|
-
0b01110,
|
|
19
|
-
],
|
|
20
|
-
[
|
|
21
|
-
0b0011100,
|
|
22
|
-
0b0111110,
|
|
23
|
-
0b1111111,
|
|
24
|
-
0b1111111,
|
|
25
|
-
0b1111111,
|
|
26
|
-
0b0111110,
|
|
27
|
-
0b0011100,
|
|
28
|
-
],
|
|
29
|
-
[
|
|
30
|
-
0b000111000,
|
|
31
|
-
0b011111110,
|
|
32
|
-
0b111111111,
|
|
33
|
-
0b111111111,
|
|
34
|
-
0b111111111,
|
|
35
|
-
0b111111111,
|
|
36
|
-
0b111111111,
|
|
37
|
-
0b011111110,
|
|
38
|
-
0b000111000,
|
|
39
|
-
],
|
|
40
|
-
[
|
|
41
|
-
0b00001110000,
|
|
42
|
-
0b00111111100,
|
|
43
|
-
0b01111111110,
|
|
44
|
-
0b01111111110,
|
|
45
|
-
0b11111111111,
|
|
46
|
-
0b11111111111,
|
|
47
|
-
0b11111111111,
|
|
48
|
-
0b01111111110,
|
|
49
|
-
0b01111111110,
|
|
50
|
-
0b00111111100,
|
|
51
|
-
0b00011111000,
|
|
52
|
-
],
|
|
53
|
-
[
|
|
54
|
-
0b0000111110000,
|
|
55
|
-
0b0011111111100,
|
|
56
|
-
0b0111111111110,
|
|
57
|
-
0b0111111111110,
|
|
58
|
-
0b1111111111111,
|
|
59
|
-
0b1111111111111,
|
|
60
|
-
0b1111111111111,
|
|
61
|
-
0b1111111111111,
|
|
62
|
-
0b1111111111111,
|
|
63
|
-
0b0111111111110,
|
|
64
|
-
0b0111111111110,
|
|
65
|
-
0b0011111111100,
|
|
66
|
-
0b0000111110000,
|
|
67
|
-
],
|
|
68
|
-
[
|
|
69
|
-
0b000001111100000,
|
|
70
|
-
0b000111111111000,
|
|
71
|
-
0b001111111111100,
|
|
72
|
-
0b011111111111110,
|
|
73
|
-
0b011111111111110,
|
|
74
|
-
0b111111111111111,
|
|
75
|
-
0b111111111111111,
|
|
76
|
-
0b111111111111111,
|
|
77
|
-
0b111111111111111,
|
|
78
|
-
0b111111111111111,
|
|
79
|
-
0b011111111111110,
|
|
80
|
-
0b011111111111110,
|
|
81
|
-
0b001111111111100,
|
|
82
|
-
0b000111111111000,
|
|
83
|
-
0b000001111100000,
|
|
84
|
-
],
|
|
85
|
-
];
|
|
86
|
-
exports.default = circleBitmaps;
|
|
87
|
-
//# sourceMappingURL=circles.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"circles.js","sourceRoot":"","sources":["../../../src/screen/tools/circles.ts"],"names":[],"mappings":";;AAAA,kBAAkB;AAClB,MAAM,aAAa,GAAe;IAChC;QACE,GAAG;KACJ;IACD;QACE,KAAK;QACL,KAAK;QACL,KAAK;KACN;IAED;QACE,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;QACP,OAAO;KACR;IAED;QACE,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;KACV;IAED;QACE,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;QACX,WAAW;KACZ;IACD;QACE,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;QACb,aAAa;KACd;IACD;QACE,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;QACf,eAAe;KAChB;IACD;QACE,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;QACjB,iBAAiB;KAClB;CACF,CAAC;AAEF,kBAAe,aAAa,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { DrawMode } from '../../models/draw-command';
|
|
2
|
-
import { Cel } from '../../models/cel';
|
|
3
|
-
import { RawPlotter } from '../screen';
|
|
4
|
-
export declare const createBlitter: (plot: RawPlotter, [stageWidth, stageHeight]: readonly [number, number]) => (x0: number, y0: number, drawMode: DrawMode, cel: Cel) => void;
|
|
5
|
-
//# sourceMappingURL=create-blitter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-blitter.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-blitter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAIT,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,eAAO,MAAM,aAAa,SACjB,UAAU,gEACZ,MAAM,MAAM,MAAM,YAAY,QAAQ,OAAO,GAAG,SAepD,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createBlitter = void 0;
|
|
4
|
-
const draw_command_1 = require("../../models/draw-command");
|
|
5
|
-
const createBlitter = (plot, [stageWidth, stageHeight]) => (x0, y0, drawMode, cel) => {
|
|
6
|
-
if ((0, draw_command_1.isControlMode)(drawMode) || (0, draw_command_1.isPriorityMode)(drawMode))
|
|
7
|
-
console.warn('unhandled CEL command on Control/Priority layer');
|
|
8
|
-
if (!(0, draw_command_1.isVisualMode)(drawMode))
|
|
9
|
-
return;
|
|
10
|
-
const data = cel.pixels;
|
|
11
|
-
for (let y = y0; y < y0 + cel.height; y++)
|
|
12
|
-
for (let x = x0; x < x0 + cel.width; x++) {
|
|
13
|
-
if (x >= stageWidth || y >= stageHeight)
|
|
14
|
-
continue;
|
|
15
|
-
const color = data[x + y * cel.width];
|
|
16
|
-
if (color === cel.keyColor)
|
|
17
|
-
continue;
|
|
18
|
-
plot(x, y, color);
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
exports.createBlitter = createBlitter;
|
|
22
|
-
//# sourceMappingURL=create-blitter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-blitter.js","sourceRoot":"","sources":["../../../src/screen/tools/create-blitter.ts"],"names":[],"mappings":";;;AACA,4DAKmC;AAI5B,MAAM,aAAa,GACxB,CAAC,IAAgB,EAAE,CAAC,UAAU,EAAE,WAAW,CAAiB,EAAE,EAAE,CAChE,CAAC,EAAU,EAAE,EAAU,EAAE,QAAkB,EAAE,GAAQ,EAAE,EAAE;IACvD,IAAI,IAAA,4BAAa,EAAC,QAAQ,CAAC,IAAI,IAAA,6BAAc,EAAC,QAAQ,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAElE,IAAI,CAAC,IAAA,2BAAY,EAAC,QAAQ,CAAC;QAAE,OAAO;IAEpC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QACvC,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,WAAW;gBAAE,SAAS;YAElD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,KAAK,KAAK,GAAG,CAAC,QAAQ;gBAAE,SAAS;YACrC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACpB,CAAC;AACL,CAAC,CAAC;AAjBS,QAAA,aAAa,iBAiBtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-brush.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-brush.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAK7C,eAAO,MAAM,WAAW,SAChB,OAAO,2DAEZ,OAmCA,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createBrush = void 0;
|
|
7
|
-
const noise_1 = require("./noise");
|
|
8
|
-
const circles_1 = __importDefault(require("./circles"));
|
|
9
|
-
const createBrush = (plot, [stageWidth, stageHeight]) => function brush(cx, cy, drawMode, drawCodes, size, isRect, isSpray, textureCode) {
|
|
10
|
-
const baseWidth = isRect ? 2 : 1;
|
|
11
|
-
const width = baseWidth + size * 2;
|
|
12
|
-
const height = 1 + size * 2;
|
|
13
|
-
let top = Math.max(0, cy - size);
|
|
14
|
-
let left = Math.max(0, cx - size);
|
|
15
|
-
const bottom = top + height;
|
|
16
|
-
const right = left + width;
|
|
17
|
-
if (right >= stageWidth)
|
|
18
|
-
left = stageWidth - width;
|
|
19
|
-
if (bottom >= stageHeight)
|
|
20
|
-
top = stageHeight - height;
|
|
21
|
-
let noiseIdx = noise_1.NOISE_OFFSETS[textureCode];
|
|
22
|
-
for (let py = top; py < bottom; py += 1)
|
|
23
|
-
for (let px = left; px < right; px += 1) {
|
|
24
|
-
if (!isRect) {
|
|
25
|
-
const sprite = circles_1.default[size];
|
|
26
|
-
const row = sprite[py - top];
|
|
27
|
-
const shift = width - (px - left) - 1;
|
|
28
|
-
if (((row >>> shift) & 0b1) === 0)
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
if (isSpray && !noise_1.NOISE[noiseIdx++ & 0xff])
|
|
32
|
-
continue;
|
|
33
|
-
plot(px, py, drawMode, drawCodes);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
exports.createBrush = createBrush;
|
|
37
|
-
//# sourceMappingURL=create-brush.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-brush.js","sourceRoot":"","sources":["../../../src/screen/tools/create-brush.ts"],"names":[],"mappings":";;;;;;AAGA,mCAA+C;AAC/C,wDAAgC;AAEzB,MAAM,WAAW,GAAG,CACzB,IAAa,EACb,CAAC,UAAU,EAAE,WAAW,CAAiB,EAChC,EAAE,CACX,SAAS,KAAK,CACZ,EAAE,EACF,EAAE,EACF,QAAkB,EAClB,SAAoB,EACpB,IAAI,EACJ,MAAM,EACN,OAAO,EACP,WAAW;IAEX,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAE5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAC3B,IAAI,KAAK,IAAI,UAAU;QAAE,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC;IACnD,IAAI,MAAM,IAAI,WAAW;QAAE,GAAG,GAAG,WAAW,GAAG,MAAM,CAAC;IAEtD,IAAI,QAAQ,GAAG,qBAAa,CAAC,WAAW,CAAC,CAAC;IAE1C,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC;QACrC,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,iBAAO,CAAC,IAAI,CAAC,CAAC;gBAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBAC7B,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS;YAC9C,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,aAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;gBAAE,SAAS;YACnD,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC;AACL,CAAC,CAAC;AAtCS,QAAA,WAAW,eAsCpB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-flood-fill.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-flood-fill.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGxD,eAAO,MAAM,eAAe,SACpB,OAAO,WACJ,UAAU,iDAElB,MAuEF,CAAC"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createFloodFill = void 0;
|
|
4
|
-
const numeric_deque_1 = require("@4bitlabs/numeric-deque");
|
|
5
|
-
const createFloodFill = (plot, isLegal, [width, height]) => {
|
|
6
|
-
const visited = new Uint8ClampedArray(width * height);
|
|
7
|
-
const stack = new numeric_deque_1.NumericDeque(width * height, Uint32Array);
|
|
8
|
-
return function floodFill(ix, iy, drawMode, drawCodes) {
|
|
9
|
-
visited.fill(0);
|
|
10
|
-
stack.clear();
|
|
11
|
-
const start = iy * width + ix;
|
|
12
|
-
stack.push(start);
|
|
13
|
-
do {
|
|
14
|
-
const i = stack.shift();
|
|
15
|
-
if (visited[i])
|
|
16
|
-
continue;
|
|
17
|
-
visited[i] = 0xff;
|
|
18
|
-
const x = i % width;
|
|
19
|
-
const y = (i / width) >>> 0;
|
|
20
|
-
if (!isLegal(x, y, drawMode))
|
|
21
|
-
continue;
|
|
22
|
-
plot(x, y, drawMode, drawCodes);
|
|
23
|
-
const initialAbove = y - 1 >= 0 && !visited[i - width] && isLegal(x, y - 1, drawMode);
|
|
24
|
-
const initialBelow = y + 1 < height && !visited[i + width] && isLegal(x, y + 1, drawMode);
|
|
25
|
-
if (initialAbove)
|
|
26
|
-
stack.push(i - width);
|
|
27
|
-
if (initialBelow)
|
|
28
|
-
stack.push(i + width);
|
|
29
|
-
// scan right and left
|
|
30
|
-
for (let dir = 1; dir >= -1; dir -= 2) {
|
|
31
|
-
let visitedAbove = initialAbove;
|
|
32
|
-
let visitedBelow = initialBelow;
|
|
33
|
-
for (let sx = x + dir; (dir > 0 ? sx < width : sx >= 0) && isLegal(sx, y, drawMode); sx += dir) {
|
|
34
|
-
const idx = i + (sx - x);
|
|
35
|
-
visited[idx] = 0xff;
|
|
36
|
-
plot(sx, y, drawMode, drawCodes);
|
|
37
|
-
if (y - 1 >= 0 && !visited[idx - width]) {
|
|
38
|
-
if (isLegal(sx, y - 1, drawMode)) {
|
|
39
|
-
if (!visitedAbove)
|
|
40
|
-
stack.push(idx - width);
|
|
41
|
-
visitedAbove = true;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
visitedAbove = false;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
if (y + 1 < height && !visited[idx + width]) {
|
|
48
|
-
if (isLegal(sx, y + 1, drawMode)) {
|
|
49
|
-
if (!visitedBelow)
|
|
50
|
-
stack.push(idx + width);
|
|
51
|
-
visitedBelow = true;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
visitedBelow = false;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
} while (!stack.isEmpty());
|
|
60
|
-
};
|
|
61
|
-
};
|
|
62
|
-
exports.createFloodFill = createFloodFill;
|
|
63
|
-
//# sourceMappingURL=create-flood-fill.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-flood-fill.js","sourceRoot":"","sources":["../../../src/screen/tools/create-flood-fill.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-line.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-line.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG3C,eAAO,MAAM,UAAU,SAAU,OAAO,KAAG,KAoDxC,CAAC"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createLine = void 0;
|
|
4
|
-
const createLine = (plot) => function line(x0, y0, x1, y1, drawMode, drawCodes) {
|
|
5
|
-
if (x0 === x1) {
|
|
6
|
-
for (let y = Math.min(y0, y1); y <= Math.max(y0, y1); y++)
|
|
7
|
-
plot(x0, y, drawMode, drawCodes);
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
if (y0 === y1) {
|
|
11
|
-
for (let x = Math.min(x0, x1); x <= Math.max(x0, x1); x++)
|
|
12
|
-
plot(x, y0, drawMode, drawCodes);
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
plot(x0, y0, drawMode, drawCodes);
|
|
16
|
-
plot(x1, y1, drawMode, drawCodes);
|
|
17
|
-
const dx = x1 - x0;
|
|
18
|
-
const dy = y1 - y0;
|
|
19
|
-
const adx = Math.abs(dx);
|
|
20
|
-
const ady = Math.abs(dy);
|
|
21
|
-
const sx = dx > 0 ? 1 : -1;
|
|
22
|
-
const sy = dy > 0 ? 1 : -1;
|
|
23
|
-
let eps = 0;
|
|
24
|
-
if (adx > ady) {
|
|
25
|
-
for (let x = x0, y = y0; sx < 0 ? x >= x1 : x <= x1; x += sx) {
|
|
26
|
-
plot(x, y, drawMode, drawCodes);
|
|
27
|
-
eps += ady;
|
|
28
|
-
if (eps << 1 >= adx) {
|
|
29
|
-
y += sy;
|
|
30
|
-
eps -= adx;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
for (let x = x0, y = y0; sy < 0 ? y >= y1 : y <= y1; y += sy) {
|
|
36
|
-
plot(x, y, drawMode, drawCodes);
|
|
37
|
-
eps += adx;
|
|
38
|
-
if (eps << 1 >= ady) {
|
|
39
|
-
x += sx;
|
|
40
|
-
eps -= ady;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
exports.createLine = createLine;
|
|
46
|
-
//# sourceMappingURL=create-line.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-line.js","sourceRoot":"","sources":["../../../src/screen/tools/create-line.ts"],"names":[],"mappings":";;;AAGO,MAAM,UAAU,GAAG,CAAC,IAAa,EAAS,EAAE,CACjD,SAAS,IAAI,CACX,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,QAAkB,EAClB,SAAoB;IAEpB,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;YACvD,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;YACvD,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACnC,OAAO;IACT,CAAC;IAED,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAElC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzB,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7D,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChC,GAAG,IAAI,GAAG,CAAC;YACX,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,CAAC,IAAI,EAAE,CAAC;gBACR,GAAG,IAAI,GAAG,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7D,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChC,GAAG,IAAI,GAAG,CAAC;YACX,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,CAAC,IAAI,EAAE,CAAC;gBACR,GAAG,IAAI,GAAG,CAAC;YACb,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AApDS,QAAA,UAAU,cAoDnB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-marker.d.ts","sourceRoot":"","sources":["../../../src/screen/tools/create-marker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG5C,eAAO,MAAM,YAAY,SAAU,OAAO,KAAG,MAW1C,CAAC"}
|