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 MITKSURFACEDATAVTKMAPPER3D_H_HEADER_INCLUDED_C1907273
00020 #define MITKSURFACEDATAVTKMAPPER3D_H_HEADER_INCLUDED_C1907273
00021
00022 #include "mitkCommon.h"
00023 #include "mitkVtkMapper3D.h"
00024 #include "mitkSurface.h"
00025 #include "mitkBaseRenderer.h"
00026
00027 #include <vtkActor.h>
00028 #include <vtkOpenGLPolyDataMapper.h>
00029 #include <vtkPainterPolyDataMapper.h>
00030 #include <vtkPolyDataMapper.h>
00031 #include <vtkPolyDataNormals.h>
00032 #include <vtkPlaneCollection.h>
00033
00034 namespace mitk {
00035
00036
00037
00038
00039
00040
00041
00042
00043
00078 class MITK_CORE_EXPORT SurfaceVtkMapper3D : public VtkMapper3D
00079 {
00080 public:
00081
00082 mitkClassMacro(SurfaceVtkMapper3D, VtkMapper3D);
00083
00084 itkNewMacro(Self);
00085
00086 itkSetMacro(GenerateNormals, bool);
00087
00088 itkGetMacro(GenerateNormals, bool);
00089
00090
00091
00092 void SetImmediateModeRenderingOn(int on = 1);
00093
00094 itkGetMacro(ImmediateModeRenderingOn, int);
00095
00096 virtual const mitk::Surface* GetInput();
00097
00098 virtual vtkProp *GetVtkProp(mitk::BaseRenderer *renderer);
00099
00100 virtual void ApplyProperties(vtkActor* actor, mitk::BaseRenderer* renderer);
00101
00102 static void SetDefaultProperties(mitk::DataNode* node, mitk::BaseRenderer* renderer = NULL, bool overwrite = false);
00103
00104 protected:
00105 SurfaceVtkMapper3D();
00106
00107 virtual ~SurfaceVtkMapper3D();
00108
00109 virtual void GenerateData(mitk::BaseRenderer* renderer);
00110
00111 virtual void ResetMapper( mitk::BaseRenderer* renderer );
00112
00115 virtual void CheckForClippingProperty( mitk::BaseRenderer* renderer, mitk::BaseProperty *property );
00116
00117 bool m_GenerateNormals;
00118
00119
00120 int m_ImmediateModeRenderingOn;
00121
00122 public:
00123
00124 class LocalStorage : public mitk::Mapper::BaseLocalStorage
00125 {
00126 public:
00127
00128 vtkActor* m_Actor;
00129 vtkPolyDataMapper *m_VtkPolyDataMapper;
00130 vtkPolyDataNormals *m_VtkPolyDataNormals;
00131 vtkPlaneCollection *m_ClippingPlaneCollection;
00132
00133 itk::TimeStamp m_ShaderTimestampUpdate;
00134
00135 LocalStorage()
00136 {
00137 m_VtkPolyDataMapper = vtkOpenGLPolyDataMapper::New();
00138 m_VtkPolyDataNormals = vtkPolyDataNormals::New();
00139 m_Actor = vtkActor::New();
00140 m_ClippingPlaneCollection = vtkPlaneCollection::New();
00141
00142 m_Actor->SetMapper(m_VtkPolyDataMapper);
00143 }
00144
00145 ~LocalStorage()
00146 {
00147 m_VtkPolyDataMapper->Delete();
00148 m_VtkPolyDataNormals->Delete();
00149 m_Actor->Delete();
00150 m_ClippingPlaneCollection->Delete();
00151 }
00152 };
00153
00154 mitk::Mapper::LocalStorageHandler<LocalStorage> m_LSH;
00155
00156 static void ApplyMitkPropertiesToVtkProperty(mitk::DataNode *node, vtkProperty* property, mitk::BaseRenderer* renderer);
00157 static void SetDefaultPropertiesForVtkProperty(mitk::DataNode* node, mitk::BaseRenderer* renderer, bool overwrite);
00158 };
00159
00160 }
00161
00162 #endif