@openbraininstitute/morphoviewer 0.30.1 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.js +13 -8
  2. package/dist/components/morpho-viewer-small-circuit/morpho-viewer-small-circuit.module.css +10 -0
  3. package/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts +2 -0
  4. package/dist/components/morpho-viewer-small-circuit/painter/camera.d.ts.map +1 -1
  5. package/dist/components/morpho-viewer-small-circuit/painter/camera.js +9 -1
  6. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts +34 -5
  7. package/dist/components/morpho-viewer-small-circuit/painter/manager.d.ts.map +1 -1
  8. package/dist/components/morpho-viewer-small-circuit/painter/manager.js +267 -8
  9. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-diffuse-alpha.d.ts +26 -0
  10. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-diffuse-alpha.d.ts.map +1 -0
  11. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/material-diffuse-alpha.js +105 -0
  12. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts +3 -0
  13. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.d.ts.map +1 -1
  14. package/dist/components/morpho-viewer-small-circuit/painter/painter-cell/painter-cell.js +19 -4
  15. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts +6 -8
  16. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.d.ts.map +1 -1
  17. package/dist/components/morpho-viewer-small-circuit/painter/painter-synapses/painter-synapses.js +2 -1
  18. package/dist/components/morpho-viewer-small-circuit/types.d.ts +6 -2
  19. package/dist/components/morpho-viewer-small-circuit/types.d.ts.map +1 -1
  20. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts +29 -1
  21. package/dist/components/morpho-viewer-somas-only/manager/manager.d.ts.map +1 -1
  22. package/dist/components/morpho-viewer-somas-only/manager/manager.js +245 -5
  23. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts +5 -0
  24. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.d.ts.map +1 -1
  25. package/dist/components/morpho-viewer-somas-only/manager/painter-cell-infos.js +43 -6
  26. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.js +13 -8
  27. package/dist/components/morpho-viewer-somas-only/morpho-viewer-somas-only.module.css +10 -0
  28. package/dist/components/morpho-viewer-somas-only/types.d.ts +6 -2
  29. package/dist/components/morpho-viewer-somas-only/types.d.ts.map +1 -1
  30. package/dist/components/types.d.ts +32 -0
  31. package/dist/components/types.d.ts.map +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/package.json +2 -2
  35. package/dist/painters/overlay-interaction.d.ts +49 -0
  36. package/dist/painters/overlay-interaction.d.ts.map +1 -0
  37. package/dist/painters/overlay-interaction.js +432 -0
  38. package/dist/painters/overlay-surface.d.ts +18 -0
  39. package/dist/painters/overlay-surface.d.ts.map +1 -0
  40. package/dist/painters/overlay-surface.js +83 -0
  41. package/dist/painters/world-overlays.d.ts +25 -0
  42. package/dist/painters/world-overlays.d.ts.map +1 -0
  43. package/dist/painters/world-overlays.js +185 -0
  44. package/package.json +2 -2
@@ -1,18 +1,31 @@
1
1
  import { __awaiter } from "tslib";
2
- import { TgdBoundingBox, TgdCameraOrthographic, TgdCameraPerspective, TgdColor, TgdContext, TgdControllerCameraOrbit, TgdEvent, TgdPainterClear, TgdPainterState, tgdActionCreateCameraInterpolation, } from "@tolokoban/tgd";
2
+ import { TgdBoundingBox, TgdCameraOrthographic, TgdCameraPerspective, TgdColor, TgdContext, TgdControllerCameraOrbit, TgdEvent, TgdPainterClear, TgdPainterState, tgdActionCreateCameraInterpolation, webglBlendGet, webglBlendSet, webglPresetBlend, } from "@tolokoban/tgd";
3
3
  import React from "react";
4
4
  import { watchSpacePerPixel } from "./../../../behaviors";
5
5
  import { PainterGizmo } from "./../../../painters/gizmo";
6
+ import { OverlayInteractionController } from "./../../../painters/overlay-interaction";
7
+ import { OverlaySurface } from "./../../../painters/overlay-surface";
6
8
  import { AdpatativeResolution } from "./adaptative-resolution";
7
9
  import { PainterCellInfos } from "./painter-cell-infos";
8
10
  class PainterManager {
9
11
  constructor() {
10
12
  this.eventScalebar = new TgdEvent();
11
13
  this._canvas = null;
14
+ this._overlayCanvas = null;
12
15
  this._cellInfos = [];
13
16
  this._backgroundColor = "black";
14
17
  this.parsedBackgroundColor = new TgdColor(0, 0, 0, 1);
15
18
  this.painterCellInfos = null;
19
+ this.painterOverlays = null;
20
+ this.overlaySurface = new OverlaySurface();
21
+ this.overlayInteraction = null;
22
+ this._overlays = [];
23
+ this._overlaysRadius = 5;
24
+ this._overlaysMinRadiusInPixels = 4;
25
+ this._overlaysInteractive = false;
26
+ this._highlightedOverlayId = null;
27
+ this._pinnedOverlayOrigin = null;
28
+ this._pinTimeout = null;
16
29
  this.state = null;
17
30
  this.painterClear = null;
18
31
  this.context = null;
@@ -22,6 +35,8 @@ class PainterManager {
22
35
  this.painterGizmo = new PainterGizmo();
23
36
  this.adaptativeResolution = new AdpatativeResolution();
24
37
  this._somaRadius = 1;
38
+ this._neuronOpacity = 1;
39
+ this.spacePerPixel = 1;
25
40
  this.cameraOrtho = new TgdCameraOrthographic({
26
41
  name: "CameraOrtho",
27
42
  });
@@ -72,6 +87,9 @@ class PainterManager {
72
87
  context.paint();
73
88
  return image;
74
89
  });
90
+ this.handleSpacePerPixel = (spacePerPixel) => {
91
+ this.spacePerPixel = spacePerPixel;
92
+ };
75
93
  this._cameraChangeTimeout = -1;
76
94
  this.handleCameraChange = () => {
77
95
  const { context } = this;
@@ -115,6 +133,18 @@ class PainterManager {
115
133
  }
116
134
  this.adaptativeResolution.reset();
117
135
  }
136
+ get neuronOpacity() {
137
+ return this._neuronOpacity;
138
+ }
139
+ set neuronOpacity(neuronOpacity) {
140
+ const opacity = clamp01(neuronOpacity);
141
+ if (this._neuronOpacity === opacity)
142
+ return;
143
+ this._neuronOpacity = opacity;
144
+ if (this.painterCellInfos) {
145
+ this.painterCellInfos.opacity = opacity;
146
+ }
147
+ }
118
148
  get canvas() {
119
149
  return this._canvas;
120
150
  }
@@ -127,6 +157,15 @@ class PainterManager {
127
157
  else
128
158
  this.delete();
129
159
  }
160
+ get overlayCanvas() {
161
+ return this._overlayCanvas;
162
+ }
163
+ set overlayCanvas(canvas) {
164
+ if (this._overlayCanvas === canvas)
165
+ return;
166
+ this._overlayCanvas = canvas;
167
+ this.bindOverlaySurface();
168
+ }
130
169
  get backgroundColor() {
131
170
  return this._backgroundColor;
132
171
  }
@@ -162,6 +201,74 @@ class PainterManager {
162
201
  }
163
202
  this.initialize();
164
203
  }
204
+ setOverlays(overlays, overlaysRadius, overlaysMinRadiusInPixels) {
205
+ var _a, _b;
206
+ this._overlaysRadius = overlaysRadius;
207
+ this._overlaysMinRadiusInPixels = overlaysMinRadiusInPixels;
208
+ if ((_a = this.overlayInteraction) === null || _a === void 0 ? void 0 : _a.isDragging) {
209
+ const painter = this.painterOverlays;
210
+ if (painter) {
211
+ painter.radius = this._overlaysRadius;
212
+ painter.minRadiusInPixels = this._overlaysMinRadiusInPixels;
213
+ }
214
+ return;
215
+ }
216
+ if (this._pinnedOverlayOrigin && (overlays === null || overlays === void 0 ? void 0 : overlays.length)) {
217
+ const host = overlays.find((o) => o.id === this._pinnedOverlayOrigin.id && o.origin);
218
+ const tip = readOverlayTip(overlays, this._pinnedOverlayOrigin.id);
219
+ if ((host === null || host === void 0 ? void 0 : host.origin) &&
220
+ tip &&
221
+ originsNearlyEqual(host.origin, this._pinnedOverlayOrigin.origin) &&
222
+ rotationsNearlyEqual(host.rotation, this._pinnedOverlayOrigin.rotation) &&
223
+ originsNearlyEqual(tip, this._pinnedOverlayOrigin.tip)) {
224
+ this.clearPinnedOverlay();
225
+ }
226
+ else {
227
+ const painter = this.painterOverlays;
228
+ if (painter) {
229
+ painter.radius = this._overlaysRadius;
230
+ painter.minRadiusInPixels = this._overlaysMinRadiusInPixels;
231
+ }
232
+ return;
233
+ }
234
+ }
235
+ this._overlays = cloneOverlays(overlays);
236
+ this.applyOverlays();
237
+ (_b = this.context) === null || _b === void 0 ? void 0 : _b.paint();
238
+ }
239
+ setOverlayInteraction(interactive, onTransform) {
240
+ var _a, _b, _c;
241
+ this._overlaysInteractive = interactive;
242
+ this._onOverlayTransform = onTransform;
243
+ (_a = this.overlayInteraction) === null || _a === void 0 ? void 0 : _a.setOnTransform(onTransform);
244
+ if (interactive) {
245
+ (_b = this.overlayInteraction) === null || _b === void 0 ? void 0 : _b.attach();
246
+ }
247
+ else {
248
+ (_c = this.overlayInteraction) === null || _c === void 0 ? void 0 : _c.detach();
249
+ }
250
+ }
251
+ get highlightedOverlayId() {
252
+ return this._highlightedOverlayId;
253
+ }
254
+ set highlightedOverlayId(id) {
255
+ var _a;
256
+ const next = id !== null && id !== void 0 ? id : null;
257
+ if (this._highlightedOverlayId === next)
258
+ return;
259
+ this._highlightedOverlayId = next;
260
+ if (!((_a = this.overlayInteraction) === null || _a === void 0 ? void 0 : _a.isDragging) && this.painterOverlays) {
261
+ this.painterOverlays.highlightedId = next;
262
+ }
263
+ }
264
+ applyOverlays() {
265
+ const { painterOverlays } = this;
266
+ if (!painterOverlays)
267
+ return;
268
+ painterOverlays.overlays = this._overlays;
269
+ painterOverlays.radius = this._overlaysRadius;
270
+ painterOverlays.minRadiusInPixels = this._overlaysMinRadiusInPixels;
271
+ }
165
272
  recolorInPlace() {
166
273
  const { context, state, cellInfos } = this;
167
274
  if (!context || !state)
@@ -170,6 +277,7 @@ class PainterManager {
170
277
  const painterCellInfos = new PainterCellInfos(context, {
171
278
  cellInfos,
172
279
  somaRadius: this.somaRadius,
280
+ opacity: this._neuronOpacity,
173
281
  });
174
282
  this.painterCellInfos = painterCellInfos;
175
283
  this.bbox = painterCellInfos.bbox;
@@ -206,6 +314,7 @@ class PainterManager {
206
314
  this.context = context;
207
315
  this.adaptativeResolution.context = context;
208
316
  this.scalebarCleanup = watchSpacePerPixel(context, this.eventScalebar);
317
+ this.eventScalebar.addListener(this.handleSpacePerPixel);
209
318
  this.parsedBackgroundColor.parse(this._backgroundColor);
210
319
  const clear = new TgdPainterClear(context, {
211
320
  color: this.parsedBackgroundColor.toArayNumber4(),
@@ -215,11 +324,25 @@ class PainterManager {
215
324
  const painterCellInfos = new PainterCellInfos(context, {
216
325
  cellInfos,
217
326
  somaRadius: this.somaRadius,
327
+ opacity: this._neuronOpacity,
218
328
  });
219
329
  this.painterCellInfos = painterCellInfos;
330
+ let savedNeuronBlend;
220
331
  const state = new TgdPainterState(context, {
221
332
  depth: "less",
222
333
  children: [painterCellInfos],
334
+ onEnter: () => {
335
+ if (this._neuronOpacity >= 1)
336
+ return;
337
+ savedNeuronBlend = webglBlendGet(context);
338
+ webglBlendSet(context, webglPresetBlend.alpha);
339
+ },
340
+ onExit: () => {
341
+ if (!savedNeuronBlend)
342
+ return;
343
+ webglBlendSet(context, savedNeuronBlend);
344
+ savedNeuronBlend = undefined;
345
+ },
223
346
  });
224
347
  this.state = state;
225
348
  this.painterGizmo.context = context;
@@ -235,21 +358,93 @@ class PainterManager {
235
358
  inertiaZoom: 300,
236
359
  });
237
360
  this.orbit.eventChange.addListener(this.handleCameraChange);
361
+ this.overlayInteraction = new OverlayInteractionController({
362
+ context,
363
+ getOverlays: () => this._overlays,
364
+ setOverlays: (overlays) => {
365
+ this._overlays = overlays;
366
+ this.applyOverlays();
367
+ },
368
+ syncOverlayPositions: () => {
369
+ var _a;
370
+ (_a = this.painterOverlays) === null || _a === void 0 ? void 0 : _a.syncPositions();
371
+ },
372
+ getHitRadiusPixels: () => Math.max(this._overlaysMinRadiusInPixels * 1.8, this._overlaysRadius / Math.max(this.spacePerPixel, 1e-6)),
373
+ getOrbit: () => this.orbit,
374
+ setHighlightedId: (id) => {
375
+ if (this.painterOverlays) {
376
+ this.painterOverlays.highlightedId = id !== null && id !== void 0 ? id : this._highlightedOverlayId;
377
+ }
378
+ },
379
+ onTransform: this._onOverlayTransform,
380
+ onDragStart: () => this.overlaySurface.beginDrag(),
381
+ onDragEnd: (id) => {
382
+ this.overlaySurface.endDrag();
383
+ this.pinOverlaysAfterDrag(id);
384
+ },
385
+ });
386
+ if (this._overlaysInteractive)
387
+ this.overlayInteraction.attach();
388
+ this.bindOverlaySurface();
238
389
  context.paint();
239
390
  context.execAfterNextPaint(() => this.cameraReset());
240
391
  }
392
+ bindOverlaySurface() {
393
+ this.overlaySurface.setCanvas(this._overlayCanvas, this.context);
394
+ this.painterOverlays = this.overlaySurface.overlaysPainter;
395
+ if (this.painterOverlays)
396
+ this.applyOverlays();
397
+ }
398
+ pinOverlaysAfterDrag(id) {
399
+ var _a, _b, _c;
400
+ this.clearPinnedOverlay();
401
+ if (!this._onOverlayTransform)
402
+ return;
403
+ const withOrigin = this._overlays.find((o) => o.id === id && o.origin);
404
+ if (!(withOrigin === null || withOrigin === void 0 ? void 0 : withOrigin.id) || !withOrigin.origin)
405
+ return;
406
+ const tip = readOverlayTip(this._overlays, withOrigin.id);
407
+ if (!tip)
408
+ return;
409
+ const rot = withOrigin.rotation;
410
+ this._pinnedOverlayOrigin = {
411
+ id: withOrigin.id,
412
+ origin: [withOrigin.origin[0], withOrigin.origin[1], withOrigin.origin[2]],
413
+ rotation: {
414
+ x: (_a = rot === null || rot === void 0 ? void 0 : rot.x) !== null && _a !== void 0 ? _a : 0,
415
+ y: (_b = rot === null || rot === void 0 ? void 0 : rot.y) !== null && _b !== void 0 ? _b : 0,
416
+ z: (_c = rot === null || rot === void 0 ? void 0 : rot.z) !== null && _c !== void 0 ? _c : 0,
417
+ },
418
+ tip,
419
+ };
420
+ this._pinTimeout = setTimeout(() => this.clearPinnedOverlay(), OVERLAY_PIN_TIMEOUT_MS);
421
+ }
422
+ clearPinnedOverlay() {
423
+ this._pinnedOverlayOrigin = null;
424
+ if (this._pinTimeout !== null) {
425
+ clearTimeout(this._pinTimeout);
426
+ this._pinTimeout = null;
427
+ }
428
+ }
241
429
  delete() {
242
- var _a, _b;
430
+ var _a, _b, _c;
431
+ this.clearPinnedOverlay();
243
432
  this.adaptativeResolution.context = null;
244
433
  if (!this.context) {
245
434
  return;
246
435
  }
247
436
  (_a = this.scalebarCleanup) === null || _a === void 0 ? void 0 : _a.call(this);
248
- (_b = this.orbit) === null || _b === void 0 ? void 0 : _b.detach();
437
+ this.eventScalebar.removeListener(this.handleSpacePerPixel);
438
+ (_b = this.overlayInteraction) === null || _b === void 0 ? void 0 : _b.detach();
439
+ this.overlayInteraction = null;
440
+ this.overlaySurface.delete();
441
+ (_c = this.orbit) === null || _c === void 0 ? void 0 : _c.detach();
249
442
  this.orbit = null;
250
443
  this.painterClear = null;
251
444
  this.state = null;
252
445
  this.painterCellInfos = null;
446
+ this.painterOverlays = null;
447
+ this.painterGizmo.context = null;
253
448
  this.context.delete();
254
449
  this.context = null;
255
450
  }
@@ -270,7 +465,40 @@ function sameGeometry(a, b) {
270
465
  }
271
466
  return true;
272
467
  }
273
- export function useManager({ cellInfos, somaRadius, gizmo, cameraType, backgroundColor, signals, }) {
468
+ function clamp01(value) {
469
+ if (Number.isNaN(value))
470
+ return 1;
471
+ return Math.min(1, Math.max(0, value));
472
+ }
473
+ const OVERLAY_PIN_TIMEOUT_MS = 2000;
474
+ function cloneOverlays(overlays) {
475
+ if (!(overlays === null || overlays === void 0 ? void 0 : overlays.length))
476
+ return [];
477
+ return overlays.map((overlay) => (Object.assign(Object.assign({}, overlay), { origin: overlay.origin ? [...overlay.origin] : undefined, rotation: overlay.rotation ? Object.assign({}, overlay.rotation) : undefined })));
478
+ }
479
+ const ORIGIN_EPS = 0.05;
480
+ const ROT_EPS = 0.05;
481
+ function originsNearlyEqual(a, b) {
482
+ return (Math.abs(a[0] - b[0]) <= ORIGIN_EPS &&
483
+ Math.abs(a[1] - b[1]) <= ORIGIN_EPS &&
484
+ Math.abs(a[2] - b[2]) <= ORIGIN_EPS);
485
+ }
486
+ function rotationsNearlyEqual(a, b) {
487
+ var _a, _b, _c;
488
+ return (Math.abs(((_a = a === null || a === void 0 ? void 0 : a.x) !== null && _a !== void 0 ? _a : 0) - b.x) <= ROT_EPS &&
489
+ Math.abs(((_b = a === null || a === void 0 ? void 0 : a.y) !== null && _b !== void 0 ? _b : 0) - b.y) <= ROT_EPS &&
490
+ Math.abs(((_c = a === null || a === void 0 ? void 0 : a.z) !== null && _c !== void 0 ? _c : 0) - b.z) <= ROT_EPS);
491
+ }
492
+ function readOverlayTip(overlays, id) {
493
+ var _a;
494
+ const prefer = overlays.find((o) => o.id === id && (o.kind === "electrodes" || !o.kind) && o.coordinates.length >= 3);
495
+ const fallback = overlays.find((o) => o.id === id && o.coordinates.length >= 3);
496
+ const coords = (_a = prefer === null || prefer === void 0 ? void 0 : prefer.coordinates) !== null && _a !== void 0 ? _a : fallback === null || fallback === void 0 ? void 0 : fallback.coordinates;
497
+ if (!coords || coords.length < 3)
498
+ return null;
499
+ return [coords[0], coords[1], coords[2]];
500
+ }
501
+ export function useManager({ cellInfos, somaRadius, gizmo, cameraType, backgroundColor, overlays, overlaysRadius = 5, overlaysMinRadiusInPixels = 4, overlaysInteractive = false, onOverlayTransform, highlightedOverlayId, neuronOpacity = 1, signals, }) {
274
502
  const refManager = React.useRef(null);
275
503
  if (!refManager.current)
276
504
  refManager.current = new PainterManager();
@@ -297,10 +525,22 @@ export function useManager({ cellInfos, somaRadius, gizmo, cameraType, backgroun
297
525
  React.useEffect(() => {
298
526
  manager.somaRadius = somaRadius !== null && somaRadius !== void 0 ? somaRadius : DEFAULT_SOMA_RADIUS;
299
527
  }, [somaRadius, manager]);
528
+ React.useEffect(() => {
529
+ manager.neuronOpacity = neuronOpacity;
530
+ }, [neuronOpacity, manager]);
531
+ React.useEffect(() => {
532
+ manager.setOverlays(overlays, overlaysRadius, overlaysMinRadiusInPixels);
533
+ }, [overlays, overlaysRadius, overlaysMinRadiusInPixels, manager]);
534
+ React.useEffect(() => {
535
+ manager.setOverlayInteraction(overlaysInteractive, onOverlayTransform);
536
+ }, [overlaysInteractive, onOverlayTransform, manager]);
537
+ React.useEffect(() => {
538
+ manager.highlightedOverlayId = highlightedOverlayId !== null && highlightedOverlayId !== void 0 ? highlightedOverlayId : null;
539
+ }, [highlightedOverlayId, manager]);
300
540
  React.useEffect(() => {
301
541
  manager.gizmo = gizmo;
302
542
  }, [gizmo, manager]);
303
543
  return refManager.current;
304
544
  }
305
545
  const DEFAULT_SOMA_RADIUS = 12;
306
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc29tYXMtb25seS9tYW5hZ2VyL21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsVUFBVSxFQUNWLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsZUFBZSxFQUVmLGVBQWUsRUFDZixrQ0FBa0MsR0FDbkMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQVF4RCxNQUFNLGNBQWM7SUFBcEI7UUFJa0Isa0JBQWEsR0FBRyxJQUFJLFFBQVEsRUFBVSxDQUFDO1FBRS9DLFlBQU8sR0FBNkIsSUFBSSxDQUFDO1FBQ3pDLGVBQVUsR0FBMkIsRUFBRSxDQUFDO1FBQ3hDLHFCQUFnQixHQUFHLE9BQU8sQ0FBQztRQUNsQiwwQkFBcUIsR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxxQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO1FBR2pELFVBQUssR0FBMkIsSUFBSSxDQUFDO1FBQ3JDLGlCQUFZLEdBQTJCLElBQUksQ0FBQztRQUM1QyxZQUFPLEdBQXNCLElBQUksQ0FBQztRQUNsQyxVQUFLLEdBQW9DLElBQUksQ0FBQztRQUM5QyxTQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FB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
546
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vcnBoby12aWV3ZXItc29tYXMtb25seS9tYW5hZ2VyL21hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxjQUFjLEVBQ2QscUJBQXFCLEVBQ3JCLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsVUFBVSxFQUNWLHdCQUF3QixFQUN4QixRQUFRLEVBQ1IsZUFBZSxFQUVmLGVBQWUsRUFDZixrQ0FBa0MsRUFDbEMsYUFBYSxFQUNiLGFBQWEsRUFDYixnQkFBZ0IsR0FDakIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFFMUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFZeEQsTUFBTSxjQUFjO0lBQXBCO1FBSWtCLGtCQUFhLEdBQUcsSUFBSSxRQUFRLEVBQVUsQ0FBQztRQUUvQyxZQUFPLEdBQTZCLElBQUksQ0FBQztRQUN6QyxtQkFBYyxHQUE2QixJQUFJLENBQUM7UUFDaEQsZUFBVSxHQUEyQixFQUFFLENBQUM7UUFDeEMscUJBQWdCLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLDBCQUFxQixHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELHFCQUFnQixHQUE0QixJQUFJ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
@@ -3,15 +3,20 @@ import type { MorphoViewerCellInfo } from "../types";
3
3
  export interface PainterCellInfosOptions {
4
4
  cellInfos: MorphoViewerCellInfo[];
5
5
  somaRadius: number;
6
+ opacity?: number;
6
7
  }
7
8
  export declare class PainterCellInfos extends TgdPainterGroup {
8
9
  readonly context: TgdContext;
9
10
  readonly bbox: TgdBoundingBox;
10
11
  private readonly texturePalette;
11
12
  private readonly painterPointsCloud;
13
+ private readonly paletteColors;
14
+ private _opacity;
12
15
  constructor(context: TgdContext, options: PainterCellInfosOptions);
13
16
  get somaRadius(): number;
14
17
  set somaRadius(somaRadius: number);
18
+ get opacity(): number;
19
+ set opacity(opacity: number);
15
20
  delete(): void;
16
21
  }
17
22
  //# sourceMappingURL=painter-cell-infos.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"painter-cell-infos.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/painter-cell-infos.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,UAAU,EACf,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAerD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,gBAAiB,SAAQ,eAAe;aAOjC,OAAO,EAAE,UAAU;IANrC,SAAgB,IAAI,EAAE,cAAc,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;gBAGzC,OAAO,EAAE,UAAU,EACnC,OAAO,EAAE,uBAAuB;IAuClC,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAKhC;IAED,MAAM,IAAI,IAAI;CAIf"}
1
+ {"version":3,"file":"painter-cell-infos.d.ts","sourceRoot":"","sources":["../../../../src/components/morpho-viewer-somas-only/manager/painter-cell-infos.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,UAAU,EACf,eAAe,EAKhB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAerD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,eAAe;aASjC,OAAO,EAAE,UAAU;IARrC,SAAgB,IAAI,EAAE,cAAc,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAe;IAC9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkB;IAChD,OAAO,CAAC,QAAQ,CAAS;gBAGP,OAAO,EAAE,UAAU,EACnC,OAAO,EAAE,uBAAuB;IAsClC,IAAI,UAAU,IAAI,MAAM,CAEvB;IACD,IAAI,UAAU,CAAC,UAAU,EAAE,MAAM,EAKhC;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAO1B;IAED,MAAM,IAAI,IAAI;CAIf"}
@@ -9,9 +9,10 @@ const DEFAULT_PALETTE_COLORS = [
9
9
  ];
10
10
  export class PainterCellInfos extends TgdPainterGroup {
11
11
  constructor(context, options) {
12
- var _a;
12
+ var _a, _b;
13
13
  const bbox = new TgdBoundingBox();
14
14
  const { paletteColors, painterPointsCloudOptions } = parseCellInfos(options.cellInfos, bbox);
15
+ const opacity = clamp01((_a = options.opacity) !== null && _a !== void 0 ? _a : 1);
15
16
  const texturePalette = new TgdTexture2D(context, {
16
17
  params: {
17
18
  magFilter: "LINEAR",
@@ -20,10 +21,8 @@ export class PainterCellInfos extends TgdPainterGroup {
20
21
  wrapS: "CLAMP_TO_EDGE",
21
22
  wrapT: "CLAMP_TO_EDGE",
22
23
  },
23
- }).loadBitmap(paletteColors
24
- ? createCategoricalPalette(paletteColors, PALETTE_AO_ROWS)
25
- : tgdCanvasCreatePalette(DEFAULT_PALETTE_COLORS, 1));
26
- const uvs = (_a = middleLuminance(painterPointsCloudOptions.dataUV)) !== null && _a !== void 0 ? _a : new Float32Array(2 * options.cellInfos.length);
24
+ }).loadBitmap(createPaletteBitmap(paletteColors, opacity));
25
+ const uvs = (_b = middleLuminance(painterPointsCloudOptions.dataUV)) !== null && _b !== void 0 ? _b : new Float32Array(2 * options.cellInfos.length);
27
26
  const painterPointsCloud = new TgdPainterPointsCloud(context, Object.assign(Object.assign({}, painterPointsCloudOptions), { dataUV: computeAmbientOcclusion(bbox, 10 * RADIUS, painterPointsCloudOptions.dataPoint, uvs), texture: texturePalette, fragCode: TgdPainterPointsCloud.fragCodeSphere({
28
27
  enableSpecular: true,
29
28
  specularExponent: 50,
@@ -35,6 +34,8 @@ export class PainterCellInfos extends TgdPainterGroup {
35
34
  this.context = context;
36
35
  this.painterPointsCloud = painterPointsCloud;
37
36
  this.texturePalette = texturePalette;
37
+ this.paletteColors = paletteColors;
38
+ this._opacity = opacity;
38
39
  this.bbox = bbox;
39
40
  }
40
41
  get somaRadius() {
@@ -46,6 +47,17 @@ export class PainterCellInfos extends TgdPainterGroup {
46
47
  this.painterPointsCloud.radiusMultiplier = somaRadius;
47
48
  this.context.paint();
48
49
  }
50
+ get opacity() {
51
+ return this._opacity;
52
+ }
53
+ set opacity(opacity) {
54
+ const next = clamp01(opacity);
55
+ if (this._opacity === next)
56
+ return;
57
+ this._opacity = next;
58
+ this.texturePalette.loadBitmap(createPaletteBitmap(this.paletteColors, next));
59
+ this.context.paint();
60
+ }
49
61
  delete() {
50
62
  this.texturePalette.delete();
51
63
  super.delete();
@@ -146,6 +158,31 @@ function createCategoricalPalette(colors, rows) {
146
158
  ctx.fillRect(0, 0, width, rows);
147
159
  return canvas;
148
160
  }
161
+ function createPaletteBitmap(paletteColors, opacity) {
162
+ const canvas = paletteColors
163
+ ? createCategoricalPalette(paletteColors, PALETTE_AO_ROWS)
164
+ : tgdCanvasCreatePalette(DEFAULT_PALETTE_COLORS, 1);
165
+ return applyCanvasOpacity(canvas, opacity);
166
+ }
167
+ function applyCanvasOpacity(canvas, opacity) {
168
+ if (opacity >= 1)
169
+ return canvas;
170
+ const ctx = canvas.getContext("2d");
171
+ if (!ctx)
172
+ return canvas;
173
+ const image = ctx.getImageData(0, 0, canvas.width, canvas.height);
174
+ const alpha = Math.round(clamp01(opacity) * 255);
175
+ for (let i = 3; i < image.data.length; i += 4) {
176
+ image.data[i] = alpha;
177
+ }
178
+ ctx.putImageData(image, 0, 0);
179
+ return canvas;
180
+ }
181
+ function clamp01(value) {
182
+ if (Number.isNaN(value))
183
+ return 1;
184
+ return Math.min(1, Math.max(0, value));
185
+ }
149
186
  function middleLuminance(dataUV) {
150
187
  if (!dataUV)
151
188
  return;
@@ -154,4 +191,4 @@ function middleLuminance(dataUV) {
154
191
  }
155
192
  return dataUV;
156
193
  }
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1jZWxsLWluZm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zb21hcy1vbmx5L21hbmFnZXIvcGFpbnRlci1jZWxsLWluZm9zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBRWQsZUFBZSxFQUNmLHFCQUFxQixFQUVyQixZQUFZLEVBQ1osc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJOUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBSWxCLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUczQixNQUFNLHNCQUFzQixHQUFHO0lBQzdCLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIscUJBQXFCO0NBQ3RCLENBQUM7QUFPRixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZUFBZTtJQU1uRCxZQUNrQixPQUFtQixFQUNuQyxPQUFnQzs7UUFFaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0YsTUFBTSxjQUFjLEdBQUcsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQy9DLE1BQU0sRUFBRTtnQkFDTixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLEtBQUssRUFBRSxlQUFlO2dCQUN0QixLQUFLLEVBQUUsZUFBZTtnQkFDdEIsS0FBSyxFQUFFLGVBQWU7YUFDdkI7U0FDRixDQUFDLENBQUMsVUFBVSxDQUNYLGFBQWE7WUFDWCxDQUFDLENBQUMsd0JBQXdCLENBQUMsYUFBYSxFQUFFLGVBQWUsQ0FBQztZQUMxRCxD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
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFpbnRlci1jZWxsLWluZm9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9ycGhvLXZpZXdlci1zb21hcy1vbmx5L21hbmFnZXIvcGFpbnRlci1jZWxsLWluZm9zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEVBRWQsZUFBZSxFQUNmLHFCQUFxQixFQUVyQixZQUFZLEVBQ1osc0JBQXNCLEdBQ3ZCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFJOUQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBSWxCLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUczQixNQUFNLHNCQUFzQixHQUFHO0lBQzdCLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIscUJBQXFCO0NBQ3RCLENBQUM7QUFTRixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZUFBZTtJQVFuRCxZQUNrQixPQUFtQixFQUNuQyxPQUFnQzs7UUFFaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEVBQUUsYUFBYSxFQUFFLHlCQUF5QixFQUFFLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0YsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQUEsT0FBTyxDQUFDLE9BQU8sbUNBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFO1lBQy9DLE1BQU0sRUFBRTtnQkFDTixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLEtBQUssRUFBRSxlQUFlO2dCQUN0QixLQUFLLEVBQUUsZUFBZTtnQkFDdEIsS0FBSyxFQUFFLGVBQWU7YUFDdkI7U0FDRixDQUFDLENB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