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

 

 

Reply via email to