Skip to main content

Class: AdvancedMagnifyTool

Abstract class for tools which create and display annotations on the cornerstone3D canvas. In addition, it provides a base class for segmentation tools that require drawing an annotation before running the segmentation strategy for instance threshold segmentation based on an area and a threshold. Annotation tools make use of drawing utilities to draw SVG elements on the viewport.

To create a new annotation tool, derive from this class and implement the abstract methods.

Extends​

Constructors​

new AdvancedMagnifyTool()​

new AdvancedMagnifyTool(toolProps, defaultToolProps): AdvancedMagnifyTool

Parameters​

• toolProps: PublicToolProps = {}

• defaultToolProps: SharedToolProp = ...

Returns​

AdvancedMagnifyTool

Overrides​

AnnotationTool.constructor

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:163

Properties​

_dragCallback()?​

protected optional _dragCallback: (evt) => void

Drag handler wired by _activateModify. Tools that use the shared modify listeners assign this (typically as an arrow-function field). Loosely typed on purpose: tools narrow the event parameter to the interaction events they actually handle, and the base class only wires the callback as an EventListener.

Parameters​

• evt: any

Returns​

void

Inherited from​

AnnotationTool._dragCallback

Defined in​

tools/src/tools/base/AnnotationTool.ts:216


configuration​

configuration: Record<string, any>

The configuration for this tool. IBaseTool contains some default configuration values, and you can use configurationTyped to get the typed version of this.

Inherited from​

AnnotationTool.configuration

Defined in​

tools/src/tools/base/BaseTool.ts:111


editData​

editData: object

annotation​

annotation: Annotation

handleIndex?​

optional handleIndex: number

hasMoved?​

optional hasMoved: boolean

newAnnotation?​

optional newAnnotation: boolean

viewportIdsToRender​

viewportIdsToRender: string[]

Overrides​

AnnotationTool.editData

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:154


eventDispatchDetail​

protected eventDispatchDetail: object

renderingEngineId​

renderingEngineId: string

viewportId​

viewportId: string

Inherited from​

AnnotationTool.eventDispatchDetail

Defined in​

tools/src/tools/base/AnnotationTool.ts:66


handlesMultiTouchGestures​

handlesMultiTouchGestures: boolean = false

Whether this tool implements its own handling for touch points that arrive after a gesture has already started.

When false (the default), an extra finger during an in-progress gesture releases the tool through cancel() so the gesture can re-resolve to the tool bound to the new finger count - normally pinch zoom or multi-finger scroll. See releaseToolForMultiTouchGesture.

Multi-part tools set this to true: cancelling them would discard points the user has already placed, and they instead ignore the extra finger for the duration of the gesture. Declaring it also keeps the manipulation tools reachable, since the dispatcher bypasses the interaction guard for such tools rather than clearing it.

Inherited from​

AnnotationTool.handlesMultiTouchGestures

Defined in​

tools/src/tools/base/BaseTool.ts:104


isDrawing​

isDrawing: boolean

Overrides​

AnnotationTool.isDrawing

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:161


isHandleOutsideImage​

isHandleOutsideImage: boolean

Inherited from​

AnnotationTool.isHandleOutsideImage

Defined in​

tools/src/tools/base/AnnotationTool.ts:71


isPrimary​

isPrimary: boolean = false

Primary tool - this is set to true when this tool is primary

Inherited from​

AnnotationTool.isPrimary

Defined in​

tools/src/tools/base/BaseTool.ts:121


isSuvScaled()​

isSuvScaled: (viewport, targetId, imageId?) => boolean = AnnotationTool.isSuvScaled

Returns true if the viewport is scaled to SUV units

Parameters​

• viewport: StackViewport | VolumeViewport

The viewport

• targetId: string

The annotation targetId

• imageId?: string

The annotation imageId

Returns​

boolean

Inherited from​

AnnotationTool.isSuvScaled

Defined in​

tools/src/tools/base/AnnotationTool.ts:617


magnifyViewportManager​

magnifyViewportManager: MagnifyViewportManager

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:153


memo​

protected memo: Memo

A memo recording the starting state of a tool. This will be updated as changes are made, and reflects the fact that a memo has been created.

Inherited from​

AnnotationTool.memo

Defined in​

tools/src/tools/base/BaseTool.ts:127


mode​

mode: ToolModes

Tool Mode - Active/Passive/Enabled/Disabled/

Inherited from​

AnnotationTool.mode

Defined in​

tools/src/tools/base/BaseTool.ts:119


supportedInteractionTypes​

supportedInteractionTypes: InteractionTypes[]

Supported Interaction Types - currently only Mouse

Inherited from​

AnnotationTool.supportedInteractionTypes

Defined in​

tools/src/tools/base/BaseTool.ts:87


toolGroupId​

toolGroupId: string

ToolGroup ID the tool instance belongs to

Inherited from​

AnnotationTool.toolGroupId

Defined in​

tools/src/tools/base/BaseTool.ts:117


Actions​

static Actions: typeof AdvancedMagnifyToolActions = AdvancedMagnifyToolActions

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:151


activeCursorTool​

static activeCursorTool: any

Set to the tool that is currently drawing the active cursor. This will be either primary mouse button tool if no tool is currently being directly interacted with, OR the tool that is directly interacted with. This logic ensures that there is only a single tool at a time drawing, which prevents tools not getting mouse updates from over-writing the cursor.

  • If the tool bound to the primary button is a cursor drawing tool, use that tool and there is NOT a tool currently drawing directly
  • If there is a tool currently drawing directly, then that tool should display a cursor EVEN if it normally doesn't have a custom cursor
  • When a tool finishes drawing direct, it should stop being the active cursor tool unless it is also the primary tool

Inherited from​

AnnotationTool.activeCursorTool

Defined in​

tools/src/tools/base/BaseTool.ts:54


defaults​

static defaults: object

Has the defaults associated with the base tool.

configuration​

configuration: object

configuration.activeStrategy​

activeStrategy: any = undefined

configuration.defaultStrategy​

defaultStrategy: any = undefined

configuration.strategies​

strategies: object = {}

configuration.strategyOptions​

strategyOptions: object = {}

Inherited from​

AnnotationTool.defaults

Defined in​

tools/src/tools/base/BaseTool.ts:132


MOUSE_PROXIMITY​

readonly static MOUSE_PROXIMITY: 6

Canvas-pixel radius used to hit-test annotations and handles for mouse interactions.

Inherited from​

AnnotationTool.MOUSE_PROXIMITY

Defined in​

tools/src/tools/base/BaseTool.ts:69


toolName​

static toolName: any

Overrides​

AnnotationTool.toolName

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:150


TOUCH_PROXIMITY​

readonly static TOUCH_PROXIMITY: 36

Canvas-pixel radius used to hit-test annotations and handles for touch interactions. A fingertip covers far more screen than a cursor hotspot, so touch targets are much larger than BaseTool.MOUSE_PROXIMITY. Tools that need to widen an in-draw target for touch should use this rather than restating the number.

Inherited from​

AnnotationTool.TOUCH_PROXIMITY

Defined in​

tools/src/tools/base/BaseTool.ts:63


TOUCH_TAP_MAX_CANVAS_DISTANCE​

readonly static TOUCH_TAP_MAX_CANVAS_DISTANCE: 24

Maximum canvas-pixel distance a gesture may travel and still be counted as a tap by the touch start listener. Tools that commit a gesture on TOUCH_END need this to recognize the trailing TOUCH_TAP echo.

Inherited from​

AnnotationTool.TOUCH_TAP_MAX_CANVAS_DISTANCE

Defined in​

tools/src/tools/base/BaseTool.ts:76


TOUCH_TAP_TOLERANCE_MS​

readonly static TOUCH_TAP_TOLERANCE_MS: 300

Window in milliseconds within which successive taps are aggregated into a single multi-tap TOUCH_TAP. The tap is emitted one tolerance after the chain's last touchend.

Inherited from​

AnnotationTool.TOUCH_TAP_TOLERANCE_MS

Defined in​

tools/src/tools/base/BaseTool.ts:84

Accessors​

configurationTyped​

get configurationTyped(): ToolConfiguration

Returns​

ToolConfiguration

Inherited from​

AnnotationTool.configurationTyped

Defined in​

tools/src/tools/base/BaseTool.ts:112


toolName​

get toolName(): string

Newer method for getting the tool name as a property

Returns​

string

Inherited from​

AnnotationTool.toolName

Defined in​

tools/src/tools/base/BaseTool.ts:205

Methods​

_activateModify()​

_activateModify(element): void

Wires the standard modify-interaction listeners (_dragCallback on drag, _endCallback on mouse/touch end) on the element and flags the global interaction state. Tools with tool-specific listener sets may override this.

Parameters​

• element: any

Returns​

void

Overrides​

AnnotationTool._activateModify

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:588


_deactivateModify()​

_deactivateModify(element): void

Removes the listeners wired by _activateModify and clears the global interaction state.

Parameters​

• element: any

Returns​

void

Overrides​

AnnotationTool._deactivateModify

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:601


_dragDrawCallback()​

_dragDrawCallback(evt): void

Parameters​

• evt: InteractionEventType

Returns​

void

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:442


_dragHandle()​

_dragHandle(evt): void

Parameters​

• evt: InteractionEventType

Returns​

void

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:523


_dragModifyCallback()​

_dragModifyCallback(evt): void

Parameters​

• evt: InteractionEventType

Returns​

void

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:467


_endCallback()​

_endCallback(evt): void

End-of-interaction handler wired by _activateModify. Tools that use the shared modify listeners assign this (typically as an arrow-function field). Loosely typed for the same reason as _dragCallback.

Parameters​

• evt: InteractionEventType | TouchPressEventType

Returns​

void

Overrides​

AnnotationTool._endCallback

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:417


_isTouchInteraction()​

protected _isTouchInteraction(evt?): boolean

Whether an interaction event came in through the touch pipeline rather than the mouse pipeline.

Note this is a property of the gesture, not of the device: hybrid hardware (touchscreen laptops, tablets with a mouse attached) delivers both, so tools must branch on the event rather than on a device probe such as isMobile().

Parameters​

• evt?: InteractionEventType

The interaction event, or undefined when a caller has no event to attribute (treated as not-touch).

Returns​

boolean

Inherited from​

AnnotationTool._isTouchInteraction

Defined in​

tools/src/tools/base/BaseTool.ts:316


_pressModifyCallback()​

_pressModifyCallback(evt): void

TOUCH_PRESS listener active while a loupe is grabbed: touching down near the loupe always starts a move/resize on TOUCH_START, which sets state.isInteractingWithTool and makes the touchPress dispatcher drop the event, so the press that opens the zoom-factor picker has to be handled by the interaction itself. Ends the in-progress move before showing the picker.

Parameters​

• evt: TouchPressEventType

Returns​

void

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:505


addNewAnnotation()​

addNewAnnotation(evt): AdvancedMagnifyAnnotation

Based on the current position of the mouse and the current imageId to create a CircleROI Annotation and stores it in the annotationManager

Parameters​

• evt: InteractionEventType

EventTypes.NormalizedMouseEventType

Returns​

AdvancedMagnifyAnnotation

The annotation object.

Overrides​

AnnotationTool.addNewAnnotation

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:204


applyActiveStrategy()​

applyActiveStrategy(enabledElement, operationData): any

Applies the active strategy function to the enabled element with the specified operation data.

Parameters​

• enabledElement: IEnabledElement

The element that is being operated on.

• operationData: unknown

The data that needs to be passed to the strategy.

Returns​

any

The result of the strategy.

Inherited from​

AnnotationTool.applyActiveStrategy

Defined in​

tools/src/tools/base/BaseTool.ts:225


applyActiveStrategyCallback()​

applyActiveStrategyCallback(enabledElement, operationData, callbackType, ...extraArgs): any

Applies the active strategy, with a given event type being applied. The event type function is found by indexing it on the active strategy function.

Parameters​

• enabledElement: IEnabledElement

The element that is being operated on.

• operationData: unknown

The data that needs to be passed to the strategy.

• callbackType: string

the type of the callback

• ...extraArgs: any[]

Returns​

any

The result of the strategy.

Inherited from​

AnnotationTool.applyActiveStrategyCallback

Defined in​

tools/src/tools/base/BaseTool.ts:249


cancel()​

cancel(element): string

cancel Used to cancel the ongoing tool drawing and manipulation

Parameters​

• element: HTMLDivElement

Returns​

string

Overrides​

AnnotationTool.cancel

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:562


createAnnotation()​

protected createAnnotation(evt, points?, ...annotationBaseData?): Annotation

Creates an annotation containing the basic data set.

Parameters​

• evt: InteractionEventType

• points?: Point3[]

• ...annotationBaseData?: any[]

Returns​

Annotation

Inherited from​

AnnotationTool.createAnnotation

Defined in​

tools/src/tools/base/AnnotationDisplayTool.ts:178


createMemo()​

protected createMemo(element, annotation, options?): void

Creates a memo on the given annotation.

Parameters​

• element: any

• annotation: any

• options?: any

Returns​

void

Inherited from​

AnnotationTool.createMemo

Defined in​

tools/src/tools/base/AnnotationTool.ts:868


doneEditMemo()​

doneEditMemo(): void

This clears and edit memo storage to allow for further history functions to be called. Calls the complete function if present, and pushes the memo to the history memo stack.

This should be called when a tool has finished making a change which should be separated from future/other changes in terms of the history. Usually that means on endCallback (mouse up), but some tools also make changes on the initial creation of an object or have alternate flows and the doneEditMemo has to be called on mouse down or other initiation events to ensure that new changes are correctly recorded.

If the tool has no end callback, then the doneEditMemo is called from the pre mouse down callback. See ZoomTool for an example of this usage.

Returns​

void

Inherited from​

AnnotationTool.doneEditMemo

Defined in​

tools/src/tools/base/BaseTool.ts:771


endGroupRecording()​

protected endGroupRecording(): void

Ends a group recording of history memo

Returns​

void

Inherited from​

AnnotationTool.endGroupRecording

Defined in​

tools/src/tools/base/AnnotationTool.ts:881


ensureCachedStatsTargets()​

protected ensureCachedStatsTargets(data, targetIds, needsUpdate?): boolean

Ensures a cachedStats entry exists for every measurement target, so that the tool stats calculators (which iterate the cachedStats keys) compute statistics for each of them. This is what allows a single fusion viewport to compute the statistics of several display sets at once, even when no other viewport has computed them.

Parameters​

• data: AnnotationData

the annotation data containing the cachedStats

• targetIds: string[]

the targets to seed (see getMeasurementTargets)

• needsUpdate?

optional test flagging an existing entry as incomplete (eg hydrated annotations missing units) and needing to be recalculated

Returns​

boolean

true if any entry was added or flagged, meaning the stats need to be (re)calculated

Inherited from​

AnnotationTool.ensureCachedStatsTargets

Defined in​

tools/src/tools/base/BaseTool.ts:688


filterInteractableAnnotationsForElement()​

filterInteractableAnnotationsForElement(element, annotations): Annotations

Given the element and annotations which is an array of annotation, it filters the annotations array to only include the annotation based on the viewportType. If the viewport is StackViewport, it filters based on the current imageId of the viewport, if the viewport is volumeViewport, it only returns those that are within the same slice as the current rendered slice in the volume viewport. imageId as the enabledElement.

Parameters​

• element: HTMLDivElement

The HTML element

• annotations: Annotations

The annotations to filter (array of annotation)

Returns​

Annotations

The filtered annotations

Inherited from​

AnnotationTool.filterInteractableAnnotationsForElement

Defined in​

tools/src/tools/base/AnnotationDisplayTool.ts:64


getAnnotationStyle()​

protected getAnnotationStyle(context): AnnotationStyle

Get the style that will be applied to all annotations such as length, cobb angle, arrow annotate, etc. when rendered on a canvas or svg layer

Parameters​

• context

• context.annotation: Annotation

• context.styleSpecifier: StyleSpecifier

Returns​

AnnotationStyle

Inherited from​

AnnotationTool.getAnnotationStyle

Defined in​

tools/src/tools/base/AnnotationTool.ts:656


getHandleNearImagePoint()​

getHandleNearImagePoint(element, annotation, canvasCoords, proximity): ToolHandle

It checks if the mouse click is near TextBoxHandle or AnnotationHandle itself, and return either it. It prioritize TextBoxHandle over AnnotationHandle. If the mouse click is not near any of the handles, it does not return anything.

Parameters​

• element: HTMLDivElement

The element that the tool is attached to.

• annotation: Annotation

The annotation object associated with the annotation

• canvasCoords: Point2

The coordinates of the mouse click on canvas

• proximity: number

The distance from the mouse cursor to the point that is considered "near".

Returns​

ToolHandle

The handle that is closest to the cursor, or null if the cursor is not near any of the handles.

Inherited from​

AnnotationTool.getHandleNearImagePoint

Defined in​

tools/src/tools/base/AnnotationTool.ts:369


getLinkedTextBoxStyle()​

getLinkedTextBoxStyle(specifications, annotation?): Record<string, unknown>

It returns the style for the text box

Parameters​

• specifications: StyleSpecifier

• annotation?: Annotation

The annotation for the tool that is currently active.

Returns​

Record<string, unknown>

An object of the style settings for the text box.

Inherited from​

AnnotationTool.getLinkedTextBoxStyle

Defined in​

tools/src/tools/base/AnnotationTool.ts:435


getMeasurementTargetCandidates()​

protected getMeasurementTargetCandidates(viewport, data?): MeasurementTargetCandidate[]

Builds the list of candidate measurement targets for the given viewport: one per volume actor being displayed (including segmentation representations, which carry a representationUID and are excluded by the default filter rather than skipped here), falling back to a single candidate for the default view reference when there are none. The candidates are what the targetsFilter tool configuration chooses from - each carries the display set related parameters (display set, uid, exemplar instance and index) where they are known.

The candidate modality is taken from the display set where available - the exemplar instance or volume metadata for volume backed candidates, or the registered display set of the viewport for the fallback candidate. When the display set is unknown (eg a stack viewport using the legacy set image ids), the candidate has none of the display set fields, and filters can choose whether to include it based on that.

When the annotation already has a cachedStats entry for a candidate's volume (possibly created by another viewport with a different view reference), the existing key is reused as the targetId so statistics are shared rather than recomputed per view.

Parameters​

• viewport: Viewport

• data?: AnnotationData

Returns​

MeasurementTargetCandidate[]

Inherited from​

AnnotationTool.getMeasurementTargetCandidates

Defined in​

tools/src/tools/base/BaseTool.ts:498


getMeasurementTargets()​

protected getMeasurementTargets(viewport, data?): string[]

Gets the array of targetIds the tool should compute and display measurement statistics for on the given viewport.

The targets are selected by the targetsFilter tool configuration option (see measurementTargetFilters for ready made filters). The filter receives the viewport's candidate display sets and the viewport, and returns the subset to measure.

Each returned targetId reuses an existing cachedStats key when statistics were already computed for the same volume (possibly by a different viewport), and is otherwise the view reference id of this viewport for that volume - so a single fusion viewport can seed and compute the statistics of every filtered target itself, even when no other viewport has computed them.

A configured filter's result is authoritative: when it returns no candidates (eg a PT-only filter on a CT viewport, or the default allPixelData filter when only a SEG is shown), an empty array is returned and no statistics are computed or displayed.

The deprecated isPreferredTargetId configuration is honoured before the filter, so existing configurations keep their behaviour. When neither selects anything and no filter is configured, the viewport's default view reference id is the single target.

Multi-target selection only works for volumes displayed on screen

TODO: Fix this for other fusion types on stack and also for inclusion of annotation measurements which are not currently on screen.

Parameters​

• viewport: Viewport

• data?: AnnotationData

Returns​

string[]

Inherited from​

AnnotationTool.getMeasurementTargets

Defined in​

tools/src/tools/base/BaseTool.ts:435


getReferencedImageId()​

protected getReferencedImageId(viewport, worldPos, viewPlaneNormal, viewUp?): string

Parameters​

• viewport: Viewport

• worldPos: Point3

• viewPlaneNormal: Point3

• viewUp?: Point3

Returns​

string

Inherited from​

AnnotationTool.getReferencedImageId

Defined in​

tools/src/tools/base/AnnotationDisplayTool.ts:223


getStyle()​

getStyle(property, specifications, annotation?): unknown

It takes the property (color, lineDash, etc.) and based on the state of the annotation (selected, highlighted etc.) it returns the appropriate value based on the central toolStyle settings for each level of specification.

Parameters​

• property: string

The name of the style property to get.

• specifications: StyleSpecifier

• annotation?: Annotation

The annotation for the tool that is currently active.

Returns​

unknown

The value of the property.

Inherited from​

AnnotationTool.getStyle

Defined in​

tools/src/tools/base/AnnotationDisplayTool.ts:260


getTargetId()​

protected getTargetId(viewport, data?): string

Get the target Id for the viewport which will be used to store the cached statistics scoped to that target in the annotations. For StackViewport, targetId is usually derived from the imageId. For VolumeViewport, it's derived from the volumeId.

This is the primary (first) entry of getMeasurementTargets, so it honours the targetsFilter tool configuration - configuring, for example, measurementTargetFilters.forModality('PT') makes the PT volume of a fusion viewport the target the statistics are stored/read for.

Parameters​

• viewport: Viewport

viewport to get the targetId for

• data?: AnnotationData

Optional: The annotation's data object, containing cachedStats.

Returns​

string

targetId, or undefined when a configured filter selects no targets for this viewport

Inherited from​

AnnotationTool.getTargetId

Defined in​

tools/src/tools/base/BaseTool.ts:397


getTargetImageData()​

protected getTargetImageData(targetId): IImageData | CPUIImageData

Parameters​

• targetId: string

Returns​

IImageData | CPUIImageData

Inherited from​

AnnotationTool.getTargetImageData

Defined in​

tools/src/tools/base/BaseTool.ts:330


getTargetVolume()​

protected getTargetVolume(viewport): object

Resolves the volume this tool measures on the given viewport, together with the targetId its statistics are cached under.

The target comes from the inherited BaseTool.getTargetId, so it honours the targetsFilter/targetPredicate tool configuration (see measurementTargetFilters): on a fusion viewport, configuring firstPixelData with forModality('PT') measures the PT volume rather than the viewport's default (first) one. Without a configured filter the viewport's default view reference is used.

The annotation data is deliberately not passed to getTargetId. A tool whose cachedStats is a flat VolumeStats (pointsInVolume, statistics) rather than a map keyed by targetId holds no volumeId: key that the target selection can reuse. The viewport alone decides the target.

Parameters​

• viewport: Viewport

the viewport to resolve the target on

Returns​

object

the targetId and its cached volume, or null when a configured filter selects no target on this viewport (eg a PT only filter on a CT viewport) or the volume is no longer cached

imageVolume​

imageVolume: ImageVolume

targetId​

targetId: string

Inherited from​

AnnotationTool.getTargetVolume

Defined in​

tools/src/tools/base/AnnotationTool.ts:641


getToolName()​

getToolName(): string

Returns the name of the tool

Returns​

string

The name of the tool.

Inherited from​

AnnotationTool.getToolName

Defined in​

tools/src/tools/base/BaseTool.ts:213


handleSelectedCallback()​

handleSelectedCallback(evt, annotation, handle): void

handleSelectedCallback Custom callback for when a handle is selected.

Parameters​

• evt: InteractionEventType

The normalized mouse event

• annotation: AdvancedMagnifyAnnotation

The annotation selected.

• handle: ToolHandle

The selected handle (either Types.Point3 in space for annotations, or TextBoxHandle object for text boxes).

Returns​

void

Overrides​

AnnotationTool.handleSelectedCallback

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:383


isPointNearTool()​

isPointNearTool(element, annotation, canvasCoords, proximity, interactionType?): boolean

It returns if the canvas point is near the provided annotation in the provided element or not. A proximity is passed to the function to determine the proximity of the point to the annotation in number of pixels.

Parameters​

• element: HTMLDivElement

HTML Element

• annotation: AdvancedMagnifyAnnotation

Annotation

• canvasCoords: Point2

Canvas coordinates

• proximity: number

Proximity to tool to consider

• interactionType?: string

Returns​

boolean

Boolean, whether the canvas point is near tool

Overrides​

AnnotationTool.isPointNearTool

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:327


mouseMoveCallback()​

mouseMoveCallback(evt, filteredAnnotations?): boolean

Event handler for Cornerstone MOUSE_MOVE event.

Parameters​

• evt: MouseMoveEventType

The normalized mouse event

• filteredAnnotations?: Annotations

The annotations to check for hover interactions

Returns​

boolean

True if the annotation needs to be re-drawn by the annotationRenderingEngine.

Inherited from​

AnnotationTool.mouseMoveCallback

Defined in​

tools/src/tools/base/AnnotationTool.ts:304


onImageSpacingCalibrated()​

onImageSpacingCalibrated(evt): void

On Image Calibration, take all the annotation from the AnnotationState manager, and invalidate them to force them to be re-rendered and their stats to be recalculated. Then use the old and new imageData (non-calibrated and calibrated) to calculate the new position for the annotations in the space of the new imageData.

Parameters​

• evt: ImageSpacingCalibratedEvent

The calibration event

Returns​

void

Inherited from​

AnnotationTool.onImageSpacingCalibrated

Defined in​

tools/src/tools/base/AnnotationDisplayTool.ts:89


onSetToolDisabled()​

onSetToolDisabled(): void

Returns​

void

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:304


redo()​

redo(): void

Redo an action (undo the undo)

Returns​

void

Inherited from​

AnnotationTool.redo

Defined in​

tools/src/tools/base/BaseTool.ts:718


renderAnnotation()​

renderAnnotation(enabledElement, svgDrawingHelper): boolean

it is used to draw the circleROI annotation in each request animation frame. It calculates the updated cached statistics if data is invalidated and cache it.

Parameters​

• enabledElement: IEnabledElement

The Cornerstone's enabledElement.

• svgDrawingHelper: SVGDrawingHelper

The svgDrawingHelper providing the context for drawing.

Returns​

boolean

Overrides​

AnnotationTool.renderAnnotation

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:622


renderLinkedTextBoxAnnotation()​

protected renderLinkedTextBoxAnnotation(options): boolean

Renders a linked text box for an annotation using shared visibility, placement, and worldBoundingBox logic. Call from renderAnnotation when the tool uses a linked text box (e.g. Length, RectangleROI). The caller must supply textLines and canvasCoordinates; when text box visibility is off, this method resets data.handles.textBox and returns false.

Parameters​

• options

• options.annotation: Annotation

Annotation whose text box to render

• options.canvasCoordinates: Point2[]

Canvas anchor points for the link line (and for placement when placementPoints omitted)

• options.enabledElement: IEnabledElement

Cornerstone enabled element

• options.placementPoints?: Point2[]

Optional; when provided, used for getTextBoxCoordsCanvas only (e.g. circle ROI uses corners for placement, center for link)

• options.styleSpecifier: StyleSpecifier

Style specifier for getLinkedTextBoxStyle

• options.svgDrawingHelper: SVGDrawingHelper

SVG drawing helper

• options.textBoxUID?: string

Optional UID for the text box SVG group (default '1')

• options.textLines: string[]

Lines to display (caller responsibility to compute/skip when empty)

Returns​

boolean

true if the text box was drawn, false if visibility was off (textBox was reset)

Inherited from​

AnnotationTool.renderLinkedTextBoxAnnotation

Defined in​

tools/src/tools/base/AnnotationTool.ts:502


setActiveStrategy()​

setActiveStrategy(strategyName): void

Sets the active strategy for a tool. Strategies are multiple implementations of tool behavior that can be switched by tool configuration.

Parameters​

• strategyName: string

name of the strategy to be set as active

Returns​

void

Inherited from​

AnnotationTool.setActiveStrategy

Defined in​

tools/src/tools/base/BaseTool.ts:290


setConfiguration()​

setConfiguration(newConfiguration): void

merges the new configuration with the tool configuration

Parameters​

• newConfiguration: Record<string, any>

Returns​

void

Inherited from​

AnnotationTool.setConfiguration

Defined in​

tools/src/tools/base/BaseTool.ts:276


showZoomFactorsList()​

showZoomFactorsList(evt, annotation): void

Parameters​

• evt: InteractionEventType | TouchPressEventType

• annotation: AdvancedMagnifyAnnotation

Returns​

void

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:742


startGroupRecording()​

protected startGroupRecording(): void

Returns​

void

Inherited from​

AnnotationTool.startGroupRecording

Defined in​

tools/src/tools/base/AnnotationTool.ts:876


toolSelectedCallback()​

toolSelectedCallback(evt, annotation): void

Custom callback for when an annotation is selected

Parameters​

• evt: InteractionEventType

The normalized mouse event

• annotation: AdvancedMagnifyAnnotation

The Annotation to check.

Returns​

void

Overrides​

AnnotationTool.toolSelectedCallback

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:355


touchPressCallback()​

touchPressCallback(evt): void

Touch counterpart of the Secondary+Shift zoom-factor action: a long-press (TOUCH_PRESS) near the magnifying glass border opens the same picker. The touchPress dispatcher calls the first active tool that implements this callback, without any proximity check, so the hit-test happens here (and an earlier tool in the group implementing touchPressCallback would shadow this one). When TOUCH_START has already grabbed the loupe the dispatcher drops the event entirely and _pressModifyCallback delivers the press instead.

Parameters​

• evt: TouchPressEventType

Returns​

void

Defined in​

tools/src/tools/AdvancedMagnifyTool.ts:794


undo()​

undo(): void

Undoes an action

Returns​

void

Inherited from​

AnnotationTool.undo

Defined in​

tools/src/tools/base/BaseTool.ts:708


calculateLengthInIndex()​

static calculateLengthInIndex(calibrate, indexPoints, closed): number

Calculates the length between two index coordinates using the calibrate information for scaling information.

Parameters​

• calibrate: any

• indexPoints: any

• closed: boolean = false

set to true to calculate the closed length, including the line between the first/last index

Returns​

number

Inherited from​

AnnotationTool.calculateLengthInIndex

Defined in​

tools/src/tools/base/BaseTool.ts:794


createAndAddAnnotation()​

static createAndAddAnnotation(viewport, ...annotationBaseData): void

Creates and adds an annotation of the given type, firing the annotation modified event on the new annotation. This implicitly uses the static class when you call it on the correct base class. For example, you can call the KeyImageTool.createAnnotation method on KeyImageTool.toolName by calling KeyImageTool.createAndAddAnnotation

Parameters​

• viewport: any

• ...annotationBaseData: any[]

Returns​

void

Inherited from​

AnnotationTool.createAndAddAnnotation

Defined in​

tools/src/tools/base/AnnotationTool.ts:109


createAnnotation()​

static createAnnotation(...annotationBaseData): Annotation

Creates a base annotation object, adding in any annotation base data provided

NOTE: This is the static version of this method and doesn't know about adding any of the dynamic data. Use this version to create a general annotation, and then extend it appropriately with the tool specific data. See this.createAnnotation for details.

Parameters​

• ...annotationBaseData: any[]

Returns​

Annotation

Inherited from​

AnnotationTool.createAnnotation

Defined in​

tools/src/tools/base/AnnotationDisplayTool.ts:140


createAnnotationForViewport()​

static createAnnotationForViewport<T>(viewport, ...annotationBaseData): T

Creates a new annotation for the given viewport. This just adds the viewport reference data to the metadata, and otherwise returns the static class createAnnotation data.

Type Parameters​

• T extends Annotation

Parameters​

• viewport: any

• ...annotationBaseData: any[]

Returns​

T

Inherited from​

AnnotationTool.createAnnotationForViewport

Defined in​

tools/src/tools/base/AnnotationTool.ts:86


createAnnotationMemo()​

static createAnnotationMemo(element, annotation, options?): object

Creates an annotation memo storing the current data state on the given annotation object. This will store/recover handles data, text box and contour data, and if the options are set for deletion, will apply that correctly.

Parameters​

• element: HTMLDivElement

that the annotation is shown on.

• annotation: Annotation

to store a memo for the current state.

• options?

whether the annotation is being created (newAnnotation) or is in the process of being deleted (deleting)

  • Note the naming on deleting is to indicate the deletion is in progress, as the createAnnotationMemo needs to be called BEFORE the annotation is actually deleted.
  • deleting with a value of false is the same as newAnnotation=true, as it is simply the opposite direction. Use undefined for both newAnnotation and deleting for non-create/delete operations.

• options.deleting?: boolean

• options.newAnnotation?: boolean

Returns​

object

Memo containing the annotation data.

id​

id: string = annotationUID

operationType​

operationType: string = 'annotation'

restoreMemo()​

restoreMemo: () => void

Returns​

void

Inherited from​

AnnotationTool.createAnnotationMemo

Defined in​

tools/src/tools/base/AnnotationTool.ts:773


createAnnotationState()​

protected static createAnnotationState(annotation, deleting?): object

Creates an annotation state copy to allow storing the current state of an annotation. Contour and other special keys are handled by safeStructuredClone. Spline is omitted (non-cloneable refs).

Parameters​

• annotation: Annotation

the annotation to create a clone of

• deleting?: boolean

a flag to indicate that this object is about to be deleted (deleting true), or was just created (deleting false), or neither (deleting undefined).

Returns​

object

state information for the given annotation.

annotationUID​

annotationUID: string

data​

data: AnnotationData

deleting​

deleting: boolean

Inherited from​

AnnotationTool.createAnnotationState

Defined in​

tools/src/tools/base/AnnotationTool.ts:743


createZoomPanMemo()​

static createZoomPanMemo(viewport): object

Creates a zoom/pan memo that remembers the original zoom/pan position for the given viewport.

Parameters​

• viewport: any

Returns​

object

restoreMemo()​

restoreMemo: () => void

Returns​

void

Inherited from​

AnnotationTool.createZoomPanMemo

Defined in​

tools/src/tools/base/BaseTool.ts:726


endGroupRecording()​

static endGroupRecording(): void

Ends a group recording of history memo

Returns​

void

Inherited from​

AnnotationTool.endGroupRecording

Defined in​

tools/src/tools/base/BaseTool.ts:784


findCachedStatsTargetId()​

protected static findCachedStatsTargetId(data, referencedId): string

Finds an existing cachedStats key for the given referenced volume id, if statistics were already computed for that volume - the keys are view reference ids of the form volumeId:<volumeId>?..., so entries created by other viewports (with a different slice/orientation) still match.

Parameters​

• data: AnnotationData

• referencedId: string

Returns​

string

Inherited from​

AnnotationTool.findCachedStatsTargetId

Defined in​

tools/src/tools/base/BaseTool.ts:660


getExemplarInstance()​

protected static getExemplarInstance(imageIds?): Record<string, unknown>

Resolves an exemplar (first) instance - naturalized DICOM metadata - from the image ids of a display set/volume, when available.

Parameters​

• imageIds?: string[]

Returns​

Record<string, unknown>

Inherited from​

AnnotationTool.getExemplarInstance

Defined in​

tools/src/tools/base/BaseTool.ts:643


getViewportDisplaySets()​

protected static getViewportDisplaySets(viewport): object[]

Resolves the display sets a viewport is displaying, when known. Viewports displaying registered display sets (see setDisplaySets on the generic viewports) resolve through the displaySetModule metadata (an IDisplaySet from @cornerstonejs/metadata) falling back to the generic viewport display set registration; legacy viewports (setStack with plain image ids) have no display set, so an empty list is returned and their candidates carry no display set fields.

Parameters​

• viewport: Viewport

Returns​

object[]

Inherited from​

AnnotationTool.getViewportDisplaySets

Defined in​

tools/src/tools/base/BaseTool.ts:572


hydrateBase()​

protected static hydrateBase<T>(ToolClass, enabledElement, points, options): object

Type Parameters​

• T extends AnnotationTool

Parameters​

• ToolClass

• enabledElement: IEnabledElement

• points: Point3[]

• options = {}

• options.annotationUID?: string

• options.referencedImageId?: string

• options.toolInstance?: T

• options.viewplaneNormal?: Point3

• options.viewUp?: Point3

Returns​

object

FrameOfReferenceUID​

FrameOfReferenceUID: string

instance​

instance: T

referencedImageId​

referencedImageId: any

viewPlaneNormal​

viewPlaneNormal: Point3 = finalViewPlaneNormal

viewport​

viewport: StackViewport | VolumeViewport

viewUp​

viewUp: Point3 = finalViewUp

Inherited from​

AnnotationTool.hydrateBase

Defined in​

tools/src/tools/base/AnnotationTool.ts:885


isInsideVolume()​

static isInsideVolume(dimensions, indexPoints): boolean

Return true if all the index points are within the dimensions provided.

Parameters​

• dimensions: any

• indexPoints: any

Returns​

boolean

Inherited from​

AnnotationTool.isInsideVolume

Defined in​

tools/src/tools/base/BaseTool.ts:816


isSpecifiedTargetId()​

static isSpecifiedTargetId(desiredVolumeId): (_viewport, __namedParameters) => any

A function generator to test if the target id is the desired one. Used for deciding which set of cached stats is appropriate to display for a given viewport.

This relies on the fact that the target id contains a substring which is the desired volume id when the target is a volume. It is also possible to use series query parameters such as /series/{seriesUID}/ to generate specific series selections within a stack viewport.

Parameters​

• desiredVolumeId: string

Returns​

Function

Parameters​

• _viewport: any

• __namedParameters

• __namedParameters.targetId: any

Returns​

any

Deprecated​

Use the targetsFilter configuration option with measurementTargetFilters.forId instead.

Inherited from​

AnnotationTool.isSpecifiedTargetId

Defined in​

tools/src/tools/base/BaseTool.ts:191


isSuvScaled()​

static isSuvScaled(viewport, targetId, imageId?): boolean

Returns true if the viewport is scaled to SUV units

Parameters​

• viewport: StackViewport | VolumeViewport

The viewport

• targetId: string

The annotation targetId

• imageId?: string

The annotation imageId

Returns​

boolean

Inherited from​

AnnotationTool.isSuvScaled

Defined in​

tools/src/tools/base/AnnotationTool.ts:598


mergeDefaultProps()​

static mergeDefaultProps(defaultProps, additionalProps?): any

Does a deep merge of property options. Allows extending the default values for a child class.

Parameters​

• defaultProps = {}

this is a base set of defaults to merge into

• additionalProps?: any

the additional properties to merge into the default props

Returns​

any

defaultProps if additional props not defined, or a merge into a new object containing additionalProps adding onto and overriding defaultProps.

Inherited from​

AnnotationTool.mergeDefaultProps

Defined in​

tools/src/tools/base/BaseTool.ts:171


startGroupRecording()​

static startGroupRecording(): void

Starts a group recording of history memo, so that with a single undo you can undo multiple actions that are related to each other

Returns​

void

Inherited from​

AnnotationTool.startGroupRecording

Defined in​

tools/src/tools/base/BaseTool.ts:779