00001 00002 // IndexedLineSet.h // 00004 00005 #ifndef INDEXEDLINESET_H 00006 #define INDEXEDLINESET_H 00007 00008 #include "X3DTypes.h" 00009 #include "X3DGeometryNode.h" 00010 00011 namespace X3DTK { 00012 namespace X3D { 00013 00014 class X3DColorNode; 00015 class X3DCoordinateNode; 00016 00021 00022 class IndexedLineSet : public X3DGeometryNode 00023 { 00024 public: 00026 IndexedLineSet(); 00028 IndexedLineSet(const X3DColorNode *color, 00029 const X3DCoordinateNode *coord, 00030 const MFInt32 &colorIndex, 00031 SFBool colorPerVertex, 00032 const MFInt32 &coordIndex, 00033 SFFloat lineWidth); 00035 virtual SFNode clone() const; 00037 virtual ~IndexedLineSet(); 00038 00040 void setColor(const X3DColorNode *color); 00042 void setCoord(const X3DCoordinateNode *coord); 00044 void setColorIndex(const MFInt32 &colorIndex); 00046 void setColorPerVertex(SFBool colorPerVertex); 00048 void setCoordIndex(const MFInt32 &coordIndex); 00050 void setLineWidth(SFFloat lineWidth); 00051 00053 inline SFNode getColor() const {return _color;}; 00055 inline SFNode getCoord() const {return _coord;}; 00057 inline const MFInt32 &getColorIndex() const {return _colorIndex;}; 00059 inline SFBool getColorPerVertex() const {return _colorPerVertex;}; 00061 inline const MFInt32 &getCoordIndex() const {return _coordIndex;}; 00063 inline SFFloat getLineWidth() const {return _lineWidth;}; 00064 00067 bool addChild(const SFAbstractNode &N); 00070 bool setChild(const SFAbstractNode &N); 00072 bool removeChild(const SFAbstractNode &N); 00073 00075 virtual void load(const X3DFileElement *element); 00077 virtual SFString write() const; 00078 00079 protected: 00081 IndexedLineSet(const IndexedLineSet &I); 00082 00083 private: 00085 SFNode _color; 00087 SFNode _coord; 00089 MFInt32 _colorIndex; 00091 SFBool _colorPerVertex; 00093 MFInt32 _coordIndex; 00095 SFFloat _lineWidth; 00096 }; 00097 00098 } 00099 } 00100 00101 #endif