You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.0 KiB
127 lines
4.0 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkCompositeDataSet.cxx,v $
|
|
|
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
All rights reserved.
|
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
|
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
PURPOSE. See the above copyright notice for more information.
|
|
|
|
=========================================================================*/
|
|
#include "vtkCompositeDataSet.h"
|
|
|
|
#include "vtkAlgorithmOutput.h"
|
|
#include "vtkCompositeDataIterator.h"
|
|
#include "vtkCompositeDataPipeline.h"
|
|
#include "vtkDataSet.h"
|
|
#include "vtkInformation.h"
|
|
#include "vtkInformationVector.h"
|
|
#include "vtkInformationDataObjectKey.h"
|
|
#include "vtkInformationIntegerKey.h"
|
|
#include "vtkTrivialProducer.h"
|
|
|
|
vtkCxxRevisionMacro(vtkCompositeDataSet, "$Revision: 1.7.8.1 $");
|
|
|
|
vtkInformationKeyMacro(vtkCompositeDataSet,INDEX,Integer);
|
|
vtkInformationKeyMacro(vtkCompositeDataSet,COMPOSITE_DATA_SET,DataObject);
|
|
|
|
//----------------------------------------------------------------------------
|
|
vtkCompositeDataSet::vtkCompositeDataSet()
|
|
{
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
vtkCompositeDataSet::~vtkCompositeDataSet()
|
|
{
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkCompositeDataSet::Initialize()
|
|
{
|
|
this->Superclass::Initialize();
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkCompositeDataSet::SetPipelineInformation(vtkInformation* newInfo)
|
|
{
|
|
vtkInformation* oldInfo = this->PipelineInformation;
|
|
if(newInfo != oldInfo)
|
|
{
|
|
if(newInfo)
|
|
{
|
|
// Reference the new information.
|
|
newInfo->Register(this);
|
|
|
|
// Detach the output that used to be held by the new information.
|
|
if(vtkDataObject* oldData =
|
|
newInfo->Get(COMPOSITE_DATA_SET()))
|
|
{
|
|
oldData->Register(this);
|
|
oldData->SetPipelineInformation(0);
|
|
oldData->UnRegister(this);
|
|
}
|
|
|
|
// Tell the new information about this object.
|
|
newInfo->Set(COMPOSITE_DATA_SET(), this);
|
|
}
|
|
|
|
// Save the pointer to the new information.
|
|
this->PipelineInformation = newInfo;
|
|
|
|
if(oldInfo)
|
|
{
|
|
// Remove the old information's reference to us.
|
|
oldInfo->Set(COMPOSITE_DATA_SET(), 0);
|
|
|
|
// Remove our reference to the old information.
|
|
oldInfo->UnRegister(this);
|
|
}
|
|
}
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
vtkAlgorithmOutput* vtkCompositeDataSet::GetProducerPort()
|
|
{
|
|
// Make sure there is an executive.
|
|
if(!this->GetExecutive())
|
|
{
|
|
vtkTrivialProducer* tp = vtkTrivialProducer::New();
|
|
vtkCompositeDataPipeline* exec = vtkCompositeDataPipeline::New();
|
|
tp->SetExecutive(exec);
|
|
vtkInformation* portInfo =
|
|
tp->GetOutputPortInformation(0);
|
|
portInfo->Set(vtkCompositeDataPipeline::COMPOSITE_DATA_TYPE_NAME(),
|
|
this->GetClassName());
|
|
exec->Delete();
|
|
tp->SetOutput(this);
|
|
tp->Delete();
|
|
}
|
|
|
|
// Get the port from the executive.
|
|
return this->GetExecutive()->GetProducerPort(this);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
vtkCompositeDataSet* vtkCompositeDataSet::GetData(vtkInformation* info)
|
|
{
|
|
return info? vtkCompositeDataSet::SafeDownCast(info->Get(DATA_OBJECT())) : 0;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
vtkCompositeDataSet* vtkCompositeDataSet::GetData(vtkInformationVector* v,
|
|
int i)
|
|
{
|
|
return vtkCompositeDataSet::GetData(v->GetInformationObject(i));
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkCompositeDataSet::PrintSelf(ostream& os, vtkIndent indent)
|
|
{
|
|
// this->UpdateExtent
|
|
this->Superclass::PrintSelf(os,indent);
|
|
}
|
|
|
|
|