@4bitlabs/sci0 4.0.1 → 5.0.1

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 (197) hide show
  1. package/README.md +14 -27
  2. package/dist/index.d.ts +18 -29
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +38 -46
  5. package/dist/index.js.map +1 -1
  6. package/dist/models/draw-codes.d.ts +6 -0
  7. package/dist/models/draw-codes.d.ts.map +1 -0
  8. package/dist/{screen/render-result.js → models/draw-codes.js} +1 -1
  9. package/dist/models/draw-codes.js.map +1 -0
  10. package/dist/models/draw-command.d.ts +1 -56
  11. package/dist/models/draw-command.d.ts.map +1 -1
  12. package/dist/models/draw-command.js +0 -18
  13. package/dist/models/draw-command.js.map +1 -1
  14. package/dist/models/draw-commands.d.ts +47 -0
  15. package/dist/models/draw-commands.d.ts.map +1 -0
  16. package/dist/models/draw-commands.js +3 -0
  17. package/dist/models/draw-commands.js.map +1 -0
  18. package/dist/models/draw-mode.d.ts +21 -0
  19. package/dist/models/draw-mode.d.ts.map +1 -0
  20. package/dist/models/draw-mode.js +26 -0
  21. package/dist/models/draw-mode.js.map +1 -0
  22. package/dist/models/pattern-code.d.ts +6 -0
  23. package/dist/models/pattern-code.d.ts.map +1 -0
  24. package/dist/models/pattern-code.js +3 -0
  25. package/dist/models/pattern-code.js.map +1 -0
  26. package/dist/models/pic.d.ts +10 -0
  27. package/dist/models/pic.d.ts.map +1 -0
  28. package/dist/{screen/screen.js → models/pic.js} +1 -1
  29. package/dist/models/pic.js.map +1 -0
  30. package/dist/models/resource-header.d.ts +4 -0
  31. package/dist/models/resource-header.d.ts.map +1 -1
  32. package/dist/models/resource-id.d.ts +4 -8
  33. package/dist/models/resource-id.d.ts.map +1 -1
  34. package/dist/models/resource-id.js +21 -48
  35. package/dist/models/resource-id.js.map +1 -1
  36. package/dist/models/resource-type.d.ts +1 -22
  37. package/dist/models/resource-type.d.ts.map +1 -1
  38. package/dist/models/resource-type.js +0 -23
  39. package/dist/models/resource-type.js.map +1 -1
  40. package/dist/models/resource-types.d.ts +11 -0
  41. package/dist/models/resource-types.d.ts.map +1 -0
  42. package/dist/models/resource-types.js +14 -0
  43. package/dist/models/resource-types.js.map +1 -0
  44. package/dist/parsers/compression.d.ts +25 -1
  45. package/dist/parsers/compression.d.ts.map +1 -1
  46. package/dist/parsers/compression.js +33 -9
  47. package/dist/parsers/compression.js.map +1 -1
  48. package/dist/parsers/mapping.d.ts +2 -2
  49. package/dist/parsers/mapping.d.ts.map +1 -1
  50. package/dist/parsers/mapping.js +19 -29
  51. package/dist/parsers/mapping.js.map +1 -1
  52. package/dist/parsers/{cel.d.ts → parse-cel.d.ts} +1 -1
  53. package/dist/parsers/parse-cel.d.ts.map +1 -0
  54. package/dist/parsers/{cel.js → parse-cel.js} +1 -1
  55. package/dist/parsers/parse-cel.js.map +1 -0
  56. package/dist/parsers/parse-cursor-options.d.ts +9 -0
  57. package/dist/parsers/parse-cursor-options.d.ts.map +1 -0
  58. package/dist/parsers/parse-cursor-options.js +3 -0
  59. package/dist/parsers/parse-cursor-options.js.map +1 -0
  60. package/dist/parsers/parse-cursor.d.ts +4 -0
  61. package/dist/parsers/parse-cursor.d.ts.map +1 -0
  62. package/dist/parsers/{cursor.js → parse-cursor.js} +4 -4
  63. package/dist/parsers/parse-cursor.js.map +1 -0
  64. package/dist/parsers/parse-font-options.d.ts +5 -0
  65. package/dist/parsers/parse-font-options.d.ts.map +1 -0
  66. package/dist/parsers/parse-font-options.js +3 -0
  67. package/dist/parsers/parse-font-options.js.map +1 -0
  68. package/dist/parsers/parse-font.d.ts +4 -0
  69. package/dist/parsers/parse-font.d.ts.map +1 -0
  70. package/dist/parsers/{font.js → parse-font.js} +4 -4
  71. package/dist/parsers/parse-font.js.map +1 -0
  72. package/dist/parsers/parse-pic.d.ts +20 -0
  73. package/dist/parsers/parse-pic.d.ts.map +1 -0
  74. package/dist/parsers/parse-pic.js +33 -0
  75. package/dist/parsers/parse-pic.js.map +1 -0
  76. package/dist/parsers/parse-view.d.ts +3 -0
  77. package/dist/parsers/parse-view.d.ts.map +1 -0
  78. package/dist/parsers/{view.js → parse-view.js} +6 -6
  79. package/dist/parsers/parse-view.js.map +1 -0
  80. package/dist/parsers/pic/handlers.d.ts +1 -6
  81. package/dist/parsers/pic/handlers.d.ts.map +1 -1
  82. package/dist/parsers/pic/handlers.js +60 -47
  83. package/dist/parsers/pic/handlers.js.map +1 -1
  84. package/dist/parsers/pic/op-codes.d.ts.map +1 -1
  85. package/dist/parsers/pic/pic-state.d.ts +3 -1
  86. package/dist/parsers/pic/pic-state.d.ts.map +1 -1
  87. package/dist/parsers/pic/pic-state.js +2 -2
  88. package/dist/parsers/pic/pic-state.js.map +1 -1
  89. package/dist/parsers/pic/points.d.ts +4 -4
  90. package/dist/parsers/pic/points.d.ts.map +1 -1
  91. package/dist/parsers/pic/points.js +3 -4
  92. package/dist/parsers/pic/points.js.map +1 -1
  93. package/dist/parsers/resource-header.d.ts +2 -2
  94. package/dist/parsers/resource-header.d.ts.map +1 -1
  95. package/dist/parsers/resource-header.js +18 -9
  96. package/dist/parsers/resource-header.js.map +1 -1
  97. package/dist/utils/exhaustive.js +1 -2
  98. package/dist/utils/exhaustive.js.map +1 -1
  99. package/dist/utils/repeat.d.ts.map +1 -1
  100. package/package.json +6 -7
  101. package/dist/models/vec2.d.ts +0 -8
  102. package/dist/models/vec2.d.ts.map +0 -1
  103. package/dist/models/vec2.js +0 -22
  104. package/dist/models/vec2.js.map +0 -1
  105. package/dist/parsers/cel.d.ts.map +0 -1
  106. package/dist/parsers/cel.js.map +0 -1
  107. package/dist/parsers/cursor.d.ts +0 -13
  108. package/dist/parsers/cursor.d.ts.map +0 -1
  109. package/dist/parsers/cursor.js.map +0 -1
  110. package/dist/parsers/font.d.ts +0 -7
  111. package/dist/parsers/font.d.ts.map +0 -1
  112. package/dist/parsers/font.js.map +0 -1
  113. package/dist/parsers/pic/index.d.ts +0 -2
  114. package/dist/parsers/pic/index.d.ts.map +0 -1
  115. package/dist/parsers/pic/index.js +0 -6
  116. package/dist/parsers/pic/index.js.map +0 -1
  117. package/dist/parsers/pic/parser.d.ts +0 -3
  118. package/dist/parsers/pic/parser.d.ts.map +0 -1
  119. package/dist/parsers/pic/parser.js +0 -31
  120. package/dist/parsers/pic/parser.js.map +0 -1
  121. package/dist/parsers/view.d.ts +0 -3
  122. package/dist/parsers/view.d.ts.map +0 -1
  123. package/dist/parsers/view.js.map +0 -1
  124. package/dist/screen/circles.d.ts +0 -3
  125. package/dist/screen/circles.d.ts.map +0 -1
  126. package/dist/screen/circles.js +0 -87
  127. package/dist/screen/circles.js.map +0 -1
  128. package/dist/screen/default-palette.d.ts +0 -2
  129. package/dist/screen/default-palette.d.ts.map +0 -1
  130. package/dist/screen/default-palette.js +0 -11
  131. package/dist/screen/default-palette.js.map +0 -1
  132. package/dist/screen/index.d.ts +0 -3
  133. package/dist/screen/index.d.ts.map +0 -1
  134. package/dist/screen/index.js +0 -9
  135. package/dist/screen/index.js.map +0 -1
  136. package/dist/screen/loop-padding-filter.d.ts +0 -5
  137. package/dist/screen/loop-padding-filter.d.ts.map +0 -1
  138. package/dist/screen/loop-padding-filter.js +0 -34
  139. package/dist/screen/loop-padding-filter.js.map +0 -1
  140. package/dist/screen/noise.d.ts +0 -3
  141. package/dist/screen/noise.d.ts.map +0 -1
  142. package/dist/screen/noise.js +0 -24
  143. package/dist/screen/noise.js.map +0 -1
  144. package/dist/screen/render-pic.d.ts +0 -11
  145. package/dist/screen/render-pic.d.ts.map +0 -1
  146. package/dist/screen/render-pic.js +0 -79
  147. package/dist/screen/render-pic.js.map +0 -1
  148. package/dist/screen/render-result.d.ts +0 -8
  149. package/dist/screen/render-result.d.ts.map +0 -1
  150. package/dist/screen/render-result.js.map +0 -1
  151. package/dist/screen/sci0-screen-impl.d.ts +0 -7
  152. package/dist/screen/sci0-screen-impl.d.ts.map +0 -1
  153. package/dist/screen/sci0-screen-impl.js +0 -163
  154. package/dist/screen/sci0-screen-impl.js.map +0 -1
  155. package/dist/screen/screen-buffer.d.ts +0 -6
  156. package/dist/screen/screen-buffer.d.ts.map +0 -1
  157. package/dist/screen/screen-buffer.js +0 -70
  158. package/dist/screen/screen-buffer.js.map +0 -1
  159. package/dist/screen/screen.d.ts +0 -17
  160. package/dist/screen/screen.d.ts.map +0 -1
  161. package/dist/screen/screen.js.map +0 -1
  162. package/dist/screen/tools/circles.d.ts +0 -3
  163. package/dist/screen/tools/circles.d.ts.map +0 -1
  164. package/dist/screen/tools/circles.js +0 -87
  165. package/dist/screen/tools/circles.js.map +0 -1
  166. package/dist/screen/tools/create-blitter.d.ts +0 -5
  167. package/dist/screen/tools/create-blitter.d.ts.map +0 -1
  168. package/dist/screen/tools/create-blitter.js +0 -22
  169. package/dist/screen/tools/create-blitter.js.map +0 -1
  170. package/dist/screen/tools/create-brush.d.ts +0 -3
  171. package/dist/screen/tools/create-brush.d.ts.map +0 -1
  172. package/dist/screen/tools/create-brush.js +0 -37
  173. package/dist/screen/tools/create-brush.js.map +0 -1
  174. package/dist/screen/tools/create-flood-fill.d.ts +0 -3
  175. package/dist/screen/tools/create-flood-fill.d.ts.map +0 -1
  176. package/dist/screen/tools/create-flood-fill.js +0 -63
  177. package/dist/screen/tools/create-flood-fill.js.map +0 -1
  178. package/dist/screen/tools/create-line.d.ts +0 -3
  179. package/dist/screen/tools/create-line.d.ts.map +0 -1
  180. package/dist/screen/tools/create-line.js +0 -46
  181. package/dist/screen/tools/create-line.js.map +0 -1
  182. package/dist/screen/tools/create-marker.d.ts +0 -3
  183. package/dist/screen/tools/create-marker.d.ts.map +0 -1
  184. package/dist/screen/tools/create-marker.js +0 -11
  185. package/dist/screen/tools/create-marker.js.map +0 -1
  186. package/dist/screen/tools/index.d.ts +0 -6
  187. package/dist/screen/tools/index.d.ts.map +0 -1
  188. package/dist/screen/tools/index.js +0 -14
  189. package/dist/screen/tools/index.js.map +0 -1
  190. package/dist/screen/tools/noise.d.ts +0 -3
  191. package/dist/screen/tools/noise.d.ts.map +0 -1
  192. package/dist/screen/tools/noise.js +0 -24
  193. package/dist/screen/tools/noise.js.map +0 -1
  194. package/dist/utils/tbuffer-helpers.d.ts +0 -5
  195. package/dist/utils/tbuffer-helpers.d.ts.map +0 -1
  196. package/dist/utils/tbuffer-helpers.js +0 -11
  197. 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":"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"}
@@ -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,3 +0,0 @@
1
- declare const circleBitmaps: number[][];
2
- export default circleBitmaps;
3
- //# sourceMappingURL=circles.d.ts.map
@@ -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,3 +0,0 @@
1
- import { Brusher, Plotter } from '../screen';
2
- export declare const createBrush: (plot: Plotter, [stageWidth, stageHeight]: readonly [number, number]) => Brusher;
3
- //# sourceMappingURL=create-brush.d.ts.map
@@ -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,3 +0,0 @@
1
- import { Filler, IsFillable, Plotter } from '../screen';
2
- export declare const createFloodFill: (plot: Plotter, isLegal: IsFillable, [width, height]: readonly [number, number]) => Filler;
3
- //# sourceMappingURL=create-flood-fill.d.ts.map
@@ -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,3 +0,0 @@
1
- import { Liner, Plotter } from '../screen';
2
- export declare const createLine: (plot: Plotter) => Liner;
3
- //# sourceMappingURL=create-line.d.ts.map
@@ -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,3 +0,0 @@
1
- import { Filler, Plotter } from '../screen';
2
- export declare const createMarker: (plot: Plotter) => Filler;
3
- //# sourceMappingURL=create-marker.d.ts.map
@@ -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"}