VTK
dox/Rendering/vtkLabelHierarchy.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkLabelHierarchy.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00015 /*-------------------------------------------------------------------------
00016   Copyright 2008 Sandia Corporation.
00017   Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
00018   the U.S. Government retains certain rights in this software.
00019 -------------------------------------------------------------------------*/
00063 #ifndef __vtkLabelHierarchy_h
00064 #define __vtkLabelHierarchy_h
00065 
00066 #include "vtkPointSet.h"
00067 
00068 class vtkAbstractArray;
00069 class vtkCamera;
00070 class vtkCoincidentPoints;
00071 class vtkDataArray;
00072 class vtkIntArray;
00073 class vtkLabelHierarchyIterator;
00074 class vtkPoints;
00075 class vtkPolyData;
00076 class vtkRenderer;
00077 class vtkTextProperty;
00078 
00079 class VTK_RENDERING_EXPORT vtkLabelHierarchy : public vtkPointSet
00080 {
00081 public:
00082   static vtkLabelHierarchy* New();
00083   vtkTypeMacro(vtkLabelHierarchy,vtkPointSet);
00084   virtual void PrintSelf( ostream& os, vtkIndent indent );
00085 
00088   virtual void SetPoints( vtkPoints* );
00089 
00091   virtual void ComputeHierarchy();
00092 
00094 
00096   vtkSetMacro(TargetLabelCount,int);
00097   vtkGetMacro(TargetLabelCount,int);
00099 
00101 
00102   vtkSetMacro(MaximumDepth,int);
00103   vtkGetMacro(MaximumDepth,int);
00105 
00106   //BTX
00108 
00109   enum IteratorType {
00110     FULL_SORT,
00111     QUEUE,
00112     DEPTH_FIRST,
00113     FRUSTUM
00114   };
00115   //ETX
00117 
00119 
00120   virtual void SetTextProperty(vtkTextProperty* tprop);
00121   vtkGetObjectMacro(TextProperty,vtkTextProperty);
00123 
00125 
00126   virtual void SetPriorities(vtkDataArray* arr);
00127   vtkGetObjectMacro(Priorities,vtkDataArray);
00129 
00131 
00132   virtual void SetLabels(vtkAbstractArray* arr);
00133   vtkGetObjectMacro(Labels,vtkAbstractArray);
00135 
00137 
00138   virtual void SetOrientations(vtkDataArray* arr);
00139   vtkGetObjectMacro(Orientations,vtkDataArray);
00141 
00143 
00144   virtual void SetIconIndices(vtkIntArray* arr);
00145   vtkGetObjectMacro(IconIndices,vtkIntArray);
00147 
00149 
00150   virtual void SetSizes(vtkDataArray* arr);
00151   vtkGetObjectMacro(Sizes,vtkDataArray);
00153 
00155 
00157   virtual void SetBoundedSizes(vtkDataArray* arr);
00158   vtkGetObjectMacro(BoundedSizes,vtkDataArray);
00160 
00161   //BTX
00163 
00172   vtkLabelHierarchyIterator* NewIterator(
00173     int type, vtkRenderer* ren, vtkCamera* cam, double frustumPlanes[24], bool positionsAsNormals, float bucketSize[2] );
00174   //ETX
00176 
00186   void GetDiscreteNodeCoordinatesFromWorldPoint( int ijk[3], double pt[3], int level );
00187 
00196   static bool GetPathForNodalCoordinates( int* path, int ijk[3], int level );
00197 
00199 
00200   virtual vtkIdType GetNumberOfCells();
00201   virtual vtkCell* GetCell(vtkIdType);
00202   virtual void GetCell(vtkIdType, vtkGenericCell*);
00203   virtual int GetCellType(vtkIdType);
00204   virtual void GetCellPoints(vtkIdType, vtkIdList*);
00205   virtual void GetPointCells(vtkIdType, vtkIdList*);
00206   virtual vtkIdType FindCell(double*, vtkCell*, vtkIdType, double, int&, double*, double*);
00207   virtual vtkIdType FindCell(double*, vtkCell*, vtkGenericCell*, vtkIdType, double, int&, double*, double*);
00208   virtual int GetMaxCellSize();
00210 
00211   //BTX
00212   class Implementation;
00213   Implementation* GetImplementation() { return this->Impl; }
00214   //ETX
00215 
00217 
00218   vtkGetObjectMacro(CenterPts,vtkPoints);
00220 
00222 
00225   vtkGetObjectMacro(CoincidentPoints,vtkCoincidentPoints);
00227 
00228 protected:
00229   vtkLabelHierarchy();
00230   virtual ~vtkLabelHierarchy();
00231 
00232   int TargetLabelCount;
00233   int MaximumDepth;
00234   vtkDataArray* Priorities;
00235   vtkAbstractArray* Labels;
00236   vtkDataArray* Orientations;
00237   vtkIntArray* IconIndices;
00238   vtkDataArray* Sizes;
00239   vtkDataArray* BoundedSizes;
00240   vtkCoincidentPoints* CoincidentPoints;
00241   vtkPoints* CenterPts;
00242   vtkTextProperty* TextProperty;
00243 
00244   //BTX
00245   Implementation* Impl;
00246 
00247   friend class vtkLabelHierarchyFrustumIterator;
00248   friend class vtkLabelHierarchyFullSortIterator;
00249   friend class implementation;
00250   //ETX
00251 
00252 private:
00253   vtkLabelHierarchy( const vtkLabelHierarchy& ); // Not implemented.
00254   void operator = ( const vtkLabelHierarchy& ); // Not implemented.
00255 };
00256 
00257 #endif // __vtkLabelHierarchy_h