00001 00002 00003 00005 00006 00011 00016 00021 // IndexedLineSet.h // 00023 00024 #ifndef INDEXEDLINESET_H 00025 #define INDEXEDLINESET_H 00026 00027 #include "X3DTypes.h" 00028 #include "X3DGeometryNode.h" 00029 00030 namespace X3DTK { 00031 namespace X3D { 00032 00033 class X3DColorNode; 00034 class X3DCoordinateNode; 00035 00040 00041 class IndexedLineSet : public X3DGeometryNode 00042 { 00043 public: 00045 IndexedLineSet(); 00047 IndexedLineSet(const X3DColorNode *color, 00048 const X3DCoordinateNode *coord, 00049 const MFInt32 &colorIndex, 00050 SFBool colorPerVertex, 00051 const MFInt32 &coordIndex, 00052 SFFloat lineWidth); 00054 virtual SFNode clone() const; 00056 virtual ~IndexedLineSet(); 00057 00059 void setColor(const X3DColorNode *color); 00061 void setCoord(const X3DCoordinateNode *coord); 00063 void setColorIndex(const MFInt32 &colorIndex); 00065 void setColorPerVertex(SFBool colorPerVertex); 00067 void setCoordIndex(const MFInt32 &coordIndex); 00069 void setLineWidth(SFFloat lineWidth); 00070 00072 inline SFNode getColor() const {return _color;}; 00074 inline SFNode getCoord() const {return _coord;}; 00076 inline const MFInt32 &getColorIndex() const {return _colorIndex;}; 00078 inline SFBool getColorPerVertex() const {return _colorPerVertex;}; 00080 inline const MFInt32 &getCoordIndex() const {return _coordIndex;}; 00082 inline SFFloat getLineWidth() const {return _lineWidth;}; 00083 00086 virtual bool addChild(const SFAbstractNode &N); 00089 virtual bool setChild(const SFAbstractNode &N); 00091 virtual bool removeChild(const SFAbstractNode &N); 00092 00094 virtual void load(const X3DFileElement *element); 00096 virtual SFString write() const; 00097 00098 protected: 00100 IndexedLineSet(const IndexedLineSet &I); 00101 00102 private: 00104 SFNode _color; 00106 SFNode _coord; 00108 MFInt32 _colorIndex; 00110 SFBool _colorPerVertex; 00112 MFInt32 _coordIndex; 00114 SFFloat _lineWidth; 00115 }; 00116 00117 } 00118 } 00119 00120 #endif