PatchSequenceEnumerator.h

Go to the documentation of this file.
00001 #ifndef PATCHSEQUENCEENUMERATOR_H
00002 #define PATCHSEQUENCEENUMERATOR_H
00003 
00011 #include <vector>
00012 
00013 struct Triangle;
00014 class TriangleSet;
00015 
00021 class PatchSequenceEnumerator {
00022   public:
00023     virtual ~PatchSequenceEnumerator();
00024     
00030     virtual Triangle* nextPatch() =0;
00031     
00035     virtual void reset() =0;
00036 };
00037 
00042 class DirectPatchSequenceEnumerator: public PatchSequenceEnumerator {
00043   public:
00048     DirectPatchSequenceEnumerator(TriangleSet *tset);
00049     virtual Triangle* nextPatch();
00050     virtual void reset();
00051     
00052   private:
00053     TriangleSet &tset_;
00054     int current_;
00055     int size_;
00056 };
00057 
00062 class IndirectPatchSequenceEnumerator: public PatchSequenceEnumerator {
00063   public:
00064     IndirectPatchSequenceEnumerator();
00065     virtual ~IndirectPatchSequenceEnumerator();
00066     virtual Triangle* nextPatch();
00067     virtual void reset();
00068     
00073     void add(PatchSequenceEnumerator *patchEnumerator);
00074     
00075   private:
00076     typedef std::vector<PatchSequenceEnumerator *> TContainer;
00077     TContainer container_;
00078     int current_;
00079 };
00080 
00081 #endif // PATCHSEQUENCEENUMERATOR_H

Generated on Thu Dec 6 19:33:11 2007 for Radiosity Renderer and Visualizer by  doxygen 1.5.2