distark-render 1.1.10 → 1.1.11

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 (156) hide show
  1. package/README.md +0 -0
  2. package/assets/tank.json +0 -0
  3. package/dist/cli/animate.d.ts +0 -0
  4. package/dist/cli/animate.d.ts.map +0 -0
  5. package/dist/cli/animate.js +0 -0
  6. package/dist/cli/animate.js.map +0 -0
  7. package/dist/cli/diff.d.ts +0 -0
  8. package/dist/cli/diff.d.ts.map +0 -0
  9. package/dist/cli/diff.js +0 -0
  10. package/dist/cli/diff.js.map +0 -0
  11. package/dist/cli/distark-check.d.ts +0 -0
  12. package/dist/cli/distark-check.d.ts.map +0 -0
  13. package/dist/cli/distark-check.js +16 -16
  14. package/dist/cli/distark-check.js.map +0 -0
  15. package/dist/cli/query.d.ts +0 -0
  16. package/dist/cli/query.d.ts.map +0 -0
  17. package/dist/cli/query.js +0 -0
  18. package/dist/cli/query.js.map +0 -0
  19. package/dist/cli/record.d.ts +0 -0
  20. package/dist/cli/record.d.ts.map +0 -0
  21. package/dist/cli/record.js +0 -0
  22. package/dist/cli/record.js.map +0 -0
  23. package/dist/cli/render.d.ts +0 -0
  24. package/dist/cli/render.d.ts.map +0 -0
  25. package/dist/cli/render.js +0 -0
  26. package/dist/cli/render.js.map +0 -0
  27. package/dist/cli/scene.d.ts +2 -12
  28. package/dist/cli/scene.d.ts.map +1 -1
  29. package/dist/cli/scene.js +4 -235
  30. package/dist/cli/scene.js.map +1 -1
  31. package/dist/cli/shared.d.ts +0 -0
  32. package/dist/cli/shared.d.ts.map +0 -0
  33. package/dist/cli/shared.js +0 -0
  34. package/dist/cli/shared.js.map +0 -0
  35. package/dist/cli/test.d.ts +0 -0
  36. package/dist/cli/test.d.ts.map +0 -0
  37. package/dist/cli/test.js +0 -0
  38. package/dist/cli/test.js.map +0 -0
  39. package/dist/cli/verify.d.ts +0 -0
  40. package/dist/cli/verify.d.ts.map +0 -0
  41. package/dist/cli/verify.js +0 -0
  42. package/dist/cli/verify.js.map +0 -0
  43. package/dist/modules/adapters/p5Renderer.d.ts +0 -0
  44. package/dist/modules/adapters/p5Renderer.d.ts.map +1 -1
  45. package/dist/modules/adapters/p5Renderer.js +40 -17
  46. package/dist/modules/adapters/p5Renderer.js.map +1 -1
  47. package/dist/modules/adapters/skiaRenderer.d.ts +2 -0
  48. package/dist/modules/adapters/skiaRenderer.d.ts.map +1 -1
  49. package/dist/modules/adapters/skiaRenderer.js +47 -16
  50. package/dist/modules/adapters/skiaRenderer.js.map +1 -1
  51. package/dist/modules/animationDiff.d.ts +0 -0
  52. package/dist/modules/animationDiff.d.ts.map +0 -0
  53. package/dist/modules/animationDiff.js +0 -0
  54. package/dist/modules/animationDiff.js.map +0 -0
  55. package/dist/modules/browserSceneRenderer.d.ts +0 -0
  56. package/dist/modules/browserSceneRenderer.d.ts.map +0 -0
  57. package/dist/modules/browserSceneRenderer.js +0 -0
  58. package/dist/modules/browserSceneRenderer.js.map +0 -0
  59. package/dist/modules/eyeSystem.d.ts +0 -0
  60. package/dist/modules/eyeSystem.d.ts.map +0 -0
  61. package/dist/modules/eyeSystem.js +0 -0
  62. package/dist/modules/eyeSystem.js.map +0 -0
  63. package/dist/modules/imageLoad.d.ts +22 -8
  64. package/dist/modules/imageLoad.d.ts.map +1 -1
  65. package/dist/modules/imageLoad.js +203 -78
  66. package/dist/modules/imageLoad.js.map +1 -1
  67. package/dist/modules/mouthSystem.d.ts +0 -0
  68. package/dist/modules/mouthSystem.d.ts.map +0 -0
  69. package/dist/modules/mouthSystem.js +0 -0
  70. package/dist/modules/mouthSystem.js.map +0 -0
  71. package/dist/modules/renderRig.d.ts +0 -0
  72. package/dist/modules/renderRig.d.ts.map +1 -1
  73. package/dist/modules/renderRig.js +52 -4
  74. package/dist/modules/renderRig.js.map +1 -1
  75. package/dist/modules/sceneRenderer.d.ts +2 -1
  76. package/dist/modules/sceneRenderer.d.ts.map +1 -1
  77. package/dist/modules/sceneRenderer.js +9 -6
  78. package/dist/modules/sceneRenderer.js.map +1 -1
  79. package/dist/tests/helpers.d.ts +0 -0
  80. package/dist/tests/helpers.d.ts.map +0 -0
  81. package/dist/tests/helpers.js +0 -0
  82. package/dist/tests/helpers.js.map +0 -0
  83. package/dist/tests/test-animation-diff-rendering.d.ts +0 -0
  84. package/dist/tests/test-animation-diff-rendering.d.ts.map +0 -0
  85. package/dist/tests/test-animation-diff-rendering.js +0 -0
  86. package/dist/tests/test-animation-diff-rendering.js.map +0 -0
  87. package/dist/tests/test-animation-diff.d.ts +0 -0
  88. package/dist/tests/test-animation-diff.d.ts.map +0 -0
  89. package/dist/tests/test-animation-diff.js +0 -0
  90. package/dist/tests/test-animation-diff.js.map +0 -0
  91. package/dist/tests/test-autofit.d.ts +0 -0
  92. package/dist/tests/test-autofit.d.ts.map +0 -0
  93. package/dist/tests/test-autofit.js +0 -0
  94. package/dist/tests/test-autofit.js.map +0 -0
  95. package/dist/tests/test-base-autofit.d.ts +0 -0
  96. package/dist/tests/test-base-autofit.d.ts.map +0 -0
  97. package/dist/tests/test-base-autofit.js +0 -0
  98. package/dist/tests/test-base-autofit.js.map +0 -0
  99. package/dist/tests/test-browser-scene.d.ts +0 -0
  100. package/dist/tests/test-browser-scene.d.ts.map +0 -0
  101. package/dist/tests/test-browser-scene.js +0 -0
  102. package/dist/tests/test-browser-scene.js.map +0 -0
  103. package/dist/tests/test-cli.d.ts +0 -0
  104. package/dist/tests/test-cli.d.ts.map +0 -0
  105. package/dist/tests/test-cli.js +0 -0
  106. package/dist/tests/test-cli.js.map +0 -0
  107. package/dist/tests/test-image-loading.d.ts +0 -0
  108. package/dist/tests/test-image-loading.d.ts.map +0 -0
  109. package/dist/tests/test-image-loading.js +0 -0
  110. package/dist/tests/test-image-loading.js.map +0 -0
  111. package/dist/tests/test-joint-movement.d.ts +0 -0
  112. package/dist/tests/test-joint-movement.d.ts.map +0 -0
  113. package/dist/tests/test-joint-movement.js +0 -0
  114. package/dist/tests/test-joint-movement.js.map +0 -0
  115. package/dist/tests/test-p5-image-types.d.ts +0 -0
  116. package/dist/tests/test-p5-image-types.d.ts.map +0 -0
  117. package/dist/tests/test-p5-image-types.js +0 -0
  118. package/dist/tests/test-p5-image-types.js.map +0 -0
  119. package/dist/tests/test-render-cache-visual.d.ts +0 -0
  120. package/dist/tests/test-render-cache-visual.d.ts.map +0 -0
  121. package/dist/tests/test-render-cache-visual.js +0 -0
  122. package/dist/tests/test-render-cache-visual.js.map +0 -0
  123. package/dist/tests/test-render-cache.d.ts +0 -0
  124. package/dist/tests/test-render-cache.d.ts.map +0 -0
  125. package/dist/tests/test-render-cache.js +0 -0
  126. package/dist/tests/test-render-cache.js.map +0 -0
  127. package/dist/tests/test-scene-object-svg-rerasterization.d.ts +2 -0
  128. package/dist/tests/test-scene-object-svg-rerasterization.d.ts.map +1 -0
  129. package/dist/tests/test-scene-object-svg-rerasterization.js +86 -0
  130. package/dist/tests/test-scene-object-svg-rerasterization.js.map +1 -0
  131. package/dist/tests/test-scene.d.ts +0 -0
  132. package/dist/tests/test-scene.d.ts.map +0 -0
  133. package/dist/tests/test-scene.js +0 -0
  134. package/dist/tests/test-scene.js.map +0 -0
  135. package/dist/tests/test-skia.d.ts +0 -0
  136. package/dist/tests/test-skia.d.ts.map +0 -0
  137. package/dist/tests/test-skia.js +0 -0
  138. package/dist/tests/test-skia.js.map +0 -0
  139. package/dist/tests/test-svg-rerasterization.d.ts +2 -0
  140. package/dist/tests/test-svg-rerasterization.d.ts.map +1 -0
  141. package/dist/tests/test-svg-rerasterization.js +97 -0
  142. package/dist/tests/test-svg-rerasterization.js.map +1 -0
  143. package/dist/tests/test-torso-pivot.d.ts +0 -0
  144. package/dist/tests/test-torso-pivot.d.ts.map +0 -0
  145. package/dist/tests/test-torso-pivot.js +0 -0
  146. package/dist/tests/test-torso-pivot.js.map +0 -0
  147. package/dist/tests/test-visual-verification.d.ts +0 -0
  148. package/dist/tests/test-visual-verification.d.ts.map +0 -0
  149. package/dist/tests/test-visual-verification.js +0 -0
  150. package/dist/tests/test-visual-verification.js.map +0 -0
  151. package/dist/types.d.ts +0 -0
  152. package/dist/types.d.ts.map +0 -0
  153. package/dist/types.js +0 -0
  154. package/dist/types.js.map +0 -0
  155. package/package.json +1 -1
  156. package/assets/presets/jumping-jack.json +0 -194
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test-scene-object-svg-rerasterization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-scene-object-svg-rerasterization.d.ts","sourceRoot":"","sources":["../../tests/test-scene-object-svg-rerasterization.ts"],"names":[],"mappings":""}
@@ -0,0 +1,86 @@
1
+ import { SceneEngine } from '../modules/sceneRenderer.js';
2
+ import { SkiaImageLoader } from '../modules/adapters/skiaRenderer.js';
3
+ import { assert, printSummary } from './helpers.js';
4
+ class FakeContext {
5
+ constructor() {
6
+ this.drawCalls = [];
7
+ }
8
+ save() { }
9
+ restore() { }
10
+ translate() { }
11
+ rotate() { }
12
+ drawImage(img, _x, _y, width, height) {
13
+ this.drawCalls.push({ img, width, height });
14
+ }
15
+ }
16
+ class FakeObjectLoader extends SkiaImageLoader {
17
+ constructor() {
18
+ super('http://example.test');
19
+ }
20
+ async loadImageAsync(key, _imageData) {
21
+ const cached = this.getCachedImage(key);
22
+ if (cached) {
23
+ return cached;
24
+ }
25
+ const initialRaster = { width: 24, height: 24, key: 'initial' };
26
+ this.attachSvgMetadata(initialRaster, '<svg width="24" height="24"></svg>', 24, 24, 24, 24);
27
+ this.cacheImage(key, initialRaster);
28
+ return initialRaster;
29
+ }
30
+ async createSvgCanvas(svgSource, targetWidth, targetHeight) {
31
+ const upgradedRaster = {
32
+ width: targetWidth,
33
+ height: targetHeight,
34
+ key: `upgraded-${targetWidth}x${targetHeight}`,
35
+ };
36
+ this.attachSvgMetadata(upgradedRaster, svgSource, 24, 24, targetWidth, targetHeight);
37
+ return upgradedRaster;
38
+ }
39
+ }
40
+ async function main() {
41
+ console.log('\n=== Scene Object SVG Re-rasterization Tests ===\n');
42
+ const world = { scene: { background: null }, characters: [], objects: [], timeline: [] };
43
+ const engine = new SceneEngine(world, {});
44
+ const loader = new FakeObjectLoader();
45
+ engine.objectImageLoader = loader;
46
+ engine.objectLoadedImages = {};
47
+ const ctx = new FakeContext();
48
+ const objectSource = 'data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%3E%3C%2Fsvg%3E';
49
+ await engine.drawWorldObject(ctx, {
50
+ id: 'prop',
51
+ frontImage: objectSource,
52
+ xCoor: 100,
53
+ yCoor: 100,
54
+ width: 24,
55
+ height: 24,
56
+ });
57
+ const initialAsset = ctx.drawCalls[0]?.img;
58
+ assert(initialAsset?.key === 'initial', 'Initial object draw uses the first cached SVG raster');
59
+ await engine.drawWorldObject(ctx, {
60
+ id: 'prop',
61
+ frontImage: objectSource,
62
+ xCoor: 100,
63
+ yCoor: 100,
64
+ width: 25,
65
+ height: 25,
66
+ });
67
+ assert(ctx.drawCalls[1]?.img === initialAsset, 'First upscale draw uses the current raster while an upgrade is requested');
68
+ await loader.waitForPendingImageUpgrades();
69
+ await engine.drawWorldObject(ctx, {
70
+ id: 'prop',
71
+ frontImage: objectSource,
72
+ xCoor: 100,
73
+ yCoor: 100,
74
+ width: 25,
75
+ height: 25,
76
+ });
77
+ const upgradedAsset = ctx.drawCalls[2]?.img;
78
+ assert(upgradedAsset !== initialAsset, 'Later object draw swaps to the regenerated SVG raster');
79
+ assert(upgradedAsset?.width >= 25 && upgradedAsset?.height >= 25, 'Any object upscale immediately regenerates a larger SVG raster');
80
+ printSummary();
81
+ }
82
+ main().catch((error) => {
83
+ console.error(error);
84
+ process.exit(1);
85
+ });
86
+ //# sourceMappingURL=test-scene-object-svg-rerasterization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-scene-object-svg-rerasterization.js","sourceRoot":"","sources":["../../tests/test-scene-object-svg-rerasterization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW;IAAjB;QACW,cAAS,GAAuD,EAAE,CAAC;IAU9E,CAAC;IARG,IAAI,KAAU,CAAC;IACf,OAAO,KAAU,CAAC;IAClB,SAAS,KAAU,CAAC;IACpB,MAAM,KAAU,CAAC;IAEjB,SAAS,CAAC,GAAQ,EAAE,EAAU,EAAE,EAAU,EAAE,KAAa,EAAE,MAAc;QACrE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;CACJ;AAED,MAAM,gBAAiB,SAAQ,eAAe;IAC1C;QACI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACjC,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,UAAkB;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACT,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,aAAa,GAAwB,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QACrF,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,oCAAoC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACpC,OAAO,aAAa,CAAC;IACzB,CAAC;IAEkB,KAAK,CAAC,eAAe,CACpC,SAAiB,EACjB,WAAmB,EACnB,YAAoB;QAEpB,MAAM,cAAc,GAAwB;YACxC,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,YAAY;YACpB,GAAG,EAAE,YAAY,WAAW,IAAI,YAAY,EAAE;SACjD,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACrF,OAAO,cAAc,CAAC;IAC1B,CAAC;CACJ;AAED,KAAK,UAAU,IAAI;IACf,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAc,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACpG,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACrC,MAAc,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAC1C,MAAc,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAExC,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,+FAA+F,CAAC;IAErH,MAAO,MAAc,CAAC,eAAe,CAAC,GAAG,EAAE;QACvC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,YAAY;QACxB,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;KACb,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC3C,MAAM,CAAC,YAAY,EAAE,GAAG,KAAK,SAAS,EAAE,sDAAsD,CAAC,CAAC;IAEhG,MAAO,MAAc,CAAC,eAAe,CAAC,GAAG,EAAE;QACvC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,YAAY;QACxB,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;KACb,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,YAAY,EAAE,0EAA0E,CAAC,CAAC;IAE3H,MAAM,MAAM,CAAC,2BAA2B,EAAE,CAAC;IAE3C,MAAO,MAAc,CAAC,eAAe,CAAC,GAAG,EAAE;QACvC,EAAE,EAAE,MAAM;QACV,UAAU,EAAE,YAAY;QACxB,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;KACb,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5C,MAAM,CAAC,aAAa,KAAK,YAAY,EAAE,uDAAuD,CAAC,CAAC;IAChG,MAAM,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE,IAAI,aAAa,EAAE,MAAM,IAAI,EAAE,EAAE,gEAAgE,CAAC,CAAC;IAEpI,YAAY,EAAE,CAAC;AACnB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test-svg-rerasterization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-svg-rerasterization.d.ts","sourceRoot":"","sources":["../../tests/test-svg-rerasterization.ts"],"names":[],"mappings":""}
@@ -0,0 +1,97 @@
1
+ import { CharacterRigRenderer } from '../modules/renderRig.js';
2
+ import { ImageLoader } from '../modules/imageLoad.js';
3
+ import { assert, printSummary } from './helpers.js';
4
+ class FakeCanvasContext {
5
+ clearRect() { }
6
+ drawImage() { }
7
+ }
8
+ class FakeRasterCanvas {
9
+ constructor() {
10
+ this.width = 0;
11
+ this.height = 0;
12
+ }
13
+ getContext(kind) {
14
+ return kind === '2d' ? new FakeCanvasContext() : null;
15
+ }
16
+ }
17
+ class MockImage {
18
+ constructor() {
19
+ this.width = 0;
20
+ this.height = 0;
21
+ this.onload = null;
22
+ this.onerror = null;
23
+ this.crossOrigin = '';
24
+ }
25
+ set src(_value) {
26
+ setTimeout(() => {
27
+ this.width = 10;
28
+ this.height = 10;
29
+ this.onload?.();
30
+ }, 0);
31
+ }
32
+ }
33
+ function makeSvgDataUrl() {
34
+ const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" fill="black" /></svg>`;
35
+ return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`;
36
+ }
37
+ function makeRig(svgPath, torsoWidth, torsoHeight) {
38
+ return {
39
+ imagePaths: {
40
+ torso: svgPath,
41
+ },
42
+ dimensionValues: {
43
+ torso: { width: torsoWidth, height: torsoHeight },
44
+ },
45
+ rotationValues: {},
46
+ selfRotationValues: {},
47
+ pivotPoints: {
48
+ root_torso: { x: 0, y: 0 },
49
+ },
50
+ zIndexValues: {
51
+ torso: 1,
52
+ },
53
+ };
54
+ }
55
+ async function main() {
56
+ console.log('\n=== SVG Re-rasterization Tests ===\n');
57
+ globalThis.document = {
58
+ createElement(tag) {
59
+ if (tag !== 'canvas') {
60
+ throw new Error(`Unexpected element creation: ${tag}`);
61
+ }
62
+ return new FakeRasterCanvas();
63
+ }
64
+ };
65
+ globalThis.Image = MockImage;
66
+ const svgPath = makeSvgDataUrl();
67
+ const loader = new ImageLoader('http://example.test');
68
+ const renderer = new CharacterRigRenderer(loader);
69
+ const smallRig = makeRig(svgPath, 24, 24);
70
+ const loadedImages = await loader.loadAllRigImages(smallRig, false);
71
+ const initialAsset = loadedImages[svgPath];
72
+ assert(!!initialAsset?.__distarkSvgSource, 'Initial SVG asset keeps original SVG source');
73
+ assert(initialAsset?.width === 24 && initialAsset?.height === 24, 'Initial SVG raster matches initial rendered size');
74
+ const largeRig = makeRig(svgPath, 25, 25);
75
+ const firstLargeRender = renderer.computeCharacterRigData(largeRig, {
76
+ canvasWidth: 400,
77
+ canvasHeight: 400,
78
+ loadedImages,
79
+ });
80
+ assert(firstLargeRender.objects[0]?.imageData === initialAsset, 'Upscale request initially uses current cached raster while upgrade is pending');
81
+ await loader.waitForPendingImageUpgrades();
82
+ const upgradedAsset = loadedImages[svgPath];
83
+ assert(upgradedAsset !== initialAsset, 'Upscaling swaps in a regenerated SVG raster asset');
84
+ assert(upgradedAsset?.width >= 25 && upgradedAsset?.height >= 25, 'Any upscale immediately regenerates a larger SVG raster');
85
+ const secondLargeRender = renderer.computeCharacterRigData(largeRig, {
86
+ canvasWidth: 400,
87
+ canvasHeight: 400,
88
+ loadedImages,
89
+ });
90
+ assert(secondLargeRender.objects[0]?.imageData === upgradedAsset, 'Subsequent renders use the upgraded SVG raster');
91
+ printSummary();
92
+ }
93
+ main().catch((error) => {
94
+ console.error(error);
95
+ process.exit(1);
96
+ });
97
+ //# sourceMappingURL=test-svg-rerasterization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-svg-rerasterization.js","sourceRoot":"","sources":["../../tests/test-svg-rerasterization.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/types.d.ts CHANGED
File without changes
File without changes
package/dist/types.js CHANGED
File without changes
package/dist/types.js.map CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "distark-render",
3
- "version": "1.1.10",
3
+ "version": "1.1.11",
4
4
  "description": "Rendering-agnostic character rig system with TypeScript",
5
5
  "type": "module",
6
6
  "main": "./dist/modules/renderRig.js",
@@ -1,194 +0,0 @@
1
- [
2
- {
3
- "rotationValues": {
4
- "leftUpperArm": -3.141593,
5
- "rightUpperArm": 3.141593,
6
- "leftThigh": -3.141593,
7
- "rightThigh": 3.141593
8
- }
9
- },
10
- {
11
- "rotationValues": {
12
- "leftUpperArm": -3.325734,
13
- "rightUpperArm": 3.325734,
14
- "leftThigh": -3.088003,
15
- "rightThigh": 3.088003
16
- }
17
- },
18
- {
19
- "rotationValues": {
20
- "leftUpperArm": -3.828816,
21
- "rightUpperArm": 3.828816,
22
- "leftThigh": -2.941593,
23
- "rightThigh": 2.941593
24
- }
25
- },
26
- {
27
- "rotationValues": {
28
- "leftUpperArm": -4.516039,
29
- "rightUpperArm": 4.516039,
30
- "leftThigh": -2.741593,
31
- "rightThigh": 2.741593
32
- }
33
- },
34
- {
35
- "rotationValues": {
36
- "leftUpperArm": -5.203263,
37
- "rightUpperArm": 5.203263,
38
- "leftThigh": -2.541593,
39
- "rightThigh": 2.541593
40
- }
41
- },
42
- {
43
- "rotationValues": {
44
- "leftUpperArm": -5.706345,
45
- "rightUpperArm": 5.706345,
46
- "leftThigh": -2.395182,
47
- "rightThigh": 2.395182
48
- }
49
- },
50
- {
51
- "rotationValues": {
52
- "leftUpperArm": -5.890486,
53
- "rightUpperArm": 5.890486,
54
- "leftThigh": -2.341593,
55
- "rightThigh": 2.341593
56
- }
57
- },
58
- {
59
- "rotationValues": {
60
- "leftUpperArm": -5.706345,
61
- "rightUpperArm": 5.706345,
62
- "leftThigh": -2.395182,
63
- "rightThigh": 2.395182
64
- }
65
- },
66
- {
67
- "rotationValues": {
68
- "leftUpperArm": -5.203263,
69
- "rightUpperArm": 5.203263,
70
- "leftThigh": -2.541593,
71
- "rightThigh": 2.541593
72
- }
73
- },
74
- {
75
- "rotationValues": {
76
- "leftUpperArm": -4.516039,
77
- "rightUpperArm": 4.516039,
78
- "leftThigh": -2.741593,
79
- "rightThigh": 2.741593
80
- }
81
- },
82
- {
83
- "rotationValues": {
84
- "leftUpperArm": -3.828816,
85
- "rightUpperArm": 3.828816,
86
- "leftThigh": -2.941593,
87
- "rightThigh": 2.941593
88
- }
89
- },
90
- {
91
- "rotationValues": {
92
- "leftUpperArm": -3.325734,
93
- "rightUpperArm": 3.325734,
94
- "leftThigh": -3.088003,
95
- "rightThigh": 3.088003
96
- }
97
- },
98
- {
99
- "rotationValues": {
100
- "leftUpperArm": -3.141593,
101
- "rightUpperArm": 3.141593,
102
- "leftThigh": -3.141593,
103
- "rightThigh": 3.141593
104
- }
105
- },
106
- {
107
- "rotationValues": {
108
- "leftUpperArm": -3.325734,
109
- "rightUpperArm": 3.325734,
110
- "leftThigh": -3.088003,
111
- "rightThigh": 3.088003
112
- }
113
- },
114
- {
115
- "rotationValues": {
116
- "leftUpperArm": -3.828816,
117
- "rightUpperArm": 3.828816,
118
- "leftThigh": -2.941593,
119
- "rightThigh": 2.941593
120
- }
121
- },
122
- {
123
- "rotationValues": {
124
- "leftUpperArm": -4.516039,
125
- "rightUpperArm": 4.516039,
126
- "leftThigh": -2.741593,
127
- "rightThigh": 2.741593
128
- }
129
- },
130
- {
131
- "rotationValues": {
132
- "leftUpperArm": -5.203263,
133
- "rightUpperArm": 5.203263,
134
- "leftThigh": -2.541593,
135
- "rightThigh": 2.541593
136
- }
137
- },
138
- {
139
- "rotationValues": {
140
- "leftUpperArm": -5.706345,
141
- "rightUpperArm": 5.706345,
142
- "leftThigh": -2.395182,
143
- "rightThigh": 2.395182
144
- }
145
- },
146
- {
147
- "rotationValues": {
148
- "leftUpperArm": -5.890486,
149
- "rightUpperArm": 5.890486,
150
- "leftThigh": -2.341593,
151
- "rightThigh": 2.341593
152
- }
153
- },
154
- {
155
- "rotationValues": {
156
- "leftUpperArm": -5.706345,
157
- "rightUpperArm": 5.706345,
158
- "leftThigh": -2.395182,
159
- "rightThigh": 2.395182
160
- }
161
- },
162
- {
163
- "rotationValues": {
164
- "leftUpperArm": -5.203263,
165
- "rightUpperArm": 5.203263,
166
- "leftThigh": -2.541593,
167
- "rightThigh": 2.541593
168
- }
169
- },
170
- {
171
- "rotationValues": {
172
- "leftUpperArm": -4.516039,
173
- "rightUpperArm": 4.516039,
174
- "leftThigh": -2.741593,
175
- "rightThigh": 2.741593
176
- }
177
- },
178
- {
179
- "rotationValues": {
180
- "leftUpperArm": -3.828816,
181
- "rightUpperArm": 3.828816,
182
- "leftThigh": -2.941593,
183
- "rightThigh": 2.941593
184
- }
185
- },
186
- {
187
- "rotationValues": {
188
- "leftUpperArm": -3.325734,
189
- "rightUpperArm": 3.325734,
190
- "leftThigh": -3.088003,
191
- "rightThigh": 3.088003
192
- }
193
- }
194
- ]