spine-html 0.4.1 → 0.5.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/NOTICE.md +4 -3
- package/README.md +141 -3
- package/dist/MeshGlBlitter.d.ts +43 -1
- package/dist/MeshGlBlitter.d.ts.map +1 -1
- package/dist/MeshGlBlitter.js +85 -8
- package/dist/MeshGlBlitter.js.map +1 -1
- package/dist/SpineHtmlRenderer.d.ts +121 -7
- package/dist/SpineHtmlRenderer.d.ts.map +1 -1
- package/dist/SpineHtmlRenderer.js +265 -30
- package/dist/SpineHtmlRenderer.js.map +1 -1
- package/dist/binary.d.ts +48 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +29 -0
- package/dist/binary.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/loadAtlasAssets.d.ts +73 -0
- package/dist/loadAtlasAssets.d.ts.map +1 -0
- package/dist/loadAtlasAssets.js +75 -0
- package/dist/loadAtlasAssets.js.map +1 -0
- package/dist/loadSkeletonAssets.d.ts +41 -22
- package/dist/loadSkeletonAssets.d.ts.map +1 -1
- package/dist/loadSkeletonAssets.js +48 -49
- package/dist/loadSkeletonAssets.js.map +1 -1
- package/dist/main.js +8 -3
- package/dist/main.js.map +1 -1
- package/package.json +5 -1
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import { BlendMode, ClippingAttachment, MeshAttachment, RegionAttachment, } from '@esotericsoftware/spine-core';
|
|
2
|
-
import { getMeshGlBlitter } from './MeshGlBlitter';
|
|
2
|
+
import { getMeshGlBlitter } from './MeshGlBlitter.js';
|
|
3
3
|
const regionVertices = new Float32Array(8);
|
|
4
4
|
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
5
5
|
/** Unique tint-filter ids across renderer instances (ids are document-global). */
|
|
6
6
|
let tintFilterSeq = 0;
|
|
7
|
+
/** Edge length of the throwaway box syncPixelRatio() measures the root with. */
|
|
8
|
+
const SCALE_PROBE_PX = 100;
|
|
9
|
+
/**
|
|
10
|
+
* Relative change below which syncPixelRatio() leaves `pixelRatio` alone.
|
|
11
|
+
* Layout reads are quantized (1/64 px in Blink), so a 100 px probe carries
|
|
12
|
+
* ~0.016% of measurement noise — 6× under this band, which in turn is 10×
|
|
13
|
+
* under the smallest zoom step a UI realistically takes (1%). Inside the band
|
|
14
|
+
* the sampling error is worth ~0.2% of backing pixels; outside it, a rewrite
|
|
15
|
+
* of `pixelRatio` recreates every mesh canvas's GPU surface.
|
|
16
|
+
*/
|
|
17
|
+
const PIXEL_RATIO_DEADBAND = 1e-3;
|
|
7
18
|
/** Push a point away from (cx, cy) by `amount` pixels. */
|
|
8
19
|
function expandPoint(x, y, cx, cy, amount) {
|
|
9
20
|
const dx = x - cx;
|
|
@@ -73,7 +84,8 @@ export class SpineHtmlRenderer {
|
|
|
73
84
|
* Mesh-canvas backing-store pixels per CSS pixel. Defaults to the device
|
|
74
85
|
* pixel ratio. If the caller scales the root element, fold that scale in
|
|
75
86
|
* (e.g. devicePixelRatio * rootScale) so the raster matches the on-screen
|
|
76
|
-
* resolution instead of over- or under-sampling
|
|
87
|
+
* resolution instead of over- or under-sampling — syncPixelRatio() measures
|
|
88
|
+
* that scale and folds it in for you.
|
|
77
89
|
*/
|
|
78
90
|
pixelRatio = typeof devicePixelRatio === 'number' ? devicePixelRatio : 1;
|
|
79
91
|
/**
|
|
@@ -96,6 +108,12 @@ export class SpineHtmlRenderer {
|
|
|
96
108
|
views = new Map();
|
|
97
109
|
pendingJobs = [];
|
|
98
110
|
pendingViews = [];
|
|
111
|
+
/**
|
|
112
|
+
* Atlas page images this renderer has retained from the shared blitter,
|
|
113
|
+
* one retain each. Allocated on the first webgl mesh job, so a renderer
|
|
114
|
+
* that never leaves canvas2d holds nothing and gives nothing back.
|
|
115
|
+
*/
|
|
116
|
+
glPages = null;
|
|
99
117
|
scratchVertices = new Float32Array(256);
|
|
100
118
|
tintDefs = null;
|
|
101
119
|
/**
|
|
@@ -108,6 +126,95 @@ export class SpineHtmlRenderer {
|
|
|
108
126
|
this.root = root;
|
|
109
127
|
this.regionImages = regionImages;
|
|
110
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Backing-store pixels currently allocated across the mesh canvases
|
|
131
|
+
* (Σ width × height). Computed on demand from the views — nothing is
|
|
132
|
+
* tracked per frame — so reading it is cheap but not free; the demo reads it
|
|
133
|
+
* with the other counters, twice a second.
|
|
134
|
+
*
|
|
135
|
+
* This is the quantity `pixelRatio` moves quadratically, and the one that
|
|
136
|
+
* makes an oversampling stage visible before the frame rate does: a root
|
|
137
|
+
* scaled down by CSS without that scale folded into `pixelRatio` holds
|
|
138
|
+
* 1/scale² of the backing it needs. Hidden slots are included — their
|
|
139
|
+
* canvases keep their allocation.
|
|
140
|
+
*/
|
|
141
|
+
get meshBackingPixels() {
|
|
142
|
+
let total = 0;
|
|
143
|
+
for (const view of this.views.values()) {
|
|
144
|
+
if (view.kind === 'canvas')
|
|
145
|
+
total += view.canvasW * view.canvasH;
|
|
146
|
+
}
|
|
147
|
+
return total;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Re-derives `pixelRatio` from the root's effective on-screen scale, so the
|
|
151
|
+
* mesh tier rasters at the resolution the screen actually shows.
|
|
152
|
+
*
|
|
153
|
+
* Mesh canvases are sized in the root's own coordinates, and a CSS transform
|
|
154
|
+
* anywhere above the root — the natural way to build a pan/zoom stage is
|
|
155
|
+
* `transform: scale(zoom)` on an ancestor — rescales them on screen without
|
|
156
|
+
* the renderer seeing it. At zoom z the raster is then oversampled by 1/z per
|
|
157
|
+
* axis, 1/z² in backing pixels: GPU memory and fill rate, not correctness.
|
|
158
|
+
* This folds the measured scale in, `devicePixelRatio × scale`.
|
|
159
|
+
*
|
|
160
|
+
* One layout read per call. The root itself is usually 0×0 (slot elements are
|
|
161
|
+
* absolutely positioned and posed by transforms), so there is no box to
|
|
162
|
+
* measure: a hidden 100×100 px child is appended, measured once with
|
|
163
|
+
* getBoundingClientRect(), and removed again — nothing of it is left behind.
|
|
164
|
+
* It cannot disturb the slot elements either: they interleave by z-index,
|
|
165
|
+
* which applyCommon() writes explicitly on every visible one, so DOM order is
|
|
166
|
+
* not what orders them; and the probe is `visibility: hidden` and gone before
|
|
167
|
+
* anything can paint.
|
|
168
|
+
*
|
|
169
|
+
* The scale is the larger axis of the measured box. An ancestor rotation
|
|
170
|
+
* inflates that axis-aligned box, so the ratio errs high — the safe side:
|
|
171
|
+
* oversampling costs pixels, undersampling costs picture.
|
|
172
|
+
*
|
|
173
|
+
* A move smaller than 0.1% (see PIXEL_RATIO_DEADBAND) changes nothing, and a
|
|
174
|
+
* root that is not laid out (a `display: none` ancestor — the probe measures
|
|
175
|
+
* 0) changes nothing either. Both matter because writing `pixelRatio`
|
|
176
|
+
* reallocates every mesh canvas on the next frame.
|
|
177
|
+
*
|
|
178
|
+
* The renderer never calls this itself. It is a forced synchronous layout,
|
|
179
|
+
* which has no business in a render path — and there is no per-frame layout
|
|
180
|
+
* read anywhere in this class. Call it when a zoom or a layout settles: after
|
|
181
|
+
* a wheel/pinch gesture ends, on a debounced resize, not during the drag.
|
|
182
|
+
*
|
|
183
|
+
* @returns the pixel ratio now in effect (the current one if nothing moved).
|
|
184
|
+
*/
|
|
185
|
+
syncPixelRatio() {
|
|
186
|
+
const probe = document.createElement('div');
|
|
187
|
+
probe.style.position = 'absolute';
|
|
188
|
+
probe.style.left = '0';
|
|
189
|
+
probe.style.top = '0';
|
|
190
|
+
probe.style.width = `${SCALE_PROBE_PX}px`;
|
|
191
|
+
probe.style.height = `${SCALE_PROBE_PX}px`;
|
|
192
|
+
probe.style.visibility = 'hidden';
|
|
193
|
+
probe.style.pointerEvents = 'none';
|
|
194
|
+
this.root.appendChild(probe);
|
|
195
|
+
let width = 0;
|
|
196
|
+
let height = 0;
|
|
197
|
+
try {
|
|
198
|
+
const rect = probe.getBoundingClientRect();
|
|
199
|
+
width = rect.width;
|
|
200
|
+
height = rect.height;
|
|
201
|
+
}
|
|
202
|
+
finally {
|
|
203
|
+
probe.remove();
|
|
204
|
+
}
|
|
205
|
+
const scale = Math.max(width, height) / SCALE_PROBE_PX;
|
|
206
|
+
// Not laid out (display:none ancestor, detached root): no measurement, so
|
|
207
|
+
// no decision — keep whatever the caller has.
|
|
208
|
+
if (!(scale > 0))
|
|
209
|
+
return this.pixelRatio;
|
|
210
|
+
const dpr = typeof devicePixelRatio === 'number' ? devicePixelRatio : 1;
|
|
211
|
+
const next = dpr * scale;
|
|
212
|
+
const current = this.pixelRatio;
|
|
213
|
+
if (current > 0 && Math.abs(next - current) < current * PIXEL_RATIO_DEADBAND)
|
|
214
|
+
return current;
|
|
215
|
+
this.pixelRatio = next;
|
|
216
|
+
return next;
|
|
217
|
+
}
|
|
111
218
|
render(skeleton) {
|
|
112
219
|
this.clipSkipCount = 0;
|
|
113
220
|
this.meshCount = 0;
|
|
@@ -153,10 +260,20 @@ export class SpineHtmlRenderer {
|
|
|
153
260
|
}
|
|
154
261
|
/**
|
|
155
262
|
* Removes every element this renderer added to the root (slot elements and
|
|
156
|
-
* the tint filter defs)
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
263
|
+
* the tint filter defs), and hands the atlas pages it uploaded back to the
|
|
264
|
+
* shared GL blitter — the one resource here that outlives the instance, so
|
|
265
|
+
* the one that has to be given back explicitly (GPU memory, and no garbage
|
|
266
|
+
* collector feels pressure from it). The pages are reference-counted there:
|
|
267
|
+
* a page another live renderer still draws stays uploaded, and the texture
|
|
268
|
+
* is deleted only when the last user of it is disposed.
|
|
269
|
+
*
|
|
270
|
+
* The region bitmaps are deliberately untouched: the map is the caller's,
|
|
271
|
+
* and one map is normally shared by many renderers (disposing one instance
|
|
272
|
+
* must not blind the others). Free the unpacked blob URLs with
|
|
273
|
+
* revokeRegions() once no renderer needs them.
|
|
274
|
+
*
|
|
275
|
+
* Idempotent: the retained-page ledger is cleared here, so a second call
|
|
276
|
+
* releases nothing a second time.
|
|
160
277
|
*/
|
|
161
278
|
dispose() {
|
|
162
279
|
for (const view of this.views.values())
|
|
@@ -164,6 +281,13 @@ export class SpineHtmlRenderer {
|
|
|
164
281
|
this.views.clear();
|
|
165
282
|
this.tintDefs?.remove();
|
|
166
283
|
this.tintDefs = null;
|
|
284
|
+
if (this.glPages) {
|
|
285
|
+
const blitter = getMeshGlBlitter();
|
|
286
|
+
if (blitter)
|
|
287
|
+
for (const page of this.glPages)
|
|
288
|
+
blitter.release(page);
|
|
289
|
+
this.glPages = null;
|
|
290
|
+
}
|
|
167
291
|
}
|
|
168
292
|
// --- rigid tier -----------------------------------------------------------
|
|
169
293
|
renderRegion(skeleton, slot, pose, attachment, zIndex) {
|
|
@@ -252,18 +376,26 @@ export class SpineHtmlRenderer {
|
|
|
252
376
|
// stalled real Safari to ~3 fps while the JS split showed ~4 ms (the
|
|
253
377
|
// cost lives in the compositor, invisible to in-callback timing). With
|
|
254
378
|
// grow-only quantized backing, steady-state animation reallocates
|
|
255
|
-
// nothing.
|
|
256
|
-
//
|
|
257
|
-
// the
|
|
379
|
+
// nothing. A pixelRatio change is the one exception to grow-only: it
|
|
380
|
+
// reallocates every mesh canvas anyway, so the new size comes from the
|
|
381
|
+
// new need alone. Keeping the old size as a floor there would make a
|
|
382
|
+
// ratio *drop* pay the reallocation and keep every oversized pixel — the
|
|
383
|
+
// backing would never come back down to what that ratio needs. The CSS
|
|
384
|
+
// size mirrors the whole backing so the pixel mapping stays 1:1; the mesh
|
|
385
|
+
// draws into the top-left w×h logical region and the rest stays
|
|
386
|
+
// transparent.
|
|
258
387
|
const needW = Math.max(1, Math.round(w * ratio));
|
|
259
388
|
const needH = Math.max(1, Math.round(h * ratio));
|
|
260
|
-
|
|
389
|
+
const ratioChanged = view.meshRatio !== ratio;
|
|
390
|
+
if (needW > view.canvasW || needH > view.canvasH || ratioChanged) {
|
|
261
391
|
// 25% slack: at low fps the animation is sampled sparsely, so new bbox
|
|
262
392
|
// maxima keep being discovered for many seconds — allocate ahead of the
|
|
263
393
|
// curve instead of chasing it.
|
|
264
394
|
const step = 32;
|
|
265
|
-
|
|
266
|
-
|
|
395
|
+
const floorW = ratioChanged ? 0 : view.canvasW;
|
|
396
|
+
const floorH = ratioChanged ? 0 : view.canvasH;
|
|
397
|
+
view.canvasW = Math.ceil(Math.max(needW * 1.25, floorW) / step) * step;
|
|
398
|
+
view.canvasH = Math.ceil(Math.max(needH * 1.25, floorH) / step) * step;
|
|
267
399
|
view.meshRatio = ratio;
|
|
268
400
|
canvas.width = view.canvasW;
|
|
269
401
|
canvas.height = view.canvasH;
|
|
@@ -317,6 +449,7 @@ export class SpineHtmlRenderer {
|
|
|
317
449
|
height: Math.min(view.canvasH, Math.ceil(h * ratio)),
|
|
318
450
|
});
|
|
319
451
|
this.pendingViews.push(view);
|
|
452
|
+
this.retainPage(page);
|
|
320
453
|
}
|
|
321
454
|
else {
|
|
322
455
|
this.rasterizeMesh2d(canvas, page, rel, uvs, triangles, ratio);
|
|
@@ -326,6 +459,25 @@ export class SpineHtmlRenderer {
|
|
|
326
459
|
}
|
|
327
460
|
this.applyCommon(view, slot, pose, attachment.color, skeleton, zIndex);
|
|
328
461
|
}
|
|
462
|
+
/**
|
|
463
|
+
* Declares this renderer a user of `page` with the shared blitter, once per
|
|
464
|
+
* page — the counterpart of the release in dispose(). The set is this
|
|
465
|
+
* renderer's own ledger, so sharing one page across renderers works by
|
|
466
|
+
* counting rather than by guessing. On the render path this costs one
|
|
467
|
+
* Set.has per queued mesh job and allocates nothing after the first page.
|
|
468
|
+
*/
|
|
469
|
+
retainPage(page) {
|
|
470
|
+
const pages = (this.glPages ??= new Set());
|
|
471
|
+
if (pages.has(page))
|
|
472
|
+
return;
|
|
473
|
+
// Null only if the context died between the backend pick and here; the
|
|
474
|
+
// flush then fails too and the batch falls back to canvas2d.
|
|
475
|
+
const blitter = getMeshGlBlitter();
|
|
476
|
+
if (!blitter)
|
|
477
|
+
return;
|
|
478
|
+
pages.add(page);
|
|
479
|
+
blitter.retain(page);
|
|
480
|
+
}
|
|
329
481
|
/** The canvas2d raster path: clear the backing, map each triangle. */
|
|
330
482
|
rasterizeMesh2d(canvas, page, vertices, uvs, triangles, ratio) {
|
|
331
483
|
const ctx = canvas.getContext('2d');
|
|
@@ -354,7 +506,8 @@ export class SpineHtmlRenderer {
|
|
|
354
506
|
/**
|
|
355
507
|
* Standard canvas triangle texture mapping (same math as the official
|
|
356
508
|
* spine-canvas renderer): derive the affine that sends the triangle's
|
|
357
|
-
* texture-space corners to its screen-space corners, clip, draw the page
|
|
509
|
+
* texture-space corners to its screen-space corners, clip, draw the page —
|
|
510
|
+
* but only the part of the page this triangle can show (see below).
|
|
358
511
|
*
|
|
359
512
|
* The clip polygon is expanded outward from the centroid by a fraction of
|
|
360
513
|
* a pixel. Browsers that antialias clip paths (Safari) otherwise leave
|
|
@@ -363,6 +516,44 @@ export class SpineHtmlRenderer {
|
|
|
363
516
|
* across the shared edge the overlap draws the same pixels — cracks close
|
|
364
517
|
* with no visible cost. The texture-mapping affine itself stays exact.
|
|
365
518
|
*
|
|
519
|
+
* ## Why a source sub-rect instead of the whole page
|
|
520
|
+
*
|
|
521
|
+
* The draw is a 9-argument `drawImage` whose source rect covers exactly what
|
|
522
|
+
* the clip can reveal, placed at the same texture-space position, so the
|
|
523
|
+
* mapping is identical to drawing the whole page — the same affine, the same
|
|
524
|
+
* texels, only fewer of them offered to the rasterizer.
|
|
525
|
+
*
|
|
526
|
+
* That is not an optimization. Linux WebKit — the software rasterizer, the
|
|
527
|
+
* only engine this has been observed on; Chromium and macOS WebKit never show
|
|
528
|
+
* it — garbles individual triangles when the whole page is drawn under a
|
|
529
|
+
* steep per-triangle affine: read off the parity dump, head/goggles/foot
|
|
530
|
+
* triangles land with displaced texture while the webgl capture of the same
|
|
531
|
+
* pose stays clean. Switching this one call to a source sub-rect — the only
|
|
532
|
+
* variable changed — took that platform's bad-pixel counts from 1042 to 2
|
|
533
|
+
* (hoverboard), 231 to 4 (portal) and 803 to 3 (walk + tint), and left every
|
|
534
|
+
* Chromium capture byte-identical. [measured on the ubuntu CI runner through
|
|
535
|
+
* PARITY_DUMP: first with a fixed 2-texel pad (run 35209262693), then with
|
|
536
|
+
* the derived rect below — the same counts (run 35213286993).] WHY that
|
|
537
|
+
* rasterizer garbles the whole-page form is not identified; steep affines
|
|
538
|
+
* making whole-page coordinates large is a suspicion, not a measurement. The
|
|
539
|
+
* sub-rect sidesteps it. (Moving `clip()` before `transform()` was tried as a
|
|
540
|
+
* separate one-variable experiment: every number came back identical, so the
|
|
541
|
+
* clip path is not the cause.)
|
|
542
|
+
*
|
|
543
|
+
* ## How the sub-rect is derived
|
|
544
|
+
*
|
|
545
|
+
* It must provably cover everything the clip can reveal, which is the
|
|
546
|
+
* *expanded* polygon, not the triangle. So each clip corner's canvas-space
|
|
547
|
+
* displacement is pushed back through the inverse of the 2×2 affine into
|
|
548
|
+
* texture space, the bounding box is taken over the displaced corners, one
|
|
549
|
+
* texel of bilinear support is added, and the result is floor/ceil'd to texel
|
|
550
|
+
* boundaries (so the sub-rect itself resamples nothing) and clamped to the
|
|
551
|
+
* page. A fixed pad would not do: the texture-space reach of the expansion is
|
|
552
|
+
* `triangleExpand` times the local texels-per-canvas-unit, which on the
|
|
553
|
+
* demo's own meshes ranges from ~0.26 texels on a typical triangle to ~8.6 on
|
|
554
|
+
* a foreshortened one. Under-padding lets the rim of the overdraw sample
|
|
555
|
+
* nothing, which brings back the very seams the overdraw exists to close.
|
|
556
|
+
*
|
|
366
557
|
* No half-texel offset is applied to the incoming u/v: the `(i + 0.5) / size`
|
|
367
558
|
* texel-centre convention belongs to *sampling* (landing inside the intended
|
|
368
559
|
* texel instead of on a filter boundary). This solves for the affine that
|
|
@@ -375,33 +566,77 @@ export class SpineHtmlRenderer {
|
|
|
375
566
|
const cx = (x0 + x1 + x2) / 3;
|
|
376
567
|
const cy = (y0 + y1 + y2) / 3;
|
|
377
568
|
const expand = this.triangleExpand;
|
|
569
|
+
const [px0, py0] = expandPoint(x0, y0, cx, cy, expand);
|
|
570
|
+
const [px1, py1] = expandPoint(x1, y1, cx, cy, expand);
|
|
571
|
+
const [px2, py2] = expandPoint(x2, y2, cx, cy, expand);
|
|
378
572
|
ctx.beginPath();
|
|
379
|
-
ctx.moveTo(
|
|
380
|
-
ctx.lineTo(
|
|
381
|
-
ctx.lineTo(
|
|
573
|
+
ctx.moveTo(px0, py0);
|
|
574
|
+
ctx.lineTo(px1, py1);
|
|
575
|
+
ctx.lineTo(px2, py2);
|
|
382
576
|
ctx.closePath();
|
|
383
|
-
|
|
384
|
-
y1
|
|
385
|
-
x2
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
u2 -= u0;
|
|
390
|
-
v2 -= v0;
|
|
391
|
-
let det = u1 * v2 - u2 * v1;
|
|
577
|
+
// Edge vectors, in canvas space and in texture space.
|
|
578
|
+
const ex1 = x1 - x0, ey1 = y1 - y0;
|
|
579
|
+
const ex2 = x2 - x0, ey2 = y2 - y0;
|
|
580
|
+
const eu1 = u1 - u0, ev1 = v1 - v0;
|
|
581
|
+
const eu2 = u2 - u0, ev2 = v2 - v0;
|
|
582
|
+
let det = eu1 * ev2 - eu2 * ev1;
|
|
392
583
|
if (det === 0)
|
|
393
584
|
return;
|
|
394
585
|
det = 1 / det;
|
|
395
|
-
const a = (
|
|
396
|
-
const b = (
|
|
397
|
-
const c = (
|
|
398
|
-
const d = (
|
|
586
|
+
const a = (ev2 * ex1 - ev1 * ex2) * det;
|
|
587
|
+
const b = (ev2 * ey1 - ev1 * ey2) * det;
|
|
588
|
+
const c = (eu1 * ex2 - eu2 * ex1) * det;
|
|
589
|
+
const d = (eu1 * ey2 - eu2 * ey1) * det;
|
|
399
590
|
const e = x0 - a * u0 - c * v0;
|
|
400
591
|
const f = y0 - b * u0 - d * v0;
|
|
592
|
+
// Texture-space bounds of the clip polygon. The triangle's own corners
|
|
593
|
+
// first, then the three expansion offsets carried back through the inverse
|
|
594
|
+
// of [[a, c], [b, d]] — the clip reaches exactly that far and no further.
|
|
595
|
+
let minU = Math.min(u0, u1, u2);
|
|
596
|
+
let maxU = Math.max(u0, u1, u2);
|
|
597
|
+
let minV = Math.min(v0, v1, v2);
|
|
598
|
+
let maxV = Math.max(v0, v1, v2);
|
|
599
|
+
const detM = a * d - b * c;
|
|
600
|
+
if (detM !== 0) {
|
|
601
|
+
const im = 1 / detM;
|
|
602
|
+
const ia = d * im, ic = -c * im, ib = -b * im, id = a * im;
|
|
603
|
+
let gx = px0 - x0, gy = py0 - y0;
|
|
604
|
+
let tu = u0 + ia * gx + ic * gy, tv = v0 + ib * gx + id * gy;
|
|
605
|
+
minU = Math.min(minU, tu);
|
|
606
|
+
maxU = Math.max(maxU, tu);
|
|
607
|
+
minV = Math.min(minV, tv);
|
|
608
|
+
maxV = Math.max(maxV, tv);
|
|
609
|
+
gx = px1 - x1;
|
|
610
|
+
gy = py1 - y1;
|
|
611
|
+
tu = u1 + ia * gx + ic * gy;
|
|
612
|
+
tv = v1 + ib * gx + id * gy;
|
|
613
|
+
minU = Math.min(minU, tu);
|
|
614
|
+
maxU = Math.max(maxU, tu);
|
|
615
|
+
minV = Math.min(minV, tv);
|
|
616
|
+
maxV = Math.max(maxV, tv);
|
|
617
|
+
gx = px2 - x2;
|
|
618
|
+
gy = py2 - y2;
|
|
619
|
+
tu = u2 + ia * gx + ic * gy;
|
|
620
|
+
tv = v2 + ib * gx + id * gy;
|
|
621
|
+
minU = Math.min(minU, tu);
|
|
622
|
+
maxU = Math.max(maxU, tu);
|
|
623
|
+
minV = Math.min(minV, tv);
|
|
624
|
+
maxV = Math.max(maxV, tv);
|
|
625
|
+
}
|
|
626
|
+
// One texel of bilinear support on every side, snapped outward to texel
|
|
627
|
+
// boundaries, clamped to the page. Source rect and destination rect are the
|
|
628
|
+
// same rect in texture space, so the affine below maps it exactly as it
|
|
629
|
+
// mapped the whole page.
|
|
630
|
+
const sx = Math.max(0, Math.floor(minU - 1));
|
|
631
|
+
const sy = Math.max(0, Math.floor(minV - 1));
|
|
632
|
+
const sw = Math.min(img.width, Math.ceil(maxU + 1)) - sx;
|
|
633
|
+
const sh = Math.min(img.height, Math.ceil(maxV + 1)) - sy;
|
|
634
|
+
if (!(sw > 0) || !(sh > 0))
|
|
635
|
+
return;
|
|
401
636
|
ctx.save();
|
|
402
637
|
ctx.transform(a, b, c, d, e, f);
|
|
403
638
|
ctx.clip();
|
|
404
|
-
ctx.drawImage(img,
|
|
639
|
+
ctx.drawImage(img, sx, sy, sw, sh, sx, sy, sw, sh);
|
|
405
640
|
ctx.restore();
|
|
406
641
|
}
|
|
407
642
|
// --- shared plumbing -------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpineHtmlRenderer.js","sourceRoot":"","sources":["../src/SpineHtmlRenderer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SpineHtmlRenderer.js","sourceRoot":"","sources":["../src/SpineHtmlRenderer.ts"],"names":[],"mappings":"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"}
|
package/dist/binary.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type SkeletonData, type TextureAtlas } from '@esotericsoftware/spine-core';
|
|
2
|
+
/**
|
|
3
|
+
* Binary (.skel) skeleton exports — a separate package entry point.
|
|
4
|
+
*
|
|
5
|
+
* `SkeletonBinary` is a second parser, and every consumer that imports it
|
|
6
|
+
* carries it. Branching inside `loadSkeletonJson` would put it in the bundle
|
|
7
|
+
* of every loader user, including the ones who only ever read JSON, so the
|
|
8
|
+
* split is at the module boundary instead: this file is reachable only as
|
|
9
|
+
* `spine-html/binary`, and `src/index.ts` must never re-export it.
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { loadAtlasAssets } from 'spine-html';
|
|
13
|
+
* import { loadSkeletonBinary } from 'spine-html/binary';
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* There is no one-call `loadSkeletonAssetsBinary`. The seam `loadAtlasAssets`
|
|
17
|
+
* introduced is the API: the atlas half is done once, and a skeleton read is
|
|
18
|
+
* one call against it, whichever format it is in. A one-call sugar for binary
|
|
19
|
+
* would only re-hide the atlas half that shared-atlas callers need exposed.
|
|
20
|
+
*/
|
|
21
|
+
export interface LoadSkeletonBinaryOptions {
|
|
22
|
+
/** SkeletonBinary.scale — scales the skeleton as it is read. */
|
|
23
|
+
scale?: number;
|
|
24
|
+
/** fetch implementation, for custom headers or a test double. */
|
|
25
|
+
fetch?: typeof globalThis.fetch;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Reads one skeleton binary export against already-loaded atlas assets — the
|
|
29
|
+
* exact mirror of `loadSkeletonJson`, for `.skel` instead of `.json`.
|
|
30
|
+
*
|
|
31
|
+
* ```ts
|
|
32
|
+
* const shared = await loadAtlasAssets({ atlasUrl: '/spineboy/spineboy.atlas' });
|
|
33
|
+
* const data = await loadSkeletonBinary(shared, '/spineboy/spineboy-pro.skel');
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* `assets` needs nothing but a parsed atlas with its page textures attached,
|
|
37
|
+
* so a caller on the low-level path can pass its own `{ atlas }`. Ownership
|
|
38
|
+
* stays with the caller: this never disposes `assets`, whether it succeeds or
|
|
39
|
+
* throws, because the same assets normally back several skeletons.
|
|
40
|
+
*
|
|
41
|
+
* Binary exports are version-locked to the runtime that reads them: a `.skel`
|
|
42
|
+
* written by a Spine editor newer than the installed `@esotericsoftware/spine-core`
|
|
43
|
+
* fails here, in the read, not in the fetch.
|
|
44
|
+
*/
|
|
45
|
+
export declare function loadSkeletonBinary(assets: {
|
|
46
|
+
atlas: TextureAtlas;
|
|
47
|
+
}, skeletonUrl: string, options?: LoadSkeletonBinaryOptions): Promise<SkeletonData>;
|
|
48
|
+
//# sourceMappingURL=binary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,YAAY,EAClB,MAAM,8BAA8B,CAAC;AAGtC;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,yBAAyB;IACxC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,EAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,YAAY,CAAC,CAMvB"}
|
package/dist/binary.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { AtlasAttachmentLoader, SkeletonBinary, } from '@esotericsoftware/spine-core';
|
|
2
|
+
import { fetchBytes } from './loadAtlasAssets.js';
|
|
3
|
+
/**
|
|
4
|
+
* Reads one skeleton binary export against already-loaded atlas assets — the
|
|
5
|
+
* exact mirror of `loadSkeletonJson`, for `.skel` instead of `.json`.
|
|
6
|
+
*
|
|
7
|
+
* ```ts
|
|
8
|
+
* const shared = await loadAtlasAssets({ atlasUrl: '/spineboy/spineboy.atlas' });
|
|
9
|
+
* const data = await loadSkeletonBinary(shared, '/spineboy/spineboy-pro.skel');
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* `assets` needs nothing but a parsed atlas with its page textures attached,
|
|
13
|
+
* so a caller on the low-level path can pass its own `{ atlas }`. Ownership
|
|
14
|
+
* stays with the caller: this never disposes `assets`, whether it succeeds or
|
|
15
|
+
* throws, because the same assets normally back several skeletons.
|
|
16
|
+
*
|
|
17
|
+
* Binary exports are version-locked to the runtime that reads them: a `.skel`
|
|
18
|
+
* written by a Spine editor newer than the installed `@esotericsoftware/spine-core`
|
|
19
|
+
* fails here, in the read, not in the fetch.
|
|
20
|
+
*/
|
|
21
|
+
export async function loadSkeletonBinary(assets, skeletonUrl, options = {}) {
|
|
22
|
+
const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
23
|
+
const bytes = await fetchBytes(fetchImpl, skeletonUrl);
|
|
24
|
+
const binary = new SkeletonBinary(new AtlasAttachmentLoader(assets.atlas));
|
|
25
|
+
if (options.scale !== undefined)
|
|
26
|
+
binary.scale = options.scale;
|
|
27
|
+
return binary.readSkeletonData(bytes);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=binary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAErB,cAAc,GAEf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AA6BlD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAA+B,EAC/B,WAAmB,EACnB,UAAqC,EAAE;IAEvC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC9D,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { SpineHtmlRenderer, type MeshBackend } from './SpineHtmlRenderer';
|
|
2
|
-
export { DomTexture, revokeRegions, unpackRegions, type RegionImage } from './DomTexture';
|
|
3
|
-
export {
|
|
1
|
+
export { SpineHtmlRenderer, type MeshBackend } from './SpineHtmlRenderer.js';
|
|
2
|
+
export { DomTexture, revokeRegions, unpackRegions, type RegionImage } from './DomTexture.js';
|
|
3
|
+
export { type AtlasAssets, loadAtlasAssets, type LoadAtlasAssetsOptions, } from './loadAtlasAssets.js';
|
|
4
|
+
export { loadSkeletonAssets, type LoadSkeletonAssetsOptions, loadSkeletonJson, type LoadSkeletonJsonOptions, type SkeletonAssets, } from './loadSkeletonAssets.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EACL,KAAK,WAAW,EAChB,eAAe,EACf,KAAK,sBAAsB,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { SpineHtmlRenderer } from './SpineHtmlRenderer';
|
|
2
|
-
export { DomTexture, revokeRegions, unpackRegions } from './DomTexture';
|
|
3
|
-
export {
|
|
1
|
+
export { SpineHtmlRenderer } from './SpineHtmlRenderer.js';
|
|
2
|
+
export { DomTexture, revokeRegions, unpackRegions } from './DomTexture.js';
|
|
3
|
+
export { loadAtlasAssets, } from './loadAtlasAssets.js';
|
|
4
|
+
export { loadSkeletonAssets, loadSkeletonJson, } from './loadSkeletonAssets.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAoB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAEL,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,kBAAkB,EAElB,gBAAgB,GAGjB,MAAM,yBAAyB,CAAC"}
|