Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MITKGEOMETRY2DDATAVTKMAPPER3D_H_HEADER_INCLUDED_C196C71F
00020 #define MITKGEOMETRY2DDATAVTKMAPPER3D_H_HEADER_INCLUDED_C196C71F
00021
00022 #include "mitkCommon.h"
00023 #include "mitkVtkMapper3D.h"
00024 #include "mitkDataStorage.h"
00025 #include "mitkGeometry2DDataToSurfaceFilter.h"
00026 #include "mitkWeakPointer.h"
00027
00028 #include <vtkSystemIncludes.h>
00029 #include <vtkCleanPolyData.h>
00030
00031 class vtkActor;
00032 class vtkPolyDataMapper;
00033 class vtkDataSetMapper;
00034 class vtkLookupTable;
00035 class vtkAssembly;
00036 class vtkFeatureEdges;
00037 class vtkTubeFilter;
00038 class vtkTransformPolyDataFilter;
00039 class vtkHedgeHog;
00040
00041 namespace mitk {
00042
00043 class Geometry2DData;
00044 class BaseRenderer;
00045 class ImageMapperGL2D;
00046 class DataStorage;
00047
00075 class MITK_CORE_EXPORT Geometry2DDataVtkMapper3D : public VtkMapper3D
00076 {
00077 public:
00078 mitkClassMacro(Geometry2DDataVtkMapper3D, VtkMapper3D);
00079
00080 itkNewMacro(Geometry2DDataVtkMapper3D);
00081
00087 virtual vtkProp *GetVtkProp(mitk::BaseRenderer *renderer);
00088 virtual void UpdateVtkTransform(mitk::BaseRenderer *renderer);
00089
00093 virtual const Geometry2DData *GetInput();
00094
00099 virtual void SetDataStorageForTexture(mitk::DataStorage* storage);
00100
00101 protected:
00102
00103 Geometry2DDataVtkMapper3D();
00104
00105 virtual ~Geometry2DDataVtkMapper3D();
00106
00107 virtual void GenerateData(BaseRenderer* renderer);
00108
00109 typedef std::multimap< int, vtkActor * > LayerSortedActorList;
00110
00111 void ProcessNode( DataNode * node, BaseRenderer* renderer, Surface * surface, LayerSortedActorList &layerSortedActors );
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138 int FindPowerOfTwo( int i );
00139
00140 void ImageMapperDeletedCallback( itk::Object *caller, const itk::EventObject &event );
00141
00143 vtkAssembly *m_Prop3DAssembly;
00144
00146 vtkAssembly *m_ImageAssembly;
00147
00148 Geometry2DDataToSurfaceFilter::Pointer m_SurfaceCreator;
00149
00150 BoundingBox::Pointer m_SurfaceCreatorBoundingBox;
00151
00152 BoundingBox::PointsContainer::Pointer m_SurfaceCreatorPointsContainer;
00153
00155 vtkFeatureEdges *m_Edges;
00156
00158 vtkTransformPolyDataFilter *m_EdgeTransformer;
00159
00161 vtkTubeFilter *m_EdgeTuber;
00162
00164 vtkPolyDataMapper *m_EdgeMapper;
00165
00167 vtkActor *m_EdgeActor;
00168
00170 vtkPolyDataMapper *m_BackgroundMapper;
00171
00173 vtkActor *m_BackgroundActor;
00174
00176 vtkTransformPolyDataFilter* m_NormalsTransformer;
00177
00179 vtkPolyDataMapper* m_FrontNormalsMapper;
00180 vtkPolyDataMapper* m_BackNormalsMapper;
00181
00183 vtkHedgeHog* m_FrontHedgeHog;
00184 vtkHedgeHog* m_BackHedgeHog;
00185
00187 vtkActor* m_FrontNormalsActor;
00188 vtkActor* m_BackNormalsActor;
00189
00191 vtkCleanPolyData *m_Cleaner;
00192
00194 bool m_DisplayNormals;
00195
00197 bool m_ColorTwoSides;
00198
00200 bool m_InvertNormals;
00201
00203 bool m_NormalsActorAdded;
00204
00206 mitk::WeakPointer<mitk::DataStorage> m_DataStorage;
00207
00209 vtkLookupTable *m_DefaultLookupTable;
00210
00211 class MITK_CORE_EXPORT ActorInfo
00212 {
00213 public:
00214 vtkActor * m_Actor;
00215
00216
00217 itk::Object* m_Sender;
00218 unsigned long m_ObserverID;
00219
00220 void Initialize(vtkActor* actor, itk::Object* sender, itk::Command* command);
00221
00222 ActorInfo();
00223 ~ActorInfo();
00224 };
00225
00229 typedef std::map< ImageMapperGL2D *, ActorInfo > ActorList;
00230 ActorList m_ImageActors;
00231
00232 struct LookupTableProperties
00233 {
00234 LookupTableProperties()
00235 : LookupTableSource( NULL ),
00236 windowMin( 0.0 ),
00237 windowMax( 4096.0 )
00238 {}
00239 vtkLookupTable *LookupTableSource;
00240 vtkFloatingPointType windowMin;
00241 vtkFloatingPointType windowMax;
00242 };
00243
00244 typedef std::map< ImageMapperGL2D *, LookupTableProperties >
00245 LookupTablePropertiesList;
00246
00248 LookupTablePropertiesList m_LookupTableProperties;
00249
00250
00251
00252 typedef itk::MemberCommand< Geometry2DDataVtkMapper3D > MemberCommandType;
00253 MemberCommandType::Pointer m_ImageMapperDeletedCommand;
00254 };
00255 }
00256 #endif