@openbraininstitute/morphoviewer 0.35.2 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/behaviors/index.d.ts +1 -0
- package/dist/behaviors/index.d.ts.map +1 -1
- package/dist/behaviors/index.js +2 -1
- package/dist/behaviors/tap-guard.d.ts +17 -0
- package/dist/behaviors/tap-guard.d.ts.map +1 -0
- package/dist/behaviors/tap-guard.js +60 -0
- package/dist/components/morpho-viewer-small-circuit/painter/cached-cell-loader.d.ts +6 -0
- package/dist/components/morpho-viewer-small-circuit/painter/cached-cell-loader.d.ts.map +1 -0
- package/dist/components/morpho-viewer-small-circuit/painter/cached-cell-loader.js +12 -0
- package/dist/components/morpho-viewer-small-circuit/painter/dedupe-by-id.d.ts +3 -0
- package/dist/components/morpho-viewer-small-circuit/painter/dedupe-by-id.d.ts.map +1 -0
- package/dist/components/morpho-viewer-small-circuit/painter/dedupe-by-id.js +14 -0
- package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +4 -2
- package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -1
- package/dist/components/morpho-viewer-small-circuit/painter/manager.js +115 -59
- package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts +8 -1
- package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.d.ts.map +1 -1
- package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/offscreen-painter.js +57 -21
- package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/segment-offscreen-painter.d.ts +3 -0
- package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/segment-offscreen-painter.d.ts.map +1 -1
- package/dist/components/morpho-viewer-small-circuit/painter/offscreen-painter/segment-offscreen-painter.js +28 -6
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts +3 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map +1 -1
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +42 -28
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/index.d.ts +5 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/index.d.ts.map +1 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/index.js +4 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/painter-cell-somas-id.d.ts +12 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/painter-cell-somas-id.d.ts.map +1 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/painter-cell-somas-id.js +79 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/painter-cell-somas.d.ts +19 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/painter-cell-somas.d.ts.map +1 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/painter-cell-somas.js +55 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/soma-cloud-data.d.ts +9 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/soma-cloud-data.d.ts.map +1 -0
- package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/soma-cloud-data.js +34 -0
- package/dist/components/morpho-viewer-small-circuit/painter/same-cell.d.ts +3 -0
- package/dist/components/morpho-viewer-small-circuit/painter/same-cell.d.ts.map +1 -0
- package/dist/components/morpho-viewer-small-circuit/painter/same-cell.js +15 -0
- package/dist/components/morpho-viewer-small-circuit/types.d.ts +1 -0
- package/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -1
- package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.d.ts +19 -4
- package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.d.ts.map +1 -1
- package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.js +43 -19
- package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +23 -4
- package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -1
- package/dist/components/morpho-viewer-somas-only/manager/manager.js +149 -29
- package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts +12 -3
- package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts.map +1 -1
- package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.js +168 -76
- package/dist/components/morpho-viewer-somas-only/manager/painter-soma-cloud.d.ts +4 -2
- package/dist/components/morpho-viewer-somas-only/manager/painter-soma-cloud.d.ts.map +1 -1
- package/dist/components/morpho-viewer-somas-only/manager/painter-soma-cloud.js +33 -22
- package/dist/components/morpho-viewer-somas-only/manager/soma-picker.d.ts +15 -0
- package/dist/components/morpho-viewer-somas-only/manager/soma-picker.d.ts.map +1 -0
- package/dist/components/morpho-viewer-somas-only/manager/soma-picker.js +184 -0
- package/dist/components/morpho-viewer-somas-only/types.d.ts +8 -1
- package/dist/components/morpho-viewer-somas-only/types.d.ts.map +1 -1
- package/dist/morphology-picking/index.d.ts +1 -0
- package/dist/morphology-picking/index.d.ts.map +1 -1
- package/dist/morphology-picking/index.js +2 -1
- package/dist/morphology-picking/pick-color-codec.d.ts +4 -0
- package/dist/morphology-picking/pick-color-codec.d.ts.map +1 -0
- package/dist/morphology-picking/pick-color-codec.js +14 -0
- package/dist/package.json +1 -1
- package/dist/painters/overlay-interaction.d.ts +2 -0
- package/dist/painters/overlay-interaction.d.ts.map +1 -1
- package/dist/painters/overlay-interaction.js +11 -1
- package/dist/utils.d.ts +0 -3
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1 -19
- package/package.json +1 -1
- package/dist/components/morpho-viewer-small-circuit/painter/still-pointer.d.ts +0 -9
- package/dist/components/morpho-viewer-small-circuit/painter/still-pointer.d.ts.map +0 -1
- package/dist/components/morpho-viewer-small-circuit/painter/still-pointer.js +0 -9
- package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/rays.d.ts +0 -3
- package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/rays.d.ts.map +0 -1
- package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/rays.js +0 -24
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { TgdDataset, TgdPainter, TgdProgram, TgdShaderFragment, TgdShaderVertex, TgdVertexArray, } from "@tolokoban/tgd";
|
|
2
|
+
import { glslEncodePickColor } from "./../../../../morphology-picking";
|
|
3
|
+
export const CLOUD_FIRST_INDEX = 1 << 23;
|
|
4
|
+
export class PainterCellSomasId extends TgdPainter {
|
|
5
|
+
constructor(context, dataPoint) {
|
|
6
|
+
super("PainterCellSomasId");
|
|
7
|
+
this.context = context;
|
|
8
|
+
this.count = dataPoint.length / 4;
|
|
9
|
+
const instances = new TgdDataset({ attPoint: "vec4" }, { divisor: 1 });
|
|
10
|
+
instances.set("attPoint", dataPoint);
|
|
11
|
+
const billboards = new TgdDataset({ attPointCoord: "vec2" });
|
|
12
|
+
billboards.set("attPointCoord", new Float32Array([-1, -1, +1, -1, +1, +1, -1, +1]));
|
|
13
|
+
this.program = createIdProgram(context);
|
|
14
|
+
this.vao = new TgdVertexArray(context.gl, this.program, [instances, billboards]);
|
|
15
|
+
}
|
|
16
|
+
paint() {
|
|
17
|
+
const { context, program, vao } = this;
|
|
18
|
+
const { gl, camera } = context;
|
|
19
|
+
program.use();
|
|
20
|
+
program.uniform2f("uniAspectRatio", context.aspectRatioInverse, 1);
|
|
21
|
+
program.uniformMatrix4fv("uniModelViewMatrix", camera.matrixModelView);
|
|
22
|
+
program.uniformMatrix4fv("uniProjectionMatrix", camera.matrixProjection);
|
|
23
|
+
vao.bind();
|
|
24
|
+
gl.drawArraysInstanced(gl.TRIANGLE_FAN, 0, 4, this.count);
|
|
25
|
+
vao.unbind();
|
|
26
|
+
}
|
|
27
|
+
delete() {
|
|
28
|
+
this.program.delete();
|
|
29
|
+
this.vao.delete();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function createIdProgram(context) {
|
|
33
|
+
const vert = new TgdShaderVertex({
|
|
34
|
+
uniforms: {
|
|
35
|
+
uniAspectRatio: "vec2",
|
|
36
|
+
uniModelViewMatrix: "mat4",
|
|
37
|
+
uniProjectionMatrix: "mat4",
|
|
38
|
+
},
|
|
39
|
+
attributes: {
|
|
40
|
+
attPoint: "vec4",
|
|
41
|
+
attPointCoord: "vec2",
|
|
42
|
+
},
|
|
43
|
+
varying: {
|
|
44
|
+
varColor: "vec4",
|
|
45
|
+
varPointCoord: "vec2",
|
|
46
|
+
varDepth: "float",
|
|
47
|
+
},
|
|
48
|
+
mainCode: [
|
|
49
|
+
...glslEncodePickColor(`gl_InstanceID + ${CLOUD_FIRST_INDEX}`),
|
|
50
|
+
"float radius = attPoint.w;",
|
|
51
|
+
"vec4 point = uniModelViewMatrix * vec4(attPoint.xyz, 1.0);",
|
|
52
|
+
"gl_Position = uniProjectionMatrix * point;",
|
|
53
|
+
"vec4 depth = point + vec4(0, 0, radius, 0);",
|
|
54
|
+
"vec4 screenDepth = uniProjectionMatrix * depth;",
|
|
55
|
+
"varDepth = (gl_Position.z - screenDepth.z) * .5;",
|
|
56
|
+
"vec4 shift = point + vec4(radius, radius, 0, 0);",
|
|
57
|
+
"vec4 screenShift = uniProjectionMatrix * shift;",
|
|
58
|
+
"float pointSize = abs(screenShift.y - gl_Position.y);",
|
|
59
|
+
"gl_Position.xy += attPointCoord * pointSize * uniAspectRatio;",
|
|
60
|
+
"varPointCoord = attPointCoord;",
|
|
61
|
+
],
|
|
62
|
+
}).code;
|
|
63
|
+
const frag = new TgdShaderFragment({
|
|
64
|
+
varying: {
|
|
65
|
+
varColor: "vec4",
|
|
66
|
+
varPointCoord: "vec2",
|
|
67
|
+
varDepth: "float",
|
|
68
|
+
},
|
|
69
|
+
outputs: { FragColor: "vec4" },
|
|
70
|
+
mainCode: [
|
|
71
|
+
"float z2 = 1.0 - dot(varPointCoord, varPointCoord);",
|
|
72
|
+
"if (z2 < 0.0) discard;",
|
|
73
|
+
"gl_FragDepth = gl_FragCoord.z - sqrt(z2) * varDepth;",
|
|
74
|
+
"FragColor = varColor;",
|
|
75
|
+
],
|
|
76
|
+
}).code;
|
|
77
|
+
return new TgdProgram(context.gl, { vert, frag });
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1jZWxsLXNvbWFzLWlkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L3BhaW50ZXIvcGFpbnRlci1jZWxsLXNvbWFzL3BhaW50ZXItY2VsbC1zb21hcy1pZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBRUwsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVMzRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0FBY3pDLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxVQUFVO0lBS2hELFlBQ2tCLE9BQW1CLEVBRW5DLFNBQXVCO1FBRXZCLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBSlosWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUtuQyxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkUsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDckMsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM3RCxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxF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
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { TgdBoundingBox, type TgdContext, TgdPainterGroup } from "@tolokoban/tgd";
|
|
2
|
+
import type { SomaCloudData } from "./soma-cloud-data";
|
|
3
|
+
export interface PainterCellSomasOptions extends Omit<SomaCloudData, "cells"> {
|
|
4
|
+
opacity?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare class PainterCellSomas extends TgdPainterGroup {
|
|
7
|
+
readonly context: TgdContext;
|
|
8
|
+
private readonly texture;
|
|
9
|
+
private readonly palette;
|
|
10
|
+
private readonly _bbox;
|
|
11
|
+
private _opacity;
|
|
12
|
+
constructor(context: TgdContext, options: PainterCellSomasOptions);
|
|
13
|
+
get bbox(): Readonly<TgdBoundingBox>;
|
|
14
|
+
get opacity(): number;
|
|
15
|
+
set opacity(opacity: number);
|
|
16
|
+
private loadPalette;
|
|
17
|
+
delete(): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=painter-cell-somas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"painter-cell-somas.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-small-circuit/painter/painter-cell-somas/painter-cell-somas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,UAAU,EACf,eAAe,EAIhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAUvD,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;IAE3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgBD,qBAAa,gBAAiB,SAAQ,eAAe;aAOjC,OAAO,EAAE,UAAU;IANrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAS;gBAGP,OAAO,EAAE,UAAU,EACnC,OAAO,EAAE,uBAAuB;IAgClC,IAAI,IAAI,IAAI,QAAQ,CAAC,cAAc,CAAC,CAEnC;IAUD,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAK1B;IAED,OAAO,CAAC,WAAW;IASnB,MAAM,IAAI,IAAI;CAIf"}
|
package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/painter-cell-somas.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { TgdBoundingBox, TgdColor, TgdPainterGroup, TgdPainterPointsCloud, TgdTexture2D, tgdCanvasCreatePalette, } from "@tolokoban/tgd";
|
|
2
|
+
const BBOX_RADIUS_FACTOR = 5;
|
|
3
|
+
export class PainterCellSomas extends TgdPainterGroup {
|
|
4
|
+
constructor(context, options) {
|
|
5
|
+
var _a;
|
|
6
|
+
super({ name: "PainterCellSomas" });
|
|
7
|
+
this.context = context;
|
|
8
|
+
this._bbox = new TgdBoundingBox();
|
|
9
|
+
const { dataPoint, dataUV } = options;
|
|
10
|
+
this.palette = options.palette;
|
|
11
|
+
this._opacity = (_a = options.opacity) !== null && _a !== void 0 ? _a : 1;
|
|
12
|
+
this.texture = new TgdTexture2D(context, {
|
|
13
|
+
params: { magFilter: "NEAREST", minFilter: "NEAREST" },
|
|
14
|
+
});
|
|
15
|
+
this.loadPalette();
|
|
16
|
+
for (let at = 0; at < dataPoint.length; at += 4) {
|
|
17
|
+
const radius = dataPoint[at + 3] * BBOX_RADIUS_FACTOR;
|
|
18
|
+
this._bbox.addSphere(dataPoint[at], dataPoint[at + 1], dataPoint[at + 2], radius);
|
|
19
|
+
}
|
|
20
|
+
this.add(new TgdPainterPointsCloud(context, {
|
|
21
|
+
name: "SomaCloud",
|
|
22
|
+
dataPoint,
|
|
23
|
+
dataUV,
|
|
24
|
+
texture: this.texture,
|
|
25
|
+
fragCode: TgdPainterPointsCloud.fragCodeSphere({
|
|
26
|
+
depthPrecision: "high",
|
|
27
|
+
enableSpecular: true,
|
|
28
|
+
}),
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
get bbox() {
|
|
32
|
+
return this._bbox;
|
|
33
|
+
}
|
|
34
|
+
get opacity() {
|
|
35
|
+
return this._opacity;
|
|
36
|
+
}
|
|
37
|
+
set opacity(opacity) {
|
|
38
|
+
if (opacity === this._opacity)
|
|
39
|
+
return;
|
|
40
|
+
this._opacity = opacity;
|
|
41
|
+
this.loadPalette();
|
|
42
|
+
}
|
|
43
|
+
loadPalette() {
|
|
44
|
+
const { _opacity: opacity } = this;
|
|
45
|
+
const colors = opacity >= 1
|
|
46
|
+
? [...this.palette]
|
|
47
|
+
: this.palette.map((color) => TgdColor.fromString(color).alphaMul(opacity));
|
|
48
|
+
this.texture.loadBitmap(tgdCanvasCreatePalette(colors));
|
|
49
|
+
}
|
|
50
|
+
delete() {
|
|
51
|
+
super.delete();
|
|
52
|
+
this.texture.delete();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1jZWxsLXNvbWFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L3BhaW50ZXIvcGFpbnRlci1jZWxsLXNvbWFzL3BhaW50ZXItY2VsbC1zb21hcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxFQUNkLFFBQVEsRUFFUixlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixzQkFBc0IsR0FDdkIsTUFBTSxnQkFBZ0IsQ0FBQztBQVV4QixNQUFNLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQXFCN0IsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGVBQWU7SUFNbkQsWUFDa0IsT0FBbUIsRUFDbkMsT0FBZ0M7O1FBRWhDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFIcEIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUpwQixVQUFLLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQVE1QyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDL0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFBLE9BQU8sQ0FBQyxPQUFPLG1DQUFJLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRTtZQUN2QyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUU7U0FDdkQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO1lBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEYsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQ04sSUFBSSxxQkFBcUIsQ0FBQyxPQUFPLEVBQUU7WUFDakMsSUFBSSxFQUFFLFdBQVc7WUFDakIsU0FBUztZQUNULE1BQU07WUFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFJckIsUUFBUSxFQUFFLHFCQUFxQixDQUFDLGNBQWMsQ0FBQztnQkFDN0MsY0FBYyxFQUFFLE1BQU07Z0JBQ3RCLGNBQWMsRUFBRSxJQUFJO2FBQ3JCLENBQUM7U0FDSCxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFHRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQVVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsT0FBZTtRQUN6QixJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU87UUFFdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ25DLE1BQU0sTUFBTSxHQUNWLE9BQU8sSUFBSSxDQUFDO1lBQ1YsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNO1FBQ0osS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QixDQUFDO0NBQ0YifQ==
|
package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/soma-cloud-data.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MorphoViewerSmallCircuitCell } from "../../types";
|
|
2
|
+
export interface SomaCloudData {
|
|
3
|
+
cells: MorphoViewerSmallCircuitCell[];
|
|
4
|
+
dataPoint: Float32Array;
|
|
5
|
+
dataUV: Float32Array;
|
|
6
|
+
palette: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare function buildSomaCloudData(circuit: readonly MorphoViewerSmallCircuitCell[]): SomaCloudData;
|
|
9
|
+
//# sourceMappingURL=soma-cloud-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soma-cloud-data.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-small-circuit/painter/painter-cell-somas/soma-cloud-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAYhE,MAAM,WAAW,aAAa;IAE5B,KAAK,EAAE,4BAA4B,EAAE,CAAC;IAEtC,SAAS,EAAE,YAAY,CAAC;IAExB,MAAM,EAAE,YAAY,CAAC;IAErB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AASD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,4BAA4B,EAAE,GAC/C,aAAa,CAgCf"}
|
package/dist/components/morpho-viewer-small-circuit/painter/painter-cell-somas/soma-cloud-data.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const DEFAULT_SOMA_COLOR = "#888";
|
|
2
|
+
export function buildSomaCloudData(circuit) {
|
|
3
|
+
const cells = circuit.filter((cell) => Boolean(cell.somaOnly));
|
|
4
|
+
const palette = [];
|
|
5
|
+
const columnByColor = new Map();
|
|
6
|
+
const columns = cells.map((cell) => {
|
|
7
|
+
const color = somaColor(cell.color);
|
|
8
|
+
const known = columnByColor.get(color);
|
|
9
|
+
if (known !== undefined)
|
|
10
|
+
return known;
|
|
11
|
+
const column = palette.length;
|
|
12
|
+
palette.push(color);
|
|
13
|
+
columnByColor.set(color, column);
|
|
14
|
+
return column;
|
|
15
|
+
});
|
|
16
|
+
const dataPoint = new Float32Array(cells.length * 4);
|
|
17
|
+
const dataUV = new Float32Array(cells.length * 2);
|
|
18
|
+
cells.forEach((cell, index) => {
|
|
19
|
+
const [x, y, z] = cell.center;
|
|
20
|
+
dataPoint[index * 4] = x;
|
|
21
|
+
dataPoint[index * 4 + 1] = y;
|
|
22
|
+
dataPoint[index * 4 + 2] = z;
|
|
23
|
+
dataPoint[index * 4 + 3] = cell.somaRadius;
|
|
24
|
+
dataUV[index * 2] = (columns[index] + 0.5) / palette.length;
|
|
25
|
+
dataUV[index * 2 + 1] = 0.5;
|
|
26
|
+
});
|
|
27
|
+
return { cells, dataPoint, dataUV, palette };
|
|
28
|
+
}
|
|
29
|
+
function somaColor(color) {
|
|
30
|
+
if (!color)
|
|
31
|
+
return DEFAULT_SOMA_COLOR;
|
|
32
|
+
return typeof color === "string" ? color : color.soma;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29tYS1jbG91ZC1kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L3BhaW50ZXIvcGFpbnRlci1jZWxsLXNvbWFzL3NvbWEtY2xvdWQtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztBQXFCbEMsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxPQUFnRDtJQUtoRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDL0QsTUFBTSxPQUFPLEdBQWEsRUFBRSxDQUFDO0lBQzdCLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQ2hELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNqQyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEtBQUssU0FBUztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXRDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sU0FBUyxHQUFHLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzVCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFHOUIsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBRTNDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUM1RCxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDL0MsQ0FBQztBQUdELFNBQVMsU0FBUyxDQUFDLEtBQTRDO0lBQzdELElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxrQkFBa0IsQ0FBQztJQUV0QyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0FBQ3hELENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"same-cell.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-small-circuit/painter/same-cell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAiB,MAAM,UAAU,CAAC;AAe5E,wBAAgB,UAAU,CACxB,CAAC,EAAE,4BAA4B,EAC/B,CAAC,EAAE,4BAA4B,GAC9B,OAAO,CAOT"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function isSameCell(a, b) {
|
|
2
|
+
return (a.somaRadius === b.somaRadius &&
|
|
3
|
+
a.center.every((value, index) => value === b.center[index]) &&
|
|
4
|
+
a.orientation.every((value, index) => value === b.orientation[index]) &&
|
|
5
|
+
isSameColor(a.color, b.color));
|
|
6
|
+
}
|
|
7
|
+
function isSameColor(a, b) {
|
|
8
|
+
if (a === b)
|
|
9
|
+
return true;
|
|
10
|
+
if (!a || !b || typeof a === "string" || typeof b === "string")
|
|
11
|
+
return false;
|
|
12
|
+
const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
|
|
13
|
+
return [...keys].every((key) => a[key] === b[key]);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FtZS1jZWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zbWFsbC1jaXJjdWl0L3BhaW50ZXIvc2FtZS1jZWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWVBLE1BQU0sVUFBVSxVQUFVLENBQ3hCLENBQStCLEVBQy9CLENBQStCO0lBRS9CLE9BQU8sQ0FDTCxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxVQUFVO1FBQzdCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRSxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQzlCLENBQUM7QUFDSixDQUFDO0FBR0QsU0FBUyxXQUFXLENBQ2xCLENBQXdDLEVBQ3hDLENBQXdDO0lBRXhDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFN0UsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQTZCLENBQUM7SUFDekYsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyJ9
|
|
@@ -17,6 +17,7 @@ export interface MorphoViewerSmallCircuitCell {
|
|
|
17
17
|
orientation: [x: number, y: number, z: number, w: number];
|
|
18
18
|
somaRadius: number;
|
|
19
19
|
color?: string | SectionColors;
|
|
20
|
+
somaOnly?: boolean;
|
|
20
21
|
}
|
|
21
22
|
export interface MorphoViewerMorphologyLocationPick {
|
|
22
23
|
cell: MorphoViewerSmallCircuitCell;
|
|
@@ -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,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EACV,wBAAwB,EACxB,aAAa,EACb,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAElB,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;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/morpho-viewer-small-circuit/types.ts"],"names":[],"mappings":"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"}
|
package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.d.ts
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import type { ArrayNumber3 } from "@tolokoban/tgd";
|
|
2
|
-
export declare
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export declare class AmbientOcclusionComputation {
|
|
3
|
+
private readonly bbox;
|
|
4
|
+
private readonly radius;
|
|
5
|
+
private readonly points;
|
|
6
|
+
private readonly totals;
|
|
7
|
+
private maxTotal;
|
|
8
|
+
private cursor;
|
|
9
|
+
private proximity;
|
|
10
|
+
private readonly radiusSquare;
|
|
11
|
+
private accumulator;
|
|
12
|
+
private readonly addNeighbor;
|
|
13
|
+
constructor(bbox: {
|
|
14
|
+
min: ArrayNumber3;
|
|
15
|
+
max: ArrayNumber3;
|
|
16
|
+
}, radius: number, points: Float32Array);
|
|
17
|
+
get done(): boolean;
|
|
18
|
+
advance(count: number): boolean;
|
|
19
|
+
writeInto(uvs: Float32Array): void;
|
|
20
|
+
}
|
|
6
21
|
//# sourceMappingURL=ambient-occlusion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ambient-occlusion.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ambient-occlusion.d.ts","sourceRoot":"","sources":["../../../../../src/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAkBnD,qBAAa,2BAA2B;IAgCpC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjCzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,OAAO,CAAC,QAAQ,CAAK;IAErB,OAAO,CAAC,MAAM,CAAK;IAGnB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAUtC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAQ1B;gBAGiB,IAAI,EAAE;QAAE,GAAG,EAAE,YAAY,CAAC;QAAC,GAAG,EAAE,YAAY,CAAA;KAAE,EAC9C,MAAM,EAAE,MAAM,EAEd,MAAM,EAAE,YAAY;IAMvC,IAAI,IAAI,IAAI,OAAO,CAGlB;IAGD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAyB/B,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;CASnC"}
|
package/dist/components/morpho-viewer-somas-only/manager/ambient-occlusion/ambient-occlusion.js
CHANGED
|
@@ -1,24 +1,48 @@
|
|
|
1
1
|
import { Proximity } from "./proximity";
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export class AmbientOcclusionComputation {
|
|
3
|
+
constructor(bbox, radius, points) {
|
|
4
|
+
this.bbox = bbox;
|
|
5
|
+
this.radius = radius;
|
|
6
|
+
this.points = points;
|
|
7
|
+
this.maxTotal = 0;
|
|
8
|
+
this.cursor = 0;
|
|
9
|
+
this.proximity = null;
|
|
10
|
+
this.accumulator = 0;
|
|
11
|
+
this.addNeighbor = (_x, _y, _z, _r, distSquare) => {
|
|
12
|
+
this.accumulator += this.radiusSquare - distSquare;
|
|
13
|
+
};
|
|
14
|
+
this.totals = new Float32Array(points.length >> 2);
|
|
15
|
+
this.radiusSquare = radius * radius;
|
|
6
16
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
let indexUV = 1;
|
|
10
|
-
let maxAO = 0;
|
|
11
|
-
for (let pointIndex = 0; pointIndex < points.length; pointIndex += 4) {
|
|
12
|
-
let totalAO = 0;
|
|
13
|
-
proximity.forEachNeighbor(pointIndex, (_X, _Y, _Z, _R, distSquare) => (totalAO += radiusSquare - distSquare));
|
|
14
|
-
uvs[indexUV] = totalAO;
|
|
15
|
-
maxAO = Math.max(maxAO, totalAO);
|
|
16
|
-
indexUV += 2;
|
|
17
|
+
get done() {
|
|
18
|
+
return this.cursor >= this.totals.length || this.bbox.min[0] > this.bbox.max[0];
|
|
17
19
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
advance(count) {
|
|
21
|
+
var _a;
|
|
22
|
+
if (this.done)
|
|
23
|
+
return true;
|
|
24
|
+
const proximity = ((_a = this.proximity) !== null && _a !== void 0 ? _a : (this.proximity = new Proximity(this.points, this.bbox, this.radius)));
|
|
25
|
+
const { totals } = this;
|
|
26
|
+
const end = Math.min(totals.length, this.cursor + count);
|
|
27
|
+
for (let soma = this.cursor; soma < end; soma++) {
|
|
28
|
+
this.accumulator = 0;
|
|
29
|
+
proximity.forEachNeighbor(soma * 4, this.addNeighbor);
|
|
30
|
+
const total = this.accumulator;
|
|
31
|
+
totals[soma] = total;
|
|
32
|
+
if (total > this.maxTotal)
|
|
33
|
+
this.maxTotal = total;
|
|
34
|
+
}
|
|
35
|
+
this.cursor = end;
|
|
36
|
+
return this.done;
|
|
37
|
+
}
|
|
38
|
+
writeInto(uvs) {
|
|
39
|
+
const { totals, maxTotal } = this;
|
|
40
|
+
if (maxTotal <= 0)
|
|
41
|
+
return;
|
|
42
|
+
const invMax = 1 / maxTotal;
|
|
43
|
+
for (let soma = 0; soma < totals.length; soma++) {
|
|
44
|
+
uvs[soma * 2 + 1] = totals[soma] * invMax;
|
|
45
|
+
}
|
|
21
46
|
}
|
|
22
|
-
return uvs;
|
|
23
47
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1iaWVudC1vY2NsdXNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb3JwaG8tdmlld2VyLXNvbWFzLW9ubHkvbWFuYWdlci9hbWJpZW50LW9jY2x1c2lvbi9hbWJpZW50LW9jY2x1c2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBb0J4QyxNQUFNLE9BQU8sMkJBQTJCO0lBK0J0QyxZQUNtQixJQUE4QyxFQUM5QyxNQUFjLEVBRWQsTUFBb0I7UUFIcEIsU0FBSSxHQUFKLElBQUksQ0FBMEM7UUFDOUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUVkLFdBQU0sR0FBTixNQUFNLENBQWM7UUEvQi9CLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFFYixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBR1gsY0FBUyxHQUFxQixJQUFJLENBQUM7UUFXbkMsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFDUCxnQkFBVyxHQUFHLENBQzdCLEVBQVUsRUFDVixFQUFVLEVBQ1YsRUFBVSxFQUNWLEVBQVUsRUFDVixVQUFrQixFQUNsQixFQUFFO1lBQ0YsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztRQUNyRCxDQUFDLENBQUM7UUFRQSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFFTixPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUdELE9BQU8sQ0FBQyxLQUFhOztRQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFM0IsTUFBTSxTQUFTLEdBQUcsT0FBQyxJQUFJLENBQUMsU0FBUyxvQ0FBZCxJQUFJLENBQUMsU0FBUyxHQUFLLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQztRQUMxRixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3pELEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDckIsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVE7Z0JBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBVUQsU0FBUyxDQUFDLEdBQWlCO1FBQ3pCLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLElBQUksUUFBUSxJQUFJLENBQUM7WUFBRSxPQUFPO1FBRTFCLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDNUIsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNoRCxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
|
|
@@ -2,18 +2,29 @@ import { TgdEvent, type TgdPainterGizmoOptions } from "@tolokoban/tgd";
|
|
|
2
2
|
import type { MorphoViewerSignalCameraResetOptions, MorphoViewerSignalSnapshotOptions } from "../../signals";
|
|
3
3
|
import type { MorphoViewerOverlayTransformEvent, MorphoViewerWorldOverlay } from "../../types";
|
|
4
4
|
import type { MorphoViewerSpikes } from "../../../spikes";
|
|
5
|
-
import type { MorphoViewerCellInfo, MorphoViewerSomasOnlyProps } from "../types";
|
|
5
|
+
import type { MorphoViewerCellColors, MorphoViewerCellInfo, MorphoViewerSomasOnlyProps } from "../types";
|
|
6
6
|
declare class PainterManager {
|
|
7
7
|
readonly eventScalebar: TgdEvent<number>;
|
|
8
8
|
readonly eventSpikeTime: TgdEvent<number>;
|
|
9
|
+
readonly eventCellClick: TgdEvent<number>;
|
|
10
|
+
get cellPickingEnabled(): boolean;
|
|
11
|
+
set cellPickingEnabled(enabled: boolean);
|
|
12
|
+
private readonly tapGuard;
|
|
9
13
|
readonly eventSpikePlaying: TgdEvent<boolean>;
|
|
10
14
|
private _canvas;
|
|
11
15
|
private _overlayCanvas;
|
|
12
16
|
private _cellInfos;
|
|
17
|
+
private _positions;
|
|
18
|
+
private _cellColors;
|
|
19
|
+
private colorsPending;
|
|
20
|
+
private appliedPalette;
|
|
21
|
+
private hiddenSomas;
|
|
13
22
|
private _backgroundColor;
|
|
14
23
|
private readonly parsedBackgroundColor;
|
|
15
24
|
private painterCellInfos;
|
|
16
25
|
private readonly spiking;
|
|
26
|
+
private somaPicker;
|
|
27
|
+
private _cellPickingEnabled;
|
|
17
28
|
private painterOverlays;
|
|
18
29
|
private readonly overlaySurface;
|
|
19
30
|
private overlayInteraction;
|
|
@@ -25,7 +36,6 @@ declare class PainterManager {
|
|
|
25
36
|
private _highlightedOverlayId;
|
|
26
37
|
private _pinnedOverlayOrigin;
|
|
27
38
|
private _pinTimeout;
|
|
28
|
-
private state;
|
|
29
39
|
private painterClear;
|
|
30
40
|
private context;
|
|
31
41
|
private orbit;
|
|
@@ -65,14 +75,22 @@ declare class PainterManager {
|
|
|
65
75
|
set spikeSpeed(speed: number);
|
|
66
76
|
get spikeAfterglowInSeconds(): number;
|
|
67
77
|
set spikeAfterglowInSeconds(afterglowInSeconds: number);
|
|
78
|
+
get cellColors(): MorphoViewerCellColors | undefined;
|
|
79
|
+
set cellColors(cellColors: MorphoViewerCellColors | undefined);
|
|
80
|
+
applyPendingColors(): void;
|
|
81
|
+
private get cellPalette();
|
|
82
|
+
private get cellCount();
|
|
83
|
+
get positions(): Float32Array | null;
|
|
68
84
|
get cellInfos(): MorphoViewerCellInfo[];
|
|
69
|
-
|
|
85
|
+
setGeometry(positions: Float32Array | null, cellInfos: MorphoViewerCellInfo[]): void;
|
|
86
|
+
private rebuild;
|
|
70
87
|
setOverlays(overlays: MorphoViewerWorldOverlay[] | undefined, overlaysRadius: number, overlaysMinRadiusInPixels: number): void;
|
|
71
88
|
setOverlayInteraction(interactive: boolean, onTransform?: (event: MorphoViewerOverlayTransformEvent) => void): void;
|
|
72
89
|
get highlightedOverlayId(): string | null;
|
|
73
90
|
set highlightedOverlayId(id: string | null | undefined);
|
|
74
91
|
private applyOverlays;
|
|
75
92
|
private recolorInPlace;
|
|
93
|
+
private applyHiddenSomas;
|
|
76
94
|
readonly cameraReset: (options?: MorphoViewerSignalCameraResetOptions) => void;
|
|
77
95
|
readonly snapshot: (options?: MorphoViewerSignalSnapshotOptions) => Promise<HTMLImageElement | null>;
|
|
78
96
|
private applyBBoxToCamera;
|
|
@@ -83,9 +101,10 @@ declare class PainterManager {
|
|
|
83
101
|
private pinOverlaysAfterDrag;
|
|
84
102
|
private clearPinnedOverlay;
|
|
85
103
|
private _cameraChangeTimeout;
|
|
104
|
+
private readonly handlePointerTap;
|
|
86
105
|
private handleCameraChange;
|
|
87
106
|
private delete;
|
|
88
107
|
}
|
|
89
108
|
export type { PainterManager };
|
|
90
|
-
export declare function useManager({ cellInfos, somaRadius, gizmo, cameraType, backgroundColor, overlays, overlaysRadius, overlaysMinRadiusInPixels, overlaysInteractive, onOverlayTransform, highlightedOverlayId, neuronOpacity, signals, spikes, spikeTime, onSpikeTimeChange, spikePlaying, onSpikePlayingChange, spikeSpeed, spikeAfterglowInSeconds, }: MorphoViewerSomasOnlyProps): PainterManager;
|
|
109
|
+
export declare function useManager({ positions, cellInfos, cellColors, somaRadius, gizmo, cameraType, backgroundColor, overlays, overlaysRadius, overlaysMinRadiusInPixels, overlaysInteractive, onOverlayTransform, highlightedOverlayId, onCellClick, neuronOpacity, signals, spikes, spikeTime, onSpikeTimeChange, spikePlaying, onSpikePlayingChange, spikeSpeed, spikeAfterglowInSeconds, }: MorphoViewerSomasOnlyProps): PainterManager;
|
|
91
110
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,QAAQ,EAER,KAAK,sBAAsB,EAM5B,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/manager.ts"],"names":[],"mappings":"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"}
|