You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWTAI-Platform/3rd/VTK7.1/include/vtkSeedRepresentation.h

162 lines
4.7 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkSeedRepresentation.h
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.
=========================================================================*/
/**
* @class vtkSeedRepresentation
* @brief represent the vtkSeedWidget
*
* The vtkSeedRepresentation is a superclass for classes representing the
* vtkSeedWidget. This representation consists of one or more handles
* (vtkHandleRepresentation) which are used to place and manipulate the
* points defining the collection of seeds.
*
* @sa
* vtkSeedWidget vtkHandleRepresentation vtkSeedRepresentation
*/
#ifndef vtkSeedRepresentation_h
#define vtkSeedRepresentation_h
#include "vtkInteractionWidgetsModule.h" // For export macro
#include "vtkWidgetRepresentation.h"
class vtkHandleList;
class vtkHandleRepresentation;
class VTKINTERACTIONWIDGETS_EXPORT vtkSeedRepresentation : public vtkWidgetRepresentation
{
public:
/**
* Instantiate class.
*/
static vtkSeedRepresentation *New();
//@{
/**
* Standard VTK methods.
*/
vtkTypeMacro(vtkSeedRepresentation,vtkWidgetRepresentation);
void PrintSelf(ostream& os, vtkIndent indent);
//@}
//@{
/**
* Methods to Set/Get the coordinates of seed points defining
* this representation. Note that methods are available for both
* display and world coordinates. The seeds are accessed by a seed
* number.
*/
virtual void GetSeedWorldPosition( unsigned int seedNum, double pos[3] );
virtual void SetSeedDisplayPosition( unsigned int seedNum, double pos[3] );
virtual void GetSeedDisplayPosition( unsigned int seedNum, double pos[3] );
//@}
/**
* Return the number of seeds (or handles) that have been created.
*/
int GetNumberOfSeeds();
/**
* This method is used to specify the type of handle representation to use
* for the internal vtkHandleWidgets within vtkSeedWidget. To use this
* method, create a dummy vtkHandleWidget (or subclass), and then invoke
* this method with this dummy. Then the vtkSeedRepresentation uses this
* dummy to clone vtkHandleWidgets of the same type. Make sure you set the
* handle representation before the widget is enabled.
*/
void SetHandleRepresentation( vtkHandleRepresentation *handle );
/**
* Get the handle representations used for a particular seed. A side effect of
* this method is that it will create a handle representation in the list of
* representations if one has not yet been created.
*/
vtkHandleRepresentation *GetHandleRepresentation( unsigned int num );
//@{
/**
* Returns the model HandleRepresentation.
*/
vtkHandleRepresentation *GetHandleRepresentation()
{
return this->HandleRepresentation;
};
//@}
//@{
/**
* The tolerance representing the distance to the widget (in pixels) in
* which the cursor is considered near enough to the seed points of
* the widget to be active.
*/
vtkSetClampMacro( Tolerance, int, 1, 100 );
vtkGetMacro( Tolerance, int );
//@}
// Used to communicate about the state of the representation
enum
{
Outside = 0,
NearSeed
};
//@{
/**
* These are methods specific to vtkSeedRepresentation and which are
* invoked from vtkSeedWidget.
*/
virtual int GetActiveHandle();
// Returns the id of the seed created, -1 on failure. e is the display position.
virtual int CreateHandle( double e[2] );
// Delete last handle created
virtual void RemoveLastHandle();
// Delete the currently active handle
virtual void RemoveActiveHandle();
//@}
/**
* Remove the nth handle.
*/
virtual void RemoveHandle( int n );
//@{
/**
* These are methods that satisfy vtkWidgetRepresentation's API.
*/
virtual void BuildRepresentation();
virtual int ComputeInteractionState( int X, int Y, int modify = 0 );
//@}
protected:
vtkSeedRepresentation();
~vtkSeedRepresentation();
// The handle and the rep used to close the handles
vtkHandleRepresentation *HandleRepresentation;
vtkHandleList *Handles;
// Selection tolerance for the handles
int Tolerance;
// The active seed (handle) based on the last ComputeInteractionState()
int ActiveHandle;
private:
vtkSeedRepresentation(const vtkSeedRepresentation&) VTK_DELETE_FUNCTION;
void operator=(const vtkSeedRepresentation&) VTK_DELETE_FUNCTION;
};
#endif