<html> <head> <title>Edje: lua_script.edc</title> <meta http-equiv="content-type" content="text/html;charset=UTF-8"> <meta name="author" content="Andres Blanc" > <link rel="icon" href="img/favicon.png" type="image/x-icon"> <link rel="shortcut icon" href="img/favicon.png" type="image/x-icon"> <link rel="icon" href="img/favicon.png" type="image/ico"> <link rel="shortcut icon" href="img/favicon.png" type="image/ico"> <link rel="stylesheet" type="text/css" href="e.css"> <link rel="stylesheet" type="text/css" href="edoxy.css"> </head> <body> <div id="container"> <div id="header"> <div class="layout"> <h1><span>Enlightenment</span></h1> <h2><span>Beauty at your fingertips</span></h2> <table cellspacing="0" cellpadding="0" width="100%"><tr> <td id="header_logo"> <a href="http://www.enlightenment.org"></a> </td> <td id="header_menu"> <table cellspacing="0" cellpadding="0" align="right"><tr> <td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=home">Home</a></td> <td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=news">News</a></td> <td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=about">About</a></td> <td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=download">Download</a></td> <td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=support">Support</a></td> <td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=contribute">Contribute</a></td> <td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=contact">Contact</a></td> <td class="nav_passive"><a class="nav_passive" href="http://trac.enlightenment.org/e">Tracker</a></td> <td class="nav_passive"><a class="nav_passive" href="http://www.enlightenment.org/p.php?p=docs">Docs</a></td> </tr></table> </td> <td id="header_last"></td> </tr></table> <div class="doxytitle"> Edje Documentation <small>at Tue Feb 8 2011</small> </div> <div class="menu-container"> <div class="submenu"> <ul class="current"> <li><a href="files.html">Files</a></li> <li><a href="Edje__Edit_8h.html">Edje Edit API</a></li> <li><a href="examples.html">Examples</a></li> <li><a href="luaref.html">LUA scripting</a></li> <li><a href="Edje_8h.html">Edje API</a></li> <li><a href="edcref.html">EDC Reference</a></li> <li class="current"><a href="index.html">Main Page</a></li> </ul> </div> </div> <div class="clear"></div> </div> </div> <div id="content"> <div class="layout"> <!-- Generated by Doxygen 1.7.3 --> </div> <div class="header"> <div class="headertitle"> <h1>lua_script.edc</h1> </div> </div> <div class="contents"> <p>This example show the usage of lua scripting to create and animate some objects in the canvas.</p> <div class="fragment"><pre class="fragment">collections { group { <a name="a0"></a><a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"example"</span>; lua_script_only: 1; lua_script { --<span class="comment">// stick object private/local vars here</span> local D; local count = 0; local fndata = 99; local function mycb3 (v) print(<span class="stringliteral">"lua::callback transition "</span> .. D.val .. <span class="stringliteral">" v: "</span> .. v); d = {}; edje.size(d); print(<span class="stringliteral">"lua::objsize= "</span> .. d.w .. <span class="stringliteral">" , "</span> .. d.h); sz = {w=v * 80, h=v * 40}; D.rect:geom(((d.w / 2) * math.sin(v * 2 * math.pi)) + ((d.w - sz.w) / 2), ((d.h / 2) * math.cos(v * 2 * math.pi)) + ((d.h - sz.h) / 2), sz.w, sz.h); D.rect:color(255, 128, v * 255, 255); D.rect:move(d); print(<span class="stringliteral">"lua::pos= "</span> .. d.x .. <span class="stringliteral">" , "</span> .. d.y); r = D.rect:above(); <span class="keywordflow">if</span> (r ~= nil) then print(<span class="stringliteral">"lua::rcol"</span>); r:color(20, v * 255, 60, 255); <span class="keywordflow">else</span> print(<span class="stringliteral">"lua::r none!!!!!!!!!!!!!!1"</span>); end d = edje.size(); D.clip:geom(10, 10, d.w - 20, d.h - 20); c = D.clip:clipees(); <span class="keywordflow">for</span> i=1,table.getn(c),1 <span class="keywordflow">do</span> d = c[i]:geom(); print(<span class="stringliteral">"lua::"</span> .. i .. <span class="stringliteral">" geom = "</span> .. d.x .. <span class="stringliteral">","</span> .. d.y .. <span class="stringliteral">" "</span> .. d.w .. <span class="stringliteral">"x"</span> .. d.h); end <span class="keywordflow">return</span> <span class="keyword">true</span>; --<span class="comment">// repeat the timer</span> end local function mycb2 () print(<span class="stringliteral">"lua::callback animator "</span> .. count); print(<span class="stringliteral">"lua:: seconds: "</span> .. edje.seconds()); print(<span class="stringliteral">"lua:: looptime: "</span> .. edje.looptime()); local date = edje.date(); print(<span class="stringliteral">"lua:: date: "</span> .. date.year .. <span class="stringliteral">"|"</span> .. date.month .. <span class="stringliteral">"|"</span> .. date.day .. <span class="stringliteral">"|"</span> .. date.yearday .. <span class="stringliteral">"|"</span> .. date.weekday .. <span class="stringliteral">"|"</span> .. date.hour .. <span class="stringliteral">"|"</span> .. date.min .. <span class="stringliteral">"|"</span> .. date.sec ); <span class="keywordflow">return</span> <span class="keyword">true</span>; --<span class="comment">// repeat the timer</span> end local function mycb () print(<span class="stringliteral">"lua::callback "</span> .. count .. <span class="stringliteral">" fndata = "</span> .. fndata); count = count + 1; --<span class="comment">// keep count of calls - object data</span> fndata = fndata + 3; --<span class="comment">// play with object vars to see if they persist</span> D.tim = edje.timer(0.25, mycb); --<span class="comment">// inside cb add new timer</span> D.ani = edje.animator(mycb2); <span class="keywordflow">return</span> <span class="keyword">false</span>; --<span class="comment">// cease repeating the timer</span> end --<span class="comment">// init object here</span> D = {}; --<span class="comment">// data is empty table to start</span> D.val = math.random(); --<span class="comment">// start with some random value so</span> fndata = fndata + D.val; --<span class="comment">// func data start point</span> print(<span class="stringliteral">"lua::init ... "</span> .. D.val); edje.echo(<span class="stringliteral">"lua::echo('hello world')"</span>); --<span class="comment">// actually add the timer to call mycb in 1.23 sec</span> D.tim = edje.timer(1.23, mycb); D.tra = edje.transition(5.0, mycb3); <span class="keywordflow">if</span> (edje.spanky) then edje.spanky(); end --<span class="comment">// send some random edje message</span> edje.messagesend(7, <span class="stringliteral">"none"</span> ); edje.messagesend(7, <span class="stringliteral">"sig"</span>, <span class="stringliteral">"signal"</span>, <span class="stringliteral">"source"</span>); edje.messagesend(7, <span class="stringliteral">"str"</span>, <span class="stringliteral">"hello world"</span>); edje.messagesend(7, <span class="stringliteral">"int"</span>, 987); edje.messagesend(7, <span class="stringliteral">"float"</span>, 987.321); edje.messagesend(7, <span class="stringliteral">"strset"</span>, {<span class="stringliteral">"hello"</span>, <span class="stringliteral">"there"</span>, <span class="stringliteral">"world"</span>}); edje.messagesend(7, <span class="stringliteral">"intset"</span>, {1, 2, 3}); edje.messagesend(7, <span class="stringliteral">"floatset"</span>, {1.1, 2.2, 3.3}); edje.messagesend(7, <span class="stringliteral">"strint"</span>, <span class="stringliteral">"hello world"</span>, 7); edje.messagesend(7, <span class="stringliteral">"strfloat"</span>, <span class="stringliteral">"hello world"</span>, 7.654); edje.messagesend(7, <span class="stringliteral">"strintset"</span>,<span class="stringliteral">"hello world"</span>, {1, 2, 3}); D.rect = edje.rect(); D.rect:geom (5, 10, 50, 30); D.rect:color (255, 128, 60, 255); D.rect:show (); D.rect2 = edje.rect(); D.rect2:geom (50, 50, 50, 50); D.rect2:color (20, 30, 60, 120); D.rect2:show (); D.clip = edje.rect(); D.clip:geom (10, 10, 150, 150); D.clip:color (200, 200, 50, 200); D.clip:show (); D.rect2:clip(D.clip); D.rect:clip(D.clip); --<span class="comment">// example of deleting something</span> --<span class="comment">// D.tim:del();</span> --<span class="comment">// shutdown func - generally empty or not there. everything gcd for you</span> function shutdown () print(<span class="stringliteral">"lua::shutdown ... "</span> .. D.val); end function show () print(<span class="stringliteral">"lua::show ... "</span> .. D.val); end function hide () print(<span class="stringliteral">"lua::hide ... "</span> .. D.val); end function move (x, y) print(<span class="stringliteral">"lua::move ... "</span> .. D.val); print(<span class="stringliteral">" x="</span> .. x .. <span class="stringliteral">" x="</span> .. y); end function resize (w, h) print(<span class="stringliteral">"lua::resize ... "</span> .. D.val); print(<span class="stringliteral">" w="</span> .. w .. <span class="stringliteral">" h="</span> .. h); end function message (<span class="keywordtype">id</span>, <a name="a1"></a><a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>, v1, v2) print(<span class="stringliteral">"lua::message ... "</span> .. D.val); print(<span class="stringliteral">" id="</span> .. <span class="keywordtype">id</span> .. <span class="stringliteral">" type="</span> .. <a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>); --<span class="comment">// handle youre message type here. chekc id + type then use v1</span> --<span class="comment">// and/or v2 (or neither) appropriately. they are the same as</span> --<span class="comment">// the 2nd and 3rd param passed to edje.messagesend() (if any</span> --<span class="comment">// are passed at all)</span> end function signal (sig, src) print(<span class="stringliteral">"lua::signal ... "</span> .. D.val); print(<span class="stringliteral">" sig="</span> .. sig .. <span class="stringliteral">" src="</span> .. src); end } } } </pre></div> </div> </div> <div id="push"></div> </div> <!-- #content --> </div> <!-- .layout --> </div> <!-- #container --> <div id="footer"> <table><tr> <td class="copyright">Copyright ©2011 Enlightenment</td> <td class="generated">Docs generated Tue Feb 8 2011 17:28:42</td> </tr></table> </div> </body> </html>