This Component manages the specific case of arbitrary orientation of a sub-component of the image component. More...
#include <ArbitrarySingleImageComponent.h>
Public Member Functions | |
ArbitrarySingleImageComponent (Component *parentComponent, const QString &name, vtkSmartPointer< vtkWindowLevelLookupTable > lut) | |
Constructor. More... | |
~ArbitrarySingleImageComponent () override=default | |
Destructor. More... | |
overriden from Component to manage arbitrary orientation | |
same as default but notify the slice as well | |
virtual void | setTransform (vtkSmartPointer< vtkTransform >) override |
Set the current input frame position (according to its parent Frame) More... | |
virtual void | resetTransform () override final |
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 More... | |
virtual void | setTransformTranslation (double, double, double) override final |
set the arbitrary slice translation inside the volume between 0 and 1 (first two parameters are ignored) More... | |
virtual void | setTransformRotation (double, double, double) override final |
rotate of the given angles around the center of the frame/arbitrary slice More... | |
virtual CAMITK_API_UNIMPLEMENTED void | translate (double, double, double) override |
translation along the z axis (TODO implement this method) More... | |
virtual CAMITK_API_UNIMPLEMENTED void | rotate (double, double, double) override |
rotate on the slide center (TODO implement this method) More... | |
virtual CAMITK_API_UNIMPLEMENTED void | rotateVTK (double, double, double) override |
rotate on the slide center using the VTK way (TODO implement this method) More... | |
virtual CAMITK_API_UNIMPLEMENTED void | setTransformTranslationVTK (double, double, double) override |
set translation the VTK way (TODO implement this method) More... | |
virtual CAMITK_API_UNIMPLEMENTED void | setTransformRotationVTK (double, double, double) override |
set rotation the VTK way (TODO implement this method) More... | |
virtual void | setSlice (int) override |
set slice as a percentage on the z axis translation More... | |
virtual void | setSlice (double, double, double) override |
rewritten because the setSlice(int) method is overriden (compiler needs this) More... | |
virtual int | getSlice () const override |
return the slice as the percentage of translation (between 0 and 100) More... | |
virtual int | getNumberOfSlices () const override |
always return 100 (as getSlice() gives a percentage value, the max number of slices is 100. More... | |
virtual void | pixelPicked (double, double, double) override |
This method is called when the arbitrary image has been picked in the arbitrary InteractiveViewer, The given coordinates is position where the plane was picked. More... | |
Specific helper methods to manage arbitrary orientation and its representation | |
virtual double | getTranslationInVolume () |
Get the current translation relatively to the volume 0.0 means that the center of the slice is at the first border of the image volume 1.0 means that the center of the slice is. More... | |
void | getImageCenterAndTranslationVectorInParent (double C_P[4], double Z_P[4]) |
Compute the current position of the image center and the z direction vector in the parent coordinate system (i.e. More... | |
void | getImageCenterInParent (double[4]) |
get the current position of the image center in the parent coordinate system i.e the image frame (given as homogeneous point, hence 4D) More... | |
Public Member Functions inherited from camitk::SingleImageComponent | |
Slice::SliceOrientation | getSliceOrientation () |
get the slice orientation More... | |
virtual void | setSelected (const bool, const bool) override |
rewritten to synchronize everyone More... | |
SingleImageComponent (Component *parentComponent, Slice::SliceOrientation, const QString &name, vtkSmartPointer< vtkWindowLevelLookupTable > lut) | |
Constructor. More... | |
virtual void | singleImageSelected (const bool) |
new method used to call the Component set selected More... | |
~SingleImageComponent () override=default | |
Destructor. More... | |
Public Member Functions inherited from camitk::Component | |
Component (QString file, QString name, Representation rep=NO_REPRESENTATION) | |
Component constructor for top-level component (please use the other constructor for sub-level components). More... | |
Component (Component *parentComponent, const QString &name, Representation rep=NO_REPRESENTATION) | |
Component constructor for a Component that is a child of another Component You should not use this constructor for a top-level component. More... | |
~Component () override | |
default destructor. More... | |
Representation | getRepresentation () const |
return the type of representation concretely implemented by this Component in the InteractiveViewer. More... | |
bool | isTopLevel () const |
return true if this component is a top-level component More... | |
Component * | getParentComponent () |
get the parent component More... | |
Component * | getTopLevelComponent () |
get the top-level component More... | |
InterfaceFrame * | getFrame () |
get the associated frame More... | |
virtual void | setModified (bool modified=true) |
set the modified flag More... | |
virtual bool | getModified () const |
set the modified flag More... | |
virtual void | setVisibility (QString, bool) |
set the visibility inside the viewer of the given name (the viewer needs to be a registered viewer) More... | |
virtual bool | getVisibility (QString) const |
get the visibility inside the viewer of the given name More... | |
virtual void | refresh () |
refresh all the viewer that are currently displaying this Component At the end the InterfaceNode modification flag is reset. More... | |
virtual bool | isSelected () const |
Check if this data component is selected. More... | |
const QString | getFileName () const |
get the file name where the data have to be stored/were stored More... | |
void | setFileName (const QString &) |
set the file name where the data have to be stored More... | |
bool | event (QEvent *e) override |
Overriden from QObject, this one is only intercepting signal for dynamic property changed (see constructor). More... | |
QMenu * | getActionMenu () |
Get a QMenu that contains all the action that can be applied to this component. More... | |
QStringList | getHierarchy () const override |
bool | isInstanceOf (QString className) const override |
Assert that a Component instance really inherits from a given className. More... | |
unsigned int | getNumberOfPropertyWidget () override |
get the number of alternative property widgets More... | |
QWidget * | getPropertyWidgetAt (unsigned int) override |
Get the ith alternative property widget. More... | |
QObject * | getPropertyObject () override |
Get the property object that could be understood by PropertyEditor. More... | |
void | updateProperty (QString name, QVariant value) override |
update property: if you this method, do not forget to call the superclass method for the property not managed locally in order to properly manage all inherited dynamic properties. More... | |
void | setIndexOfPropertyExplorerTab (unsigned int index) override final |
Set the index of the tab in the ProperlyExplorer to select for display. More... | |
unsigned int | getIndexOfPropertyExplorerTab () override |
Get the index of the tab in the ProperlyExplorer to select for display. More... | |
Q_INVOKABLE camitk::Property * | getProperty (QString name) override |
Get a Property given its name. More... | |
bool | addProperty (Property *) override |
Add a new CamiTK property to the component. More... | |
void | removeChild (InterfaceNode *) override |
remove a child node. More... | |
void | setParent (InterfaceNode *) override |
set the parent Component. More... | |
bool | doubleClicked () override |
This method is called each time the InterfaceNode is double clicked by the user. More... | |
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 More... | |
void | attachChild (InterfaceNode *) override |
add a child Component (but leave its parent unchanged) More... | |
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) More... | |
QString | getName () const override |
get the name to be displayed More... | |
void | setName (const QString &) override |
set the name to be displayed More... | |
const ComponentList & | getChildren () override |
get the list of the InterfaceNode children (sub items in the hierarchy) More... | |
InterfaceNode * | getParent () override |
get the parent Component More... | |
QPixmap | getIcon () override |
Get the pixmap that will be displayed for this node. More... | |
void | setNodeModified (bool) override final |
Set up the node modification flag. More... | |
bool | getNodeModified () const override |
Get the current modification flag. More... | |
bool | inItalic () const override |
A component name is not displayed in italic by default. More... | |
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) More... | |
const QString | getLabel () const override |
void | setLabel (QString newName) override |
set the string used to display the label, do the same as setName More... | |
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 vtkSmartPointer< vtkProp > | getProp (const QString ¶m) override |
Return the vtkProp (actors, volumes and annotations) corresponding to the given name. More... | |
unsigned int | getNumberOfProp () const override |
return the number of additional prop More... | |
vtkSmartPointer< vtkProp > | getProp (unsigned int index) override |
return an additional prop by its index More... | |
bool | addProp (const QString &name, vtkSmartPointer< vtkProp > prop) override |
insert an additional prop, defining it by its name (default visibility = false) More... | |
bool | removeProp (const QString &name) override |
remove a given additional prop. More... | |
void | pointPicked (vtkIdType, bool) override |
an inherited class can redefine this method something specific. More... | |
void | cellPicked (vtkIdType, bool) override |
an inherited class can redefine this method something specific. More... | |
void | getBounds (double *bounds) override |
compute the object's bounding box [xmin,xmax, ymin,ymax, zmin,zmax], see Component.cpp More... | |
double | getBoundingRadius () override |
compute the object's bounding sphere radius, More... | |
delegate4 (myGeometry, setPointPosition, const unsigned int, const double, const double, const double) delegateAndInvokeChildren1(myGeometry | |
const const RenderingModes InterfaceGeometry::RenderingModes | getRenderingModes () const override |
see Component.cpp More... | |
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]) override |
see Component.cpp More... | |
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 |
delegate1 (myGeometry, setLinesAsTubes, bool) delegate1(myGeometry | |
delegateConstGet0 (mySlice, getImageData, vtkSmartPointer< vtkImageData >) delegate1(mySlice | |
vtkSmartPointer< vtkImageData > | delegateConstGet0 (mySlice, get2DImageActor, vtkSmartPointer< vtkImageActor >) delegateConstGet0(mySlice |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > | delegateConstGet0 (mySlice, getPickPlaneActor, vtkSmartPointer< vtkActor >) delegateGet0(mySlice |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > | delegate3 (mySlice, pixelPicked, double, double, double) delegate0(mySlice |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane | delegate1 (mySlice, setSlice, int) delegate3(mySlice |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double | delegateConstGet0 (mySlice, getNumberOfColors, int) delegate3(mySlice |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double double | delegate1 (mySlice, setImageWorldTransform, vtkSmartPointer< vtkTransform >) delegate1(mySlice |
const QString & | getFrameName () const override |
Hierarchy accessors / Modifyers. More... | |
delegate1 (myFrame, setFrameName, QString) InterfaceFrame *getParentFrame() const override | |
void | setParentFrame (InterfaceFrame *frame, bool keepTransform=true) override |
Set the parent frame and update or not its transform during the parent transition. More... | |
const QVector< InterfaceFrame * > & | getChildrenFrame () const override |
Get the Children Frames from the current Frame in the Frame Hierarchy The Frame hierarchy may not be the same as the Component Hierarchy. More... | |
const vtkSmartPointer< vtkTransform > | getTransformFromWorld () const override |
Transforms accessors / Modifyers. More... | |
const vtkSmartPointer< vtkTransform > | getTransform () const override |
Get the transformation with respect to the parent frame. More... | |
const vtkSmartPointer< vtkTransform > | getTransformFromFrame (InterfaceFrame *frame) const override |
Compute the transformation from any other frame to the current frame. More... | |
delegate1 (myFrame, setTransform, vtkSmartPointer< vtkTransform >) delegate0(myFrame | |
resetTransform | delegate3 (myFrame, translate, double, double, double) delegate3(myFrame |
resetTransform double | delegate3 (myFrame, rotateVTK, double, double, double) delegate3(myFrame |
resetTransform double double | delegate3 (myFrame, setTransformTranslationVTK, double, double, double) delegate3(myFrame |
resetTransform double double double | delegate3 (myFrame, setTransformRotationVTK, double, double, double) vtkSmartPointer< vtkAxesActor > getFrameAxisActor() override |
delegate2 (myFrame, setFrameVisibility, QString, bool) bool getFrameVisibility(QString) const override | |
delegate1 (myFrame, addFrameChild, InterfaceFrame *) delegate1(myFrame | |
Public Member Functions inherited from camitk::InterfaceProperty | |
~InterfaceProperty ()=default | |
empty virtual destructor, to avoid memory leak More... | |
Public Member Functions inherited from camitk::InterfaceNode | |
virtual | ~InterfaceNode ()=default |
empty virtual destructor, to avoid memory leak More... | |
Public Member Functions inherited from camitk::InterfaceGeometry | |
virtual | ~InterfaceGeometry ()=default |
empty virtual destructor, to avoid memory leak More... | |
virtual vtkSmartPointer< vtkPointSet > | getPointSet ()=0 |
virtual void | setPointSet (vtkSmartPointer< vtkPointSet >)=0 |
set the low-level data set. More... | |
virtual void | setPointData (vtkSmartPointer< vtkDataArray >)=0 |
set the point data (may contains a lookup table). More... | |
virtual void | setMeshWorldTransform (vtkSmartPointer< vtkTransform >)=0 |
set the transformation for 3D representation More... | |
virtual vtkSmartPointer< vtkAlgorithmOutput > | getDataPort () const =0 |
get the custom algorithm pipeline input. More... | |
virtual void | setDataConnection (vtkSmartPointer< vtkAlgorithmOutput >)=0 |
Set/reset the connection for the InterfaceGeometry internal algorithm. More... | |
virtual void | setTexture (vtkSmartPointer< vtkTexture >)=0 |
Set a texture to this object. More... | |
virtual vtkSmartPointer< vtkActor > | getActor (const RenderingModes)=0 |
Return the actor for the representation mode, NULL if the actor doesn't exist. More... | |
virtual void | setPointPosition (const unsigned int orderNumber, const double x, const double y, const double z)=0 |
set a given point position More... | |
virtual void | setRenderingModes (const RenderingModes)=0 |
virtual void | setEnhancedModes (const EnhancedModes)=0 |
set the enhanced mode More... | |
virtual const EnhancedModes | getEnhancedModes () const =0 |
get the current enhanced mode More... | |
virtual void | setActorColor (const RenderingModes, double *color)=0 |
Set the color of given representation modes. More... | |
virtual void | setActorColor (const RenderingModes, const double, const double, const double)=0 |
Set the color of given representation modes. More... | |
virtual void | getActorColor (const RenderingModes mode, double *color)=0 |
Get the color of given representation modes in the second parameter. More... | |
virtual void | setColor (const double, const double, const double)=0 |
Set an (r,g,b) color to all representation modes, without changing the opacity. More... | |
virtual void | setColor (const double, const double, const double, const double)=0 |
Set an (r,g,b,a) color to all representation modes. More... | |
virtual void | setActorOpacity (const RenderingModes, const double)=0 |
Set the opacity of this representation modes. WARNING color field (surfaceColor, ...) are not modified! More... | |
virtual double | getActorOpacity (const RenderingModes) const =0 |
Return the opacity of a given renderng mode. More... | |
virtual void | setOpacity (const double)=0 |
Set the opacity of this object. WARNING color field (surfaceColor, ...) are not modified! More... | |
virtual void | setMapperScalarRange (double min, double max)=0 |
Set the mapper scalar range. More... | |
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). More... | |
virtual void | setLinesAsTubes (bool)=0 |
set the lines as tubes (works only for vtkDataSet representation that contains lines) More... | |
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. More... | |
virtual vtkSmartPointer< vtkImageActor > | get3DImageActor () const =0 |
Return the vtkImageActor (vtkProp) representing a slice to be displayed in 3D viewers. More... | |
virtual vtkSmartPointer< vtkImageData > | getImageData () const =0 |
Returns the encapsultaed data structure: the image as a vtkImageData. More... | |
virtual int | getNumberOfColors () const =0 |
Return the number of colors in the images. More... | |
virtual vtkSmartPointer< vtkActor > | getPickPlaneActor () const =0 |
Return the vtkActor used to pick pixels in the slices. More... | |
virtual vtkSmartPointer< vtkActor > | getPixelActor ()=0 |
Return the vtkActor used to pick pixels in the slices. More... | |
virtual void | setArbitraryTransform (vtkSmartPointer< vtkTransform >)=0 |
Set the pointer to the image transformation. More... | |
virtual void | setImageWorldTransform (vtkSmartPointer< vtkTransform >)=0 |
set the transformation for 3D image representation More... | |
virtual void | setOriginalVolume (vtkSmartPointer< vtkImageData >)=0 |
set the original volume image data (the source vtkImageData before any reslice) and refresh the vtk pipeline More... | |
virtual void | setPixelRealPosition (double, double, double)=0 |
move the pixel selection green indicator (pixelActor) to the given real position More... | |
virtual void | updatePickPlane ()=0 |
update the position of the plane surrounding the currently selected slice More... | |
virtual | ~InterfaceBitMap ()=default |
virtual destructor More... | |
Public Member Functions inherited from camitk::InterfaceFrame | |
virtual void | addFrameChild (InterfaceFrame *frame)=0 |
Add the input frame as a child of the current frame. More... | |
virtual vtkSmartPointer< vtkAxesActor > | getFrameAxisActor ()=0 |
Gives the 3D representation of the frame (based on xyz arrows) More... | |
virtual bool | getFrameVisibility (QString) const =0 |
Get the Component Frame visibility for a given viewer. More... | |
virtual void | removeFrameChild (InterfaceFrame *frame)=0 |
Remove the input frame as a child of the current frame. More... | |
virtual void | setFrameVisibility (QString, bool)=0 |
Set the Component Frame visible for a given viewer. More... | |
virtual | ~InterfaceFrame ()=default |
empty virtual destructor, to avoid memory leak More... | |
virtual void | setFrameName (QString name)=0 |
Set the Frame Unique identifyer. More... | |
virtual InterfaceFrame * | getParentFrame () const =0 |
Get the parent frame. More... | |
Private Member Functions | |
bool | checkCenter (vtkSmartPointer< vtkMatrix4x4 >) |
check if the center of the frame transformed usin the given matrix stays inside the initial image volume More... | |
bool | pointInsideVolume (QVector3D) |
return true only in point is inside the image volume More... | |
void | updateTranslationExtremity () |
update cPlus and cMinus More... | |
Static Private Member Functions | |
Math utility methods | |
TODO have this in a specific class? variadic method that enables clear expression of the transformation composition chain Instead of using vtkMatrix4x4::Multiply4x4 multiple times, these methods allow for expressing all transformation in one line. For instance: vtkSmartPointer<vtkMatrix4x4> intermediate1 = vtkSmartPointer<vtkMatrix4x4>::New();
vtkMatrix4x4::Multiply4x4(a, b, intermediate1);
vtkSmartPointer<vtkMatrix4x4> intermediate2 = vtkSmartPointer<vtkMatrix4x4>::New();
vtkMatrix4x4::Multiply4x4(intermediate1, c, intermediate2);
vtkSmartPointer<vtkMatrix4x4> resultingTransformation = vtkSmartPointer<vtkMatrix4x4>::New();
vtkMatrix4x4::Multiply4x4(intermediate2, d, resultingTransformation);
You can just write: vtkSmartPointer<vtkMatrix4x4> resultingTransformation = Multiply4x4(a, b, c, d);
which result in a much clearer/cleaner way of expressing the transformation composition | |
template<typename T > | |
static vtkSmartPointer< vtkMatrix4x4 > | Multiply4x4 (T, T) |
template<typename T , typename... Args> | |
static vtkSmartPointer< vtkMatrix4x4 > | Multiply4x4 (T a, T b, Args... args) |
static bool | linePlaneIntersectionPoint (QVector3D, QVector3D, QVector3D, QVector3D, QVector3D &) |
compute the intersection between a line and a plane More... | |
static float | roundTo4Decimals (float) |
Round a float to 4 digits This is a great tool to avoid precision errors (when rotation/cos/sin are around, precision is difficult to maintain) More... | |
static QVector3D | roundTo4Decimals (QVector3D) |
Round a QVector3D to 4 digits This is a great tool to avoid precision errors (when rotation/cos/sin are around, precision is difficult to maintain) More... | |
Private Attributes | |
QVector3D | cMinus_P |
point of intersection of the line passing at the center of the image in the z- direction, i.e. More... | |
QVector3D | cPlus_P |
point of intersection of the line passing at the center of the image in the z+ direction, i.e. More... | |
int * | dimensions |
dimension of the whole image (kept here for simplifying code) More... | |
double * | spacing |
spacing of the image (kept here for simplifying code) More... | |
Additional Inherited Members | |
Public Types inherited from camitk::Component | |
enum | Representation { GEOMETRY, SLICE, NO_REPRESENTATION } |
Public Types inherited from camitk::InterfaceGeometry | |
enum | EnhancedMode { Normal = 0x0, Hidden = 0x1, Shaded = 0x2, Highlighted = 0x4 } |
enum | GlyphType { NoGlyph = 0x0, Sphere = 0x1 } |
enum | RenderingMode { None = 0x0, Surface = 0x1, Wireframe = 0x2, Points = 0x4 } |
Public Attributes inherited from camitk::Component | |
setPointSet | |
vtkSmartPointer< vtkPointSet > | getDataPort |
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > | getActor |
vtkSmartPointer< vtkPointSet > vtkSmartPointer< vtkAlgorithmOutput > | vtkSmartPointer< vtkActor > |
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 |
setMeshWorldTransform | |
setOriginalVolume | |
vtkSmartPointer< vtkImageData > | get3DImageActor |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > | getPixelActor |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane | setSlice |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane | double |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double | setPixelRealPosition |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double | double |
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double double | setArbitraryTransform |
resetTransform | rotate |
resetTransform | double |
resetTransform double | setTransformTranslation |
resetTransform double | double |
resetTransform double double | setTransformRotation |
resetTransform double double | double |
removeFrameChild | |
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). More... | |
Protected Attributes inherited from camitk::SingleImageComponent | |
vtkSmartPointer< vtkWindowLevelLookupTable > | lut |
Look up table used for this image. More... | |
Slice::SliceOrientation | sliceOrientation |
orientation of the single image component More... | |
Protected Attributes inherited from camitk::Component | |
ComponentList | childrenComponent |
The explorer sub items. More... | |
unsigned int | indexOfPropertyExplorerTab |
The PropertyExplorer tab index to select once refreshed. More... | |
bool | isSelectedFlag |
tells if this particular Component is selected or not More... | |
bool | modifiedFlag |
the modification flag (could be extended to manage a undo/redo list) More... | |
QString | myFileName |
the file name from which the Component is loaded More... | |
InterfaceFrame * | myFrame |
myFrame is the pose (position and orientation) of the Component in the world frame, the Component delegates all InterfaceFrame activity to myFrame (delegation pattern) More... | |
InterfaceGeometry * | myGeometry |
myGeometry is the 3d representation of this Component, the Component delegates all InterfaceGeometry activity to myGeometry (delegation pattern) More... | |
InterfaceNode * | myParentNode |
who is the boss? The Component! More... | |
InterfaceBitMap * | mySlice |
mySlice is the slice representation of this data component, the Component delegates all InterfaceBitMap activity to mySlice (delegation pattern) More... | |
Properties inherited from camitk::SingleImageComponent | |
bool | viewSliceIn3D |
Set Axial, Coronal and Sagittal Slices visible in 3D. More... | |
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.
Some frame management methods (inherited from InterfaceFrame) are overriden in order to manage the arbitrary orientation.
These method should allow the displacement 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.
The initial position of the frame has therefore no rotation and a translation equals to (0, 0, dim[2]*spacing[2])
Note:
camitk::ArbitrarySingleImageComponent::ArbitrarySingleImageComponent | ( | Component * | parentComponent, |
const QString & | name, | ||
vtkSmartPointer< vtkWindowLevelLookupTable > | lut | ||
) |
Constructor.
|
overridedefault |
Destructor.
|
private |
check if the center of the frame transformed usin the given matrix stays inside the initial image volume
void camitk::ArbitrarySingleImageComponent::getImageCenterAndTranslationVectorInParent | ( | double | C_P[4], |
double | Z_P[4] | ||
) |
Compute the current position of the image center and the z direction vector in the parent coordinate system (i.e.
image frame)
References CAMITK_WARNING.
Referenced by MeshProjection::getNewPlane().
void camitk::ArbitrarySingleImageComponent::getImageCenterInParent | ( | double | C_P[4] | ) |
get the current position of the image center in the parent coordinate system i.e the image frame (given as homogeneous point, hence 4D)
References CAMITK_WARNING.
Referenced by MeshProjection::updateCuttingPlane().
|
overridevirtual |
always return 100 (as getSlice() gives a percentage value, the max number of slices is 100.
Reimplemented from camitk::Component.
References a.
|
overridevirtual |
return the slice as the percentage of translation (between 0 and 100)
Reimplemented from camitk::Component.
|
virtual |
Get the current translation relatively to the volume 0.0 means that the center of the slice is at the first border of the image volume 1.0 means that the center of the slice is.
Referenced by AnglesAndTranslationAction::update(), and AnglesAndTranslationAction::updateTranslation().
|
staticprivate |
compute the intersection between a line and a plane
lineVector | a vector in the direction of the line |
linePoint | a point on the line |
planeNormal | a normal vector to the plane |
planePoint | a point on the plane |
intersection | (output) the point of intersection between the line and the plane |
|
staticprivate |
|
staticprivate |
|
overridevirtual |
This method is called when the arbitrary image has been picked in the arbitrary InteractiveViewer, The given coordinates is position where the plane was picked.
We need to use the
Reimplemented from camitk::SingleImageComponent.
|
private |
return true only in point is inside the image volume
|
finaloverridevirtual |
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
Reimplemented from camitk::SingleImageComponent.
Referenced by AnglesAndTranslationAction::resetTransform().
|
overridevirtual |
rotate on the slide center (TODO implement this method)
Reimplemented from camitk::SingleImageComponent.
|
overridevirtual |
rotate on the slide center using the VTK way (TODO implement this method)
Reimplemented from camitk::SingleImageComponent.
|
staticprivate |
Round a float to 4 digits This is a great tool to avoid precision errors (when rotation/cos/sin are around, precision is difficult to maintain)
|
staticprivate |
Round a QVector3D to 4 digits This is a great tool to avoid precision errors (when rotation/cos/sin are around, precision is difficult to maintain)
|
overridevirtual |
rewritten because the setSlice(int) method is overriden (compiler needs this)
Implements camitk::InterfaceBitMap.
|
overridevirtual |
set slice as a percentage on the z axis translation
Implements camitk::InterfaceBitMap.
|
overridevirtual |
Set the current input frame position (according to its parent Frame)
transform | The 3D transform of the current frame to its parent. |
Reimplemented from camitk::SingleImageComponent.
|
finaloverridevirtual |
rotate of the given angles around the center of the frame/arbitrary slice
Reimplemented from camitk::SingleImageComponent.
Referenced by AnglesAndTranslationAction::event().
|
overridevirtual |
set rotation the VTK way (TODO implement this method)
Reimplemented from camitk::SingleImageComponent.
|
finaloverridevirtual |
set the arbitrary slice translation inside the volume between 0 and 1 (first two parameters are ignored)
Reimplemented from camitk::SingleImageComponent.
Referenced by AnglesAndTranslationAction::event().
|
overridevirtual |
set translation the VTK way (TODO implement this method)
Reimplemented from camitk::SingleImageComponent.
|
overridevirtual |
translation along the z axis (TODO implement this method)
Reimplemented from camitk::SingleImageComponent.
|
private |
update cPlus and cMinus
|
private |
point of intersection of the line passing at the center of the image in the z- direction, i.e.
(0,0,-1) in the local frame. This is the extreme possible point to translate C in the z- direction This position is expressed in the parent frame coordinate system (the image coordinate system) This is required to compute getTranslationInVolume and set new translation
|
private |
point of intersection of the line passing at the center of the image in the z+ direction, i.e.
(0,0,1) in the local frame. This is the extreme possible point to translate C in the z+ direction. This position is expressed in the parent frame coordinate system (the image coordinate system) (required to compute getTranslationInVolume and set new translation)
|
private |
dimension of the whole image (kept here for simplifying code)
|
private |
spacing of the image (kept here for simplifying code)