Cloned library of VTK-5.0.0 with extra build files for internal package management.
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

/*=========================================================================
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);
}