Computer Assited Medical Intervention Tool Kit
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Public Slots | Private Types | Private Member Functions | List of all members
camitk::InteractiveViewer Class Reference

InteractiveViewer is used to view 3D objects and slices (anything that provides either a InterfaceBitMap or a InterfaceGeometry). More...

#include <InteractiveViewer.h>

+ Inheritance diagram for camitk::InteractiveViewer:

Public Slots

void actorPicked (vtkSmartPointer< vtkPicker >)
 Slot activated when something was picked in the 3D interactor.
void sliderChanged (int)
 Slot called when the InteractiveViewer slider has been changed.
void toggleCopyright (bool)
 show/hide the copyright in 3D
void xAngleChanged (double angle)
 Slot called when the InteractiveViewer x angle update has been changed.
void yAngleChanged (double angle)
 Slot called when the InteractiveViewer y angle update has been changed.
void zAngleChanged (double angle)
 Slot called when the InteractiveViewer z angle update has been changed.

Public Member Functions

Misc
void setColorScale (bool)
bool getColorScale () const
 get the current value of the color scale property.
void setColorScaleMinMax (double m, double M)
 set the min and max values.
void setColorScaleTitle (QString t)
 set the color scale title.
void initPicking (PickingMode)
 Init the picker with a given picking mode.
void getBoundsOfSelected (double bound[6])
 Compute the bounding box of the selected elements [xmin,xmax, ymin,ymax, zmin,zmax].
void getBounds (double bound[6])
 Compute the bounding box of all displayed Component.
void setSideFrameVisible (bool)
 set the slice viewer side bar+screenshot button visibility
- Public Member Functions inherited from camitk::Viewer
virtual QMenu * getMenu ()
 get the viewer menu (returns NULL by default, i.e. there are no default edit menu)
virtual QObject * getPropertyObject ()
 get the viewer property object (returns NULL by default, i.e. there are no property to edit)
virtual QToolBar * getToolBar ()
 get the viewer toolbar (returns NULL by default, i.e. there are no default toolbar)
virtual QWidget * getWidget (QWidget *parent=NULL)=0
 get the viewer widget.
virtual unsigned int numberOfViewedComponent ()=0
 returns the number of Component that are displayed by this viewer
virtual void refresh (Viewer *whoIsAsking=NULL)=0
 refresh the view (can be interesting to know which other viewer is calling this)
virtual void refreshInterfaceNode (Component *comp)
 Update the whole tree of the representation of the Component.
 Viewer (QString name)
 default constructor
virtual ~Viewer ()
 default destructor

Protected Slots

All the slots called by the menu actions
void renderingActorsChanged ()
void highlightModeChanged (QAction *selectedAction)
void cameraOrientationChanged (QAction *selectedAction)
void viewControlModeChanged (QAction *)
void backgroundColor ()
void toggleAxes (bool)
void pickingModeChanged (QAction *)
void rightClick ()
void setLabel (bool)
 if true currently selected Components label will have their label on (shown)
void setGlyph (bool)

Protected Attributes

Picking management
std::vector< Component * > pickedComponent
 list of Component that are currently picked, correctly displayed in the InteractiveViewer, but for speed optimization that are not yet selected in the explorer.
PickingMode pickingMode
 Current picking mode, NO_PICKING be default.
bool pickingEffectIsSelecting
 picking effect while mouse button is kept pressed is selecting (depends on the selection state of the first component picked)
bool pickingEffectUpdated
 was the picking effect updated (it has to be updated with the first picking for a given button down session)

Private Types

enum  HighlightMode { OFF, SELECTION, SELECTION_ONLY }
 describes the current mode of display. More...
enum  PickingMode { PIXEL_PICKING, POINT_PICKING, CELL_PICKING, NO_PICKING }
 Different kind of picking must be available: pixel in slice, a point, a cell, ... More...

Private Member Functions

 Q_ENUMS (HighlightMode RendererWidget::ControlMode RendererWidget::CameraOrientation) Q_PROPERTY(HighlightMode highlightMode READ getHighlightMode WRITE setHighlightMode) Q_PROPERTY(QColor backgroundColor READ getBackgroundColor WRITE setBackgroundColor) Q_PROPERTY(bool gradientBackground READ getGradientBackground WRITE setGradientBackground) Q_PROPERTY(bool linesAsTubes READ getLinesAsTubes WRITE setLinesAsTubes) Q_PROPERTY(bool backfaceCulling READ getBackfaceCulling WRITE setBackfaceCulling) Q_PROPERTY(double pointSize READ getPointSize WRITE setPointSize) public
Inherited from Viewer
virtual unsigned int numberOfViewedComponent ()
virtual void refresh (Viewer *whoIsAsking=NULL)
 Refresh the display.
virtual QWidget * getWidget (QWidget *parent)
 get the InteractiveViewer widget (QTreeWidget).
virtual QObject * getPropertyObject ()
 get the InteractiveViewer propertyObject (only non-null for GEOMETRY_VIEWER)
virtual QMenu * getMenu ()
 get the explorer menu
virtual QToolBar * getToolBar ()
 get the viewer toolbar

General/Singleton

static QMap< QString,
InteractiveViewer * > 
viewers
 the map containing all the InteractiveViewer instances
static QString defaultNames [5] = {QString("3DViewer"), QString("axialViewer"), QString("coronalViewer"), QString("sagittalViewer"), QString("arbitraryViewer")}
 the QString array containing all InteractiveViewer instance default names
virtual ~InteractiveViewer ()
 Destructor.
QString getName () const
 get the scene name
static InteractiveViewergetNewViewer (QString, ViewerType type)
 Use this method to create a new custom instance of this class.
static InteractiveViewergetViewer (QString)
 get a viewer by its name (return NULL if no instance has the given name, use getNewViewer to create one viewer)
static InteractiveViewerget3DViewer ()
 get the 3D viewer default InteractiveViewer (provided for convenience, equivalent to getViewer("3DViewer")
static InteractiveViewergetAxialViewer ()
 get the axial default InteractiveViewer (provided for convenience, equivalent to getViewer("axialViewer")
static InteractiveViewergetCoronalViewer ()
 get the coronal default InteractiveViewer (provided for convenience, equivalent to getViewer("coronalViewer")
static InteractiveViewergetSagittalViewer ()
 get the sagittal default InteractiveViewer (provided for convenience, equivalent to getViewer("sagittalViewer")
static InteractiveViewergetArbitraryViewer ()
 get the arbitrary default InteractiveViewer (provided for convenience, equivalent to getViewer("arbitraryViewer")
 InteractiveViewer (QString &name, ViewerType type)
 Construtor.

Refresh/screenshot

void refreshRenderer ()
 just refresh the renderer
void resetCamera ()
 Reset scene camera.
void setActiveCamera (QString cameraName)
 Set the active virtual camera.
vtkSmartPointer< vtkCamera > getCamera (QString cameraName="default")
 get a camera by its name, creates one if it does not exist already.
void screenshot (QString)
 call this method to take a screenshot using the given filename (the extension must be a supported format extension, see class RendererWindow)
void screenshot ()
 call this method to take a screenshot in various format and write the resulting image to a file

Viewing/Interaction Property

void setBackfaceCulling (bool)
 set the backface culling mode (default is true).
void setLinesAsTubes (bool tubes)
 Update the visualization of lines (for all the InterfaceGeometry of the scene).
virtual void setGradientBackground (bool)
 set gradient background on/off
bool getGradientBackground () const
 get the current background gradient mode.
virtual void setBackgroundColor (QColor)
 set background color
QColor getBackgroundColor () const
 get the background color
bool getBackfaceCulling () const
 get the backface current culling mode.
void keyPressEvent (QKeyEvent *e)
 Handle keyboard events in the scene, let to the parent widget if not processed here. This method is a friend of class InteractiveViewerFrame.
bool getLinesAsTubes () const
 get the boolean indicating if the lines are currently set to be displayed as tubes.
void setPointSize (double size)
 update the visualization of points (for all object3D in the scene).
double getPointSize () const
 get the current point size value
virtual void setHighlightMode (InteractiveViewer::HighlightMode)
 Set the current highlighting mode.
InteractiveViewer::HighlightMode getHighlightMode () const
 Return the current highlighting mode.
RendererWidgetgetRendererWidget ()
 return interactiveViewer RendererWidget

Display properties

Properties that can be managed without the knowledge/intervention of the InterfaceGeometry:

  • pointSize (the user preferred value is stored here, the access to the actor needs InterfaceGeometry knowledge)
  • interpolation (toggle, this is a boolean state, kept by each vtkImageActor interpolate property)

Properties that need to be managed by the InterfaceGeometry itself (not boolean state managed somewhere by vtk, not integer/float value manage in InteractiveViewer as a user-preference)

  • linesAsTubes (the InterfaceGeometry needs to add/manage a filter before the mapper)
ViewerType myType
 type of InteractiveViewer (display slice or geometry)
bool linesAsTubes
 Are lines currently displayed as tubes (the actors have to add a vtkTubeFilter between the source and the mapper)
HighlightMode highlightMode
 keep the value of the hightlight mode
QMultiMap< Component
*, vtkSmartPointer< vtkProp > > 
actorMap
 the map containing all the actors in the InteractiveViewer
unsigned int displayedTopLevelComponents
 number of top-level component that are currently displayed
QMap< QString,
vtkSmartPointerCamera
cameraMap
 all the available camera
void initSettings ()
 initialize the property object and state using the user settings (user preferences system files .config/.ini)
void toggleInterpolation ()
 for InterfaceBitMap, toggle the interpolation mode (intern method, not a property because it can only be modified by the keyboard interaction)
void updateSelectionDisplay (Component *)
 Update the display of the given Component, according to its selection state and the current HighlightMode.
void addActor (Component *, vtkSmartPointer< vtkProp >)
 add the given actor of the given Component to the renderer and insert it in the map
void removeAllActors (Component *)
 remove all the given Component actors from the renderer and delete comp from the map

Widget/Action management

RendererWidgetrendererWidget
SliderSpinBoxWidgetsliceSlider
 Slider used to control the slice index in a InteractiveViewer.
InteractiveViewerFrameframe
 the InteractiveViewer frame
QFrame * sideFrame
 the right side frame (this is where the slider and screenshot buttons are shown)
QMenu * viewerMenu
 the QMenu for the InteractiveViewer
QToolBar * viewerToolBar
 the QToolBar for the InteractiveViewer
QAction * screenshotAction
 Screenshot.
QMenu * renderingMenu
 Rendering.
QAction * surfaceAction
QAction * wireframeAction
QAction * pointsAction
QAction * colorAction
QAction * glyphAction
QAction * highlightSelectionAction
 display mode
QAction * highlightSelectionOnlyAction
QAction * highlightOffAction
QAction * controlModeTrackballAction
 to change the camera control mode
QAction * controlModeJoystickAction
QAction * cameraOrientationRightDownAction
 to change the axes view mode
QAction * cameraOrientationLeftUpAction
QAction * cameraOrientationRightUpAction
QAction * backgroundColorAction
 background color
QAction * toggleAxesAction
 button allows to display the Axes in the InteractiveViewer
QAction * toggleCopyrightAction
 button to remove the copyright
QAction * toggleLabelAction
 button allows to display the labels of the object3D
QAction * toggleLinesAsTubesAction
 button allows to display the lines as tubes (the lines are to be in vtkPolyData)
QAction * toggleBackfaceCullingAction
 back face culling
QAction * pickPointAction
 action of the picking menu
QAction * pickCellAction
void initActions ()
 init all the actions (called only once in the getWidget() method)
void updateActions ()
 update the viewer menu depending on the selection,...
void InteractiveViewerFrame::keyPressEvent (QKeyEvent *e)
 the InteractiveViewerFrame keyPressEvent is a good friend of InteractiveViewer

Help Whats This Utility

QString whatsThis
bool oddWhatsThis
 are we currently in a odd table line
void initWhatsThis ()
 initialize the what's this html string
void startWhatsThisSection (const QString &title="")
 start a table (section) in the what's this message
void endWhatsThisSection ()
 end a table (section) in the what's this message
void addWhatsThisItem (const QString &key, const QString &description)
 add an item (row) in the the what's this message (to describe a shortcut)

Additional Inherited Members

- Signals inherited from camitk::Viewer
void selectionChanged ()
 this signal is emitted when the current selection was changed by the viewer
- Protected Member Functions inherited from camitk::Viewer
void clearSelection ()
 clear the selection
void selectionChanged (ComponentList &compSet)
 The selection has changed to the given ComponentList.
void selectionChanged (Component *comp)
 the selection has changed to be just one comp

Detailed Description

InteractiveViewer is used to view 3D objects and slices (anything that provides either a InterfaceBitMap or a InterfaceGeometry).

It contains a renderer (class RendererWidget) that combines VTK and QT. The RendererWidget instance manage all the display at the VTK level. InteractiveViewer delegates all pure VTK level stuff to the renderer. All things that needs InterfaceBitMap/InterfaceGeometry interaction/knowledge/access are manage at this level. The keyboard events are all managed in InteractiveViewer as well. Keyboard/Mouse interactions: check "what's this?" on the scene 3D to get all interaction shortcuts.

There are five default InteractiveViewer "singleton" instances named:

InteractiveViewer class is completely independant from MainWindow application skeleton (and please keep it that way!)

InteractiveViewer manages a list of cameras. Each camera has a name. Use getCamera(QString) to create a new camera, or get the default camera and setActiveCamera(QString) to change the active camera. The default camera is called "default".

InteractiveViewer manages picking session. A picking session starts when the control key is pressed and the left mouse button is clicked and ends when the mouse button is released. A picking session is a nice/quick way to do a lot of picking by simply moving the mouse, without the need to click for each picking. At the start of a picking session, the picking action is determined: it is either selection or unselection. If one of the first picked components was already selected, then the user wants to unselect, therefore picking action is "unselection", and all subsequently calls to pickPoint(..) or pickCell(..) will use pickingIsSelecting=false (2nd parameter of the method). If the first picked component was not selected, then the picking session is going to select any picked component.

See Also
InterfaceGeometry::pickPoint,InterfaceGeometry::pickCell

The following help is for InteractiveViewer/RendererWidget developers, please read if you want/need to change anything in one of this two class. It should help you in your coding decisions (hopefully!).

  1. Keyboard shortcut policy: for keyboard shortcuts do not use the Ctrl key modifier for letters/digit (e.g Alt-P is ok, Ctrl+Arrows is ok, but Ctrl-P is not). Ctrl-Letter/Digit shortcuts should only be used for the application shortcuts.
  1. That's it for now!

Member Enumeration Documentation

describes the current mode of display.

It is usefull to change the way the currently selected Components look compared to the unselected ones. In the default mode a Component is not highlighted, not shaded and not hidden.

Enumerator:
OFF 

both selected and non-selected Components are in default mode

SELECTION 

the selected Components are in default mode, the non-selected Components are shaded

SELECTION_ONLY 

the selected Components are in default mode, the non-selected are hidden

Different kind of picking must be available: pixel in slice, a point, a cell, ...

So far, only pixel picking is implemented.

Enumerator:
PIXEL_PICKING 

pick a pixel on a Slice

POINT_PICKING 

pick a point in the VTK representation of an Geometry

CELL_PICKING 

pick a cell in the VTK representation of an Geometry

NO_PICKING 

no picking possible

Constructor & Destructor Documentation

camitk::InteractiveViewer::~InteractiveViewer ( )
privatevirtual

Destructor.

References frame, getName(), viewerMenu, viewers, and viewerToolBar.

camitk::InteractiveViewer::InteractiveViewer ( QString &  name,
ViewerType  type 
)
protected

Construtor.

Parameters
namethe name of the scene is mandatory, it is used as an identifier (e.g. in MedicalImageViewer)
typetype of the InteractiveViewer, depending on which it will behave as slice viewer, i.e. with no rotation interactions are possible, or 3D viewer

References cameraMap, displayedTopLevelComponents, frame, camitk::RendererWidget::getActiveCamera(), initPicking(), initSettings(), myType, NO_PICKING, pickingEffectIsSelecting, PIXEL_PICKING, rendererWidget, sliceSlider, camitk::RendererWidget::TRACKBALL_2D, viewerMenu, and viewerToolBar.

Referenced by getNewViewer().

Member Function Documentation

void camitk::InteractiveViewer::actorPicked ( vtkSmartPointer< vtkPicker >  picker)
slot

Slot activated when something was picked in the 3D interactor.

Process the picker accordingly to the current pickingMode state. It is connected to the RendererWidget actorPicked signal

References actorMap, CELL_PICKING, camitk::Component::cellPicked(), camitk::Component::getName(), NO_PICKING, pickingEffectIsSelecting, pickingEffectUpdated, pickingMode, PIXEL_PICKING, camitk::Component::pixelPicked(), POINT_PICKING, camitk::Component::pointPicked(), refresh(), camitk::Viewer::selectionChanged(), and camitk::Application::showStatusBarMessage().

Referenced by initPicking().

void camitk::InteractiveViewer::addActor ( Component comp,
vtkSmartPointer< vtkProp >  a 
)
protected

add the given actor of the given Component to the renderer and insert it in the map

References actorMap, camitk::RendererWidget::addProp(), and rendererWidget.

Referenced by refresh().

void camitk::InteractiveViewer::addWhatsThisItem ( const QString &  key,
const QString &  description 
)
protected

add an item (row) in the the what's this message (to describe a shortcut)

References oddWhatsThis, and whatsThis.

Referenced by getWidget().

void camitk::InteractiveViewer::backgroundColor ( )
protectedslot
void camitk::InteractiveViewer::cameraOrientationChanged ( QAction *  selectedAction)
protectedslot
void camitk::InteractiveViewer::endWhatsThisSection ( )
protected

end a table (section) in the what's this message

References whatsThis.

Referenced by getWidget().

InteractiveViewer * camitk::InteractiveViewer::get3DViewer ( )
staticprivate
InteractiveViewer * camitk::InteractiveViewer::getArbitraryViewer ( )
staticprivate

get the arbitrary default InteractiveViewer (provided for convenience, equivalent to getViewer("arbitraryViewer")

References defaultNames, and getViewer().

Referenced by camitk::MedicalImageViewer::getWidget(), and camitk::SingleImageComponent::initRepresentation().

InteractiveViewer * camitk::InteractiveViewer::getAxialViewer ( )
staticprivate

get the axial default InteractiveViewer (provided for convenience, equivalent to getViewer("axialViewer")

References defaultNames, and getViewer().

Referenced by camitk::MedicalImageViewer::getWidget(), camitk::SingleImageComponent::initRepresentation(), and camitk::MedicalImageViewer::refresh().

bool camitk::InteractiveViewer::getBackfaceCulling ( ) const

get the backface current culling mode.

References camitk::RendererWidget::getBackfaceCulling(), and rendererWidget.

Referenced by initActions().

QColor camitk::InteractiveViewer::getBackgroundColor ( ) const

get the background color

References camitk::RendererWidget::getBackgroundColor(), and rendererWidget.

Referenced by backgroundColor().

void camitk::InteractiveViewer::getBounds ( double  bound[6])

Compute the bounding box of all displayed Component.

References camitk::RendererWidget::computeVisiblePropBounds(), and rendererWidget.

void camitk::InteractiveViewer::getBoundsOfSelected ( double  bound[6])

Compute the bounding box of the selected elements [xmin,xmax, ymin,ymax, zmin,zmax].

References actorMap, camitk::Component::getBounds(), and camitk::Component::isSelected().

Referenced by keyPressEvent().

vtkSmartPointer< vtkCamera > camitk::InteractiveViewer::getCamera ( QString  cameraName = "default")
private

get a camera by its name, creates one if it does not exist already.

This method does not activate the given camera, please use setActiveCamera for this.

References cameraMap.

bool camitk::InteractiveViewer::getColorScale ( ) const

get the current value of the color scale property.

References camitk::RendererWidget::getColorScale(), and rendererWidget.

InteractiveViewer * camitk::InteractiveViewer::getCoronalViewer ( )
staticprivate

get the coronal default InteractiveViewer (provided for convenience, equivalent to getViewer("coronalViewer")

References defaultNames, and getViewer().

Referenced by camitk::MedicalImageViewer::getWidget(), camitk::SingleImageComponent::initRepresentation(), and camitk::MedicalImageViewer::refresh().

bool camitk::InteractiveViewer::getGradientBackground ( ) const

get the current background gradient mode.

References camitk::RendererWidget::getGradientBackground(), and rendererWidget.

InteractiveViewer::HighlightMode camitk::InteractiveViewer::getHighlightMode ( ) const

Return the current highlighting mode.

References highlightMode.

bool camitk::InteractiveViewer::getLinesAsTubes ( ) const

get the boolean indicating if the lines are currently set to be displayed as tubes.

References linesAsTubes.

Referenced by initActions().

QMenu * camitk::InteractiveViewer::getMenu ( )
privatevirtual
QString camitk::InteractiveViewer::getName ( ) const
private

get the scene name

Referenced by keyPressEvent(), and ~InteractiveViewer().

InteractiveViewer * camitk::InteractiveViewer::getNewViewer ( QString  name,
ViewerType  type 
)
staticprivate

Use this method to create a new custom instance of this class.

Of course you can create as many InteractiveViewer instance as you like, but if you try to create a InteractiveViewer with a name that match one of the default InteractiveViewer name, getNewViewer(..) automatically will return the corresponding default InteractiveViewer instance.

References InteractiveViewer(), and viewers.

Referenced by getViewer().

double camitk::InteractiveViewer::getPointSize ( ) const

get the current point size value

References camitk::RendererWidget::getPointSize(), and rendererWidget.

QObject * camitk::InteractiveViewer::getPropertyObject ( )
privatevirtual

get the InteractiveViewer propertyObject (only non-null for GEOMETRY_VIEWER)

References myType.

RendererWidget* camitk::InteractiveViewer::getRendererWidget ( )
inline

return interactiveViewer RendererWidget

InteractiveViewer * camitk::InteractiveViewer::getSagittalViewer ( )
staticprivate

get the sagittal default InteractiveViewer (provided for convenience, equivalent to getViewer("sagittalViewer")

References defaultNames, and getViewer().

Referenced by camitk::MedicalImageViewer::getWidget(), camitk::SingleImageComponent::initRepresentation(), and camitk::MedicalImageViewer::refresh().

QToolBar * camitk::InteractiveViewer::getToolBar ( )
privatevirtual
InteractiveViewer * camitk::InteractiveViewer::getViewer ( QString  name)
staticprivate

get a viewer by its name (return NULL if no instance has the given name, use getNewViewer to create one viewer)

References defaultNames, getNewViewer(), and viewers.

Referenced by get3DViewer(), getArbitraryViewer(), getAxialViewer(), getCoronalViewer(), and getSagittalViewer().

QWidget * camitk::InteractiveViewer::getWidget ( QWidget *  parent)
privatevirtual
void camitk::InteractiveViewer::highlightModeChanged ( QAction *  selectedAction)
protectedslot
void camitk::InteractiveViewer::initActions ( )
protected
void camitk::InteractiveViewer::initPicking ( PickingMode  pickingMode)
void camitk::InteractiveViewer::initSettings ( )
protected
void camitk::InteractiveViewer::initWhatsThis ( )
protected

initialize the what's this html string

References whatsThis.

Referenced by getWidget().

void camitk::InteractiveViewer::keyPressEvent ( QKeyEvent *  e)

Handle keyboard events in the scene, let to the parent widget if not processed here. This method is a friend of class InteractiveViewerFrame.

NOTE:

PLEASE, PLEASE, PLEASE, PLEASE, PLEASE, PLEASE

DO NOT FORGET TO ADD A NEW LINE IN THE "WHAT'S THIS" MESSAGE (see constructor)

The call to methods startWhatsThisSection and addWhatsThisItem is a good comment line to add here (see below!). Please use the same order here than in the what's this help (by category, then by function, then by key name)

(PLEASE)

startWhatsThisSection("Keyboard bindings (upper or lower case)");

startWhatsThisSection();

startWhatsThisSection("Other Shortcuts");

NOTE:

PLEASE, PLEASE, PLEASE, PLEASE, PLEASE, PLEASE?

DO NOT FORGET TO ADD A NEW LINE IN THE "WHAT'S THIS" MESSAGE (see constructor)

The call to methods startWhatsThisSection and addWhatsThisItem is a good comment line to add here (see below!). Please use the same order here than in the what's this help (by category, then by function, then by key name)

(PLEASE)

References actorMap, camitk::SliderSpinBoxWidget::addPageStep(), camitk::SliderSpinBoxWidget::addSingleStep(), CAMITK_INFO, camitk::Viewer::clearSelection(), camitk::RendererWidget::computeVisiblePropBounds(), camitk::Component::GEOMETRY, camitk::RendererWidget::getBackfaceCulling(), getBoundsOfSelected(), camitk::RendererWidget::getCameraSettings(), camitk::RendererWidget::getColorScale(), camitk::RendererWidget::getLightFollowCamera(), getName(), camitk::Component::getRenderingModes(), camitk::Component::getRepresentation(), camitk::Application::getSelectedComponents(), camitk::Component::getVisibility(), camitk::RendererWidget::JOYSTICK, myType, camitk::RendererWidget::pick(), camitk::InterfaceGeometry::Points, camitk::RendererWidget::refresh(), refresh(), rendererWidget, resetCamera(), camitk::RendererWidget::rotateCamera(), screenshot(), camitk::RendererWidget::setBackfaceCulling(), setColorScale(), camitk::RendererWidget::setControlMode(), camitk::RendererWidget::setLightFollowCamera(), camitk::Component::setRenderingModes(), sliceSlider, camitk::SliderSpinBoxWidget::subPageStep(), camitk::SliderSpinBoxWidget::subSingleStep(), camitk::InterfaceGeometry::Surface, toggleAxesAction, toggleInterpolation(), toggleLabelAction, camitk::RendererWidget::toogle3DRedBlue(), camitk::RendererWidget::TRACKBALL, whatsThis, and camitk::InterfaceGeometry::Wireframe.

Referenced by camitk::InteractiveViewerFrame::keyPressEvent().

unsigned int camitk::InteractiveViewer::numberOfViewedComponent ( )
privatevirtual

returns the number of Component that are displayed by this viewer

References actorMap.

void camitk::InteractiveViewer::pickingModeChanged ( QAction *  selectedAction)
protectedslot
camitk::InteractiveViewer::Q_ENUMS ( HighlightMode RendererWidget::ControlMode RendererWidget::CameraOrientation  )
inlineprivate

< display slices (the view is blocked in 2D and the slider is available)

< display 3D stuff (geometry, etc...)

void camitk::InteractiveViewer::refresh ( Viewer whoIsAsking = NULL)
privatevirtual
void camitk::InteractiveViewer::refreshRenderer ( )
private

just refresh the renderer

References camitk::RendererWidget::refresh(), and rendererWidget.

void camitk::InteractiveViewer::removeAllActors ( Component comp)
protected

remove all the given Component actors from the renderer and delete comp from the map

References actorMap, camitk::RendererWidget::removeProp(), and rendererWidget.

Referenced by refresh().

void camitk::InteractiveViewer::renderingActorsChanged ( )
protectedslot
void camitk::InteractiveViewer::resetCamera ( )
private

Reset scene camera.

Use a trick (when this is a SLICE_VIEWER) for scaling up to max size in the viewer

References actorMap, myType, rendererWidget, and camitk::RendererWidget::resetCamera().

Referenced by cameraOrientationChanged(), keyPressEvent(), refresh(), and toggleAxes().

void camitk::InteractiveViewer::rightClick ( )
protectedslot

References getMenu(), and rendererWidget.

Referenced by getWidget().

void camitk::InteractiveViewer::screenshot ( QString  filename)
private

call this method to take a screenshot using the given filename (the extension must be a supported format extension, see class RendererWindow)

References refresh(), rendererWidget, and camitk::RendererWidget::screenshot().

void camitk::InteractiveViewer::screenshot ( )
slot
void camitk::InteractiveViewer::setActiveCamera ( QString  cameraName)
private

Set the active virtual camera.

References cameraMap, rendererWidget, and camitk::RendererWidget::setActiveCamera().

void camitk::InteractiveViewer::setBackfaceCulling ( bool  b)
slot
void camitk::InteractiveViewer::setBackgroundColor ( QColor  c)
virtual
void camitk::InteractiveViewer::setColorScale ( bool  state)

set the color scale in the viewport, use setColorScaleMinMax / setColorScaleTitle to change the displayed values.

References rendererWidget, and camitk::RendererWidget::setColorScale().

Referenced by keyPressEvent(), VtkMeshComponent::showPointData(), and VtkMeshComponent::~VtkMeshComponent().

void camitk::InteractiveViewer::setColorScaleMinMax ( double  m,
double  M 
)

set the min and max values.

Automatically turns setColorScale to true.

Parameters
mminimum value (blue)
Mmaximum value (red)

References rendererWidget, and camitk::RendererWidget::setColorScaleMinMax().

Referenced by VtkMeshComponent::showPointData().

void camitk::InteractiveViewer::setColorScaleTitle ( QString  t)

set the color scale title.

Parameters
ttitle of the color scale

References rendererWidget, and camitk::RendererWidget::setColorScaleTitle().

Referenced by VtkMeshComponent::showPointData().

void camitk::InteractiveViewer::setGlyph ( bool  b)
protectedslot
void camitk::InteractiveViewer::setGradientBackground ( bool  g)
virtual
void camitk::InteractiveViewer::setHighlightMode ( InteractiveViewer::HighlightMode  h)
virtual

Set the current highlighting mode.

References camitk::Application::getName(), camitk::Application::getSettings(), highlightMode, and refresh().

void camitk::InteractiveViewer::setLabel ( bool  b)
protectedslot
void camitk::InteractiveViewer::setLinesAsTubes ( bool  tubes)
slot

Update the visualization of lines (for all the InterfaceGeometry of the scene).

Note
it is only possible to transform lines to tubes if you build an Geometry using lines.
Parameters
tubesif true, then the lines have to be displayed as tube

References camitk::Application::getName(), camitk::Application::getSettings(), linesAsTubes, and refresh().

Referenced by initActions().

void camitk::InteractiveViewer::setPointSize ( double  size)

update the visualization of points (for all object3D in the scene).

This property acts directly on the actor, thus it can be changed outside the InterfaceGeometry, thus the InterfaceGeometry should not be aware of its value (no method should be concerned with this property)

References camitk::Application::getName(), camitk::Application::getSettings(), camitk::RendererWidget::refresh(), rendererWidget, and camitk::RendererWidget::setPointSize().

void camitk::InteractiveViewer::setSideFrameVisible ( bool  visibility)

set the slice viewer side bar+screenshot button visibility

References sideFrame.

void camitk::InteractiveViewer::sliderChanged ( int  i)
slot

Slot called when the InteractiveViewer slider has been changed.

If there is a InterfaceBitMap in the scene, set the slice index with the new slider value.

References actorMap, and myType.

Referenced by getWidget().

void camitk::InteractiveViewer::startWhatsThisSection ( const QString &  title = "")
protected

start a table (section) in the what's this message

References oddWhatsThis, and whatsThis.

Referenced by getWidget().

void camitk::InteractiveViewer::toggleAxes ( bool  f)
protectedslot
void camitk::InteractiveViewer::toggleCopyright ( bool  c)
slot

show/hide the copyright in 3D

References camitk::RendererWidget::refresh(), rendererWidget, and camitk::RendererWidget::toggleCopyright().

Referenced by initActions().

void camitk::InteractiveViewer::toggleInterpolation ( )
protected

for InterfaceBitMap, toggle the interpolation mode (intern method, not a property because it can only be modified by the keyboard interaction)

References actorMap, camitk::Component::get2DImageActor(), camitk::Component::get3DImageActor(), camitk::Component::getRepresentation(), camitk::Component::refresh(), and camitk::Component::SLICE.

Referenced by keyPressEvent().

void camitk::InteractiveViewer::updateActions ( )
protected
void camitk::InteractiveViewer::updateSelectionDisplay ( Component comp)
protected
void camitk::InteractiveViewer::viewControlModeChanged ( QAction *  selectedAction)
protectedslot
void camitk::InteractiveViewer::xAngleChanged ( double  angle)
slot

Slot called when the InteractiveViewer x angle update has been changed.

References actorMap, and myType.

void camitk::InteractiveViewer::yAngleChanged ( double  angle)
slot

Slot called when the InteractiveViewer y angle update has been changed.

References actorMap, and myType.

void camitk::InteractiveViewer::zAngleChanged ( double  angle)
slot

Slot called when the InteractiveViewer z angle update has been changed.

References actorMap, and myType.

Friends And Related Function Documentation

void InteractiveViewerFrame::keyPressEvent ( QKeyEvent *  e)
friend

the InteractiveViewerFrame keyPressEvent is a good friend of InteractiveViewer

Member Data Documentation

QMultiMap<Component*, vtkSmartPointer<vtkProp> > camitk::InteractiveViewer::actorMap
protected
QAction* camitk::InteractiveViewer::backgroundColorAction
protected

background color

Referenced by getMenu(), and initActions().

QMap<QString, vtkSmartPointerCamera> camitk::InteractiveViewer::cameraMap
protected

all the available camera

Referenced by getCamera(), InteractiveViewer(), and setActiveCamera().

QAction* camitk::InteractiveViewer::cameraOrientationLeftUpAction
protected
QAction* camitk::InteractiveViewer::cameraOrientationRightDownAction
protected

to change the axes view mode

Referenced by cameraOrientationChanged(), getMenu(), and initActions().

QAction* camitk::InteractiveViewer::cameraOrientationRightUpAction
protected
QAction* camitk::InteractiveViewer::colorAction
protected
QAction* camitk::InteractiveViewer::controlModeJoystickAction
protected

Referenced by getMenu(), and initActions().

QAction* camitk::InteractiveViewer::controlModeTrackballAction
protected

to change the camera control mode

Referenced by getMenu(), initActions(), and viewControlModeChanged().

QString camitk::InteractiveViewer::defaultNames = {QString("3DViewer"), QString("axialViewer"), QString("coronalViewer"), QString("sagittalViewer"), QString("arbitraryViewer")}
staticprotected

the QString array containing all InteractiveViewer instance default names

Referenced by get3DViewer(), getArbitraryViewer(), getAxialViewer(), getCoronalViewer(), getSagittalViewer(), and getViewer().

unsigned int camitk::InteractiveViewer::displayedTopLevelComponents
protected

number of top-level component that are currently displayed

Referenced by InteractiveViewer(), and refresh().

InteractiveViewerFrame* camitk::InteractiveViewer::frame
protected
QAction* camitk::InteractiveViewer::glyphAction
protected
HighlightMode camitk::InteractiveViewer::highlightMode
protected

keep the value of the hightlight mode

Referenced by getHighlightMode(), highlightModeChanged(), initSettings(), setHighlightMode(), and updateSelectionDisplay().

QAction* camitk::InteractiveViewer::highlightOffAction
protected
QAction* camitk::InteractiveViewer::highlightSelectionAction
protected

display mode

Referenced by getMenu(), highlightModeChanged(), and initActions().

QAction* camitk::InteractiveViewer::highlightSelectionOnlyAction
protected
bool camitk::InteractiveViewer::linesAsTubes
protected

Are lines currently displayed as tubes (the actors have to add a vtkTubeFilter between the source and the mapper)

Referenced by getLinesAsTubes(), initSettings(), refresh(), and setLinesAsTubes().

ViewerType camitk::InteractiveViewer::myType
protected
bool camitk::InteractiveViewer::oddWhatsThis
protected

are we currently in a odd table line

Referenced by addWhatsThisItem(), and startWhatsThisSection().

QAction* camitk::InteractiveViewer::pickCellAction
protected
std::vector<Component *> camitk::InteractiveViewer::pickedComponent
protected

list of Component that are currently picked, correctly displayed in the InteractiveViewer, but for speed optimization that are not yet selected in the explorer.

They will all be selected in the explorer when the user release the mouse button.

bool camitk::InteractiveViewer::pickingEffectIsSelecting
protected

picking effect while mouse button is kept pressed is selecting (depends on the selection state of the first component picked)

Referenced by actorPicked(), and InteractiveViewer().

bool camitk::InteractiveViewer::pickingEffectUpdated
protected

was the picking effect updated (it has to be updated with the first picking for a given button down session)

Referenced by actorPicked(), and initPicking().

PickingMode camitk::InteractiveViewer::pickingMode
protected

Current picking mode, NO_PICKING be default.

Referenced by actorPicked(), and initPicking().

QAction* camitk::InteractiveViewer::pickPointAction
protected

action of the picking menu

Referenced by getMenu(), getToolBar(), initActions(), and pickingModeChanged().

QAction* camitk::InteractiveViewer::pointsAction
protected
RendererWidget* camitk::InteractiveViewer::rendererWidget
protected
QMenu* camitk::InteractiveViewer::renderingMenu
protected

Rendering.

Referenced by getMenu(), initActions(), and updateActions().

QAction* camitk::InteractiveViewer::screenshotAction
protected

Screenshot.

Referenced by getMenu(), getToolBar(), getWidget(), and initActions().

QFrame* camitk::InteractiveViewer::sideFrame
protected

the right side frame (this is where the slider and screenshot buttons are shown)

Referenced by getWidget(), and setSideFrameVisible().

SliderSpinBoxWidget* camitk::InteractiveViewer::sliceSlider
protected

Slider used to control the slice index in a InteractiveViewer.

This slider is visible only when the scene a 2D viewer (see constructor).

Referenced by getWidget(), InteractiveViewer(), keyPressEvent(), and refresh().

QAction* camitk::InteractiveViewer::surfaceAction
protected
QAction* camitk::InteractiveViewer::toggleAxesAction
protected

button allows to display the Axes in the InteractiveViewer

Referenced by getMenu(), getToolBar(), initActions(), and keyPressEvent().

QAction* camitk::InteractiveViewer::toggleBackfaceCullingAction
protected

back face culling

Referenced by getMenu(), and initActions().

QAction* camitk::InteractiveViewer::toggleCopyrightAction
protected

button to remove the copyright

Referenced by getMenu(), and initActions().

QAction* camitk::InteractiveViewer::toggleLabelAction
protected

button allows to display the labels of the object3D

Referenced by getMenu(), getToolBar(), initActions(), keyPressEvent(), and updateActions().

QAction* camitk::InteractiveViewer::toggleLinesAsTubesAction
protected

button allows to display the lines as tubes (the lines are to be in vtkPolyData)

Referenced by getMenu(), and initActions().

QMenu* camitk::InteractiveViewer::viewerMenu
protected
QMap< QString, InteractiveViewer * > camitk::InteractiveViewer::viewers
staticprotected

the map containing all the InteractiveViewer instances

the register containing all the viewers (static instanciation, global variable, but global only for this file)

Referenced by getNewViewer(), getViewer(), and ~InteractiveViewer().

QToolBar* camitk::InteractiveViewer::viewerToolBar
protected

the QToolBar for the InteractiveViewer

Referenced by getToolBar(), InteractiveViewer(), and ~InteractiveViewer().

QString camitk::InteractiveViewer::whatsThis
protected
QAction* camitk::InteractiveViewer::wireframeAction
protected

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