1 # Copyright (C) 2008, The Perl Foundation.
6 lib/glut.pir - GLUT library
10 This file implements the GLUT binding for Lua.
12 See original on L<http://luagl.wikidot.com/>
14 This implementation is based on a wrapper over OpenGL,
15 see F<runtime/parrot/library/OpenGL.pir>.
21 .HLL 'Lua', 'lua_group'
24 .sub '__onload' :anon :load
25 # print "__onload glut\n"
26 .const .Sub entry = 'luaopen_glut'
27 set_hll_global 'luaopen_glut', entry
31 # print "luaopen_glut\n"
32 load_bytecode 'OpenGL.pir'
33 load_bytecode 'NCI/call_toolkit_init.pir'
35 # Import all OpenGL/GLU/GLUT functions
36 $P0 = get_hll_global ['OpenGL'], '_export_all_functions'
39 .local pmc _lua__GLOBAL
40 _lua__GLOBAL = get_hll_global '_G'
47 _lua__GLOBAL[$P1] = _glut
49 $P2 = split "\n", <<'LIST'
63 lua_register($P1, _glut, $P2)
69 .include 'opengl_defines.pasm'
71 =item C<glut.CreateWindow (title)>
76 .param pmc title :optional
77 .param pmc extra :slurpy
78 $I0 = lua_isstring(title)
80 lua_error("incorrect argument to function 'glut.CreateWindow'")
83 $I0 = glutCreateWindow($S1)
90 =item C<glut.DestroyWindow (window)>
97 .param pmc window :optional
98 .param pmc extra :slurpy
99 $I0 = lua_isnumber(window)
101 lua_error("incorrect argument to function 'glut.DestroyWindow'")
104 glutDestroyWindow($I1)
108 =item C<glut.DisplayFunc (funcname)>
113 .param pmc funcname :optional
114 .param pmc extra :slurpy
115 $I0 = lua_isstring(funcname)
117 lua_error("incorrect argument to function 'glut.DisplayFunc'")
119 set_hll_global 'displayFunc.name', funcname
120 .const .Sub display = 'display'
121 glutDisplayFunc(display)
125 .local pmc _lua__GLOBAL, funcname
126 _lua__GLOBAL = get_hll_global '_G'
127 funcname = get_hll_global 'displayFunc.name'
128 $P0 = _lua__GLOBAL[funcname]
129 $I0 = lua_isfunction($P0)
131 printerr "Script error: cannot find "
133 printerr " function.\n\n"
142 printerr "Error running lua script:\n\n "
148 =item C<glut.IdleFunc (funcname)>
153 .param pmc funcname :optional
154 .param pmc extra :slurpy
155 $I0 = lua_isstring(funcname)
157 lua_error("incorrect argument to function 'glut.IdleFunc'")
159 set_hll_global 'idleFunc.name', funcname
160 .const .Sub idle = 'idle'
165 .local pmc _lua__GLOBAL, funcname
166 _lua__GLOBAL = get_hll_global '_G'
167 funcname = get_hll_global 'idleFunc.name'
168 $P0 = _lua__GLOBAL[funcname]
169 $I0 = lua_isfunction($P0)
171 printerr "Script error: cannot find "
173 printerr " function.\n\n"
182 printerr "Error running lua script:\n\n "
188 =item C<glut.Init ()>
193 .param pmc extra :slurpy
195 new argv, 'ResizableStringArray'
196 .const .Sub glutInit = 'glutInit'
197 $P0 = get_hll_global ['NCI'], 'call_toolkit_init'
202 =item C<glut.InitDisplayMode ()>
206 .sub 'InitDisplayMode'
207 .param pmc extra :slurpy
208 $I0 = .GLUT_RGBA | .GLUT_DOUBLE
209 glutInitDisplayMode($I0)
213 =item C<glut.InitWindowSize (width, height)>
217 .sub 'InitWindowSize'
218 .param pmc width :optional
219 .param pmc height :optional
220 .param pmc extra :slurpy
221 $I0 = lua_isnumber(width)
223 $I0 = lua_isnumber(height)
227 lua_error("incorrect argument to function 'glut.InitWindowSize'")
231 glutInitWindowSize($I1, $I2)
235 =item C<glut.KeyboardFunc (funcname)>
240 .param pmc funcname :optional
241 .param pmc extra :slurpy
242 $I0 = lua_isstring(funcname)
244 lua_error("incorrect argument to function 'glut.KeyboardFunc'")
246 set_hll_global 'keyboardFunc.name', funcname
247 .const .Sub keyboard = 'keyboard'
248 glutKeyboardFunc(keyboard)
251 .sub 'keyboard' :anon
255 .local pmc _lua__GLOBAL, funcname
256 _lua__GLOBAL = get_hll_global '_G'
257 funcname = get_hll_global 'keyboardFunc.name'
258 $P0 = _lua__GLOBAL[funcname]
259 $I0 = lua_isfunction($P0)
261 printerr "Script error: cannot find "
263 printerr " function.\n\n"
278 printerr "Error running lua script:\n\n "
284 =item C<glut.MainLoop ()>
289 .param pmc extra :slurpy
294 =item C<glut.PostRedisplay ()>
299 .param pmc extra :slurpy
304 =item C<glut.ReshapeFunc (funcname)>
309 .param pmc funcname :optional
310 .param pmc extra :slurpy
311 $I0 = lua_isstring(funcname)
313 lua_error("incorrect argument to function 'glut.ReshapeFunc'")
315 set_hll_global 'reshapeFunc.name', funcname
316 .const .Sub reshape = 'reshape'
317 glutReshapeFunc(reshape)
323 .local pmc _lua__GLOBAL, funcname
324 _lua__GLOBAL = get_hll_global '_G'
325 funcname = get_hll_global 'reshapeFunc.name'
326 $P0 = _lua__GLOBAL[funcname]
327 $I0 = lua_isfunction($P0)
329 printerr "Script error: cannot find "
331 printerr " function.\n\n"
344 printerr "Error running lua script:\n\n "
349 =item C<glut.SwapBuffers ()>
354 .param pmc extra :slurpy
372 # vim: expandtab shiftwidth=4 ft=pir: