Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

123 lines
4.3 KiB

/*=========================================================================
Program: Visualization Toolkit
Module: $RCSfile: vtkSelectVisiblePoints.h,v $
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
// .NAME vtkSelectVisiblePoints - extract points that are visible (based on z-buffer calculation)
// .SECTION Description
// vtkSelectVisiblePoints is a filter that selects points based on
// whether they are visible or not. Visibility is determined by
// accessing the z-buffer of a rendering window. (The position of each
// input point is converted into display coordinates, and then the
// z-value at that point is obtained. If within the user-specified
// tolerance, the point is considered visible.)
//
// Points that are visible (or if the ivar SelectInvisible is on,
// invisible points) are passed to the output. Associated data
// attributes are passed to the output as well.
//
// This filter also allows you to specify a rectangular window in display
// (pixel) coordinates in which the visible points must lie. This can be
// used as a sort of local "brushing" operation to select just data within
// a window.
//
// .SECTION Caveats
// You must carefully synchronize the execution of this filter. The
// filter refers to a renderer, which is modified every time a render
// occurs. Therefore, the filter is always out of date, and always
// executes. You may have to perform two rendering passes, or if you
// are using this filter in conjunction with vtkLabeledDataMapper,
// things work out because 2D rendering occurs after the 3D rendering.
#ifndef __vtkSelectVisiblePoints_h
#define __vtkSelectVisiblePoints_h
#include "vtkPolyDataAlgorithm.h"
class vtkRenderer;
class VTK_RENDERING_EXPORT vtkSelectVisiblePoints : public vtkPolyDataAlgorithm
{
public:
vtkTypeRevisionMacro(vtkSelectVisiblePoints,vtkPolyDataAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// Instantiate object with no renderer; window selection turned off;
// tolerance set to 0.01; and select invisible off.
static vtkSelectVisiblePoints *New();
// Description:
// Specify the renderer in which the visibility computation is to be
// performed.
void SetRenderer(vtkRenderer* ren)
{
if (this->Renderer != ren)
{
this->Renderer = ren;
this->Modified();
}
}
vtkRenderer* GetRenderer() { return this->Renderer; }
// Description:
// Set/Get the flag which enables selection in a rectangular display
// region.
vtkSetMacro(SelectionWindow,int);
vtkGetMacro(SelectionWindow,int);
vtkBooleanMacro(SelectionWindow,int);
// Description:
// Specify the selection window in display coordinates. You must specify
// a rectangular region using (xmin,xmax,ymin,ymax).
vtkSetVector4Macro(Selection,int);
vtkGetVectorMacro(Selection,int,4);
// Description:
// Set/Get the flag which enables inverse selection; i.e., invisible points
// are selected.
vtkSetMacro(SelectInvisible,int);
vtkGetMacro(SelectInvisible,int);
vtkBooleanMacro(SelectInvisible,int);
// Description:
// Set/Get a tolerance to use to determine whether a point is visible. A
// tolerance is usually required because the conversion from world space
// to display space during rendering introduces numerical round-off.
vtkSetClampMacro(Tolerance,double,0.0,VTK_FLOAT_MAX);
vtkGetMacro(Tolerance,double);
// Description:
// Return MTime also considering the renderer.
unsigned long GetMTime();
protected:
vtkSelectVisiblePoints();
~vtkSelectVisiblePoints();
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
virtual int FillInputPortInformation(int port, vtkInformation *info);
vtkRenderer *Renderer;
int SelectionWindow;
int Selection[4];
int SelectInvisible;
double Tolerance;
private:
vtkSelectVisiblePoints(const vtkSelectVisiblePoints&); // Not implemented.
void operator=(const vtkSelectVisiblePoints&); // Not implemented.
};
#endif