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