napari-js 0.1.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/LICENSE +21 -0
- package/README.md +83 -0
- package/dist/cache/lru.d.ts +19 -0
- package/dist/camera/camera.d.ts +25 -0
- package/dist/camera/camera3d.d.ts +28 -0
- package/dist/camera/controls.d.ts +7 -0
- package/dist/camera/controls3d.d.ts +6 -0
- package/dist/color/checkerboard.d.ts +5 -0
- package/dist/color/colormap.d.ts +26 -0
- package/dist/color/display-pipeline.d.ts +22 -0
- package/dist/color/histogram.d.ts +14 -0
- package/dist/color/label-colormap.d.ts +7 -0
- package/dist/color/lut.d.ts +9 -0
- package/dist/engine/canvas.d.ts +20 -0
- package/dist/engine/device.d.ts +23 -0
- package/dist/engine/readback.d.ts +13 -0
- package/dist/engine/renderer.d.ts +42 -0
- package/dist/engine/viewport.d.ts +12 -0
- package/dist/index.d.ts +34 -0
- package/dist/io/pyramid.d.ts +41 -0
- package/dist/io/texture-source.d.ts +68 -0
- package/dist/layers/image-layer.d.ts +47 -0
- package/dist/layers/labels-layer.d.ts +32 -0
- package/dist/layers/layer.d.ts +32 -0
- package/dist/layers/points-layer.d.ts +59 -0
- package/dist/layers/volume-layer.d.ts +46 -0
- package/dist/math/mat4.d.ts +22 -0
- package/dist/napari-js.js +1986 -0
- package/dist/napari-js.js.map +1 -0
- package/dist/picking/pick.d.ts +6 -0
- package/dist/scene/dims.d.ts +20 -0
- package/dist/scene/events.d.ts +9 -0
- package/dist/scene/layer-list.d.ts +16 -0
- package/dist/scene/viewer-model.d.ts +20 -0
- package/dist/version.d.ts +1 -0
- package/dist/viewer.d.ts +76 -0
- package/dist/visuals/blend.d.ts +6 -0
- package/dist/visuals/format-plan.d.ts +19 -0
- package/dist/visuals/image-colormap-shader.d.ts +1 -0
- package/dist/visuals/image-visual.d.ts +45 -0
- package/dist/visuals/labels-shader.d.ts +1 -0
- package/dist/visuals/labels-visual.d.ts +23 -0
- package/dist/visuals/layer-visual.d.ts +23 -0
- package/dist/visuals/points-shader.d.ts +1 -0
- package/dist/visuals/points-visual.d.ts +22 -0
- package/dist/visuals/tiled-image-visual.d.ts +46 -0
- package/dist/visuals/volume-shader.d.ts +1 -0
- package/dist/visuals/volume-visual.d.ts +32 -0
- package/package.json +60 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Emitter } from '../scene/events';
|
|
2
|
+
export type BlendMode = 'opaque' | 'translucent' | 'additive' | 'minimum';
|
|
3
|
+
/**
|
|
4
|
+
* Base layer: identity + the display properties shared by every layer kind (opacity,
|
|
5
|
+
* blending, visibility, and a data→world affine via `scale`/`translate`). Mutating any
|
|
6
|
+
* property emits {@link changed} so the renderer can schedule a redraw — the napari
|
|
7
|
+
* evented-layer model, GPU-side.
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class Layer {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly changed: Emitter<Layer>;
|
|
12
|
+
abstract readonly kind: string;
|
|
13
|
+
name: string;
|
|
14
|
+
/** Data→world scale (e.g. physical pixel size). */
|
|
15
|
+
scale: [number, number];
|
|
16
|
+
/** Data→world translation. */
|
|
17
|
+
translate: [number, number];
|
|
18
|
+
protected _opacity: number;
|
|
19
|
+
protected _visible: boolean;
|
|
20
|
+
protected _blending: BlendMode;
|
|
21
|
+
protected constructor(opts?: {
|
|
22
|
+
name?: string;
|
|
23
|
+
scale?: [number, number];
|
|
24
|
+
translate?: [number, number];
|
|
25
|
+
});
|
|
26
|
+
get opacity(): number;
|
|
27
|
+
set opacity(value: number);
|
|
28
|
+
get visible(): boolean;
|
|
29
|
+
set visible(value: boolean);
|
|
30
|
+
get blending(): BlendMode;
|
|
31
|
+
set blending(value: BlendMode);
|
|
32
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Layer, BlendMode } from './layer';
|
|
2
|
+
export type PointSymbol = 'disc' | 'ring' | 'square';
|
|
3
|
+
export type RGBA = [number, number, number, number];
|
|
4
|
+
/** Per-point or broadcast scalar/color inputs. */
|
|
5
|
+
type SizeInput = number | number[] | Float32Array;
|
|
6
|
+
type ColorInput = RGBA | RGBA[];
|
|
7
|
+
export interface PointsLayerOptions {
|
|
8
|
+
name?: string;
|
|
9
|
+
/** Marker diameter in data units (single value or per-point). */
|
|
10
|
+
size?: SizeInput;
|
|
11
|
+
/** Fill color (single RGBA 0..1 or per-point). */
|
|
12
|
+
faceColor?: ColorInput;
|
|
13
|
+
/** Border color (single or per-point). */
|
|
14
|
+
borderColor?: ColorInput;
|
|
15
|
+
/** Border thickness in data units. */
|
|
16
|
+
borderWidth?: number;
|
|
17
|
+
symbol?: PointSymbol;
|
|
18
|
+
opacity?: number;
|
|
19
|
+
blending?: BlendMode;
|
|
20
|
+
visible?: boolean;
|
|
21
|
+
scale?: [number, number];
|
|
22
|
+
translate?: [number, number];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A scatter layer of point markers (the napari Points layer analog). Positions are `[x, y]`
|
|
26
|
+
* pairs in data coordinates; size/colors may be uniform or per-point. Marker shape is one of
|
|
27
|
+
* {@link PointSymbol}. Mutating display props emits `changed`; structural changes
|
|
28
|
+
* (positions/size/colors) also bump {@link dataVersion} so the visual rebuilds its instance
|
|
29
|
+
* buffer.
|
|
30
|
+
*/
|
|
31
|
+
export declare class PointsLayer extends Layer {
|
|
32
|
+
readonly kind = "points";
|
|
33
|
+
readonly count: number;
|
|
34
|
+
positions: Float32Array;
|
|
35
|
+
dataVersion: number;
|
|
36
|
+
private _size;
|
|
37
|
+
private _faceColor;
|
|
38
|
+
private _borderColor;
|
|
39
|
+
private _borderWidth;
|
|
40
|
+
private _symbol;
|
|
41
|
+
constructor(positions: Float32Array | number[][], opts?: PointsLayerOptions);
|
|
42
|
+
get size(): SizeInput;
|
|
43
|
+
set size(value: SizeInput);
|
|
44
|
+
get faceColor(): ColorInput;
|
|
45
|
+
set faceColor(value: ColorInput);
|
|
46
|
+
get borderColor(): ColorInput;
|
|
47
|
+
set borderColor(value: ColorInput);
|
|
48
|
+
get borderWidth(): number;
|
|
49
|
+
set borderWidth(value: number);
|
|
50
|
+
get symbol(): PointSymbol;
|
|
51
|
+
set symbol(value: PointSymbol);
|
|
52
|
+
symbolCode(): number;
|
|
53
|
+
/** Per-point size at index `i`. */
|
|
54
|
+
sizeAt(i: number): number;
|
|
55
|
+
/** Build the interleaved instance buffer (count × 12 floats) for the GPU. */
|
|
56
|
+
buildInstanceData(): Float32Array<ArrayBuffer>;
|
|
57
|
+
}
|
|
58
|
+
export declare const POINTS_INSTANCE_STRIDE = 12;
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Layer, BlendMode } from './layer';
|
|
2
|
+
import { Colormap } from '../color/colormap';
|
|
3
|
+
export type VolumeRendering = 'mip' | 'translucent' | 'iso';
|
|
4
|
+
export interface VolumeLayerOptions {
|
|
5
|
+
name?: string;
|
|
6
|
+
colormap?: Colormap | string;
|
|
7
|
+
/** Normalization window in source-data units (default [0,255] for uint8). */
|
|
8
|
+
contrastLimits?: [number, number];
|
|
9
|
+
gamma?: number;
|
|
10
|
+
rendering?: VolumeRendering;
|
|
11
|
+
/** Iso threshold as a windowed value 0..1 (iso mode). */
|
|
12
|
+
isoThreshold?: number;
|
|
13
|
+
opacity?: number;
|
|
14
|
+
blending?: BlendMode;
|
|
15
|
+
visible?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A 3D scalar volume (the napari Image-in-3D / volume analog), rendered by fragment
|
|
19
|
+
* raymarching. `data` is an 8-bit scalar field of size `width*height*depth` in x-fastest
|
|
20
|
+
* order. uint16/float volumes are a follow-up. Rendered only when `dims.ndisplay === 3`.
|
|
21
|
+
*/
|
|
22
|
+
export declare class VolumeLayer extends Layer {
|
|
23
|
+
readonly kind = "volume";
|
|
24
|
+
readonly width: number;
|
|
25
|
+
readonly height: number;
|
|
26
|
+
readonly depth: number;
|
|
27
|
+
readonly data: Uint8Array;
|
|
28
|
+
colormapVersion: number;
|
|
29
|
+
private _colormap;
|
|
30
|
+
private _contrastLimits;
|
|
31
|
+
private _gamma;
|
|
32
|
+
private _rendering;
|
|
33
|
+
private _isoThreshold;
|
|
34
|
+
constructor(data: Uint8Array, width: number, height: number, depth: number, opts?: VolumeLayerOptions);
|
|
35
|
+
get colormap(): Colormap;
|
|
36
|
+
set colormap(value: Colormap | string);
|
|
37
|
+
get contrastLimits(): [number, number];
|
|
38
|
+
set contrastLimits(value: readonly [number, number]);
|
|
39
|
+
get gamma(): number;
|
|
40
|
+
set gamma(value: number);
|
|
41
|
+
get rendering(): VolumeRendering;
|
|
42
|
+
set rendering(value: VolumeRendering);
|
|
43
|
+
renderingCode(): number;
|
|
44
|
+
get isoThreshold(): number;
|
|
45
|
+
set isoThreshold(value: number);
|
|
46
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Column-major 4×4 matrix (WGSL `mat4x4<f32>` layout): element at row r, col c is `m[c*4 + r]`. */
|
|
2
|
+
export type Mat4 = Float32Array;
|
|
3
|
+
export declare function identity(): Mat4;
|
|
4
|
+
/** Return `a * b` (apply `b` first, then `a`). */
|
|
5
|
+
export declare function multiply(a: Mat4, b: Mat4): Mat4;
|
|
6
|
+
/** Affine map `(x, y) → (sx·x + tx, sy·y + ty)` in homogeneous form (data → world). */
|
|
7
|
+
export declare function scaleTranslate2d(sx: number, sy: number, tx: number, ty: number): Mat4;
|
|
8
|
+
/**
|
|
9
|
+
* Orthographic 2D view-projection: world → clip space, centered on `center`, scaled by
|
|
10
|
+
* `zoom` (canvas px per world unit), for a `vw`×`vh` viewport. The Y axis is flipped so that
|
|
11
|
+
* increasing world/data Y points downward on screen (image convention).
|
|
12
|
+
*/
|
|
13
|
+
export type Vec3 = readonly [number, number, number];
|
|
14
|
+
export declare function scale3d(sx: number, sy: number, sz: number): Mat4;
|
|
15
|
+
export declare function translate3d(tx: number, ty: number, tz: number): Mat4;
|
|
16
|
+
/** WebGPU-style perspective (clip z in [0,1]). `fovy` in radians. */
|
|
17
|
+
export declare function perspective(fovy: number, aspect: number, near: number, far: number): Mat4;
|
|
18
|
+
/** Right-handed view matrix looking from `eye` toward `center` (column-major). */
|
|
19
|
+
export declare function lookAt(eye: Vec3, center: Vec3, up: Vec3): Mat4;
|
|
20
|
+
/** Inverse of a 4×4 matrix (column-major). Returns the identity if singular. */
|
|
21
|
+
export declare function invert(a: Mat4): Mat4;
|
|
22
|
+
export declare function ortho2d(center: readonly [number, number], zoom: number, vw: number, vh: number): Mat4;
|