@codexo/exojs 0.12.0 → 0.13.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.
Files changed (101) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/dist/esm/core/BuildInfo.js +2 -2
  3. package/dist/esm/extensions/Extension.d.ts +39 -7
  4. package/dist/esm/extensions/Extension.d.ts.map +1 -1
  5. package/dist/esm/extensions/ExtensionRegistry.d.ts.map +1 -1
  6. package/dist/esm/extensions/ExtensionRegistry.js.map +1 -1
  7. package/dist/esm/extensions/snapshot.d.ts +12 -2
  8. package/dist/esm/extensions/snapshot.d.ts.map +1 -1
  9. package/dist/esm/extensions/snapshot.js +43 -14
  10. package/dist/esm/extensions/snapshot.js.map +1 -1
  11. package/dist/esm/index.js +8 -0
  12. package/dist/esm/index.js.map +1 -1
  13. package/dist/esm/rendering/Drawable.d.ts +23 -0
  14. package/dist/esm/rendering/Drawable.d.ts.map +1 -1
  15. package/dist/esm/rendering/Drawable.js +34 -0
  16. package/dist/esm/rendering/Drawable.js.map +1 -1
  17. package/dist/esm/rendering/coreRendererBindings.d.ts.map +1 -1
  18. package/dist/esm/rendering/coreRendererBindings.js +22 -0
  19. package/dist/esm/rendering/coreRendererBindings.js.map +1 -1
  20. package/dist/esm/rendering/index.d.ts +13 -0
  21. package/dist/esm/rendering/index.d.ts.map +1 -1
  22. package/dist/esm/rendering/pixelSnap.d.ts +219 -0
  23. package/dist/esm/rendering/pixelSnap.d.ts.map +1 -0
  24. package/dist/esm/rendering/pixelSnap.js +186 -0
  25. package/dist/esm/rendering/pixelSnap.js.map +1 -0
  26. package/dist/esm/rendering/plan/RenderPlanPlayer.d.ts.map +1 -1
  27. package/dist/esm/rendering/plan/RenderPlanPlayer.js +21 -1
  28. package/dist/esm/rendering/plan/RenderPlanPlayer.js.map +1 -1
  29. package/dist/esm/rendering/sprite/NineSliceSprite.d.ts +69 -0
  30. package/dist/esm/rendering/sprite/NineSliceSprite.d.ts.map +1 -0
  31. package/dist/esm/rendering/sprite/NineSliceSprite.js +207 -0
  32. package/dist/esm/rendering/sprite/NineSliceSprite.js.map +1 -0
  33. package/dist/esm/rendering/sprite/RepeatingSprite.d.ts +120 -0
  34. package/dist/esm/rendering/sprite/RepeatingSprite.d.ts.map +1 -0
  35. package/dist/esm/rendering/sprite/RepeatingSprite.js +279 -0
  36. package/dist/esm/rendering/sprite/RepeatingSprite.js.map +1 -0
  37. package/dist/esm/rendering/sprite/Sprite.d.ts +13 -0
  38. package/dist/esm/rendering/sprite/Sprite.d.ts.map +1 -1
  39. package/dist/esm/rendering/sprite/Sprite.js +23 -0
  40. package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
  41. package/dist/esm/rendering/sprite/nineSlice.d.ts +53 -0
  42. package/dist/esm/rendering/sprite/nineSlice.d.ts.map +1 -0
  43. package/dist/esm/rendering/sprite/nineSlice.js +340 -0
  44. package/dist/esm/rendering/sprite/nineSlice.js.map +1 -0
  45. package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts +57 -0
  46. package/dist/esm/rendering/sprite/repeatingSpritePlan.d.ts.map +1 -0
  47. package/dist/esm/rendering/sprite/repeatingSpritePlan.js +156 -0
  48. package/dist/esm/rendering/sprite/repeatingSpritePlan.js.map +1 -0
  49. package/dist/esm/rendering/texture/TextureRegion.d.ts +100 -0
  50. package/dist/esm/rendering/texture/TextureRegion.d.ts.map +1 -0
  51. package/dist/esm/rendering/texture/TextureRegion.js +144 -0
  52. package/dist/esm/rendering/texture/TextureRegion.js.map +1 -0
  53. package/dist/esm/rendering/texture/repeat.d.ts +96 -0
  54. package/dist/esm/rendering/texture/repeat.d.ts.map +1 -0
  55. package/dist/esm/rendering/texture/repeat.js +158 -0
  56. package/dist/esm/rendering/texture/repeat.js.map +1 -0
  57. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +20 -0
  58. package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts.map +1 -1
  59. package/dist/esm/rendering/webgl2/WebGl2Backend.js +31 -2
  60. package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
  61. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts +32 -0
  62. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.d.ts.map +1 -0
  63. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js +308 -0
  64. package/dist/esm/rendering/webgl2/WebGl2NineSliceSpriteRenderer.js.map +1 -0
  65. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts +49 -0
  66. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.d.ts.map +1 -0
  67. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js +535 -0
  68. package/dist/esm/rendering/webgl2/WebGl2RepeatingSpriteRenderer.js.map +1 -0
  69. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts +9 -0
  70. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.d.ts.map +1 -1
  71. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js +22 -2
  72. package/dist/esm/rendering/webgl2/WebGl2SpriteRenderer.js.map +1 -1
  73. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +21 -1
  74. package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts.map +1 -1
  75. package/dist/esm/rendering/webgpu/WebGpuBackend.js +29 -2
  76. package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
  77. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts +36 -0
  78. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.d.ts.map +1 -0
  79. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js +358 -0
  80. package/dist/esm/rendering/webgpu/WebGpuNineSliceSpriteRenderer.js.map +1 -0
  81. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts +52 -0
  82. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.d.ts.map +1 -0
  83. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js +556 -0
  84. package/dist/esm/rendering/webgpu/WebGpuRepeatingSpriteRenderer.js.map +1 -0
  85. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts +9 -0
  86. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.d.ts.map +1 -1
  87. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js +22 -2
  88. package/dist/esm/rendering/webgpu/WebGpuSpriteRenderer.js.map +1 -1
  89. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts +3 -2
  90. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.d.ts.map +1 -1
  91. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js +4 -4
  92. package/dist/esm/rendering/webgpu/WebGpuTransformStorage.js.map +1 -1
  93. package/dist/esm/rendering.d.ts +1 -0
  94. package/dist/esm/rendering.d.ts.map +1 -1
  95. package/dist/esm/resources/Loader.d.ts +36 -8
  96. package/dist/esm/resources/Loader.d.ts.map +1 -1
  97. package/dist/esm/resources/Loader.js +30 -11
  98. package/dist/esm/resources/Loader.js.map +1 -1
  99. package/dist/exo.esm.js +3449 -59
  100. package/dist/exo.esm.js.map +1 -1
  101. package/package.json +10 -3
@@ -2,6 +2,7 @@ import { Interval } from '../../math/Interval.js';
2
2
  import { Rectangle } from '../../math/Rectangle.js';
3
3
  import { Vector } from '../../math/Vector.js';
4
4
  import { Drawable } from '../Drawable.js';
5
+ import { buildPixelSnapContext, snapBoundsInto } from '../pixelSnap.js';
5
6
  import { RenderNode } from '../RenderNode.js';
6
7
 
7
8
  /**
@@ -118,6 +119,28 @@ class Sprite extends Drawable {
118
119
  }
119
120
  return this._vertices;
120
121
  }
122
+ /**
123
+ * Local-space quad bounds for the active pass, written into `out`. In
124
+ * `'geometry'` pixel-snap mode (and only when the combined node+view transform
125
+ * is axis-aligned) the quad edges are snapped to the render target's
126
+ * device-pixel grid via the shared {@link snapLocalBoundary} helper — combined
127
+ * with the device-snapped origin from the transform seam, all four corners
128
+ * land on whole device pixels. The logical local bounds (used by collision /
129
+ * `getBounds`) are never changed. Returns the unsnapped local bounds for
130
+ * `'none'`/`'position'` or under a rotation/skew downgrade.
131
+ * @internal
132
+ */
133
+ getRenderBounds(view, targetPxWidth, targetPxHeight, out) {
134
+ const base = this.getLocalBounds();
135
+ if (this.pixelSnapMode !== 'geometry') {
136
+ return base;
137
+ }
138
+ const ctx = buildPixelSnapContext(this.getGlobalTransform(), view, targetPxWidth, targetPxHeight);
139
+ if (!ctx.axisAligned) {
140
+ return base;
141
+ }
142
+ return snapBoundsInto(base, ctx, out);
143
+ }
121
144
  /**
122
145
  * Packed UV coordinates for the four quad corners, encoded as two
123
146
  * 16-bit fixed-point values per element (low 16 bits = U, high 16 bits = V,
@@ -1 +1 @@
1
- {"version":3,"file":"Sprite.js","sources":["../../../../../src/rendering/sprite/Sprite.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Sprite.js","sources":["../../../../../src/rendering/sprite/Sprite.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { RepeatFit, RepeatMode } from '#rendering/texture/repeat';
2
+ import type { TextureRegion } from '#rendering/texture/TextureRegion';
3
+ /** Source-space or destination-space per-edge insets. @stable */
4
+ export interface NineSliceInsets {
5
+ readonly left: number;
6
+ readonly top: number;
7
+ readonly right: number;
8
+ readonly bottom: number;
9
+ }
10
+ /** Per-section fill mode overrides for a nine-slice sprite. @stable */
11
+ export interface NineSliceModes {
12
+ readonly edges?: RepeatMode;
13
+ readonly center?: RepeatMode;
14
+ readonly top?: RepeatMode;
15
+ readonly right?: RepeatMode;
16
+ readonly bottom?: RepeatMode;
17
+ readonly left?: RepeatMode;
18
+ readonly edgeFit?: RepeatFit;
19
+ readonly centerFit?: RepeatFit;
20
+ }
21
+ /** Constructor options for {@link NineSliceSprite}. @stable */
22
+ export interface NineSliceOptions {
23
+ readonly slices: number | Partial<NineSliceInsets>;
24
+ readonly border?: number | Partial<NineSliceInsets>;
25
+ readonly width?: number;
26
+ readonly height?: number;
27
+ readonly modes?: NineSliceModes;
28
+ }
29
+ /** A single rendered sub-quad produced by the nine-slice geometry builder. @internal */
30
+ export interface NineSliceQuad {
31
+ readonly x0: number;
32
+ readonly y0: number;
33
+ readonly x1: number;
34
+ readonly y1: number;
35
+ readonly u0: number;
36
+ readonly v0: number;
37
+ readonly u1: number;
38
+ readonly v1: number;
39
+ }
40
+ export declare function validateSlices(slices: NineSliceInsets, regionWidth: number, regionHeight: number): void;
41
+ export declare function validateBorder(border: NineSliceInsets): void;
42
+ /** Normalise a uniform number or partial insets object into a full {@link NineSliceInsets}. */
43
+ export declare function normalizeInsets(value: number | Partial<NineSliceInsets>, fallback?: NineSliceInsets): NineSliceInsets;
44
+ export declare function normalizeModes(modes: NineSliceModes | undefined): Readonly<NineSliceModes>;
45
+ export declare function equalInsets(a: Readonly<NineSliceInsets>, b: Readonly<NineSliceInsets>): boolean;
46
+ export declare function equalModes(a: Readonly<NineSliceModes>, b: Readonly<NineSliceModes>): boolean;
47
+ /**
48
+ * Build the list of quads that collectively render a nine-slice sprite at the
49
+ * requested destination size. Called lazily by {@link NineSliceSprite}.
50
+ * @internal
51
+ */
52
+ export declare function buildNineSliceQuads(region: TextureRegion, slices: NineSliceInsets, border: NineSliceInsets, width: number, height: number, modes: Readonly<NineSliceModes> | undefined): NineSliceQuad[];
53
+ //# sourceMappingURL=nineSlice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nineSlice.d.ts","sourceRoot":"","sources":["../../../../src/rendering/sprite/nineSlice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,340 @@
1
+ import { planRepeat } from '../texture/repeat.js';
2
+
3
+ const halfTexelInset = 0.5;
4
+ // ---------------------------------------------------------------------------
5
+ // Validation helpers (module-private)
6
+ // ---------------------------------------------------------------------------
7
+ function isFiniteNumber(value) {
8
+ return typeof value === 'number' && Number.isFinite(value);
9
+ }
10
+ function validateSlices(slices, regionWidth, regionHeight) {
11
+ const { left, top, right, bottom } = slices;
12
+ if (!isFiniteNumber(left) || !isFiniteNumber(top) ||
13
+ !isFiniteNumber(right) || !isFiniteNumber(bottom)) {
14
+ throw new Error(`NineSliceSprite: slice values must be finite numbers (got left=${left}, top=${top}, right=${right}, bottom=${bottom}).`);
15
+ }
16
+ if (left < 0 || top < 0 || right < 0 || bottom < 0) {
17
+ throw new Error(`NineSliceSprite: slice values must be non-negative (got left=${left}, top=${top}, right=${right}, bottom=${bottom}).`);
18
+ }
19
+ if (left + right > regionWidth) {
20
+ throw new Error(`NineSliceSprite: slices.left (${left}) + slices.right (${right}) exceeds region width (${regionWidth}).`);
21
+ }
22
+ if (top + bottom > regionHeight) {
23
+ throw new Error(`NineSliceSprite: slices.top (${top}) + slices.bottom (${bottom}) exceeds region height (${regionHeight}).`);
24
+ }
25
+ }
26
+ function validateBorder(border) {
27
+ const { left, top, right, bottom } = border;
28
+ if (!isFiniteNumber(left) || !isFiniteNumber(top) ||
29
+ !isFiniteNumber(right) || !isFiniteNumber(bottom)) {
30
+ throw new Error(`NineSliceSprite: border values must be finite numbers (got left=${left}, top=${top}, right=${right}, bottom=${bottom}).`);
31
+ }
32
+ if (left < 0 || top < 0 || right < 0 || bottom < 0) {
33
+ throw new Error(`NineSliceSprite: border values must be non-negative (got left=${left}, top=${top}, right=${right}, bottom=${bottom}).`);
34
+ }
35
+ }
36
+ // ---------------------------------------------------------------------------
37
+ // Normalization helpers (module-private)
38
+ // ---------------------------------------------------------------------------
39
+ /** Normalise a uniform number or partial insets object into a full {@link NineSliceInsets}. */
40
+ function normalizeInsets(value, fallback) {
41
+ if (typeof value === 'number') {
42
+ return Object.freeze({ left: value, top: value, right: value, bottom: value });
43
+ }
44
+ return Object.freeze({
45
+ left: value.left ?? fallback?.left ?? 0,
46
+ top: value.top ?? fallback?.top ?? 0,
47
+ right: value.right ?? fallback?.right ?? 0,
48
+ bottom: value.bottom ?? fallback?.bottom ?? 0,
49
+ });
50
+ }
51
+ const validRepeatModes = new Set(['stretch', 'repeat', 'mirror-repeat']);
52
+ const validRepeatFits = new Set(['clip', 'round']);
53
+ function validateModeField(value, label) {
54
+ if (typeof value !== 'string' || !validRepeatModes.has(value)) {
55
+ throw new Error(`NineSliceSprite: ${label} must be "stretch", "repeat", or "mirror-repeat".`);
56
+ }
57
+ }
58
+ function validateFitField(value, label) {
59
+ if (typeof value !== 'string' || !validRepeatFits.has(value)) {
60
+ throw new Error(`NineSliceSprite: ${label} must be "clip" or "round".`);
61
+ }
62
+ }
63
+ function normalizeModes(modes) {
64
+ if (!modes) {
65
+ return _defaultModes;
66
+ }
67
+ const normalized = {};
68
+ if (modes.edges !== undefined) {
69
+ validateModeField(modes.edges, 'modes.edges');
70
+ normalized.edges = modes.edges;
71
+ }
72
+ if (modes.center !== undefined) {
73
+ validateModeField(modes.center, 'modes.center');
74
+ normalized.center = modes.center;
75
+ }
76
+ if (modes.top !== undefined) {
77
+ validateModeField(modes.top, 'modes.top');
78
+ normalized.top = modes.top;
79
+ }
80
+ if (modes.right !== undefined) {
81
+ validateModeField(modes.right, 'modes.right');
82
+ normalized.right = modes.right;
83
+ }
84
+ if (modes.bottom !== undefined) {
85
+ validateModeField(modes.bottom, 'modes.bottom');
86
+ normalized.bottom = modes.bottom;
87
+ }
88
+ if (modes.left !== undefined) {
89
+ validateModeField(modes.left, 'modes.left');
90
+ normalized.left = modes.left;
91
+ }
92
+ if (modes.edgeFit !== undefined) {
93
+ validateFitField(modes.edgeFit, 'modes.edgeFit');
94
+ normalized.edgeFit = modes.edgeFit;
95
+ }
96
+ if (modes.centerFit !== undefined) {
97
+ validateFitField(modes.centerFit, 'modes.centerFit');
98
+ normalized.centerFit = modes.centerFit;
99
+ }
100
+ return Object.freeze(normalized);
101
+ }
102
+ const _defaultModes = Object.freeze({});
103
+ function equalInsets(a, b) {
104
+ return a.left === b.left && a.top === b.top && a.right === b.right && a.bottom === b.bottom;
105
+ }
106
+ function equalModes(a, b) {
107
+ return a.edges === b.edges
108
+ && a.center === b.center
109
+ && a.top === b.top
110
+ && a.right === b.right
111
+ && a.bottom === b.bottom
112
+ && a.left === b.left
113
+ && a.edgeFit === b.edgeFit
114
+ && a.centerFit === b.centerFit;
115
+ }
116
+ // ---------------------------------------------------------------------------
117
+ // Mode resolution helpers (module-private)
118
+ // ---------------------------------------------------------------------------
119
+ function resolveEdgeMode(modes, side) {
120
+ return modes?.[side] ?? modes?.edges ?? 'stretch';
121
+ }
122
+ function resolveCenterMode(modes) {
123
+ return modes?.center ?? 'stretch';
124
+ }
125
+ function resolveEdgeFit(modes) {
126
+ return modes?.edgeFit ?? 'round';
127
+ }
128
+ function resolveCenterFit(modes) {
129
+ return modes?.centerFit ?? 'round';
130
+ }
131
+ /**
132
+ * Compute exact per-slice UV boundaries from source pixel positions.
133
+ *
134
+ * Source-slice boundaries correspond to actual pixel coordinates:
135
+ * left bound = region.x + slices.left
136
+ * right bound = region.x + region.width - slices.right
137
+ * top bound = region.y + slices.top
138
+ * bottom bound = region.y + region.height - slices.bottom
139
+ *
140
+ * A half-texel inset is applied at internal boundaries to prevent bilinear
141
+ * filtering from sampling across slice seams. Outer boundaries use the full
142
+ * region UV range when extrusion is present, or a half-texel inset otherwise.
143
+ */
144
+ function computeSliceUvGrid(region, slices) {
145
+ const tw = region.texture.width;
146
+ const th = region.texture.height;
147
+ const rx = region.x;
148
+ const ry = region.y;
149
+ const rw = region.width;
150
+ const rh = region.height;
151
+ const ext = region.extrusion;
152
+ // Outer boundary insets: use extrusion if available, otherwise half-texel.
153
+ const outerInsetU = ext.left > 0 || ext.right > 0
154
+ ? 0
155
+ : halfTexelInset / tw;
156
+ const outerInsetV = ext.top > 0 || ext.bottom > 0
157
+ ? 0
158
+ : halfTexelInset / th;
159
+ // Inner slice boundary insets: always apply half-texel to prevent
160
+ // bilinear bleed across internal slice seams.
161
+ const innerInsetU = halfTexelInset / tw;
162
+ const innerInsetV = halfTexelInset / th;
163
+ // Exact source pixel boundaries in UV space
164
+ const uLeftBound = (rx + slices.left) / tw;
165
+ const uRightBound = (rx + rw - slices.right) / tw;
166
+ const vTopBound = (ry + slices.top) / th;
167
+ const vBottomBound = (ry + rh - slices.bottom) / th;
168
+ // Outer UV bounds (possibly inset)
169
+ const uOuter0 = region.u0 + outerInsetU;
170
+ const uOuter1 = region.u1 - outerInsetU;
171
+ const vOuter0 = region.v0 + outerInsetV;
172
+ const vOuter1 = region.v1 - outerInsetV;
173
+ // Clamp internal boundaries to prevent UV inversion on narrow cells
174
+ const u1 = clampUv(uLeftBound - innerInsetU, uOuter0, uOuter1);
175
+ const u2 = clampUv(uRightBound + innerInsetU, uOuter0, uOuter1);
176
+ const v1 = clampUv(vTopBound - innerInsetV, vOuter0, vOuter1);
177
+ const v2 = clampUv(vBottomBound + innerInsetV, vOuter0, vOuter1);
178
+ return {
179
+ col0: { u0: uOuter0, u1 },
180
+ col1: { u0: u1, u1: u2 },
181
+ col2: { u0: u2, u1: uOuter1 },
182
+ row0: { u0: vOuter0, u1: v1 },
183
+ row1: { u0: v1, u1: v2 },
184
+ row2: { u0: v2, u1: vOuter1 },
185
+ };
186
+ }
187
+ function clampUv(value, min, max) {
188
+ if (!isFiniteNumber(value) || value < min)
189
+ return min;
190
+ if (value > max)
191
+ return max;
192
+ return value;
193
+ }
194
+ function compressBorders(border, width, height) {
195
+ let bl = border.left;
196
+ let br = border.right;
197
+ let bt = border.top;
198
+ let bb = border.bottom;
199
+ if (bl + br > width && bl + br > 0) {
200
+ const k = width / (bl + br);
201
+ bl *= k;
202
+ br *= k;
203
+ }
204
+ if (bt + bb > height && bt + bb > 0) {
205
+ const k = height / (bt + bb);
206
+ bt *= k;
207
+ bb *= k;
208
+ }
209
+ return { bl, br, bt, bb };
210
+ }
211
+ // ---------------------------------------------------------------------------
212
+ // Geometry builder
213
+ // ---------------------------------------------------------------------------
214
+ /**
215
+ * Build the list of quads that collectively render a nine-slice sprite at the
216
+ * requested destination size. Called lazily by {@link NineSliceSprite}.
217
+ * @internal
218
+ */
219
+ function buildNineSliceQuads(region, slices, border, width, height, modes) {
220
+ const uvGrid = computeSliceUvGrid(region, slices);
221
+ const compressed = compressBorders(border, width, height);
222
+ const bl = compressed.bl;
223
+ const br = compressed.br;
224
+ const bt = compressed.bt;
225
+ const bb = compressed.bb;
226
+ const centerW = Math.max(0, width - bl - br);
227
+ const centerH = Math.max(0, height - bt - bb);
228
+ const dx0 = 0;
229
+ const dx1 = bl;
230
+ const dx2 = bl + centerW;
231
+ const dx3 = width;
232
+ const dy0 = 0;
233
+ const dy1 = bt;
234
+ const dy2 = bt + centerH;
235
+ const dy3 = height;
236
+ const srcEdgeW = Math.max(0, region.width - slices.left - slices.right);
237
+ const srcEdgeH = Math.max(0, region.height - slices.top - slices.bottom);
238
+ const topScale = slices.top > 0 ? bt / slices.top : 1;
239
+ const bottomScale = slices.bottom > 0 ? bb / slices.bottom : 1;
240
+ const leftScale = slices.left > 0 ? bl / slices.left : 1;
241
+ const rightScale = slices.right > 0 ? br / slices.right : 1;
242
+ const topNativeW = srcEdgeW * topScale;
243
+ const bottomNativeW = srcEdgeW * bottomScale;
244
+ const leftNativeH = srcEdgeH * leftScale;
245
+ const rightNativeH = srcEdgeH * rightScale;
246
+ const centerNativeW = topNativeW;
247
+ const centerNativeH = leftNativeH;
248
+ const topMode = resolveEdgeMode(modes, 'top');
249
+ const bottomMode = resolveEdgeMode(modes, 'bottom');
250
+ const leftMode = resolveEdgeMode(modes, 'left');
251
+ const rightMode = resolveEdgeMode(modes, 'right');
252
+ const centerMode = resolveCenterMode(modes);
253
+ const edgeFit = resolveEdgeFit(modes);
254
+ const centerFit = resolveCenterFit(modes);
255
+ const quads = [];
256
+ const { col0, col1, col2, row0, row1, row2 } = uvGrid;
257
+ // Corners
258
+ if (bl > 0 && bt > 0) {
259
+ quads.push({ x0: dx0, y0: dy0, x1: dx1, y1: dy1, u0: col0.u0, v0: row0.u0, u1: col0.u1, v1: row0.u1 });
260
+ }
261
+ if (br > 0 && bt > 0) {
262
+ quads.push({ x0: dx2, y0: dy0, x1: dx3, y1: dy1, u0: col2.u0, v0: row0.u0, u1: col2.u1, v1: row0.u1 });
263
+ }
264
+ if (bl > 0 && bb > 0) {
265
+ quads.push({ x0: dx0, y0: dy2, x1: dx1, y1: dy3, u0: col0.u0, v0: row2.u0, u1: col0.u1, v1: row2.u1 });
266
+ }
267
+ if (br > 0 && bb > 0) {
268
+ quads.push({ x0: dx2, y0: dy2, x1: dx3, y1: dy3, u0: col2.u0, v0: row2.u0, u1: col2.u1, v1: row2.u1 });
269
+ }
270
+ const col1U0 = col1.u0;
271
+ const col1U1 = col1.u1;
272
+ const row1U0 = row1.u0;
273
+ const row1U1 = row1.u1;
274
+ // Top edge
275
+ if (centerW > 0 && bt > 0 && srcEdgeW > 0 && topNativeW > 0) {
276
+ const plan = planRepeat(topNativeW, centerW, topMode, edgeFit);
277
+ for (const seg of plan.segments) {
278
+ const qx0 = dx1 + seg.destinationStart;
279
+ const qx1 = dx1 + seg.destinationStart + seg.destinationLength;
280
+ const qu0 = col1U0 + seg.sourceStart * (col1U1 - col1U0);
281
+ const qu1 = col1U0 + seg.sourceEnd * (col1U1 - col1U0);
282
+ quads.push({ x0: qx0, y0: dy0, x1: qx1, y1: dy1, u0: qu0, v0: row0.u0, u1: qu1, v1: row0.u1 });
283
+ }
284
+ }
285
+ // Bottom edge
286
+ if (centerW > 0 && bb > 0 && srcEdgeW > 0 && bottomNativeW > 0) {
287
+ const plan = planRepeat(bottomNativeW, centerW, bottomMode, edgeFit);
288
+ for (const seg of plan.segments) {
289
+ const qx0 = dx1 + seg.destinationStart;
290
+ const qx1 = dx1 + seg.destinationStart + seg.destinationLength;
291
+ const qu0 = col1U0 + seg.sourceStart * (col1U1 - col1U0);
292
+ const qu1 = col1U0 + seg.sourceEnd * (col1U1 - col1U0);
293
+ quads.push({ x0: qx0, y0: dy2, x1: qx1, y1: dy3, u0: qu0, v0: row2.u0, u1: qu1, v1: row2.u1 });
294
+ }
295
+ }
296
+ // Left edge
297
+ if (bl > 0 && centerH > 0 && srcEdgeH > 0 && leftNativeH > 0) {
298
+ const plan = planRepeat(leftNativeH, centerH, leftMode, edgeFit);
299
+ for (const seg of plan.segments) {
300
+ const qy0 = dy1 + seg.destinationStart;
301
+ const qy1 = dy1 + seg.destinationStart + seg.destinationLength;
302
+ const qv0 = row1U0 + seg.sourceStart * (row1U1 - row1U0);
303
+ const qv1 = row1U0 + seg.sourceEnd * (row1U1 - row1U0);
304
+ quads.push({ x0: dx0, y0: qy0, x1: dx1, y1: qy1, u0: col0.u0, v0: qv0, u1: col0.u1, v1: qv1 });
305
+ }
306
+ }
307
+ // Right edge
308
+ if (br > 0 && centerH > 0 && srcEdgeH > 0 && rightNativeH > 0) {
309
+ const plan = planRepeat(rightNativeH, centerH, rightMode, edgeFit);
310
+ for (const seg of plan.segments) {
311
+ const qy0 = dy1 + seg.destinationStart;
312
+ const qy1 = dy1 + seg.destinationStart + seg.destinationLength;
313
+ const qv0 = row1U0 + seg.sourceStart * (row1U1 - row1U0);
314
+ const qv1 = row1U0 + seg.sourceEnd * (row1U1 - row1U0);
315
+ quads.push({ x0: dx2, y0: qy0, x1: dx3, y1: qy1, u0: col2.u0, v0: qv0, u1: col2.u1, v1: qv1 });
316
+ }
317
+ }
318
+ // Center
319
+ if (centerW > 0 && centerH > 0 && srcEdgeW > 0 && srcEdgeH > 0 && centerNativeW > 0 && centerNativeH > 0) {
320
+ const planX = planRepeat(centerNativeW, centerW, centerMode, centerFit);
321
+ const planY = planRepeat(centerNativeH, centerH, centerMode, centerFit);
322
+ for (const segY of planY.segments) {
323
+ const qy0 = dy1 + segY.destinationStart;
324
+ const qy1 = dy1 + segY.destinationStart + segY.destinationLength;
325
+ const qv0 = row1U0 + segY.sourceStart * (row1U1 - row1U0);
326
+ const qv1 = row1U0 + segY.sourceEnd * (row1U1 - row1U0);
327
+ for (const segX of planX.segments) {
328
+ const qx0 = dx1 + segX.destinationStart;
329
+ const qx1 = dx1 + segX.destinationStart + segX.destinationLength;
330
+ const qu0 = col1U0 + segX.sourceStart * (col1U1 - col1U0);
331
+ const qu1 = col1U0 + segX.sourceEnd * (col1U1 - col1U0);
332
+ quads.push({ x0: qx0, y0: qy0, x1: qx1, y1: qy1, u0: qu0, v0: qv0, u1: qu1, v1: qv1 });
333
+ }
334
+ }
335
+ }
336
+ return quads;
337
+ }
338
+
339
+ export { buildNineSliceQuads, equalInsets, equalModes, normalizeInsets, normalizeModes, validateBorder, validateSlices };
340
+ //# sourceMappingURL=nineSlice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nineSlice.js","sources":["../../../../../src/rendering/sprite/nineSlice.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { RepeatFit, RepeatMode } from '#rendering/texture/repeat';
2
+ import type { TextureRegion } from '#rendering/texture/TextureRegion';
3
+ /** Constructor options for {@link RepeatingSprite}. @stable */
4
+ export interface RepeatingSpriteOptions {
5
+ /** Destination width in local units. Defaults to source width. */
6
+ readonly width?: number;
7
+ /** Destination height in local units. Defaults to source height. */
8
+ readonly height?: number;
9
+ /** Horizontal repeat mode. Default: `'repeat'`. */
10
+ readonly modeX?: RepeatMode;
11
+ /** Vertical repeat mode. Default: `'repeat'`. */
12
+ readonly modeY?: RepeatMode;
13
+ /** How the horizontal repeat fits the destination span. Default: `'round'`. */
14
+ readonly fitX?: RepeatFit;
15
+ /** How the vertical repeat fits the destination span. Default: `'round'`. */
16
+ readonly fitY?: RepeatFit;
17
+ /** Horizontal scroll offset in source-pixel units. Default: `0`. */
18
+ readonly offsetX?: number;
19
+ /** Vertical scroll offset in source-pixel units. Default: `0`. */
20
+ readonly offsetY?: number;
21
+ }
22
+ /** A single rendered sub-quad produced by the repeating-sprite geometry builder. @internal */
23
+ export interface RepeatingSpriteQuad {
24
+ readonly x0: number;
25
+ readonly y0: number;
26
+ readonly x1: number;
27
+ readonly y1: number;
28
+ readonly u0: number;
29
+ readonly v0: number;
30
+ readonly u1: number;
31
+ readonly v1: number;
32
+ }
33
+ export declare function validateSizeInput(width: number, height: number): void;
34
+ export declare function validateMode(mode: unknown, label: string): void;
35
+ export declare function validateFit(fit: unknown, label: string): void;
36
+ export declare function validateOffset(value: number, label: string): void;
37
+ /**
38
+ * Compute the UV tiling scale for the standalone shader path.
39
+ *
40
+ * Returns how many times the source repeats across the destination span.
41
+ * - `stretch`: always 1.0
42
+ * - `repeat`/`mirror-repeat` + `round`: nearest integer count (≥ 1)
43
+ * - `repeat`/`mirror-repeat` + `clip`: exact fraction `destLen / srcLen`
44
+ * @internal
45
+ */
46
+ export declare function computeShaderTiling(srcLen: number, destLen: number, mode: RepeatMode, fit: RepeatFit): number;
47
+ /**
48
+ * Build the geometry quads for the atlas-region repeat path.
49
+ *
50
+ * Runs {@link planRepeat} independently on both X and Y axes with optional
51
+ * phase offsets, then generates the Cartesian-product quad list. Each quad
52
+ * carries UV coordinates clamped inside the region's UV bounds, with
53
+ * extrusion-aware outer insets.
54
+ * @internal
55
+ */
56
+ export declare function buildRepeatingSpriteQuads(region: TextureRegion, width: number, height: number, modeX: RepeatMode, modeY: RepeatMode, fitX: RepeatFit, fitY: RepeatFit, offsetX: number, offsetY: number): RepeatingSpriteQuad[];
57
+ //# sourceMappingURL=repeatingSpritePlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repeatingSpritePlan.d.ts","sourceRoot":"","sources":["../../../../src/rendering/sprite/repeatingSpritePlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AAEtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAEtE,+DAA+D;AAC/D,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,8FAA8F;AAC9F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AASD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAYrE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAM/D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAM7D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMjE;AAMD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,SAAS,GACb,MAAM,CAQR;AAQD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,mBAAmB,EAAE,CA4CvB"}