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/vtkLabelHierarchyIterator.h

174 lines
4.8 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkLabelHierarchyIterator.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.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright 2008 Sandia Corporation.
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
-------------------------------------------------------------------------*/
/**
* @class vtkLabelHierarchyIterator
* @brief iterator over vtkLabelHierarchy
*
*
* Abstract superclass for iterators over vtkLabelHierarchy.
*/
#ifndef vtkLabelHierarchyIterator_h
#define vtkLabelHierarchyIterator_h
#include "vtkRenderingLabelModule.h" // For export macro
#include "vtkObject.h"
#include "vtkStdString.h" // for std string
#include "vtkUnicodeString.h" // for unicode string
class vtkIdTypeArray;
class vtkLabelHierarchy;
class vtkPolyData;
class VTKRENDERINGLABEL_EXPORT vtkLabelHierarchyIterator : public vtkObject
{
public:
vtkTypeMacro(vtkLabelHierarchyIterator,vtkObject);
virtual void PrintSelf( ostream& os, vtkIndent indent );
/**
* Initializes the iterator. lastLabels is an array holding labels
* which should be traversed before any other labels in the hierarchy.
* This could include labels placed during a previous rendering or
* a label located under the mouse pointer. You may pass a null pointer.
*/
virtual void Begin( vtkIdTypeArray* ) { }
/**
* Advance the iterator.
*/
virtual void Next() { }
/**
* Returns true if the iterator is at the end.
*/
virtual bool IsAtEnd() { return true; }
/**
* Retrieves the current label location.
*/
virtual void GetPoint( double x[3] );
/**
* Retrieves the current label size.
*/
virtual void GetSize( double sz[2] );
/**
* Retrieves the current label maximum width in world coordinates.
*/
virtual void GetBoundedSize( double sz[2] );
/**
* Retrieves the current label type.
*/
virtual int GetType();
/**
* Retrieves the current label string.
*/
virtual vtkStdString GetLabel();
/**
* Retrieves the current label as a unicode string.
*/
virtual vtkUnicodeString GetUnicodeLabel();
/**
* Retrieves the current label orientation.
*/
virtual double GetOrientation();
/**
* Retrieves the current label id.
*/
virtual vtkIdType GetLabelId() { return -1; }
//@{
/**
* Get the label hierarchy associated with the current label.
*/
vtkGetObjectMacro(Hierarchy, vtkLabelHierarchy);
//@}
/**
* Sets a polydata to fill with geometry representing
* the bounding boxes of the traversed octree nodes.
*/
virtual void SetTraversedBounds( vtkPolyData* );
/**
* Retrieve the coordinates of the center of the current hierarchy node
* and the size of the node.
* Nodes are n-cubes, so the size is the length of any edge of the cube.
* This is used by BoxNode().
*/
virtual void GetNodeGeometry( double ctr[3], double& size ) = 0;
/**
* Add a representation to TraversedBounds for the current octree node.
* This should be called by subclasses inside Next().
* Does nothing if TraversedBounds is NULL.
*/
virtual void BoxNode();
/**
* Add a representation for all existing octree nodes to the specified polydata.
* This is equivalent to setting TraversedBounds, iterating over the entire hierarchy,
* and then resetting TraversedBounds to its original value.
*/
virtual void BoxAllNodes( vtkPolyData* );
//@{
/**
* Set/get whether all nodes in the hierarchy should be added to the TraversedBounds
* polydata or only those traversed.
* When non-zero, all nodes will be added.
* By default, AllBounds is 0.
*/
vtkSetMacro(AllBounds,int);
vtkGetMacro(AllBounds,int);
//@}
protected:
vtkLabelHierarchyIterator();
virtual ~vtkLabelHierarchyIterator();
void BoxNodeInternal3( const double* ctr, double sz );
void BoxNodeInternal2( const double* ctr, double sz );
/**
* The hierarchy being traversed by this iterator.
*/
virtual void SetHierarchy( vtkLabelHierarchy* h );
vtkLabelHierarchy* Hierarchy;
vtkPolyData* TraversedBounds;
double BoundsFactor;
int AllBounds;
int AllBoundsRecorded;
private:
vtkLabelHierarchyIterator( const vtkLabelHierarchyIterator& ) VTK_DELETE_FUNCTION;
void operator = ( const vtkLabelHierarchyIterator& ) VTK_DELETE_FUNCTION;
};
#endif // vtkLabelHierarchyIterator_h