vtkMRMLDiffusionTensorDisplayPropertiesNode Class Reference

#include <vtkMRMLDiffusionTensorDisplayPropertiesNode.h>

Inheritance diagram for vtkMRMLDiffusionTensorDisplayPropertiesNode:
vtkMRMLColorTableNode vtkMRMLColorNode vtkMRMLStorableNode vtkMRMLTransformableNode vtkMRMLNode vtkObject vtkMRMLDiffusionTensorDisplayPropertiesNodeTestHelper1

List of all members.

Public Types

enum  {
  Trace = 0, Determinant = 1, RelativeAnisotropy = 2, FractionalAnisotropy = 3,
  MaxEigenvalue = 4, MidEigenvalue = 5, MinEigenvalue = 6, LinearMeasure = 7,
  PlanarMeasure = 8, SphericalMeasure = 9, ColorOrientation = 10, D11 = 11,
  D22 = 12, D33 = 13, Mode = 14, ColorMode = 15,
  MaxEigenvalueProjX = 16, MaxEigenvalueProjY = 17, MaxEigenvalueProjZ = 18, MaxEigenvec_ProjX = 19,
  MaxEigenvec_ProjY = 20, MaxEigenvec_ProjZ = 21, ParallelDiffusivity = 22, PerpendicularDiffusivity = 23,
  ColorOrientationMiddleEigenvector = 24, ColorOrientationMinEigenvector = 25
}
 

Display Information: Types of scalars that may be generated from tensors.

More...
enum  { Lines = 0, Tubes = 1, Ellipsoids = 2, Superquadrics = 3 }
 

Display Information: Types of glyph geometry that can be displayed.

More...
enum  { Major = 1, Middle = 2, Minor = 3 }
 

Display Information: Eigenvector to display for lines/tubes glyphs.

More...

Public Member Functions

void ColorGlyphByFractionalAnisotropy ()
void ColorGlyphByLinearMeasure ()
void ColorGlyphByTrace ()
virtual void Copy (vtkMRMLNode *node)
virtual vtkMRMLNodeCreateNodeInstance ()
 MRMLNode methods.
virtual const charGetColorGlyphByAsString ()
int GetFirstColorGlyphBy ()
int GetFirstGlyphEigenvector ()
int GetFirstGlyphGeometry ()
int GetFirstScalarInvariant ()
 TO DO: add the rest of the scalars.
virtual const charGetGlyphEigenvectorAsString ()
virtual const charGetGlyphGeometryAsString ()
int GetLastColorGlyphBy ()
int GetLastGlyphEigenvector ()
int GetLastGlyphGeometry ()
int GetLastScalarInvariant ()
virtual const charGetNodeTagName ()
virtual const charGetScalarInvariantAsString ()
void PrintSelf (ostream &os, vtkIndent indent)
virtual void ReadXMLAttributes (const char **atts)
void SetGlyphEigenvector (int eigenvector)
 Set the type of glyph geometry (line, ellipsoid, etc.).
void SetGlyphEigenvectorToMajor ()
void SetGlyphEigenvectorToMiddle ()
void SetGlyphEigenvectorToMinor ()
void SetGlyphGeometry (int geometry)
 Also update the glyph polydata source.
void SetGlyphGeometryToEllipsoids ()
void SetGlyphGeometryToLines ()
void SetGlyphGeometryToSuperquadrics ()
void SetGlyphGeometryToTubes ()
void SetLineGlyphResolution (int resolution)
void SetScalarInvariantToFractionalAnisotropy ()
void SetScalarInvariantToLinearMeasure ()
void SetScalarInvariantToPlanarMeasure ()
void SetScalarInvariantToRelativeAnisotropy ()
 Set scalar invariant to relative anisotropy.
void SetScalarInvariantToSphericalMeasure ()
void SetScalarInvariantToTrace ()
void SetTubeGlyphNumberOfSides (int numberOfSides)
void SetTubeGlyphRadius (double radius)
 vtkBooleanMacro (GlyphExtractEigenvalues, int)
 vtkGetMacro (ColorGlyphBy, int)
 Display Information: Functions to choose the type of glyph coloring.
 vtkGetMacro (SuperquadricGlyphPhiResolution, int)
 vtkGetMacro (SuperquadricGlyphThetaResolution, int)
 vtkGetMacro (SuperquadricGlyphGamma, double)
 Display Information: Parameters of Superquadrics glyph geometry.
 vtkGetMacro (EllipsoidGlyphPhiResolution, int)
 vtkGetMacro (EllipsoidGlyphThetaResolution, int)
 Display Information: Parameters of Ellipsoids glyph geometry.
 vtkGetMacro (TubeGlyphNumberOfSides, int)
 vtkGetMacro (TubeGlyphRadius, double)
 Display Information: Parameters of Tubes glyph geometry.
 vtkGetMacro (LineGlyphResolution, int)
 Display Information: Parameters of Lines glyph geometry.
 vtkGetMacro (GlyphEigenvector, int)
 vtkGetMacro (GlyphExtractEigenvalues, int)
 vtkGetMacro (GlyphScaleFactor, double)
 Display Information: Parameters of glyph geometry.
 vtkGetMacro (GlyphGeometry, int)
 Display Information: Functions to choose the type of glyph geometry.
 vtkGetMacro (ScalarInvariant, int)
 Display Information: Functions to choose scalar invariant.
 vtkGetObjectMacro (GlyphSource, vtkPolyData)
 TO DO: add the rest of the scalars.
 vtkSetMacro (ColorGlyphBy, int)
 vtkSetMacro (SuperquadricGlyphPhiResolution, int)
 vtkSetMacro (SuperquadricGlyphThetaResolution, int)
 vtkSetMacro (SuperquadricGlyphGamma, double)
 vtkSetMacro (EllipsoidGlyphPhiResolution, int)
 vtkSetMacro (EllipsoidGlyphThetaResolution, int)
 vtkSetMacro (GlyphExtractEigenvalues, int)
 vtkSetMacro (GlyphScaleFactor, double)
 vtkSetMacro (ScalarInvariant, int)
 vtkTypeMacro (vtkMRMLDiffusionTensorDisplayPropertiesNode, vtkMRMLColorTableNode)
virtual void WriteXML (ostream &of, int indent)

Static Public Member Functions

static const charGetScalarEnumAsString (int val)
static
vtkMRMLDiffusionTensorDisplayPropertiesNode
New ()

Protected Member Functions

void operator= (const vtkMRMLDiffusionTensorDisplayPropertiesNode &)
void UpdateGlyphSource ()
 vtkMRMLDiffusionTensorDisplayPropertiesNode (const vtkMRMLDiffusionTensorDisplayPropertiesNode &)
 vtkMRMLDiffusionTensorDisplayPropertiesNode ()
 vtkSetObjectMacro (GlyphSource, vtkPolyData)
 ~vtkMRMLDiffusionTensorDisplayPropertiesNode ()

Protected Attributes

int ColorGlyphBy
int EllipsoidGlyphPhiResolution
int EllipsoidGlyphThetaResolution
 Ellipsoid Glyph parameters.
int GlyphEigenvector
int GlyphExtractEigenvalues
int GlyphGeometry
 Glyph general parameters.
double GlyphScaleFactor
vtkPolyData * GlyphSource
 ---- End of parameters that should be written to MRML --- //
int LineGlyphResolution
 Line Glyph parameters.
int ScalarInvariant
 ---- Parameters that should be written to MRML --- //
double SuperquadricGlyphGamma
 Superquadric Glyph parameters.
int SuperquadricGlyphPhiResolution
int SuperquadricGlyphThetaResolution
int TubeGlyphNumberOfSides
double TubeGlyphRadius
 Tube Glyph parameters.

Detailed Description

vtkMRMLDiffusionTensorDisplayPropertiesNode - MRML node for display of a diffusion tensor.

This node describes display properties at the (conceptual) single-tensor level. A tensor can be displayed using various scalar invariants and glyphs. This class is used by classes (vtkMRMLFiberBundleDisplayNode, vtkMRMLDiffusionTensorVolumeDisplayNode) that handle higher-level display concepts for many diffusion tensors, such as choosing between scalars/glyphs/etc. for specific display needs. This class inherits from the vtkMRMLColorNode->vtkMRMLColorTableNode superclasses, used for vtkMRMLModelNodes and vtkMRMLVolumeNodes, in order to provide specific lookup tables for the scalar invariant display.


Member Enumeration Documentation

anonymous enum

Display Information: Types of scalars that may be generated from tensors.

Enumerator:
Trace 
Determinant 
RelativeAnisotropy 
FractionalAnisotropy 
MaxEigenvalue 
MidEigenvalue 
MinEigenvalue 
LinearMeasure 
PlanarMeasure 
SphericalMeasure 
ColorOrientation 
D11 
D22 
D33 
Mode 
ColorMode 
MaxEigenvalueProjX 
MaxEigenvalueProjY 
MaxEigenvalueProjZ 
MaxEigenvec_ProjX 
MaxEigenvec_ProjY 
MaxEigenvec_ProjZ 
ParallelDiffusivity 
PerpendicularDiffusivity 
ColorOrientationMiddleEigenvector 
ColorOrientationMinEigenvector 
anonymous enum

Display Information: Types of glyph geometry that can be displayed.

Enumerator:
Lines 
Tubes 
Ellipsoids 
Superquadrics 
anonymous enum

Display Information: Eigenvector to display for lines/tubes glyphs.

Enumerator:
Major 
Middle 
Minor 

Constructor & Destructor Documentation

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkMRMLDiffusionTensorDisplayPropertiesNode (  )  [protected]
vtkMRMLDiffusionTensorDisplayPropertiesNode::~vtkMRMLDiffusionTensorDisplayPropertiesNode (  )  [protected]

References GlyphSource.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkMRMLDiffusionTensorDisplayPropertiesNode ( const vtkMRMLDiffusionTensorDisplayPropertiesNode  )  [protected]

Member Function Documentation

void vtkMRMLDiffusionTensorDisplayPropertiesNode::ColorGlyphByFractionalAnisotropy (  )  [inline]

Set scalar invariant to FA (normalized variance of eigenvalues)

void vtkMRMLDiffusionTensorDisplayPropertiesNode::ColorGlyphByLinearMeasure (  )  [inline]

Set scalar invariant to FA (normalized variance of eigenvalues)

void vtkMRMLDiffusionTensorDisplayPropertiesNode::ColorGlyphByTrace (  )  [inline]

Set scalar invariant to trace (sum of eigenvalues).

References Trace().

void vtkMRMLDiffusionTensorDisplayPropertiesNode::Copy ( vtkMRMLNode node  )  [virtual]
vtkMRMLNode * vtkMRMLDiffusionTensorDisplayPropertiesNode::CreateNodeInstance ( void   )  [virtual]

MRMLNode methods.

Reimplemented from vtkMRMLColorTableNode.

Reimplemented in vtkMRMLDiffusionTensorDisplayPropertiesNodeTestHelper1.

References autoSlicerTracto2regions::ret.

const char * vtkMRMLDiffusionTensorDisplayPropertiesNode::GetColorGlyphByAsString (  )  [virtual]
int vtkMRMLDiffusionTensorDisplayPropertiesNode::GetFirstColorGlyphBy (  )  [inline]

Return the lowest and highest integers, for use in looping

References Trace().

Referenced by vtkSlicerDiffusionTensorVolumeGlyphDisplayWidget::CreateWidget().

int vtkMRMLDiffusionTensorDisplayPropertiesNode::GetFirstGlyphEigenvector (  )  [inline]

Return the lowest and highest integers, for use in looping

Referenced by vtkSlicerDiffusionTensorGlyphDisplayWidget::CreateWidget().

int vtkMRMLDiffusionTensorDisplayPropertiesNode::GetFirstGlyphGeometry (  )  [inline]

Return the lowest and highest integers, for use in looping

Referenced by vtkSlicerDiffusionTensorVolumeDisplayWidget::CreateWidget(), and vtkSlicerDiffusionTensorGlyphDisplayWidget::CreateWidget().

int vtkMRMLDiffusionTensorDisplayPropertiesNode::GetFirstScalarInvariant (  )  [inline]

TO DO: add the rest of the scalars.

Return the lowest and highest integers, for use in looping

References Trace().

Referenced by vtkSlicerDiffusionTensorVolumeDisplayWidget::CreateWidget().

const char * vtkMRMLDiffusionTensorDisplayPropertiesNode::GetGlyphEigenvectorAsString (  )  [virtual]

Return a text string describing GlyphEigenvector variable

References GlyphEigenvector, Major, Middle, and Minor.

Referenced by vtkSlicerDiffusionTensorGlyphDisplayWidget::CreateWidget(), and vtkSlicerDiffusionTensorGlyphDisplayWidget::UpdateWidget().

const char * vtkMRMLDiffusionTensorDisplayPropertiesNode::GetGlyphGeometryAsString (  )  [virtual]
int vtkMRMLDiffusionTensorDisplayPropertiesNode::GetLastColorGlyphBy (  )  [inline]
int vtkMRMLDiffusionTensorDisplayPropertiesNode::GetLastGlyphEigenvector (  )  [inline]
int vtkMRMLDiffusionTensorDisplayPropertiesNode::GetLastGlyphGeometry (  )  [inline]
int vtkMRMLDiffusionTensorDisplayPropertiesNode::GetLastScalarInvariant (  )  [inline]
virtual const char* vtkMRMLDiffusionTensorDisplayPropertiesNode::GetNodeTagName (  )  [inline, virtual]

Get node XML tag name (like Volume, Model)

Reimplemented from vtkMRMLColorTableNode.

Reimplemented in vtkMRMLDiffusionTensorDisplayPropertiesNodeTestHelper1.

const char * vtkMRMLDiffusionTensorDisplayPropertiesNode::GetScalarEnumAsString ( int  val  )  [static]
const char * vtkMRMLDiffusionTensorDisplayPropertiesNode::GetScalarInvariantAsString (  )  [virtual]

Return a text string describing the ScalarInvariant variable

References GetScalarEnumAsString(), and ScalarInvariant.

Referenced by vtkSlicerDiffusionTensorVolumeDisplayWidget::CreateWidget().

vtkMRMLDiffusionTensorDisplayPropertiesNode * vtkMRMLDiffusionTensorDisplayPropertiesNode::New (  )  [static]
void vtkMRMLDiffusionTensorDisplayPropertiesNode::operator= ( const vtkMRMLDiffusionTensorDisplayPropertiesNode  )  [protected]

Reimplemented from vtkMRMLColorTableNode.

void vtkMRMLDiffusionTensorDisplayPropertiesNode::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
void vtkMRMLDiffusionTensorDisplayPropertiesNode::ReadXMLAttributes ( const char **  atts  )  [virtual]
void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetGlyphEigenvector ( int  eigenvector  )  [inline]

Set the type of glyph geometry (line, ellipsoid, etc.).

Description Which eigenvector to display with lines or tubes glyphs Also update the glyph polydata source

Update the source if the eigenvector has changed

References vtkMRMLNode::Modified().

Referenced by Copy(), vtkSlicerDiffusionTensorGlyphDisplayWidget::CreateWidget(), and vtkSlicerDiffusionTensorGlyphDisplayWidget::UpdateMRML().

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetGlyphEigenvectorToMajor (  )  [inline]

Description Display major eigenvector with lines or tubes glyphs

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetGlyphEigenvectorToMiddle (  )  [inline]

Description Display "middle" (second) eigenvector with lines or tubes glyphs

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetGlyphEigenvectorToMinor (  )  [inline]

Description Display minor eigenvector with lines or tubes glyphs

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetGlyphGeometry ( int  geometry  )  [inline]
void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetGlyphGeometryToEllipsoids (  )  [inline]
void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetGlyphGeometryToLines (  )  [inline]
void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetGlyphGeometryToSuperquadrics (  )  [inline]
void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetGlyphGeometryToTubes (  )  [inline]
void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetLineGlyphResolution ( int  resolution  )  [inline]
void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetScalarInvariantToFractionalAnisotropy (  )  [inline]

Set scalar invariant to FA (normalized variance of eigenvalues)

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetScalarInvariantToLinearMeasure (  )  [inline]

Set scalar invariant to C_L (Westin's linear measure)

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetScalarInvariantToPlanarMeasure (  )  [inline]

Set scalar invariant to C_P (Westin's planar measure)

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetScalarInvariantToRelativeAnisotropy (  )  [inline]

Set scalar invariant to relative anisotropy.

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetScalarInvariantToSphericalMeasure (  )  [inline]

Set scalar invariant to C_S (Westin's spherical measure)

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetScalarInvariantToTrace (  )  [inline]

Set scalar invariant to trace (sum of eigenvalues).

References Trace().

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetTubeGlyphNumberOfSides ( int  numberOfSides  )  [inline]

Update the source if the numberOfSides has changed

References vtkMRMLNode::Modified().

Referenced by Copy(), and vtkSlicerDiffusionTensorGlyphDisplayWidget::UpdateMRML().

void vtkMRMLDiffusionTensorDisplayPropertiesNode::SetTubeGlyphRadius ( double  radius  )  [inline]

Set the radius of the tube glyph

Update the source if the radius has changed

References vtkMRMLNode::Modified().

Referenced by Copy(), and vtkSlicerDiffusionTensorGlyphDisplayWidget::UpdateMRML().

void vtkMRMLDiffusionTensorDisplayPropertiesNode::UpdateGlyphSource (  )  [protected]
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkBooleanMacro ( GlyphExtractEigenvalues  ,
int   
)
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( ColorGlyphBy  ,
int   
)

Display Information: Functions to choose the type of glyph coloring.

Get type of scalar invariant (tensor-derived scalar, invariant to tensor rotation) selected for display.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( SuperquadricGlyphPhiResolution  ,
int   
)
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( SuperquadricGlyphThetaResolution  ,
int   
)
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( SuperquadricGlyphGamma  ,
double   
)

Display Information: Parameters of Superquadrics glyph geometry.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( EllipsoidGlyphPhiResolution  ,
int   
)

Number of polygons used in latitude direction for sphere that will be scaled by tensor to form ellipsoid.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( EllipsoidGlyphThetaResolution  ,
int   
)

Display Information: Parameters of Ellipsoids glyph geometry.

Number of polygons used in longitude direction for sphere that will be scaled by tensor to form ellipsoid.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( TubeGlyphNumberOfSides  ,
int   
)

Number of sides of tube glyph (3 gives a triangular tube, etc.)

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( TubeGlyphRadius  ,
double   
)

Display Information: Parameters of Tubes glyph geometry.

Get the radius of the tube glyph

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( LineGlyphResolution  ,
int   
)

Display Information: Parameters of Lines glyph geometry.

Resolution of lines displayed as tensor glyphs

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( GlyphEigenvector  ,
int   
)

Description Which eigenvector to display with lines or tubes glyphs

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( GlyphExtractEigenvalues  ,
int   
)

Whether the input tensors need eigensystem computation

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( GlyphScaleFactor  ,
double   
)

Display Information: Parameters of glyph geometry.

Get the scale factor applied to the glyphs.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( GlyphGeometry  ,
int   
)

Display Information: Functions to choose the type of glyph geometry.

Get the type of glyph geometry (line, ellipsoid, etc.)

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetMacro ( ScalarInvariant  ,
int   
)

Display Information: Functions to choose scalar invariant.

Get type of scalar invariant (tensor-derived scalar, invariant to tensor rotation) selected for display.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkGetObjectMacro ( GlyphSource  ,
vtkPolyData   
)

TO DO: add the rest of the scalars.

Convenience functions to get an appropriate glyph source Get a polydata object according to current glyph display settings (so a line, sphere, or tube) to use as a source for a glyphing filter.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetMacro ( ColorGlyphBy  ,
int   
)

Get type of scalar invariant (tensor-derived scalar, invariant to tensor rotation) selected for display.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetMacro ( SuperquadricGlyphPhiResolution  ,
int   
)
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetMacro ( SuperquadricGlyphThetaResolution  ,
int   
)
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetMacro ( SuperquadricGlyphGamma  ,
double   
)
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetMacro ( EllipsoidGlyphPhiResolution  ,
int   
)
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetMacro ( EllipsoidGlyphThetaResolution  ,
int   
)
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetMacro ( GlyphExtractEigenvalues  ,
int   
)
vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetMacro ( GlyphScaleFactor  ,
double   
)

Set the scale factor applied to the glyphs.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetMacro ( ScalarInvariant  ,
int   
)

Get type of scalar invariant (tensor-derived scalar, invariant to tensor rotation) selected for display.

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkSetObjectMacro ( GlyphSource  ,
vtkPolyData   
) [protected]

This is used internally to set a pointer to this polydata and reference count it. TO DO: is this causing an extra modified event?

vtkMRMLDiffusionTensorDisplayPropertiesNode::vtkTypeMacro ( vtkMRMLDiffusionTensorDisplayPropertiesNode  ,
vtkMRMLColorTableNode   
)
void vtkMRMLDiffusionTensorDisplayPropertiesNode::WriteXML ( ostream &  of,
int  indent 
) [virtual]

Member Data Documentation

---- End of parameters that should be written to MRML --- //

---- VTK objects for display --- //

Referenced by UpdateGlyphSource(), vtkMRMLDiffusionTensorDisplayPropertiesNode(), and ~vtkMRMLDiffusionTensorDisplayPropertiesNode().

---- Parameters that should be written to MRML --- //

Scalar display parameters

Referenced by Copy(), GetScalarInvariantAsString(), PrintSelf(), and vtkMRMLDiffusionTensorDisplayPropertiesNode().


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

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1