text: /*=========================================================================
  
    Program:   Visualization Toolkit
    Module:    vtkImageDataLIC2DExtentTranslator.cxx
  
    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 "vtkImageDataLIC2DExtentTranslator.h"
  
  #include "vtkObjectFactory.h" 
  #include "vtkImageDataLIC2D.h"
  
  vtkStandardNewMacro(vtkImageDataLIC2DExtentTranslator);
  vtkCxxSetObjectMacro(vtkImageDataLIC2DExtentTranslator, InputExtentTranslator, vtkExtentTranslator);
  //----------------------------------------------------------------------------
  vtkImageDataLIC2DExtentTranslator::vtkImageDataLIC2DExtentTranslator()
  {
    this->Algorithm = 0;
    this->InputExtentTranslator = 0;
    this->InputWholeExtent[0] = 
      this->InputWholeExtent[1] = 
      this->InputWholeExtent[2] = 
      this->InputWholeExtent[3] = 
      this->InputWholeExtent[4] = 
      this->InputWholeExtent[5] = 0;
  }
  
  //----------------------------------------------------------------------------
  vtkImageDataLIC2DExtentTranslator::~vtkImageDataLIC2DExtentTranslator()
  {
    this->SetInputExtentTranslator(0);
  }
  
  //----------------------------------------------------------------------------
  void vtkImageDataLIC2DExtentTranslator::SetAlgorithm(
    vtkImageDataLIC2D* alg)
  {
    if (this->Algorithm.GetPointer() != alg)
      {
      this->Algorithm = alg;
      this->Modified();
      }
  }
  
  //----------------------------------------------------------------------------
  vtkImageDataLIC2D* vtkImageDataLIC2DExtentTranslator::GetAlgorithm()
  {
    return this->Algorithm.GetPointer();
  }
  
  //----------------------------------------------------------------------------
  int vtkImageDataLIC2DExtentTranslator::PieceToExtentThreadSafe(int piece, int numPieces, 
                                       int ghostLevel, int *wholeExtent, 
                                       int *resultExtent, int splitMode, 
                                       int byPoints)
  {
    if (!this->Algorithm)
      {
      return this->Superclass::PieceToExtentThreadSafe(piece, numPieces, ghostLevel, wholeExtent,
        resultExtent, splitMode, byPoints);
      }
  
    // Let the input extent translator do the translation.
    int inExt[6];
    this->InputExtentTranslator->PieceToExtentThreadSafe(piece, numPieces,
      ghostLevel, this->InputWholeExtent, inExt, splitMode, byPoints);
    this->Algorithm->TranslateInputExtent(inExt, this->InputWholeExtent, resultExtent);
    return 1;
  }
  
  //----------------------------------------------------------------------------
  void vtkImageDataLIC2DExtentTranslator::PrintSelf( ostream & os, vtkIndent indent )
  {
    this->Superclass::PrintSelf( os, indent );
    
    os << indent << "Algorithm: "               << this->Algorithm << endl;
    os << indent << "InputWholeExtent: ("          
                 << this->InputWholeExtent[0]   << ", " 
                 << this->InputWholeExtent[1]   << ", "
                 << this->InputWholeExtent[2]   << ", "
                 << this->InputWholeExtent[3]   << ", "
                 << this->InputWholeExtent[4]   << ", "
                 << this->InputWholeExtent[5]   << ")" << endl;
    os << indent << "InputExtentTranslator: " 
                 << this->InputExtentTranslator << endl;
  }
  