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 #include "mitkMapper.h"
00020 #include "mitkDataNode.h"
00021 #include "mitkBaseRenderer.h"
00022 #include "mitkProperties.h"
00023
00024 mitk::Mapper::Mapper()
00025 : m_VtkBased( true ), m_TimeStep( 0 )
00026 {
00027
00028 }
00029
00030
00031 mitk::Mapper::~Mapper()
00032 {
00033 }
00034
00035 mitk::BaseData* mitk::Mapper::GetData() const
00036 {
00037 return m_DataNode->GetData();
00038 }
00039
00040 mitk::DataNode* mitk::Mapper::GetDataNode() const
00041 {
00042 itkDebugMacro("returning DataNode address " << this->m_DataNode );
00043 return this->m_DataNode.GetPointer();
00044 }
00045
00046
00047 bool mitk::Mapper::GetColor(float rgb[3], mitk::BaseRenderer* renderer, const char* name) const
00048 {
00049 const mitk::DataNode* node=GetDataNode();
00050 if(node==NULL)
00051 return false;
00052
00053 return node->GetColor(rgb, renderer, name);
00054 }
00055
00056 bool mitk::Mapper::GetVisibility(bool &visible, mitk::BaseRenderer* renderer, const char* name) const
00057 {
00058 const mitk::DataNode* node=GetDataNode();
00059 if(node==NULL)
00060 return false;
00061
00062 return node->GetVisibility(visible, renderer, name);
00063 }
00064
00065 bool mitk::Mapper::GetOpacity(float &opacity, mitk::BaseRenderer* renderer, const char* name) const
00066 {
00067 const mitk::DataNode* node=GetDataNode();
00068 if(node==NULL)
00069 return false;
00070
00071 return node->GetOpacity(opacity, renderer, name);
00072 }
00073
00074 bool mitk::Mapper::GetLevelWindow(mitk::LevelWindow& levelWindow, mitk::BaseRenderer* renderer, const char* name) const
00075 {
00076 const mitk::DataNode* node=GetDataNode();
00077 if(node==NULL)
00078 return false;
00079
00080 return node->GetLevelWindow(levelWindow, renderer, name);
00081 }
00082
00083 bool mitk::Mapper::IsVisible(mitk::BaseRenderer* renderer, const char* name) const
00084 {
00085 bool visible=true;
00086 GetVisibility(visible, renderer, name);
00087 return visible;
00088 }
00089
00090 void mitk::Mapper::GenerateData()
00091 {
00092 }
00093
00094 void mitk::Mapper::GenerateData(mitk::BaseRenderer* )
00095 {
00096 }
00097
00098 void mitk::Mapper::CalculateTimeStep( mitk::BaseRenderer *renderer )
00099 {
00100 if ( ( renderer != NULL ) && ( m_DataNode.GetPointer() != NULL ) )
00101 {
00102 m_TimeStep = renderer->GetTimeStep(m_DataNode->GetData());
00103 }
00104 else
00105 {
00106 m_TimeStep = 0;
00107 }
00108 }
00109
00110 void mitk::Mapper::Update(mitk::BaseRenderer *renderer)
00111 {
00112 const DataNode* node = GetDataNode();
00113 assert(node!=NULL);
00114
00115
00116 unsigned int dataMTime = 0;
00117 mitk::BaseData::Pointer data = static_cast<mitk::BaseData *>(node->GetData());
00118
00119 if (data.IsNotNull())
00120 {
00121 dataMTime = data->GetMTime();
00122 }
00123
00124
00125 this->CalculateTimeStep( renderer );
00126
00127
00128 const TimeSlicedGeometry *dataTimeGeometry = data->GetTimeSlicedGeometry();
00129 if ( ( dataTimeGeometry == NULL )
00130 || ( dataTimeGeometry->GetTimeSteps() == 0 )
00131 || ( !dataTimeGeometry->IsValidTime( m_TimeStep ) ) )
00132 {
00133
00134
00135 this->ResetMapper( renderer );
00136 return;
00137 }
00138
00139 if(
00140 (m_LastUpdateTime < GetMTime()) ||
00141 (m_LastUpdateTime < node->GetDataReferenceChangedTime()) ||
00142 (m_LastUpdateTime < dataMTime) ||
00143 (renderer && (m_LastUpdateTime < renderer->GetTimeStepUpdateTime()))
00144 )
00145 {
00146 this->GenerateData();
00147 m_LastUpdateTime.Modified();
00148 }
00149
00150 this->GenerateData(renderer);
00151 }
00152
00153 void mitk::Mapper::SetDefaultProperties(mitk::DataNode* node, mitk::BaseRenderer* renderer, bool overwrite)
00154 {
00155 node->AddProperty( "visible", mitk::BoolProperty::New(true), renderer, overwrite );
00156 node->AddProperty( "layer", mitk::IntProperty::New(0), renderer, overwrite);
00157 node->AddProperty( "name", mitk::StringProperty::New("No Name!"), renderer, overwrite );
00158 }