00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00057 #ifndef __vtkVisibleCellSelector_h
00058 #define __vtkVisibleCellSelector_h
00059
00060 #include "vtkObject.h"
00061
00062 class vtkRenderer;
00063 class vtkIdTypeArray;
00064 class vtkIntArray;
00065 class vtkSelection;
00066 class vtkProp;
00067 class vtkIdentColoredPainter;
00068
00069 class VTK_RENDERING_EXPORT vtkVisibleCellSelector : public vtkObject
00070 {
00071 public:
00072 vtkTypeRevisionMacro(vtkVisibleCellSelector, vtkObject);
00073 void PrintSelf(ostream& os, vtkIndent indent);
00074 static vtkVisibleCellSelector *New();
00075
00077 virtual void SetRenderer(vtkRenderer *);
00078
00080
00082 void SetArea(unsigned int x0, unsigned int y0,
00083 unsigned int x1, unsigned int y1);
00085
00087
00088 void GetArea(unsigned int &x0, unsigned int &y0,
00089 unsigned int &x1, unsigned int &y1);
00091
00093
00096 virtual void SetProcessorId(unsigned int pid);
00097 vtkGetMacro(ProcessorId, unsigned int);
00099
00101
00107 void SetRenderPasses(int DoProcessor, int DoActor,
00108 int DoCellIdHi, int DoCellIdMid, int DoCellIdLo,
00109 int DoVertexId=0);
00111
00113 void Select();
00114
00119 void GetSelectedIds(vtkIdTypeArray *ToCopyInto);
00120
00122 void GetSelectedIds(vtkSelection *ToCopyInto);
00123
00125
00134 void GetSelectedVertices(vtkIdTypeArray *VertexPointers,
00135 vtkIdTypeArray *VertexIds);
00137
00140 vtkProp* GetActorFromId(vtkIdType id);
00141
00143 void PrintSelectedIds(vtkIdTypeArray *IdsToPrint);
00144
00146
00149 void GetPixelSelection( int displayPos[2],
00150 vtkIdType & procId,
00151 vtkIdType & cellId,
00152 vtkIdType & vertId,
00153 vtkProp *& actorPtr );
00155
00156 protected:
00157 vtkVisibleCellSelector();
00158 ~vtkVisibleCellSelector();
00159
00162 void SavePixelBuffer(int pass, unsigned char *src);
00163
00166 void ComputeSelectedIds();
00167
00169 void SetSelectMode(int mode);
00170
00171
00172 void SetSelectConst(unsigned int constant);
00173
00174 void SetIdentPainter(vtkIdentColoredPainter *);
00175
00176 vtkRenderer *Renderer;
00177
00178 int DoProcessor;
00179 int DoActor;
00180 int DoCellIdHi;
00181 int DoCellIdMid;
00182 int DoCellIdLo;
00183 int DoVertices;
00184
00185 unsigned int ProcessorId;
00186
00187 unsigned int X0;
00188 unsigned int Y0;
00189 unsigned int X1;
00190 unsigned int Y1;
00191
00192
00193 unsigned char *PixBuffer[6];
00194
00196
00197 vtkIdTypeArray *SelectedIds;
00198 vtkIntArray *PixelCounts;
00199 vtkIdTypeArray *VertexPointers;
00200 vtkIdTypeArray *VertexLists;
00202
00203 vtkIdentColoredPainter *IdentPainter;
00204 private:
00205 vtkVisibleCellSelector(const vtkVisibleCellSelector&);
00206 void operator=(const vtkVisibleCellSelector&);
00207 };
00208
00209 #endif