Commit de5c0581 authored by Berk Geveci's avatar Berk Geveci
Browse files

ENH: Added new data types. Restructure of composite datasets....

ENH: Added new data types. Restructure of composite datasets. vtkMultiGroupDataSet is the new superclass with two subclasses: vtkMultiBlockDataSet and vtkHierarchicalDataSet
parent 3318eb4f
......@@ -60,10 +60,10 @@ vtkDistributedStreamTracer.cxx
vtkDummyController.cxx
vtkEnSightWriter.cxx
vtkExtractCTHPart.cxx
vtkExtractHierarchicalDataPiece.cxx
vtkExtractPolyDataPiece.cxx
vtkExtractUnstructuredGridPiece.cxx
vtkExtractUserDefinedPiece.cxx
vtkMultiGroupDataExtractPiece.cxx
vtkPKdTree.cxx
vtkMemoryLimitImageDataStreamer.cxx
vtkMultiProcessController.cxx
......@@ -97,7 +97,7 @@ vtkTransmitStructuredGridPiece.cxx
vtkTransmitPolyDataPiece.cxx
vtkTransmitUnstructuredGridPiece.cxx
vtkTreeCompositer.cxx
vtkXMLPHierarchicalDataWriter.cxx
vtkXMLPMultiGroupDataWriter.cxx
)
IF(VTK_HAS_EXODUS)
......
/*=========================================================================
Program: Visualization Toolkit
Module: vtkExtractHierarchicalDataPiece.cxx
Module: vtkMultiGroupDataExtractPiece.cxx
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
......@@ -12,7 +12,7 @@
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include "vtkExtractHierarchicalDataPiece.h"
#include "vtkMultiGroupDataExtractPiece.h"
#include "vtkExtentTranslator.h"
#include "vtkImageClip.h"
......@@ -20,7 +20,7 @@
#include "vtkExtractRectilinearGrid.h"
#include "vtkExtractGrid.h"
#include "vtkExtractUnstructuredGridPiece.h"
#include "vtkHierarchicalDataSet.h"
#include "vtkMultiGroupDataSet.h"
#include "vtkImageData.h"
#include "vtkInformation.h"
#include "vtkInformationVector.h"
......@@ -31,10 +31,10 @@
#include "vtkStructuredGrid.h"
#include "vtkUnstructuredGrid.h"
vtkCxxRevisionMacro(vtkExtractHierarchicalDataPiece, "1.3");
vtkStandardNewMacro(vtkExtractHierarchicalDataPiece);
vtkCxxRevisionMacro(vtkMultiGroupDataExtractPiece, "1.1");
vtkStandardNewMacro(vtkMultiGroupDataExtractPiece);
int vtkExtractHierarchicalDataPiece::RequestData(
int vtkMultiGroupDataExtractPiece::RequestData(
vtkInformation *vtkNotUsed(request),
vtkInformationVector **inputVector,
vtkInformationVector *outputVector)
......@@ -44,13 +44,13 @@ int vtkExtractHierarchicalDataPiece::RequestData(
vtkInformation *outInfo = outputVector->GetInformationObject(0);
// get the input and ouptut
vtkHierarchicalDataSet *input = vtkHierarchicalDataSet::SafeDownCast(
vtkMultiGroupDataSet *input = vtkMultiGroupDataSet::SafeDownCast(
inInfo->Get(vtkCompositeDataSet::COMPOSITE_DATA_SET()));
if (!input)
{
return 0;
}
vtkHierarchicalDataSet *output = vtkHierarchicalDataSet::SafeDownCast(
vtkMultiGroupDataSet *output = vtkMultiGroupDataSet::SafeDownCast(
outInfo->Get(vtkCompositeDataSet::COMPOSITE_DATA_SET()));
if (!output)
{
......@@ -67,7 +67,7 @@ int vtkExtractHierarchicalDataPiece::RequestData(
vtkDataObject *tmpDS;
unsigned int i;
for (i = 0; i < input->GetNumberOfLevels(); i++)
for (i = 0; i < input->GetNumberOfGroups(); i++)
{
tmpDS = input->GetDataSet(i, 0);
switch (tmpDS->GetDataObjectType())
......@@ -107,9 +107,9 @@ int vtkExtractHierarchicalDataPiece::RequestData(
return 1;
}
void vtkExtractHierarchicalDataPiece::ExtractImageData(
vtkImageData *imageData, vtkHierarchicalDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int level)
void vtkMultiGroupDataExtractPiece::ExtractImageData(
vtkImageData *imageData, vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int group)
{
vtkStreamingDemandDrivenPipeline *extractExecutive;
vtkInformation *extractInfo;
......@@ -139,15 +139,15 @@ void vtkExtractHierarchicalDataPiece::ExtractImageData(
extractID->Update();
vtkImageData *extractOutput = vtkImageData::New();
extractOutput->ShallowCopy(extractID->GetOutput());
output->SetDataSet(level, piece, extractOutput);
output->SetDataSet(group, piece, extractOutput);
extractID->Delete();
translate->Delete();
extractOutput->Delete();
}
void vtkExtractHierarchicalDataPiece::ExtractPolyData(
vtkPolyData *polyData, vtkHierarchicalDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int level)
void vtkMultiGroupDataExtractPiece::ExtractPolyData(
vtkPolyData *polyData, vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int group)
{
vtkStreamingDemandDrivenPipeline *extractExecutive;
vtkInformation *extractInfo;
......@@ -169,14 +169,14 @@ void vtkExtractHierarchicalDataPiece::ExtractPolyData(
extractPD->Update();
vtkPolyData *extractOutput = vtkPolyData::New();
extractOutput->ShallowCopy(extractPD->GetOutput());
output->SetDataSet(level, piece, extractOutput);
output->SetDataSet(group, piece, extractOutput);
extractPD->Delete();
extractOutput->Delete();
}
void vtkExtractHierarchicalDataPiece::ExtractRectilinearGrid(
vtkRectilinearGrid *rGrid, vtkHierarchicalDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int level)
void vtkMultiGroupDataExtractPiece::ExtractRectilinearGrid(
vtkRectilinearGrid *rGrid, vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int group)
{
vtkStreamingDemandDrivenPipeline *extractExecutive;
vtkInformation *extractInfo;
......@@ -206,15 +206,15 @@ void vtkExtractHierarchicalDataPiece::ExtractRectilinearGrid(
extractRG->Update();
vtkRectilinearGrid *extractOutput = vtkRectilinearGrid::New();
extractOutput->ShallowCopy(extractRG->GetOutput());
output->SetDataSet(level, piece, extractOutput);
output->SetDataSet(group, piece, extractOutput);
extractRG->Delete();
translate->Delete();
extractOutput->Delete();
}
void vtkExtractHierarchicalDataPiece::ExtractStructuredGrid(
vtkStructuredGrid *sGrid, vtkHierarchicalDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int level)
void vtkMultiGroupDataExtractPiece::ExtractStructuredGrid(
vtkStructuredGrid *sGrid, vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int group)
{
vtkStreamingDemandDrivenPipeline *extractExecutive;
vtkInformation *extractInfo;
......@@ -244,15 +244,15 @@ void vtkExtractHierarchicalDataPiece::ExtractStructuredGrid(
extractSG->Update();
vtkStructuredGrid *extractOutput = vtkStructuredGrid::New();
extractOutput->ShallowCopy(extractSG->GetOutput());
output->SetDataSet(level, piece, extractOutput);
output->SetDataSet(group, piece, extractOutput);
extractSG->Delete();
translate->Delete();
extractOutput->Delete();
}
void vtkExtractHierarchicalDataPiece::ExtractUnstructuredGrid(
vtkUnstructuredGrid *uGrid, vtkHierarchicalDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int level)
void vtkMultiGroupDataExtractPiece::ExtractUnstructuredGrid(
vtkUnstructuredGrid *uGrid, vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel, unsigned int group)
{
vtkStreamingDemandDrivenPipeline *extractExecutive;
vtkInformation *extractInfo;
......@@ -275,12 +275,12 @@ void vtkExtractHierarchicalDataPiece::ExtractUnstructuredGrid(
extractUG->Update();
vtkUnstructuredGrid *extractOutput = vtkUnstructuredGrid::New();
extractOutput->ShallowCopy(extractUG->GetOutput());
output->SetDataSet(level, piece, extractOutput);
output->SetDataSet(group, piece, extractOutput);
extractUG->Delete();
extractOutput->Delete();
}
void vtkExtractHierarchicalDataPiece::PrintSelf(ostream &os, vtkIndent indent)
void vtkMultiGroupDataExtractPiece::PrintSelf(ostream &os, vtkIndent indent)
{
this->Superclass::PrintSelf(os, indent);
}
/*=========================================================================
Program: Visualization Toolkit
Module: vtkExtractHierarchicalDataPiece.h
Module: vtkMultiGroupDataExtractPiece.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
......@@ -12,18 +12,18 @@
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkExtractHierarchicalDataPiece
// .NAME vtkMultiGroupDataExtractPiece
// .SECTION Description
// vtkExtractHierarchicalDataPiece returns the appropriate piece of each
// sub-dataset in the vtkHierarchicalDataSet.
// vtkMultiGroupDataExtractPiece returns the appropriate piece of each
// sub-dataset in the vtkMultiGroupDataSet.
// This filter can handle sub-datasets of type vtkImageData, vtkPolyData,
// vtkRectilinearGrid, vtkStructuredGrid, and vtkUnstructuredGrid; it does
// not handle sub-grids of type vtkHierarchicalDataSet.
// not handle sub-grids of type vtkMultiGroupDataSet.
#ifndef __vtkExtractHierarchicalDataPiece_h
#define __vtkExtractHierarchicalDataPiece_h
#ifndef __vtkMultiGroupDataExtractPiece_h
#define __vtkMultiGroupDataExtractPiece_h
#include "vtkHierarchicalDataSetAlgorithm.h"
#include "vtkMultiGroupDataSetAlgorithm.h"
class vtkImageData;
class vtkPolyData;
......@@ -31,45 +31,45 @@ class vtkRectilinearGrid;
class vtkStructuredGrid;
class vtkUnstructuredGrid;
class VTK_PARALLEL_EXPORT vtkExtractHierarchicalDataPiece : public vtkHierarchicalDataSetAlgorithm
class VTK_PARALLEL_EXPORT vtkMultiGroupDataExtractPiece : public vtkMultiGroupDataSetAlgorithm
{
public:
static vtkExtractHierarchicalDataPiece* New();
vtkTypeRevisionMacro(vtkExtractHierarchicalDataPiece, vtkHierarchicalDataSetAlgorithm);
static vtkMultiGroupDataExtractPiece* New();
vtkTypeRevisionMacro(vtkMultiGroupDataExtractPiece, vtkMultiGroupDataSetAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
protected:
vtkExtractHierarchicalDataPiece() {}
~vtkExtractHierarchicalDataPiece() {}
vtkMultiGroupDataExtractPiece() {}
~vtkMultiGroupDataExtractPiece() {}
virtual int RequestData(vtkInformation*,
vtkInformationVector**,
vtkInformationVector*);
void ExtractImageData(vtkImageData *imageData,
vtkHierarchicalDataSet *output,
vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel,
unsigned int level);
unsigned int group);
void ExtractPolyData(vtkPolyData *polyData,
vtkHierarchicalDataSet *output,
vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel,
unsigned int level);
unsigned int group);
void ExtractRectilinearGrid(vtkRectilinearGrid *rGrid,
vtkHierarchicalDataSet *output,
vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel,
unsigned int level);
unsigned int group);
void ExtractStructuredGrid(vtkStructuredGrid *sGrid,
vtkHierarchicalDataSet *output,
vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel,
unsigned int level);
unsigned int group);
void ExtractUnstructuredGrid(vtkUnstructuredGrid *uGrid,
vtkHierarchicalDataSet *output,
vtkMultiGroupDataSet *output,
int piece, int numberOfPieces, int ghostLevel,
unsigned int level);
unsigned int group);
private:
vtkExtractHierarchicalDataPiece(const vtkExtractHierarchicalDataPiece&); // Not implemented.
void operator=(const vtkExtractHierarchicalDataPiece&); // Not implemented.
vtkMultiGroupDataExtractPiece(const vtkMultiGroupDataExtractPiece&); // Not implemented.
void operator=(const vtkMultiGroupDataExtractPiece&); // Not implemented.
};
#endif
/*=========================================================================
Program: ParaView
Module: vtkXMLPHierarchicalDataWriter.cxx
Module: vtkXMLPMultiGroupDataWriter.cxx
Copyright (c) Kitware, Inc.
All rights reserved.
......@@ -12,35 +12,35 @@
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include "vtkXMLPHierarchicalDataWriter.h"
#include "vtkXMLPMultiGroupDataWriter.h"
#include "vtkMultiProcessController.h"
#include "vtkObjectFactory.h"
//----------------------------------------------------------------------------
vtkStandardNewMacro(vtkXMLPHierarchicalDataWriter);
vtkCxxRevisionMacro(vtkXMLPHierarchicalDataWriter, "1.2");
vtkStandardNewMacro(vtkXMLPMultiGroupDataWriter);
vtkCxxRevisionMacro(vtkXMLPMultiGroupDataWriter, "1.1");
vtkCxxSetObjectMacro(vtkXMLPHierarchicalDataWriter,
vtkCxxSetObjectMacro(vtkXMLPMultiGroupDataWriter,
Controller,
vtkMultiProcessController);
//----------------------------------------------------------------------------
vtkXMLPHierarchicalDataWriter::vtkXMLPHierarchicalDataWriter()
vtkXMLPMultiGroupDataWriter::vtkXMLPMultiGroupDataWriter()
{
this->Controller = 0;
this->SetController(vtkMultiProcessController::GetGlobalController());
}
//----------------------------------------------------------------------------
vtkXMLPHierarchicalDataWriter::~vtkXMLPHierarchicalDataWriter()
vtkXMLPMultiGroupDataWriter::~vtkXMLPMultiGroupDataWriter()
{
this->SetController(0);
}
//----------------------------------------------------------------------------
void vtkXMLPHierarchicalDataWriter::PrintSelf(ostream& os, vtkIndent indent)
void vtkXMLPMultiGroupDataWriter::PrintSelf(ostream& os, vtkIndent indent)
{
this->Superclass::PrintSelf(os, indent);
......@@ -56,7 +56,7 @@ void vtkXMLPHierarchicalDataWriter::PrintSelf(ostream& os, vtkIndent indent)
}
//----------------------------------------------------------------------------
void vtkXMLPHierarchicalDataWriter::FillDataTypes(vtkHierarchicalDataSet* hdInput)
void vtkXMLPMultiGroupDataWriter::FillDataTypes(vtkMultiGroupDataSet* hdInput)
{
this->Superclass::FillDataTypes(hdInput);
......@@ -77,7 +77,10 @@ void vtkXMLPHierarchicalDataWriter::FillDataTypes(vtkHierarchicalDataSet* hdInpu
for (int i=1; i<numProcs; i++)
{
this->Controller->Receive(
dataTypes, numBlocks, i, vtkMultiProcessController::XML_WRITER_DATA_INFO);
dataTypes,
numBlocks,
i,
vtkMultiProcessController::XML_WRITER_DATA_INFO);
for (unsigned int j=0; j<numBlocks; j++)
{
if (dataTypes[j] >= 0)
......
/*=========================================================================
Program: ParaView
Module: vtkXMLPHierarchicalDataWriter.h
Module: vtkXMLPMultiGroupDataWriter.h
Copyright (c) Kitware, Inc.
All rights reserved.
......@@ -12,24 +12,24 @@
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkXMLPHierarchicalDataWriter - Writer for hierarchical datasets
// .NAME vtkXMLPMultiGroupDataWriter - Writer for hierarchical datasets
// .SECTION Description
// vtkXMLHierarchicalDataWriter writes (in parallel or serially) the VTK
// vtkXMLMultiGroupDataWriter writes (in parallel or serially) the VTK
// XML hierarchical and hierarchical box files. XML hierarchical data files
// are meta-files that point to a list of serial VTK XML files.
#ifndef __vtkXMLPHierarchicalDataWriter_h
#define __vtkXMLPHierarchicalDataWriter_h
#ifndef __vtkXMLPMultiGroupDataWriter_h
#define __vtkXMLPMultiGroupDataWriter_h
#include "vtkXMLHierarchicalDataWriter.h"
#include "vtkXMLMultiGroupDataWriter.h"
class vtkMultiProcessController;
class VTK_PARALLEL_EXPORT vtkXMLPHierarchicalDataWriter : public vtkXMLHierarchicalDataWriter
class VTK_PARALLEL_EXPORT vtkXMLPMultiGroupDataWriter : public vtkXMLMultiGroupDataWriter
{
public:
static vtkXMLPHierarchicalDataWriter* New();
vtkTypeRevisionMacro(vtkXMLPHierarchicalDataWriter,vtkXMLHierarchicalDataWriter);
static vtkXMLPMultiGroupDataWriter* New();
vtkTypeRevisionMacro(vtkXMLPMultiGroupDataWriter,vtkXMLMultiGroupDataWriter);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
......@@ -42,16 +42,16 @@ public:
vtkGetObjectMacro(Controller, vtkMultiProcessController);
protected:
vtkXMLPHierarchicalDataWriter();
~vtkXMLPHierarchicalDataWriter();
vtkXMLPMultiGroupDataWriter();
~vtkXMLPMultiGroupDataWriter();
virtual void FillDataTypes(vtkHierarchicalDataSet*);
virtual void FillDataTypes(vtkMultiGroupDataSet*);
vtkMultiProcessController* Controller;
private:
vtkXMLPHierarchicalDataWriter(const vtkXMLPHierarchicalDataWriter&); // Not implemented.
void operator=(const vtkXMLPHierarchicalDataWriter&); // Not implemented.
vtkXMLPMultiGroupDataWriter(const vtkXMLPMultiGroupDataWriter&); // Not implemented.
void operator=(const vtkXMLPMultiGroupDataWriter&); // Not implemented.
};
#endif
......@@ -68,6 +68,7 @@ vtkLightCollection.cxx
vtkLightKit.cxx
vtkMapper.cxx
vtkMapperCollection.cxx
vtkMultiGroupPolyDataMapper.cxx
vtkOBJExporter.cxx
vtkOOGLExporter.cxx
vtkParallelCoordinatesActor.cxx
......
......@@ -13,291 +13,19 @@
=========================================================================*/
#include "vtkInformation.h"
#include "vtkMapper.h"
#include "vtkExecutive.h"
#include "vtkCompositeDataPipeline.h"
#include "vtkCompositeDataSet.h"
#include "vtkCompositeDataIterator.h"
#include "vtkHierarchicalDataSet.h"
#include "vtkPolyDataMapper.h"
#include "vtkObjectFactory.h"
#include "vtkHierarchicalPolyDataMapper.h"
#include "vtkPolyData.h"
#include "vtkMath.h"
#include "vtkGarbageCollector.h"
#include <vtkstd/vector>
#include "vtkObjectFactory.h"
vtkCxxRevisionMacro(vtkHierarchicalPolyDataMapper, "1.6");
vtkCxxRevisionMacro(vtkHierarchicalPolyDataMapper, "1.7");
vtkStandardNewMacro(vtkHierarchicalPolyDataMapper);
class vtkHierarchicalPolyDataMapperInternals
{
public:
vtkstd::vector<vtkPolyDataMapper*> Mappers;
};
vtkHierarchicalPolyDataMapper::vtkHierarchicalPolyDataMapper()
{
this->Internal = new vtkHierarchicalPolyDataMapperInternals;
}
vtkHierarchicalPolyDataMapper::~vtkHierarchicalPolyDataMapper()
{
for(unsigned int i=0;i<this->Internal->Mappers.size();i++)
{
this->Internal->Mappers[i]->UnRegister(this);
}
this->Internal->Mappers.clear();
delete this->Internal;
}
// Specify the type of data this mapper can handle. If we are
// working with a regular (not hierarchical) pipeline, then we
// need vtkPolyData. For composite data pipelines, then
// vtkHierarchicalDataSet is required, and we'll check when
// building our structure whether all the part of the composite
// data set are polydata.
int vtkHierarchicalPolyDataMapper::FillInputPortInformation(
int vtkNotUsed(port), vtkInformation* info)
{
info->Set(vtkAlgorithm::INPUT_REQUIRED_DATA_TYPE(), "vtkPolyData");
info->Set(vtkCompositeDataPipeline::INPUT_REQUIRED_COMPOSITE_DATA_TYPE(),
"vtkHierarchicalDataSet");
return 1;
}
// When the structure is out-of-date, recreate it by
// creating a mapper for each input data.
void vtkHierarchicalPolyDataMapper::BuildPolyDataMapper()
{
int warnOnce = 0;
//Delete pdmappers if they already exist.
for(unsigned int i=0;i<this->Internal->Mappers.size();i++)
{
this->Internal->Mappers[i]->UnRegister(this);
}
this->Internal->Mappers.clear();
//Get the HierarchicalDataSet from the input
vtkInformation* inInfo = this->GetExecutive()->GetInputInformation(0,0);
vtkHierarchicalDataSet *input = vtkHierarchicalDataSet::SafeDownCast(
inInfo->Get(vtkCompositeDataSet::COMPOSITE_DATA_SET()));
// If it isn't hierarchical, maybe it is just a plain vtkPolyData
if(!input)
{
vtkPolyData *pd = vtkPolyData::SafeDownCast(
this->GetExecutive()->GetInputData(0, 0));
if ( pd )
{
// Make a copy of the data to break the pipeline here
vtkPolyData *newpd = vtkPolyData::New();
newpd->ShallowCopy(pd);
vtkPolyDataMapper *pdmapper = vtkPolyDataMapper::New();
pdmapper->Register( this );
pdmapper->SetInput(newpd);
this->Internal->Mappers.push_back(pdmapper);
newpd->Delete();
pdmapper->Delete();
}
}
else
{
//for each data set build a vtkPolyDataMapper
vtkCompositeDataIterator* iter = input->NewIterator();
iter->GoToFirstItem();
while (!iter->IsDoneWithTraversal())
{
vtkPolyData* pd = vtkPolyData::SafeDownCast(iter->GetCurrentDataObject());
if (pd)
{
// Make a copy of the data to break the pipeline here
vtkPolyData *newpd = vtkPolyData::New();
newpd->ShallowCopy(pd);
vtkPolyDataMapper *pdmapper = vtkPolyDataMapper::New();
pdmapper->Register(this);
pdmapper->SetInput(newpd);
this->Internal->Mappers.push_back(pdmapper);
newpd->Delete();
pdmapper->Delete();
}
// This is not polydata - warn the user that there are non-polydata
// parts to this data set which will not be rendered by this mapper
else
{
if ( !warnOnce )
{
vtkErrorMacro("All data in the hierachical dataset must be polydata.");
warnOnce = 1;
}
}
iter->GoToNextItem();
}
iter->Delete();
}
this->InternalMappersBuildTime.Modified();
}
void vtkHierarchicalPolyDataMapper::Render(vtkRenderer *ren, vtkActor *a)
{
//If the PolyDataMappers are not up-to-date then rebuild them
vtkCompositeDataPipeline * executive =
vtkCompositeDataPipeline::SafeDownCast(this->GetExecutive());
if(executive->GetPipelineMTime() > this->InternalMappersBuildTime.GetMTime())
{
this->BuildPolyDataMapper();
}
this->TimeToDraw = 0;
//Call Render() on each of the PolyDataMappers
for(unsigned int i=0;i<this->Internal->Mappers.size();i++)
{
if ( this->ClippingPlanes !=
this->Internal->Mappers[i]->GetClippingPlanes() )
{
this->Internal->Mappers[i]->SetClippingPlanes( this->ClippingPlanes );
}
this->Internal->Mappers[i]->SetLookupTable(
this->GetLookupTable());
this->Internal->Mappers[i]->SetScalarVisibility(
this->GetScalarVisibility());
this->Internal->Mappers[i]->SetUseLookupTableScalarRange(
this->GetUseLookupTableScalarRange());
this->Internal->Mappers[i]->SetScalarRange(
this->GetScalarRange());
this->Internal->Mappers[i]->SetImmediateModeRendering(
this->GetImmediateModeRendering());
this->Internal->Mappers[i]->SetColorMode(this->GetColorMode());
this->Internal->Mappers[i]->SetInterpolateScalarsBeforeMapping(
this->GetInterpolateScalarsBeforeMapping());
this->Internal->Mappers[i]->SetScalarMode(this->GetScalarMode());
if ( this->ScalarMode == VTK_SCALAR_MODE_USE_POINT_FIELD_DATA ||
this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_FIELD_DATA )
{
if ( this->ArrayAccessMode == VTK_GET_ARRAY_BY_ID )
{
this->Internal->Mappers[i]->ColorByArrayComponent(
this->ArrayId,ArrayComponent);