61 #ifndef vtkHardwareSelector_h 62 #define vtkHardwareSelector_h 64 #include "vtkRenderingCoreModule.h" 116 vtkSetVector4Macro(Area,
unsigned int);
117 vtkGetVector4Macro(Area,
unsigned int);
132 vtkGetMacro(FieldAssociation,
int);
142 vtkGetMacro(UseProcessIdFromData,
bool);
165 virtual bool CaptureBuffers();
167 {
return this->GetPixelInformation(display_position, 0); }
169 {
unsigned int temp[2];
return this->GetPixelInformation(display_position, maxDist, temp); }
170 PixelInformation GetPixelInformation(
const unsigned int display_position[2],
171 int maxDist,
unsigned int selected_position[2]);
173 { this->ReleasePixBuffers(); }
180 virtual void RenderCompositeIndex(
unsigned int index);
185 virtual void RenderAttributeId(
vtkIdType attribid);
191 virtual void RenderProcessId(
unsigned int processid);
204 virtual void BeginRenderProp();
205 virtual void EndRenderProp();
214 vtkGetMacro(ProcessID,
int);
221 vtkGetVector3Macro(PropColorValue,
float);
222 vtkSetVector3Macro(PropColorValue,
float);
229 vtkGetMacro(CurrentPass,
int);
241 {
return GenerateSelection(this->Area); }
243 {
return GenerateSelection(r[0], r[1], r[2], r[3]); }
245 unsigned int x1,
unsigned int y1,
246 unsigned int x2,
unsigned int y2);
261 vtkProp* GetPropFromID(
int id);
271 MAX_KNOWN_PASS = ID_HIGH16,
272 MIN_KNOWN_PASS = PROCESS_PASS
282 tcoord[0] =
static_cast<float>((
id & 0xff)/255.0);
283 tcoord[1] =
static_cast<float>(((
id & 0xff00) >> 8)/255.0);
284 tcoord[2] =
static_cast<float>(((
id & 0xff0000) >> 16)/255.0);
292 virtual
void PreCapturePass(
int pass) { (void)pass; }
307 unsigned char rgb[3];
324 int Convert(
unsigned int pos[2],
unsigned char* pb)
325 {
return this->
Convert(pos[0], pos[1], pb); }
326 int Convert(
int xx,
int yy,
unsigned char* pb)
332 int offset = (yy *
static_cast<int>(this->Area[2]-this->Area[0]+1) + xx) * 3;
333 unsigned char rgb[3];
361 virtual bool PassRequired(
int pass);
368 bool IsPropHit(
int propid);
376 virtual void BeginSelection();
377 virtual void EndSelection();
379 virtual void SavePixelBuffer(
int passNo);
380 void BuildPropHitList(
unsigned char* rgbData);
386 void ReleasePixBuffers();
388 unsigned int Area[4];
395 unsigned char* PixBuffer[10];
400 float PropColorValue[3];
407 vtkInternals* Internals;
abstract superclass for all actors, volumes and annotations
virtual void PostCapturePass(int pass)
abstract base class for most VTK objects
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkIdType MaxAttributeId
Clears all pixel buffers.
PixelInformation GetPixelInformation(const unsigned int display_position[2], int maxDist)
It is possible to use the vtkHardwareSelector for a custom picking.
abstract specification for renderers
virtual vtkSelection * GenerateSelection(unsigned int r[4])
A node in a selection tree.
bool UseProcessIdFromData
Clears all pixel buffers.
int FieldAssociation
Clears all pixel buffers.
a simple class to control print indentation
virtual int GetPropID(int idx, vtkProp *vtkNotUsed(prop))
Return a unique ID for the prop.
static void Convert(int id, float tcoord[3])
void ClearBuffers()
It is possible to use the vtkHardwareSelector for a custom picking.
int Convert(int xx, int yy, unsigned char *pb)
pos must be relative to the lower-left corner of this->Area.
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
abstracts an OpenGL texture object.
vtkIdType GetID(int low24, int mid24, int high16)
create a window for renderers to draw into
vtkRenderer * Renderer
Clears all pixel buffers.
PixelInformation GetPixelInformation(const unsigned int display_position[2])
It is possible to use the vtkHardwareSelector for a custom picking.
virtual vtkSelection * GenerateSelection()
Generates the vtkSelection from pixel buffers.
manager for OpenGL-based selection.
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
int Convert(unsigned long offset, unsigned char *pb)
int Convert(unsigned int pos[2], unsigned char *pb)
pos must be relative to the lower-left corner of this->Area.
VTKACCELERATORSVTKM_EXPORT vtkm::cont::Field Convert(vtkDataArray *input, int association)