MCPcopy Create free account
hub / github.com/MITK/MITK / GenerateDataForRenderer

Method GenerateDataForRenderer

Modules/Core/src/Rendering/mitkSurfaceVtkMapper2D.cpp:187–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

185}
186
187void mitk::SurfaceVtkMapper2D::GenerateDataForRenderer(mitk::BaseRenderer *renderer)
188{
189 const DataNode *node = GetDataNode();
190 auto *surface = static_cast<Surface *>(node->GetData());
191 const TimeGeometry *dataTimeGeometry = surface->GetTimeGeometry();
192 LocalStorage *localStorage = m_LSH.GetLocalStorage(renderer);
193
194 ScalarType time = renderer->GetTime();
195 int timestep = 0;
196
197 if (time > itk::NumericTraits<ScalarType>::NonpositiveMin())
198 timestep = dataTimeGeometry->TimePointToTimeStep(time);
199
200 vtkSmartPointer<vtkPolyData> inputPolyData = surface->GetVtkPolyData(timestep);
201 if ((inputPolyData == nullptr) || (inputPolyData->GetNumberOfPoints() < 1))
202 return;
203
204 // apply color and opacity read from the PropertyList
205 this->ApplyAllProperties(renderer);
206
207 const PlaneGeometry *planeGeometry = renderer->GetCurrentWorldPlaneGeometry();
208 if ((planeGeometry == nullptr) || (!planeGeometry->IsValid()) || (!planeGeometry->HasReferenceGeometry()))
209 {
210 return;
211 }
212
213 if (localStorage->m_Actor->GetMapper() == nullptr)
214 localStorage->m_Actor->SetMapper(localStorage->m_Mapper);
215
216 double origin[3];
217 origin[0] = planeGeometry->GetOrigin()[0];
218 origin[1] = planeGeometry->GetOrigin()[1];
219 origin[2] = planeGeometry->GetOrigin()[2];
220
221 double normal[3];
222 normal[0] = planeGeometry->GetNormal()[0];
223 normal[1] = planeGeometry->GetNormal()[1];
224 normal[2] = planeGeometry->GetNormal()[2];
225
226 localStorage->m_CuttingPlane->SetOrigin(origin);
227 localStorage->m_CuttingPlane->SetNormal(normal);
228 // Transform the data according to its geometry.
229 // See UpdateVtkTransform documentation for details.
230 vtkSmartPointer<vtkLinearTransform> vtktransform = GetDataNode()->GetVtkTransform(this->GetTimestep());
231 vtkSmartPointer<vtkTransformPolyDataFilter> filter = vtkSmartPointer<vtkTransformPolyDataFilter>::New();
232 filter->SetTransform(vtktransform);
233 filter->SetInputData(inputPolyData);
234 localStorage->m_Cutter->SetInputConnection(filter->GetOutputPort());
235 localStorage->m_Cutter->Update();
236
237 bool generateNormals = false;
238 node->GetBoolProperty("draw normals 2D", generateNormals);
239 if (generateNormals)
240 {
241 localStorage->m_NormalGlyph->SetInputConnection(localStorage->m_Cutter->GetOutputPort());
242 localStorage->m_NormalGlyph->Update();
243
244 localStorage->m_NormalMapper->SetInputConnection(localStorage->m_NormalGlyph->GetOutputPort());

Callers 1

UpdateMethod · 0.95

Calls 15

ApplyAllPropertiesMethod · 0.95
GetTimeMethod · 0.80
GetNumberOfPointsMethod · 0.80
GetMapperMethod · 0.80
SetMapperMethod · 0.80
SetNormalMethod · 0.80
SetInputConnectionMethod · 0.80
NewFunction · 0.50
GetDataMethod · 0.45
GetLocalStorageMethod · 0.45
TimePointToTimeStepMethod · 0.45
GetVtkPolyDataMethod · 0.45

Tested by

no test coverage detected