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

RendererWidget implements all support methods to use camiTK with Qt interface. More...

#include <RendererWidget.h>

+ Inheritance diagram for camitk::RendererWidget:

Classes

class  ScreenshotFormatInfo
 sub-class containing all information concerning exporting images (screenshot) More...
 

Public Types

enum  CameraOrientation { RIGHT_DOWN, LEFT_UP, RIGHT_UP }
 describes the initial position and orientation of the default camera. More...
 
enum  ControlMode { JOYSTICK, TRACKBALL, TRACKBALL_2D, NONE }
 list of possible user interaction control mode More...
 
enum  MouseButtonState { NO_BUTTON, LEFT_BUTTON, MIDDLE_BUTTON, RIGHT_BUTTON }
 state of the pressed button (for 3 buttons mouse) More...
 
enum  ScreenshotFormat {
  PNG = 0, JPG, BMP, PS,
  EPS, PDF, TEX, SVG,
  OBJ, RIB, VRML, NOT_SUPPORTED
}
 list of supported screenshot export formats More...
 

Public Member Functions

 RendererWidget (QWidget *parent=0, ControlMode mode=RendererWidget::TRACKBALL)
 constructors. More...
 
 ~RendererWidget ()
 destructor More...
 
add/manipulate actors
void addProp (vtkSmartPointer< vtkProp > p, bool refresh=false)
 add a vtkActor or vtkActor2D, updating the cull face depending on the current state. More...
 
bool containsProp (vtkSmartPointer< vtkProp >)
 is the given vtkProp (e.g. vtkActor or vtkActor2D) in this renderer More...
 
void removeProp (vtkSmartPointer< vtkProp > p, bool refresh=false)
 remove the given vtkProp (e.g. More...
 
void actorTransform (vtkSmartPointer< vtkActor >, double *, int, double **, double *, double *)
 perform the transformation of the actor More...
 

Protected Member Functions

virtual void mouseMoveEvent (QMouseEvent *event)
 overloaded mouse move handler because a potentialbug in vtk 5.2.1 More...
 
virtual void mouseReleaseEvent (QMouseEvent *event)
 overloaded mouse release handler because a potentialbug in vtk 5.2.1 More...
 

Static Protected Member Functions

screenshot management

build the map

static void buildScreenshotMap ()
 
static const ScreenshotFormatInfogetScreenshotFormatInfo (QString)
 get the information from the extension (QString) More...
 

Protected Attributes

extra actors managements

is the gradient background displayed

bool displayGradient
 
bool displayCopyright
 is the copyright text displayed More...
 
vtkSmartPointer< vtkActor2D > copyrightTextActor
 copyright text vtk actor More...
 
bool displayColorScale
 is the color scale currently displayed More...
 
vtkSmartPointer
< vtkScalarBarActor > 
colorScale
 the color scale displaying the lookup table + values More...
 
vtkSmartPointer
< vtkScalarBarWidget > 
colorBarWidget
 the scalar bar widget More...
 
vtkSmartPointer< vtkAxesActor > axes
 axes actor More...
 
vtkSmartPointer
< vtkAnnotatedCubeActor > 
annotatedCube
 annotated cube actor More...
 

Private Member Functions

 Q_ENUMS (ControlMode CameraOrientation)
 

picking and interaction

to manage interactions

vtkSmartPointer< QVTKInteractor > interactor
 
vtkSmartPointer
< vtkInteractorStyle > 
interactorStyle
 for the interaction with the scene More...
 
ControlMode controlMode
 current control mode More...
 
ControlMode getControlMode () const
 
void setControlMode (ControlMode mode)
 Set the interaction like trackball or joystick style. More...
 
void setPicker (vtkSmartPointer< vtkPicker > woodyWood)
 set the picker to handle the action More...
 
void pick ()
 Perform picking using the current mouse position. More...
 
void pickActor (int x, int y)
 Perform picking from screen coordinates. More...
 
void keyPressEvent (QKeyEvent *e)
 key events (do nothing but pass on e to the parent widget), please do not add any shortcut management here (see note in implementation)! More...
 
void screenshot (QString filename)
 save the screenshot in a file More...
 
void refresh ()
 refresh the display More...
 
static const ScreenshotFormatInfogetScreenshotFormatInfo (unsigned int)
 return the information concerning the supporting format using an index corresponding to the enum (check index validity) More...
 
static const ScreenshotFormatInfogetScreenshotFormatInfo (ScreenshotFormat)
 retun the information concerning the supporting format using an index corresponding to the enum (check index validity) More...
 
void leftClick ()
 
void rightClick ()
 manage right mouse click interactions, can emit rightButtonPressed() signal More...
 
void actorPicked (vtkSmartPointer< vtkPicker >)
 
void rightButtonPressed ()
 send when the mouse right button is clicked More...
 

view/camera settings

Reset camera settings (position, what is looked at and how)

vtkSmartPointer< vtkRenderer > renderer
 The current renderer. More...
 
bool backfaceCulling
 Is back face culling on? More...
 
CameraOrientation cameraOrientation
 state of the initial camera orientation More...
 
bool lightFollowCamera
 Is the light following the camera. More...
 
double pointSize
 default point size More...
 
bool rendering3DRedBlue
 is rendering in 3D stereo red/blue More...
 
void setBackfaceCulling (bool)
 
bool getBackfaceCulling () const
 Get the current state of backface culling. More...
 
void setCameraOrientation (RendererWidget::CameraOrientation)
 Set the current axes mode. More...
 
RendererWidget::CameraOrientation getCameraOrientation () const
 Return the current axes mode. More...
 
void setLightFollowCamera (bool)
 Set/unset the light to follow the camera. More...
 
bool getLightFollowCamera () const
 Get the current state of the property. More...
 
void setPointSize (double size)
 set the default point size More...
 
double getPointSize () const
 get the current value of point size More...
 
void rotateCamera (double angle, int axe)
 Rotate the camera around param "axe" of "angle" degrees. More...
 
void resetCamera ()
 reset the camera to the default position, default FOV. More...
 
void resetCamera (double bounds[6])
 reset the camera to the default position, default FOV and use the given bounds to focus on More...
 
void getCameraSettings (double position[3], double focalPoint[3], double viewUp[3])
 get camera settings information (position, what is looked at and how) in world coordinates More...
 
void setActiveCamera (vtkCamera *cam)
 set active camera More...
 
vtkCamera * getActiveCamera ()
 get the active camera More...
 
void getMouse3DCoordinates (double &x, double &y, double &z)
 get the mouse coordinates in 3D More...
 
void setBackgroundColor (double, double, double)
 set the background color (rgb) More...
 
void getBackgroundColor (double &, double &, double &)
 get the background color (rgb) More...
 
bool getGradientBackground ()
 get the current state of the gradient background More...
 
void setGradientBackground (bool)
 set the gradient background More...
 
void toogle3DRedBlue ()
 toggle stereo 3D red/blue rendering (you will need red/blue glasses) More...
 
void toggleCopyright (bool)
 toggle copyright text More...
 
void toggleAxes (bool)
 display the axes More...
 
void updateAxes ()
 update the axes sizes More...
 
void setColorScale (bool)
 display the color scale in the viewport, use setColorScaleMinMax to change the displayed values More...
 
bool getColorScale () const
 get the color display state More...
 
void setColorScaleMinMax (double m, double M)
 set the min and max values. More...
 
void setColorScaleTitle (QString t)
 set the color scale title. More...
 
void computeVisiblePropBounds (double bounds[6])
 get the bounding box of all visible actors [xmin,xmax, ymin,ymax, zmin,zmax] More...
 
void resetCameraSettings ()
 

callback and interaction

manage connections between vtk objets events and qt slots

vtkSmartPointer
< vtkEventQtSlotConnect > 
connector
 
vtkSmartPointer
< vtkCallbackCommand > 
pickingButtonDiverter
 the callback to remove left button interaction while in picking mode More...
 
bool pickingDiverter
 is the picking diverter used More...
 
static void divertionCallback (vtkObject *caller, unsigned long eid, void *clientdata, void *calldata)
 a diverter observer callback (to be used to divert undesired events) More...
 

Detailed Description

RendererWidget implements all support methods to use camiTK with Qt interface.

This class wraps the necessary VTK method for rendering, interactions, and signal/slot connections. This class should be usable completely independantly of Core.

The Core companion class is InteractiveViewer (which delegates all vtk stuff to RendererWidget.

It is directly based on QVTKWidget, the GUI support class available in Vtk version >= 5.0 This is a pure Qt/vtk wrapper class (no Core stuff).

For developers: please check the coding policy in InteractiveViewer API documentation first.

Member Enumeration Documentation

describes the initial position and orientation of the default camera.

The world coordinate system is not changed by the CameraOrientation, only the inital position and orientation of the camera. 6 keywords can be used to determine the direction of the x and y axis as intially viewed by the camera: RIGHT, LEFT, UP, DOWN, FRONT, BACK. The first part of the enum name describes the x direction, the second part corresponds to the y direction. The camera is positionned and orientated in order to view the axes as described by the keywords. E.g. RIGHT_DOWN will set the camera so that the x axis points toward the right direction and the y axis points toward the down direction.

Enumerator
RIGHT_DOWN 

World axes are seen so that x points to the right, y points downward.

LEFT_UP 

World axes are seen so that x points to the left, y points upward.

RIGHT_UP 

World axes are seen so that x points to the right, y points upward.

list of possible user interaction control mode

Enumerator
JOYSTICK 

the mouse is used a joystick

TRACKBALL 

the mouse is used as a trackball (default)

TRACKBALL_2D 

same as TRACKBALL but does not allow rotation using left button (but zoom and displacement parallel to slice is allowed)

NONE 

state of the pressed button (for 3 buttons mouse)

Enumerator
NO_BUTTON 

no buttons are currently pressed

LEFT_BUTTON 

the mouse left button is currently pressed

MIDDLE_BUTTON 

the mouse middle button is currently pressed (or 3rd button emulation)

RIGHT_BUTTON 

the mouse right button is currently pressed

list of supported screenshot export formats

Enumerator
PNG 

Portable Network Graphics.

JPG 

JPEG.

BMP 

Bitmap.

PS 

PostScript.

EPS 

Encapsulated PostScript.

PDF 

Portable Document Format.

TEX 

LaTeX (only the text is exported)

SVG 

Scalable Vector Graphics.

OBJ 

Alias Wavefront .OBJ.

RIB 

RenderMan/BMRT .RIB.

VRML 

VRML 2.0.

NOT_SUPPORTED 

Constructor & Destructor Documentation

camitk::RendererWidget::RendererWidget ( QWidget *  parent = 0,
ControlMode  mode = RendererWidget::TRACKBALL 
)

constructors.

By default:

  • the backface culling is off,
  • the interaction mode is controlling the camera
  • the light follow the camera
  • the copyright is shown
  • the gradient background is not shown
Parameters
parentthe parent widget
modethe mouse interaction control mode (default is TRACKBALL)
camitk::RendererWidget::~RendererWidget ( )

destructor

Member Function Documentation

void camitk::RendererWidget::actorPicked ( vtkSmartPointer< vtkPicker >  )
signal
void camitk::RendererWidget::actorTransform ( vtkSmartPointer< vtkActor >  ,
double *  ,
int  ,
double **  ,
double *  ,
double *   
)

perform the transformation of the actor

void camitk::RendererWidget::addProp ( vtkSmartPointer< vtkProp >  p,
bool  refresh = false 
)

add a vtkActor or vtkActor2D, updating the cull face depending on the current state.

The method checks it is not already there first. This method is "clever": it does different things (that should be documented bellow), depending on the type of the vtkProp

Action performed depending on the vtkProp (true) type:

  • vtkActor: apply the current backface culling and point size property to the actor.
    Parameters
    pthe vtkProp to add to the scene
    refreshif true the axes are refreshed (default false)
static void camitk::RendererWidget::buildScreenshotMap ( )
staticprotected
void camitk::RendererWidget::computeVisiblePropBounds ( double  bounds[6])

get the bounding box of all visible actors [xmin,xmax, ymin,ymax, zmin,zmax]

bool camitk::RendererWidget::containsProp ( vtkSmartPointer< vtkProp >  )

is the given vtkProp (e.g. vtkActor or vtkActor2D) in this renderer

static void camitk::RendererWidget::divertionCallback ( vtkObject *  caller,
unsigned long  eid,
void *  clientdata,
void *  calldata 
)
inlinestaticprotected

a diverter observer callback (to be used to divert undesired events)

vtkCamera* camitk::RendererWidget::getActiveCamera ( )

get the active camera

bool camitk::RendererWidget::getBackfaceCulling ( ) const

Get the current state of backface culling.

void camitk::RendererWidget::getBackgroundColor ( double &  ,
double &  ,
double &   
)

get the background color (rgb)

RendererWidget::CameraOrientation camitk::RendererWidget::getCameraOrientation ( ) const

Return the current axes mode.

void camitk::RendererWidget::getCameraSettings ( double  position[3],
double  focalPoint[3],
double  viewUp[3] 
)

get camera settings information (position, what is looked at and how) in world coordinates

bool camitk::RendererWidget::getColorScale ( ) const

get the color display state

ControlMode camitk::RendererWidget::getControlMode ( ) const
bool camitk::RendererWidget::getGradientBackground ( )

get the current state of the gradient background

bool camitk::RendererWidget::getLightFollowCamera ( ) const

Get the current state of the property.

void camitk::RendererWidget::getMouse3DCoordinates ( double &  x,
double &  y,
double &  z 
)

get the mouse coordinates in 3D

double camitk::RendererWidget::getPointSize ( ) const

get the current value of point size

static const ScreenshotFormatInfo* camitk::RendererWidget::getScreenshotFormatInfo ( unsigned  int)
static

return the information concerning the supporting format using an index corresponding to the enum (check index validity)

static const ScreenshotFormatInfo* camitk::RendererWidget::getScreenshotFormatInfo ( ScreenshotFormat  )
static

retun the information concerning the supporting format using an index corresponding to the enum (check index validity)

static const ScreenshotFormatInfo* camitk::RendererWidget::getScreenshotFormatInfo ( QString  )
staticprotected

get the information from the extension (QString)

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

key events (do nothing but pass on e to the parent widget), please do not add any shortcut management here (see note in implementation)!

void camitk::RendererWidget::leftClick ( )
protectedslot
virtual void camitk::RendererWidget::mouseMoveEvent ( QMouseEvent *  event)
protectedvirtual

overloaded mouse move handler because a potentialbug in vtk 5.2.1

virtual void camitk::RendererWidget::mouseReleaseEvent ( QMouseEvent *  event)
protectedvirtual

overloaded mouse release handler because a potentialbug in vtk 5.2.1

void camitk::RendererWidget::pick ( )

Perform picking using the current mouse position.

void camitk::RendererWidget::pickActor ( int  x,
int  y 
)

Perform picking from screen coordinates.

camitk::RendererWidget::Q_ENUMS ( ControlMode  CameraOrientation)
private
void camitk::RendererWidget::refresh ( )

refresh the display

void camitk::RendererWidget::removeProp ( vtkSmartPointer< vtkProp >  p,
bool  refresh = false 
)

remove the given vtkProp (e.g.

vtkActor or vtkActor2D, such as color scale)

Parameters
pthe vtkProp to add to the scene
refreshif true the axes are refreshed (default false)
void camitk::RendererWidget::resetCamera ( )

reset the camera to the default position, default FOV.

The camera focal is set so that all the things in the scenes are visible (i.e. reset the camera clipping range based on the bounds of the visible actors. This ensures that no props are cut off)

void camitk::RendererWidget::resetCamera ( double  bounds[6])

reset the camera to the default position, default FOV and use the given bounds to focus on

void camitk::RendererWidget::resetCameraSettings ( )
protected
void camitk::RendererWidget::rightButtonPressed ( )
signal

send when the mouse right button is clicked

void camitk::RendererWidget::rightClick ( )
protectedslot

manage right mouse click interactions, can emit rightButtonPressed() signal

void camitk::RendererWidget::rotateCamera ( double  angle,
int  axe 
)

Rotate the camera around param "axe" of "angle" degrees.

void camitk::RendererWidget::screenshot ( QString  filename)

save the screenshot in a file

Parameters
filenamethe filename extension (suffix) must be supported (use getScreenshotFormatInfo to get the correct extension)
void camitk::RendererWidget::setActiveCamera ( vtkCamera *  cam)

set active camera

void camitk::RendererWidget::setBackfaceCulling ( bool  )
void camitk::RendererWidget::setBackgroundColor ( double  ,
double  ,
double   
)

set the background color (rgb)

void camitk::RendererWidget::setCameraOrientation ( RendererWidget::CameraOrientation  )

Set the current axes mode.

void camitk::RendererWidget::setColorScale ( bool  )

display the color scale in the viewport, use setColorScaleMinMax to change the displayed values

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

set the min and max values.

Parameters
mminimum value (blue)
Mmaximum value (red)
void camitk::RendererWidget::setColorScaleTitle ( QString  t)

set the color scale title.

Parameters
ttitle of the color scale
void camitk::RendererWidget::setControlMode ( ControlMode  mode)

Set the interaction like trackball or joystick style.

void camitk::RendererWidget::setGradientBackground ( bool  )

set the gradient background

void camitk::RendererWidget::setLightFollowCamera ( bool  )

Set/unset the light to follow the camera.

void camitk::RendererWidget::setPicker ( vtkSmartPointer< vtkPicker >  woodyWood)

set the picker to handle the action

Parameters
woodyWoodthe picker (sorry, I could not resist this one!)
void camitk::RendererWidget::setPointSize ( double  size)

set the default point size

void camitk::RendererWidget::toggleAxes ( bool  )

display the axes

void camitk::RendererWidget::toggleCopyright ( bool  )

toggle copyright text

void camitk::RendererWidget::toogle3DRedBlue ( )

toggle stereo 3D red/blue rendering (you will need red/blue glasses)

void camitk::RendererWidget::updateAxes ( )

update the axes sizes

Member Data Documentation

vtkSmartPointer<vtkAnnotatedCubeActor> camitk::RendererWidget::annotatedCube
protected

annotated cube actor

vtkSmartPointer<vtkAxesActor> camitk::RendererWidget::axes
protected

axes actor

bool camitk::RendererWidget::backfaceCulling
protected

Is back face culling on?

CameraOrientation camitk::RendererWidget::cameraOrientation
protected

state of the initial camera orientation

vtkSmartPointer<vtkScalarBarWidget> camitk::RendererWidget::colorBarWidget
protected

the scalar bar widget

vtkSmartPointer<vtkScalarBarActor> camitk::RendererWidget::colorScale
protected

the color scale displaying the lookup table + values

vtkSmartPointer<vtkEventQtSlotConnect> camitk::RendererWidget::connector
protected
ControlMode camitk::RendererWidget::controlMode
protected

current control mode

vtkSmartPointer<vtkActor2D> camitk::RendererWidget::copyrightTextActor
protected

copyright text vtk actor

bool camitk::RendererWidget::displayColorScale
protected

is the color scale currently displayed

bool camitk::RendererWidget::displayCopyright
protected

is the copyright text displayed

bool camitk::RendererWidget::displayGradient
protected
vtkSmartPointer<QVTKInteractor> camitk::RendererWidget::interactor
protected
vtkSmartPointer<vtkInteractorStyle> camitk::RendererWidget::interactorStyle
protected

for the interaction with the scene

bool camitk::RendererWidget::lightFollowCamera
protected

Is the light following the camera.

vtkSmartPointer<vtkCallbackCommand> camitk::RendererWidget::pickingButtonDiverter
protected

the callback to remove left button interaction while in picking mode

bool camitk::RendererWidget::pickingDiverter
protected

is the picking diverter used

double camitk::RendererWidget::pointSize
protected

default point size

vtkSmartPointer<vtkRenderer> camitk::RendererWidget::renderer
protected

The current renderer.

bool camitk::RendererWidget::rendering3DRedBlue
protected

is rendering in 3D stereo red/blue


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