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 #include "mitkGradientBackground.h"
00019
00020 #include "mitkVtkLayerController.h"
00021
00022
00023 #include <vtkRenderer.h>
00024 #include <vtkRenderWindow.h>
00025 #include <vtkMapper.h>
00026 #include <vtkActor.h>
00027 #include <vtkPolyDataMapper.h>
00028 #include <vtkPolyData.h>
00029 #include <vtkCamera.h>
00030 #include <vtkLookupTable.h>
00031 #include <vtkCellArray.h>
00032 #include <vtkUnsignedIntArray.h>
00033 #include <vtkPoints.h>
00034 #include <vtkPointData.h>
00035 #include <vtkObjectFactory.h>
00036 #include <vtkRendererCollection.h>
00037
00038
00039 mitk::GradientBackground::GradientBackground()
00040 {
00041 m_RenderWindow = NULL;
00042 m_Renderer = vtkRenderer::New();
00043 m_Actor = vtkActor::New();
00044 m_Mapper = vtkPolyDataMapper::New();
00045 m_Lut = vtkLookupTable::New();
00046 m_Plane = vtkPolyData::New();
00047
00048 vtkPoints* points = vtkPoints::New( );
00049 points->InsertPoint(0,-10,0,0);
00050 points->InsertPoint(1,-10,1,0);
00051 points->InsertPoint(2,10,1,0);
00052 points->InsertPoint(3,10,0,0);
00053
00054 vtkCellArray* cellArray = vtkCellArray::New();
00055 cellArray->InsertNextCell(4);
00056 cellArray->InsertCellPoint(0);
00057 cellArray->InsertCellPoint(1);
00058 cellArray->InsertCellPoint(2);
00059 cellArray->InsertCellPoint(3);
00060
00061 vtkUnsignedIntArray* data = vtkUnsignedIntArray::New();
00062 data->InsertTuple1(0,1);
00063 data->InsertTuple1(1,0);
00064 data->InsertTuple1(2,0);
00065 data->InsertTuple1(3,1);
00066
00067 m_Plane->SetPoints( points );
00068 m_Plane->SetPolys( cellArray );
00069 m_Plane->GetPointData()->SetScalars( data );
00070
00071 points->Delete();
00072 cellArray->Delete();
00073 data->Delete();
00074
00075 m_Lut->SetNumberOfColors( 2 );
00076 m_Lut->Build();
00077 m_Lut->SetTableValue( m_Lut->GetIndex(0), 1, 1, 1 );
00078 m_Lut->SetTableValue( m_Lut->GetIndex(1), 0, 0, 0 );
00079
00080 m_Mapper->SetInput( m_Plane );
00081 m_Mapper->SetLookupTable( m_Lut );
00082
00083
00084
00085 m_Actor->SetMapper( m_Mapper );
00086
00087 m_Renderer->AddActor( m_Actor );
00088 m_Renderer->InteractiveOff();
00089 m_Renderer->GetActiveCamera()->ParallelProjectionOn();
00090 m_Renderer->ResetCamera();
00091 m_Renderer->GetActiveCamera()->SetParallelScale(0.5);
00092 }
00093
00094 mitk::GradientBackground::~GradientBackground()
00095 {
00096 if ( m_RenderWindow != NULL )
00097 if ( this->IsEnabled() )
00098 this->Disable();
00099
00100 if ( m_Plane != NULL )
00101 m_Plane->Delete();
00102
00103 if( m_Lut != NULL )
00104 m_Lut->Delete();
00105
00106 if ( m_Mapper != NULL )
00107 m_Mapper->Delete();
00108
00109 if ( m_Actor!=NULL )
00110 m_Actor->Delete();
00111
00112 if ( m_Renderer != NULL )
00113 m_Renderer->Delete();
00114 }
00115
00121 void mitk::GradientBackground::SetRenderWindow( vtkRenderWindow * renderWindow )
00122 {
00123 m_RenderWindow = renderWindow;
00124 }
00125
00130 vtkRenderWindow* mitk::GradientBackground::GetRenderWindow()
00131 {
00132 return m_RenderWindow;
00133 }
00134
00140 vtkRenderer* mitk::GradientBackground::GetVtkRenderer()
00141 {
00142 return m_Renderer;
00143 }
00144
00148 vtkActor* mitk::GradientBackground::GetActor()
00149 {
00150 return m_Actor;
00151 }
00152
00157 vtkPolyDataMapper* mitk::GradientBackground::GetMapper()
00158 {
00159 return m_Mapper;
00160 }
00161
00162
00167 void mitk::GradientBackground::SetGradientColors( double r1, double g1, double b1, double r2, double g2, double b2 )
00168 {
00169 m_Lut->SetTableValue( m_Lut->GetIndex(0), r1, g1, b1 );
00170 m_Lut->SetTableValue( m_Lut->GetIndex(1), r2, g2, b2 );
00171 }
00172
00173
00174 void mitk::GradientBackground::SetUpperColor(double r, double g, double b )
00175 {
00176 m_Lut->SetTableValue( m_Lut->GetIndex(0), r, g, b );
00177 }
00178
00179
00180 void mitk::GradientBackground::SetLowerColor(double r, double g, double b )
00181 {
00182 m_Lut->SetTableValue( m_Lut->GetIndex(1), r, g, b );
00183 }
00184
00185
00190 void mitk::GradientBackground::Enable()
00191 {
00192 mitk::VtkLayerController::GetInstance(m_RenderWindow)->InsertBackgroundRenderer(m_Renderer,true);
00193 }
00194
00199 void mitk::GradientBackground::Disable()
00200 {
00201 if ( this->IsEnabled() )
00202 {
00203 mitk::VtkLayerController::GetInstance(m_RenderWindow)->RemoveRenderer(m_Renderer);
00204 }
00205 }
00206
00207
00208
00213 bool mitk::GradientBackground::IsEnabled()
00214 {
00215 if ( m_RenderWindow == NULL )
00216 return false;
00217 else
00218 return ( mitk::VtkLayerController::GetInstance(m_RenderWindow)->IsRendererInserted(m_Renderer));
00219 }
00220
00221 void mitk::GradientBackground::SetRequestedRegionToLargestPossibleRegion()
00222 {
00223
00224 }
00225
00226 bool mitk::GradientBackground::RequestedRegionIsOutsideOfTheBufferedRegion()
00227 {
00228 return false;
00229 }
00230
00231 bool mitk::GradientBackground::VerifyRequestedRegion()
00232 {
00233 return true;
00234 }
00235
00236 void mitk::GradientBackground::SetRequestedRegion(itk::DataObject*)
00237 {
00238
00239 }
00240