@openbraininstitute/morphoviewer 0.25.2 → 0.25.4
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 +12 -0
- package/lib/dist/components/button-reset-camera/button-reset-camera.d.ts.map +1 -1
- package/lib/dist/components/button-reset-camera/button-reset-camera.js +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.js +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/camera.js +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +9 -11
- package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/manager.js +176 -196
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts +2 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.js +8 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.js +20 -19
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts +4 -0
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map +1 -1
- package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +28 -14
- package/lib/dist/components/morpho-viewer-small-circuit/types.d.ts +1 -0
- package/lib/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -1
- package/lib/dist/package.json +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -32,6 +32,18 @@ Copyright (c) 2025 Open Brain Institute
|
|
|
32
32
|
|
|
33
33
|
## Release notes
|
|
34
34
|
|
|
35
|
+
### v0.25.4
|
|
36
|
+
|
|
37
|
+
- Fix **event listener leak** in `MorphoViewerSmallCircuit` camera adaptation: the paint event listener was never removed, causing infinite re-registration on each paint cycle
|
|
38
|
+
|
|
39
|
+
### v0.25.3
|
|
40
|
+
|
|
41
|
+
- Add optional `verbose` prop to `MorphoViewerSmallCircuit` for enabling/disabling debug console output
|
|
42
|
+
- Refactor `MorphoViewerSmallCircuit` rendering pipeline: remove `TgdFilterBlur`, `TgdPainterFilter`, `TgdPainterFramebufferWithAntiAliasing`, and `TgdPainterMix` for a leaner rendering approach
|
|
43
|
+
- Refactor `CameraManager` to use `TgdControllerCameraOrbit` with smooth camera interpolation via `tgdActionCreateCameraInterpolation`
|
|
44
|
+
- Use `TgdValueWaitable` for lazy context initialization in `PainterManager`
|
|
45
|
+
- Add `isDeleted` guard in `OffscreenPainter` to prevent operations after deletion
|
|
46
|
+
|
|
35
47
|
### v0.25.2
|
|
36
48
|
|
|
37
49
|
- Increase default **minRadius** from `0.25` to `2.5` in `MorphologyCanvas` and from `2` to `2.5` in `SwcPainter` for better rendering of thin neurites
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button-reset-camera.d.ts","sourceRoot":"","sources":["../../../src/components/button-reset-camera/button-reset-camera.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"button-reset-camera.d.ts","sourceRoot":"","sources":["../../../src/components/button-reset-camera/button-reset-camera.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE;QACd,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;KACzC,CAAC;CACH;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,sBAAsB,2CAYtF"}
|
|
@@ -7,4 +7,4 @@ export function ButtonCameraReset({ className, painterManager }) {
|
|
|
7
7
|
const restPosition = useEventValue(false, painterManager.eventRestingPosition);
|
|
8
8
|
return (_jsx("div", { className: classNames(className, styles.buttonResetCamera, restPosition && styles.hide), children: _jsx(Tooltip, { tooltip: "Recenter the view", arrow: "topLeft", foreColor: "#fff", backColor: "#05a", children: _jsx("button", { type: "button", onClick: painterManager.cameraReset, children: _jsx(IconCenter, {}) }) }) }));
|
|
9
9
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLXJlc2V0LWNhbWVyYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2J1dHRvbi1yZXNldC1jYW1lcmEvYnV0dG9uLXJlc2V0LWNhbWVyYS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXBELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUk3QyxPQUFPLE1BQU0sTUFBTSxrQ0FBa0MsQ0FBQztBQVV0RCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUEwQjtJQUNyRixNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRS9FLE9BQU8sQ0FDTCxjQUFLLFNBQVMsRUFBRSxVQUFVLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUMxRixLQUFDLE9BQU8sSUFBQyxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsS0FBSyxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxNQUFNLFlBQ3BGLGlCQUFRLElBQUksRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxXQUFXLFlBQ3ZELEtBQUMsVUFBVSxLQUFHLEdBQ1AsR0FDRCxHQUNOLENBQ1AsQ0FBQztBQUNKLENBQUMifQ==
|
package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offscreen-painter.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"offscreen-painter.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.ts"],"names":[],"mappings":"AACA,OAAO,EACH,UAAU,EAEV,UAAU,EAOb,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAGjD,qBAAa,gBAAiB,SAAQ,UAAU;IAWhC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAVrC,GAAG,SAAK;IACf,SAAgB,OAAO,EAAE,UAAU,CAAA;IAEnC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAY;IAC7C,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,gBAAgB,CAA2C;gBAEtC,eAAe,EAAE,UAAU;IAexD,IAAI,SAAS,IAAI,MAAM,CAEtB;IACD,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,EAG9B;IAED,IAAI,IAAI,IAIO,cAAc,GAAG,SAAS,CAFxC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAyBxC;IAED,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAYjE,KAAK,aASH;IAEF,MAAM;CAIT"}
|
package/lib/dist/components/morpho-viewer-simul/painter/offscreen-painter/offscreen-painter.js
CHANGED
|
@@ -81,4 +81,4 @@ export class OffscreenPainter extends TgdPainter {
|
|
|
81
81
|
this.offscreenContext.delete();
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2Zmc2NyZWVuLXBhaW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNpbXVsL3BhaW50ZXIvb2Zmc2NyZWVuLXBhaW50ZXIvb2Zmc2NyZWVuLXBhaW50ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFVBQVUsRUFFVixVQUFVLEVBQ1YsZUFBZSxFQUNmLGVBQWUsRUFDZixlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLGVBQWUsRUFDZixnQkFBZ0IsR0FDbkIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUd2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFaEQsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFVBQVU7SUFXNUMsWUFBNkIsZUFBMkI7UUFDcEQsS0FBSyxFQUFFLENBQUE7UUFEa0Isb0JBQWUsR0FBZixlQUFlLENBQVk7UUFWakQsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUdQLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDTixvQkFBZSxHQUFHLElBQUksZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVyRCxVQUFLLEdBQStCLFNBQVMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN2QyxxQkFBZ0IsR0FBc0MsSUFBSSxDQUFDO1FBb0VuRSxVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1QsTUFBTSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUE7WUFDbkUsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUE7WUFDaEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLGVBQWUsQ0FBQTtZQUNsQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-small-circuit/painter/camera.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-small-circuit/painter/camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,UAAU,EAEf,KAAK,QAAQ,EAGd,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,aAAa;IAOtB,OAAO,CAAC,QAAQ,CAAC,OAAO;aACR,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC;IAPlD,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAM;IAE5C,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,KAAK,CAAyC;gBAGnC,OAAO,EAAE,UAAU,EACpB,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC;IAazD,WAAW;IAWX,MAAM;IAMN,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE/B;CACH"}
|
|
@@ -38,4 +38,4 @@ export class CameraManager {
|
|
|
38
38
|
this.context.animCancelArray(this.animations);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZXJhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L3BhaW50ZXIvY2FtZXJhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxxQkFBcUIsRUFHckIsd0JBQXdCLEVBRXhCLGtDQUFrQyxFQUNsQywyQkFBMkIsR0FDNUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0FBRXJCLE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQ21CLE9BQW1CLEVBQ3BCLG9CQUF1QztRQUR0QyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ3BCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBbUI7UUFQbEQsV0FBTSxHQUE0QixFQUFFLENBQUM7UUFFcEMsZUFBVSxHQUFtQixFQUFFLENBQUM7UUFDaEMsVUFBSyxHQUFvQyxJQUFJLENBQUM7UUFrQ3JDLHFCQUFnQixHQUFHLEdBQUcsRUFBRTtZQUN2QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQztRQTlCQSxNQUFNLE1BQU0sR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDM0MsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHdCQUF3QixDQUFDLE9BQU8sRUFBRTtZQUNqRCxZQUFZLEVBQUUsSUFBSTtZQUNsQixPQUFPLEVBQUUsUUFBUTtZQUNqQixPQUFPLEVBQUUsUUFBUTtTQUNsQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDMUQsb0JBQW9CLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDckMsUUFBUSxFQUFFLEdBQUc7WUFDYixjQUFjLEVBQUUsMkJBQTJCO1lBQzNDLE1BQU0sRUFBRSxrQ0FBa0MsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdkUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ3RELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNOztRQUNKLE1BQUEsSUFBSSxDQUFDLEtBQUssMENBQUUsTUFBTSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7Q0FLRiJ9
|
|
@@ -10,7 +10,7 @@ export declare class PainterManager {
|
|
|
10
10
|
private _canvas;
|
|
11
11
|
private _background;
|
|
12
12
|
private readonly backgroundColor;
|
|
13
|
-
private context;
|
|
13
|
+
private readonly context;
|
|
14
14
|
private cameraManager;
|
|
15
15
|
private painterClear;
|
|
16
16
|
private offscreen;
|
|
@@ -26,21 +26,22 @@ export declare class PainterManager {
|
|
|
26
26
|
private framebufferCircuit;
|
|
27
27
|
private textureFramebufferCircuit;
|
|
28
28
|
private framebufferHighlightedCells;
|
|
29
|
-
private textureFramebufferHighlightedCells;
|
|
30
29
|
private framebufferBlur;
|
|
31
|
-
private
|
|
32
|
-
private loadedCells;
|
|
30
|
+
private loadedCellsCache;
|
|
33
31
|
private circuitSignature;
|
|
34
32
|
private bbox;
|
|
35
33
|
private _gizmo;
|
|
36
34
|
private painterGizmo;
|
|
37
35
|
private readonly groupGizmo;
|
|
36
|
+
private _verbose;
|
|
38
37
|
readonly cameraReset: () => void | undefined;
|
|
38
|
+
get verbose(): boolean;
|
|
39
|
+
set verbose(verbose: boolean);
|
|
39
40
|
get gizmo(): false | TgdPainterGizmoOptions;
|
|
40
41
|
set gizmo(gizmo: boolean | Partial<TgdPainterGizmoOptions> | undefined);
|
|
41
42
|
setCircuit(circuit: MorphoViewerSmallCircuitCell[], loadCell: (id: string) => Promise<MorphoViewerSmallCircuitCellData | null>): void;
|
|
42
|
-
private updateCircuit;
|
|
43
|
-
private adaptCameraFromBBox;
|
|
43
|
+
private readonly updateCircuit;
|
|
44
|
+
private readonly adaptCameraFromBBox;
|
|
44
45
|
get highlightedCellIds(): string[] | undefined;
|
|
45
46
|
set highlightedCellIds(value: string[] | undefined);
|
|
46
47
|
private updateHightedCells;
|
|
@@ -48,13 +49,10 @@ export declare class PainterManager {
|
|
|
48
49
|
set background(color: string);
|
|
49
50
|
get canvas(): HTMLCanvasElement | null;
|
|
50
51
|
set canvas(canvas: HTMLCanvasElement | null);
|
|
51
|
-
|
|
52
|
-
private createFramebufferHighlightedCells;
|
|
53
|
-
private createFramebufferBlur;
|
|
54
|
-
private createMix;
|
|
52
|
+
readonly debug: () => void;
|
|
55
53
|
private readonly handlePointerHover;
|
|
56
54
|
private readonly handlePointerTap;
|
|
57
55
|
private delete;
|
|
58
56
|
}
|
|
59
|
-
export declare function usePainterManager({ backgroundColor, circuit, loadCell, onCellHover, onCellClick, highlightedCellIds, onLoadProgress, gizmo, }: MorphoViewerSmallCircuitProps): PainterManager;
|
|
57
|
+
export declare function usePainterManager({ backgroundColor, circuit, loadCell, onCellHover, onCellClick, highlightedCellIds, onLoadProgress, gizmo, verbose, }: MorphoViewerSmallCircuitProps): PainterManager;
|
|
60
58
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-small-circuit/painter/manager.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-small-circuit/painter/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TgdBoundingBox,
|
|
1
|
+
import { TgdBoundingBox, TgdCameraOrthographic, TgdColor, TgdContext, TgdEvent, TgdPainterClear, TgdPainterGizmo, TgdPainterGroup, TgdPainterState, TgdValueWaitable, } from "@tolokoban/tgd";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { watchSpacePerPixel } from "./../../../behaviors/index.js";
|
|
4
4
|
import { CacheLRU } from "./../../../tools/cache-lru.js";
|
|
@@ -21,7 +21,7 @@ export class PainterManager {
|
|
|
21
21
|
this._canvas = null;
|
|
22
22
|
this._background = "#000";
|
|
23
23
|
this.backgroundColor = new TgdColor(0, 0, 0, 1);
|
|
24
|
-
this.context =
|
|
24
|
+
this.context = new TgdValueWaitable();
|
|
25
25
|
this.cameraManager = null;
|
|
26
26
|
this.painterClear = null;
|
|
27
27
|
this.offscreen = null;
|
|
@@ -39,16 +39,133 @@ export class PainterManager {
|
|
|
39
39
|
this.framebufferCircuit = null;
|
|
40
40
|
this.textureFramebufferCircuit = null;
|
|
41
41
|
this.framebufferHighlightedCells = null;
|
|
42
|
-
this.textureFramebufferHighlightedCells = null;
|
|
43
42
|
this.framebufferBlur = null;
|
|
44
|
-
this.
|
|
45
|
-
this.loadedCells = new CacheLRU(24);
|
|
43
|
+
this.loadedCellsCache = new CacheLRU(24);
|
|
46
44
|
this.circuitSignature = "";
|
|
47
45
|
this.bbox = new TgdBoundingBox();
|
|
48
46
|
this._gizmo = false;
|
|
49
47
|
this.painterGizmo = null;
|
|
50
48
|
this.groupGizmo = new TgdPainterGroup({ name: "GroupGizmo" });
|
|
49
|
+
this._verbose = false;
|
|
51
50
|
this.cameraReset = () => { var _a; return (_a = this.cameraManager) === null || _a === void 0 ? void 0 : _a.resetCamera(); };
|
|
51
|
+
this.updateCircuit = () => {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
const context = this.context.value;
|
|
54
|
+
if (!context)
|
|
55
|
+
return;
|
|
56
|
+
const { loadCell, loadedCellsCache: loadedCells } = this;
|
|
57
|
+
if (!loadCell) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
this.groupCells.removeAll();
|
|
62
|
+
(_a = this.onLoadProgress) === null || _a === void 0 ? void 0 : _a.call(this, 0);
|
|
63
|
+
this.cellCountTotal = this.circuit.length;
|
|
64
|
+
this.cellCountLoaded = 0;
|
|
65
|
+
(_b = this.offscreen) === null || _b === void 0 ? void 0 : _b.delete();
|
|
66
|
+
this.offscreen = new OffscreenPainter(context, {
|
|
67
|
+
circuit: this.circuit,
|
|
68
|
+
loadCell,
|
|
69
|
+
loadedCells,
|
|
70
|
+
});
|
|
71
|
+
const { cellsForHighights: highlightingCells } = this;
|
|
72
|
+
highlightingCells.clear();
|
|
73
|
+
this.groupHighlithedCells.removeAll(false);
|
|
74
|
+
this.bbox = new TgdBoundingBox();
|
|
75
|
+
for (const cell of this.circuit) {
|
|
76
|
+
const [x, y, z] = cell.center;
|
|
77
|
+
const r = cell.somaRadius;
|
|
78
|
+
this.bbox.addSphere(x, y, z, r * 5);
|
|
79
|
+
const painterCell = new PainterCell(context, {
|
|
80
|
+
cell,
|
|
81
|
+
loadCell,
|
|
82
|
+
matrerial: "full",
|
|
83
|
+
onCellLoaded: (bbox) => {
|
|
84
|
+
var _a;
|
|
85
|
+
if (bbox) {
|
|
86
|
+
this.bbox.addBBox(bbox);
|
|
87
|
+
}
|
|
88
|
+
this.adaptCameraFromBBox();
|
|
89
|
+
this.cellCountLoaded++;
|
|
90
|
+
(_a = this.onLoadProgress) === null || _a === void 0 ? void 0 : _a.call(this, this.cellCountLoaded / this.cellCountTotal);
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
this.groupCells.add(painterCell);
|
|
94
|
+
const highlightedCell = new PainterCell(context, {
|
|
95
|
+
cell,
|
|
96
|
+
loadCell,
|
|
97
|
+
matrerial: "flat",
|
|
98
|
+
});
|
|
99
|
+
highlightingCells.set(cell.id, highlightedCell);
|
|
100
|
+
}
|
|
101
|
+
this.updateHightedCells();
|
|
102
|
+
this.adaptCameraFromBBox();
|
|
103
|
+
context.paint();
|
|
104
|
+
}
|
|
105
|
+
catch (ex) {
|
|
106
|
+
console.error("Unable ton update circuit:", ex);
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
this.adaptCameraFromBBox = () => {
|
|
110
|
+
try {
|
|
111
|
+
const context = this.context.value;
|
|
112
|
+
if (!context)
|
|
113
|
+
return;
|
|
114
|
+
const { bbox } = this;
|
|
115
|
+
if (bbox.min[0] > bbox.max[0])
|
|
116
|
+
return;
|
|
117
|
+
const { camera } = context;
|
|
118
|
+
if (camera.screenWidth < 1 || camera.screenHeight < 1) {
|
|
119
|
+
const listener = () => {
|
|
120
|
+
context.eventPaint.removeListener(listener);
|
|
121
|
+
this.adaptCameraFromBBox();
|
|
122
|
+
};
|
|
123
|
+
context.eventPaint.addListener(listener);
|
|
124
|
+
context.paint();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const bboxW = Math.abs(bbox.max[0] - bbox.min[0]);
|
|
128
|
+
const bboxH = Math.abs(bbox.max[1] - bbox.min[1]);
|
|
129
|
+
const bboxD = Math.abs(bbox.max[2] - bbox.min[2]);
|
|
130
|
+
const bboxRadius = Math.max(bboxW, bboxH, bboxD);
|
|
131
|
+
camera.transfo.position = bbox.center;
|
|
132
|
+
const scale = 1.1;
|
|
133
|
+
camera.fitSpaceAtTarget(bboxW * scale, bboxH * scale);
|
|
134
|
+
camera.transfo.distance = bboxRadius * scale;
|
|
135
|
+
camera.near = 1;
|
|
136
|
+
camera.far = camera.transfo.distance * 2;
|
|
137
|
+
camera.zoom = 2;
|
|
138
|
+
if (!this.cameraManager) {
|
|
139
|
+
this.cameraManager = new CameraManager(context, this.eventRestingPosition);
|
|
140
|
+
}
|
|
141
|
+
this.cameraManager.target = camera.getCurrentState();
|
|
142
|
+
context.paint();
|
|
143
|
+
}
|
|
144
|
+
catch (ex) {
|
|
145
|
+
console.error("Unable to adapt camera to bbox:", ex);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
this.debug = () => {
|
|
149
|
+
const context = this.context.value;
|
|
150
|
+
const camera = context === null || context === void 0 ? void 0 : context.camera;
|
|
151
|
+
console.log("🐞 [manager@357] this.bbox =", this.bbox);
|
|
152
|
+
if (camera) {
|
|
153
|
+
console.log([
|
|
154
|
+
`near: ${camera.near}`,
|
|
155
|
+
`far: ${camera.far}`,
|
|
156
|
+
`zoom: ${camera.zoom}`,
|
|
157
|
+
`screenWidth: ${camera.screenWidth}`,
|
|
158
|
+
`screenHeight: ${camera.screenHeight}`,
|
|
159
|
+
`spaceWidthAtTarget: ${camera.spaceWidthAtTarget}`,
|
|
160
|
+
`spaceHeightAtTarget: ${camera.spaceHeightAtTarget}`,
|
|
161
|
+
`distance: ${camera.transfo.distance}`,
|
|
162
|
+
`position: ${camera.transfo.position}`,
|
|
163
|
+
].join("\n"));
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
console.log("NO CAMERA!!!");
|
|
167
|
+
}
|
|
168
|
+
};
|
|
52
169
|
this.handlePointerHover = (evt) => {
|
|
53
170
|
const { offscreen } = this;
|
|
54
171
|
if (!offscreen)
|
|
@@ -68,6 +185,16 @@ export class PainterManager {
|
|
|
68
185
|
this.eventCellClick.dispatch(cell);
|
|
69
186
|
};
|
|
70
187
|
}
|
|
188
|
+
get verbose() {
|
|
189
|
+
return this._verbose;
|
|
190
|
+
}
|
|
191
|
+
set verbose(verbose) {
|
|
192
|
+
if (this._verbose === verbose)
|
|
193
|
+
return;
|
|
194
|
+
this._verbose = verbose;
|
|
195
|
+
if (this.context.value)
|
|
196
|
+
this.context.value.verbose = verbose;
|
|
197
|
+
}
|
|
71
198
|
get gizmo() {
|
|
72
199
|
return this._gizmo;
|
|
73
200
|
}
|
|
@@ -93,96 +220,30 @@ export class PainterManager {
|
|
|
93
220
|
}
|
|
94
221
|
}
|
|
95
222
|
setCircuit(circuit, loadCell) {
|
|
96
|
-
|
|
223
|
+
var _a;
|
|
224
|
+
if (this.circuit === circuit) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (circuit.length === 0) {
|
|
228
|
+
this.loadedCellsCache.clear();
|
|
97
229
|
return;
|
|
230
|
+
}
|
|
98
231
|
const signature = circuit.map((item) => item.id).join("\n");
|
|
99
232
|
if (this.circuitSignature !== signature) {
|
|
100
233
|
this.circuitSignature = signature;
|
|
101
|
-
this.
|
|
234
|
+
this.loadedCellsCache.clear();
|
|
102
235
|
}
|
|
103
236
|
this.circuit = circuit;
|
|
104
237
|
this.loadCell = (id) => {
|
|
105
|
-
const cached = this.
|
|
238
|
+
const cached = this.loadedCellsCache.get(id);
|
|
106
239
|
if (cached)
|
|
107
240
|
return cached;
|
|
108
241
|
const promise = loadCell(id);
|
|
109
|
-
this.
|
|
242
|
+
this.loadedCellsCache.set(id, promise);
|
|
110
243
|
return promise;
|
|
111
244
|
};
|
|
112
|
-
this.updateCircuit();
|
|
113
|
-
}
|
|
114
|
-
updateCircuit() {
|
|
115
|
-
var _a;
|
|
116
|
-
const { context } = this;
|
|
117
|
-
if (!context)
|
|
118
|
-
return;
|
|
119
|
-
const { loadCell, loadedCells } = this;
|
|
120
|
-
if (!loadCell)
|
|
121
|
-
return;
|
|
122
245
|
(_a = this.onLoadProgress) === null || _a === void 0 ? void 0 : _a.call(this, 0);
|
|
123
|
-
this.
|
|
124
|
-
this.cellCountLoaded = 0;
|
|
125
|
-
const camera = new TgdCameraPerspective({
|
|
126
|
-
zoom: 1,
|
|
127
|
-
});
|
|
128
|
-
this.offscreen = new OffscreenPainter(context, {
|
|
129
|
-
circuit: this.circuit,
|
|
130
|
-
loadCell,
|
|
131
|
-
loadedCells,
|
|
132
|
-
});
|
|
133
|
-
const { cellsForHighights: highlightingCells } = this;
|
|
134
|
-
highlightingCells.clear();
|
|
135
|
-
this.groupHighlithedCells.removeAll(false);
|
|
136
|
-
this.bbox = new TgdBoundingBox();
|
|
137
|
-
for (const cell of this.circuit) {
|
|
138
|
-
const [x, y, z] = cell.center;
|
|
139
|
-
const r = cell.somaRadius;
|
|
140
|
-
this.bbox.addSphere(x, y, z, r * 5);
|
|
141
|
-
const painterCell = new PainterCell(context, {
|
|
142
|
-
cell,
|
|
143
|
-
loadCell,
|
|
144
|
-
matrerial: "full",
|
|
145
|
-
onCellLoaded: (bbox) => {
|
|
146
|
-
var _a;
|
|
147
|
-
if (bbox) {
|
|
148
|
-
this.bbox.addBBox(bbox);
|
|
149
|
-
this.adaptCameraFromBBox();
|
|
150
|
-
}
|
|
151
|
-
this.cellCountLoaded++;
|
|
152
|
-
(_a = this.onLoadProgress) === null || _a === void 0 ? void 0 : _a.call(this, this.cellCountLoaded / this.cellCountTotal);
|
|
153
|
-
},
|
|
154
|
-
});
|
|
155
|
-
this.groupCells.add(painterCell);
|
|
156
|
-
const highlightedCell = new PainterCell(context, {
|
|
157
|
-
cell,
|
|
158
|
-
loadCell,
|
|
159
|
-
matrerial: "flat",
|
|
160
|
-
});
|
|
161
|
-
highlightingCells.set(cell.id, highlightedCell);
|
|
162
|
-
}
|
|
163
|
-
this.updateHightedCells();
|
|
164
|
-
context.camera = camera;
|
|
165
|
-
this.adaptCameraFromBBox();
|
|
166
|
-
context.paint();
|
|
167
|
-
}
|
|
168
|
-
adaptCameraFromBBox() {
|
|
169
|
-
const { context } = this;
|
|
170
|
-
if (!context)
|
|
171
|
-
return;
|
|
172
|
-
const { bbox } = this;
|
|
173
|
-
const { camera } = context;
|
|
174
|
-
const bboxW = Math.abs(bbox.max[0] - bbox.min[0]);
|
|
175
|
-
const bboxH = Math.abs(bbox.max[1] - bbox.min[1]);
|
|
176
|
-
camera.transfo.position = bbox.center;
|
|
177
|
-
const scale = 2;
|
|
178
|
-
camera.fitSpaceAtTarget(bboxW * scale, bboxH * scale);
|
|
179
|
-
camera.near = 1;
|
|
180
|
-
camera.far = camera.transfo.distance * 2;
|
|
181
|
-
camera.zoom = 2;
|
|
182
|
-
const { cameraManager } = this;
|
|
183
|
-
if (cameraManager) {
|
|
184
|
-
cameraManager.target = camera.getCurrentState();
|
|
185
|
-
}
|
|
246
|
+
this.context.waitUntiDefined().then(this.updateCircuit);
|
|
186
247
|
}
|
|
187
248
|
get highlightedCellIds() {
|
|
188
249
|
return this._highlightedCellIds;
|
|
@@ -210,7 +271,7 @@ export class PainterManager {
|
|
|
210
271
|
painter.black = false;
|
|
211
272
|
}
|
|
212
273
|
}
|
|
213
|
-
(_a = this.context) === null || _a === void 0 ? void 0 : _a.paint();
|
|
274
|
+
(_a = this.context.value) === null || _a === void 0 ? void 0 : _a.paint();
|
|
214
275
|
}
|
|
215
276
|
get background() {
|
|
216
277
|
return this._background;
|
|
@@ -218,33 +279,46 @@ export class PainterManager {
|
|
|
218
279
|
set background(color) {
|
|
219
280
|
this._background = color;
|
|
220
281
|
this.backgroundColor.parse(color);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
clear
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
282
|
+
this.context.waitUntiDefined().then(() => {
|
|
283
|
+
const clear = this.painterClear;
|
|
284
|
+
if (clear) {
|
|
285
|
+
clear.red = this.backgroundColor.R;
|
|
286
|
+
clear.green = this.backgroundColor.G;
|
|
287
|
+
clear.blue = this.backgroundColor.B;
|
|
288
|
+
clear.alpha = this.backgroundColor.A;
|
|
289
|
+
}
|
|
290
|
+
});
|
|
228
291
|
}
|
|
229
292
|
get canvas() {
|
|
230
293
|
return this._canvas;
|
|
231
294
|
}
|
|
232
295
|
set canvas(canvas) {
|
|
233
|
-
if (this._canvas === canvas)
|
|
296
|
+
if (this._canvas === canvas) {
|
|
234
297
|
return;
|
|
298
|
+
}
|
|
235
299
|
if (this.context) {
|
|
236
300
|
this.delete();
|
|
237
301
|
}
|
|
238
302
|
this._canvas = canvas;
|
|
239
303
|
if (!canvas)
|
|
240
304
|
return;
|
|
241
|
-
const context = new TgdContext(canvas, {
|
|
305
|
+
const context = new TgdContext(canvas, {
|
|
306
|
+
antialias: true,
|
|
307
|
+
alpha: false,
|
|
308
|
+
verbose: this.verbose,
|
|
309
|
+
name: "RenderingContext",
|
|
310
|
+
});
|
|
311
|
+
this.context.value = context;
|
|
312
|
+
context.camera = new TgdCameraOrthographic({
|
|
313
|
+
zoom: 1,
|
|
314
|
+
});
|
|
242
315
|
watchSpacePerPixel(context, this.eventScalebar);
|
|
243
316
|
context.inputs.pointer.eventHover.addListener(this.handlePointerHover);
|
|
244
317
|
context.inputs.pointer.eventTap.addListener(this.handlePointerTap);
|
|
245
|
-
this.
|
|
318
|
+
context.inputs.pointer.eventTapMultiple.addListener(this.debug);
|
|
246
319
|
this.cameraManager = new CameraManager(context, this.eventRestingPosition);
|
|
247
320
|
const clear = new TgdPainterClear(context, {
|
|
321
|
+
name: "Clear background and depth",
|
|
248
322
|
color: [
|
|
249
323
|
this.backgroundColor.R,
|
|
250
324
|
this.backgroundColor.G,
|
|
@@ -262,98 +336,7 @@ export class PainterManager {
|
|
|
262
336
|
depth: "less",
|
|
263
337
|
cull: "back",
|
|
264
338
|
children: [this.groupCells],
|
|
265
|
-
}), new TgdPainterClear(context, { depth: 1 }), new TgdPainterState(context, {
|
|
266
|
-
depth: "less",
|
|
267
|
-
blend: "add",
|
|
268
|
-
cull: "back",
|
|
269
|
-
children: [this.groupHighlithedCells],
|
|
270
339
|
}), this.groupGizmo);
|
|
271
|
-
this.updateCircuit();
|
|
272
|
-
}
|
|
273
|
-
createramebufferCircuit(context, clear) {
|
|
274
|
-
this.textureFramebufferCircuit = new TgdTexture2D(context);
|
|
275
|
-
this.framebufferCircuit = new TgdPainterFramebufferWithAntiAliasing(context, {
|
|
276
|
-
textureColor0: this.textureFramebufferCircuit,
|
|
277
|
-
depthBuffer: true,
|
|
278
|
-
children: [
|
|
279
|
-
clear,
|
|
280
|
-
new TgdPainterState(context, {
|
|
281
|
-
depth: webglPresetDepth.less,
|
|
282
|
-
children: [this.groupCells],
|
|
283
|
-
}),
|
|
284
|
-
],
|
|
285
|
-
});
|
|
286
|
-
return this.framebufferCircuit;
|
|
287
|
-
}
|
|
288
|
-
createFramebufferHighlightedCells(context) {
|
|
289
|
-
const { viewportMatchingScale } = this;
|
|
290
|
-
this.textureFramebufferHighlightedCells = new TgdTexture2D(context);
|
|
291
|
-
this.framebufferHighlightedCells = new TgdPainterFramebufferWithAntiAliasing(context, {
|
|
292
|
-
viewportMatchingScale,
|
|
293
|
-
textureColor0: this.textureFramebufferHighlightedCells,
|
|
294
|
-
depthBuffer: true,
|
|
295
|
-
children: [
|
|
296
|
-
new TgdPainterClear(context, { depth: 1, color: [0, 0, 0, 1] }),
|
|
297
|
-
new TgdPainterState(context, {
|
|
298
|
-
depth: webglPresetDepth.less,
|
|
299
|
-
children: [this.groupHighlithedCells],
|
|
300
|
-
}),
|
|
301
|
-
],
|
|
302
|
-
});
|
|
303
|
-
return this.framebufferHighlightedCells;
|
|
304
|
-
}
|
|
305
|
-
createFramebufferBlur(context) {
|
|
306
|
-
const { textureFramebufferHighlightedCells } = this;
|
|
307
|
-
if (!textureFramebufferHighlightedCells)
|
|
308
|
-
throw new Error("You must call createFramebufferHighlightedCells() before this createFramebufferBlur()!");
|
|
309
|
-
const { viewportMatchingScale } = this;
|
|
310
|
-
const size = 3;
|
|
311
|
-
this.textureFramebufferBlur = new TgdTexture2D(context);
|
|
312
|
-
this.framebufferBlur = new TgdPainterFramebufferWithAntiAliasing(context, {
|
|
313
|
-
viewportMatchingScale,
|
|
314
|
-
textureColor0: this.textureFramebufferBlur,
|
|
315
|
-
children: [
|
|
316
|
-
new TgdPainterClear(context, { color: [0, 0, 0, 1] }),
|
|
317
|
-
new TgdPainterState(context, {
|
|
318
|
-
depth: webglPresetDepth.off,
|
|
319
|
-
children: [
|
|
320
|
-
new TgdPainterFilter(context, {
|
|
321
|
-
flipY: true,
|
|
322
|
-
texture: textureFramebufferHighlightedCells,
|
|
323
|
-
filters: [
|
|
324
|
-
new TgdFilterBlur({
|
|
325
|
-
size,
|
|
326
|
-
direction: 0,
|
|
327
|
-
}),
|
|
328
|
-
new TgdFilterBlur({
|
|
329
|
-
size,
|
|
330
|
-
direction: 90,
|
|
331
|
-
}),
|
|
332
|
-
],
|
|
333
|
-
}),
|
|
334
|
-
],
|
|
335
|
-
}),
|
|
336
|
-
],
|
|
337
|
-
});
|
|
338
|
-
return this.framebufferBlur;
|
|
339
|
-
}
|
|
340
|
-
createMix(context) {
|
|
341
|
-
const { framebufferCircuit, framebufferBlur } = this;
|
|
342
|
-
if (!framebufferCircuit)
|
|
343
|
-
throw new Error("Framebuffer for circuit must be created before calling createMix()!");
|
|
344
|
-
if (!framebufferBlur)
|
|
345
|
-
throw new Error("Framebuffer for blur must be created before calling createMix()!");
|
|
346
|
-
return new TgdPainterState(context, {
|
|
347
|
-
depth: webglPresetDepth.off,
|
|
348
|
-
blend: webglPresetBlend.off,
|
|
349
|
-
children: [
|
|
350
|
-
new TgdPainterMix(context, {
|
|
351
|
-
texture1: framebufferCircuit.textureColor0,
|
|
352
|
-
texture2: framebufferBlur.textureColor0,
|
|
353
|
-
strength: 1.5,
|
|
354
|
-
}),
|
|
355
|
-
],
|
|
356
|
-
});
|
|
357
340
|
}
|
|
358
341
|
delete() {
|
|
359
342
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
@@ -372,14 +355,14 @@ export class PainterManager {
|
|
|
372
355
|
this.groupCells.removeAll();
|
|
373
356
|
(_g = this.painterClear) === null || _g === void 0 ? void 0 : _g.delete();
|
|
374
357
|
this.painterClear = null;
|
|
375
|
-
if (this.context) {
|
|
376
|
-
this.context.inputs.pointer.eventHover.removeListener(this.handlePointerHover);
|
|
377
|
-
this.context.delete();
|
|
378
|
-
this.context =
|
|
358
|
+
if (this.context.value) {
|
|
359
|
+
this.context.value.inputs.pointer.eventHover.removeListener(this.handlePointerHover);
|
|
360
|
+
this.context.value.delete();
|
|
361
|
+
this.context.value = undefined;
|
|
379
362
|
}
|
|
380
363
|
}
|
|
381
364
|
}
|
|
382
|
-
export function usePainterManager({ backgroundColor, circuit, loadCell, onCellHover, onCellClick, highlightedCellIds, onLoadProgress, gizmo, }) {
|
|
365
|
+
export function usePainterManager({ backgroundColor, circuit, loadCell, onCellHover, onCellClick, highlightedCellIds, onLoadProgress, gizmo, verbose, }) {
|
|
383
366
|
const [, setSpacePerPixel] = React.useState(-1);
|
|
384
367
|
const ref = React.useRef(null);
|
|
385
368
|
if (!ref.current) {
|
|
@@ -388,14 +371,11 @@ export function usePainterManager({ backgroundColor, circuit, loadCell, onCellHo
|
|
|
388
371
|
const manager = ref.current;
|
|
389
372
|
React.useEffect(() => {
|
|
390
373
|
manager.eventScalebar.addListener(setSpacePerPixel);
|
|
391
|
-
return () => manager.eventScalebar.removeListener(setSpacePerPixel);
|
|
392
|
-
}, [manager]);
|
|
393
|
-
React.useEffect(() => {
|
|
394
374
|
manager.onLoadProgress = onLoadProgress;
|
|
395
|
-
|
|
396
|
-
React.useEffect(() => {
|
|
375
|
+
manager.verbose = verbose !== null && verbose !== void 0 ? verbose : false;
|
|
397
376
|
manager.background = backgroundColor !== null && backgroundColor !== void 0 ? backgroundColor : "#000";
|
|
398
|
-
|
|
377
|
+
return () => manager.eventScalebar.removeListener(setSpacePerPixel);
|
|
378
|
+
}, [onLoadProgress, manager, verbose, backgroundColor]);
|
|
399
379
|
React.useEffect(() => {
|
|
400
380
|
manager.setCircuit(circuit, loadCell);
|
|
401
381
|
}, [circuit, loadCell, manager]);
|
|
@@ -423,4 +403,4 @@ export function usePainterManager({ backgroundColor, circuit, loadCell, onCellHo
|
|
|
423
403
|
}, [gizmo, manager]);
|
|
424
404
|
return ref.current;
|
|
425
405
|
}
|
|
426
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc21hbGwtY2lyY3VpdC9wYWludGVyL21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsUUFBUSxFQUNSLFVBQVUsRUFDVixRQUFRLEVBQ1IsYUFBYSxFQUliLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIscUNBQXFDLEVBQ3JDLGVBQWUsRUFFZixlQUFlLEVBQ2YsYUFBYSxFQUNiLGVBQWUsRUFDZixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNuQixNQUFNLGdCQUFnQixDQUFBO0FBQ3ZCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUV6QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRTVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBYTVDLE1BQU0sbUJBQW1CLEdBQTJCO0lBQ2hELE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDVixNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxFQUFFLEdBQUc7SUFDVCxNQUFNLEVBQUUsQ0FBQztDQUNaLENBQUE7QUFFRCxNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNvQix5QkFBb0IsR0FBRyxJQUFJLFFBQVEsRUFBVyxDQUFDO1FBQy9DLG1CQUFjLEdBQUcsSUFBSSxRQUFRLEVBQTRDLENBQUM7UUFDMUUsbUJBQWMsR0FBRyxJQUFJLFFBQVEsRUFBNEMsQ0FBQztRQUkxRSxrQkFBYSxHQUFHLElBQUks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
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc21hbGwtY2lyY3VpdC9wYWludGVyL21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxxQkFBcUIsRUFDckIsUUFBUSxFQUNSLFVBQVUsRUFDVixRQUFRLEVBR1IsZUFBZSxFQUNmLGVBQWUsRUFFZixlQUFlLEVBQ2YsZUFBZSxFQUVmLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBYTdDLE1BQU0sbUJBQW1CLEdBQTJCO0lBQ2xELE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDVixNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ1YsSUFBSSxFQUFFLEdBQUc7SUFDVCxNQUFNLEVBQUUsQ0FBQztDQUNWLENBQUM7QUFFRixNQUFNLE9BQU8sY0FBYztJQUEzQjtRQUNrQix5QkFBb0IsR0FBRyxJQUFJLFFBQVEsRUFBVyxDQUFDO1FBQy9DLG1CQUFjLEdBQUcsSUFBSSxRQUFRLEVBQTRDLENBQUM7UUFDMUUsbUJBQWMsR0FBRyxJQUFJLFFBQVEsRUFBNEMsQ0FBQztRQUkxRSxrQkFBYSxHQUFHLElBQUksUUFBUSxFQUFVLENBQUM7UUFhdEMsMEJBQXFCLEdBQUcsR0FBRyxDQUFDO1FBQ3JDLFlBQU8sR0FBNkIsSUFBSSxDQUFD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
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TgdContext } from "@tolokoban/tgd";
|
|
2
|
-
import { CacheLRU } from "../../../../tools/cache-lru";
|
|
2
|
+
import type { CacheLRU } from "../../../../tools/cache-lru";
|
|
3
3
|
import type { MorphoViewerSmallCircuitCell, MorphoViewerSmallCircuitCellData } from "../../types";
|
|
4
4
|
export interface OffscreenPainterOptions {
|
|
5
5
|
circuit: MorphoViewerSmallCircuitCell[];
|
|
@@ -14,6 +14,7 @@ export declare class OffscreenPainter {
|
|
|
14
14
|
private readonly offscreenContext;
|
|
15
15
|
private readonly group;
|
|
16
16
|
private readonly circuit;
|
|
17
|
+
private isDeleted;
|
|
17
18
|
constructor(onscreenContext: TgdContext, options: OffscreenPainterOptions);
|
|
18
19
|
getItemAt(xScreen: number, yScreen: number): MorphoViewerSmallCircuitCell | undefined;
|
|
19
20
|
private readonly paint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"offscreen-painter.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EAKX,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"offscreen-painter.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EAKX,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,4BAA4B,EAAE,gCAAgC,EAAE,MAAM,aAAa,CAAC;AAElG,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACxC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAC;IAC3E,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAC,CAAC;CACzE;AAID,qBAAa,gBAAgB;IAWzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAV3B,GAAG,SAAK;IACf,SAAgB,OAAO,EAAE,UAAU,CAAC;IAEpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,SAAS,CAAS;gBAGP,eAAe,EAAE,UAAU,EAC5C,OAAO,EAAE,uBAAuB;IAkClC,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,4BAA4B,GAAG,SAAS;IAUrF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAWpB;IAEF,MAAM;CAKP"}
|
|
@@ -8,7 +8,10 @@ export class OffscreenPainter {
|
|
|
8
8
|
this.mix = 0;
|
|
9
9
|
this.offscreenCanvas = new OffscreenCanvas(1, 1);
|
|
10
10
|
this.group = new TgdPainterGroup();
|
|
11
|
+
this.isDeleted = false;
|
|
11
12
|
this.paint = () => {
|
|
13
|
+
if (this.isDeleted)
|
|
14
|
+
return;
|
|
12
15
|
const { onscreenContext, offscreenContext, offscreenCanvas } = this;
|
|
13
16
|
offscreenContext.camera = onscreenContext.camera;
|
|
14
17
|
const { canvas } = onscreenContext;
|
|
@@ -25,6 +28,7 @@ export class OffscreenPainter {
|
|
|
25
28
|
antialias: false,
|
|
26
29
|
alpha: false,
|
|
27
30
|
depth: true,
|
|
31
|
+
name: "OffscreenPainter",
|
|
28
32
|
});
|
|
29
33
|
this.context = context;
|
|
30
34
|
context.camera = onscreenContext.camera;
|
|
@@ -47,6 +51,8 @@ export class OffscreenPainter {
|
|
|
47
51
|
}
|
|
48
52
|
getItemAt(xScreen, yScreen) {
|
|
49
53
|
var _a;
|
|
54
|
+
if (this.isDeleted)
|
|
55
|
+
return;
|
|
50
56
|
const { circuit, offscreenContext: context } = this;
|
|
51
57
|
const [R, G, B] = context.readPixel(xScreen, yScreen);
|
|
52
58
|
const divider = 1 / 0xff;
|
|
@@ -56,6 +62,7 @@ export class OffscreenPainter {
|
|
|
56
62
|
delete() {
|
|
57
63
|
this.onscreenContext.eventPaint.removeListener(this.paint);
|
|
58
64
|
this.offscreenContext.delete();
|
|
65
|
+
this.isDeleted = true;
|
|
59
66
|
}
|
|
60
67
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2Zmc2NyZWVuLXBhaW50ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNtYWxsLWNpcmN1aXQvcGFpbnRlci9vZmZzY3JlZW4tcGFpbnRlci9vZmZzY3JlZW4tcGFpbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsVUFBVSxFQUNWLGVBQWUsRUFDZixlQUFlLEVBQ2YsZUFBZSxFQUNmLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBVzlDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztBQUV0QixNQUFNLE9BQU8sZ0JBQWdCO0lBVTNCLFlBQ21CLGVBQTJCLEVBQzVDLE9BQWdDO1FBRGYsb0JBQWUsR0FBZixlQUFlLENBQVk7UUFWdkMsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUdFLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTVDLFVBQUssR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBRXZDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFnRFQsVUFBSyxHQUFHLEdBQUcsRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxTQUFTO2dCQUFFLE9BQU87WUFFM0IsTUFBTSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDcEUsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDakQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLGVBQWUsQ0FBQztZQUNuQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcs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
|
package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../../../../src/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../../../../../src/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,cAAc,EAGf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,kCAAkC,CAAC;AAE1C,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAE,gBAAgB,EACtB,YAAY,EAAE,OAAO,GACpB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,CAoChD"}
|
package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/factory/tree.js
CHANGED
|
@@ -9,30 +9,31 @@ export function createCellFromTree(context, material, tree, forSelection) {
|
|
|
9
9
|
const bbox = new TgdBoundingBox();
|
|
10
10
|
for (const segments of [segmentsSoma, segmentsNeurites]) {
|
|
11
11
|
for (let i = 0; i < segments.count; i++) {
|
|
12
|
-
const [x0, y0, z0, r0] =
|
|
12
|
+
const [x0, y0, z0, r0] = segments.getXYZR0(i);
|
|
13
13
|
bbox.addSphere(x0, y0, z0, r0 * 2);
|
|
14
|
-
const [x1, y1, z1, r1] =
|
|
14
|
+
const [x1, y1, z1, r1] = segments.getXYZR1(i);
|
|
15
15
|
bbox.addSphere(x1, y1, z1, r1 * 2);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
|
+
const painterSoma = new TgdPainterSegments(context, {
|
|
19
|
+
roundness: forSelection ? 5 : 12,
|
|
20
|
+
radiusMultiplier: forSelection ? 1.1 : 1,
|
|
21
|
+
material,
|
|
22
|
+
dataset: segmentsSoma.makeDataset(),
|
|
23
|
+
});
|
|
24
|
+
painterSoma.name = "painterSoma";
|
|
25
|
+
const painterNeurites = new TgdPainterSegments(context, {
|
|
26
|
+
roundness: forSelection ? 3 : 5,
|
|
27
|
+
minRadius: 2,
|
|
28
|
+
radiusMultiplier: forSelection ? 1.6 : 1,
|
|
29
|
+
material,
|
|
30
|
+
dataset: segmentsNeurites.makeDataset(),
|
|
31
|
+
});
|
|
32
|
+
painterNeurites.name = "painterNeurites";
|
|
18
33
|
return {
|
|
19
34
|
bbox,
|
|
20
35
|
node: new TgdPainterNode({
|
|
21
|
-
children: [
|
|
22
|
-
new TgdPainterSegments(context, {
|
|
23
|
-
roundness: forSelection ? 5 : 12,
|
|
24
|
-
radiusMultiplier: forSelection ? 1.1 : 1,
|
|
25
|
-
material,
|
|
26
|
-
dataset: segmentsSoma.makeDataset(),
|
|
27
|
-
}),
|
|
28
|
-
new TgdPainterSegments(context, {
|
|
29
|
-
roundness: forSelection ? 3 : 5,
|
|
30
|
-
minRadius: 2,
|
|
31
|
-
radiusMultiplier: forSelection ? 1.6 : 1,
|
|
32
|
-
material,
|
|
33
|
-
dataset: segmentsNeurites.makeDataset(),
|
|
34
|
-
}),
|
|
35
|
-
],
|
|
36
|
+
children: [painterSoma, painterNeurites],
|
|
36
37
|
}),
|
|
37
38
|
};
|
|
38
39
|
}
|
|
@@ -66,6 +67,6 @@ function computeCoordU(type) {
|
|
|
66
67
|
MorphoViewerTreeItemType.Myelin,
|
|
67
68
|
MorphoViewerTreeItemType.Unknown,
|
|
68
69
|
];
|
|
69
|
-
return (types.indexOf(type) + .5) / types.length;
|
|
70
|
+
return (types.indexOf(type) + 0.5) / types.length;
|
|
70
71
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc21hbGwtY2lyY3VpdC9wYWludGVyL3BhaW50ZXItY2VsbC9mYWN0b3J5L3RyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGNBQWMsRUFHZCxjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLHNCQUFzQixHQUN2QixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFHTCx3QkFBd0IsR0FDekIsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE9BQW1CLEVBQ25CLFFBQXFCLEVBQ3JCLElBQXNCLEVBQ3RCLFlBQXFCO0lBRXJCLE1BQU0sWUFBWSxHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztJQUNsRCxNQUFNLGdCQUFnQixHQUFHLElBQUksc0JBQXNCLEVBQUUsQ0FBQztJQUN0RCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUNsQyxLQUFLLE1BQU0sUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztRQUN4RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMs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
|
package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts
CHANGED
|
@@ -14,9 +14,13 @@ export declare class PainterCell extends TgdPainterGroup {
|
|
|
14
14
|
private _black;
|
|
15
15
|
private readonly texturePalette;
|
|
16
16
|
private readonly textureBlack;
|
|
17
|
+
private _isDeleted;
|
|
17
18
|
constructor(context: TgdContext, options: PainterCellOptions);
|
|
19
|
+
get isDeleted(): boolean;
|
|
20
|
+
private set isDeleted(value);
|
|
18
21
|
get black(): boolean;
|
|
19
22
|
set black(value: boolean);
|
|
23
|
+
paint(time: number, delta: number): void;
|
|
20
24
|
private loadCell;
|
|
21
25
|
delete(): void;
|
|
22
26
|
}
|
package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"painter-cell.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"painter-cell.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,UAAU,EAOf,eAAe,EAQhB,MAAM,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EACV,4BAA4B,EAC5B,gCAAgC,EAEjC,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,IAAI,EAAE,4BAA4B,CAAC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAC;IAKvE,YAAY,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/D,qBAAa,WAAY,SAAQ,eAAe;IAQ5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAR1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,UAAU,CAAS;gBAGR,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,kBAAkB;IA2C9C,IAAI,SAAS,IAAI,OAAO,CAEvB;IACD,OAAO,KAAK,SAAS,QAIpB;IAGD,IAAI,KAAK,IAGQ,OAAO,CADvB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,EAQvB;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;YAM1B,QAAQ;IA6BtB,MAAM,IAAI,IAAI;CAKf"}
|
package/lib/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js
CHANGED
|
@@ -6,17 +6,13 @@ export class PainterCell extends TgdPainterGroup {
|
|
|
6
6
|
constructor(context, options) {
|
|
7
7
|
var _a;
|
|
8
8
|
super({
|
|
9
|
-
name: `
|
|
9
|
+
name: `PainterCell / ${options.cell.id}`,
|
|
10
10
|
});
|
|
11
11
|
this.context = context;
|
|
12
12
|
this.options = options;
|
|
13
13
|
this._black = false;
|
|
14
|
+
this._isDeleted = false;
|
|
14
15
|
const { cell } = options;
|
|
15
|
-
const geometry = new TgdGeometrySphereIco({
|
|
16
|
-
center: cell.center,
|
|
17
|
-
radius: cell.somaRadius,
|
|
18
|
-
subdivisions: 2,
|
|
19
|
-
});
|
|
20
16
|
const texture = createPaletteTexture(context, cell.color);
|
|
21
17
|
this.texturePalette = texture;
|
|
22
18
|
this.textureBlack = new TgdTexture2D(context).loadBitmap(tgdCanvasCreateFill(1, 1, "#000"));
|
|
@@ -40,13 +36,27 @@ export class PainterCell extends TgdPainterGroup {
|
|
|
40
36
|
});
|
|
41
37
|
break;
|
|
42
38
|
}
|
|
39
|
+
const geometry = new TgdGeometrySphereIco({
|
|
40
|
+
center: cell.center,
|
|
41
|
+
radius: cell.somaRadius,
|
|
42
|
+
subdivisions: 2,
|
|
43
|
+
});
|
|
43
44
|
const mesh = new TgdPainterMesh(context, {
|
|
45
|
+
name: `IcoSphere / ${options.cell.id}`,
|
|
44
46
|
geometry,
|
|
45
47
|
material: this.material,
|
|
46
48
|
});
|
|
47
49
|
this.add(mesh);
|
|
48
50
|
this.loadCell();
|
|
49
51
|
}
|
|
52
|
+
get isDeleted() {
|
|
53
|
+
return this._isDeleted || this.context.isDeleted;
|
|
54
|
+
}
|
|
55
|
+
set isDeleted(isDeleted) {
|
|
56
|
+
if (this._isDeleted === isDeleted)
|
|
57
|
+
return;
|
|
58
|
+
this._isDeleted = isDeleted;
|
|
59
|
+
}
|
|
50
60
|
get black() {
|
|
51
61
|
return this._black;
|
|
52
62
|
}
|
|
@@ -56,11 +66,14 @@ export class PainterCell extends TgdPainterGroup {
|
|
|
56
66
|
this._black = value;
|
|
57
67
|
const { material } = this;
|
|
58
68
|
if (material instanceof TgdMaterialFlatTexture) {
|
|
59
|
-
material.texture = value
|
|
60
|
-
? this.textureBlack
|
|
61
|
-
: this.texturePalette;
|
|
69
|
+
material.texture = value ? this.textureBlack : this.texturePalette;
|
|
62
70
|
}
|
|
63
71
|
}
|
|
72
|
+
paint(time, delta) {
|
|
73
|
+
if (this.context.isDeleted)
|
|
74
|
+
return;
|
|
75
|
+
super.paint(time, delta);
|
|
76
|
+
}
|
|
64
77
|
loadCell() {
|
|
65
78
|
return __awaiter(this, void 0, void 0, function* () {
|
|
66
79
|
const { context, material } = this;
|
|
@@ -89,6 +102,7 @@ export class PainterCell extends TgdPainterGroup {
|
|
|
89
102
|
delete() {
|
|
90
103
|
this.texturePalette.delete();
|
|
91
104
|
this.textureBlack.delete();
|
|
105
|
+
this.isDeleted = true;
|
|
92
106
|
}
|
|
93
107
|
}
|
|
94
108
|
function isCellAsTree(data) {
|
|
@@ -104,19 +118,19 @@ function createPaletteTexture(context, color) {
|
|
|
104
118
|
colors.basalDendrite,
|
|
105
119
|
colors.apicalDendrite,
|
|
106
120
|
colors.myelin,
|
|
107
|
-
colors.unknown
|
|
121
|
+
colors.unknown,
|
|
108
122
|
]);
|
|
109
123
|
const texture = new TgdTexture2D(context, {
|
|
110
124
|
params: {
|
|
111
125
|
minFilter: "NEAREST",
|
|
112
|
-
magFilter: "NEAREST"
|
|
113
|
-
}
|
|
126
|
+
magFilter: "NEAREST",
|
|
127
|
+
},
|
|
114
128
|
}).loadBitmap(canvas);
|
|
115
129
|
return texture;
|
|
116
130
|
}
|
|
117
131
|
function resolveColorsPerSection(color) {
|
|
118
132
|
if (!color) {
|
|
119
|
-
const randomColor = TgdColor.fromHSL(Math.random(), .8, 0.5).toString();
|
|
133
|
+
const randomColor = TgdColor.fromHSL(Math.random(), 0.8, 0.5).toString();
|
|
120
134
|
return {
|
|
121
135
|
apicalDendrite: randomColor,
|
|
122
136
|
axon: randomColor,
|
|
@@ -158,4 +172,4 @@ function applyTransfoToBBox(transfo, bbox) {
|
|
|
158
172
|
}
|
|
159
173
|
return transformedBBox;
|
|
160
174
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1jZWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L3BhaW50ZXIvcGFpbnRlci1jZWxsL3BhaW50ZXItY2VsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLGNBQWMsRUFDZCxRQUFRLEVBRVIsb0JBQW9CLEVBQ3BCLFFBQVEsRUFFUixrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLHNCQUFzQixFQUN0QixlQUFlLEVBQ2YsY0FBYyxFQUNkLE9BQU8sRUFDUCxZQUFZLEVBRVosT0FBTyxFQUNQLG1CQUFtQixFQUNuQixzQkFBc0IsR0FDdkIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRXRDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBc0JwRCxNQUFNLE9BQU8sV0FBWSxTQUFRLGVBQWU7SUFPOUMsWUFDbUIsT0FBbUIsRUFDbkIsT0FBMkI7O1FBRTVDLEtBQUssQ0FBQztZQUNKLElBQUksRUFBRSxpQkFBaUIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7U0FDekMsQ0FBQyxDQUFDO1FBTGMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQVB0QyxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBR2YsZUFBVSxHQUFHLEtBQUssQ0FBQztRQVN6QixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FBQyxPQUFP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
|
|
@@ -32,5 +32,6 @@ export type MorphoViewerSmallCircuitProps = PropsForGizmo & PropsForScalebar & {
|
|
|
32
32
|
loadCell(id: string): Promise<MorphoViewerSmallCircuitCellData | null>;
|
|
33
33
|
onLoadProgress?(progress: number): void;
|
|
34
34
|
controls?: ControlsLayoutProps["content"];
|
|
35
|
+
verbose?: boolean;
|
|
35
36
|
};
|
|
36
37
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-small-circuit/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-small-circuit/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CAChC;AAED,MAAM,MAAM,gCAAgC,GAAG;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,gBAAgB,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,aAAa,GACvD,gBAAgB,GAAG;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,4BAA4B,EAAE,CAAC;IAIxC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,WAAW,CAAC,CAAC,IAAI,EAAE,4BAA4B,GAAG,SAAS,GAAG,IAAI,CAAC;IACnE,WAAW,CAAC,CAAC,IAAI,EAAE,4BAA4B,GAAG,SAAS,GAAG,IAAI,CAAC;IACnE,OAAO,CAAC,IAAI,IAAI,CAAC;IACjB,UAAU,CAAC,IAAI,IAAI,CAAC;IAKpB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC,CAAC;IAOvE,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAM1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC"}
|
package/lib/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openbraininstitute/morphoviewer",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.4",
|
|
4
4
|
"description": "Class to display SWC files in 3D on a canvas",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"url": "https://github.com/openbraininstitute/morphoviewer/issues"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@tolokoban/tgd": "^2.0.
|
|
44
|
+
"@tolokoban/tgd": "^2.0.139",
|
|
45
45
|
"fflate": "^0.8.2",
|
|
46
46
|
"tslib": "^2.8.1"
|
|
47
47
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openbraininstitute/morphoviewer",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.4",
|
|
4
4
|
"description": "Class to display SWC morphology files in 3D",
|
|
5
5
|
"main": "./lib/dist/index.js",
|
|
6
6
|
"module": "./lib/dist/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"react": "^19.2.4"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@tolokoban/tgd": "^2.0.
|
|
37
|
+
"@tolokoban/tgd": "^2.0.139",
|
|
38
38
|
"fflate": "^0.8.2",
|
|
39
39
|
"tslib": "^2.8.1"
|
|
40
40
|
},
|