Computer Assited Medical Intervention Tool Kit  version 5.0
PMLComponent Class Reference

This class manages a physical model (PML) CamiTK component. More...

#include <PMLComponent.h>

+ Inheritance diagram for PMLComponent:
+ Collaboration diagram for PMLComponent:

Public Member Functions

virtual QPixmap getIcon ()
 get the pixmap for physical model component More...
 
 PMLComponent (const QString &file)
 Construct the PML component directly from the .pml xml file. More...
 
 PMLComponent (PhysicalModel *p, const QString &originalFile)
 Create the PML component directly from the PhysicalModel (also have to give the original pml filename) More...
 
virtual void setSelected (const bool b, const bool recursive=true)
 Update the selection flag (this method is overridden in order to show the default modeling action when the component is selected for the first time). More...
 
virtual void updateProperty (QString name, QVariant value)
 update top-level properties and synchronize the physical model values More...
 
virtual ~PMLComponent ()
 destructor More...
 
Specific methods for PML component

Return the Physical Model object associated to the component

PhysicalModelgetPhysicalModel ()
 
vtkIdType getPointId (const Atom *a)
 get the point Id from the corresponding atom, this is the opposite of pml->getAtom(id) More...
 
void init ()
 initialize information (properties) and geometric representation from the physical model More...
 
Selection methods
void selectCell (Cell *cell, bool showAtomGlyph)
 Select the given cell in the 3D structure. More...
 
void selectAtom (const Atom *atom)
 Select the given atom in the 3D structure. More...
 
void selectSC (StructuralComponent *sc, bool showAtomGlyph)
 Select the given structural component in the 3D structure by highlighting all its atoms and cells. More...
 
void selectMC (MultiComponent *mc, bool showAtomGlyph)
 Select the given multi component in the 3D structure by highlighting all its structural components. More...
 
void unselectItems ()
 Unselect all the SC, MC, Atoms and Cells previously selected on the 3D structure. More...
 
void updateSelection ()
 Update the POINTS and CELLS selection for the whole 3D structure by telling the corresponding extractors new vtkIds have been added to the selection lists. More...
 
void refreshDisplay ()
 Refresh the display of the component according to the selected 3D items by the user. More...
 
virtual int addSelection (const QString &name, int fieldType, int contentType, vtkSmartPointer< vtkAbstractArray > array, camitk::MeshSelectionModel::InsertionPolicy policy=camitk::MeshSelectionModel::REPLACE)
 Add a selection (inherited from MeshComponent inorder to show a glyph on selected atoms). More...
 
- Public Member Functions inherited from camitk::MeshComponent
void cellPicked (vtkIdType cellId, bool) override
 reimplemented to save the last pick point id More...
 
unsigned int getNumberOfPropertyWidget () override
 there is more than one property widgets (to view as tabs in the property explorer) More...
 
vtkIdType getPickedCellId ()
 get the last pick point id, More...
 
vtkIdType getPickedPointId ()
 get the last pick point id, More...
 
QWidget * getPropertyWidgetAt (unsigned int i=0) override
 the proprety widgets are: default property widget, selection view and data view More...
 
 MeshComponent (Component *parentComponent, vtkSmartPointer< vtkPointSet > aPointSet, const QString &name)
 Creates a MeshComponent as a sub component of another Component using a vtkPointSet (and instantiate its 3D representation). More...
 
 MeshComponent (const QString &file)
 Creates a top-level MeshComponent from a file. More...
 
 MeshComponent (vtkSmartPointer< vtkPointSet > aPointSet, const QString &name)
 Creates a top-level MeshComponent from a vtkPointSet (and instantiate its 3D representation). More...
 
void pointPicked (vtkIdType pointId, bool) override
 reimplemented to save the last pick point id More...
 
 ~MeshComponent () override
 Destructor. More...
 
QList< vtkSmartPointer< vtkSelectionNode > > & getSelections ()
 Get the selection list. More...
 
unsigned int getNumberOfSelections () const
 Get the number of selections. More...
 
vtkSmartPointer< vtkSelection > getActiveSelection () const
 Get active selections. More...
 
vtkSmartPointer< vtkSelectionNode > getSelection (const QString &name) const
 Get a selection from its name. More...
 
vtkSmartPointer< vtkSelectionNode > getSelectionAt (unsigned int index) const
 Get a selection from its index in the list. More...
 
int getSelectionIndex (const QString &name) const
 Get the selection index in the list from its name. More...
 
virtual int addToSelectedSelection (int fieldType, int contentType, vtkSmartPointer< vtkAbstractArray > array, MeshSelectionModel::InsertionPolicy policy=MeshSelectionModel::REPLACE)
 Add a selection to the currently selected selection. More...
 
int getNumberOfDataArray (int fieldFlag=POINTS|CELLS)
 Get the number of data arrays of a given type without taking the specific representation into account. More...
 
vtkSmartPointer< vtkDataArray > getDataArray (FieldType fieldType, const QString &arrayName)
 Get the data array of specified field type and name. More...
 
vtkSmartPointer< vtkDataArray > getDataArray (FieldType fieldType, int index)
 Get the data array of specified field type and index. More...
 
void addDataArray (FieldType fieldType, const QString &name, vtkSmartPointer< vtkDataArray > data)
 Add a data array. More...
 
void removeDataArray (FieldType fieldType, const QString &name)
 Remove a data array. More...
 
void addPointData (const QString &name, vtkSmartPointer< vtkDataArray > data)
 Add a data array linked to the points. More...
 
void addCellData (const QString &name, vtkSmartPointer< vtkDataArray > data)
 Add a data array linked to the cells. More...
 
MeshDataModelgetDataModel ()
 Returns the current data view model (model as the M in Qt MVC design pattern) More...
 
vtkSmartPointer< vtkFieldData > getFieldData (FieldType)
 Returns the corresponding vtkFieldData (point data, cell data or field data) More...
 
bool getDataRepresentationVisibility (FieldType, const QString &)
 get the current visibility status of a given data (identified with its name) of a given field type More...
 
void setDataRepresentationVisibility (FieldType, const QString &, bool)
 set the visibility of a given representation for a given data (identified with its name) of a given field type (create it if needed) More...
 
void setDataRepresentationOff (int dataType=SCALARS|VECTORS|TENSORS)
 hide all the data representation of a given data type (hide all by default) More...
 
void setVectorRepresentation (VectorRepresentation)
 set the current mode of visualisation of 3D data vector (default is ARROW) 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...
 
ComponentgetParentComponent ()
 get the parent component More...
 
ComponentgetTopLevelComponent ()
 get the top-level component More...
 
InterfaceFramegetFrame ()
 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...
 
QObject * getPropertyObject () override
 Get the property object that could be understood by PropertyEditor. 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::PropertygetProperty (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 ComponentListgetChildren () override
 get the list of the InterfaceNode children (sub items in the hierarchy) More...
 
InterfaceNodegetParent () override
 get the parent Component 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 &param) 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 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
 
vtkSmartPointer< vtkImageData > vtkSmartPointer< vtkImageActor > vtkSmartPointer< vtkActor > updatePickPlane double double vtkSmartPointer< vtkTransform > int getNumberOfSlices () const override
 see Component.cpp More...
 
int getSlice () const override
 see Component.cpp More...
 
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 pixelPicked (double, double, double)=0
 This method is called when the associated plane has been picked in the InteractiveViewer, the given coordinates is position where the plane was picked. 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 setSlice (double x, double y, double z)=0
 Set the slice corresponding to the given image coordinates (in RAI convention) More...
 
virtual void setSlice (int s)=0
 Set the current slice index. 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 InterfaceFramegetParentFrame () const =0
 Get the parent frame. More...
 
virtual void setTransform (vtkSmartPointer< vtkTransform > transform)=0
 Set the current input frame position (according to its parent Frame) More...
 
virtual void resetTransform ()=0
 Set the current frame transform to identity. More...
 
virtual void translate (double x, double y, double z)=0
 Apply a translation relative to the current position. More...
 
virtual void rotate (double aroundX, double aroundY, double aroundZ)=0
 Apply rotations relative to the current position in the alphabetical order (X, Y, Z). More...
 
virtual void rotateVTK (double aroundX, double aroundY, double aroundZ)=0
 Apply a rotation relative to the current position, using the VTK rotation order (Z, X, Y) More...
 
virtual void setTransformTranslation (double x, double y, double z)=0
 Set the translation part of the 3D space transformation of the current frame. More...
 
virtual void setTransformTranslationVTK (double x, double y, double z)=0
 Set the translation part of the 3D space transformation of the current frame. More...
 
virtual void setTransformRotation (double aroundX, double aroundY, double aroundZ)=0
 Set the rotation part of the 3D space transformation of the current frame. More...
 
virtual void setTransformRotationVTK (double aroundX, double aroundY, double aroundZ)=0
 Set the rotation part of the 3D space transformation of the current frame. More...
 

Protected Member Functions

virtual void initDynamicProperties ()
 create and initialize dynamic properties using the global xml attributes from the PhysicalModel object More...
 
- Protected Member Functions inherited from camitk::MeshComponent
void initData ()
 initialize data More...
 
void initDynamicProperties ()
 create and initialize dynamic properties More...
 
void initRepresentation (vtkSmartPointer< vtkPointSet >)
 
void initSelection ()
 initialize selections More...
 

Private Attributes

bool neverSelected
 the first selection should trigger the pml exporer action (default action) More...
 
PhysicalModelphysicalModel
 The library pml object that uses pmlschema to read the pml information for the xml file. More...
 

Static Private Attributes

static QPixmap * myPixmap = nullptr
 the PMLComponent icon More...
 

3D structure creation

vtkSmartPointer< vtkPoints > thePoints
 The 3D VTK cloud points of the atoms read. More...
 
vtkSmartPointer< vtkUnstructuredGrid > mainGrid
 The 3D grid containing all the cells of the PML. More...
 
std::AtomPointIdMap atomPointIdMap
 the Atom / vtkPoint Id map More...
 
void create3DStructure ()
 Create the 3D VTK structure representing the mesh. More...
 
void parseMultiComponent (MultiComponent *mc)
 Create the 3D structure of the given MultiComponent and its children (recursively). More...
 
vtkSmartPointer< vtkCell > cellToVTK (Cell *cell)
 Create a 3D vtkCell corresponding to a structural component's cell. More...
 
vtkSmartPointer< vtkPolyVertex > atomSCToVTK (StructuralComponent *sc)
 Create a 3D vtkPolyVertex of a structural component which ONLY contains atoms ref. More...
 

3D structure element selection

vtkSmartPointer< vtkIdTypeArray > selectedAtomIdArray
 The vtkIdTypeArray for atom selection (contains all the id array that corresponds to a selected atom) More...
 
vtkSmartPointer< vtkSelection > selectedAtomSelection
 The vtkSelection for atom selection. More...
 
QMap< QString, vtkSmartPointer< vtkIdTypeArray > > scCellIdArrayMap
 The association structural component <-> vtkIdTypeArray for Cells selection. More...
 
QMap< QString, vtkSmartPointer< vtkSelection > > scCellSelectionMap
 The association structural component <-> vtkSelection for Cells selection. More...
 
void createCellSelectionVTKPipeline (const StructuralComponent *sc)
 Create a new VTK selection pipeline (selection, extractor, mapper, actor) for a given SC if it does not allready exists. More...
 
void createAtomSelectionVTKPipeline ()
 Create the VTK selection pipeline (selection, extractor, mapper, actor) needed to represent the selection of atoms. More...
 

Additional Inherited Members

- Public Types inherited from camitk::MeshComponent
enum  DataType { SCALARS = 1, VECTORS = 2, TENSORS = 4, OTHERS = 8 }
 
enum  FieldType { POINTS = 1, CELLS = 2, MESH = 4 }
 
enum  SpecificRepresentation {
  VECTOR_3D, NORM, FIRST_COMPONENT, SECOND_COMPONENT,
  THIRD_COMPONENT
}
 
enum  VectorRepresentation { HEDGE_HOG, ARROW, UNSCALED_ARROW }
 
- 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 }
 
- Static Public Member Functions inherited from camitk::MeshComponent
static const QMap< int, QString > & getFieldNames ()
 static method that returns the FieldType enum as a QString More...
 
static const QString getFieldName (const FieldType)
 helper method that returns the field type as a string More...
 
static const QMap< int, QString > & getDataTypeNames ()
 static method that returns the DataType enum as a QString More...
 
static const QString getDataTypeName (const DataType)
 Helper method that returns the datatype as a string. More...
 
static const DataType getDataType (vtkSmartPointer< vtkDataArray >)
 Returns the data type of a data array depending on the number of components of the given data array: More...
 
static const QString getDataTypeName (vtkSmartPointer< vtkDataArray >)
 Returns the data type string of an data array depending on the number of components of the given data array: If the number of components is different than 1, 3 and 9 (the managed type SCALARS, VECTORS, TENSORS) then the method returns a string equals to the number of components. More...
 
static const QString getSpecificRepresentationName (const SpecificRepresentation)
 Helper method that returns the SpecificRepresentation as a QString. More...
 
- 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 Slots inherited from camitk::MeshComponent
void changeSelectedSelection (const QItemSelection &selected, const QItemSelection &deselected)
 called when the selection is modified More...
 
void displayTypePolicyChanged (int)
 called when the datatype for vector data is modified (refresh the data model) More...
 
void removeSelectedData ()
 remove the selected selection More...
 
void removeSelectedSelections ()
 remove the selected selection More...
 
void vectorRepresentationPolicyChanged (int)
 called when the representation for vector data is modified (remove all actors and refresh the data model) 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...
 
InterfaceFramemyFrame
 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...
 
InterfaceGeometrymyGeometry
 myGeometry is the 3d representation of this Component, the Component delegates all InterfaceGeometry activity to myGeometry (delegation pattern) More...
 
InterfaceNodemyParentNode
 who is the boss? The Component! More...
 
InterfaceBitMapmySlice
 mySlice is the slice representation of this data component, the Component delegates all InterfaceBitMap activity to mySlice (delegation pattern) More...
 

Detailed Description

This class manages a physical model (PML) CamiTK component.

This class inherits from camitk::MeshComponent. It creates the 3D VTK structures corresponding to the PML structures (atoms, cells, structural components), allows to quickly selecting PML element and highlight them in the 3D structure (using vtkSelection extractors) and display usefull PML properties (given as XML attributes in the PML files) as

See also
camitk::Property.
Note
There are several vtkSelection extractor (2 per structural component in the PML structure). One for the POINTS selection (the atoms) and one for the CELLS (the PML Cells). They are configured to display the corresponding selection in the Structural Component color property (if provided).
The action PMLExploreAction uses this selection methods to allows selecting PML structure elements throught a simple tree view widget.

Constructor & Destructor Documentation

◆ PMLComponent() [1/2]

PMLComponent::PMLComponent ( const QString &  file)

Construct the PML component directly from the .pml xml file.

This method may throw an AbortException if a problem occurs.

Parameters
fileThe input .pml xml file to build the physical model from.

References init(), and PMLAbortException::what().

+ Here is the call graph for this function:

◆ PMLComponent() [2/2]

PMLComponent::PMLComponent ( PhysicalModel p,
const QString &  originalFile 
)

Create the PML component directly from the PhysicalModel (also have to give the original pml filename)

Parameters
pthe physicalModel (already instantiated and build)
originalFilethe filename from which p was build

References init().

+ Here is the call graph for this function:

◆ ~PMLComponent()

PMLComponent::~PMLComponent ( )
virtual

destructor

References atomPointIdMap, and physicalModel.

Member Function Documentation

◆ addSelection()

int PMLComponent::addSelection ( const QString &  name,
int  fieldType,
int  contentType,
vtkSmartPointer< vtkAbstractArray >  array,
camitk::MeshSelectionModel::InsertionPolicy  policy = camitk::MeshSelectionModel::REPLACE 
)
virtual

Add a selection (inherited from MeshComponent inorder to show a glyph on selected atoms).

If the name of the selection already exists, the data of the existing selection are updated according to the SelectionPolicy flag.

Parameters
namename of the selection
fieldTypefield type of the selection (one of vtkSelectionNode::SelectionField)
contentTypecontent type (one of vtkSelectionNode::SelectionContent)
arrayarray of the selection
policypolicy to update the existing selection
Returns
the index of the added selection in the selection list

Reimplemented from camitk::MeshComponent.

References camitk::MeshComponent::getSelectionIndex(), camitk::policy(), selectedAtomIdArray, and updateSelection().

+ Here is the call graph for this function:

◆ atomSCToVTK()

vtkSmartPointer< vtkPolyVertex > PMLComponent::atomSCToVTK ( StructuralComponent sc)
private

Create a 3D vtkPolyVertex of a structural component which ONLY contains atoms ref.

Parameters
scThe PML structural component object that only contains atoms references.
Returns
a pointor to the vtkCell structure.
Note
this method may be removed as soon as we change the PML XSD schema.
thePoints must not be NULL before calling this method (we create the vtkPolyVertex using points references)

References a, StructuralComponent::getNumberOfStructures(), getPointId(), and StructuralComponent::getStructure().

Referenced by parseMultiComponent().

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

◆ cellToVTK()

vtkSmartPointer< vtkCell > PMLComponent::cellToVTK ( Cell cell)
private

Create a 3D vtkCell corresponding to a structural component's cell.

Parameters
cellThe PML Cell, created by the library pml
Returns
A pointor to the vtkCell structure.
Note
thePoints must not be NULL before calling this method (we create the vtkCell using points references)

References a, StructuralComponent::getNumberOfStructures(), getPointId(), StructuralComponent::getStructure(), Structure::getType(), StructureProperties::HEXAHEDRON, StructureProperties::LINE, StructureProperties::POLY_LINE, StructureProperties::POLY_VERTEX, StructureProperties::PYRAMID, StructureProperties::QUAD, StructureProperties::TETRAHEDRON, StructureProperties::TRIANGLE, and StructureProperties::WEDGE.

Referenced by parseMultiComponent().

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

◆ create3DStructure()

void PMLComponent::create3DStructure ( )
private

Create the 3D VTK structure representing the mesh.

References a, atomPointIdMap, camitk::MeshComponent::initRepresentation(), mainGrid, parseMultiComponent(), scCellIdArrayMap, scCellSelectionMap, camitk::Component::setVisibility(), and thePoints.

Referenced by init().

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

◆ createAtomSelectionVTKPipeline()

void PMLComponent::createAtomSelectionVTKPipeline ( )
private

Create the VTK selection pipeline (selection, extractor, mapper, actor) needed to represent the selection of atoms.

References camitk::Component::addProp(), camitk::Component::getBoundingRadius(), camitk::Component::getDataPort, camitk::Component::removeProp(), selectedAtomIdArray, selectedAtomSelection, and camitk::Component::vtkSmartPointer< vtkActor >.

Referenced by init().

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

◆ createCellSelectionVTKPipeline()

void PMLComponent::createCellSelectionVTKPipeline ( const StructuralComponent sc)
private

Create a new VTK selection pipeline (selection, extractor, mapper, actor) for a given SC if it does not allready exists.

A VTK selection pipeline is needed to represent the given structural component There is one VTK selection pipeline per SC.

Parameters
scthe input structural component to create the vtk extract selection from.

References camitk::Component::addProp(), StructuralComponent::getColor(), camitk::Component::getDataPort, Component::getName(), camitk::Component::removeProp(), scCellIdArrayMap, scCellSelectionMap, and camitk::Component::vtkSmartPointer< vtkActor >.

Referenced by selectCell().

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

◆ getIcon()

QPixmap PMLComponent::getIcon ( )
virtual

get the pixmap for physical model component

Reimplemented from camitk::MeshComponent.

References myPixmap.

Referenced by PMLExplorerWidget::buildPhysicalModelTreeWidgetItem().

+ Here is the caller graph for this function:

◆ getPhysicalModel()

PhysicalModel * PMLComponent::getPhysicalModel ( )

References physicalModel.

Referenced by CreateSC::apply(), CreateSC::computeBoundsOfCellIds(), CreateSC::computeBoundsOfPointIds(), CreateSC::getWidget(), PMLExplorerWidget::init(), PMLComponentExtension::save(), Arrows::update(), and Colors::update().

+ Here is the caller graph for this function:

◆ getPointId()

vtkIdType PMLComponent::getPointId ( const Atom a)
inline

get the point Id from the corresponding atom, this is the opposite of pml->getAtom(id)

References a, and atomPointIdMap.

Referenced by atomSCToVTK(), cellToVTK(), PMLExplorerWidget::createAtomPropertyList(), selectAtom(), Arrows::update(), and Colors::update().

+ Here is the caller graph for this function:

◆ init()

void PMLComponent::init ( )

initialize information (properties) and geometric representation from the physical model

References create3DStructure(), createAtomSelectionVTKPipeline(), and neverSelected.

Referenced by CreateSC::apply(), and PMLComponent().

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

◆ initDynamicProperties()

void PMLComponent::initDynamicProperties ( )
protectedvirtual

create and initialize dynamic properties using the global xml attributes from the PhysicalModel object

References camitk::Component::addProperty(), camitk::Component::setName(), and camitk::Property::setReadOnly().

+ Here is the call graph for this function:

◆ parseMultiComponent()

void PMLComponent::parseMultiComponent ( MultiComponent mc)
private

Create the 3D structure of the given MultiComponent and its children (recursively).

Parameters
mcThe MultiComponent to build a 3D structure from.

References atomSCToVTK(), CAMITK_ERROR, cellToVTK(), StructuralComponent::getCell(), MultiComponent::getNumberOfSubComponents(), MultiComponent::getSubComponent(), mainGrid, and Cell::setIndex().

Referenced by create3DStructure().

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

◆ refreshDisplay()

void PMLComponent::refreshDisplay ( )

Refresh the display of the component according to the selected 3D items by the user.

It also shades the component so that selection can be visible. Warning: this methods contains a forced/active refresh (breaking CamiTK programming guidelines) DO NOT CALL this method from a component, this method SHOULD ONLY be called from an action Raison d'être : this method force the vtk pipeline updates (needed when, for example, the points moved) and then refresh the 3D viewer. The later is against CamiTK programming guidelines. It is written here (in the component) because it is a helper method for actions that would need to refresh the mesh.

References camitk::InterfaceGeometry::getPointSet(), camitk::Component::myGeometry, camitk::Component::refresh(), and camitk::InterfaceGeometry::setEnhancedModes().

Referenced by PMLExplorerWidget::propertyChanged(), PMLExplorerWidget::selectItems(), and MMLDisplay::updateDisplay().

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

◆ selectAtom()

void PMLComponent::selectAtom ( const Atom atom)

Select the given atom in the 3D structure.

Parameters
atomThe atom to highlight

References getPointId(), and selectedAtomIdArray.

Referenced by selectCell(), PMLExplorerWidget::selectItems(), and selectSC().

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

◆ selectCell()

void PMLComponent::selectCell ( Cell cell,
bool  showAtomGlyph 
)

Select the given cell in the 3D structure.

Parameters
cellThe cell to highlight
showAtomGlyphif true show the atom glyph

References a, CAMITK_ERROR, createCellSelectionVTKPipeline(), Structure::getIndex(), Component::getName(), StructuralComponent::getNumberOfStructures(), Cell::getParentSC(), StructuralComponent::getStructure(), scCellIdArrayMap, and selectAtom().

Referenced by PMLExplorerWidget::selectItems(), and selectSC().

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

◆ selectMC()

void PMLComponent::selectMC ( MultiComponent mc,
bool  showAtomGlyph 
)

Select the given multi component in the 3D structure by highlighting all its structural components.

Parameters
mcThe multi component to highlight
showAtomGlyphif true show the atom glyph

References MultiComponent::getNumberOfSubComponents(), MultiComponent::getSubComponent(), and selectSC().

Referenced by PMLExplorerWidget::selectItems().

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

◆ selectSC()

void PMLComponent::selectSC ( StructuralComponent sc,
bool  showAtomGlyph 
)

Select the given structural component in the 3D structure by highlighting all its atoms and cells.

Parameters
scThe structural component to highlight
showAtomGlyphif true show the atom glyph

References a, StructuralComponent::ATOMS, StructuralComponent::CELLS, StructuralComponent::composedBy(), StructuralComponent::getNumberOfStructures(), StructuralComponent::getStructure(), selectAtom(), and selectCell().

Referenced by PMLExplorerWidget::selectItems(), and selectMC().

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

◆ setSelected()

void PMLComponent::setSelected ( const bool  b,
const bool  recursive = true 
)
virtual

Update the selection flag (this method is overridden in order to show the default modeling action when the component is selected for the first time).

Parameters
bthe value of the flag (true means "is selected")
recursiveif true (default), also updates the children Component selection flags.

Reimplemented from camitk::Component.

References camitk::Action::getQAction(), neverSelected, and camitk::Component::setSelected().

+ Here is the call graph for this function:

◆ unselectItems()

void PMLComponent::unselectItems ( )

Unselect all the SC, MC, Atoms and Cells previously selected on the 3D structure.

References scCellIdArrayMap, and selectedAtomIdArray.

Referenced by PMLExplorerWidget::selectItems().

+ Here is the caller graph for this function:

◆ updateProperty()

void PMLComponent::updateProperty ( QString  name,
QVariant  value 
)
virtual

update top-level properties and synchronize the physical model values

Reimplemented from camitk::MeshComponent.

References Properties::isAField(), and Properties::set().

+ Here is the call graph for this function:

◆ updateSelection()

void PMLComponent::updateSelection ( )

Update the POINTS and CELLS selection for the whole 3D structure by telling the corresponding extractors new vtkIds have been added to the selection lists.

References scCellIdArrayMap, scCellSelectionMap, selectedAtomIdArray, and selectedAtomSelection.

Referenced by addSelection(), and PMLExplorerWidget::selectItems().

+ Here is the caller graph for this function:

Member Data Documentation

◆ atomPointIdMap

std::AtomPointIdMap PMLComponent::atomPointIdMap
private

the Atom / vtkPoint Id map

Referenced by create3DStructure(), getPointId(), and ~PMLComponent().

◆ mainGrid

vtkSmartPointer<vtkUnstructuredGrid> PMLComponent::mainGrid
private

The 3D grid containing all the cells of the PML.

Referenced by create3DStructure(), and parseMultiComponent().

◆ myPixmap

QPixmap * PMLComponent::myPixmap = nullptr
staticprivate

the PMLComponent icon

Referenced by getIcon().

◆ neverSelected

bool PMLComponent::neverSelected
private

the first selection should trigger the pml exporer action (default action)

Referenced by init(), and setSelected().

◆ physicalModel

PhysicalModel* PMLComponent::physicalModel
private

The library pml object that uses pmlschema to read the pml information for the xml file.

Referenced by getPhysicalModel(), and ~PMLComponent().

◆ scCellIdArrayMap

QMap<QString, vtkSmartPointer<vtkIdTypeArray> > PMLComponent::scCellIdArrayMap
private

The association structural component <-> vtkIdTypeArray for Cells selection.

Structural component name is the key. scCellIdArrayMap(sc->getName().c_str()) contains the id of all the cells selected in the StructuralComponent sc

Referenced by create3DStructure(), createCellSelectionVTKPipeline(), selectCell(), unselectItems(), and updateSelection().

◆ scCellSelectionMap

QMap<QString, vtkSmartPointer<vtkSelection> > PMLComponent::scCellSelectionMap
private

The association structural component <-> vtkSelection for Cells selection.

Structural component name is the key. scCellSelectionMap(sc->getName().c_str()) manages the vtkSelection of the StructuralComponent sc

Referenced by create3DStructure(), createCellSelectionVTKPipeline(), and updateSelection().

◆ selectedAtomIdArray

vtkSmartPointer<vtkIdTypeArray> PMLComponent::selectedAtomIdArray
private

The vtkIdTypeArray for atom selection (contains all the id array that corresponds to a selected atom)

Referenced by addSelection(), createAtomSelectionVTKPipeline(), selectAtom(), unselectItems(), and updateSelection().

◆ selectedAtomSelection

vtkSmartPointer<vtkSelection> PMLComponent::selectedAtomSelection
private

The vtkSelection for atom selection.

Referenced by createAtomSelectionVTKPipeline(), and updateSelection().

◆ thePoints

vtkSmartPointer<vtkPoints> PMLComponent::thePoints
private

The 3D VTK cloud points of the atoms read.

Referenced by create3DStructure().


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