VTK
dox/Graphics/vtkExtractSelection.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkExtractSelection.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00033 #ifndef __vtkExtractSelection_h
00034 #define __vtkExtractSelection_h
00035 
00036 #include "vtkExtractSelectionBase.h"
00037 
00038 class vtkExtractSelectedBlock;
00039 class vtkExtractSelectedFrustum;
00040 class vtkExtractSelectedIds;
00041 class vtkExtractSelectedLocations;
00042 class vtkExtractSelectedRows;
00043 class vtkExtractSelectedThresholds;
00044 class vtkProbeSelectedLocations;
00045 class vtkSelection;
00046 class vtkSelectionNode;
00047 
00048 class VTK_GRAPHICS_EXPORT vtkExtractSelection : public vtkExtractSelectionBase
00049 {
00050 public:
00051   static vtkExtractSelection *New();
00052   vtkTypeMacro(vtkExtractSelection, vtkExtractSelectionBase);
00053   void PrintSelf(ostream& os, vtkIndent indent);
00054 
00056 
00059   vtkSetMacro(ShowBounds,int);
00060   vtkGetMacro(ShowBounds,int);
00061   vtkBooleanMacro(ShowBounds,int);
00063 
00065 
00068   vtkSetMacro(UseProbeForLocations, int);
00069   vtkGetMacro(UseProbeForLocations, int);
00070   vtkBooleanMacro(UseProbeForLocations, int);
00072 
00073 protected:
00074   vtkExtractSelection();
00075   ~vtkExtractSelection();
00076 
00077   virtual int FillInputPortInformation(int port, vtkInformation* info);
00078 
00079   //sets up empty output dataset
00080   virtual int RequestDataObject(vtkInformation* request,
00081                                 vtkInformationVector** inputVector,
00082                                 vtkInformationVector* outputVector);
00083 
00084   // runs the algorithm and fills the output with results
00085   virtual int RequestData(vtkInformation *, 
00086                   vtkInformationVector **, 
00087                   vtkInformationVector *);
00088 
00089   // used for composite, non-hierarhical input.
00090   vtkDataObject* RequestDataInternal(
00091     unsigned int composite_index,
00092     vtkDataObject* non_composite_input, vtkSelection* sel,
00093     vtkInformation* outInfo);
00094 
00095   // Used for hierarchical input.
00096   vtkDataObject* RequestDataInternal(
00097     unsigned int composite_index,
00098     unsigned int level,
00099     unsigned int index,
00100     vtkDataObject* non_composite_input, vtkSelection* sel,
00101     vtkInformation* outInfo);
00102 
00103 
00104   // called for non-composite input or for a block in a composite dataset.
00105   vtkDataObject* RequestDataFromBlock(vtkDataObject* input, 
00106     vtkSelectionNode* sel, vtkInformation* outInfo);
00107 
00108   vtkExtractSelectedBlock* BlockFilter;
00109   vtkExtractSelectedFrustum* FrustumFilter;
00110   vtkExtractSelectedIds* IdsFilter;
00111   vtkExtractSelectedLocations* LocationsFilter;
00112   vtkExtractSelectedRows* RowsFilter;
00113   vtkExtractSelectedThresholds* ThresholdsFilter;
00114   vtkProbeSelectedLocations* ProbeFilter;
00115 
00116   int UseProbeForLocations;
00117   int ShowBounds;
00118 private:
00119   vtkExtractSelection(const vtkExtractSelection&);  // Not implemented.
00120   void operator=(const vtkExtractSelection&);  // Not implemented.
00121 };
00122 
00123 #endif