Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# Hybrid/vtkImplicitModeller.h

Go to the documentation of this file.

    00001 /*=========================================================================
    00002
    00003   Program:   Visualization Toolkit
    00004   Module:    $RCSfile: vtkImplicitModeller.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 =========================================================================*/
    00094 #ifndef __vtkImplicitModeller_h
    00095 #define __vtkImplicitModeller_h
    00096
    00097 #include "vtkDataSetToImageFilter.h"
    00098
    00099 #define VTK_VOXEL_MODE   0
    00100 #define VTK_CELL_MODE    1
    00101
    00102 class vtkDataArray;
    00103 class vtkExtractGeometry;
    00104 class vtkMultiThreader;
    00105
    00106 class VTK_HYBRID_EXPORT vtkImplicitModeller : public vtkDataSetToImageFilter
    00107 {
    00108 public:
    00109   vtkTypeRevisionMacro(vtkImplicitModeller,vtkDataSetToImageFilter);
    00110   void PrintSelf(ostream& os, vtkIndent indent);
    00111
    00115   static vtkImplicitModeller *New();
    00116
    00119   float ComputeModelBounds(vtkDataSet *input = NULL);
    00120
    00122
    00123   vtkGetVectorMacro(SampleDimensions,int,3);
    00124   void SetSampleDimensions(int i, int j, int k);
    00125   void SetSampleDimensions(int dim[3]);
    00127
    00129
    00131   vtkSetClampMacro(MaximumDistance,float,0.0,1.0);
    00132   vtkGetMacro(MaximumDistance,float);
    00134
    00136
    00138   vtkSetVector6Macro(ModelBounds,float);
    00139   vtkGetVectorMacro(ModelBounds,float,6);
    00141
    00143
    00147   vtkSetMacro(AdjustBounds,int);
    00148   vtkGetMacro(AdjustBounds,int);
    00149   vtkBooleanMacro(AdjustBounds,int);
    00151
    00153
    00156   vtkSetClampMacro(AdjustDistance,float,-1.0,1.0);
    00157   vtkGetMacro(AdjustDistance,float);
    00159
    00161
    00163   vtkSetMacro(Capping,int);
    00164   vtkGetMacro(Capping,int);
    00165   vtkBooleanMacro(Capping,int);
    00167
    00169
    00171   vtkSetMacro(CapValue,float);
    00172   vtkGetMacro(CapValue,float);
    00174
    00176
    00181   vtkSetClampMacro(ProcessMode, int, 0, 1);
    00182   vtkGetMacro(ProcessMode, int);
    00183   void SetProcessModeToPerVoxel() {this->SetProcessMode(VTK_VOXEL_MODE);}
    00184   void SetProcessModeToPerCell()  {this->SetProcessMode(VTK_CELL_MODE);}
    00185   const char *GetProcessModeAsString(void);
    00187
    00189
    00191   vtkSetMacro(LocatorMaxLevel,int);
    00192   vtkGetMacro(LocatorMaxLevel,int);
    00194
    00196
    00197   vtkSetClampMacro( NumberOfThreads, int, 1, VTK_MAX_THREADS );
    00198   vtkGetMacro( NumberOfThreads, int );
    00200
    00205   void StartAppend();
    00206
    00212   void Append(vtkDataSet *input);
    00213
    00215   void EndAppend();
    00216
    00217   virtual void UpdateData(vtkDataObject *output);
    00218
    00219 protected:
    00220   vtkImplicitModeller();
    00221   ~vtkImplicitModeller();
    00222
    00223   void ExecuteData(vtkDataObject *);
    00224   void ExecuteInformation();
    00225
    00226   void Cap(vtkDataArray *s);
    00227
    00228   vtkMultiThreader *Threader;
    00229   int              NumberOfThreads;
    00230
    00231   int SampleDimensions[3];
    00232   float MaximumDistance;
    00233   float ModelBounds[6];
    00234   int Capping;
    00235   float CapValue;
    00236   int DataAppended;
    00237   int AdjustBounds;
    00238   float AdjustDistance;
    00239   int ProcessMode;
    00240   int LocatorMaxLevel;
    00241
    00242   int BoundsComputed; // flag to limit to one ComputeModelBounds per StartAppend
    00243   float InternalMaxDistance; // the max distance computed during that one call
    00244 private:
    00245   vtkImplicitModeller(const vtkImplicitModeller&);  // Not implemented.
    00246   void operator=(const vtkImplicitModeller&);  // Not implemented.
    00247 };
    00248
    00249 #endif
    00250
    00251