@jax-data-science/sci-image-visualizer 0.8.3 → 0.10.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/README.md +201 -460
- package/esm2022/index.mjs +34 -15
- package/esm2022/lib/channel-histogram/channel-histogram.component.mjs +163 -91
- package/esm2022/lib/contracts/capabilities.contract.mjs +4 -3
- package/esm2022/lib/contracts/cell-segmenter.contract.mjs +1 -1
- package/esm2022/lib/contracts/channel-histogram-api.contract.mjs +5 -1
- package/esm2022/lib/contracts/color.mjs +60 -0
- package/esm2022/lib/contracts/colormap-lut.mjs +213 -57
- package/esm2022/lib/contracts/coordinate-transform.contract.mjs +1 -1
- package/esm2022/lib/contracts/display-types.mjs +11 -1
- package/esm2022/lib/contracts/image.contract.mjs +1 -1
- package/esm2022/lib/contracts/instance-segmenter.contract.mjs +1 -1
- package/esm2022/lib/contracts/intensity.mjs +48 -5
- package/esm2022/lib/contracts/plot-type-contribution.contract.mjs +1 -1
- package/esm2022/lib/contracts/plot-type.mjs +134 -17
- package/esm2022/lib/contracts/ports/image-state.port.mjs +4 -1
- package/esm2022/lib/contracts/ports/preferences.port.mjs +5 -1
- package/esm2022/lib/contracts/ports/region-io.port.mjs +2 -1
- package/esm2022/lib/contracts/ports/spatial-data.port.mjs +5 -1
- package/esm2022/lib/contracts/ports/tile-access.port.mjs +2 -1
- package/esm2022/lib/contracts/region-editor-api.contract.mjs +1 -1
- package/esm2022/lib/contracts/region-overlay.contract.mjs +1 -1
- package/esm2022/lib/contracts/region-store.contract.mjs +1 -1
- package/esm2022/lib/contracts/sam.contract.mjs +1 -1
- package/esm2022/lib/contracts/section-view.contract.mjs +2 -0
- package/esm2022/lib/contracts/semantic-segmenter.contract.mjs +1 -1
- package/esm2022/lib/contracts/spatial-dataset.contract.mjs +3 -1
- package/esm2022/lib/contracts/toolbar-tool.contract.mjs +6 -4
- package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
- package/esm2022/lib/contracts/viz-config.mjs +2 -1
- package/esm2022/lib/geometry/contour.mjs +63 -0
- package/esm2022/lib/geometry/loft.mjs +128 -0
- package/esm2022/lib/geometry/polylabel.mjs +156 -0
- package/esm2022/lib/geometry/raster.mjs +98 -0
- package/esm2022/lib/geometry/reconstruct.mjs +315 -0
- package/esm2022/lib/geometry/reslice-image.mjs +57 -0
- package/esm2022/lib/geometry/ring.mjs +201 -0
- package/esm2022/lib/geometry/section.mjs +215 -0
- package/esm2022/lib/hex-color-picker/hex-color-picker.component.mjs +202 -102
- package/esm2022/lib/implementations/base-store-visualizer.mjs +201 -48
- package/esm2022/lib/implementations/napari-js/napari-axes-gizmo.mjs +65 -0
- package/esm2022/lib/implementations/napari-js/napari-display-state.mjs +136 -0
- package/esm2022/lib/implementations/napari-js/napari-helpers.mjs +199 -0
- package/esm2022/lib/implementations/napari-js/napari-image-2d-scene.mjs +602 -0
- package/esm2022/lib/implementations/napari-js/napari-loading-badge.mjs +12 -9
- package/esm2022/lib/implementations/napari-js/napari-loading-state.mjs +83 -0
- package/esm2022/lib/implementations/napari-js/napari-region-mesh-pointer.mjs +100 -0
- package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +180 -591
- package/esm2022/lib/implementations/napari-js/napari-scene.mjs +2 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-2d-scene.mjs +614 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-3d-scene.mjs +769 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-encoding.mjs +199 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-hover.mjs +270 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-scene.mjs +159 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-tiles.mjs +106 -1408
- package/esm2022/lib/implementations/napari-js/napari-spatial-tooltip.mjs +2 -2
- package/esm2022/lib/implementations/napari-js/napari-surface-scene.mjs +271 -0
- package/esm2022/lib/implementations/napari-js/napari-tile-client.mjs +562 -0
- package/esm2022/lib/implementations/napari-js/napari-tool-bridge.mjs +347 -0
- package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +427 -4207
- package/esm2022/lib/implementations/napari-js/napari-volume-region-meshes.mjs +129 -0
- package/esm2022/lib/implementations/napari-js/napari-volume-scene.mjs +550 -0
- package/esm2022/lib/implementations/napari-js/napari-volume-slice-planes.mjs +103 -0
- package/esm2022/lib/implementations/napari-js/napari-volume-z-handle.mjs +6 -6
- package/esm2022/lib/implementations/napari-js/region-overlay/overlay-projection.mjs +96 -0
- package/esm2022/lib/implementations/napari-js/region-overlay/region-edit.mjs +35 -0
- package/esm2022/lib/implementations/napari-js/region-overlay/region-svg-renderer.mjs +194 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/categorical-lookup.mjs +30 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/cell-layers.mjs +274 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/density-layer.mjs +144 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/layer-groups.mjs +165 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/plan-context.mjs +78 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-hover.mjs +182 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-jobs.mjs +369 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-layers.mjs +306 -0
- package/esm2022/lib/implementations/osd/display-pipeline.mjs +102 -40
- package/esm2022/lib/implementations/osd/histogram-sampler.mjs +56 -31
- package/esm2022/lib/implementations/osd/openseadragon-viewer-options.mjs +128 -0
- package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +333 -1685
- package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +1 -1
- package/esm2022/lib/implementations/osd/osd-coords.mjs +5 -6
- package/esm2022/lib/implementations/osd/osd-export.mjs +122 -0
- package/esm2022/lib/implementations/osd/osd-lib.mjs +15 -1
- package/esm2022/lib/implementations/osd/osd-navigator-chrome.mjs +205 -0
- package/esm2022/lib/implementations/osd/osd-pixel-readback.mjs +68 -0
- package/esm2022/lib/implementations/osd/osd-region-overlay-draw.mjs +164 -0
- package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +213 -716
- package/esm2022/lib/implementations/osd/osd-scale-bar.mjs +52 -60
- package/esm2022/lib/implementations/osd/osd-tile-source.mjs +105 -0
- package/esm2022/lib/implementations/osd/osd-viewer-like.mjs +2 -0
- package/esm2022/lib/implementations/osd/osd-viewer-mount.mjs +44 -0
- package/esm2022/lib/implementations/osd/osd-viewport.mjs +184 -0
- package/esm2022/lib/implementations/osd/osd-zoom.mjs +7 -1
- package/esm2022/lib/implementations/osd/simple-source.mjs +395 -0
- package/esm2022/lib/implementations/osd/slice-cache.mjs +53 -48
- package/esm2022/lib/implementations/osd/tile-client.mjs +32 -11
- package/esm2022/lib/implementations/osd/tile-recolor.mjs +330 -0
- package/esm2022/lib/implementations/plotly/omics-trace-builders.mjs +161 -73
- package/esm2022/lib/implementations/plotly/plotly-coordinate-transform.mjs +1 -1
- package/esm2022/lib/implementations/plotly/plotly-image-loader.mjs +112 -0
- package/esm2022/lib/implementations/plotly/plotly-image-recolor.mjs +178 -0
- package/esm2022/lib/implementations/plotly/plotly-intensity-inset.mjs +33 -0
- package/esm2022/lib/implementations/plotly/plotly-isosurface-controls.mjs +83 -0
- package/esm2022/lib/implementations/plotly/plotly-layouts.mjs +121 -0
- package/esm2022/lib/implementations/plotly/plotly-readback.mjs +117 -0
- package/esm2022/lib/implementations/plotly/plotly-region-overlay.mjs +19 -10
- package/esm2022/lib/implementations/plotly/plotly-shape-projection.mjs +223 -0
- package/esm2022/lib/implementations/plotly/plotly-trace-builders.mjs +79 -19
- package/esm2022/lib/implementations/plotly/plotly-zoom-controller.mjs +223 -0
- package/esm2022/lib/implementations/plotly/plotly.service.mjs +439 -1655
- package/esm2022/lib/implementations/region-centroids.mjs +47 -0
- package/esm2022/lib/implementations/simple-slice-access.service.mjs +22 -12
- package/esm2022/lib/implementations/spatial-data-http/spatial-data-http.service.mjs +172 -92
- package/esm2022/lib/implementations/spatial-data-http/spatial-wire.mjs +103 -22
- package/esm2022/lib/implementations/tile-server/index.mjs +6 -0
- package/esm2022/lib/implementations/tile-server/native-histogram.mjs +30 -0
- package/esm2022/lib/implementations/tile-server/poll-descriptor.mjs +65 -0
- package/esm2022/lib/implementations/tile-server/tile-protocol.mjs +42 -0
- package/esm2022/lib/implementations/tile-server/transport.mjs +135 -0
- package/esm2022/lib/intensity/intensity-profile.mjs +107 -0
- package/esm2022/lib/intensity/intensity-profile.service.mjs +223 -0
- package/esm2022/lib/intensity-inset/intensity-inset.component.mjs +133 -0
- package/esm2022/lib/models/bezier.mjs +1 -11
- package/esm2022/lib/models/class-preset.mjs +41 -3
- package/esm2022/lib/models/geometry.mjs +27 -164
- package/esm2022/lib/models/polygon-edit.mjs +254 -0
- package/esm2022/lib/models/polygon-factory.mjs +134 -0
- package/esm2022/lib/models/region-clone.mjs +68 -0
- package/esm2022/lib/models/region-geojson.mjs +411 -0
- package/esm2022/lib/models/region.mjs +34 -33
- package/esm2022/lib/models/shape.mjs +18 -16
- package/esm2022/lib/plot-mode/contribution-host.mjs +297 -0
- package/esm2022/lib/plot-mode/plot-mode-controller.mjs +9 -6
- package/esm2022/lib/plot-mode/plot-type-menu.mjs +85 -0
- package/esm2022/lib/plot-mode/tool-params-model.mjs +87 -0
- package/esm2022/lib/plot.utilities.mjs +296 -473
- package/esm2022/lib/processing/image-crop.mjs +1 -1
- package/esm2022/lib/processing/processing-image.mjs +28 -15
- package/esm2022/lib/provide-visualization.mjs +40 -14
- package/esm2022/lib/region-editor/class-tree/class-tree.component.mjs +156 -0
- package/esm2022/lib/region-editor/class-tree/class-tree.mjs +108 -0
- package/esm2022/lib/region-editor/classes-panel/classes-panel.component.mjs +163 -0
- package/esm2022/lib/region-editor/file-stem.mjs +13 -0
- package/esm2022/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.mjs +118 -0
- package/esm2022/lib/region-editor/mask-export.service.mjs +98 -0
- package/esm2022/lib/region-editor/mask-raster.mjs +11 -5
- package/esm2022/lib/region-editor/region-color-dialog/region-color-dialog.component.mjs +56 -0
- package/esm2022/lib/region-editor/region-editor-help/region-editor-help.component.mjs +28 -0
- package/esm2022/lib/region-editor/region-editor.component.mjs +896 -660
- package/esm2022/lib/region-editor/region-metrics.mjs +86 -0
- package/esm2022/lib/region-editor/region-persistence.service.mjs +160 -0
- package/esm2022/lib/region-editor/region-table/region-table.component.mjs +169 -0
- package/esm2022/lib/region-editor/save-mask-dialog/save-mask-dialog.component.mjs +91 -0
- package/esm2022/lib/region-editor/save-regions-dialog/save-regions-dialog.component.mjs +92 -0
- package/esm2022/lib/region-ops.service.mjs +28 -70
- package/esm2022/lib/region-overlay/region-geometry.mjs +360 -0
- package/esm2022/lib/region-overlay/region-hit-test.mjs +103 -0
- package/esm2022/lib/region-overlay/region-source-layer.mjs +378 -0
- package/esm2022/lib/region-overlay/region-style.mjs +97 -0
- package/esm2022/lib/region-overlay/svg-region-renderer.mjs +228 -0
- package/esm2022/lib/region-source/http-region-source.mjs +104 -0
- package/esm2022/lib/region-source/region-source-ops.mjs +53 -0
- package/esm2022/lib/region-source/region-source-worker.mjs +10 -0
- package/esm2022/lib/region-source/region-source.mjs +67 -0
- package/esm2022/lib/region-source/region-tiles.mjs +708 -0
- package/esm2022/lib/region-source/worker-region-source.mjs +229 -0
- package/esm2022/lib/render-orchestrator.mjs +14 -11
- package/esm2022/lib/render-session.mjs +207 -0
- package/esm2022/lib/routing-visualizer.service.mjs +858 -414
- package/esm2022/lib/section-pane/section-pane.component.mjs +299 -0
- package/esm2022/lib/spatial/density-raster.mjs +14 -0
- package/esm2022/lib/spatial/embedding-compute-coordinator.mjs +239 -0
- package/esm2022/lib/spatial/embedding-compute.mjs +43 -10
- package/esm2022/lib/spatial/gene-search.mjs +1 -1
- package/esm2022/lib/spatial/glyphs.mjs +97 -0
- package/esm2022/lib/spatial/lod.mjs +187 -0
- package/esm2022/lib/spatial/spatial-controls.facade.mjs +200 -0
- package/esm2022/lib/spatial/spatial-density.mjs +25 -16
- package/esm2022/lib/spatial/spatial-encoding.mjs +26 -82
- package/esm2022/lib/spatial/spatial-expression.mjs +43 -42
- package/esm2022/lib/spatial/spatial-framing.mjs +1 -1
- package/esm2022/lib/spatial/spatial-heatmap.mjs +6 -3
- package/esm2022/lib/spatial/spatial-hover.mjs +5 -33
- package/esm2022/lib/spatial/spatial-panel-model.mjs +282 -0
- package/esm2022/lib/spatial/spatial-sections.mjs +1 -1
- package/esm2022/lib/spatial/spatial-selection.mjs +33 -46
- package/esm2022/lib/spatial/spatial-tile-merge.mjs +219 -0
- package/esm2022/lib/spatial/spatial-tiles.mjs +12 -648
- package/esm2022/lib/spatial/spatial-volume-image.mjs +2 -4
- package/esm2022/lib/spatial/stats.mjs +71 -0
- package/esm2022/lib/spatial/transcript-grouping.mjs +307 -0
- package/esm2022/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.mjs +150 -0
- package/esm2022/lib/spatial-controls/spatial-charts/chart-data-model.mjs +309 -0
- package/esm2022/lib/spatial-controls/spatial-charts/chart-help.mjs +145 -0
- package/esm2022/lib/spatial-controls/spatial-charts/plotly-chart-host.mjs +158 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.mjs +47 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-charts.component.mjs +297 -802
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.mjs +89 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.mjs +52 -0
- package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +143 -1238
- package/esm2022/lib/spatial-controls/spatial-gene-picker.mjs +153 -0
- package/esm2022/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.mjs +241 -0
- package/esm2022/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.mjs +193 -0
- package/esm2022/lib/spatial-controls/spatial-key/spatial-key.component.mjs +132 -0
- package/esm2022/lib/spatial-controls/spatial-key/spatial-key.model.mjs +67 -0
- package/esm2022/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.mjs +147 -0
- package/esm2022/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.mjs +300 -0
- package/esm2022/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.mjs +370 -0
- package/esm2022/lib/store/class-color.util.mjs +53 -5
- package/esm2022/lib/store/class-signatures.mjs +63 -0
- package/esm2022/lib/store/region-history.mjs +146 -0
- package/esm2022/lib/store/region-scope-cache.mjs +144 -0
- package/esm2022/lib/store/region-selection.mjs +82 -0
- package/esm2022/lib/store/region-source-scope.mjs +171 -0
- package/esm2022/lib/store/region-store.service.mjs +986 -670
- package/esm2022/lib/store/spatial-selection.service.mjs +2 -2
- package/esm2022/lib/store/visualizer-store.service.mjs +81 -76
- package/esm2022/lib/toast-outlets.mjs +5 -4
- package/esm2022/lib/toolbar/brush/brush-tool.service.mjs +92 -434
- package/esm2022/lib/toolbar/canvas-tools.mjs +20 -0
- package/esm2022/lib/toolbar/crop/slide-crop.mjs +26 -42
- package/esm2022/lib/toolbar/plot-type-selector/plot-type-selector.component.mjs +85 -0
- package/esm2022/lib/toolbar/region-tools/region-tool-buttons.mjs +74 -0
- package/esm2022/lib/toolbar/region-tools/region-tools.component.mjs +120 -0
- package/esm2022/lib/toolbar/segmentation/cell-segment-tool.service.mjs +74 -78
- package/esm2022/lib/toolbar/segmentation/cellpose-segmenter.service.mjs +50 -8
- package/esm2022/lib/toolbar/segmentation/onnx-sam-session.mjs +61 -42
- package/esm2022/lib/toolbar/segmentation/pending-calls.mjs +47 -0
- package/esm2022/lib/toolbar/segmentation/sam-model-registry.mjs +12 -4
- package/esm2022/lib/toolbar/segmentation/sam-onnx-core.mjs +70 -14
- package/esm2022/lib/toolbar/segmentation/sam-point-tool.service.mjs +135 -172
- package/esm2022/lib/toolbar/segmentation/sam-prompt.mjs +9 -90
- package/esm2022/lib/toolbar/segmentation/sam-session.service.mjs +183 -0
- package/esm2022/lib/toolbar/segmentation/sam-tool.service.mjs +95 -150
- package/esm2022/lib/toolbar/segmentation/segmentation-commit.mjs +12 -0
- package/esm2022/lib/toolbar/segmentation/segmentation-runner.mjs +108 -0
- package/esm2022/lib/toolbar/segmentation-tools/segmentation-tools.component.mjs +155 -0
- package/esm2022/lib/toolbar/stack-controls/stack-controls.component.mjs +121 -0
- package/esm2022/lib/toolbar/tool-kit/async-tool-status.mjs +37 -0
- package/esm2022/lib/toolbar/tool-kit/canvas-tool-manager.mjs +63 -0
- package/esm2022/lib/toolbar/tool-kit/canvas-tool.mjs +2 -0
- package/esm2022/lib/toolbar/tool-kit/frame-pixels.mjs +108 -0
- package/esm2022/lib/toolbar/tool-kit/mask-stroke-editor.mjs +306 -0
- package/esm2022/lib/toolbar/tool-kit/matrix-frame.mjs +61 -0
- package/esm2022/lib/toolbar/tool-kit/tool-overlay.mjs +140 -0
- package/esm2022/lib/toolbar/tool-kit/undo-gesture.mjs +24 -0
- package/esm2022/lib/toolbar/tool-slider/tool-slider.component.mjs +63 -0
- package/esm2022/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.mjs +50 -0
- package/esm2022/lib/toolbar/toolbar.component.mjs +84 -119
- package/esm2022/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.mjs +93 -115
- package/esm2022/lib/toolbar/view-controls/view-controls.component.mjs +107 -0
- package/esm2022/lib/toolbar/wand/wand-region-grow.mjs +321 -0
- package/esm2022/lib/toolbar/wand/wand-tool.service.mjs +121 -416
- package/esm2022/lib/toolbar/wand/wand.service.mjs +30 -894
- package/esm2022/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.mjs +48 -90
- package/esm2022/lib/util/mark-for-check.mjs +17 -0
- package/esm2022/lib/util/supersede.mjs +56 -0
- package/esm2022/lib/visualization.module.mjs +39 -141
- package/esm2022/lib/visualizer/floating-drag.directive.mjs +58 -0
- package/esm2022/lib/visualizer/region-actions.mjs +149 -0
- package/esm2022/lib/visualizer/region-load.mjs +123 -0
- package/esm2022/lib/visualizer/spatial-dataset-binder.mjs +163 -0
- package/esm2022/lib/visualizer/tool-modes.mjs +113 -0
- package/esm2022/lib/visualizer/viewer-shortcuts.mjs +167 -0
- package/esm2022/lib/visualizer/visualizer-context-menu.mjs +119 -0
- package/esm2022/lib/visualizer/volume-sections.mjs +175 -0
- package/esm2022/lib/visualizer.component.mjs +602 -1902
- package/esm2022/lib/workers/spatial-math-ops.mjs +43 -0
- package/esm2022/lib/workers/spatial-math-worker.mjs +10 -0
- package/esm2022/lib/workers/spatial-math.mjs +190 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs +47169 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-BKQhpbHv.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs +238 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-z1IN-F7w.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs +12 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-region-source-worker-CAqBjM5L.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs +12 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +41 -34467
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/fesm2022/mask.worker.js +36 -917
- package/fesm2022/onnx-sam.worker.js +52 -16
- package/fesm2022/region-source.worker.js +1067 -0
- package/fesm2022/spatial-math.worker.js +471 -0
- package/fesm2022/tsne.worker.js +32 -15
- package/index.d.ts +19 -10
- package/lib/channel-histogram/channel-histogram.component.d.ts +53 -43
- package/lib/contracts/capabilities.contract.d.ts +4 -2
- package/lib/contracts/cell-segmenter.contract.d.ts +1 -0
- package/lib/contracts/channel-histogram-api.contract.d.ts +4 -0
- package/lib/contracts/color.d.ts +27 -0
- package/lib/contracts/colormap-lut.d.ts +19 -4
- package/lib/contracts/coordinate-transform.contract.d.ts +3 -3
- package/lib/contracts/display-types.d.ts +21 -0
- package/lib/contracts/image.contract.d.ts +4 -0
- package/lib/contracts/instance-segmenter.contract.d.ts +5 -0
- package/lib/contracts/intensity.d.ts +13 -2
- package/lib/contracts/plot-type.d.ts +3 -1
- package/lib/contracts/ports/image-state.port.d.ts +6 -2
- package/lib/contracts/ports/preferences.port.d.ts +4 -0
- package/lib/contracts/ports/region-io.port.d.ts +1 -0
- package/lib/contracts/ports/spatial-data.port.d.ts +4 -10
- package/lib/contracts/ports/tile-access.port.d.ts +1 -0
- package/lib/contracts/region-editor-api.contract.d.ts +85 -1
- package/lib/contracts/region-overlay.contract.d.ts +5 -0
- package/lib/contracts/region-store.contract.d.ts +22 -0
- package/lib/contracts/sam.contract.d.ts +7 -0
- package/lib/contracts/section-view.contract.d.ts +44 -0
- package/lib/contracts/semantic-segmenter.contract.d.ts +6 -0
- package/lib/contracts/spatial-dataset.contract.d.ts +19 -6
- package/lib/contracts/toolbar-tool.contract.d.ts +1 -0
- package/lib/contracts/visualizer.contract.d.ts +231 -54
- package/lib/contracts/viz-config.d.ts +9 -0
- package/lib/geometry/contour.d.ts +24 -0
- package/lib/geometry/loft.d.ts +22 -0
- package/lib/geometry/polylabel.d.ts +23 -0
- package/lib/geometry/raster.d.ts +42 -0
- package/lib/geometry/reconstruct.d.ts +54 -0
- package/lib/geometry/reslice-image.d.ts +33 -0
- package/lib/geometry/ring.d.ts +67 -0
- package/lib/geometry/section.d.ts +52 -0
- package/lib/hex-color-picker/hex-color-picker.component.d.ts +61 -27
- package/lib/implementations/base-store-visualizer.d.ts +61 -15
- package/lib/implementations/napari-js/napari-axes-gizmo.d.ts +36 -0
- package/lib/implementations/napari-js/napari-display-state.d.ts +76 -0
- package/lib/implementations/napari-js/napari-helpers.d.ts +129 -0
- package/lib/implementations/napari-js/napari-image-2d-scene.d.ts +162 -0
- package/lib/implementations/napari-js/napari-loading-badge.d.ts +4 -3
- package/lib/implementations/napari-js/napari-loading-state.d.ts +37 -0
- package/lib/implementations/napari-js/napari-region-mesh-pointer.d.ts +32 -0
- package/lib/implementations/napari-js/napari-region-overlay.d.ts +68 -71
- package/lib/implementations/napari-js/napari-scene.d.ts +126 -0
- package/lib/implementations/napari-js/napari-spatial-2d-scene.d.ts +163 -0
- package/lib/implementations/napari-js/napari-spatial-3d-scene.d.ts +212 -0
- package/lib/implementations/napari-js/napari-spatial-encoding.d.ts +114 -0
- package/lib/implementations/napari-js/napari-spatial-hover.d.ts +91 -0
- package/lib/implementations/napari-js/napari-spatial-scene.d.ts +118 -0
- package/lib/implementations/napari-js/napari-spatial-tiles.d.ts +56 -263
- package/lib/implementations/napari-js/napari-spatial-tooltip.d.ts +1 -1
- package/lib/implementations/napari-js/napari-surface-scene.d.ts +76 -0
- package/lib/implementations/napari-js/napari-tile-client.d.ts +214 -0
- package/lib/implementations/napari-js/napari-tool-bridge.d.ts +179 -0
- package/lib/implementations/napari-js/napari-visualizer.service.d.ts +169 -883
- package/lib/implementations/napari-js/napari-volume-region-meshes.d.ts +66 -0
- package/lib/implementations/napari-js/napari-volume-scene.d.ts +148 -0
- package/lib/implementations/napari-js/napari-volume-slice-planes.d.ts +43 -0
- package/lib/implementations/napari-js/napari-volume-z-handle.d.ts +8 -12
- package/lib/implementations/napari-js/region-overlay/overlay-projection.d.ts +59 -0
- package/lib/implementations/napari-js/region-overlay/region-edit.d.ts +15 -0
- package/lib/implementations/napari-js/region-overlay/region-svg-renderer.d.ts +54 -0
- package/lib/implementations/napari-js/spatial-tiles/categorical-lookup.d.ts +26 -0
- package/lib/implementations/napari-js/spatial-tiles/cell-layers.d.ts +70 -0
- package/lib/implementations/napari-js/spatial-tiles/density-layer.d.ts +61 -0
- package/lib/implementations/napari-js/spatial-tiles/layer-groups.d.ts +67 -0
- package/lib/implementations/napari-js/spatial-tiles/plan-context.d.ts +38 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-hover.d.ts +71 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-jobs.d.ts +105 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-layers.d.ts +56 -0
- package/lib/implementations/osd/display-pipeline.d.ts +38 -9
- package/lib/implementations/osd/histogram-sampler.d.ts +22 -12
- package/lib/implementations/osd/openseadragon-viewer-options.d.ts +35 -0
- package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +78 -354
- package/lib/implementations/osd/osd-coordinate-transform.d.ts +2 -1
- package/lib/implementations/osd/osd-coords.d.ts +6 -4
- package/lib/implementations/osd/osd-export.d.ts +36 -0
- package/lib/implementations/osd/osd-lib.d.ts +7 -0
- package/lib/implementations/osd/osd-navigator-chrome.d.ts +69 -0
- package/lib/implementations/osd/osd-pixel-readback.d.ts +22 -0
- package/lib/implementations/osd/osd-region-overlay-draw.d.ts +38 -0
- package/lib/implementations/osd/osd-region-overlay.d.ts +46 -51
- package/lib/implementations/osd/osd-scale-bar.d.ts +8 -6
- package/lib/implementations/osd/osd-tile-source.d.ts +49 -0
- package/lib/implementations/osd/osd-viewer-like.d.ts +100 -0
- package/lib/implementations/osd/osd-viewer-mount.d.ts +14 -0
- package/lib/implementations/osd/osd-viewport.d.ts +77 -0
- package/lib/implementations/osd/osd-zoom.d.ts +6 -0
- package/lib/implementations/osd/simple-source.d.ts +161 -0
- package/lib/implementations/osd/slice-cache.d.ts +12 -3
- package/lib/implementations/osd/tile-client.d.ts +11 -14
- package/lib/implementations/osd/tile-recolor.d.ts +141 -0
- package/lib/implementations/plotly/omics-trace-builders.d.ts +32 -20
- package/lib/implementations/plotly/plotly-image-loader.d.ts +49 -0
- package/lib/implementations/plotly/plotly-image-recolor.d.ts +75 -0
- package/lib/implementations/plotly/plotly-intensity-inset.d.ts +8 -0
- package/lib/implementations/plotly/plotly-isosurface-controls.d.ts +38 -0
- package/lib/implementations/plotly/plotly-layouts.d.ts +188 -0
- package/lib/implementations/plotly/plotly-readback.d.ts +41 -0
- package/lib/implementations/plotly/plotly-region-overlay.d.ts +2 -2
- package/lib/implementations/plotly/plotly-shape-projection.d.ts +92 -0
- package/lib/implementations/plotly/plotly-trace-builders.d.ts +23 -12
- package/lib/implementations/plotly/plotly-zoom-controller.d.ts +86 -0
- package/lib/implementations/plotly/plotly.service.d.ts +136 -401
- package/lib/implementations/region-centroids.d.ts +14 -0
- package/lib/implementations/simple-slice-access.service.d.ts +7 -4
- package/lib/implementations/spatial-data-http/spatial-data-http.service.d.ts +42 -18
- package/lib/implementations/spatial-data-http/spatial-wire.d.ts +34 -9
- package/lib/implementations/tile-server/index.d.ts +5 -0
- package/lib/implementations/tile-server/native-histogram.d.ts +25 -0
- package/lib/implementations/tile-server/poll-descriptor.d.ts +39 -0
- package/lib/implementations/tile-server/tile-protocol.d.ts +83 -0
- package/lib/implementations/tile-server/transport.d.ts +62 -0
- package/lib/intensity/intensity-profile.d.ts +66 -0
- package/lib/intensity/intensity-profile.service.d.ts +108 -0
- package/lib/intensity-inset/intensity-inset.component.d.ts +58 -0
- package/lib/models/bezier.d.ts +0 -5
- package/lib/models/class-preset.d.ts +25 -0
- package/lib/models/geometry.d.ts +14 -48
- package/lib/models/polygon-edit.d.ts +72 -0
- package/lib/models/polygon-factory.d.ts +45 -0
- package/lib/models/region-clone.d.ts +20 -0
- package/lib/models/region-geojson.d.ts +57 -0
- package/lib/models/region.d.ts +59 -4
- package/lib/models/shape.d.ts +8 -0
- package/lib/plot-mode/contribution-host.d.ts +125 -0
- package/lib/plot-mode/plot-type-menu.d.ts +60 -0
- package/lib/plot-mode/tool-params-model.d.ts +49 -0
- package/lib/plot.utilities.d.ts +19 -30
- package/lib/processing/processing-image.d.ts +5 -2
- package/lib/provide-visualization.d.ts +19 -2
- package/lib/region-editor/class-tree/class-tree.component.d.ts +78 -0
- package/lib/region-editor/class-tree/class-tree.d.ts +31 -0
- package/lib/region-editor/classes-panel/classes-panel.component.d.ts +86 -0
- package/lib/region-editor/file-stem.d.ts +7 -0
- package/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.d.ts +45 -0
- package/lib/region-editor/mask-export.service.d.ts +54 -0
- package/lib/region-editor/mask-raster.d.ts +2 -8
- package/lib/region-editor/region-color-dialog/region-color-dialog.component.d.ts +29 -0
- package/lib/region-editor/region-editor-help/region-editor-help.component.d.ts +11 -0
- package/lib/region-editor/region-editor.component.d.ts +283 -200
- package/lib/region-editor/region-metrics.d.ts +34 -0
- package/lib/region-editor/region-persistence.service.d.ts +77 -0
- package/lib/region-editor/region-table/region-table.component.d.ts +89 -0
- package/lib/region-editor/save-mask-dialog/save-mask-dialog.component.d.ts +36 -0
- package/lib/region-editor/save-regions-dialog/save-regions-dialog.component.d.ts +37 -0
- package/lib/region-ops.service.d.ts +1 -7
- package/lib/region-overlay/region-geometry.d.ts +158 -0
- package/lib/region-overlay/region-hit-test.d.ts +38 -0
- package/lib/region-overlay/region-source-layer.d.ts +96 -0
- package/lib/region-overlay/region-style.d.ts +52 -0
- package/lib/region-overlay/svg-region-renderer.d.ts +110 -0
- package/lib/region-source/http-region-source.d.ts +45 -0
- package/lib/region-source/region-source-ops.d.ts +89 -0
- package/lib/region-source/region-source-worker.d.ts +7 -0
- package/lib/region-source/region-source.d.ts +82 -0
- package/lib/region-source/region-tiles.d.ts +289 -0
- package/lib/region-source/worker-region-source.d.ts +65 -0
- package/lib/render-orchestrator.d.ts +6 -2
- package/lib/render-session.d.ts +75 -0
- package/lib/routing-visualizer.service.d.ts +248 -59
- package/lib/section-pane/section-pane.component.d.ts +47 -0
- package/lib/spatial/density-raster.d.ts +6 -0
- package/lib/spatial/embedding-compute-coordinator.d.ts +123 -0
- package/lib/spatial/embedding-compute.d.ts +21 -2
- package/lib/spatial/glyphs.d.ts +16 -0
- package/lib/spatial/lod.d.ts +94 -0
- package/lib/spatial/spatial-controls.facade.d.ts +64 -0
- package/lib/spatial/spatial-density.d.ts +15 -5
- package/lib/spatial/spatial-encoding.d.ts +11 -44
- package/lib/spatial/spatial-expression.d.ts +40 -22
- package/lib/spatial/spatial-framing.d.ts +1 -0
- package/lib/spatial/spatial-heatmap.d.ts +2 -0
- package/lib/spatial/spatial-hover.d.ts +4 -16
- package/lib/spatial/spatial-panel-model.d.ts +135 -0
- package/lib/spatial/spatial-selection.d.ts +21 -26
- package/lib/spatial/spatial-tile-merge.d.ts +41 -0
- package/lib/spatial/spatial-tiles.d.ts +9 -256
- package/lib/spatial/stats.d.ts +38 -0
- package/lib/spatial/transcript-grouping.d.ts +119 -0
- package/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.d.ts +64 -0
- package/lib/spatial-controls/spatial-charts/chart-data-model.d.ts +153 -0
- package/lib/spatial-controls/spatial-charts/chart-help.d.ts +69 -0
- package/lib/spatial-controls/spatial-charts/plotly-chart-host.d.ts +98 -0
- package/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.d.ts +26 -0
- package/lib/spatial-controls/spatial-charts/spatial-charts.component.d.ts +101 -260
- package/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.d.ts +43 -0
- package/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.d.ts +27 -0
- package/lib/spatial-controls/spatial-controls.component.d.ts +68 -448
- package/lib/spatial-controls/spatial-gene-picker.d.ts +86 -0
- package/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.d.ts +102 -0
- package/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.d.ts +72 -0
- package/lib/spatial-controls/spatial-key/spatial-key.component.d.ts +66 -0
- package/lib/spatial-controls/spatial-key/spatial-key.model.d.ts +33 -0
- package/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.d.ts +64 -0
- package/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.d.ts +117 -0
- package/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.d.ts +142 -0
- package/lib/store/class-color.util.d.ts +39 -2
- package/lib/store/class-signatures.d.ts +11 -0
- package/lib/store/region-history.d.ts +66 -0
- package/lib/store/region-scope-cache.d.ts +65 -0
- package/lib/store/region-selection.d.ts +36 -0
- package/lib/store/region-source-scope.d.ts +68 -0
- package/lib/store/region-store.service.d.ts +312 -116
- package/lib/store/visualizer-store.service.d.ts +32 -33
- package/lib/toast-outlets.d.ts +4 -3
- package/lib/toolbar/brush/brush-tool.service.d.ts +31 -98
- package/lib/toolbar/canvas-tools.d.ts +20 -0
- package/lib/toolbar/crop/slide-crop.d.ts +10 -4
- package/lib/toolbar/plot-type-selector/plot-type-selector.component.d.ts +38 -0
- package/lib/toolbar/region-tools/region-tool-buttons.d.ts +21 -0
- package/lib/toolbar/region-tools/region-tools.component.d.ts +62 -0
- package/lib/toolbar/segmentation/cell-segment-tool.service.d.ts +10 -14
- package/lib/toolbar/segmentation/cellpose-segmenter.service.d.ts +12 -2
- package/lib/toolbar/segmentation/onnx-sam-session.d.ts +22 -3
- package/lib/toolbar/segmentation/pending-calls.d.ts +31 -0
- package/lib/toolbar/segmentation/sam-model-registry.d.ts +9 -3
- package/lib/toolbar/segmentation/sam-onnx-core.d.ts +18 -5
- package/lib/toolbar/segmentation/sam-point-tool.service.d.ts +46 -32
- package/lib/toolbar/segmentation/sam-prompt.d.ts +7 -31
- package/lib/toolbar/segmentation/sam-session.service.d.ts +74 -0
- package/lib/toolbar/segmentation/sam-tool.service.d.ts +23 -30
- package/lib/toolbar/segmentation/segmentation-commit.d.ts +8 -0
- package/lib/toolbar/segmentation/segmentation-runner.d.ts +52 -0
- package/lib/toolbar/segmentation-tools/segmentation-tools.component.d.ts +87 -0
- package/lib/toolbar/stack-controls/stack-controls.component.d.ts +51 -0
- package/lib/toolbar/tool-kit/async-tool-status.d.ts +21 -0
- package/lib/toolbar/tool-kit/canvas-tool-manager.d.ts +36 -0
- package/lib/toolbar/tool-kit/canvas-tool.d.ts +86 -0
- package/lib/toolbar/tool-kit/frame-pixels.d.ts +45 -0
- package/lib/toolbar/tool-kit/mask-stroke-editor.d.ts +125 -0
- package/lib/toolbar/tool-kit/matrix-frame.d.ts +40 -0
- package/lib/toolbar/tool-kit/tool-overlay.d.ts +60 -0
- package/lib/toolbar/tool-kit/undo-gesture.d.ts +17 -0
- package/lib/toolbar/tool-slider/tool-slider.component.d.ts +33 -0
- package/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.d.ts +24 -0
- package/lib/toolbar/toolbar.component.d.ts +55 -84
- package/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.d.ts +33 -40
- package/lib/toolbar/view-controls/view-controls.component.d.ts +54 -0
- package/lib/toolbar/wand/wand-region-grow.d.ts +49 -0
- package/lib/toolbar/wand/wand-tool.service.d.ts +39 -124
- package/lib/toolbar/wand/wand.service.d.ts +22 -116
- package/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.d.ts +17 -37
- package/lib/util/mark-for-check.d.ts +11 -0
- package/lib/util/supersede.d.ts +53 -0
- package/lib/visualization.module.d.ts +18 -39
- package/lib/visualizer/floating-drag.directive.d.ts +30 -0
- package/lib/visualizer/region-actions.d.ts +54 -0
- package/lib/visualizer/region-load.d.ts +46 -0
- package/lib/visualizer/spatial-dataset-binder.d.ts +74 -0
- package/lib/visualizer/tool-modes.d.ts +49 -0
- package/lib/visualizer/viewer-shortcuts.d.ts +71 -0
- package/lib/visualizer/visualizer-context-menu.d.ts +55 -0
- package/lib/visualizer/volume-sections.d.ts +64 -0
- package/lib/visualizer.component.d.ts +232 -447
- package/lib/workers/spatial-math-ops.d.ts +65 -0
- package/lib/workers/spatial-math-worker.d.ts +7 -0
- package/lib/workers/spatial-math.d.ts +74 -0
- package/package.json +12 -3
- package/src/lib/assets/slice.svg +23 -0
- package/src/lib/styles/_viz-icons-rules.scss +73 -0
- package/src/lib/styles/viz-icons.scss +14 -0
- package/esm2022/lib/implementations/napari-js/napari-axes-labels.mjs +0 -97
- package/esm2022/lib/implementations/napari-js/napari-navigator.mjs +0 -195
- package/esm2022/lib/implementations/napari-js/napari-scale-bar.mjs +0 -92
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs +0 -329
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs.map +0 -1
- package/lib/implementations/napari-js/napari-axes-labels.d.ts +0 -49
- package/lib/implementations/napari-js/napari-navigator.d.ts +0 -72
- package/lib/implementations/napari-js/napari-scale-bar.d.ts +0 -35
- package/src/lib/assets/cell-detection.svg +0 -37
- package/src/lib/assets/click.svg +0 -1
- package/src/lib/assets/colormap-luts.json +0 -1
- package/src/lib/assets/edit-selection-white.svg +0 -47
- package/src/lib/assets/icons/colormap-earth.png +0 -0
- package/src/lib/assets/icons/colormap-placeholder.png +0 -0
- package/src/lib/assets/icons/colormap-pubu.png +0 -0
- package/src/lib/assets/interactive-segmentation-cursor.svg +0 -1
- package/src/lib/assets/picture-segmentation.svg +0 -43
- package/src/lib/assets/test/download-379.svg +0 -1
- package/src/lib/assets/test/download-98.svg +0 -1
- package/src/lib/assets/test/json-1.svg +0 -1
- package/src/lib/assets/test/load-53.svg +0 -1
- package/src/lib/assets/test/mask-44.svg +0 -1
- package/src/lib/assets/test/mask-download-44.svg +0 -15
- package/src/lib/assets/test/mask-save-44.svg +0 -11
- package/src/lib/assets/test/overlay-1.svg +0 -1
- package/src/lib/assets/test/overlay-4.svg +0 -1
- package/src/lib/assets/test/region-26.svg +0 -1
- package/src/lib/assets/test/save-56.svg +0 -1
- package/src/lib/assets/test/upload-43.svg +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { EventEmitter
|
|
2
|
-
import { MenuItem } from 'primeng/api';
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
3
2
|
import { IImageInfo } from '../contracts/image.contract';
|
|
4
3
|
import { PlotType, PlotTypeId } from '../contracts/plot-type';
|
|
5
4
|
import { ToolbarToolVisibility } from '../contracts/toolbar-config';
|
|
@@ -18,13 +17,13 @@ import * as i0 from "@angular/core";
|
|
|
18
17
|
* diagram's right-click context menu and keyboard shortcuts, so keeping the
|
|
19
18
|
* handlers in the host avoids duplicating that logic.
|
|
20
19
|
*/
|
|
21
|
-
export declare class ToolbarComponent
|
|
20
|
+
export declare class ToolbarComponent {
|
|
22
21
|
/** Current image (gates which control groups are shown). */
|
|
23
22
|
imageInfo: IImageInfo | undefined;
|
|
24
23
|
/** A spatial dataset is on offer: its plot modes are a choice even with no image loaded. */
|
|
25
24
|
hasSpatialDataset: boolean;
|
|
26
25
|
/** Whether the plot-type dropdown shows: for an image, or a spatial dataset with none. */
|
|
27
|
-
get showPlotTypes(): boolean;
|
|
26
|
+
protected get showPlotTypes(): boolean;
|
|
28
27
|
/** Plot types the active backend advertises, then any contributed modes. */
|
|
29
28
|
plotTypeOptions: PlotTypeOption[];
|
|
30
29
|
/** The selector's value: a built-in type or a contributed mode's id. */
|
|
@@ -40,7 +39,9 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
40
39
|
/** Isosurface band as a 0–255 slider position (mapped onto the volume's real
|
|
41
40
|
* intensity range by the renderer). Defaults to the full range. */
|
|
42
41
|
isoRange: number[];
|
|
42
|
+
/** The last slice index of a stack. */
|
|
43
43
|
maxIndex: number;
|
|
44
|
+
/** The current slice (0-based). */
|
|
44
45
|
zIndex: number;
|
|
45
46
|
/** True for any 2D (non Surface-3D) plot type. */
|
|
46
47
|
isHeatmap: boolean;
|
|
@@ -51,20 +52,25 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
51
52
|
* controls — flipping that would show 2D pan/zoom and hide the orbit controls.
|
|
52
53
|
*/
|
|
53
54
|
is3dRegions: boolean;
|
|
55
|
+
/** A napari volume / isosurface view: the Region Editor (regions in 3D) without drawing tools. */
|
|
56
|
+
isVolumeView: boolean;
|
|
57
|
+
/** Whether the volume view is split with the slice editor (the slice, with every region tool). */
|
|
58
|
+
sliceEditor: boolean;
|
|
59
|
+
/** The armed tool's mode (zoom, pan, a drawing tool, `samPoint`, …), or null. */
|
|
54
60
|
activeDragMode: string | null;
|
|
61
|
+
/** The 3D camera mode (`turntable` / `orbit` / …). */
|
|
55
62
|
activeSurface3dMode: string;
|
|
56
63
|
/** Whether the napari 3D axes/scale gizmo is currently shown (drives the toggle's look). */
|
|
57
64
|
axesVisible: boolean;
|
|
65
|
+
/** The napari surface wireframe is on. */
|
|
58
66
|
wireframeActive: boolean;
|
|
59
67
|
/** Active napari 3D decimate factor (1 = Full … 8 = ⅛; default ½). */
|
|
60
68
|
resolutionScale: number;
|
|
61
|
-
/**
|
|
62
|
-
readonly decimateOptions: {
|
|
63
|
-
label: string;
|
|
64
|
-
value: number;
|
|
65
|
-
}[];
|
|
69
|
+
/** Magic-wand sensitivity. */
|
|
66
70
|
wandSensitivity: number;
|
|
71
|
+
/** Brush diameter in image pixels. */
|
|
67
72
|
brushSize: number;
|
|
73
|
+
/** Vertex-eraser radius in image pixels. */
|
|
68
74
|
vertexEraserRadius: number;
|
|
69
75
|
/** Whether a region action is available to undo (jit-ui#85). Greys out the
|
|
70
76
|
* Undo button when false (nothing done yet, or all steps already undone). */
|
|
@@ -72,6 +78,7 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
72
78
|
/** Whether an undone region action is available to redo (jit-ui#85). Greys
|
|
73
79
|
* out the Redo button when false. */
|
|
74
80
|
canRedo: boolean;
|
|
81
|
+
/** The single-image / stack choices of the Plotly stack toggle. */
|
|
75
82
|
stackOptions: {
|
|
76
83
|
name: string;
|
|
77
84
|
val: string;
|
|
@@ -87,6 +94,7 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
87
94
|
id: string;
|
|
88
95
|
label: string;
|
|
89
96
|
}[];
|
|
97
|
+
/** The selected SAM model id. */
|
|
90
98
|
samModelId: string;
|
|
91
99
|
/**
|
|
92
100
|
* Tools contributed through {@link TOOLBAR_TOOLS}, already filtered to the
|
|
@@ -100,31 +108,48 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
100
108
|
openDialogToolId: string | null;
|
|
101
109
|
/** Active checkpoint per contributed tool, keyed by tool id. */
|
|
102
110
|
toolModelIds: Record<string, string>;
|
|
111
|
+
/** A plot type or contributed mode was picked. */
|
|
103
112
|
selectPlotType: EventEmitter<string>;
|
|
104
113
|
/** Intensity (LINE) mode: add another colored line ROI + inset trace. */
|
|
105
114
|
addProfileLine: EventEmitter<void>;
|
|
106
115
|
/** Toggle image smoothing (bilinear) vs nearest-neighbour (crisp pixels). */
|
|
107
116
|
toggleImageSmoothing: EventEmitter<void>;
|
|
117
|
+
/** The isosurface band slider moved: the new `[low, high]` pair. */
|
|
108
118
|
isoRangeChange: EventEmitter<number[] | undefined>;
|
|
109
119
|
/** Open the Channels & Histogram dialog (brightness/contrast, colormap, …). */
|
|
110
120
|
openChannelHistogram: EventEmitter<void>;
|
|
111
121
|
/** Open the spatial-omics controls (colour-by, legend, point display). */
|
|
112
122
|
openSpatialControls: EventEmitter<void>;
|
|
123
|
+
/** Open the Region Editor dialog. */
|
|
113
124
|
openRegionEditor: EventEmitter<void>;
|
|
125
|
+
/** Split the volume view with the slice editor, or close it. */
|
|
126
|
+
toggleSliceEditor: EventEmitter<void>;
|
|
127
|
+
/** A single-image / stack choice was picked. */
|
|
114
128
|
selectStackOption: EventEmitter<{
|
|
115
129
|
name: string;
|
|
116
130
|
val: string;
|
|
117
131
|
}>;
|
|
132
|
+
/** The live slice scrubber moved (fires while dragging). */
|
|
118
133
|
zScrub: EventEmitter<number | undefined>;
|
|
134
|
+
/** The live slice scrubber was released on a slice. */
|
|
119
135
|
zSlide: EventEmitter<number | undefined>;
|
|
136
|
+
/** A slice number was typed. */
|
|
120
137
|
zIndexInput: EventEmitter<number>;
|
|
138
|
+
/** Re-plot at the typed slice. */
|
|
121
139
|
reloadAndPlot: EventEmitter<void>;
|
|
140
|
+
/** Download the current view as PNG. */
|
|
122
141
|
downloadImage: EventEmitter<void>;
|
|
142
|
+
/** Fit the image to the view. */
|
|
123
143
|
autoscaleImage: EventEmitter<void>;
|
|
144
|
+
/** A zoom / pan / drawing tool button was clicked (its mode). */
|
|
124
145
|
toggleDragMode: EventEmitter<string>;
|
|
146
|
+
/** Zoom in one step. */
|
|
125
147
|
zoomIn: EventEmitter<void>;
|
|
148
|
+
/** Zoom out one step. */
|
|
126
149
|
zoomOut: EventEmitter<void>;
|
|
150
|
+
/** A 3D camera mode button was clicked (its mode). */
|
|
127
151
|
toggleSurface3dMode: EventEmitter<string>;
|
|
152
|
+
/** Reset the 3D camera. */
|
|
128
153
|
resetSurfaceCamera: EventEmitter<void>;
|
|
129
154
|
/** Toggle the napari 3D coordinate-axes / scale gizmo on/off. */
|
|
130
155
|
toggleAxes: EventEmitter<void>;
|
|
@@ -132,6 +157,7 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
132
157
|
toggleWireframe: EventEmitter<void>;
|
|
133
158
|
/** Change the napari 3D decimate factor (reloads at the new resolution). */
|
|
134
159
|
selectResolution: EventEmitter<number>;
|
|
160
|
+
/** Delete the selected region. */
|
|
135
161
|
deleteRegion: EventEmitter<void>;
|
|
136
162
|
/** Undo the last region action (jit-ui#85). */
|
|
137
163
|
undoRegion: EventEmitter<void>;
|
|
@@ -154,105 +180,50 @@ export declare class ToolbarComponent implements OnChanges {
|
|
|
154
180
|
openToolParams: EventEmitter<string>;
|
|
155
181
|
/** SAM model picker (jit-ui#90 P1). */
|
|
156
182
|
samModelChange: EventEmitter<string>;
|
|
183
|
+
/** The wand sensitivity slider moved. */
|
|
157
184
|
wandSensitivityChange: EventEmitter<number | undefined>;
|
|
185
|
+
/** The brush size slider moved. */
|
|
158
186
|
brushSizeChange: EventEmitter<number | undefined>;
|
|
187
|
+
/** The vertex-eraser radius slider moved. */
|
|
159
188
|
vertexEraserRadiusChange: EventEmitter<number | undefined>;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
readonly wandSensitivityStep = 0.1;
|
|
164
|
-
readonly brushSizeMin = 5;
|
|
165
|
-
readonly brushSizeMax = 300;
|
|
166
|
-
readonly brushSizeStep = 5;
|
|
167
|
-
readonly vertexEraserRadiusMin = 5;
|
|
168
|
-
readonly vertexEraserRadiusMax = 300;
|
|
169
|
-
readonly vertexEraserRadiusStep = 5;
|
|
170
|
-
readonly isoValueMin = 0;
|
|
171
|
-
readonly isoValueMax = 255;
|
|
172
|
-
readonly isoValueStep = 1;
|
|
173
|
-
displayHelpDialog: boolean;
|
|
174
|
-
/** Model picker for the Segment button's dropdown menu. The active model
|
|
175
|
-
* (`samModelId`) is marked with a check; selecting an item emits
|
|
176
|
-
* `samModelChange` (jit-ui#90 P1).
|
|
177
|
-
*
|
|
178
|
-
* Held as a stable array (rebuilt only when `samModels`/`samModelId` change),
|
|
179
|
-
* NOT a getter: a getter returns a fresh array with new `command` closures on
|
|
180
|
-
* every change-detection tick, which makes the bound `p-menu` overlay rebuild
|
|
181
|
-
* its DOM mid-interaction and swallow the click on a menu item.
|
|
182
|
-
*
|
|
183
|
-
* `tooltip` carries the model's description from {@link MODEL_INFO}; the
|
|
184
|
-
* menus' shared item template turns it into the hover info icon. p-menu's own
|
|
185
|
-
* rendering ignores the field (it reads `item.title`), so it is free to use. */
|
|
186
|
-
samMenuItems: MenuItem[];
|
|
187
|
-
/**
|
|
188
|
-
* Model menus for the contributed tools, keyed by tool id. Same stable-array
|
|
189
|
-
* reasoning as {@link samMenuItems} — and it is why this is a map rebuilt in
|
|
190
|
-
* `ngOnChanges` rather than a method called from the template, which would
|
|
191
|
-
* hand `p-menu` a new array every tick.
|
|
192
|
-
*
|
|
193
|
-
* A contributed tool supplies its own per-model description, so unlike the
|
|
194
|
-
* SAM menu these do not consult {@link MODEL_INFO}: this library has no
|
|
195
|
-
* copy for checkpoints it does not know about.
|
|
196
|
-
*/
|
|
197
|
-
toolMenuItems: Record<string, MenuItem[]>;
|
|
198
|
-
/** Rebuild the SAM model menu when the model list or active selection
|
|
199
|
-
* changes (keeps the array reference stable across other CD ticks). */
|
|
200
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
201
|
-
/**
|
|
202
|
-
* Strip markup from a model description so it can be read aloud.
|
|
203
|
-
*
|
|
204
|
-
* The copy in MODEL_INFO and in a contribution's `ToolModelOption.info` is
|
|
205
|
-
* written for a visual tooltip rendered with `[escape]="false"`, so it carries
|
|
206
|
-
* `<b>` and `<br>`. Passed to `aria-label` verbatim a screen reader announces
|
|
207
|
-
* the tags, so they are removed and `<br>` becomes a sentence break. Entities
|
|
208
|
-
* used in that copy (` `, `×`, `&`) are decoded for the same
|
|
209
|
-
* reason.
|
|
210
|
-
*/
|
|
211
|
-
plainText(html: string): string;
|
|
212
|
-
/** Contributed tool names for the help dialog's prompted/no-prompt contrast,
|
|
213
|
-
* e.g. "YOLO, Retinal layers". Empty when nothing is registered, which is
|
|
214
|
-
* why the sentence that uses it is itself conditional. */
|
|
215
|
-
get contributedToolNames(): string;
|
|
216
|
-
/** Keeps each contributed tool's `p-menu` overlay alive across CD ticks —
|
|
217
|
-
* re-creating it mid-interaction swallows the click on a menu item. */
|
|
218
|
-
trackToolById(_index: number, tool: {
|
|
189
|
+
protected displayHelpDialog: boolean;
|
|
190
|
+
/** trackBy for the dialog tools' buttons. */
|
|
191
|
+
protected trackToolById(_index: number, tool: {
|
|
219
192
|
id: string;
|
|
220
193
|
}): string;
|
|
221
194
|
/** The built-in type whose tools and controls apply to the current selection. */
|
|
222
|
-
get effectivePlotType(): PlotType;
|
|
195
|
+
protected get effectivePlotType(): PlotType;
|
|
223
196
|
/** The Image plot type renders as a natively pan/zoom-able raster, so the
|
|
224
197
|
* generic zoom/pan tools are hidden. */
|
|
225
|
-
get isImageView(): boolean;
|
|
198
|
+
protected get isImageView(): boolean;
|
|
226
199
|
/** Either spatial-omics mode is active, so its controls are worth offering.
|
|
227
200
|
* The 3D cloud needs the panel MORE than the 2D view does, not less: colouring,
|
|
228
201
|
* the legend and category show/hide are the only way to make sense of a
|
|
229
202
|
* million overlapping points. */
|
|
230
|
-
get isSpatialMode(): boolean;
|
|
231
|
-
/** A plot-type icon is a PrimeNG font glyph (e.g. `pi pi-image`) rather than an
|
|
232
|
-
* SVG asset path — drives which element the selector item template renders. */
|
|
233
|
-
isPiIcon(icon: string | undefined): boolean;
|
|
203
|
+
protected get isSpatialMode(): boolean;
|
|
234
204
|
/** Backends with a vertex-editing region overlay: OSD Image and napari-js WebGPU image
|
|
235
205
|
* (jit-ui#102). Gates the polygon / add-vertex / delete-vertex / Bézier-convert tools. */
|
|
236
|
-
get supportsRegionVertexTools(): boolean;
|
|
206
|
+
protected get supportsRegionVertexTools(): boolean;
|
|
237
207
|
/** Plot types that scrub a z-stack live (the renderer swaps the slice in place): the OSD Image
|
|
238
208
|
* view, the napari-js WebGPU image, the napari-js surface — which rebuilds the height field
|
|
239
209
|
* from the picked slice (jit-ui#102) — and the 2D spatial-omics view, where a 3D dataset's
|
|
240
210
|
* registered volume is the image and the slider picks the section whose observations are
|
|
241
|
-
* drawn.
|
|
242
|
-
|
|
211
|
+
* drawn. Also a split volume view, whose slice editor shows the slice picked. Drives the
|
|
212
|
+
* per-slice slider. */
|
|
213
|
+
protected get showsLiveSliceScrubber(): boolean;
|
|
243
214
|
/** Any napari-js WebGPU plot type. The single-image/stack toggle + slice-number field are
|
|
244
215
|
* Plotly-only stack controls, so they're hidden for napari (jit-ui#102). */
|
|
245
|
-
get isNapariMode(): boolean;
|
|
216
|
+
protected get isNapariMode(): boolean;
|
|
246
217
|
/** ISOSURFACE (Plotly or napari-js WebGPU, either resolution) shows the isovalue range slider. */
|
|
247
|
-
get isIsosurfaceMode(): boolean;
|
|
218
|
+
protected get isIsosurfaceMode(): boolean;
|
|
248
219
|
/** The napari-js WebGPU surface — shows the wireframe toggle. */
|
|
249
|
-
get isNapariSurfaceMode(): boolean;
|
|
220
|
+
protected get isNapariSurfaceMode(): boolean;
|
|
250
221
|
/** Any napari-js WebGPU 3D type (volume/isosurface/surface) — shows the Resolution control. */
|
|
251
|
-
get isNapari3dMode(): boolean;
|
|
222
|
+
protected get isNapari3dMode(): boolean;
|
|
252
223
|
/** Intensity profile lines are Region-based and available in the Heatmap and
|
|
253
224
|
* Image plot types, which show the Intensity tool group. */
|
|
254
|
-
get isIntensityCapable(): boolean;
|
|
255
|
-
showHelp(): void;
|
|
225
|
+
protected get isIntensityCapable(): boolean;
|
|
226
|
+
protected showHelp(): void;
|
|
256
227
|
static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarComponent, never>;
|
|
257
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "plotting-toolbar", never, { "imageInfo": { "alias": "imageInfo"; "required": false; }; "hasSpatialDataset": { "alias": "hasSpatialDataset"; "required": false; }; "plotTypeOptions": { "alias": "plotTypeOptions"; "required": false; }; "selectedPlotType": { "alias": "selectedPlotType"; "required": false; }; "basePlotType": { "alias": "basePlotType"; "required": false; }; "isoRange": { "alias": "isoRange"; "required": false; }; "maxIndex": { "alias": "maxIndex"; "required": false; }; "zIndex": { "alias": "zIndex"; "required": false; }; "isHeatmap": { "alias": "isHeatmap"; "required": false; }; "is3dRegions": { "alias": "is3dRegions"; "required": false; }; "activeDragMode": { "alias": "activeDragMode"; "required": false; }; "activeSurface3dMode": { "alias": "activeSurface3dMode"; "required": false; }; "axesVisible": { "alias": "axesVisible"; "required": false; }; "wireframeActive": { "alias": "wireframeActive"; "required": false; }; "resolutionScale": { "alias": "resolutionScale"; "required": false; }; "wandSensitivity": { "alias": "wandSensitivity"; "required": false; }; "brushSize": { "alias": "brushSize"; "required": false; }; "vertexEraserRadius": { "alias": "vertexEraserRadius"; "required": false; }; "canUndo": { "alias": "canUndo"; "required": false; }; "canRedo": { "alias": "canRedo"; "required": false; }; "stackOptions": { "alias": "stackOptions"; "required": false; }; "tools": { "alias": "tools"; "required": false; }; "imageSmoothingEnabled": { "alias": "imageSmoothingEnabled"; "required": false; }; "samModels": { "alias": "samModels"; "required": false; }; "samModelId": { "alias": "samModelId"; "required": false; }; "contributedTools": { "alias": "contributedTools"; "required": false; }; "dialogTools": { "alias": "dialogTools"; "required": false; }; "openDialogToolId": { "alias": "openDialogToolId"; "required": false; }; "toolModelIds": { "alias": "toolModelIds"; "required": false; }; }, { "selectPlotType": "selectPlotType"; "addProfileLine": "addProfileLine"; "toggleImageSmoothing": "toggleImageSmoothing"; "isoRangeChange": "isoRangeChange"; "openChannelHistogram": "openChannelHistogram"; "openSpatialControls": "openSpatialControls"; "openRegionEditor": "openRegionEditor"; "selectStackOption": "selectStackOption"; "zScrub": "zScrub"; "zSlide": "zSlide"; "zIndexInput": "zIndexInput"; "reloadAndPlot": "reloadAndPlot"; "downloadImage": "downloadImage"; "autoscaleImage": "autoscaleImage"; "toggleDragMode": "toggleDragMode"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "toggleSurface3dMode": "toggleSurface3dMode"; "resetSurfaceCamera": "resetSurfaceCamera"; "toggleAxes": "toggleAxes"; "toggleWireframe": "toggleWireframe"; "selectResolution": "selectResolution"; "deleteRegion": "deleteRegion"; "undoRegion": "undoRegion"; "redoRegion": "redoRegion"; "segmentRegions": "segmentRegions"; "segmentCellpose": "segmentCellpose"; "runTool": "runTool"; "toggleDialogTool": "toggleDialogTool"; "toolModelChange": "toolModelChange"; "openToolParams": "openToolParams"; "samModelChange": "samModelChange"; "wandSensitivityChange": "wandSensitivityChange"; "brushSizeChange": "brushSizeChange"; "vertexEraserRadiusChange": "vertexEraserRadiusChange"; }, never, ["*"],
|
|
228
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "plotting-toolbar", never, { "imageInfo": { "alias": "imageInfo"; "required": false; }; "hasSpatialDataset": { "alias": "hasSpatialDataset"; "required": false; }; "plotTypeOptions": { "alias": "plotTypeOptions"; "required": false; }; "selectedPlotType": { "alias": "selectedPlotType"; "required": false; }; "basePlotType": { "alias": "basePlotType"; "required": false; }; "isoRange": { "alias": "isoRange"; "required": false; }; "maxIndex": { "alias": "maxIndex"; "required": false; }; "zIndex": { "alias": "zIndex"; "required": false; }; "isHeatmap": { "alias": "isHeatmap"; "required": false; }; "is3dRegions": { "alias": "is3dRegions"; "required": false; }; "isVolumeView": { "alias": "isVolumeView"; "required": false; }; "sliceEditor": { "alias": "sliceEditor"; "required": false; }; "activeDragMode": { "alias": "activeDragMode"; "required": false; }; "activeSurface3dMode": { "alias": "activeSurface3dMode"; "required": false; }; "axesVisible": { "alias": "axesVisible"; "required": false; }; "wireframeActive": { "alias": "wireframeActive"; "required": false; }; "resolutionScale": { "alias": "resolutionScale"; "required": false; }; "wandSensitivity": { "alias": "wandSensitivity"; "required": false; }; "brushSize": { "alias": "brushSize"; "required": false; }; "vertexEraserRadius": { "alias": "vertexEraserRadius"; "required": false; }; "canUndo": { "alias": "canUndo"; "required": false; }; "canRedo": { "alias": "canRedo"; "required": false; }; "stackOptions": { "alias": "stackOptions"; "required": false; }; "tools": { "alias": "tools"; "required": false; }; "imageSmoothingEnabled": { "alias": "imageSmoothingEnabled"; "required": false; }; "samModels": { "alias": "samModels"; "required": false; }; "samModelId": { "alias": "samModelId"; "required": false; }; "contributedTools": { "alias": "contributedTools"; "required": false; }; "dialogTools": { "alias": "dialogTools"; "required": false; }; "openDialogToolId": { "alias": "openDialogToolId"; "required": false; }; "toolModelIds": { "alias": "toolModelIds"; "required": false; }; }, { "selectPlotType": "selectPlotType"; "addProfileLine": "addProfileLine"; "toggleImageSmoothing": "toggleImageSmoothing"; "isoRangeChange": "isoRangeChange"; "openChannelHistogram": "openChannelHistogram"; "openSpatialControls": "openSpatialControls"; "openRegionEditor": "openRegionEditor"; "toggleSliceEditor": "toggleSliceEditor"; "selectStackOption": "selectStackOption"; "zScrub": "zScrub"; "zSlide": "zSlide"; "zIndexInput": "zIndexInput"; "reloadAndPlot": "reloadAndPlot"; "downloadImage": "downloadImage"; "autoscaleImage": "autoscaleImage"; "toggleDragMode": "toggleDragMode"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "toggleSurface3dMode": "toggleSurface3dMode"; "resetSurfaceCamera": "resetSurfaceCamera"; "toggleAxes": "toggleAxes"; "toggleWireframe": "toggleWireframe"; "selectResolution": "selectResolution"; "deleteRegion": "deleteRegion"; "undoRegion": "undoRegion"; "redoRegion": "redoRegion"; "segmentRegions": "segmentRegions"; "segmentCellpose": "segmentCellpose"; "runTool": "runTool"; "toggleDialogTool": "toggleDialogTool"; "toolModelChange": "toolModelChange"; "openToolParams": "openToolParams"; "samModelChange": "samModelChange"; "wandSensitivityChange": "wandSensitivityChange"; "brushSizeChange": "brushSizeChange"; "vertexEraserRadiusChange": "vertexEraserRadiusChange"; }, never, ["*"], true, never>;
|
|
258
229
|
}
|
|
@@ -1,64 +1,57 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { IVertexEraserOptions } from '../../contracts/display-types';
|
|
2
|
+
import { UndoGestureTarget } from '../tool-kit/undo-gesture';
|
|
3
|
+
import { CanvasToolHost, ICanvasTool } from '../tool-kit/canvas-tool';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* so the eraser is backend-agnostic (Plotly and OpenSeadragon both satisfy it).
|
|
5
|
+
* @deprecated One host serves every canvas tool: use {@link CanvasToolHost}.
|
|
6
|
+
* The eraser converts with its readback's per-axis ratios
|
|
7
|
+
* (`getCachedImageData().ratios`, RT-14); `getCachedImageRatio()` is gone.
|
|
9
8
|
*/
|
|
10
|
-
export
|
|
11
|
-
/**
|
|
12
|
-
* Drop the wand's in-progress stroke. Called after the eraser modifies
|
|
13
|
-
* regions — the wand's accumulator may now reference stale vertices.
|
|
14
|
-
*/
|
|
15
|
-
invalidateWandRegion(): void;
|
|
16
|
-
/**
|
|
17
|
-
* Data-coords-per-image-pixel ratio (== cachedImageRatios[0] || 1). Used to
|
|
18
|
-
* convert between matrix coordinates (the eraser's native space) and the
|
|
19
|
-
* backend's data coordinates.
|
|
20
|
-
*/
|
|
21
|
-
getCachedImageRatio(): number;
|
|
22
|
-
}
|
|
9
|
+
export type VertexEraserToolHost = CanvasToolHost;
|
|
23
10
|
/**
|
|
24
11
|
* Vertex eraser. A custom canvas overlay that, on click/drag, removes any
|
|
25
12
|
* polygon vertex within `radius` matrix-pixels of the cursor from every
|
|
26
|
-
*
|
|
27
|
-
*
|
|
13
|
+
* annotation polygon/polyline (never an intensity-profile line). The outline is
|
|
14
|
+
* rejoined where it crosses the eraser's edge, so erasing a corner of a sparse
|
|
15
|
+
* outline (a traced box is four vertices) trims that corner instead of cutting
|
|
16
|
+
* to the next corners; a Bezier region's anchors are dropped outright. Polygons
|
|
17
|
+
* that fall below 3 vertices (or polylines below 2) are removed entirely.
|
|
28
18
|
*
|
|
29
19
|
* The cursor is rendered as a dashed-red circle on the overlay so the user
|
|
30
20
|
* can see the active radius while moving.
|
|
31
21
|
*/
|
|
32
|
-
export declare class
|
|
33
|
-
|
|
22
|
+
export declare class VertexEraserTool implements ICanvasTool<IVertexEraserOptions> {
|
|
23
|
+
readonly id = "eraseVertex";
|
|
34
24
|
private host;
|
|
35
|
-
private overlay;
|
|
25
|
+
private readonly overlay;
|
|
36
26
|
private dragging;
|
|
37
27
|
/** Eraser radius in image-pixel (matrix) coordinates. */
|
|
38
28
|
private radius;
|
|
39
29
|
private cursor;
|
|
40
|
-
|
|
41
|
-
private readonly
|
|
42
|
-
|
|
43
|
-
constructor(
|
|
44
|
-
|
|
45
|
-
|
|
30
|
+
/** Makes each drag one undo step, however long the user pauses (RT-12). */
|
|
31
|
+
private readonly gesture;
|
|
32
|
+
/** @param gestureTarget the region store, so each drag is one undo step. */
|
|
33
|
+
constructor(gestureTarget?: UndoGestureTarget | null);
|
|
34
|
+
/** Arm the eraser on `host`, optionally with a new radius. */
|
|
35
|
+
activate(host: CanvasToolHost, options?: IVertexEraserOptions): void;
|
|
36
|
+
/** Disarm: remove the overlay and its cursor. */
|
|
37
|
+
deactivate(): void;
|
|
38
|
+
setOptions(options: IVertexEraserOptions): void;
|
|
46
39
|
/** Set eraser radius in matrix-pixel (image pixel) coordinates. */
|
|
47
40
|
setRadius(radius: number): void;
|
|
48
41
|
private createOverlay;
|
|
49
|
-
private
|
|
50
|
-
private
|
|
51
|
-
private
|
|
52
|
-
private onMouseUp;
|
|
42
|
+
private onPointerDown;
|
|
43
|
+
private onPointerMove;
|
|
44
|
+
private onPointerUp;
|
|
53
45
|
private updateCursor;
|
|
54
46
|
/** Draw the eraser radius circle at the current cursor position. */
|
|
55
47
|
private drawCursor;
|
|
48
|
+
/** The data↔matrix frame of the host's readback (identity without one). */
|
|
49
|
+
private frame;
|
|
56
50
|
/**
|
|
57
|
-
* Drop every vertex of every
|
|
58
|
-
* radius of the cursor
|
|
59
|
-
*
|
|
51
|
+
* Drop every vertex of every annotation polygon/polyline that lies within the
|
|
52
|
+
* eraser's radius of the cursor, rejoining the outline at the eraser's edge
|
|
53
|
+
* (see {@link eraseRingWithinRadius}). Polygons reduced below 3 vertices (or
|
|
54
|
+
* polylines below 2) are removed entirely. Edited regions keep their metadata.
|
|
60
55
|
*/
|
|
61
56
|
private applyAtClient;
|
|
62
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<VertexEraserToolService, never>;
|
|
63
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<VertexEraserToolService>;
|
|
64
57
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* The toolbar's view group: 2D zoom / pan tools, or for a 3D view the camera
|
|
5
|
+
* modes and reset, the napari axes and wireframe toggles and the 3D
|
|
6
|
+
* resolution. Presentational: the host owns every value.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ViewControlsComponent {
|
|
9
|
+
/** A 2D view (zoom tools) rather than a 3D one (camera controls). */
|
|
10
|
+
isHeatmap: boolean;
|
|
11
|
+
/** The host shows the zoom tools. */
|
|
12
|
+
zoomTools: boolean;
|
|
13
|
+
/** The OSD Image view (pans natively; no Plotly drag-zoom). */
|
|
14
|
+
isImageView: boolean;
|
|
15
|
+
/** The armed zoom/pan tool (`zoom`, `pan`, …), or null. */
|
|
16
|
+
activeDragMode: string | null;
|
|
17
|
+
/** The 3D camera mode (`turntable` / `orbit` / …). */
|
|
18
|
+
activeSurface3dMode: string;
|
|
19
|
+
/** A napari-js WebGPU view (axes toggle, napari camera). */
|
|
20
|
+
isNapariMode: boolean;
|
|
21
|
+
/** The napari-js surface (shows the wireframe toggle). */
|
|
22
|
+
isNapariSurfaceMode: boolean;
|
|
23
|
+
/** A napari-js 3D view (shows the Resolution dropdown). */
|
|
24
|
+
isNapari3dMode: boolean;
|
|
25
|
+
/** The napari 3D axes gizmo is shown. */
|
|
26
|
+
axesVisible: boolean;
|
|
27
|
+
/** The napari surface wireframe is on. */
|
|
28
|
+
wireframeActive: boolean;
|
|
29
|
+
/** Active napari 3D decimate factor (1 = Full … 8 = ⅛). */
|
|
30
|
+
resolutionScale: number;
|
|
31
|
+
/** A zoom/pan tool button was clicked (its mode). */
|
|
32
|
+
toggleDragMode: EventEmitter<string>;
|
|
33
|
+
/** Zoom in one step. */
|
|
34
|
+
zoomIn: EventEmitter<void>;
|
|
35
|
+
/** Zoom out one step. */
|
|
36
|
+
zoomOut: EventEmitter<void>;
|
|
37
|
+
/** A 3D camera mode button was clicked (its mode). */
|
|
38
|
+
toggleSurface3dMode: EventEmitter<string>;
|
|
39
|
+
/** Reset the 3D camera. */
|
|
40
|
+
resetSurfaceCamera: EventEmitter<void>;
|
|
41
|
+
/** Toggle the napari 3D axes gizmo. */
|
|
42
|
+
toggleAxes: EventEmitter<void>;
|
|
43
|
+
/** Toggle the napari surface wireframe. */
|
|
44
|
+
toggleWireframe: EventEmitter<void>;
|
|
45
|
+
/** A napari 3D decimate factor was picked. */
|
|
46
|
+
selectResolution: EventEmitter<number>;
|
|
47
|
+
/** Decimate-factor options for the Resolution dropdown. */
|
|
48
|
+
protected readonly decimateOptions: {
|
|
49
|
+
label: string;
|
|
50
|
+
value: number;
|
|
51
|
+
}[];
|
|
52
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ViewControlsComponent, never>;
|
|
53
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ViewControlsComponent, "toolbar-view-controls", never, { "isHeatmap": { "alias": "isHeatmap"; "required": false; }; "zoomTools": { "alias": "zoomTools"; "required": false; }; "isImageView": { "alias": "isImageView"; "required": false; }; "activeDragMode": { "alias": "activeDragMode"; "required": false; }; "activeSurface3dMode": { "alias": "activeSurface3dMode"; "required": false; }; "isNapariMode": { "alias": "isNapariMode"; "required": false; }; "isNapariSurfaceMode": { "alias": "isNapariSurfaceMode"; "required": false; }; "isNapari3dMode": { "alias": "isNapari3dMode"; "required": false; }; "axesVisible": { "alias": "axesVisible"; "required": false; }; "wireframeActive": { "alias": "wireframeActive"; "required": false; }; "resolutionScale": { "alias": "resolutionScale"; "required": false; }; }, { "toggleDragMode": "toggleDragMode"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "toggleSurface3dMode": "toggleSurface3dMode"; "resetSurfaceCamera": "resetSurfaceCamera"; "toggleAxes": "toggleAxes"; "toggleWireframe": "toggleWireframe"; "selectResolution": "selectResolution"; }, never, never, true, never>;
|
|
54
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Polygon } from '../../models/region';
|
|
2
|
+
import { IWandOptions, WandType } from '../../contracts/display-types';
|
|
3
|
+
import { CachedFrame } from '../tool-kit/frame-pixels';
|
|
4
|
+
/**
|
|
5
|
+
* Wand region-grow pipeline (pure, DOM- and DI-free), modelled after QuPath's
|
|
6
|
+
* WandToolEventHandler: extract a square patch around the click, optionally
|
|
7
|
+
* blur it, compute a local threshold (per channel, or a CIELAB distance map),
|
|
8
|
+
* run a fixed-range flood fill from the centre, close the mask, and (for
|
|
9
|
+
* {@link computeWandRegion}) trace it to a polygon in image coordinates.
|
|
10
|
+
*
|
|
11
|
+
* `WandService` delegates here; workers and new code should import these
|
|
12
|
+
* functions directly.
|
|
13
|
+
*/
|
|
14
|
+
export type { WandType };
|
|
15
|
+
export type WandOptions = IWandOptions;
|
|
16
|
+
export interface WandImage {
|
|
17
|
+
/**
|
|
18
|
+
* Grayscale: number[][] where data[y][x] is intensity.
|
|
19
|
+
* RGB: [r,g,b][][] where data[y][x] is a 3-tuple.
|
|
20
|
+
* Or a packed RGBA readback, read as RGB (see `tool-kit/frame-pixels`).
|
|
21
|
+
*/
|
|
22
|
+
data: CachedFrame;
|
|
23
|
+
width: number;
|
|
24
|
+
height: number;
|
|
25
|
+
isGrayscale: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** A wand patch mask: `size`×`size` 0/1 cells in patch-local coordinates. */
|
|
28
|
+
export interface WandPatchMask {
|
|
29
|
+
mask: Uint8Array;
|
|
30
|
+
size: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Grow a region from a click and trace it.
|
|
34
|
+
*
|
|
35
|
+
* @param image full-image pixel matrix (already in memory).
|
|
36
|
+
* @param cx click x in image-pixel coordinates.
|
|
37
|
+
* @param cy click y in image-pixel coordinates.
|
|
38
|
+
* @param options wand parameters; missing fields fall back to defaults.
|
|
39
|
+
* @returns a Polygon in image-pixel coordinates, or null if no region grew.
|
|
40
|
+
*/
|
|
41
|
+
export declare function computeWandRegion(image: WandImage, cx: number, cy: number, options?: WandOptions): Polygon | null;
|
|
42
|
+
/**
|
|
43
|
+
* The wand's per-click flood-fill mask in patch-local coordinates: the same
|
|
44
|
+
* pipeline as {@link computeWandRegion}, stopping before contour tracing (the
|
|
45
|
+
* tools accumulate per-tick masks across a brush-style stroke).
|
|
46
|
+
*
|
|
47
|
+
* @throws when `options.patchSize` is even.
|
|
48
|
+
*/
|
|
49
|
+
export declare function computeWandPatchMask(image: WandImage, cx: number, cy: number, options?: WandOptions): WandPatchMask | null;
|