26#ifndef vtkMRMLSliceIntersectionInteractionRepresentation_h
27#define vtkMRMLSliceIntersectionInteractionRepresentation_h
29#include "vtkMRMLDisplayableManagerExport.h"
42class vtkPolyDataMapper2D;
47class vtkLeaderActor2D;
52class SliceIntersectionInteractionDisplayPipeline;
68 void PrintSelf(ostream& os, vtkIndent indent)
override;
117 int& foundComponentType,
int& foundComponentIndex,
double& closestDistance2,
double& handleOpacity);
124 HandleInfo(
int index,
int componentType,
const std::string& intersectingSliceNodeID,
double positionWorld[3],
double positionLocal[3])
129 for (
int i = 0; i < 3; ++i)
134 for (
int i = 0; i < 3; ++i)
124 HandleInfo(
int index,
int componentType,
const std::string& intersectingSliceNodeID,
double positionWorld[3],
double positionLocal[3]) {
…}
193 vtkSmartPointer<vtkMRMLSliceIntersectionInteractionRepresentationHelper>
Helper;
MRML node to represent a display property of 3D surface model.
Abstract Superclass for all specific types of MRML nodes.
MRML node to store display properties of slice nodes.
HandleInfo(int index, int componentType, const std::string &intersectingSliceNodeID, double positionWorld[3], double positionLocal[3])
std::string IntersectingSliceNodeID
void SetSliceDisplayNode(vtkMRMLSliceDisplayNode *sliceDisplayNode)
double GetLineThicknessFromMode(int lineThicknessMode)
void PrintSelf(ostream &os, vtkIndent indent) override
vtkMRMLSliceDisplayNode * GetSliceDisplayNode()
bool DistanceFromSliceIntersectionToPoint(vtkMRMLSliceNode *intersectingSlice, double point_RAS[3], double &distance)
Compute distance between a point and a slice intersection.
double GetSliceRotationAngleRad(int eventPos[2])
bool SliceIntersectionPointFound
Indicate whether a valid slice intersection point was found or not.
virtual HandleInfoList GetHandleInfoList(SliceIntersectionInteractionDisplayPipeline *pipeline)
vtkSmartPointer< vtkMRMLSliceIntersectionInteractionRepresentationHelper > Helper
bool IsMouseCursorInSliceView(double cursorPosition[2])
Check whether the mouse cursor is within the slice view or not.
void TransformIntersectingSlices(vtkMatrix4x4 *rotatedSliceToSliceTransformMatrix)
virtual int GetTranslateArrowCursor(const std::string &intersectingSliceNodeID)
virtual double GetMaximumHandlePickingDistance2()
void RemoveAllIntersectingSliceNodes()
vtkMRMLSliceDisplayNode * GetSliceDisplayNode(vtkMRMLSliceNode *sliceNode)
void UpdateFromMRML(vtkMRMLNode *caller, unsigned long event, void *callData=nullptr) override
static void SliceNodeModifiedCallback(vtkObject *caller, unsigned long eid, void *clientData, void *callData)
void SetSliceNode(vtkMRMLSliceNode *sliceNode)
void SetMRMLApplicationLogic(vtkMRMLApplicationLogic *)
void ComputeSliceIntersectionPoint()
Compute slice intersection point between red, green and yellow slice nodes.
double SliceIntersectionPoint[4]
Slice intersection point in XY.
double * GetSliceIntersectionPoint() VTK_SIZEHINT(3)
Get slice intersection point between red, green and yellow slice nodes.
vtkMRMLSliceIntersectionInteractionRepresentation()
static vtkMRMLSliceIntersectionInteractionRepresentation * New()
void GetActors2D(vtkPropCollection *) override
SliceIntersectionInteractionDisplayPipeline * GetDisplayPipelineFromSliceLogic(vtkMRMLSliceLogic *sliceLogic)
int RenderOverlay(vtkViewport *viewport) override
void SetPipelinesHandlesVisibility(bool visible)
vtkMRMLApplicationLogic * MRMLApplicationLogic
void UpdateSliceIntersectionDisplay(SliceIntersectionInteractionDisplayPipeline *pipeline)
void RemoveIntersectingSliceNode(vtkMRMLSliceNode *sliceNode)
void SliceNodeModified(vtkMRMLSliceNode *sliceNode)
void AddIntersectingSliceLogic(vtkMRMLSliceLogic *sliceLogic)
virtual std::string CanInteract(vtkMRMLInteractionEventData *interactionEventData, int &foundComponentType, int &foundComponentIndex, double &closestDistance2, double &handleOpacity)
std::vector< HandleInfo > HandleInfoList
Get the list of info for all interaction handles.
~vtkMRMLSliceIntersectionInteractionRepresentation() override
void UpdateIntersectingSliceNodes()
double LastEventPosition[2]
Support picking.
void ReleaseGraphicsResources(vtkWindow *) override
void SliceModelDisplayNodeModified(vtkMRMLModelDisplayNode *sliceNode)
void SetPipelinesHandlesOpacity(double opacity)
vtkMRMLSliceNode * GetSliceNode()
Slicer logic class for slice manipulation.
MRML node for storing a slice through RAS space.