]> git.tdb.fi Git - libs/gl.git/blob - source/core/primitivetype.cpp
Disconnect the PrimitiveType enum from OpenGL constants
[libs/gl.git] / source / core / primitivetype.cpp
1 #include <msp/strings/format.h>
2 #include "primitivetype.h"
3
4 using namespace std;
5
6 namespace Msp {
7 namespace GL {
8
9 GLenum get_gl_primitive_type(PrimitiveType pt)
10 {
11         switch(pt)
12         {
13         case POINTS: return GL_POINTS;
14         case LINES: return GL_LINES;
15         case LINE_STRIP: return GL_LINE_STRIP;
16         case LINE_LOOP: return GL_LINE_LOOP;
17         case TRIANGLES: return GL_TRIANGLES;
18         case TRIANGLE_STRIP: return GL_TRIANGLE_STRIP;
19         case TRIANGLE_FAN: return GL_TRIANGLE_FAN;
20         default: throw invalid_argument("get_gl_primitive_type");
21         }
22 }
23
24 void operator>>(const LexicalConverter &conv, PrimitiveType &pt)
25 {
26         if(conv.get()=="POINTS")
27                 pt = POINTS;
28         else if(conv.get()=="LINES")
29                 pt = LINES;
30         else if(conv.get()=="LINE_LOOP")
31                 pt = LINE_LOOP;
32         else if(conv.get()=="LINE_STRIP")
33                 pt = LINE_STRIP;
34         else if(conv.get()=="TRIANGLES")
35                 pt = TRIANGLES;
36         else if(conv.get()=="TRIANGLE_STRIP")
37                 pt = TRIANGLE_STRIP;
38         else if(conv.get()=="TRIANGLE_FAN")
39                 pt = TRIANGLE_FAN;
40         else
41                 throw lexical_error(format("conversion of '%s' to PrimitiveType", conv.get()));
42 }
43
44 } // namespace GL
45 } // namespace Msp