@itk-viewer/viewer
Advanced tools
Comparing version 0.4.0 to 0.5.0
# @itk-viewer/viewer | ||
## 0.5.0 | ||
### Minor Changes | ||
- ac23fbc: 2D-View: Add color range slider using Transfer Function Editor | ||
### Patch Changes | ||
- Updated dependencies [ac23fbc] | ||
- @itk-viewer/io@0.3.0 | ||
## 0.4.0 | ||
@@ -4,0 +15,0 @@ |
@@ -16,6 +16,6 @@ import { Actor, AnyActorRef } from 'xstate'; | ||
scale: number; | ||
image: MultiscaleSpatialImage | undefined; | ||
image?: MultiscaleSpatialImage | undefined; | ||
spawned: Record<string, AnyActorRef>; | ||
viewport: ViewportActor | undefined; | ||
camera: import("xstate").ActorRef<import("xstate").MachineSnapshot<{ | ||
viewport?: ViewportActor | undefined; | ||
camera?: import("xstate").ActorRef<import("xstate").MachineSnapshot<{ | ||
pose: import("./camera.js").Pose; | ||
@@ -55,2 +55,22 @@ enableRotation: boolean; | ||
}> | undefined; | ||
imageActor?: import("xstate").ActorRef<import("xstate").MachineSnapshot<{ | ||
image: MultiscaleSpatialImage; | ||
dataRanges: import("@itk-viewer/io/types.js").Ranges; | ||
colorRanges: import("@itk-viewer/io/types.js").Ranges; | ||
normalizedColorRanges: import("@itk-viewer/io/types.js").Ranges; | ||
}, { | ||
type: "builtImage"; | ||
builtImage: BuiltImage; | ||
} | { | ||
type: "normalizedColorRange"; | ||
range: readonly [number, number]; | ||
component: number; | ||
}, Record<string, AnyActorRef>, "active", string, import("xstate").NonReducibleUnknown>, { | ||
type: "builtImage"; | ||
builtImage: BuiltImage; | ||
} | { | ||
type: "normalizedColorRange"; | ||
range: readonly [number, number]; | ||
component: number; | ||
}> | undefined; | ||
}, CreateChild | { | ||
@@ -112,4 +132,23 @@ type: 'setImage'; | ||
}, { | ||
[x: string]: import("xstate").ActorRef<import("xstate").PromiseSnapshot<{ | ||
[x: string]: import("xstate").ActorRef<import("xstate").MachineSnapshot<{ | ||
image: MultiscaleSpatialImage; | ||
dataRanges: import("@itk-viewer/io/types.js").Ranges; | ||
colorRanges: import("@itk-viewer/io/types.js").Ranges; | ||
normalizedColorRanges: import("@itk-viewer/io/types.js").Ranges; | ||
}, { | ||
type: "builtImage"; | ||
builtImage: BuiltImage; | ||
} | { | ||
type: "normalizedColorRange"; | ||
range: readonly [number, number]; | ||
component: number; | ||
}, Record<string, AnyActorRef>, "active", string, import("xstate").NonReducibleUnknown>, { | ||
type: "builtImage"; | ||
builtImage: BuiltImage; | ||
} | { | ||
type: "normalizedColorRange"; | ||
range: readonly [number, number]; | ||
component: number; | ||
}> | import("xstate").ActorRef<import("xstate").PromiseSnapshot<{ | ||
builtImage: BuiltImage; | ||
sliceIndex: number; | ||
@@ -132,2 +171,45 @@ }, { | ||
}, { | ||
src: "image"; | ||
logic: import("xstate").StateMachine<{ | ||
image: MultiscaleSpatialImage; | ||
dataRanges: import("@itk-viewer/io/types.js").Ranges; | ||
colorRanges: import("@itk-viewer/io/types.js").Ranges; | ||
normalizedColorRanges: import("@itk-viewer/io/types.js").Ranges; | ||
}, { | ||
type: "builtImage"; | ||
builtImage: BuiltImage; | ||
} | { | ||
type: "normalizedColorRange"; | ||
range: readonly [number, number]; | ||
component: number; | ||
}, Record<string, AnyActorRef>, { | ||
src: string; | ||
logic: import("xstate").UnknownActorLogic; | ||
id: string | undefined; | ||
}, { | ||
type: "updateColorRanges"; | ||
params: import("xstate").NonReducibleUnknown; | ||
}, { | ||
type: string; | ||
params: import("xstate").NonReducibleUnknown; | ||
}, string, "active", string, MultiscaleSpatialImage, import("xstate").NonReducibleUnknown, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, { | ||
type: "builtImage"; | ||
builtImage: BuiltImage; | ||
} | { | ||
type: "normalizedColorRange"; | ||
range: readonly [number, number]; | ||
component: number; | ||
}, { | ||
src: string; | ||
logic: import("xstate").UnknownActorLogic; | ||
id: string | undefined; | ||
}, { | ||
type: "updateColorRanges"; | ||
params: import("xstate").NonReducibleUnknown; | ||
}, { | ||
type: string; | ||
params: import("xstate").NonReducibleUnknown; | ||
}, string, string>>; | ||
id: string | undefined; | ||
} | { | ||
src: "imageBuilder"; | ||
@@ -218,2 +300,45 @@ logic: import("xstate").PromiseActorLogic<{ | ||
}, { | ||
src: "image"; | ||
logic: import("xstate").StateMachine<{ | ||
image: MultiscaleSpatialImage; | ||
dataRanges: import("@itk-viewer/io/types.js").Ranges; | ||
colorRanges: import("@itk-viewer/io/types.js").Ranges; | ||
normalizedColorRanges: import("@itk-viewer/io/types.js").Ranges; | ||
}, { | ||
type: "builtImage"; | ||
builtImage: BuiltImage; | ||
} | { | ||
type: "normalizedColorRange"; | ||
range: readonly [number, number]; | ||
component: number; | ||
}, Record<string, AnyActorRef>, { | ||
src: string; | ||
logic: import("xstate").UnknownActorLogic; | ||
id: string | undefined; | ||
}, { | ||
type: "updateColorRanges"; | ||
params: import("xstate").NonReducibleUnknown; | ||
}, { | ||
type: string; | ||
params: import("xstate").NonReducibleUnknown; | ||
}, string, "active", string, MultiscaleSpatialImage, import("xstate").NonReducibleUnknown, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, { | ||
type: "builtImage"; | ||
builtImage: BuiltImage; | ||
} | { | ||
type: "normalizedColorRange"; | ||
range: readonly [number, number]; | ||
component: number; | ||
}, { | ||
src: string; | ||
logic: import("xstate").UnknownActorLogic; | ||
id: string | undefined; | ||
}, { | ||
type: "updateColorRanges"; | ||
params: import("xstate").NonReducibleUnknown; | ||
}, { | ||
type: string; | ||
params: import("xstate").NonReducibleUnknown; | ||
}, string, string>>; | ||
id: string | undefined; | ||
} | { | ||
src: "imageBuilder"; | ||
@@ -220,0 +345,0 @@ logic: import("xstate").PromiseActorLogic<{ |
import { assign, enqueueActions, fromPromise, setup, stateIn, } from 'xstate'; | ||
import { ensure3dDirection, } from '@itk-viewer/io/MultiscaleSpatialImage.js'; | ||
import { XYZ, ensuredDims } from '@itk-viewer/io/dimensionUtils.js'; | ||
import { getCorners } from '@itk-viewer/utils/bounding-box.js'; | ||
import { reset2d } from './camera.js'; | ||
import { image } from './image.js'; | ||
import { mat3, mat4, quat, vec3 } from 'gl-matrix'; | ||
import { XYZ, ensuredDims } from '@itk-viewer/io/dimensionUtils.js'; | ||
import { getCorners } from '@itk-viewer/utils/bounding-box.js'; | ||
export const Axis = { | ||
@@ -23,11 +24,2 @@ I: 'I', | ||
}; | ||
const viewContext = { | ||
slice: 0.5, | ||
axis: Axis.K, | ||
scale: 0, | ||
image: undefined, | ||
spawned: {}, | ||
viewport: undefined, | ||
camera: undefined, | ||
}; | ||
const toRotation = (direction, axis) => { | ||
@@ -124,2 +116,3 @@ const direction3d = ensure3dDirection(direction); | ||
}), | ||
image, | ||
}, | ||
@@ -168,3 +161,8 @@ actions: { | ||
context: () => { | ||
return JSON.parse(JSON.stringify(viewContext)); | ||
return { | ||
slice: 0.5, | ||
axis: Axis.K, | ||
scale: 0, | ||
spawned: {}, | ||
}; | ||
}, | ||
@@ -180,4 +178,7 @@ id: 'view2d', | ||
spawned: ({ spawn, context: { spawned, camera, axis }, event: { logic, onActor }, self, }) => { | ||
// view-2d-vtkjs could be a child actor | ||
// @ts-expect-error cannot spawn actor of type that is not in setup() | ||
const child = spawn(logic, { input: { parent: self } }); | ||
const child = spawn(logic, { | ||
input: { parent: self }, | ||
}); | ||
if (camera) | ||
@@ -202,2 +203,3 @@ child.send({ type: 'setCamera', camera }); | ||
slice: 0.5, | ||
imageActor: ({ event, spawn }) => spawn('image', { input: event.image }), | ||
}), | ||
@@ -210,2 +212,6 @@ enqueueActions(({ context, enqueue }) => { | ||
}); | ||
enqueue.sendTo(actor, { | ||
type: 'setImageActor', | ||
image: context.imageActor, | ||
}); | ||
}); | ||
@@ -358,2 +364,8 @@ }), | ||
}), | ||
({ context, event: { output } }) => { | ||
context.imageActor.send({ | ||
type: 'builtImage', | ||
builtImage: output.builtImage, | ||
}); | ||
}, | ||
], | ||
@@ -360,0 +372,0 @@ }, |
{ | ||
"name": "@itk-viewer/viewer", | ||
"version": "0.4.0", | ||
"version": "0.5.0", | ||
"description": "Multi-dimensional web-based image, mesh, and point set viewer", | ||
@@ -46,4 +46,4 @@ "type": "module", | ||
"xstate": "5.5.2", | ||
"@itk-viewer/io": "^0.2.0", | ||
"@itk-viewer/utils": "^0.1.3" | ||
"@itk-viewer/utils": "^0.1.3", | ||
"@itk-viewer/io": "^0.3.0" | ||
}, | ||
@@ -50,0 +50,0 @@ "scripts": { |
@@ -16,8 +16,9 @@ import { | ||
import { ValueOf } from '@itk-viewer/io/types.js'; | ||
import { XYZ, ensuredDims } from '@itk-viewer/io/dimensionUtils.js'; | ||
import { Bounds, getCorners } from '@itk-viewer/utils/bounding-box.js'; | ||
import { CreateChild } from './children.js'; | ||
import { Camera, reset2d } from './camera.js'; | ||
import { image, Image } from './image.js'; | ||
import { ViewportActor } from './viewport.js'; | ||
import { mat3, mat4, quat, vec3 } from 'gl-matrix'; | ||
import { XYZ, ensuredDims } from '@itk-viewer/io/dimensionUtils.js'; | ||
import { Bounds, getCorners } from '@itk-viewer/utils/bounding-box.js'; | ||
@@ -45,12 +46,2 @@ export const Axis = { | ||
const viewContext = { | ||
slice: 0.5, | ||
axis: Axis.K as AxisType, | ||
scale: 0, | ||
image: undefined as MultiscaleSpatialImage | undefined, | ||
spawned: {} as Record<string, AnyActorRef>, | ||
viewport: undefined as ViewportActor | undefined, | ||
camera: undefined as Camera | undefined, | ||
}; | ||
const toRotation = (direction: Float64Array, axis: AxisType) => { | ||
@@ -96,3 +87,12 @@ const direction3d = ensure3dDirection(direction); | ||
types: {} as { | ||
context: typeof viewContext; | ||
context: { | ||
slice: number; | ||
axis: AxisType; | ||
scale: number; | ||
image?: MultiscaleSpatialImage; | ||
spawned: Record<string, AnyActorRef>; | ||
viewport?: ViewportActor; | ||
camera?: Camera; | ||
imageActor?: Image; | ||
}; | ||
events: | ||
@@ -198,2 +198,3 @@ | { type: 'setImage'; image: MultiscaleSpatialImage } | ||
), | ||
image, | ||
}, | ||
@@ -248,3 +249,8 @@ actions: { | ||
context: () => { | ||
return JSON.parse(JSON.stringify(viewContext)); | ||
return { | ||
slice: 0.5, | ||
axis: Axis.K, | ||
scale: 0, | ||
spawned: {}, | ||
}; | ||
}, | ||
@@ -265,4 +271,7 @@ id: 'view2d', | ||
}) => { | ||
// view-2d-vtkjs could be a child actor | ||
// @ts-expect-error cannot spawn actor of type that is not in setup() | ||
const child = spawn(logic, { input: { parent: self } }); | ||
const child = spawn(logic, { | ||
input: { parent: self }, | ||
}) as AnyActorRef; | ||
if (camera) child.send({ type: 'setCamera', camera }); | ||
@@ -286,2 +295,4 @@ child.send({ type: 'axis', axis }); | ||
slice: 0.5, | ||
imageActor: ({ event, spawn }) => | ||
spawn('image', { input: event.image }), | ||
}), | ||
@@ -294,2 +305,6 @@ enqueueActions(({ context, enqueue }) => { | ||
}); | ||
enqueue.sendTo(actor, { | ||
type: 'setImageActor', | ||
image: context.imageActor, | ||
}); | ||
}); | ||
@@ -439,2 +454,8 @@ }), | ||
}), | ||
({ context, event: { output } }) => { | ||
context.imageActor!.send({ | ||
type: 'builtImage', | ||
builtImage: output.builtImage, | ||
}); | ||
}, | ||
], | ||
@@ -441,0 +462,0 @@ }, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
187425
41
3276
+ Added@itk-viewer/io@0.3.0(transitive)
- Removed@itk-viewer/io@0.2.0(transitive)
Updated@itk-viewer/io@^0.3.0