00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00023 #ifndef __vtkExtractPolyDataPiece_h
00024 #define __vtkExtractPolyDataPiece_h
00025 
00026 #include "vtkPolyDataAlgorithm.h"
00027 
00028 class vtkIdList;
00029 class vtkIntArray;
00030 
00031 class VTK_PARALLEL_EXPORT vtkExtractPolyDataPiece : public vtkPolyDataAlgorithm
00032 {
00033 public:
00034   static vtkExtractPolyDataPiece *New();
00035   vtkTypeMacro(vtkExtractPolyDataPiece, vtkPolyDataAlgorithm);
00036   void PrintSelf(ostream& os, vtkIndent indent);
00037   
00039 
00040   vtkSetMacro(CreateGhostCells, int);
00041   vtkGetMacro(CreateGhostCells, int);
00042   vtkBooleanMacro(CreateGhostCells, int);
00044   
00045 protected:
00046   vtkExtractPolyDataPiece();
00047   ~vtkExtractPolyDataPiece() {};
00048 
00049   
00050   int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00051   int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00052   int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00053  
00054   
00055   void ComputeCellTags(vtkIntArray *cellTags, vtkIdList *pointOwnership,
00056                        int piece, int numPieces, vtkPolyData *input);
00057   
00058   void AddGhostLevel(vtkPolyData *input, vtkIntArray *cellTags, int ghostLevel);
00059   
00060   int CreateGhostCells;
00061 private:
00062   vtkExtractPolyDataPiece(const vtkExtractPolyDataPiece&);  
00063   void operator=(const vtkExtractPolyDataPiece&);  
00064 };
00065 
00066 #endif