/usr/include/IGSTK/igstkImageSpatialObjectRepresentation.h is in libigstk4-dev 4.4.0-2build2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | /*=========================================================================
Program: Image Guided Surgery Software Toolkit
Module: $RCSfile: igstkImageSpatialObjectRepresentation.h,v $
Language: C++
Date: $Date: 2008-11-17 20:12:25 $
Version: $Revision: 1.22 $
Copyright (c) ISC Insight Software Consortium. All rights reserved.
See IGSTKCopyright.txt or http://www.igstk.org/copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __igstkImageSpatialObjectRepresentation_h
#define __igstkImageSpatialObjectRepresentation_h
#include "igstkMacros.h"
#include "igstkObjectRepresentation.h"
#include "igstkImageSpatialObject.h"
#include "igstkStateMachine.h"
#include "vtkImageActor.h"
#include "vtkLookupTable.h"
#include "vtkImageMapToColors.h"
namespace igstk
{
/** \class ImageSpatialObjectRepresentation
*
*\brief This class renders and ImageSpatialObject in a VTK scene using a slice
* based representation.
*
* You can select the orientation of the slice to be Axial, Sagittal or Coronal.
* The number of the slice to be rendered can also be selected, as well as
* values of opacity, window and level.
*
*\image html igstkImageSpatialObjectRepresentation.png "State Machine Diagram"
*
*\image latex igstkImageSpatialObjectRepresentation.eps "State Machine Diagram"
*
*
*\ingroup ObjectRepresentation
*/
template < class TImageSpatialObject >
class ImageSpatialObjectRepresentation : public ObjectRepresentation
{
public:
/** Macro with standard traits declarations. */
igstkStandardTemplatedClassTraitsMacro( ImageSpatialObjectRepresentation, \
ObjectRepresentation )
public:
typedef TImageSpatialObject ImageSpatialObjectType;
typedef typename ImageSpatialObjectType::ConstPointer
ImageSpatialObjectConstPointer;
/** Return a copy of the current object representation */
Pointer Copy() const;
/** Orientation Type: Publically declared
* orientation types supported for slice viewing. */
typedef enum
{
Sagittal,
Coronal,
Axial
}
OrientationType;
/** Connect this representation class to the spatial object */
void RequestSetImageSpatialObject( const ImageSpatialObjectType *
ImageSpatialObject );
/** Type used for representing the slice number */
typedef unsigned int SliceNumberType;
/** Request the state machine to attempt to select a slice number */
void RequestSetSliceNumber( SliceNumberType slice );
/** Request the state machine to attempt to select a slice orientation */
void RequestSetOrientation( OrientationType orientation );
/** Set the Window Level for the representation */
void SetWindowLevel( double window, double level );
/** Set the opacity */
void SetOpacity(float alpha);
/** Print the object information in a stream. */
virtual void PrintSelf( std::ostream& os, itk::Indent indent ) const;
/** Returns the Minimum and Maximum number of slice available in the current
* orientation. */
void RequestGetSliceNumberBounds();
protected:
/** Constructor */
ImageSpatialObjectRepresentation();
/** Destructor */
~ImageSpatialObjectRepresentation();
/** Overloaded function to delete actors */
void DeleteActors();
/** Create the VTK actors for displaying geometry */
void CreateActors();
/** Observer macro that will received a event with an image as payload and
* will store it internally. This will be the receptor of the event sent by
* the ImageSpatialObject when an image is requested. */
igstkObserverMacro( VTKImage, VTKImageModifiedEvent,
EventHelperType::VTKImagePointerType );
igstkObserverMacro( ImageTransform, CoordinateSystemTransformToEvent,
CoordinateSystemTransformToResult );
private:
ImageSpatialObjectRepresentation(const Self&); //purposely not implemented
void operator=(const Self&); //purposely not implemented
/** Internal itkSpatialObject */
ImageSpatialObjectConstPointer m_ImageSpatialObject;
ImageSpatialObjectConstPointer m_ImageSpatialObjectToAdd;
/** VTK classes that support display of an image */
vtkImageData * m_ImageData;
vtkImageActor * m_ImageActor;
vtkLookupTable * m_LUT;
vtkImageMapToColors * m_MapColors;
/** Variables that store window and level values for 2D image display */
double m_Level;
double m_Window;
/** Update the visual representation with changes in the geometry */
virtual void UpdateRepresentationProcessing();
/** Null operation for State Machine transition */
void NoProcessing();
/** Connect this representation class to the spatial object. Only to be
* called by the State Machine. */
void SetImageSpatialObjectProcessing();
/** Sets the vtkImageData from the spatial object. This method MUST be
* private in order to prevent unsafe access from the VTK image layer. */
void SetImage( const vtkImageData * image );
/** Attempt to set the Slice Number. */
void AttemptSetSliceNumberProcessing();
/** Actually set the Slice Number. */
void SetSliceNumberProcessing();
/** Actually set the Slice Orientation. */
void SetOrientationProcessing();
/** Reports the minimum and maximum slice numbers on the current
* orientation */
void ReportSliceNumberBoundsProcessing();
/** Connect VTK pipeline */
void ConnectVTKPipelineProcessing();
private:
/** Inputs to the State Machine */
igstkDeclareInputMacro( ValidImageSpatialObject );
igstkDeclareInputMacro( NullImageSpatialObject );
igstkDeclareInputMacro( EmptyImageSpatialObject );
igstkDeclareInputMacro( SetSliceNumber );
igstkDeclareInputMacro( ValidSliceNumber );
igstkDeclareInputMacro( InvalidSliceNumber );
igstkDeclareInputMacro( ValidOrientation );
igstkDeclareInputMacro( RequestSliceNumberBounds );
igstkDeclareInputMacro( ConnectVTKPipeline );
/** States for the State Machine */
igstkDeclareStateMacro( NullImageSpatialObject );
igstkDeclareStateMacro( ValidImageSpatialObject );
igstkDeclareStateMacro( ValidImageOrientation );
igstkDeclareStateMacro( ValidSliceNumber );
igstkDeclareStateMacro( AttemptingToSetSliceNumber );
/** Variables for managing the Slice number through the StateMachine */
SliceNumberType m_SliceNumberToBeSet;
SliceNumberType m_SliceNumber;
/** Variables for managing the Orientation of the slices */
OrientationType m_OrientationToBeSet;
OrientationType m_Orientation;
/** Observer to the VTK image events */
typename VTKImageObserver::Pointer m_VTKImageObserver;
typename ImageTransformObserver::Pointer m_ImageTransformObserver;
/** Transform containing the information about image origin
* and image orientation taken from the DICOM input image */
Transform m_ImageTransform;
};
} // end namespace igstk
#ifndef IGSTK_MANUAL_INSTANTIATION
#include "igstkImageSpatialObjectRepresentation.txx"
#endif
#endif // __igstkImageSpatialObjectRepresentation_h
|