00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00048 #ifndef __vtkLoopSubdivisionFilter_h
00049 #define __vtkLoopSubdivisionFilter_h
00050 
00051 #include "vtkApproximatingSubdivisionFilter.h"
00052 
00053 class vtkPolyData;
00054 class vtkIntArray;
00055 class vtkPoints;
00056 class vtkIdList;
00057 
00058 class VTK_GRAPHICS_EXPORT vtkLoopSubdivisionFilter : public vtkApproximatingSubdivisionFilter
00059 {
00060 public:
00062 
00063   static vtkLoopSubdivisionFilter *New();
00064   vtkTypeMacro(vtkLoopSubdivisionFilter,vtkApproximatingSubdivisionFilter);
00066 
00067 protected:
00068   vtkLoopSubdivisionFilter () {};
00069   ~vtkLoopSubdivisionFilter () {};
00070 
00071   virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00072   
00073   void GenerateSubdivisionPoints (vtkPolyData *inputDS, vtkIntArray *edgeData,
00074                                   vtkPoints *outputPts,
00075                                   vtkPointData *outputPD);
00076   void GenerateEvenStencil (vtkIdType p1, vtkPolyData *polys,
00077                             vtkIdList *stencilIds, double *weights);
00078   void GenerateOddStencil (vtkIdType p1, vtkIdType p2, vtkPolyData *polys,
00079                            vtkIdList *stencilIds, double *weights);
00080 
00081   virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00082 
00083 private:
00084   vtkLoopSubdivisionFilter(const vtkLoopSubdivisionFilter&);  
00085   void operator=(const vtkLoopSubdivisionFilter&);  
00086 };
00087 
00088 #endif