00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date: $ 00006 Version: $Revision: $ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #include "mitkRenderWindowFrame.h" 00019 00020 #include "mitkVtkLayerController.h" 00021 00022 #include <mitkStandardFileLocations.h> 00023 #include <mitkConfig.h> 00024 #include <itkObject.h> 00025 #include <itkMacro.h> 00026 #include <itksys/SystemTools.hxx> 00027 00028 #include <vtkRenderWindow.h> 00029 #include <vtkRenderer.h> 00030 #include <vtkObjectFactory.h> 00031 #include <vtkConfigure.h> 00032 00033 #include <vtkMitkRectangleProp.h> 00034 00035 mitk::RenderWindowFrame::RenderWindowFrame() 00036 { 00037 m_RenderWindow = NULL; 00038 m_RectangleRenderer = vtkRenderer::New(); 00039 00040 m_IsEnabled = false; 00041 } 00042 00043 mitk::RenderWindowFrame::~RenderWindowFrame() 00044 { 00045 if ( m_RenderWindow != NULL ) 00046 if ( this->IsEnabled() ) 00047 this->Disable(); 00048 00049 if ( m_RectangleRenderer != NULL ) 00050 m_RectangleRenderer->Delete(); 00051 00052 } 00053 00059 void mitk::RenderWindowFrame::SetRenderWindow( vtkRenderWindow* renderWindow ) 00060 { 00061 m_RenderWindow = renderWindow; 00062 } 00063 00068 vtkRenderWindow* mitk::RenderWindowFrame::GetRenderWindow() 00069 { 00070 return m_RenderWindow; 00071 } 00072 00078 vtkRenderer* mitk::RenderWindowFrame::GetVtkRenderer() 00079 { 00080 return m_RectangleRenderer; 00081 } 00082 00087 void mitk::RenderWindowFrame::Disable() 00088 { 00089 if ( this->IsEnabled()) 00090 { 00091 #if ( VTK_MAJOR_VERSION >= 5 ) 00092 m_RectangleRenderer->EraseOn(); 00093 #else 00094 m_RenderWindow->SetErase(1); 00095 #endif 00096 mitk::VtkLayerController::GetInstance(m_RenderWindow)->RemoveRenderer(m_RectangleRenderer); 00097 m_IsEnabled = false; 00098 } 00099 } 00100 00105 void mitk::RenderWindowFrame::Enable(float col1, float col2, float col3) 00106 { 00107 vtkMitkRectangleProp* rect = vtkMitkRectangleProp::New(); 00108 rect->SetRenderWindow(m_RenderWindow); 00109 rect->SetColor(col1, col2, col3); 00110 00111 m_RectangleRenderer->AddViewProp(rect); 00112 00113 rect->Delete(); 00114 00115 if(!mitk::VtkLayerController::GetInstance(m_RenderWindow)->IsRendererInserted( m_RectangleRenderer )) 00116 { 00117 #if ( VTK_MAJOR_VERSION >= 5 ) 00118 m_RectangleRenderer->EraseOff(); 00119 #else 00120 m_RenderWindow->SetErase(0); 00121 #endif 00122 m_RectangleRenderer->SetInteractive(0); 00123 00124 mitk::VtkLayerController::GetInstance(m_RenderWindow)->InsertForegroundRenderer(m_RectangleRenderer,true); 00125 00126 m_IsEnabled = true; 00127 } 00128 } 00133 bool mitk::RenderWindowFrame::IsEnabled() 00134 { 00135 return m_IsEnabled; 00136 } 00137 00138 void mitk::RenderWindowFrame::SetRequestedRegionToLargestPossibleRegion() 00139 { 00140 //nothing to do 00141 } 00142 00143 bool mitk::RenderWindowFrame::RequestedRegionIsOutsideOfTheBufferedRegion() 00144 { 00145 return false; 00146 } 00147 00148 bool mitk::RenderWindowFrame::VerifyRequestedRegion() 00149 { 00150 return true; 00151 } 00152 00153 void mitk::RenderWindowFrame::SetRequestedRegion(itk::DataObject*) 00154 { 00155 //nothing to do 00156 } 00157