Author: fperrad Date: Mon Jul 21 01:08:23 2008 New Revision: 29644 Modified: trunk/languages/lua/src/lib/gl.pir trunk/languages/lua/src/lib/glut.pir
Log: [Lua] OpenGL - start implementation of few methods Modified: trunk/languages/lua/src/lib/gl.pir ============================================================================== --- trunk/languages/lua/src/lib/gl.pir (original) +++ trunk/languages/lua/src/lib/gl.pir Mon Jul 21 01:08:23 2008 @@ -11,6 +11,9 @@ See original on L<http://luagl.wikidot.com/> +This implementation is based on a wrapper over OpenGL, +see F<runtime/parrot/library/OpenGL.pir>. + =over 4 =cut @@ -20,14 +23,20 @@ .sub '__onload' :anon :load # print "__onload gl\n" + + load_bytecode 'library/OpenGL.pbc' + .const .Sub entry = 'luaopen_gl' set_hll_global 'luaopen_gl', entry .end .sub 'luaopen_gl' - # print "luaopen_gl\n" + # Import all OpenGL/GLU/GLUT functions + $P0 = get_global ['OpenGL'], '_export_all_functions' + $P0() + .local pmc _lua__GLOBAL _lua__GLOBAL = get_hll_global '_G' @@ -1328,30 +1337,95 @@ .return ($P0) .end -=item C<gl.Accum ()> +.const int ENUM_ERROR = -2 + +.sub 'get_gl_enum' :anon + .param string str + .local pmc gl_str + gl_str = get_hll_global ['Lua::gl'], 'gl_str' + .local int ret + ret = 0 + $P0 = split ',', str + L1: + unless $P0 goto L2 + $S0 = shift $P0 + upcase $S0 + $I0 = exists gl_str[$S0] + if $I0 goto L3 + .return (ENUM_ERROR) + L3: + $I0 = gl_str[$S0] + ret |= $I0 + goto L1 + L2: + .return (ret) +.end + + +=item C<gl.Accum (op, value)> =cut .sub 'Accum' :anon + .param pmc op :optional + .param pmc value :optional .param pmc extra :slurpy + $I0 = lua_isstring(op) + if $I0 goto L1 + lua_error("incorrect argument to function 'gl.Accum'") + L1: + $I1 = get_gl_enum(op) + unless $I1 == ENUM_ERROR goto L2 + lua_error("incorrect string argument to function 'gl.Accum'") + L2: + $I0 = lua_isnumber(value) + if $I0 goto L3 + lua_error("incorrect argument to function 'gl.Accum'") + L3: + $N2 = value + glAccum($I1, $N2) + .return () .end -=item C<gl.AlphaFunc ()> +=item C<gl.AlphaFunc (func, ref)> =cut .sub 'AlphaFunc' :anon + .param pmc func :optional + .param pmc ref :optional .param pmc extra :slurpy + $I0 = lua_isstring(func) + if $I0 goto L1 + lua_error("incorrect argument to function 'gl.AlphaFunc'") + L1: + $I1 = get_gl_enum(func) + unless $I1 == ENUM_ERROR goto L2 + lua_error("incorrect string argument to function 'gl.AlphaFunc'") + L2: + $I0 = lua_isnumber(ref) + if $I0 goto L3 + lua_error("incorrect argument to function 'gl.AlphaFunc'") + L3: + $N2 = ref + glAlphaFunc($I1, $N2) + .return () .end -=item C<gl.AreTexturesResident ()> +=item C<gl.AreTexturesResident (texturesArray)> =cut .sub 'AreTexturesResident' :anon + .param pmc texturesArray :optional .param pmc extra :slurpy + $I0 = lua_istable(texturesArray) + if $I0 goto L1 + lua_error("incorrect argument to function 'gl.AreTexturesResident'") + L1: + not_implemented() .end @@ -1361,6 +1435,7 @@ .sub 'ArrayElement' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1370,6 +1445,7 @@ .sub 'Begin' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1379,6 +1455,7 @@ .sub 'BindTexture' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1388,6 +1465,7 @@ .sub 'Bitmap' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1397,6 +1475,7 @@ .sub 'BlendFunc' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1406,6 +1485,7 @@ .sub 'CallList' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1415,6 +1495,7 @@ .sub 'CallLists' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1424,6 +1505,7 @@ .sub 'Clear' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1433,6 +1515,7 @@ .sub 'ClearAccum' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1442,6 +1525,7 @@ .sub 'ClearColor' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1451,6 +1535,7 @@ .sub 'ClearDepth' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1460,6 +1545,7 @@ .sub 'ClearIndex' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1469,6 +1555,7 @@ .sub 'ClearStencil' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1478,6 +1565,7 @@ .sub 'ClipPlane' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1487,6 +1575,7 @@ .sub 'Color' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1496,6 +1585,7 @@ .sub 'ColorMask' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1505,6 +1595,7 @@ .sub 'ColorMaterial' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1514,6 +1605,7 @@ .sub 'ColorPointer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1523,6 +1615,7 @@ .sub 'CopyPixels' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1532,6 +1625,7 @@ .sub 'CopyTexImage' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1541,6 +1635,7 @@ .sub 'CopyTexSubImage' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1550,6 +1645,7 @@ .sub 'CullFace' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1559,6 +1655,7 @@ .sub 'DeleteLists' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1568,6 +1665,7 @@ .sub 'DeleteTextures' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1577,6 +1675,7 @@ .sub 'DepthFunc' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1586,6 +1685,7 @@ .sub 'DepthMask' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1595,6 +1695,7 @@ .sub 'DepthRange' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1604,6 +1705,7 @@ .sub 'Disable' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1613,6 +1715,7 @@ .sub 'DisableClientState' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1622,6 +1725,7 @@ .sub 'DrawArrays' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1631,6 +1735,7 @@ .sub 'DrawBuffer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1640,6 +1745,7 @@ .sub 'DrawElements' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1649,6 +1755,7 @@ .sub 'DrawPixels' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1658,6 +1765,7 @@ .sub 'EdgeFlag' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1667,6 +1775,7 @@ .sub 'EdgeFlagPointer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1676,6 +1785,7 @@ .sub 'Enable' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1685,6 +1795,7 @@ .sub 'EnableClientState' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1694,6 +1805,7 @@ .sub 'End' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1703,6 +1815,7 @@ .sub 'EndList' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1712,6 +1825,7 @@ .sub 'EvalCoord' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1721,6 +1835,7 @@ .sub 'EvalMesh' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1730,6 +1845,7 @@ .sub 'EvalPoint' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1739,6 +1855,7 @@ .sub 'FeedbackBuffer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1748,6 +1865,7 @@ .sub 'Finish' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1757,6 +1875,7 @@ .sub 'Flush' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1766,6 +1885,7 @@ .sub 'Fog' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1775,6 +1895,7 @@ .sub 'FrontFace' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1784,6 +1905,7 @@ .sub 'Frustum' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1793,6 +1915,7 @@ .sub 'GenLists' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1802,6 +1925,7 @@ .sub 'GenTextures' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1811,6 +1935,7 @@ .sub 'Get' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1820,6 +1945,7 @@ .sub 'GetArray' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1829,6 +1955,7 @@ .sub 'GetConst' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1838,6 +1965,7 @@ .sub 'GetClipPlane' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1847,6 +1975,7 @@ .sub 'GetError' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1856,6 +1985,7 @@ .sub 'GetLight' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1865,6 +1995,7 @@ .sub 'GetMap' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1874,6 +2005,7 @@ .sub 'GetMaterial' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1883,6 +2015,7 @@ .sub 'GetPixelMap' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1892,6 +2025,7 @@ .sub 'GetPointer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1901,6 +2035,7 @@ .sub 'GetPolygonStipple' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1910,6 +2045,7 @@ .sub 'GetString' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1919,6 +2055,7 @@ .sub 'GetTexEnv' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1928,6 +2065,7 @@ .sub 'GetTexGen' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1937,6 +2075,7 @@ .sub 'GetTexImage' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1946,6 +2085,7 @@ .sub 'GetTexLevelParameter' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1955,6 +2095,7 @@ .sub 'GetTexParameter' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1964,6 +2105,7 @@ .sub 'Hint' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1973,6 +2115,7 @@ .sub 'Index' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1982,6 +2125,7 @@ .sub 'IndexMask' :anon .param pmc extra :slurpy + not_implemented() .end @@ -1991,6 +2135,7 @@ .sub 'IndexPointer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2000,6 +2145,7 @@ .sub 'InitNames' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2009,6 +2155,7 @@ .sub 'IsEnabled' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2018,6 +2165,7 @@ .sub 'IsList' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2027,6 +2175,7 @@ .sub 'IsTexture' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2036,6 +2185,7 @@ .sub 'Light' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2045,6 +2195,7 @@ .sub 'LightModel' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2054,6 +2205,7 @@ .sub 'LineStipple' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2063,6 +2215,7 @@ .sub 'LineWidth' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2072,6 +2225,7 @@ .sub 'ListBase' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2081,6 +2235,7 @@ .sub 'LoadIdentity' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2090,6 +2245,7 @@ .sub 'LoadMatrix' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2099,6 +2255,7 @@ .sub 'LoadName' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2108,6 +2265,7 @@ .sub 'LogicOp' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2117,6 +2275,7 @@ .sub 'Map' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2126,6 +2285,7 @@ .sub 'MapGrid' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2135,6 +2295,7 @@ .sub 'Material' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2144,6 +2305,7 @@ .sub 'MatrixMode' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2153,6 +2315,7 @@ .sub 'MultMatrix' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2162,6 +2325,7 @@ .sub 'NewList' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2171,6 +2335,7 @@ .sub 'Normal' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2180,6 +2345,7 @@ .sub 'NormalPointer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2189,6 +2355,7 @@ .sub 'Ortho' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2198,6 +2365,7 @@ .sub 'PassThrough' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2207,6 +2375,7 @@ .sub 'PixelMap' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2216,6 +2385,7 @@ .sub 'PixelStore' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2225,6 +2395,7 @@ .sub 'PixelTransfer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2234,6 +2405,7 @@ .sub 'PixelZoom' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2243,6 +2415,7 @@ .sub 'PointSize' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2252,6 +2425,7 @@ .sub 'PolygonMode' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2261,6 +2435,7 @@ .sub 'PolygonOffset' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2270,6 +2445,7 @@ .sub 'PolygonStipple' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2279,6 +2455,7 @@ .sub 'PopAttrib' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2288,6 +2465,7 @@ .sub 'PopClientAttrib' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2297,6 +2475,7 @@ .sub 'PopMatrix' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2306,6 +2485,7 @@ .sub 'PopName' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2315,6 +2495,7 @@ .sub 'PrioritizeTextures' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2324,6 +2505,7 @@ .sub 'PushAttrib' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2333,6 +2515,7 @@ .sub 'PushClientAttrib' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2342,6 +2525,7 @@ .sub 'PushMatrix' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2351,6 +2535,7 @@ .sub 'PushName' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2360,6 +2545,7 @@ .sub 'RasterPos' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2369,6 +2555,7 @@ .sub 'ReadBuffer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2378,6 +2565,7 @@ .sub 'ReadPixels' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2387,6 +2575,7 @@ .sub 'Rect' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2396,6 +2585,7 @@ .sub 'RenderMode' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2405,6 +2595,7 @@ .sub 'Rotate' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2414,6 +2605,7 @@ .sub 'Scale' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2423,6 +2615,7 @@ .sub 'Scissor' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2432,6 +2625,7 @@ .sub 'SelectBuffer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2441,6 +2635,7 @@ .sub 'ShadeModel' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2450,6 +2645,7 @@ .sub 'StencilFunc' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2459,6 +2655,7 @@ .sub 'StencilMask' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2468,6 +2665,7 @@ .sub 'StencilOp' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2477,6 +2675,7 @@ .sub 'TexCoord' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2486,6 +2685,7 @@ .sub 'TexCoordPointer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2495,6 +2695,7 @@ .sub 'TexEnv' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2504,6 +2705,7 @@ .sub 'TexGen' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2513,6 +2715,7 @@ .sub 'TexImage' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2522,6 +2725,7 @@ .sub 'TexSubImage' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2531,6 +2735,7 @@ .sub 'TexParameter' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2540,6 +2745,7 @@ .sub 'Translate' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2549,6 +2755,7 @@ .sub 'Vertex' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2558,6 +2765,7 @@ .sub 'VertexPointer' :anon .param pmc extra :slurpy + not_implemented() .end @@ -2567,6 +2775,7 @@ .sub 'Viewport' :anon .param pmc extra :slurpy + not_implemented() .end Modified: trunk/languages/lua/src/lib/glut.pir ============================================================================== --- trunk/languages/lua/src/lib/glut.pir (original) +++ trunk/languages/lua/src/lib/glut.pir Mon Jul 21 01:08:23 2008 @@ -11,6 +11,9 @@ See original on L<http://luagl.wikidot.com/> +This implementation is based on a wrapper over OpenGL, +see F<runtime/parrot/library/OpenGL.pir>. + =over 4 =cut @@ -20,14 +23,21 @@ .sub '__onload' :anon :load # print "__onload glut\n" + + load_bytecode 'library/OpenGL.pbc' + load_bytecode 'library/NCI/call_toolkit_init.pbc' + .const .Sub entry = 'luaopen_glut' set_hll_global 'luaopen_glut', entry .end .sub 'luaopen_glut' - # print "luaopen_glut\n" + # Import all OpenGL/GLU/GLUT functions + $P0 = get_global ['OpenGL'], '_export_all_functions' + $P0() + .local pmc _lua__GLOBAL _lua__GLOBAL = get_hll_global '_G' @@ -99,30 +109,65 @@ .end -=item C<glut.CreateWindow ()> +.include 'opengl_defines.pasm' + +=item C<glut.CreateWindow (title)> =cut .sub 'CreateWindow' :anon + .param pmc title :optional .param pmc extra :slurpy + $I0 = lua_isstring(title) + if $I0 goto L1 + lua_error("incorrect argument to function 'glut.CreateWindow'") + L1: + $S1 = title + glutCreateWindow($S1) .end -=item C<glut.DisplayFunc ()> +=item C<glut.DisplayFunc (funcname)> =cut .sub 'DisplayFunc' :anon + .param pmc funcname :optional .param pmc extra :slurpy + $I0 = lua_isstring(funcname) + if $I0 goto L1 + lua_error("incorrect argument to function 'glut.DisplayFunc'") + L1: + .local pmc _lua__GLOBAL + _lua__GLOBAL = get_hll_global '_G' + $P0 = _lua__GLOBAL[funcname] + $I0 = lua_isfunction($P0) + if $I0 goto L2 + lua_error("Script error: cannot find ", funcname, " function.") + L2: + glutDisplayFunc($P0) .end -=item C<glut.IdleFunc ()> +=item C<glut.IdleFunc (funcname)> =cut .sub 'IdleFunc' :anon + .param pmc funcname :optional .param pmc extra :slurpy + $I0 = lua_isstring(funcname) + if $I0 goto L1 + lua_error("incorrect argument to function 'glut.IdleFunc'") + L1: + .local pmc _lua__GLOBAL + _lua__GLOBAL = get_hll_global '_G' + $P0 = _lua__GLOBAL[funcname] + $I0 = lua_isfunction($P0) + if $I0 goto L2 + lua_error("Script error: cannot find ", funcname, " function.") + L2: + glutIdleFunc($P0) .end @@ -132,6 +177,13 @@ .sub 'Init' :anon .param pmc extra :slurpy + .local pmc argv + new argv, 'FixedStringArray' + set argv, 1 + argv[0] = '' + .const .Sub glutInit = 'glutInit' + $P0 = get_global ['NCI'], 'call_toolkit_init' + $P0(glutInit, argv) .end @@ -141,24 +193,52 @@ .sub 'InitDisplayMode' :anon .param pmc extra :slurpy + $I0 = .GL_RGBA | .GL_DOUBLE + glutInitDisplayMode($I0) .end -=item C<glut.InitWindowSize ()> +=item C<glut.InitWindowSize (width, height)> =cut .sub 'InitWindowSize' :anon + .param pmc width :optional + .param pmc height :optional .param pmc extra :slurpy + $I0 = lua_isnumber(width) + unless $I0 goto L1 + $I0 = lua_isnumber(height) + unless $I0 goto L1 + goto L2 + L1: + lua_error("incorrect argument to function 'glut.InitWindowSize'") + L2: + $I1 = width + $I2 = height + glutInitWindowSize($I1, $I2) .end -=item C<glut.KeyboardFunc ()> +=item C<glut.KeyboardFunc (funcname)> =cut .sub 'KeyboardFunc' :anon + .param pmc funcname :optional .param pmc extra :slurpy + $I0 = lua_isstring(funcname) + if $I0 goto L1 + lua_error("incorrect argument to function 'glut.KeyboardFunc'") + L1: + .local pmc _lua__GLOBAL + _lua__GLOBAL = get_hll_global '_G' + $P0 = _lua__GLOBAL[funcname] + $I0 = lua_isfunction($P0) + if $I0 goto L2 + lua_error("Script error: cannot find ", funcname, " function.") + L2: + glutKeyboardFunc($P0) .end @@ -168,6 +248,7 @@ .sub 'MainLoop' :anon .param pmc extra :slurpy + glutMainLoop() .end @@ -177,15 +258,29 @@ .sub 'PostRedisplay' :anon .param pmc extra :slurpy + glutPostRedisplay() .end -=item C<glut.ReshapeFunc ()> +=item C<glut.ReshapeFunc (funcname)> =cut .sub 'ReshapeFunc' :anon + .param pmc funcname :optional .param pmc extra :slurpy + $I0 = lua_isstring(funcname) + if $I0 goto L1 + lua_error("incorrect argument to function 'glut.ReshapeFunc'") + L1: + .local pmc _lua__GLOBAL + _lua__GLOBAL = get_hll_global '_G' + $P0 = _lua__GLOBAL[funcname] + $I0 = lua_isfunction($P0) + if $I0 goto L2 + lua_error("Script error: cannot find ", funcname, " function.") + L2: + glutFunc($P0) .end @@ -195,6 +290,7 @@ .sub 'SwapBuffers' :anon .param pmc extra :slurpy + glutSwapBuffers() .end
