Computer Assisted Medical Intervention Tool Kit version 6.0
 
Loading...
Searching...
No Matches
camitk::ArbitrarySingleImageComponent Class Reference

This Component manages the specific case of arbitrary orientation of a sub-component of the image component. More...

#include <ArbitrarySingleImageComponent.h>

+ Inheritance diagram for camitk::ArbitrarySingleImageComponent:
+ Collaboration diagram for camitk::ArbitrarySingleImageComponent:

Public Member Functions

 ArbitrarySingleImageComponent (Component *parentComponent, const QString &name, vtkSmartPointer< vtkWindowLevelLookupTable > lut)
 Constructor.
 
vtkSmartPointer< vtkActor > get3DCursor () override
 Returns a 3D cross cursor vtkActor to show the picked voxel (override to give it in the right frame)
 
virtual QMultiMap< const FrameOfReference *, Component * > getAllFrames (bool includeChildrenFrames) override
 Get all FrameOfReference owned by this image.
 
virtual QMultiMap< const Transformation *, Component * > getAllTransformations (bool includeChildrenTransformations) override
 Get all Transformation owned by this image.
 
const FrameOfReferencegetArbitraryFrame () const
 Get the arbitrary frame that is located in the chosen arbitrary position.
 
const TransformationgetArbitraryTransformation () const
 Returns the arbitrary transformation (from arbitraryFrame to main frame of this component, i.e.n the image data Frame)
 
void setArbitraryFrame (const std::shared_ptr< FrameOfReference > &fr)
 Set the ArbitraryFrame.
 
void setFrame (const std::shared_ptr< FrameOfReference > &fr) override
 Set the Frame.
 
virtual ~ArbitrarySingleImageComponent () override
 Destructor.
 
overriden from Component to manage arbitrary orientation
virtual void propertyValueChanged (QString name) override
 propertyValueChanged: when "Translation" and "Rotation" properties are modify, this will update the slice orientation and position
 
virtual void updatePropertyFromTransformation ()
 update the property values from the current arbitrary transformation (this can be called for instance when when a workspace is loaded) Note: the signals are blocked during this update
 
virtual void resetTransform ()
 reset the transformation to the image component parent so that the frame of the arbitrary slice is in the center of the volume along the z axis by default
 
virtual void setSlice (int) override
 set slice as a percentage on the z axis translation
 
virtual void setSlice (double, double, double) override
 rewritten because the setSlice(int) method is overriden (compiler needs this)
 
virtual int getSlice () const override
 return the slice as the percentage of translation (between 0 and 100)
 
virtual int getNumberOfSlices () const override
 always return 100 (as getSlice() gives a percentage value, the max number of slices is 100.
 
Specific helper methods to manage arbitrary orientation and its representation
void getArbitraryCenter (double center[4]) const
 Compute the current position of the cutting plane center in the image coordinate system (i.e., the data frame of the image component)
 
void getArbitraryPlaneNormal (double normalVector[4]) const
 Compute the current z-direction (normal vector) in the image coordinate system (i.e., the data frame of the image component)
 
- Public Member Functions inherited from camitk::SingleImageComponent
vtkSmartPointer< vtkActor > get3DCursor () override
 Returns a 3D cross cursor vtkActor to show the picked voxel.
 
Slice::SliceOrientation getSliceOrientation ()
 get the slice orientation
 
virtual void pixelPicked (double, double, double) override
 rewritten from Component so that the Component can call the ManagerComponent
 
virtual void setSelected (const bool, const bool) override
 rewritten to synchronize everyone
 
 SingleImageComponent (Component *parentComponent, Slice::SliceOrientation, const QString &name, vtkSmartPointer< vtkWindowLevelLookupTable > lut)
 Constructor.
 
virtual void singleImageSelected (const bool)
 new method used to call the Component set selected
 
 ~SingleImageComponent () override=default
 Destructor.
 
- Public Member Functions inherited from camitk::Component
 Component (QString file, QString name, Representation rep=NO_REPRESENTATION, bool createDefaultFrame=true)
 Component constructor for top-level component (please use the other constructor for sub-level components).
 
 Component (Component *parentComponent, const QString &name, Representation rep=NO_REPRESENTATION, bool createDefaultFrame=true)
 Component constructor for a Component that is a child of another Component You should not use this constructor for a top-level component.
 
virtual ~Component () override
 default destructor.
 
Representation getRepresentation () const
 return the type of representation concretely implemented by this Component in the InteractiveViewer.
 
bool isTopLevel () const
 return true if this component is a top-level component
 
ComponentgetParentComponent ()
 get the parent component
 
ComponentgetTopLevelComponent ()
 get the top-level component
 
virtual void setModified (bool modified=true)
 set the modified flag
 
virtual bool getModified () const
 set the modified flag
 
virtual void setVisibility (QString, bool)
 set the visibility inside the viewer of the given name (the viewer needs to be a registered viewer)
 
virtual bool getVisibility (QString) const
 get the visibility inside the viewer of the given name
 
virtual void refresh ()
 refresh all the viewer that are currently displaying this Component At the end the InterfaceNode modification flag is reset.
 
virtual bool isSelected () const
 Check if this data component is selected.
 
const QString getFileName () const
 get the file name where the data have to be stored/were stored
 
void setFileName (const QString &)
 set the file name where the data have to be stored
 
bool event (QEvent *e) override
 Overriden from QObject, this one is only intercepting signal for dynamic property changed (see constructor).
 
QMenu * getActionMenu ()
 Get a QMenu that contains all the action that can be applied to this component.
 
virtual QVariant toVariant () const override
 
virtual void fromVariant (const QVariant &) override
 Load data from a QVariant to initialize the current object.
 
virtual QUuid getUuid () const override
 Get the unique ID of the component.
 
virtual bool setUuid (QUuid) override
 Set the unique ID of the component.
 
QStringList getHierarchy () const override
 
bool isInstanceOf (QString className) const override
 Assert that a Component instance really inherits from a given className.
 
unsigned int getNumberOfPropertyWidget () override
 get the number of alternative property widgets
 
QWidget * getPropertyWidgetAt (unsigned int) override
 Get the ith alternative property widget.
 
QObject * getPropertyObject () override
 Get the property object that could be understood by PropertyEditor.
 
const QObject * getPropertyObject () const override
 
void propertyValueChanged (QString name) override
 This method is called when a dynamic property value has been modified.
 
void setIndexOfPropertyExplorerTab (unsigned int index) override final
 Set the index of the tab in the ProperlyExplorer to select for display.
 
unsigned int getIndexOfPropertyExplorerTab () override
 Get the index of the tab in the ProperlyExplorer to select for display.
 
Q_INVOKABLE camitk::PropertygetProperty (QString name) override
 Get a Property given its name.
 
bool addProperty (Property *) override
 Add a new CamiTK property to the component.
 
virtual QVariant getPropertyValue (const QString &name) const override
 get the property QVariant (same as property(const char*)) but check if it exists first.
 
virtual bool setPropertyValue (const QString &name, QVariant newValue) override
 set the property QVariant value (same as setProperty(const char*, newValue)) but check if it exists first.
 
void removeChild (InterfaceNode *) override
 remove a child node.
 
void setParent (InterfaceNode *) override
 set the parent Component.
 
bool doubleClicked () override
 This method is called each time the InterfaceNode is double clicked by the user.
 
void addChild (InterfaceNode *) override
 add a child Component (sub item in the hierarchy), and modify the child's parent to be equal to this instance
 
void attachChild (InterfaceNode *) override
 add a child Component (but leave its parent unchanged)
 
void deleteChildren () override final
 delete all sub Component, but do not delete the pointer (only the top-level component has the right to do that)
 
QString getName () const override
 get the name to be displayed
 
void setName (const QString &) override
 set the name to be displayed
 
const ComponentListgetChildren () const override
 get the list of the InterfaceNode children (sub items in the hierarchy)
 
InterfaceNodegetParent () override
 get the parent Component
 
QPixmap getIcon () override
 Get the pixmap that will be displayed for this node.
 
void setNodeModified (bool) override final
 Set up the node modification flag.
 
bool getNodeModified () const override
 Get the current modification flag.
 
bool inItalic () const override
 A component name is not displayed in italic by default.
 
QMenu * getPopupMenu (QWidget *parent=nullptr) override
 get the popup menu to display (always return nullptr, overwrite this method if you want to give here you own popup)
 
virtual const FrameOfReferencegetFrame () const override
 Get the pointer to this object's FrameOfReference.
 
virtual void setFrameFrom (const InterfaceFrame *) override
 Modify this object's frame using the given object's frame.
 
virtual void resetFrame () override
 Reset this object's FrameOfReference, that is call setFrame with a newly created frame of reference.
 
vtkSmartPointer< vtkAxesActor > getFrameAxisActor (QString viewerName) override
 get the Frame Actor for a viewer
 
virtual bool getFrameVisibility (QString viewerName) const override
 get the visibility of the Frame axis actor in the named viewer
 
virtual void setFrameVisibility (QString viewerName, bool visibility) override
 set the visibility of the Frame axis actor
 
 delegateGet0 (myGeometry, getPointSet, vtkSmartPointer< vtkPointSet >) delegate1(myGeometry
 
vtkSmartPointer< vtkPointSet > delegate1 (myGeometry, setPointData, vtkSmartPointer< vtkDataArray >) delegateConstGet0(myGeometry
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > delegate1 (myGeometry, setDataConnection, vtkSmartPointer< vtkAlgorithmOutput >) delegateGet1(myGeometry
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > const RenderingModes delegate1 (myGeometry, setColorMode, int) delegate1(myGeometry
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > const RenderingModes const QString &vtkSmartPointer< vtkProp > getProp (const QString &param) override
 Return the vtkProp (actors, volumes and annotations) corresponding to the given name.
 
unsigned int getNumberOfProp () const override
 return the number of additional prop
 
vtkSmartPointer< vtkProp > getProp (unsigned int index) override
 return an additional prop by its index
 
bool addProp (const QString &name, vtkSmartPointer< vtkProp > prop) override
 insert an additional prop, defining it by its name (default visibility = false).
 
bool removeProp (const QString &name) override
 remove a given additional prop.
 
void pointPicked (vtkIdType, bool) override
 an inherited class can redefine this method something specific.
 
void cellPicked (vtkIdType, bool) override
 an inherited class can redefine this method something specific.
 
void getBounds (double *bounds) override
 compute the object's bounding box [xmin,xmax, ymin,ymax, zmin,zmax], see Component.cpp
 
double getBoundingRadius () override
 compute the object's bounding sphere radius,
 
 delegate4 (myGeometry, setPointPosition, const unsigned int, const double, const double, const double) delegateAndInvokeChildren1(myGeometry
 
const RenderingModes const InterfaceGeometry::RenderingModes getRenderingModes () const override
 see Component.cpp
 
 delegateAndInvokeChildren1 (myGeometry, setEnhancedModes, const EnhancedModes) virtual const EnhancedModes getEnhancedModes() const override
 
 delegateAndInvokeChildren1Array (myGeometry, setActorColor, const RenderingModes, double, 4) delegateAndInvokeChildren4(myGeometry
 
const const const const double void getActorColor (const RenderingModes, double[4], bool ignoreEnhancedModes=false) const override
 see Component.cpp
 
 delegateAndInvokeChildren3 (myGeometry, setColor, const double, const double, const double) delegateAndInvokeChildren4(myGeometry
 
const const const const double delegateAndInvokeChildren2 (myGeometry, setActorOpacity, const RenderingModes, const double) delegateConstGet1(myGeometry
 
const const const const double const RenderingModes delegateAndInvokeChildren1 (myGeometry, setOpacity, const double) delegate2(myGeometry
 
const const const const double const RenderingModes double delegate1 (myGeometry, setTexture, vtkSmartPointer< vtkTexture >) void setGlyphType(const GlyphTypes type
 
virtual void setLinesAsTubes (bool isTubes=true, bool radiusFromLength=true, double radiusFactor=1.0/40.0, int numberOfSides=5) override
 Set the lines as tubes (works only for vtkDataSet representation that contains lines)
 
vtkSmartPointer< vtkImageData > delegate1 (mySlice, setOriginalVolume, vtkSmartPointer< vtkImageData >) delegateConstGet0(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > delegateConstGet0 (mySlice, get3DImageActor, vtkSmartPointer< vtkImageActor >) delegateConstGet0(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > delegateGet0 (mySlice, getPixelActor, vtkSmartPointer< vtkActor >) delegate3(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double delegate0 (mySlice, updatePickPlane) delegate1(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double int delegate3 (mySlice, setSlice, double, double, double) delegateConstGet0(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double int int delegate3 (mySlice, setPixelRealPosition, double, double, double) delegate1(mySlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double int int vtkSmartPointer< vtkTransform > int getNumberOfSlices () const override
 see Component.cpp
 
int getSlice () const override
 see Component.cpp
 
- Public Member Functions inherited from camitk::InterfaceProperty
 ~InterfaceProperty ()=default
 empty virtual destructor, to avoid memory leak
 
- Public Member Functions inherited from camitk::InterfaceNode
virtual ~InterfaceNode ()=default
 empty virtual destructor, to avoid memory leak
 
- Public Member Functions inherited from camitk::InterfaceGeometry
virtual ~InterfaceGeometry ()=default
 empty virtual destructor, to avoid memory leak
 
virtual vtkSmartPointer< vtkPointSet > getPointSet ()=0
 
virtual void setPointSet (vtkSmartPointer< vtkPointSet >)=0
 set the low-level data set.
 
virtual void setPointData (vtkSmartPointer< vtkDataArray >)=0
 set the point data (may contains a lookup table).
 
virtual void setMeshWorldTransform (vtkSmartPointer< vtkTransform >)=0
 set the transformation for 3D representation
 
virtual vtkSmartPointer< vtkAlgorithmOutput > getDataPort () const =0
 get the custom algorithm pipeline input.
 
virtual void setDataConnection (vtkSmartPointer< vtkAlgorithmOutput >)=0
 Set/reset the connection for the InterfaceGeometry internal algorithm.
 
virtual void setTexture (vtkSmartPointer< vtkTexture >)=0
 Set a texture to this object.
 
virtual vtkSmartPointer< vtkActor > getActor (const RenderingModes)=0
 Return the actor for the representation mode, nullptr if the actor doesn't exist.
 
virtual void updateLabel (const QString &label)=0
 update position and text of the label prop
 
virtual void setPointPosition (const unsigned int orderNumber, const double x, const double y, const double z)=0
 set a given point position
 
virtual void setRenderingModes (const RenderingModes)=0
 
virtual void setEnhancedModes (const EnhancedModes)=0
 set the enhanced mode
 
virtual const EnhancedModes getEnhancedModes () const =0
 get the current enhanced mode
 
virtual void setActorColor (const RenderingModes, double *color)=0
 Set the color of given representation modes.
 
virtual void setActorColor (const RenderingModes, const double, const double, const double)=0
 Set the color of given representation modes.
 
virtual void getActorColor (const RenderingModes mode, double *color, bool ignoreEnhancedModes=false) const =0
 Get the color of given representation modes in the second parameter.
 
virtual void setColor (const double, const double, const double)=0
 Set an (r,g,b) color to all representation modes, without changing the opacity.
 
virtual void setColor (const double, const double, const double, const double)=0
 Set an (r,g,b,a) color to all representation modes.
 
virtual void setActorOpacity (const RenderingModes, const double)=0
 Set the opacity of this representation modes. WARNING color field (surfaceColor, ...) are not modified!
 
virtual double getActorOpacity (const RenderingModes) const =0
 Return the opacity of a given renderng mode.
 
virtual void setOpacity (const double)=0
 Set the opacity of this object. WARNING color field (surfaceColor, ...) are not modified!
 
virtual void setMapperScalarRange (double min, double max)=0
 Set the mapper scalar range.
 
virtual void setGlyphType (const GlyphTypes type, const double size=0.0)=0
 Set the glyph type (a glyph is a geometric representation attached to every point in the input dataset).
 
virtual void setColorMode (int vtkColorMode=VTK_COLOR_MODE_DEFAULT)=0
 
- Public Member Functions inherited from camitk::InterfaceBitMap
virtual vtkSmartPointer< vtkImageActor > get2DImageActor () const =0
 Return the vtkImageActor (vtkProp) representing a slice to be displayed in 2D viewers.
 
virtual vtkSmartPointer< vtkImageActor > get3DImageActor () const =0
 Return the vtkImageActor (vtkProp) representing a slice to be displayed in 3D viewers.
 
virtual vtkSmartPointer< vtkImageData > getImageData () const =0
 Returns the encapsultaed data structure: the image as a vtkImageData.
 
virtual int getNumberOfColors () const =0
 Return the number of colors in the images.
 
virtual vtkSmartPointer< vtkActor > getPickPlaneActor () const =0
 Return the vtkActor used to pick pixels in the slices.
 
virtual vtkSmartPointer< vtkActor > getPixelActor ()=0
 Return the vtkActor used to pick pixels in the slices.
 
virtual void setArbitraryTransform (vtkSmartPointer< vtkTransform >)=0
 Set the pointer to the image transformation.
 
virtual void setOriginalVolume (vtkSmartPointer< vtkImageData >)=0
 set the original volume image data (the source vtkImageData before any reslice) and refresh the vtk pipeline
 
virtual void setPixelRealPosition (double, double, double)=0
 move the pixel selection green indicator (pixelActor) to the given real position
 
virtual void updatePickPlane ()=0
 update the position of the plane surrounding the currently selected slice
 
virtual ~InterfaceBitMap ()=default
 virtual destructor
 
- Public Member Functions inherited from camitk::InterfaceFrame
virtual ~InterfaceFrame ()=default
 empty virtual destructor, to avoid memory leak
 
- Public Member Functions inherited from camitk::InterfacePersistence
virtual ~InterfacePersistence ()=default
 

Friends

void ImageComponent::fromVariant (const QVariant &)
 the fromVariant method need to access initArbitraryTransformation(Transformation*) in order to load the exact same transformation from .camitk file
 

Additional Inherited Members

- Public Types inherited from camitk::Component
enum  Representation { GEOMETRY , SLICE , NO_REPRESENTATION }
 The different representation that can be implemented to represent this Component in the InteractiveViewer. More...
 
- Public Types inherited from camitk::InterfaceGeometry
enum  EnhancedMode { Normal = 0x0 , Hidden = 0x1 , Shaded = 0x2 , Highlighted = 0x4 }
 (and QFlags EnhancedModes) handle the way the rendering actors will be enhanced or not (from completely hidden to highlighted) More...
 
enum  GlyphType { NoGlyph = 0x0 , Sphere = 0x1 }
 (and QFlags GlyphTypes) is the type of glyph attached to the geometry representation More...
 
enum  RenderingMode { None = 0x0 , Surface = 0x1 , Wireframe = 0x2 , Points = 0x4 }
 (and QFlags RenderingModes) handle actor rendering options (render this InterfaceGeometry as a surface, a wireframe and set of points). More...
 
- Public Attributes inherited from camitk::Component
 setPointSet
 
vtkSmartPointer< vtkPointSet > getDataPort
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > getActor
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > vtkSmartPointer< vtkActor >
 
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > const RenderingModes updateLabel
 
 setRenderingModes
 
 setActorColor
 
const RenderingModes
 
const const double
 
const const const double
 
 setColor
 
const double
 
const const const const double getActorOpacity
 
const const const const double double
 
const const const const double const RenderingModes setMapperScalarRange
 
const const const const double const RenderingModes double
 
const const const const double const RenderingModes double const double size = 0.0) override
 
 getImageData
 
vtkSmartPointer< vtkImageData > get2DImageActor
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > getPickPlaneActor
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > pixelPicked
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double setSlice
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double int getNumberOfColors
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > double int int setArbitraryTransform
 
- Protected Member Functions inherited from camitk::SingleImageComponent
virtual void initRepresentation () override final
 The concrete building of the Service (Slice in this case, for a 2D representation).
 
- Protected Attributes inherited from camitk::SingleImageComponent
vtkSmartPointer< vtkActor > cursorActor
 cursor (3D cross) actor of this slice to show the picked voxel location should be used by one viewer only, the one with the same orientation as this SingleImageComponent
 
vtkSmartPointer< vtkWindowLevelLookupTable > lut
 Look up table used for this image.
 
Slice::SliceOrientation sliceOrientation
 orientation of the single image component
 
- Protected Attributes inherited from camitk::Component
ComponentList childrenComponent
 The explorer sub items.
 
std::shared_ptr< FrameOfReferenceframeOfReference = nullptr
 The FrameOfReference in which this component's data is represented.
 
unsigned int indexOfPropertyExplorerTab
 The PropertyExplorer tab index to select once refreshed.
 
bool isSelectedFlag
 tells if this particular Component is selected or not
 
bool modifiedFlag
 the modification flag (could be extended to manage a undo/redo list)
 
QString myFileName
 the file name from which the Component is loaded
 
InterfaceGeometrymyGeometry
 myGeometry is the 3d representation of this Component, the Component delegates all InterfaceGeometry activity to myGeometry (delegation pattern)
 
InterfaceNodemyParentNode
 who is the boss? The Component!
 
InterfaceBitMapmySlice
 mySlice is the slice representation of this data component, the Component delegates all InterfaceBitMap activity to mySlice (delegation pattern)
 

Detailed Description

This Component manages the specific case of arbitrary orientation of a sub-component of the image component.

Arbitrary slice frame is used to position and orientate the slice inside the parent image volume.

It does have a Slice representation (InterfaceBitMap), not a Geometry.

To change the orientation and translation of the arbitrary slice, modify the corresponding properties:

  • "Translation" should be a double number between 0.0 and 100.0 (see note below)
  • "Rotation" is a 3D vector (QVector3D, i.e. 3 float values) representing the current rotation in the inner frame (note: the origin of the inner frame is always set at the arbitrary/resliced image center)

These properties allow the displacement and change of orientation but constrained it so that the center of the arbitrary slice is always inside the parent ImageComponent volume.

For arbitrary slice, the default transform is set to be on the z plane but in the middle of the volume.

Note
translation, slice index and number of slices
  • For the arbitrary slice, the slice index is constrained to [0..100] and corresponds to the percentage of translation inside the current orientation image bounds (transaltion along the vector that is perpendicular to the current orientation of the arbitrary slice and bounded by the 3D image boundary).
  • The "Translation" property is therefore expressed as a percentage value
  • The initial position of the frame, while having no rotation, has therefore a translation equals to (50%, 50%, 50%)
  • The "Translation" property is therefore initialized at z = 0.5 = 50%
  • setSlice(int) on arbitrary slice considers the slice as percentage
  • setSlice(int) updates the current translation value (slice index is converted to percent in volume translation)
  • getSlice() returns the current value of the Translation property converted to a value in [0..100]
  • getNumberOfSlices always returns 100

The main frame of this component is set to the image component (parent component) data frame. The arbitrary frame manages the transformation from the current arbitrary orientation cutting plane to the main frame (i.e., the image data frame).

Note that when a rotation is applied, the translation property might be updated with respect to the new orientation (sometimes the translation value will flicker between two position when the Z axis of the plane intersect two different external "face" of the image volume cube).

In the source code, the following naming convention is used for the maths:

  • transformation matrices are noted T
  • T_a2m is the transformation matrix from the arbitrary frame to the main frame coordinate system (i.e., to the image component data frame)
  • A_m is the coordinate of point A in the main frame coordinate system (i.e., in the image component data frame)
  • A_a is the coordinate of point A in the arbitrary frame coordinate system
  • AB_m is the vector AB described in the main frame coordinate system (i.e., in the image component data frame)
  • AB_a is the vector AB described in the arbitrary frame coordinate system

Constructor & Destructor Documentation

◆ ArbitrarySingleImageComponent()

camitk::ArbitrarySingleImageComponent::ArbitrarySingleImageComponent ( Component parentComponent,
const QString &  name,
vtkSmartPointer< vtkWindowLevelLookupTable >  lut 
)

Constructor.

References camitk::TransformationManager::addFrameOfReference(), camitk::Component::addProperty(), camitk::ImageComponent::getDataFrame(), camitk::TransformationManager::getFrameOfReferenceOwnership(), camitk::ImageComponent::getImageData(), and camitk::Component::getName().

+ Here is the call graph for this function:

◆ ~ArbitrarySingleImageComponent()

camitk::ArbitrarySingleImageComponent::~ArbitrarySingleImageComponent ( )
overridevirtual

Destructor.

Member Function Documentation

◆ get3DCursor()

vtkSmartPointer< vtkActor > camitk::ArbitrarySingleImageComponent::get3DCursor ( )
overridevirtual

Returns a 3D cross cursor vtkActor to show the picked voxel (override to give it in the right frame)

Reimplemented from camitk::Component.

References camitk::SingleImageComponent::cursorActor, camitk::Component::frameOfReference, camitk::Component::get3DCursor(), camitk::Component::getParentComponent(), camitk::Transformation::getTransform(), camitk::TransformationManager::getTransformation(), and camitk::Component::vtkSmartPointer< vtkActor >.

+ Here is the call graph for this function:

◆ getAllFrames()

QMultiMap< const FrameOfReference *, Component * > camitk::ArbitrarySingleImageComponent::getAllFrames ( bool  includeChildrenFrames)
overridevirtual

Get all FrameOfReference owned by this image.

  • includeChildrenFrames Include the frames of this image's children along with its own

Reimplemented from camitk::Component.

References camitk::Component::getAllFrames(), and getArbitraryFrame().

+ Here is the call graph for this function:

◆ getAllTransformations()

QMultiMap< const Transformation *, Component * > camitk::ArbitrarySingleImageComponent::getAllTransformations ( bool  includeChildrenTransformations)
overridevirtual

Get all Transformation owned by this image.

  • includeChildrenTransformations Include the Transformation of this image's children along with its own

Reimplemented from camitk::Component.

References camitk::Component::getAllTransformations(), and getArbitraryTransformation().

+ Here is the call graph for this function:

◆ getArbitraryCenter()

void camitk::ArbitrarySingleImageComponent::getArbitraryCenter ( double  center[4]) const

Compute the current position of the cutting plane center in the image coordinate system (i.e., the data frame of the image component)

Note
center is filled as an homogeneous 3D position (last component is equals to 1.0)

References getArbitraryTransformation(), and camitk::Transformation::getMatrix().

+ Here is the call graph for this function:

◆ getArbitraryFrame()

const FrameOfReference * camitk::ArbitrarySingleImageComponent::getArbitraryFrame ( ) const
inline

Get the arbitrary frame that is located in the chosen arbitrary position.

Referenced by getAllFrames(), camitk::InteractiveViewer::picked(), and camitk::ImageComponent::toVariant().

+ Here is the caller graph for this function:

◆ getArbitraryPlaneNormal()

void camitk::ArbitrarySingleImageComponent::getArbitraryPlaneNormal ( double  normalVector[4]) const

Compute the current z-direction (normal vector) in the image coordinate system (i.e., the data frame of the image component)

Note
normalVector is filled as an homogeneous 3D vector (last component is equals to 0.0)

References getArbitraryTransformation(), and camitk::Transformation::getMatrix().

+ Here is the call graph for this function:

◆ getArbitraryTransformation()

const Transformation * camitk::ArbitrarySingleImageComponent::getArbitraryTransformation ( ) const
inline

Returns the arbitrary transformation (from arbitraryFrame to main frame of this component, i.e.n the image data Frame)

Referenced by getAllTransformations(), getArbitraryCenter(), getArbitraryPlaneNormal(), setSlice(), and updatePropertyFromTransformation().

+ Here is the caller graph for this function:

◆ getNumberOfSlices()

int camitk::ArbitrarySingleImageComponent::getNumberOfSlices ( ) const
overridevirtual

always return 100 (as getSlice() gives a percentage value, the max number of slices is 100.

Note
To set the slice using absolute value, please use updateTranslation and getTranslationInVolume instead

Implements camitk::InterfaceBitMap.

◆ getSlice()

int camitk::ArbitrarySingleImageComponent::getSlice ( ) const
overridevirtual

return the slice as the percentage of translation (between 0 and 100)

Note
To set the slice using absolute value, please use updateTranslation and getTranslationInVolume instead

Implements camitk::InterfaceBitMap.

Referenced by AnglesAndTranslationAction::event(), and setSlice().

+ Here is the caller graph for this function:

◆ propertyValueChanged()

void camitk::ArbitrarySingleImageComponent::propertyValueChanged ( QString  name)
overridevirtual

propertyValueChanged: when "Translation" and "Rotation" properties are modify, this will update the slice orientation and position

Implements camitk::InterfaceProperty.

References camitk::Component::propertyValueChanged().

+ Here is the call graph for this function:

◆ resetTransform()

void camitk::ArbitrarySingleImageComponent::resetTransform ( )
virtual

reset the transformation to the image component parent so that the frame of the arbitrary slice is in the center of the volume along the z axis by default

References camitk::Component::setPropertyValue().

Referenced by AnglesAndTranslationAction::resetTransform().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setArbitraryFrame()

void camitk::ArbitrarySingleImageComponent::setArbitraryFrame ( const std::shared_ptr< FrameOfReference > &  fr)
inline

Set the ArbitraryFrame.

Warning
you must update arbitraryTransform after changing the arbitrary frame so that the transform links the new arbitraryFrame to the image data frame

◆ setFrame()

void camitk::ArbitrarySingleImageComponent::setFrame ( const std::shared_ptr< FrameOfReference > &  fr)
overridevirtual

Set the Frame.

Warning
you must update arbitraryTransform after changing the arbitrary frame so that the transform links the new arbitraryFrame to the image data frame

Reimplemented from camitk::Component.

References camitk::TransformationManager::addFrameOfReference(), and camitk::TransformationManager::updateTransformation().

+ Here is the call graph for this function:

◆ setSlice() [1/2]

void camitk::ArbitrarySingleImageComponent::setSlice ( double  x,
double  y,
double  z 
)
overridevirtual

rewritten because the setSlice(int) method is overriden (compiler needs this)

x,y,z are expressed in the main frame (parent ImageComponent's data frame) → this is the new absolute translation modify the translation part of the current transformation from arbitrary to main x and y are not managed by set slice. Do not modify these values

Implements camitk::InterfaceBitMap.

References getArbitraryTransformation(), camitk::InterfaceBitMap::getPixelActor(), camitk::InterfaceBitMap::setPixelRealPosition(), camitk::Component::setPropertyValue(), camitk::InterfaceBitMap::updatePickPlane(), and camitk::TransformationManager::updateTransformation().

+ Here is the call graph for this function:

◆ setSlice() [2/2]

void camitk::ArbitrarySingleImageComponent::setSlice ( int  s)
overridevirtual

set slice as a percentage on the z axis translation

Note
To set the slice using absolute value, please use updateTranslation and getTranslationInVolume instead

Implements camitk::InterfaceBitMap.

References getSlice(), and camitk::Component::setPropertyValue().

+ Here is the call graph for this function:

◆ updatePropertyFromTransformation()

void camitk::ArbitrarySingleImageComponent::updatePropertyFromTransformation ( )
virtual

update the property values from the current arbitrary transformation (this can be called for instance when when a workspace is loaded) Note: the signals are blocked during this update

References getArbitraryTransformation(), camitk::Transformation::getTransform(), and camitk::Component::setPropertyValue().

Referenced by camitk::ImageComponent::fromVariant().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ ImageComponent::fromVariant

void ImageComponent::fromVariant ( const QVariant &  )
friend

the fromVariant method need to access initArbitraryTransformation(Transformation*) in order to load the exact same transformation from .camitk file


The documentation for this class was generated from the following files: