00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __SGL_INDEXED_LINE_SET_HPP
00028 #define __SGL_INDEXED_LINE_SET_HPP
00029
00030 #include <sgl.h>
00031 #include <sglIndexedGeoSet.hpp>
00032
00033
00034
00038 class SGL_DLL_API sglIndexedLineSet : public sglIndexedGeoSet
00039 {
00040 public:
00042 sglIndexedLineSet();
00044 virtual ~sglIndexedLineSet();
00045
00047 sglStats::PrimEnum getPrimType() const {return sglStats::eINDEXED_LINES;}
00049 GLenum getGLPrimType() const {return GL_LINES;}
00051 unsigned int getPrimSize() const {return 2;}
00053 AAEnum getAAType() const {return eLINE_AA;}
00054
00055 protected:
00056 virtual void updateDrawFunc();
00057
00058 private:
00059 sglIndexedLineSet(const sglIndexedLineSet &);
00060 sglIndexedLineSet &operator=(const sglIndexedLineSet &);
00061
00062 void drawVT(const vector<sglTexCoords> &tex_coords) const;
00063 void drawVNoT(const vector<sglTexCoords> &tex_coords) const;
00064 void drawVNpT(const vector<sglTexCoords> &tex_coords) const;
00065 void drawVNvT(const vector<sglTexCoords> &tex_coords) const;
00066 void drawVCoT(const vector<sglTexCoords> &tex_coords) const;
00067 void drawVCoNoT(const vector<sglTexCoords> &tex_coords) const;
00068 void drawVCoNpT(const vector<sglTexCoords> &tex_coords) const;
00069 void drawVCoNvT(const vector<sglTexCoords> &tex_coords) const;
00070 void drawVCpT(const vector<sglTexCoords> &tex_coords) const;
00071 void drawVCpNoT(const vector<sglTexCoords> &tex_coords) const;
00072 void drawVCpNpT(const vector<sglTexCoords> &tex_coords) const;
00073 void drawVCpNvT(const vector<sglTexCoords> &tex_coords) const;
00074 void drawVCvT(const vector<sglTexCoords> &tex_coords) const;
00075 void drawVCvNoT(const vector<sglTexCoords> &tex_coords) const;
00076 void drawVCvNpT(const vector<sglTexCoords> &tex_coords) const;
00077 void drawVCvNvT(const vector<sglTexCoords> &tex_coords) const;
00078
00079 class Initializer;
00080 friend class Initializer;
00081 static void setupFuncTable();
00082
00083 private:
00084 static DrawFunc s_func_table[(eCOLORS|eNORMALS)+1];
00085 static Initializer sInitializer;
00086 };
00087
00088 #endif