vtkProp3DCollection.h 2.65 KB
Newer Older
Will Schroeder's avatar
Will Schroeder committed
1 2 3 4 5
/*=========================================================================

  Program:   Visualization Toolkit
  Module:    vtkProp3DCollection.h

6
  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 8
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
Will Schroeder's avatar
Will Schroeder committed
9

10 11
     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12
     PURPOSE.  See the above copyright notice for more information.
Will Schroeder's avatar
Will Schroeder committed
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

=========================================================================*/
// .NAME vtkProp3DCollection - a list of 3D props
// .SECTION Description
// vtkProp3DCollection represents and provides methods to manipulate a list of
// 3D props (i.e., vtkProp3D and subclasses). The list is unsorted and 
// duplicate entries are not prevented.

// .SECTION see also
// vtkProp3D vtkCollection 

#ifndef __vtkProp3DCollection_h
#define __vtkProp3DCollection_h

#include "vtkPropCollection.h"
28
#include "vtkProp3D.h" // Needed for inline methods
Will Schroeder's avatar
Will Schroeder committed
29

30
class VTK_RENDERING_EXPORT vtkProp3DCollection : public vtkPropCollection
Will Schroeder's avatar
Will Schroeder committed
31 32 33
{
public:
  static vtkProp3DCollection *New();
Brad King's avatar
Brad King committed
34
  vtkTypeRevisionMacro(vtkProp3DCollection,vtkPropCollection);
Andy Cedilnik's avatar
Andy Cedilnik committed
35
  virtual void PrintSelf(ostream& os, vtkIndent indent);
Will Schroeder's avatar
Will Schroeder committed
36 37 38 39 40 41 42 43 44 45 46 47 48

  // Description:
  // Add an actor to the list.
  void AddItem(vtkProp3D *p);

  // Description:
  // Get the next actor in the list.
  vtkProp3D *GetNextProp3D();

  // Description:
  // Get the last actor in the list.
  vtkProp3D *GetLastProp3D();

Ken Martin's avatar
Ken Martin committed
49 50 51 52 53 54 55 56
  //BTX
  // Description: 
  // Reentrant safe way to get an object in a collection. Just pass the
  // same cookie back and forth. 
  vtkProp3D *GetNextProp3D(vtkCollectionSimpleIterator &cookie) {
    return static_cast<vtkProp3D *>(this->GetNextItemAsObject(cookie));};
  //ETX
  
Will Schroeder's avatar
Will Schroeder committed
57 58 59 60 61 62 63 64 65 66
protected:
  vtkProp3DCollection() {};
  ~vtkProp3DCollection() {};
    

private:
  // hide the standard AddItem from the user and the compiler.
  void AddItem(vtkObject *o) { this->vtkCollection::AddItem(o); };
  void AddItem(vtkProp *o) { this->vtkPropCollection::AddItem(o); };

67 68 69
private:
  vtkProp3DCollection(const vtkProp3DCollection&);  // Not implemented.
  void operator=(const vtkProp3DCollection&);  // Not implemented.
Will Schroeder's avatar
Will Schroeder committed
70 71 72 73 74 75 76 77 78
};

inline void vtkProp3DCollection::AddItem(vtkProp3D *a) 
{
  this->vtkCollection::AddItem((vtkObject *)a);
}

inline vtkProp3D *vtkProp3DCollection::GetNextProp3D() 
{ 
79
  return static_cast<vtkProp3D *>(this->GetNextItemAsObject());
Will Schroeder's avatar
Will Schroeder committed
80 81 82 83 84 85 86 87 88 89
}

inline vtkProp3D *vtkProp3DCollection::GetLastProp3D() 
{ 
  if ( this->Bottom == NULL )
    {
    return NULL;
    }
  else
    {
90
    return static_cast<vtkProp3D *>(this->Bottom->Item);
Will Schroeder's avatar
Will Schroeder committed
91 92 93 94 95 96 97 98 99
    }
}

#endif