distark-render 1.1.11 → 1.1.12
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/README.md +0 -0
- package/assets/presets/jumping-jack.json +194 -0
- package/assets/tank.json +0 -0
- package/dist/cli/animate.d.ts +0 -0
- package/dist/cli/animate.d.ts.map +0 -0
- package/dist/cli/animate.js +0 -0
- package/dist/cli/animate.js.map +0 -0
- package/dist/cli/diff.d.ts +0 -0
- package/dist/cli/diff.d.ts.map +0 -0
- package/dist/cli/diff.js +0 -0
- package/dist/cli/diff.js.map +0 -0
- package/dist/cli/distark-check.d.ts +0 -0
- package/dist/cli/distark-check.d.ts.map +0 -0
- package/dist/cli/distark-check.js +16 -16
- package/dist/cli/distark-check.js.map +0 -0
- package/dist/cli/query.d.ts +0 -0
- package/dist/cli/query.d.ts.map +0 -0
- package/dist/cli/query.js +0 -0
- package/dist/cli/query.js.map +0 -0
- package/dist/cli/record.d.ts +0 -0
- package/dist/cli/record.d.ts.map +0 -0
- package/dist/cli/record.js +0 -0
- package/dist/cli/record.js.map +0 -0
- package/dist/cli/render.d.ts +0 -0
- package/dist/cli/render.d.ts.map +0 -0
- package/dist/cli/render.js +0 -0
- package/dist/cli/render.js.map +0 -0
- package/dist/cli/scene.d.ts +12 -2
- package/dist/cli/scene.d.ts.map +1 -1
- package/dist/cli/scene.js +235 -4
- package/dist/cli/scene.js.map +1 -1
- package/dist/cli/shared.d.ts +0 -0
- package/dist/cli/shared.d.ts.map +0 -0
- package/dist/cli/shared.js +0 -0
- package/dist/cli/shared.js.map +0 -0
- package/dist/cli/test.d.ts +0 -0
- package/dist/cli/test.d.ts.map +0 -0
- package/dist/cli/test.js +0 -0
- package/dist/cli/test.js.map +0 -0
- package/dist/cli/verify.d.ts +0 -0
- package/dist/cli/verify.d.ts.map +0 -0
- package/dist/cli/verify.js +0 -0
- package/dist/cli/verify.js.map +0 -0
- package/dist/modules/adapters/p5Renderer.d.ts +0 -0
- package/dist/modules/adapters/p5Renderer.d.ts.map +1 -1
- package/dist/modules/adapters/p5Renderer.js +17 -40
- package/dist/modules/adapters/p5Renderer.js.map +1 -1
- package/dist/modules/adapters/skiaRenderer.d.ts +0 -2
- package/dist/modules/adapters/skiaRenderer.d.ts.map +1 -1
- package/dist/modules/adapters/skiaRenderer.js +16 -47
- package/dist/modules/adapters/skiaRenderer.js.map +1 -1
- package/dist/modules/animationDiff.d.ts +0 -0
- package/dist/modules/animationDiff.d.ts.map +0 -0
- package/dist/modules/animationDiff.js +0 -0
- package/dist/modules/animationDiff.js.map +0 -0
- package/dist/modules/browserSceneRenderer.d.ts +0 -0
- package/dist/modules/browserSceneRenderer.d.ts.map +0 -0
- package/dist/modules/browserSceneRenderer.js +0 -0
- package/dist/modules/browserSceneRenderer.js.map +0 -0
- package/dist/modules/characterValidator.d.ts +41 -0
- package/dist/modules/characterValidator.d.ts.map +1 -0
- package/dist/modules/characterValidator.js +233 -0
- package/dist/modules/characterValidator.js.map +1 -0
- package/dist/modules/eyeSystem.d.ts +0 -0
- package/dist/modules/eyeSystem.d.ts.map +0 -0
- package/dist/modules/eyeSystem.js +0 -0
- package/dist/modules/eyeSystem.js.map +0 -0
- package/dist/modules/imageLoad.d.ts +8 -22
- package/dist/modules/imageLoad.d.ts.map +1 -1
- package/dist/modules/imageLoad.js +78 -203
- package/dist/modules/imageLoad.js.map +1 -1
- package/dist/modules/mouthSystem.d.ts +0 -0
- package/dist/modules/mouthSystem.d.ts.map +0 -0
- package/dist/modules/mouthSystem.js +0 -0
- package/dist/modules/mouthSystem.js.map +0 -0
- package/dist/modules/renderRig.d.ts +0 -0
- package/dist/modules/renderRig.d.ts.map +1 -1
- package/dist/modules/renderRig.js +4 -52
- package/dist/modules/renderRig.js.map +1 -1
- package/dist/modules/sceneRenderer.d.ts +1 -2
- package/dist/modules/sceneRenderer.d.ts.map +1 -1
- package/dist/modules/sceneRenderer.js +6 -9
- package/dist/modules/sceneRenderer.js.map +1 -1
- package/dist/tests/helpers.d.ts +0 -0
- package/dist/tests/helpers.d.ts.map +0 -0
- package/dist/tests/helpers.js +0 -0
- package/dist/tests/helpers.js.map +0 -0
- package/dist/tests/test-animation-diff-rendering.d.ts +0 -0
- package/dist/tests/test-animation-diff-rendering.d.ts.map +0 -0
- package/dist/tests/test-animation-diff-rendering.js +0 -0
- package/dist/tests/test-animation-diff-rendering.js.map +0 -0
- package/dist/tests/test-animation-diff.d.ts +0 -0
- package/dist/tests/test-animation-diff.d.ts.map +0 -0
- package/dist/tests/test-animation-diff.js +0 -0
- package/dist/tests/test-animation-diff.js.map +0 -0
- package/dist/tests/test-autofit.d.ts +0 -0
- package/dist/tests/test-autofit.d.ts.map +0 -0
- package/dist/tests/test-autofit.js +0 -0
- package/dist/tests/test-autofit.js.map +0 -0
- package/dist/tests/test-base-autofit.d.ts +0 -0
- package/dist/tests/test-base-autofit.d.ts.map +0 -0
- package/dist/tests/test-base-autofit.js +0 -0
- package/dist/tests/test-base-autofit.js.map +0 -0
- package/dist/tests/test-browser-scene.d.ts +0 -0
- package/dist/tests/test-browser-scene.d.ts.map +0 -0
- package/dist/tests/test-browser-scene.js +0 -0
- package/dist/tests/test-browser-scene.js.map +0 -0
- package/dist/tests/test-character-validator.d.ts +8 -0
- package/dist/tests/test-character-validator.d.ts.map +1 -0
- package/dist/tests/test-character-validator.js +445 -0
- package/dist/tests/test-character-validator.js.map +1 -0
- package/dist/tests/test-cli.d.ts +0 -0
- package/dist/tests/test-cli.d.ts.map +0 -0
- package/dist/tests/test-cli.js +0 -0
- package/dist/tests/test-cli.js.map +0 -0
- package/dist/tests/test-image-loading.d.ts +0 -0
- package/dist/tests/test-image-loading.d.ts.map +0 -0
- package/dist/tests/test-image-loading.js +0 -0
- package/dist/tests/test-image-loading.js.map +0 -0
- package/dist/tests/test-joint-movement.d.ts +0 -0
- package/dist/tests/test-joint-movement.d.ts.map +0 -0
- package/dist/tests/test-joint-movement.js +0 -0
- package/dist/tests/test-joint-movement.js.map +0 -0
- package/dist/tests/test-p5-image-types.d.ts +0 -0
- package/dist/tests/test-p5-image-types.d.ts.map +0 -0
- package/dist/tests/test-p5-image-types.js +0 -0
- package/dist/tests/test-p5-image-types.js.map +0 -0
- package/dist/tests/test-render-cache-visual.d.ts +0 -0
- package/dist/tests/test-render-cache-visual.d.ts.map +0 -0
- package/dist/tests/test-render-cache-visual.js +0 -0
- package/dist/tests/test-render-cache-visual.js.map +0 -0
- package/dist/tests/test-render-cache.d.ts +0 -0
- package/dist/tests/test-render-cache.d.ts.map +0 -0
- package/dist/tests/test-render-cache.js +0 -0
- package/dist/tests/test-render-cache.js.map +0 -0
- package/dist/tests/test-scene.d.ts +0 -0
- package/dist/tests/test-scene.d.ts.map +0 -0
- package/dist/tests/test-scene.js +0 -0
- package/dist/tests/test-scene.js.map +0 -0
- package/dist/tests/test-skia.d.ts +0 -0
- package/dist/tests/test-skia.d.ts.map +0 -0
- package/dist/tests/test-skia.js +0 -0
- package/dist/tests/test-skia.js.map +0 -0
- package/dist/tests/test-torso-pivot.d.ts +0 -0
- package/dist/tests/test-torso-pivot.d.ts.map +0 -0
- package/dist/tests/test-torso-pivot.js +0 -0
- package/dist/tests/test-torso-pivot.js.map +0 -0
- package/dist/tests/test-visual-verification.d.ts +0 -0
- package/dist/tests/test-visual-verification.d.ts.map +0 -0
- package/dist/tests/test-visual-verification.js +0 -0
- package/dist/tests/test-visual-verification.js.map +0 -0
- package/dist/types.d.ts +0 -0
- package/dist/types.d.ts.map +0 -0
- package/dist/types.js +0 -0
- package/dist/types.js.map +0 -0
- package/package.json +7 -1
- package/dist/tests/test-scene-object-svg-rerasterization.d.ts +0 -2
- package/dist/tests/test-scene-object-svg-rerasterization.d.ts.map +0 -1
- package/dist/tests/test-scene-object-svg-rerasterization.js +0 -86
- package/dist/tests/test-scene-object-svg-rerasterization.js.map +0 -1
- package/dist/tests/test-svg-rerasterization.d.ts +0 -2
- package/dist/tests/test-svg-rerasterization.d.ts.map +0 -1
- package/dist/tests/test-svg-rerasterization.js +0 -97
- package/dist/tests/test-svg-rerasterization.js.map +0 -1
|
@@ -1,86 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-scene-object-svg-rerasterization.js","sourceRoot":"","sources":["../../tests/test-scene-object-svg-rerasterization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-svg-rerasterization.d.ts","sourceRoot":"","sources":["../../tests/test-svg-rerasterization.ts"],"names":[],"mappings":""}
|
|
@@ -1,97 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-svg-rerasterization.js","sourceRoot":"","sources":["../../tests/test-svg-rerasterization.ts"],"names":[],"mappings":"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"}
|