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 COMPOSITEMAPPER_H_HEADER_INCLUDED
00020 #define COMPOSITEMAPPER_H_HEADER_INCLUDED
00021
00022 #include "mitkGLMapper2D.h"
00023 #include "mitkVtkMapper2D.h"
00024 #include "mitkQBallImage.h"
00025 #include "mitkImageMapperGL2D.h"
00026 #include "mitkOdfVtkMapper2D.h"
00027 #include "mitkLevelWindowProperty.h"
00028
00029 namespace mitk {
00030
00031 class CopyImageMapper2D : public ImageMapperGL2D
00032 {
00033 public:
00034 mitkClassMacro(CopyImageMapper2D,ImageMapperGL2D);
00035 itkNewMacro(Self);
00036
00037 friend class CompositeMapper;
00038 };
00039
00040
00041
00042
00043 class CompositeMapper : public VtkMapper2D
00044 {
00045 public:
00046
00047 mitkClassMacro(CompositeMapper,VtkMapper2D);
00048 itkNewMacro(Self);
00049
00050 virtual void MitkRenderOverlay(BaseRenderer* renderer)
00051 {
00052 Enable2DOpenGL();
00053 m_ImgMapper->MitkRenderOverlay(renderer);
00054 Disable2DOpenGL();
00055 m_OdfMapper->MitkRenderOverlay(renderer);
00056 }
00057
00058 virtual void MitkRenderOpaqueGeometry(BaseRenderer* renderer)
00059 {
00060 Enable2DOpenGL();
00061 m_ImgMapper->MitkRenderOpaqueGeometry(renderer);
00062 Disable2DOpenGL();
00063 m_OdfMapper->MitkRenderOpaqueGeometry(renderer);
00064 if( mitk::RenderingManager::GetInstance()->GetNextLOD( renderer ) == 0 )
00065 {
00066 renderer->Modified();
00067 }
00068 }
00069
00070 virtual void MitkRenderTranslucentGeometry(BaseRenderer* renderer)
00071 {
00072 Enable2DOpenGL();
00073 m_ImgMapper->MitkRenderTranslucentGeometry(renderer);
00074 Disable2DOpenGL();
00075 m_OdfMapper->MitkRenderTranslucentGeometry(renderer);
00076 }
00077
00078 #if ( ( VTK_MAJOR_VERSION >= 5 ) && ( VTK_MINOR_VERSION>=2) )
00079 virtual void MitkRenderVolumetricGeometry(BaseRenderer* renderer)
00080 {
00081 Enable2DOpenGL();
00082 m_ImgMapper->MitkRenderVolumetricGeometry(renderer);
00083 Disable2DOpenGL();
00084 m_OdfMapper->MitkRenderVolumetricGeometry(renderer);
00085 }
00086 #endif
00087
00088 void SetDataNode(DataNode* node)
00089 {
00090 m_DataNode = node;
00091 m_ImgMapper->SetDataNode(node);
00092 m_OdfMapper->SetDataNode(node);
00093 }
00094
00095 bool IsVtkBased() const
00096 {
00097 return m_OdfMapper->IsVtkBased();
00098 }
00099
00100 bool HasVtkProp( const vtkProp* prop, BaseRenderer* renderer )
00101 {
00102 return m_OdfMapper->HasVtkProp(prop, renderer);
00103 }
00104
00105 void ReleaseGraphicsResources(vtkWindow* window)
00106 {
00107 m_ImgMapper->ReleaseGraphicsResources(window);
00108 m_OdfMapper->ReleaseGraphicsResources(window);
00109 }
00110
00111 static void SetDefaultProperties(DataNode* node, BaseRenderer* renderer = NULL, bool overwrite = false )
00112 {
00113 mitk::OdfVtkMapper2D<float,QBALL_ODFSIZE>::SetDefaultProperties(node, renderer, overwrite);
00114 mitk::CopyImageMapper2D::SetDefaultProperties(node, renderer, overwrite);
00115
00116 mitk::LevelWindow opaclevwin;
00117 opaclevwin.SetRangeMinMax(0,255);
00118 opaclevwin.SetWindowBounds(0,0);
00119 mitk::LevelWindowProperty::Pointer prop = mitk::LevelWindowProperty::New(opaclevwin);
00120 node->AddProperty( "opaclevelwindow", prop );
00121 }
00122
00123 bool IsLODEnabled( BaseRenderer * renderer ) const
00124 {
00125 return m_ImgMapper->IsLODEnabled(renderer) || m_OdfMapper->IsLODEnabled(renderer);
00126 }
00127
00128 vtkProp* GetProp(mitk::BaseRenderer* renderer)
00129 {
00130 return m_OdfMapper->GetProp(renderer);
00131 }
00132
00133 void SetGeometry3D(const mitk::Geometry3D* aGeometry3D)
00134 {
00135 m_ImgMapper->SetGeometry3D(aGeometry3D);
00136 m_OdfMapper->SetGeometry3D(aGeometry3D);
00137 }
00138
00139 void Enable2DOpenGL();
00140 void Disable2DOpenGL();
00141
00142 protected:
00143
00144 virtual void GenerateData()
00145 {
00146 m_OdfMapper->GenerateData();
00147 }
00148
00149 virtual void GenerateData(mitk::BaseRenderer* renderer)
00150 {
00151 m_ImgMapper->GenerateData(renderer);
00152 if( mitk::RenderingManager::GetInstance()->GetNextLOD( renderer ) > 0 )
00153 {
00154 m_OdfMapper->GenerateData(renderer);
00155 }
00156 }
00157
00158 CompositeMapper();
00159
00160 virtual ~CompositeMapper();
00161
00162 private:
00163
00164 mitk::OdfVtkMapper2D<float,QBALL_ODFSIZE>::Pointer m_OdfMapper;
00165 mitk::CopyImageMapper2D::Pointer m_ImgMapper;
00166
00167 };
00168
00169 }
00170
00171
00172
00173 #endif
00174