osg::PrimitiveIterator Class Reference
[Geometry Iterators]

Geometry Iterator for primitives. See Geometry Iterators for a description. More...

#include <OSGPrimitiveIterator.h>

Inheritance diagram for osg::PrimitiveIterator:

osg::EdgeIterator osg::FaceIterator osg::LineIterator osg::TriangleIterator

List of all members.

Public Member Functions

Constructors


 PrimitiveIterator (void)
 PrimitiveIterator (const PrimitiveIterator &source)
 PrimitiveIterator (const GeometryPtr &geo)
 PrimitiveIterator (const NodePtr &geo)
Destructors


virtual ~PrimitiveIterator (void)
Set


void setGeo (const GeometryPtr &geo)
void setGeo (const NodePtr &geo)
void setToBegin (void)
void setToEnd (void)
Get


bool isAtEnd (void) const
Int32 getIndex (void) const
UInt32 getLength (void) const
UInt32 getType (void) const
Int32 getPositionIndex (Int32 which) const
Pnt3f getPosition (Int32 which) const
Int32 getNormalIndex (Int32 which) const
Vec3f getNormal (Int32 which) const
Int32 getColorIndex (Int32 which) const
Color3f getColor (Int32 which) const
Int32 getSecondaryColorIndex (Int32 which) const
Color3f getSecondaryColor (Int32 which) const
Int32 getTexCoordsIndex (Int32 which) const
Vec2f getTexCoords (Int32 which) const
Int32 getTexCoordsIndex1 (Int32 which) const
Vec2f getTexCoords1 (Int32 which) const
Int32 getTexCoordsIndex2 (Int32 which) const
Vec2f getTexCoords2 (Int32 which) const
Int32 getTexCoordsIndex3 (Int32 which) const
Vec2f getTexCoords3 (Int32 which) const
Int32 getTexCoordsIndex4 (Int32 which) const
Vec2f getTexCoords4 (Int32 which) const
Int32 getTexCoordsIndex5 (Int32 which) const
Vec2f getTexCoords5 (Int32 which) const
Int32 getTexCoordsIndex6 (Int32 which) const
Vec2f getTexCoords6 (Int32 which) const
Int32 getTexCoordsIndex7 (Int32 which) const
Vec2f getTexCoords7 (Int32 which) const
Int32 getIndexIndex (Int32 which) const
GeometryPtr getGeometry (void) const
Operators


void operator++ (void)
void seek (Int32 index)
PrimitiveIteratoroperator= (const PrimitiveIterator &source)
bool operator< (const PrimitiveIterator &other) const
bool operator== (const PrimitiveIterator &other) const
bool operator!= (const PrimitiveIterator &other) const

Static Public Member Functions

Class Get


static const char * getClassname (void)

Private Attributes

Data


GeometryPtr _geo
bool _ended
UInt32 _primIndex
UInt32 _actPointIndex
UInt32 _actPrimType
UInt32 _actPrimLength
GeoPTypesPtr _types
GeoPLengthsPtr _lengths
GeoIndicesPtr _indices
UInt16 _nmappings
Int16 _positionIndex
Int16 _normalIndex
Int16 _colorIndex
Int16 _secondaryColorIndex
Int16 _texcoordsIndex
Int16 _texcoordsIndex1
Int16 _texcoordsIndex2
Int16 _texcoordsIndex3
Int16 _texcoordsIndex4
Int16 _texcoordsIndex5
Int16 _texcoordsIndex6
Int16 _texcoordsIndex7

Static Private Attributes

static char cvsid [] = "@(#)$Id: OSGPrimitiveIterator.cpp,v 1.17 2001/11/01 05:55:06 vossg Exp $"

Friends

class Geometry


Detailed Description

Geometry Iterator for primitives. See Geometry Iterators for a description.

Definition at line 62 of file OSGPrimitiveIterator.h.


Constructor & Destructor Documentation

PrimitiveIterator::PrimitiveIterator ( void   ) 

Definition at line 212 of file OSGPrimitiveIterator.cpp.

00212                                          :
00213     _geo                (      ), 
00214     _ended              (  true),
00215     _primIndex          (     0), 
00216     _actPointIndex      (     0),
00217     _actPrimType        (     0), 
00218     _actPrimLength      (     0),
00219     _types              (NullFC), 
00220     _lengths            (NullFC), 
00221     _indices            (NullFC), 
00222     _nmappings          (     0),
00223     _positionIndex      (    -1), 
00224     _normalIndex        (    -1), 
00225     _colorIndex         (    -1), 
00226     _secondaryColorIndex(    -1), 
00227     _texcoordsIndex     (    -1),
00228     _texcoordsIndex1    (    -1),
00229     _texcoordsIndex2    (    -1),
00230     _texcoordsIndex3    (    -1),
00231     _texcoordsIndex4    (    -1),
00232     _texcoordsIndex5    (    -1),
00233     _texcoordsIndex6    (    -1),
00234     _texcoordsIndex7    (    -1)
00235 {
00236 }

PrimitiveIterator::PrimitiveIterator ( const PrimitiveIterator source  ) 

Definition at line 303 of file OSGPrimitiveIterator.cpp.

00303                                                                     :
00304     _geo                (source._geo                ),
00305     _ended              (source._ended              ),
00306     _primIndex          (source._primIndex          ), 
00307     _actPointIndex      (source._actPointIndex      ),
00308     _actPrimType        (source._actPrimType        ), 
00309     _actPrimLength      (source._actPrimLength      ),  
00310     _types              (source._types              ), 
00311     _lengths            (source._lengths            ), 
00312     _indices            (source._indices            ), 
00313     _nmappings          (source._nmappings          ),
00314     _positionIndex      (source._positionIndex      ),
00315     _normalIndex        (source._normalIndex        ),
00316     _colorIndex         (source._colorIndex         ),
00317     _secondaryColorIndex(source._secondaryColorIndex),
00318     _texcoordsIndex     (source._texcoordsIndex     ),
00319     _texcoordsIndex1    (source._texcoordsIndex1    ),
00320     _texcoordsIndex2    (source._texcoordsIndex2    ),
00321     _texcoordsIndex3    (source._texcoordsIndex3    ),
00322     _texcoordsIndex4    (source._texcoordsIndex4    ),
00323     _texcoordsIndex5    (source._texcoordsIndex5    ),
00324     _texcoordsIndex6    (source._texcoordsIndex6    ),
00325     _texcoordsIndex7    (source._texcoordsIndex7    )
00326 {
00327 }

PrimitiveIterator::PrimitiveIterator ( const GeometryPtr geo  ) 

This constructor creates an iterator for the given node. It is useful to create an iterator to be used to seek() to a specific indexed face. Otherwise, use Geometry::beginPrimitives() resp. Geometry::endPrimitives() to create an iterator.

Definition at line 243 of file OSGPrimitiveIterator.cpp.

References setGeo().

00243                                                            :
00244     _geo                (      ), 
00245     _ended              (  true),
00246     _primIndex          (     0), 
00247     _actPointIndex      (     0),
00248     _actPrimType        (     0), 
00249     _actPrimLength      (     0),
00250     _types              (NullFC), 
00251     _lengths            (NullFC), 
00252     _indices            (NullFC), 
00253     _nmappings          (     0),
00254     _positionIndex      (    -1), 
00255     _normalIndex        (    -1), 
00256     _colorIndex         (    -1), 
00257     _secondaryColorIndex(    -1), 
00258     _texcoordsIndex     (    -1),
00259     _texcoordsIndex1    (    -1),
00260     _texcoordsIndex2    (    -1),
00261     _texcoordsIndex3    (    -1),
00262     _texcoordsIndex4    (    -1),
00263     _texcoordsIndex5    (    -1),
00264     _texcoordsIndex6    (    -1),
00265     _texcoordsIndex7    (    -1)
00266 {
00267     setGeo(geo);
00268 }

PrimitiveIterator::PrimitiveIterator ( const NodePtr geo  ) 

This constructor creates an iterator for the given Node, which has to have a Geometry core. It is useful to create an iterator to be used to seek() to a specific indexed face. Otherwise, use Geometry::beginPrimitives() resp. Geometry::endPrimitives() to create an iterator.

Definition at line 275 of file OSGPrimitiveIterator.cpp.

References setGeo().

00275                                                        :
00276     _geo                (      ), 
00277     _ended              (  true),
00278     _primIndex          (     0), 
00279     _actPointIndex      (     0),
00280     _actPrimType        (     0), 
00281     _actPrimLength      (     0),
00282     _types              (NullFC), 
00283     _lengths            (NullFC), 
00284     _indices            (NullFC), 
00285     _nmappings          (     0),
00286     _positionIndex      (    -1), 
00287     _normalIndex        (    -1), 
00288     _colorIndex         (    -1), 
00289     _secondaryColorIndex(    -1), 
00290     _texcoordsIndex     (    -1),
00291     _texcoordsIndex1    (    -1),
00292     _texcoordsIndex2    (    -1),
00293     _texcoordsIndex3    (    -1),
00294     _texcoordsIndex4    (    -1),
00295     _texcoordsIndex5    (    -1),
00296     _texcoordsIndex6    (    -1),
00297     _texcoordsIndex7    (    -1)
00298 {
00299     setGeo(geo);
00300 }

PrimitiveIterator::~PrimitiveIterator ( void   )  [virtual]

Definition at line 329 of file OSGPrimitiveIterator.cpp.

00330 {
00331 }


Member Function Documentation

static const char* osg::PrimitiveIterator::getClassname ( void   )  [inline, static]

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 71 of file OSGPrimitiveIterator.h.

00071 { return "PrimitiveIterator"; }

void PrimitiveIterator::setGeo ( const GeometryPtr geo  ) 

Switch the iterator to a new geometry. Automatically sets it to the beginning.

Definition at line 339 of file OSGPrimitiveIterator.cpp.

References _geo, _indices, _lengths, _types, osg::NullFC, OSG_ASSERT, and setToBegin().

Referenced by osg::EdgeIterator::EdgeIterator(), osg::FaceIterator::FaceIterator(), osg::LineIterator::LineIterator(), PrimitiveIterator(), setGeo(), and osg::TriangleIterator::TriangleIterator().

00340 {
00341     OSG_ASSERT(geo != NullFC);
00342 
00343     _geo     = geo;
00344     _types   = geo->getTypes();
00345     _lengths = geo->getLengths();
00346     _indices = geo->getIndices();
00347     
00348     setToBegin();
00349 }

void PrimitiveIterator::setGeo ( const NodePtr geo  ) 

Switch the iterator to a new geometry. Automatically sets it to the beginning.

Definition at line 355 of file OSGPrimitiveIterator.cpp.

References osg::AttachmentContainerPtr::dcast(), FWARNING, osg::NodePtr::getCore(), osg::NullFC, and setGeo().

00356 {
00357     GeometryPtr gc = GeometryPtr::dcast(geo->getCore());
00358     
00359     if(gc == NullFC)
00360     {
00361         FWARNING(("PrimitiveIterator::setGeo: called for NodePtr which "
00362                   "is not a Geometry!\n"));
00363     }
00364     else
00365     {
00366         setGeo(gc);
00367     }
00368 }

void PrimitiveIterator::setToBegin ( void   ) 

Set the iterator to the beginning of the attached Geometry. Is primarily used by osg::Geometry::beginPrimitives, but can also be used to quickly recycle an iterator.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 415 of file OSGPrimitiveIterator.cpp.

References _actPointIndex, _actPrimLength, _actPrimType, _colorIndex, _ended, _geo, _indices, _lengths, _nmappings, _normalIndex, _positionIndex, _primIndex, _secondaryColorIndex, _texcoordsIndex, _texcoordsIndex1, _texcoordsIndex2, _texcoordsIndex3, _texcoordsIndex4, _texcoordsIndex5, _texcoordsIndex6, _texcoordsIndex7, _types, osg::Geometry::MapColor, osg::Geometry::MapNormal, osg::Geometry::MapPosition, osg::Geometry::MapSecondaryColor, osg::Geometry::MapTexCoords, osg::Geometry::MapTexCoords1, osg::Geometry::MapTexCoords2, osg::Geometry::MapTexCoords3, osg::Geometry::MapTexCoords4, osg::Geometry::MapTexCoords5, osg::Geometry::MapTexCoords6, osg::Geometry::MapTexCoords7, osg::NullFC, and setToEnd().

Referenced by osg::Geometry::beginPrimitives(), setGeo(), osg::TriangleIterator::setToBegin(), osg::LineIterator::setToBegin(), osg::FaceIterator::setToBegin(), osg::EdgeIterator::setToBegin(), and osg::SplitGraphOp::splitNode().

00416 {
00417     _primIndex           = 0;
00418     _actPointIndex       = 0;
00419     _ended               = false;
00420     _nmappings           = _geo->getIndexMapping().size();
00421     _positionIndex       = _geo->calcMappingIndex(Geometry::MapPosition);
00422     _normalIndex         = _geo->calcMappingIndex(Geometry::MapNormal);
00423     _colorIndex          = _geo->calcMappingIndex(Geometry::MapColor);
00424     _secondaryColorIndex = _geo->calcMappingIndex(Geometry::MapSecondaryColor);
00425     _texcoordsIndex      = _geo->calcMappingIndex(Geometry::MapTexCoords);
00426     _texcoordsIndex1     = _geo->calcMappingIndex(Geometry::MapTexCoords1);
00427     _texcoordsIndex2     = _geo->calcMappingIndex(Geometry::MapTexCoords2);
00428     _texcoordsIndex3     = _geo->calcMappingIndex(Geometry::MapTexCoords3);
00429     _texcoordsIndex4     = _geo->calcMappingIndex(Geometry::MapTexCoords4);
00430     _texcoordsIndex5     = _geo->calcMappingIndex(Geometry::MapTexCoords5);
00431     _texcoordsIndex6     = _geo->calcMappingIndex(Geometry::MapTexCoords6);
00432     _texcoordsIndex7     = _geo->calcMappingIndex(Geometry::MapTexCoords7);
00433 
00434     if(_nmappings == 0)
00435         _nmappings = 1;
00436                   
00437     if(_types != NullFC && _types->getSize() > 0)
00438     {
00439         _actPrimType = _types->getValue(_primIndex);
00440         if(_lengths != NullFC)
00441         {
00442             _actPrimLength = _lengths->getValue(_primIndex);
00443         }
00444         else if(_indices != NullFC)
00445         {
00446             _actPrimLength = _indices->getSize() / _nmappings;
00447         }
00448         else
00449         {
00450             _actPrimLength = _geo->getPositions()->getSize() / _nmappings;
00451         }
00452     }
00453     else
00454     {
00455         setToEnd();
00456     }
00457 }

void PrimitiveIterator::setToEnd ( void   ) 

Set the iterator to the end of the attached Geometry. Is primarily used by osg::Geometry::endPrimitives, but can also be used to quickly recycle an iterator.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 463 of file OSGPrimitiveIterator.cpp.

References _actPointIndex, _ended, _primIndex, _types, and osg::NullFC.

Referenced by osg::Geometry::endPrimitives(), setToBegin(), osg::TriangleIterator::setToEnd(), osg::LineIterator::setToEnd(), osg::FaceIterator::setToEnd(), and osg::EdgeIterator::setToEnd().

00464 {
00465     if(_types != NullFC)
00466         _primIndex = _types->getSize();
00467     else
00468         _primIndex = 0;
00469     _actPointIndex = 0;
00470     _ended = true;
00471 }

bool osg::PrimitiveIterator::isAtEnd ( void   )  const [inline]

Int32 osg::PrimitiveIterator::getIndex ( void   )  const [inline]

Return the index of the current primitive. The index runs from 0 to the number of faces in the geometry. Its main use is as an input to seek().

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 65 of file OSGPrimitiveIterator.inl.

References _primIndex.

Referenced by osg::createConvexPrimitives().

00066 {
00067     return _primIndex;
00068 }

UInt32 osg::PrimitiveIterator::getLength ( void   )  const [inline]

UInt32 osg::PrimitiveIterator::getType ( void   )  const [inline]

Int32 osg::PrimitiveIterator::getPositionIndex ( Int32  which  )  const [inline]

Return the position index (i.e. the number of the entry in the positions property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 92 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _positionIndex, and osg::NullFC.

Referenced by getPosition(), osg::TriangleIterator::getPositionIndex(), osg::LineIterator::getPositionIndex(), osg::FaceIterator::getPositionIndex(), osg::EdgeIterator::getPositionIndex(), osg::VerifyGraphOp::verifyGeometry(), and osg::VRMLWriteAction::writeLineIndex().

00093 {
00094     if(_geo->getIndices() != NullFC)
00095     {
00096         if(_positionIndex != -1)
00097         {
00098             return _indices->getValue((_actPointIndex + which) *
00099                                       _nmappings + _positionIndex);
00100         }
00101         else
00102         {
00103             return _indices->getValue(_actPointIndex * _nmappings + which );
00104         }
00105     }
00106     else
00107     {
00108         return _actPointIndex + which;
00109     }
00110 }

Pnt3f osg::PrimitiveIterator::getPosition ( Int32  which  )  const [inline]

Return the position of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 117 of file OSGPrimitiveIterator.inl.

References _geo, and getPositionIndex().

Referenced by osg::Geometry::adjustVolume(), osg::calcVertexNormalsGeo(), and osg::SplitGraphOp::splitNode().

00118 {
00119     Int32 ind = getPositionIndex(which);
00120 
00121     return _geo->getPositions()->getValue(ind);
00122 }

Int32 osg::PrimitiveIterator::getNormalIndex ( Int32  which  )  const [inline]

Return the normal index (i.e. the number of the entry in the normal property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no normals, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 132 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _normalIndex, and osg::NullFC.

Referenced by getNormal(), osg::TriangleIterator::getNormalIndex(), osg::LineIterator::getNormalIndex(), osg::FaceIterator::getNormalIndex(), osg::EdgeIterator::getNormalIndex(), and osg::VerifyGraphOp::verifyGeometry().

00133 {
00134     if(_geo->getNormals() == NullFC)
00135         return -1;
00136 
00137     if(_geo->getIndices() != NullFC)
00138     {
00139         if(_normalIndex != -1)
00140         {
00141             return _indices->getValue((_actPointIndex + which) *
00142                                       _nmappings + _normalIndex);
00143         }
00144         else
00145         {
00146             return _indices->getValue(_actPointIndex * _nmappings + which );
00147         }
00148     }
00149     else
00150     {
00151         return _actPointIndex + which;
00152     }
00153 }

Vec3f osg::PrimitiveIterator::getNormal ( Int32  which  )  const [inline]

Return the normal of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no normals, Vec3f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 162 of file OSGPrimitiveIterator.inl.

References _geo, getNormalIndex(), and osg::VectorInterface< ValueTypeT, StorageInterfaceT >::Null.

Referenced by osg::calcVertexNormalsGeo().

00163 {
00164     Int32 ind = getNormalIndex(which);
00165 
00166     if(ind < 0)
00167         return Vec3f::Null;
00168 
00169     return _geo->getNormals()->getValue(ind);
00170 }

Int32 osg::PrimitiveIterator::getColorIndex ( Int32  which  )  const [inline]

Return the color index (i.e. the number of the entry in the color property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no colors, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 179 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _colorIndex, _geo, _indices, _nmappings, and osg::NullFC.

Referenced by getColor(), osg::TriangleIterator::getColorIndex(), osg::LineIterator::getColorIndex(), osg::FaceIterator::getColorIndex(), osg::EdgeIterator::getColorIndex(), osg::VerifyGraphOp::verifyGeometry(), and osg::VRMLWriteAction::writeLineIndex().

00180 {
00181     if(_geo->getColors() == NullFC)
00182         return -1;
00183 
00184     if(_geo->getIndices() != NullFC)
00185     {
00186         if(_colorIndex != -1)
00187         {
00188             return _indices->getValue((_actPointIndex + which) *
00189                                       _nmappings + _colorIndex);
00190         }
00191         else
00192         {
00193             return _indices->getValue(_actPointIndex * _nmappings + which );
00194         }
00195     }
00196     else
00197     {
00198         return _actPointIndex + which;
00199     }
00200 }

Color3f osg::PrimitiveIterator::getColor ( Int32  which  )  const [inline]

Return the color of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no colors, Color3f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 208 of file OSGPrimitiveIterator.inl.

References _geo, getColorIndex(), and osg::Color3< ValueTypeT >::Null.

00209 {
00210     Int32 ind = getColorIndex(which);
00211 
00212     if(ind < 0)
00213         return Color3f::Null;
00214 
00215     return _geo->getColors()->getValue(ind);
00216 }

Int32 osg::PrimitiveIterator::getSecondaryColorIndex ( Int32  which  )  const [inline]

Return the secondary color index (i.e. the number of the entry in the secondary color property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no secondary colors, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 227 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _secondaryColorIndex, and osg::NullFC.

Referenced by getSecondaryColor(), osg::TriangleIterator::getSecondaryColorIndex(), osg::LineIterator::getSecondaryColorIndex(), osg::FaceIterator::getSecondaryColorIndex(), osg::EdgeIterator::getSecondaryColorIndex(), and osg::VerifyGraphOp::verifyGeometry().

00228 {
00229     if(_geo->getSecondaryColors() == NullFC)
00230         return -1;
00231 
00232     if(_geo->getIndices() != NullFC)
00233     {
00234         if(_secondaryColorIndex != -1)
00235         {
00236             return _indices->getValue((_actPointIndex + which) *
00237                                       _nmappings + _secondaryColorIndex);
00238         }
00239         else
00240         {
00241             return _indices->getValue(_actPointIndex * _nmappings + which );
00242         }
00243     }
00244     else
00245     {
00246         return _actPointIndex + which;
00247     }
00248 }

Color3f osg::PrimitiveIterator::getSecondaryColor ( Int32  which  )  const [inline]

Return the secondary color of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no secondary colors, Color3f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 256 of file OSGPrimitiveIterator.inl.

References _geo, getSecondaryColorIndex(), and osg::Color3< ValueTypeT >::Null.

00257 {
00258     Int32 ind = getSecondaryColorIndex(which);
00259 
00260     if(ind < 0)
00261         return Color3f::Null;
00262 
00263     return _geo->getSecondaryColors()->getValue(ind);
00264 }

Int32 osg::PrimitiveIterator::getTexCoordsIndex ( Int32  which  )  const [inline]

Return the texture coordinates index (i.e. the number of the entry in the texture coordinates property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no texture coordinates, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 274 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _texcoordsIndex, and osg::NullFC.

Referenced by getTexCoords(), osg::TriangleIterator::getTexCoordsIndex(), osg::LineIterator::getTexCoordsIndex(), osg::FaceIterator::getTexCoordsIndex(), osg::EdgeIterator::getTexCoordsIndex(), and osg::VerifyGraphOp::verifyGeometry().

00275 {
00276     if(_geo->getTexCoords() == NullFC)
00277         return -1;
00278 
00279     if(_geo->getIndices() != NullFC)
00280     {
00281         if(_texcoordsIndex != -1)
00282         {
00283             return _indices->getValue((_actPointIndex + which) *
00284                                       _nmappings + _texcoordsIndex);
00285         }
00286         else
00287         {
00288             return _indices->getValue(_actPointIndex * _nmappings + which );
00289         }
00290     }
00291     else
00292     {
00293         return _actPointIndex + which;
00294     }
00295 }

Vec2f osg::PrimitiveIterator::getTexCoords ( Int32  which  )  const [inline]

Return the texture coordinates of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no texture coordinates, Vec2f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 303 of file OSGPrimitiveIterator.inl.

References _geo, getTexCoordsIndex(), and osg::VectorInterface< ValueTypeT, StorageInterfaceT >::Null.

00304 {
00305     Int32 ind = getTexCoordsIndex(which);
00306 
00307     if(ind < 0)
00308         return Vec2f::Null;
00309 
00310     return _geo->getTexCoords()->getValue(ind);
00311 }

Int32 osg::PrimitiveIterator::getTexCoordsIndex1 ( Int32  which  )  const [inline]

Return the second texture coordinates index (i.e. the number of the entry in the textureCoordinates1 property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no second texture coordinates, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 322 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _texcoordsIndex1, and osg::NullFC.

Referenced by getTexCoords1(), osg::TriangleIterator::getTexCoordsIndex1(), osg::LineIterator::getTexCoordsIndex1(), osg::FaceIterator::getTexCoordsIndex1(), osg::EdgeIterator::getTexCoordsIndex1(), and osg::VerifyGraphOp::verifyGeometry().

00323 {
00324     if(_geo->getTexCoords1() == NullFC)
00325         return -1;
00326 
00327     if(_geo->getIndices() != NullFC)
00328     {
00329         if(_texcoordsIndex1 != -1)
00330         {
00331             return _indices->getValue((_actPointIndex + which) *
00332                                       _nmappings + _texcoordsIndex1);
00333         }
00334         else
00335         {
00336             return _indices->getValue(_actPointIndex * _nmappings + which );
00337         }
00338     }
00339     else
00340     {
00341         return _actPointIndex + which;
00342     }
00343 }

Vec2f osg::PrimitiveIterator::getTexCoords1 ( Int32  which  )  const [inline]

Return the second texture coordinates of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no second texture coordinates, Vec2f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 352 of file OSGPrimitiveIterator.inl.

References _geo, getTexCoordsIndex1(), and osg::VectorInterface< ValueTypeT, StorageInterfaceT >::Null.

00353 {
00354     Int32 ind = getTexCoordsIndex1(which);
00355 
00356     if(ind < 0)
00357         return Vec2f::Null;
00358 
00359     return _geo->getTexCoords1()->getValue(ind);
00360 }

Int32 osg::PrimitiveIterator::getTexCoordsIndex2 ( Int32  which  )  const [inline]

Return the third texture coordinates index (i.e. the number of the entry in the textureCoordinates2 property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no third texture coordinates, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 371 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _texcoordsIndex2, and osg::NullFC.

Referenced by getTexCoords2(), osg::TriangleIterator::getTexCoordsIndex2(), osg::LineIterator::getTexCoordsIndex2(), osg::FaceIterator::getTexCoordsIndex2(), osg::EdgeIterator::getTexCoordsIndex2(), and osg::VerifyGraphOp::verifyGeometry().

00372 {
00373     if(_geo->getTexCoords2() == NullFC)
00374         return -1;
00375 
00376     if(_geo->getIndices() != NullFC)
00377     {
00378         if(_texcoordsIndex2 != -1)
00379         {
00380             return _indices->getValue((_actPointIndex + which) *
00381                                       _nmappings + _texcoordsIndex2);
00382         }
00383         else
00384         {
00385             return _indices->getValue(_actPointIndex * _nmappings + which );
00386         }
00387     }
00388     else
00389     {
00390         return _actPointIndex + which;
00391     }
00392 }

Vec2f osg::PrimitiveIterator::getTexCoords2 ( Int32  which  )  const [inline]

Return the third texture coordinates of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no third texture coordinates, Vec2f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 401 of file OSGPrimitiveIterator.inl.

References _geo, getTexCoordsIndex2(), and osg::VectorInterface< ValueTypeT, StorageInterfaceT >::Null.

00402 {
00403     Int32 ind = getTexCoordsIndex2(which);
00404 
00405     if(ind < 0)
00406         return Vec2f::Null;
00407 
00408     return _geo->getTexCoords2()->getValue(ind);
00409 }

Int32 osg::PrimitiveIterator::getTexCoordsIndex3 ( Int32  which  )  const [inline]

Return the fourth texture coordinates index (i.e. the number of the entry in the textureCoordinates3 property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no fourth texture coordinates, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 420 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _texcoordsIndex3, and osg::NullFC.

Referenced by getTexCoords3(), osg::TriangleIterator::getTexCoordsIndex3(), osg::LineIterator::getTexCoordsIndex3(), osg::FaceIterator::getTexCoordsIndex3(), osg::EdgeIterator::getTexCoordsIndex3(), and osg::VerifyGraphOp::verifyGeometry().

00421 {
00422     if(_geo->getTexCoords3() == NullFC)
00423         return -1;
00424 
00425     if(_geo->getIndices() != NullFC)
00426     {
00427         if(_texcoordsIndex3 != -1)
00428         {
00429             return _indices->getValue((_actPointIndex + which) *
00430                                       _nmappings + _texcoordsIndex3);
00431         }
00432         else
00433         {
00434             return _indices->getValue(_actPointIndex * _nmappings + which );
00435         }
00436     }
00437     else
00438     {
00439         return _actPointIndex + which;
00440     }
00441 }

Vec2f osg::PrimitiveIterator::getTexCoords3 ( Int32  which  )  const [inline]

Return the fourth texture coordinates of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no fourth texture coordinates, Vec2f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 450 of file OSGPrimitiveIterator.inl.

References _geo, getTexCoordsIndex3(), and osg::VectorInterface< ValueTypeT, StorageInterfaceT >::Null.

00451 {
00452     Int32 ind = getTexCoordsIndex3(which);
00453 
00454     if(ind < 0)
00455         return Vec2f::Null;
00456 
00457     return _geo->getTexCoords3()->getValue(ind);
00458 }

Int32 osg::PrimitiveIterator::getTexCoordsIndex4 ( Int32  which  )  const [inline]

Return the fifth texture coordinates index (i.e. the number of the entry in the textureCoordinates4 property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no fifth texture coordinates, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 468 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _texcoordsIndex4, and osg::NullFC.

Referenced by getTexCoords4(), osg::TriangleIterator::getTexCoordsIndex4(), osg::LineIterator::getTexCoordsIndex4(), osg::FaceIterator::getTexCoordsIndex4(), and osg::EdgeIterator::getTexCoordsIndex4().

00469 {
00470     if(_geo->getTexCoords4() == NullFC)
00471         return -1;
00472 
00473     if(_geo->getIndices() != NullFC)
00474     {
00475         if(_texcoordsIndex4 != -1)
00476         {
00477             return _indices->getValue((_actPointIndex + which) *
00478                                       _nmappings + _texcoordsIndex4);
00479         }
00480         else
00481         {
00482             return _indices->getValue(_actPointIndex * _nmappings + which );
00483         }
00484     }
00485     else
00486     {
00487         return _actPointIndex + which;
00488     }
00489 }

Vec2f osg::PrimitiveIterator::getTexCoords4 ( Int32  which  )  const [inline]

Return the fifth texture coordinates of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no fifth texture coordinates, Vec2f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 498 of file OSGPrimitiveIterator.inl.

References _geo, getTexCoordsIndex4(), and osg::VectorInterface< ValueTypeT, StorageInterfaceT >::Null.

00499 {
00500     Int32 ind = getTexCoordsIndex4(which);
00501 
00502     if(ind < 0)
00503         return Vec2f::Null;
00504 
00505     return _geo->getTexCoords4()->getValue(ind);
00506 }

Int32 osg::PrimitiveIterator::getTexCoordsIndex5 ( Int32  which  )  const [inline]

Return the sixth texture coordinates index (i.e. the number of the entry in the textureCoordinates5 property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no sixth texture coordinates, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 516 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _texcoordsIndex5, and osg::NullFC.

Referenced by getTexCoords5(), osg::TriangleIterator::getTexCoordsIndex5(), osg::LineIterator::getTexCoordsIndex5(), osg::FaceIterator::getTexCoordsIndex5(), and osg::EdgeIterator::getTexCoordsIndex5().

00517 {
00518     if(_geo->getTexCoords5() == NullFC)
00519         return -1;
00520 
00521     if(_geo->getIndices() != NullFC)
00522     {
00523         if(_texcoordsIndex5 != -1)
00524         {
00525             return _indices->getValue((_actPointIndex + which) *
00526                                       _nmappings + _texcoordsIndex5);
00527         }
00528         else
00529         {
00530             return _indices->getValue(_actPointIndex * _nmappings + which );
00531         }
00532     }
00533     else
00534     {
00535         return _actPointIndex + which;
00536     }
00537 }

Vec2f osg::PrimitiveIterator::getTexCoords5 ( Int32  which  )  const [inline]

Return the sixth texture coordinates of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no sixth texture coordinates, Vec2f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 546 of file OSGPrimitiveIterator.inl.

References _geo, getTexCoordsIndex5(), and osg::VectorInterface< ValueTypeT, StorageInterfaceT >::Null.

00547 {
00548     Int32 ind = getTexCoordsIndex5(which);
00549 
00550     if(ind < 0)
00551         return Vec2f::Null;
00552 
00553     return _geo->getTexCoords5()->getValue(ind);
00554 }

Int32 osg::PrimitiveIterator::getTexCoordsIndex6 ( Int32  which  )  const [inline]

Return the seventh texture coordinates index (i.e. the number of the entry in the textureCoordinates6 property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no seventh texture coordinates, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 564 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _texcoordsIndex6, and osg::NullFC.

Referenced by getTexCoords6(), osg::TriangleIterator::getTexCoordsIndex6(), osg::LineIterator::getTexCoordsIndex6(), osg::FaceIterator::getTexCoordsIndex6(), and osg::EdgeIterator::getTexCoordsIndex6().

00565 {
00566     if(_geo->getTexCoords6() == NullFC)
00567         return -1;
00568 
00569     if(_geo->getIndices() != NullFC)
00570     {
00571         if(_texcoordsIndex6 != -1)
00572         {
00573             return _indices->getValue((_actPointIndex + which) *
00574                                       _nmappings + _texcoordsIndex6);
00575         }
00576         else
00577         {
00578             return _indices->getValue(_actPointIndex * _nmappings + which );
00579         }
00580     }
00581     else
00582     {
00583         return _actPointIndex + which;
00584     }
00585 }

Vec2f osg::PrimitiveIterator::getTexCoords6 ( Int32  which  )  const [inline]

Return the seventh texture coordinates of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no seventh texture coordinates, Vec2f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 594 of file OSGPrimitiveIterator.inl.

References _geo, getTexCoordsIndex6(), and osg::VectorInterface< ValueTypeT, StorageInterfaceT >::Null.

00595 {
00596     Int32 ind = getTexCoordsIndex6(which);
00597 
00598     if(ind < 0)
00599         return Vec2f::Null;
00600 
00601     return _geo->getTexCoords6()->getValue(ind);
00602 }

Int32 osg::PrimitiveIterator::getTexCoordsIndex7 ( Int32  which  )  const [inline]

Return the eighth texture coordinates index (i.e. the number of the entry in the textureCoordinates7 property which is used) of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no eighth texture coordinates, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 612 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _indices, _nmappings, _texcoordsIndex7, and osg::NullFC.

Referenced by getTexCoords7(), osg::TriangleIterator::getTexCoordsIndex7(), osg::LineIterator::getTexCoordsIndex7(), osg::FaceIterator::getTexCoordsIndex7(), and osg::EdgeIterator::getTexCoordsIndex7().

00613 {
00614     if(_geo->getTexCoords7() == NullFC)
00615         return -1;
00616 
00617     if(_geo->getIndices() != NullFC)
00618     {
00619         if(_texcoordsIndex7 != -1)
00620         {
00621             return _indices->getValue((_actPointIndex + which) *
00622                                       _nmappings + _texcoordsIndex7);
00623         }
00624         else
00625         {
00626             return _indices->getValue(_actPointIndex * _nmappings + which );
00627         }
00628     }
00629     else
00630     {
00631         return _actPointIndex + which;
00632     }
00633 }

Vec2f osg::PrimitiveIterator::getTexCoords7 ( Int32  which  )  const [inline]

Return the eighth texture coordinates of a point in the current primitive. which is the point to access. Must be between 0 and getLength().

If the geometry has no eighth texture coordinates, Vec2f::Null is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 642 of file OSGPrimitiveIterator.inl.

References _geo, getTexCoordsIndex7(), and osg::VectorInterface< ValueTypeT, StorageInterfaceT >::Null.

00643 {
00644     Int32 ind = getTexCoordsIndex7(which);
00645 
00646     if(ind < 0)
00647         return Vec2f::Null;
00648 
00649     return _geo->getTexCoords7()->getValue(ind);
00650 }

Int32 osg::PrimitiveIterator::getIndexIndex ( Int32  which  )  const [inline]

Return the index index of a point in the current primitive. The index index is the number of the index used for this point in the index property. which is the point to access. Must be between 0 and getLength().

For multi-indexed geometry it is the index of the beginning of the index block used. See Indexing for details on indexing.

If the geometry has no indices, -1 is returned.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 663 of file OSGPrimitiveIterator.inl.

References _actPointIndex, _geo, _nmappings, and osg::NullFC.

Referenced by osg::createConvexPrimitives(), osg::TriangleIterator::getIndexIndex(), osg::LineIterator::getIndexIndex(), osg::FaceIterator::getIndexIndex(), and osg::EdgeIterator::getIndexIndex().

00664 {
00665     if(_geo->getIndices() != NullFC)
00666     {
00667         return(_actPointIndex + which) * _nmappings;
00668     }
00669     else
00670         return -1;
00671 }

GeometryPtr osg::PrimitiveIterator::getGeometry ( void   )  const [inline]

Return the geometry the iterator is currently attached to.

Definition at line 676 of file OSGPrimitiveIterator.inl.

References _geo.

Referenced by osg::TriangleIterator::getColor(), osg::LineIterator::getColor(), osg::FaceIterator::getColor(), osg::EdgeIterator::getColor(), osg::TriangleIterator::getNormal(), osg::LineIterator::getNormal(), osg::FaceIterator::getNormal(), osg::EdgeIterator::getNormal(), osg::TriangleIterator::getPosition(), osg::LineIterator::getPosition(), osg::FaceIterator::getPosition(), osg::EdgeIterator::getPosition(), osg::TriangleIterator::getSecondaryColor(), osg::LineIterator::getSecondaryColor(), osg::FaceIterator::getSecondaryColor(), osg::EdgeIterator::getSecondaryColor(), osg::TriangleIterator::getTexCoords(), osg::LineIterator::getTexCoords(), osg::FaceIterator::getTexCoords(), osg::EdgeIterator::getTexCoords(), osg::TriangleIterator::getTexCoords1(), osg::LineIterator::getTexCoords1(), osg::FaceIterator::getTexCoords1(), osg::EdgeIterator::getTexCoords1(), osg::TriangleIterator::getTexCoords2(), osg::LineIterator::getTexCoords2(), osg::FaceIterator::getTexCoords2(), osg::EdgeIterator::getTexCoords2(), osg::TriangleIterator::getTexCoords3(), osg::LineIterator::getTexCoords3(), osg::FaceIterator::getTexCoords3(), osg::EdgeIterator::getTexCoords3(), osg::TriangleIterator::getTexCoords4(), osg::LineIterator::getTexCoords4(), osg::FaceIterator::getTexCoords4(), osg::EdgeIterator::getTexCoords4(), osg::TriangleIterator::getTexCoords5(), osg::LineIterator::getTexCoords5(), osg::FaceIterator::getTexCoords5(), osg::EdgeIterator::getTexCoords5(), osg::TriangleIterator::getTexCoords6(), osg::LineIterator::getTexCoords6(), osg::FaceIterator::getTexCoords6(), osg::EdgeIterator::getTexCoords6(), osg::TriangleIterator::getTexCoords7(), osg::LineIterator::getTexCoords7(), osg::FaceIterator::getTexCoords7(), and osg::EdgeIterator::getTexCoords7().

00677 {
00678     return _geo;
00679 }

void PrimitiveIterator::operator++ ( void   ) 

Increment the iterator and move it to the next primitive. It does not change if it already is at the end.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 378 of file OSGPrimitiveIterator.cpp.

References _actPointIndex, _actPrimLength, _actPrimType, _ended, _geo, _indices, _lengths, _nmappings, _primIndex, _types, isAtEnd(), and osg::NullFC.

00379 {
00380     if(isAtEnd())
00381     {
00382         return;
00383     }
00384 
00385     _actPointIndex += _actPrimLength;
00386     
00387     ++_primIndex;
00388 
00389     if(_primIndex >= _types->getSize())
00390     {
00391         _ended = true;
00392     }
00393     else
00394     {
00395         _actPrimType = _types->getValue(_primIndex);
00396         if(_lengths != NullFC)
00397         {
00398             _actPrimLength = _lengths->getValue(_primIndex);
00399         }
00400         else if(_indices != NullFC)
00401         {
00402             _actPrimLength = _indices->getSize() / _nmappings;
00403         }
00404         else
00405         {
00406             _actPrimLength = _geo->getPositions()->getSize() / _nmappings;
00407         }
00408     }
00409 }

void PrimitiveIterator::seek ( Int32  index  ) 

Seek the iterator to a specific primitive indicated by its index.

This is primarily used in conjunction with osg::PrimitiveIterator::getIndex to record a position in the iteration and later return to it.

Reimplemented in osg::EdgeIterator, osg::FaceIterator, osg::LineIterator, and osg::TriangleIterator.

Definition at line 479 of file OSGPrimitiveIterator.cpp.

References _actPointIndex, _actPrimLength, _actPrimType, _ended, _lengths, _primIndex, _types, and osg::osgMax().

00480 {   
00481     _actPointIndex = 0;
00482     _ended = false;
00483 
00484     if(index >= Int32(_types->getSize()))
00485     {
00486         _primIndex = _types->getSize();
00487         _ended = true;
00488     }
00489     else
00490     {
00491         _primIndex = osgMax(0, index);   
00492         
00493         for(UInt32 j = 0; j < _primIndex; j++)
00494             _actPointIndex += _lengths->getValue(j);
00495             
00496         _actPrimType = _types->getValue(_primIndex);
00497         _actPrimLength = _lengths->getValue(_primIndex);
00498     }
00499 }

PrimitiveIterator & PrimitiveIterator::operator= ( const PrimitiveIterator source  ) 

Increment the iterator and move it to the next primitive. It does not change if it already is at the end.

Definition at line 503 of file OSGPrimitiveIterator.cpp.

References _actPointIndex, _actPrimLength, _actPrimType, _colorIndex, _ended, _geo, _indices, _lengths, _nmappings, _normalIndex, _positionIndex, _primIndex, _secondaryColorIndex, _texcoordsIndex, _texcoordsIndex1, _texcoordsIndex2, _texcoordsIndex3, _texcoordsIndex4, _texcoordsIndex5, _texcoordsIndex6, _texcoordsIndex7, and _types.

00504 {
00505     if(this == &source)
00506         return *this;
00507     
00508     this->_geo                  = source._geo;
00509     this->_primIndex            = source._primIndex;
00510     this->_actPrimType          = source._actPrimType;
00511     this->_actPrimLength        = source._actPrimLength;
00512     this->_actPointIndex        = source._actPointIndex;
00513     this->_types                = source._types;
00514     this->_lengths              = source._lengths;
00515     this->_indices              = source._indices;
00516     this->_ended                = source._ended;
00517     this->_nmappings            = source._nmappings;
00518     this->_positionIndex        = source._positionIndex;
00519     this->_normalIndex          = source._normalIndex;
00520     this->_colorIndex           = source._colorIndex;
00521     this->_secondaryColorIndex  = source._colorIndex;
00522     this->_texcoordsIndex       = source._texcoordsIndex;
00523     this->_texcoordsIndex1      = source._texcoordsIndex1;
00524     this->_texcoordsIndex2      = source._texcoordsIndex2;
00525     this->_texcoordsIndex3      = source._texcoordsIndex3;
00526     this->_texcoordsIndex4      = source._texcoordsIndex4;
00527     this->_texcoordsIndex5      = source._texcoordsIndex5;
00528     this->_texcoordsIndex6      = source._texcoordsIndex6;
00529     this->_texcoordsIndex7      = source._texcoordsIndex7;
00530 
00531     return *this;
00532 }

bool PrimitiveIterator::operator< ( const PrimitiveIterator other  )  const

Compare two iterators. If the iterators are attached to different geometries a comparison in senseless, in that case false will be returned.

Definition at line 539 of file OSGPrimitiveIterator.cpp.

References _geo, and _primIndex.

00540 {
00541     return _geo       == other._geo &&
00542            _primIndex <= other._primIndex;
00543 }

bool PrimitiveIterator::operator== ( const PrimitiveIterator other  )  const

Compare two iterators. If the iterators are attached to different geometries a comparison in senseless, in that case false will be returned.

Definition at line 548 of file OSGPrimitiveIterator.cpp.

References _ended, _geo, and _primIndex.

00549 {
00550     return _ended     == other._ended &&
00551            _geo       == other._geo &&
00552            _primIndex == other._primIndex;
00553 }

bool PrimitiveIterator::operator!= ( const PrimitiveIterator other  )  const

Compare two iterators. If the iterators are attached to different geometries a comparison in senseless, in that case false will be returned.

Definition at line 558 of file OSGPrimitiveIterator.cpp.

00559 {
00560     return !(*this == other);
00561 }


Friends And Related Function Documentation

friend class Geometry [friend]

Reimplemented in osg::LineIterator, and osg::TriangleIterator.

Definition at line 177 of file OSGPrimitiveIterator.h.


Member Data Documentation

char PrimitiveIterator::cvsid = "@(#)$Id: OSGPrimitiveIterator.cpp,v 1.17 2001/11/01 05:55:06 vossg Exp $" [static, private]

Definition at line 189 of file OSGPrimitiveIterator.h.

Referenced by getType(), operator++(), operator=(), seek(), and setToBegin().

Definition at line 190 of file OSGPrimitiveIterator.h.

Referenced by getLength(), operator++(), operator=(), seek(), and setToBegin().

Definition at line 191 of file OSGPrimitiveIterator.h.

Referenced by operator++(), operator=(), seek(), setGeo(), setToBegin(), and setToEnd().

Definition at line 192 of file OSGPrimitiveIterator.h.

Referenced by operator++(), operator=(), seek(), setGeo(), and setToBegin().

Definition at line 195 of file OSGPrimitiveIterator.h.

Referenced by getPositionIndex(), operator=(), and setToBegin().

Definition at line 196 of file OSGPrimitiveIterator.h.

Referenced by getNormalIndex(), operator=(), and setToBegin().

Definition at line 197 of file OSGPrimitiveIterator.h.

Referenced by getColorIndex(), operator=(), and setToBegin().

Definition at line 198 of file OSGPrimitiveIterator.h.

Referenced by getSecondaryColorIndex(), operator=(), and setToBegin().

Definition at line 199 of file OSGPrimitiveIterator.h.

Referenced by getTexCoordsIndex(), operator=(), and setToBegin().

Definition at line 200 of file OSGPrimitiveIterator.h.

Referenced by getTexCoordsIndex1(), operator=(), and setToBegin().

Definition at line 201 of file OSGPrimitiveIterator.h.

Referenced by getTexCoordsIndex2(), operator=(), and setToBegin().

Definition at line 202 of file OSGPrimitiveIterator.h.

Referenced by getTexCoordsIndex3(), operator=(), and setToBegin().

Definition at line 203 of file OSGPrimitiveIterator.h.

Referenced by getTexCoordsIndex4(), operator=(), and setToBegin().

Definition at line 204 of file OSGPrimitiveIterator.h.

Referenced by getTexCoordsIndex5(), operator=(), and setToBegin().

Definition at line 205 of file OSGPrimitiveIterator.h.

Referenced by getTexCoordsIndex6(), operator=(), and setToBegin().

Definition at line 206 of file OSGPrimitiveIterator.h.

Referenced by getTexCoordsIndex7(), operator=(), and setToBegin().


The documentation for this class was generated from the following files:

Generated on Mon Mar 17 11:13:51 2008 for OpenSG by  doxygen 1.5.5