Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vtkAppendPolyData.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkAppendPolyData.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00040 #ifndef __vtkAppendPolyData_h
00041 #define __vtkAppendPolyData_h
00042 
00043 #include "vtkPolyDataToPolyDataFilter.h"
00044 
00045 class vtkCellArray;
00046 class vtkDataArray;
00047 class vtkPoints;
00048 class vtkPolyData;
00049 
00050 class VTK_GRAPHICS_EXPORT vtkAppendPolyData : public vtkPolyDataToPolyDataFilter
00051 {
00052 public:
00053   static vtkAppendPolyData *New();
00054 
00055   vtkTypeRevisionMacro(vtkAppendPolyData,vtkPolyDataToPolyDataFilter);
00056   void PrintSelf(ostream& os, vtkIndent indent);
00057 
00059 
00063   vtkSetMacro(UserManagedInputs,int);
00064   vtkGetMacro(UserManagedInputs,int);
00065   vtkBooleanMacro(UserManagedInputs,int);
00067 
00070   void AddInput(vtkPolyData *);
00071 
00074   void RemoveInput(vtkPolyData *);
00075 
00077 
00078   vtkPolyData *GetInput(int idx);
00079   vtkPolyData *GetInput() { return this->GetInput( 0 ); };
00081 
00084   void SetNumberOfInputs(int num);
00085 
00086   // Set Nth input, should only be used when UserManagedInputs is true.
00087   void SetInputByNumber(int num, vtkPolyData *input);
00088 
00090 
00097   vtkSetMacro(ParallelStreaming, int); 
00098   vtkGetMacro(ParallelStreaming, int); 
00099   vtkBooleanMacro(ParallelStreaming, int); 
00101 
00102 protected:
00103   vtkAppendPolyData();
00104   ~vtkAppendPolyData();
00105 
00106   // Flag for selecting parallel streaming behavior
00107   int ParallelStreaming;
00108 
00109   // Usual data generation method
00110   void Execute();
00111 
00112   void ComputeInputUpdateExtents(vtkDataObject *output);
00113 
00114   // An efficient way to append data/cells.
00115   void AppendData(vtkDataArray *dest, vtkDataArray *src, vtkIdType offset);
00116   void AppendDifferentPoints(vtkDataArray *dest, vtkDataArray *src,
00117                              vtkIdType offset);
00118   vtkIdType *AppendCells(vtkIdType *pDest, vtkCellArray *src,
00119                          vtkIdType offset);
00120 
00121  private:
00122   // hide the superclass' AddInput() from the user and the compiler
00123   void AddInput(vtkDataObject *)
00124     { vtkErrorMacro( << "AddInput() must be called with a vtkPolyData not a vtkDataObject."); };
00125   void RemoveInput(vtkDataObject *input)
00126     { this->vtkProcessObject::RemoveInput(input);
00127     this->vtkProcessObject::SqueezeInputArray();};
00128   int UserManagedInputs;
00129 private:
00130   vtkAppendPolyData(const vtkAppendPolyData&);  // Not implemented.
00131   void operator=(const vtkAppendPolyData&);  // Not implemented.
00132 };
00133 
00134 #endif
00135 
00136