zx-kit 0.39.0 → 0.40.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/dist/attrscreen.d.ts +22 -1
- package/dist/attrscreen.d.ts.map +1 -1
- package/dist/attrscreen.js +34 -1
- package/dist/attrscreen.js.map +1 -1
- package/package.json +1 -1
package/dist/attrscreen.d.ts
CHANGED
|
@@ -58,6 +58,10 @@ export interface AttrScreen {
|
|
|
58
58
|
readonly cellInk: Uint32Array;
|
|
59
59
|
/** Packed RGBA paper colour per cell, `cols*rows`. */
|
|
60
60
|
readonly cellPaper: Uint32Array;
|
|
61
|
+
/** Per-cell **GLOW** flag — `1` = emissive light source (opt-in, like the FLASH
|
|
62
|
+
* attribute bit). Set by `stampMono(..., glow=true)`; `0` otherwise. The normal
|
|
63
|
+
* clash flush ignores it; {@link drawAttrGlowSources} feeds it to `glow.ts`. */
|
|
64
|
+
readonly cellGlow: Uint8Array;
|
|
61
65
|
/** Resolved RGBA frame buffer (`width*height*4`), filled by {@link flushAttrScreen}. */
|
|
62
66
|
readonly rgba: Uint8ClampedArray;
|
|
63
67
|
/** Reusable `ImageData` backing {@link rgba} (`null` when headless). */
|
|
@@ -83,8 +87,25 @@ export declare function clearAttrScreen(scr: AttrScreen, paper: SpectrumColor, i
|
|
|
83
87
|
* the pixel plane and re-attributes every cell that receives a lit pixel, per
|
|
84
88
|
* `policy` (default `'both'`). Lit-pixel-only: existing pixels are never cleared,
|
|
85
89
|
* so other sprites/background in a touched cell bleed to the new colour.
|
|
90
|
+
*
|
|
91
|
+
* **`glow`** (default `false`, opt-in): also flags every cell this stamp touches as
|
|
92
|
+
* an emissive GLOW source ({@link AttrScreen.cellGlow}), for `glow.ts`'s bloom via
|
|
93
|
+
* {@link drawAttrGlowSources}. Leaving it `false` is byte-for-byte the old behaviour.
|
|
94
|
+
*/
|
|
95
|
+
export declare function stampMono(scr: AttrScreen, bitmap: Bitmap, x: number, y: number, ink: SpectrumColor, paper: SpectrumColor, policy?: AttrPolicy, glow?: boolean): void;
|
|
96
|
+
/**
|
|
97
|
+
* Draws every {@link AttrScreen.cellGlow}-flagged cell as a solid 8×8 block in its
|
|
98
|
+
* ink colour into the emissive context `g`. Use it as the `drawSources` callback of
|
|
99
|
+
* `glow.ts`'s `renderGlow`, so an attribute screen's glow cells feed the bloom.
|
|
100
|
+
* Cell-level, exactly like the FLASH bit — the whole flagged cell is the light
|
|
101
|
+
* source. Draws nothing when no cell is flagged; needs no canvas of its own.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```ts
|
|
105
|
+
* renderGlow(glowLayer, ctx, (g) => drawAttrGlowSources(scr, g))
|
|
106
|
+
* ```
|
|
86
107
|
*/
|
|
87
|
-
export declare function
|
|
108
|
+
export declare function drawAttrGlowSources(scr: AttrScreen, g: CanvasRenderingContext2D): void;
|
|
88
109
|
/**
|
|
89
110
|
* Resolves the two planes into RGBA (each pixel takes its cell's ink or paper)
|
|
90
111
|
* and uploads the result with one `putImageData` + `drawImage`. The image is
|
package/dist/attrscreen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attrscreen.d.ts","sourceRoot":"","sources":["../src/attrscreen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,CAAA;AAE3D,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAA;IAC/B,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IAChC,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAC1C;AAqBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAK,EAAE,IAAI,SAAK,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"attrscreen.d.ts","sourceRoot":"","sources":["../src/attrscreen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,CAAA;AAE3D,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAA;IAC/B;;qFAEiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IAChC,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAC1C;AAqBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,SAAK,EAAE,IAAI,SAAK,GAAG,UAAU,CAkCjE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,GAAE,aAAqB,GAAG,IAAI,CAKvG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,EACd,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,aAAa,EACpB,MAAM,GAAE,UAAmB,EAC3B,IAAI,UAAQ,GACX,IAAI,CAgCN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAWtF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,wBAAwB,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAoBpF"}
|
package/dist/attrscreen.js
CHANGED
|
@@ -89,6 +89,7 @@ export function createAttrScreen(cols = 32, rows = 24) {
|
|
|
89
89
|
pixels: new Uint8Array(width * height),
|
|
90
90
|
cellInk: new Uint32Array(cols * rows),
|
|
91
91
|
cellPaper: new Uint32Array(cols * rows),
|
|
92
|
+
cellGlow: new Uint8Array(cols * rows),
|
|
92
93
|
rgba,
|
|
93
94
|
image,
|
|
94
95
|
canvas,
|
|
@@ -103,6 +104,7 @@ export function clearAttrScreen(scr, paper, ink = paper) {
|
|
|
103
104
|
scr.pixels.fill(0);
|
|
104
105
|
scr.cellPaper.fill(hexToU32(paper));
|
|
105
106
|
scr.cellInk.fill(hexToU32(ink));
|
|
107
|
+
scr.cellGlow.fill(0); // glow is per-frame opt-in — nothing glows until a stamp sets it
|
|
106
108
|
}
|
|
107
109
|
/**
|
|
108
110
|
* Stamps a monochrome {@link Bitmap} at screen pixel `(x, y)` (rounded; may be
|
|
@@ -110,8 +112,12 @@ export function clearAttrScreen(scr, paper, ink = paper) {
|
|
|
110
112
|
* the pixel plane and re-attributes every cell that receives a lit pixel, per
|
|
111
113
|
* `policy` (default `'both'`). Lit-pixel-only: existing pixels are never cleared,
|
|
112
114
|
* so other sprites/background in a touched cell bleed to the new colour.
|
|
115
|
+
*
|
|
116
|
+
* **`glow`** (default `false`, opt-in): also flags every cell this stamp touches as
|
|
117
|
+
* an emissive GLOW source ({@link AttrScreen.cellGlow}), for `glow.ts`'s bloom via
|
|
118
|
+
* {@link drawAttrGlowSources}. Leaving it `false` is byte-for-byte the old behaviour.
|
|
113
119
|
*/
|
|
114
|
-
export function stampMono(scr, bitmap, x, y, ink, paper, policy = 'both') {
|
|
120
|
+
export function stampMono(scr, bitmap, x, y, ink, paper, policy = 'both', glow = false) {
|
|
115
121
|
const inkU32 = hexToU32(ink);
|
|
116
122
|
const paperU32 = hexToU32(paper);
|
|
117
123
|
const setInk = policy !== 'paper-only';
|
|
@@ -144,10 +150,37 @@ export function stampMono(scr, bitmap, x, y, ink, paper, policy = 'both') {
|
|
|
144
150
|
scr.cellInk[cell] = inkU32;
|
|
145
151
|
if (setPaper)
|
|
146
152
|
scr.cellPaper[cell] = paperU32;
|
|
153
|
+
if (glow)
|
|
154
|
+
scr.cellGlow[cell] = 1;
|
|
147
155
|
}
|
|
148
156
|
}
|
|
149
157
|
}
|
|
150
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Draws every {@link AttrScreen.cellGlow}-flagged cell as a solid 8×8 block in its
|
|
161
|
+
* ink colour into the emissive context `g`. Use it as the `drawSources` callback of
|
|
162
|
+
* `glow.ts`'s `renderGlow`, so an attribute screen's glow cells feed the bloom.
|
|
163
|
+
* Cell-level, exactly like the FLASH bit — the whole flagged cell is the light
|
|
164
|
+
* source. Draws nothing when no cell is flagged; needs no canvas of its own.
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```ts
|
|
168
|
+
* renderGlow(glowLayer, ctx, (g) => drawAttrGlowSources(scr, g))
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
export function drawAttrGlowSources(scr, g) {
|
|
172
|
+
const { cellGlow, cellInk, cols, rows } = scr;
|
|
173
|
+
for (let row = 0; row < rows; row++) {
|
|
174
|
+
for (let col = 0; col < cols; col++) {
|
|
175
|
+
const cell = row * cols + col;
|
|
176
|
+
if (!cellGlow[cell])
|
|
177
|
+
continue;
|
|
178
|
+
const u = cellInk[cell]; // packed little-endian RGBA (a<<24 | b<<16 | g<<8 | r)
|
|
179
|
+
g.fillStyle = `rgba(${u & 0xff},${(u >> 8) & 0xff},${(u >> 16) & 0xff},${((u >>> 24) & 0xff) / 255})`;
|
|
180
|
+
g.fillRect(col * CELL, row * CELL, CELL, CELL);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
151
184
|
/**
|
|
152
185
|
* Resolves the two planes into RGBA (each pixel takes its cell's ink or paper)
|
|
153
186
|
* and uploads the result with one `putImageData` + `drawImage`. The image is
|
package/dist/attrscreen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attrscreen.js","sourceRoot":"","sources":["../src/attrscreen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,IAAI,EAAsB,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"attrscreen.js","sourceRoot":"","sources":["../src/attrscreen.ts"],"names":[],"mappings":"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"}
|