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.
146 lines
5.1 KiB
146 lines
5.1 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkBranchExtentTranslator.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 "vtkBranchExtentTranslator.h"
|
|
#include "vtkObjectFactory.h"
|
|
#include "vtkSource.h"
|
|
#include "vtkImageData.h"
|
|
|
|
vtkCxxRevisionMacro(vtkBranchExtentTranslator, "$Revision: 1.15 $");
|
|
vtkStandardNewMacro(vtkBranchExtentTranslator);
|
|
|
|
vtkCxxSetObjectMacro(vtkBranchExtentTranslator,OriginalSource,vtkImageData);
|
|
|
|
//----------------------------------------------------------------------------
|
|
vtkBranchExtentTranslator::vtkBranchExtentTranslator()
|
|
{
|
|
this->OriginalSource = NULL;
|
|
this->AssignedPiece = 0;
|
|
this->AssignedNumberOfPieces = 1;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
vtkBranchExtentTranslator::~vtkBranchExtentTranslator()
|
|
{
|
|
this->SetOriginalSource(NULL);
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
int vtkBranchExtentTranslator::PieceToExtent()
|
|
{
|
|
//cerr << this << " PieceToExtent: " << this->Piece << " of " << this->NumberOfPieces << endl;
|
|
//cerr << "OriginalData: " << this->OriginalSource << endl;
|
|
//cerr << "OriginalData is of type " << this->OriginalSource->GetClassName() << endl;
|
|
//cerr << "OriginalSource: " << this->OriginalSource->GetSource() << endl;
|
|
//cerr << "OriginalSource is of type: " << this->OriginalSource->GetSource()->GetClassName() << endl;
|
|
|
|
|
|
if (this->OriginalSource == NULL)
|
|
{ // If the user has not set the original source, then just default
|
|
// to the method in the superclass.
|
|
return this->vtkExtentTranslator::PieceToExtent();
|
|
}
|
|
|
|
this->OriginalSource->UpdateInformation();
|
|
this->OriginalSource->GetWholeExtent(this->Extent);
|
|
|
|
//cerr << this << "WholeExtent: " << this->Extent[0] << ", " << this->Extent[1] << ", "
|
|
// << this->Extent[2] << ", " << this->Extent[3] << ", "
|
|
// << this->Extent[4] << ", " << this->Extent[5] << endl;
|
|
|
|
if (this->SplitExtent(this->Piece, this->NumberOfPieces, this->Extent, 3) == 0)
|
|
{
|
|
//cerr << "Split thinks nothing is in the piece" << endl;
|
|
//cerr << this << " Split: " << this->Extent[0] << ", " << this->Extent[1] << ", "
|
|
// << this->Extent[2] << ", " << this->Extent[3] << ", "
|
|
// << this->Extent[4] << ", " << this->Extent[5] << endl;
|
|
// Nothing in this piece.
|
|
this->Extent[0] = this->Extent[2] = this->Extent[4] = 0;
|
|
this->Extent[1] = this->Extent[3] = this->Extent[5] = -1;
|
|
//cerr << this << " Extent: " << this->Extent[0] << ", " << this->Extent[1] << ", "
|
|
// << this->Extent[2] << ", " << this->Extent[3] << ", "
|
|
// << this->Extent[4] << ", " << this->Extent[5] << endl;
|
|
return 0;
|
|
}
|
|
|
|
//cerr << this << " Split: " << this->Extent[0] << ", " << this->Extent[1] << ", "
|
|
// << this->Extent[2] << ", " << this->Extent[3] << ", "
|
|
// << this->Extent[4] << ", " << this->Extent[5] << endl;
|
|
|
|
// Clip with the whole extent passed in.
|
|
if (this->Extent[0] < this->WholeExtent[0])
|
|
{
|
|
this->Extent[0] = this->WholeExtent[0];
|
|
}
|
|
if (this->Extent[1] > this->WholeExtent[1])
|
|
{
|
|
this->Extent[1] = this->WholeExtent[1];
|
|
}
|
|
if (this->Extent[2] < this->WholeExtent[2])
|
|
{
|
|
this->Extent[2] = this->WholeExtent[2];
|
|
}
|
|
if (this->Extent[3] > this->WholeExtent[3])
|
|
{
|
|
this->Extent[3] = this->WholeExtent[3];
|
|
}
|
|
if (this->Extent[4] < this->WholeExtent[4])
|
|
{
|
|
this->Extent[4] = this->WholeExtent[4];
|
|
}
|
|
if (this->Extent[5] > this->WholeExtent[5])
|
|
{
|
|
this->Extent[5] = this->WholeExtent[5];
|
|
}
|
|
|
|
|
|
if (this->Extent[0] > this->Extent[1] ||
|
|
this->Extent[2] > this->Extent[3] ||
|
|
this->Extent[4] > this->Extent[5])
|
|
{
|
|
this->Extent[0] = this->Extent[2] = this->Extent[4] = 0;
|
|
this->Extent[1] = this->Extent[3] = this->Extent[5] = -1;
|
|
//cerr << this << " Extent: " << this->Extent[0] << ", " << this->Extent[1] << ", "
|
|
// << this->Extent[2] << ", " << this->Extent[3] << ", "
|
|
// << this->Extent[4] << ", " << this->Extent[5] << endl;
|
|
return 0;
|
|
}
|
|
|
|
//cerr << this << " Extent: " << this->Extent[0] << ", " << this->Extent[1] << ", "
|
|
// << this->Extent[2] << ", " << this->Extent[3] << ", "
|
|
// << this->Extent[4] << ", " << this->Extent[5] << endl;
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
void vtkBranchExtentTranslator::PrintSelf(ostream& os, vtkIndent indent)
|
|
{
|
|
this->Superclass::PrintSelf(os,indent);
|
|
|
|
os << indent << "Original Source: (" << this->OriginalSource << ")\n";
|
|
|
|
os << indent << "AssignedPiece: " << this->AssignedPiece << endl;
|
|
os << indent << "AssignedNumberOfPieces: " << this->AssignedNumberOfPieces << endl;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|