chiark / gitweb /
Merge conflic solved
[cura.git] / Cura / gui / opengl.py
1 \r
2 try:\r
3         import OpenGL\r
4         OpenGL.ERROR_CHECKING = False\r
5         from OpenGL.GLU import *\r
6         from OpenGL.GL import *\r
7         hasOpenGLlibs = True\r
8 except:\r
9         print "Failed to find PyOpenGL: http://pyopengl.sourceforge.net/"\r
10         hasOpenGLlibs = False\r
11 \r
12 def InitGL(window, view3D, zoom):\r
13         # set viewing projection\r
14         glMatrixMode(GL_MODELVIEW)\r
15         glLoadIdentity()\r
16         size = window.GetSize()\r
17         glViewport(0,0, size.GetWidth(), size.GetHeight())\r
18         \r
19         glLightfv(GL_LIGHT0, GL_POSITION, [1.0, 1.0, 1.0, 0.0])\r
20 \r
21         glEnable(GL_LIGHTING)\r
22         glEnable(GL_LIGHT0)\r
23         glEnable(GL_DEPTH_TEST)\r
24         glEnable(GL_CULL_FACE)\r
25         glDisable(GL_BLEND)\r
26 \r
27         glClearColor(0.0, 0.0, 0.0, 1.0)\r
28         glClearStencil(0)\r
29         glClearDepth(1.0)\r
30 \r
31         glMatrixMode(GL_PROJECTION)\r
32         glLoadIdentity()\r
33         aspect = float(size.GetWidth()) / float(size.GetHeight())\r
34         if view3D:\r
35                 gluPerspective(45.0, aspect, 1.0, 1000.0)\r
36         else:\r
37                 glOrtho(-aspect, aspect, -1, 1, -1000.0, 1000.0)\r
38 \r
39         glMatrixMode(GL_MODELVIEW)\r
40         glLoadIdentity()\r
41         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)\r
42 \r
43 def DrawMachine(machineSize):\r
44         glColor3f(1,1,1)\r
45         glLineWidth(4)\r
46         glDisable(GL_LIGHTING)\r
47         glBegin(GL_LINE_LOOP)\r
48         glVertex3f(0, 0, 0)\r
49         glVertex3f(machineSize.x, 0, 0)\r
50         glVertex3f(machineSize.x, machineSize.y, 0)\r
51         glVertex3f(0, machineSize.y, 0)\r
52         glEnd()\r
53         glLineWidth(2)\r
54         glBegin(GL_LINES)\r
55         for i in xrange(0, int(machineSize.x), 10):\r
56                 glVertex3f(i, 0, 0)\r
57                 glVertex3f(i, machineSize.y, 0)\r
58         for i in xrange(0, int(machineSize.y), 10):\r
59                 glVertex3f(0, i, 0)\r
60                 glVertex3f(machineSize.x, i, 0)\r
61         glEnd()\r
62         glLineWidth(1)\r
63         glBegin(GL_LINE_LOOP)\r
64         glVertex3f(0, 0, machineSize.z)\r
65         glVertex3f(machineSize.x, 0, machineSize.z)\r
66         glVertex3f(machineSize.x, machineSize.y, machineSize.z)\r
67         glVertex3f(0, machineSize.y, machineSize.z)\r
68         glEnd()\r
69         glBegin(GL_LINES)\r
70         glVertex3f(0, 0, 0)\r
71         glVertex3f(0, 0, machineSize.z)\r
72         glVertex3f(machineSize.x, 0, 0)\r
73         glVertex3f(machineSize.x, 0, machineSize.z)\r
74         glVertex3f(machineSize.x, machineSize.y, 0)\r
75         glVertex3f(machineSize.x, machineSize.y, machineSize.z)\r
76         glVertex3f(0, machineSize.y, 0)\r
77         glVertex3f(0, machineSize.y, machineSize.z)\r
78         glEnd()\r
79 \r
80 def DrawBox(vMin, vMax):\r
81         glBegin(GL_LINE_LOOP)\r
82         glVertex3f(vMin.x, vMin.y, vMin.z)\r
83         glVertex3f(vMax.x, vMin.y, vMin.z)\r
84         glVertex3f(vMax.x, vMax.y, vMin.z)\r
85         glVertex3f(vMin.x, vMax.y, vMin.z)\r
86         glEnd()\r
87 \r
88         glBegin(GL_LINE_LOOP)\r
89         glVertex3f(vMin.x, vMin.y, vMax.z)\r
90         glVertex3f(vMax.x, vMin.y, vMax.z)\r
91         glVertex3f(vMax.x, vMax.y, vMax.z)\r
92         glVertex3f(vMin.x, vMax.y, vMax.z)\r
93         glEnd()\r
94         glBegin(GL_LINES)\r
95         glVertex3f(vMin.x, vMin.y, vMin.z)\r
96         glVertex3f(vMin.x, vMin.y, vMax.z)\r
97         glVertex3f(vMax.x, vMin.y, vMin.z)\r
98         glVertex3f(vMax.x, vMin.y, vMax.z)\r
99         glVertex3f(vMax.x, vMax.y, vMin.z)\r
100         glVertex3f(vMax.x, vMax.y, vMax.z)\r
101         glVertex3f(vMin.x, vMax.y, vMin.z)\r
102         glVertex3f(vMin.x, vMax.y, vMax.z)\r
103         glEnd()\r
104 \r
105 def DrawSTL(mesh):\r
106         for face in mesh.faces:\r
107                 glBegin(GL_TRIANGLES)\r
108                 v1 = face.v[0]\r
109                 v2 = face.v[1]\r
110                 v3 = face.v[2]\r
111                 glNormal3f(face.normal.x, face.normal.y, face.normal.z)\r
112                 glVertex3f(v1.x, v1.y, v1.z)\r
113                 glVertex3f(v2.x, v2.y, v2.z)\r
114                 glVertex3f(v3.x, v3.y, v3.z)\r
115                 glNormal3f(-face.normal.x, -face.normal.y, -face.normal.z)\r
116                 glVertex3f(v1.x, v1.y, v1.z)\r
117                 glVertex3f(v3.x, v3.y, v3.z)\r
118                 glVertex3f(v2.x, v2.y, v2.z)\r
119                 glEnd()\r