<html> <head> <title>Edje: external_emotion_elm.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>external_emotion_elm.edc</h1> </div> </div> <div class="contents"> <p>Super-concise video player example using Edje/Emotion/Elementary.</p> <div class="fragment"><pre class="fragment"><span class="comment">/*</span> <span class="comment"> Super-concise video player example using Edje/Emotion/Elementary.</span> <span class="comment"></span> <span class="comment"> This is all in Edje by means of type:EXTERNAL, you don't need any C</span> <span class="comment"> code other than emotion and edje installed with edje_external</span> <span class="comment"> support enabled.</span> <span class="comment"></span> <span class="comment"> Compile: edje_cc external-emotion-elm.edc</span> <span class="comment"> Run....: edje_player external-emotion-elm.edj</span> <span class="comment"></span> <span class="comment"> */</span> collections { group { <a name="a0"></a><a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"main"</span>; min: 350 200; <span class="comment">/* set a min window size */</span> externals { <span class="comment">/* declare the modules you want to load */</span> external: <span class="stringliteral">"emotion"</span>; <span class="comment">/* video player engine */</span> external: <span class="stringliteral">"elm"</span>; <span class="comment">/* toolkit/widgets */</span> } parts { part { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"bg"</span>; <span class="comment">/* dark gray rectangle as background */</span> <a name="a1"></a><a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>: RECT; description { state: <span class="stringliteral">"default"</span> 0.0; color: 64 64 64 255; } } part { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"video"</span>; <span class="comment">/* video object */</span> <a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>: EXTERNAL; source: <span class="stringliteral">"emotion"</span>; description { state: <span class="stringliteral">"default"</span> 0.0; params { <span class="comment">/* explicitly select the emotion engine</span> <span class="comment"> * ['xine', 'gstreamer' or 'vlc']</span> <span class="comment"> * or comment the line to autoselect the engine */</span> <span class="comment">// choice: "engine" "gstreamer";</span> } } } part { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"title"</span>; <a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>: TEXT; effect: SOFT_SHADOW; description { state: <span class="stringliteral">"default"</span> 0.0; color: 255 255 255 0; color3: 0 0 0 0; align: 0.5 0.0; rel1 { relative: 0.0 0.0; offset: 10 2; } rel2 { relative: 1.0 0.0; offset: -11 10; } text { font: <span class="stringliteral">"Sans:style=Bold"</span>; align: 0.5 0.0; size: 10; min: 0 1; text: <span class="stringliteral">""</span>; } } description { state: <span class="stringliteral">"visible"</span> 0.0; inherit: <span class="stringliteral">"default"</span> 0.0; color: 255 255 255 255; color3: 0 0 0 255; } } part { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"controls-clipper"</span>; <span class="comment">/* clipper to control visibility */</span> <a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>: RECT; description { state: <span class="stringliteral">"default"</span> 0.0; color: 255 255 255 32; } description { state: <span class="stringliteral">"visible"</span> 0.0; color: 255 255 255 255; } } part { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"controls-bg"</span>; <span class="comment">/* controls background as</span> <span class="comment"> semi-transparent black at bottom edge */</span> <a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>: RECT; clip_to: <span class="stringliteral">"controls-clipper"</span>; description { state: <span class="stringliteral">"default"</span> 0.0; color: 0 0 0 128; rel1 { relative: 0.0 1.0; offset: 0 -40; } rel2 { relative: 1.0 1.0; offset: -1 -1; } } } part { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"play"</span>; <span class="comment">/* play button at bottom-left (relative</span> <span class="comment"> to controls-bg) */</span> <a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>: EXTERNAL; source: <span class="stringliteral">"elm/button"</span>; clip_to: <span class="stringliteral">"controls-clipper"</span>; description { state: <span class="stringliteral">"default"</span> 0.0; rel1 { relative: 0.0 0.0; offset: 0 0; to: <span class="stringliteral">"controls-bg"</span>; } rel2 { relative: 0.0 1.0; offset: 50 -1; to: <span class="stringliteral">"controls-bg"</span>; } params.string: <span class="stringliteral">"icon"</span> <span class="stringliteral">"apps"</span>; } } part { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"open"</span>; <span class="comment">/* open file button next to play button */</span> <a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>: EXTERNAL; source: <span class="stringliteral">"elm/fileselector_button"</span>; clip_to: <span class="stringliteral">"controls-clipper"</span>; description { state: <span class="stringliteral">"default"</span> 0.0; rel1 { relative: 0.0 0.0; offset: 52 0; to: <span class="stringliteral">"controls-bg"</span>; } rel2 { relative: 0.0 1.0; offset: 102 -1; to: <span class="stringliteral">"controls-bg"</span>; } params.string: <span class="stringliteral">"icon"</span> <span class="stringliteral">"folder"</span>; } } part { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"time"</span>; <span class="comment">/* time/progress */</span> <a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>: EXTERNAL; source: <span class="stringliteral">"elm/slider"</span>; clip_to: <span class="stringliteral">"controls-clipper"</span>; description { state: <span class="stringliteral">"default"</span> 0.0; rel1 { relative: 0.0 0.0; offset: 104 0; to: <span class="stringliteral">"controls-bg"</span>; } rel2 { relative: 1.0 1.0; offset: -1 -1; to: <span class="stringliteral">"controls-bg"</span>; } } } part { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"controls-eventarea"</span>; <span class="comment">/* event area so we catch mouse in</span> <span class="comment"> and out, repeat events so</span> <span class="comment"> buttons get them */</span> <a class="code" href="edje__data_8c.html#a0dae2edc8bfd2bedabfa38415c35f3ec">type</a>: RECT; repeat_events: 1; description { state: <span class="stringliteral">"default"</span> 0.0; color: 255 255 255 0; <span class="comment">/* fully transparent as we don't</span> <span class="comment"> need any visual feedback */</span> rel1.to: <span class="stringliteral">"controls-bg"</span>; rel2.to: <span class="stringliteral">"controls-bg"</span>; } } programs { <span class="comment">/* animated 0.2 linear fade in/out if mouse is over controls */</span> program { signal: <span class="stringliteral">"mouse,in"</span>; source: <span class="stringliteral">"controls-eventarea"</span>; action: STATE_SET <span class="stringliteral">"visible"</span> 0.0; transition: LINEAR 0.2; target: <span class="stringliteral">"controls-clipper"</span>; target: <span class="stringliteral">"title"</span>; } program { signal: <span class="stringliteral">"mouse,out"</span>; source: <span class="stringliteral">"controls-eventarea"</span>; action: STATE_SET <span class="stringliteral">"default"</span> 0.0; transition: LINEAR 0.2; target: <span class="stringliteral">"controls-clipper"</span>; target: <span class="stringliteral">"title"</span>; } <span class="comment">/* toggle video playing state when play is clicked */</span> program { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"toggle-play-video"</span>; signal: <span class="stringliteral">"clicked"</span>; source: <span class="stringliteral">"play"</span>; script { <span class="keyword">new</span> v = external_param_get_bool(PART:<span class="stringliteral">"video"</span>, <span class="stringliteral">"play"</span>); external_param_set_bool(PART:<span class="stringliteral">"video"</span>, <span class="stringliteral">"play"</span>, !v); } } <span class="comment">/* whenever file is chosen, set and play it */</span> program { signal: <span class="stringliteral">"file,chosen"</span>; source: <span class="stringliteral">"open"</span>; action: PARAM_COPY <span class="stringliteral">"open"</span> <span class="stringliteral">"path"</span> <span class="stringliteral">"video"</span> <span class="stringliteral">"file"</span>; after: <span class="stringliteral">"play-video"</span>; after: <span class="stringliteral">"set-title"</span>; } program { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"play-video"</span>; action: PARAM_SET <span class="stringliteral">"video"</span> <span class="stringliteral">"play"</span> <span class="stringliteral">"1"</span>; } program { <a class="code" href="edje__data_8c.html#a8f8f80d37794cde9472343e4487ba3eb">name</a>: <span class="stringliteral">"set-title"</span>; action: PARAM_COPY <span class="stringliteral">"open"</span> <span class="stringliteral">"path"</span> <span class="stringliteral">"title"</span> <span class="stringliteral">"text"</span>; } <span class="comment">/* if position changes, set slider (time) */</span> program { signal: <span class="stringliteral">"position_update"</span>; source: <span class="stringliteral">"video"</span>; script { <span class="keyword">new</span> Float:p, Float:len; p = external_param_get_float(PART:<span class="stringliteral">"video"</span>, <span class="stringliteral">"position"</span>); len = external_param_get_float(PART:<span class="stringliteral">"video"</span>, <span class="stringliteral">"play_length"</span>); <span class="keywordflow">if</span> (len > 0.0) external_param_set_float(PART:<span class="stringliteral">"time"</span>, <span class="stringliteral">"value"</span>, p / len); } } <span class="comment">/* if slider (time) changes, set the position (seek) */</span> program { signal: <span class="stringliteral">"changed"</span>; source: <span class="stringliteral">"time"</span>; script { <span class="keyword">new</span> Float:v, Float:len; v = external_param_get_float(PART:<span class="stringliteral">"time"</span>, <span class="stringliteral">"value"</span>); len = external_param_get_float(PART:<span class="stringliteral">"video"</span>, <span class="stringliteral">"play_length"</span>); <span class="keywordflow">if</span> (len > 0.0) external_param_set_float(PART:<span class="stringliteral">"video"</span>, <span class="stringliteral">"position"</span>, v * len); } } } } } } </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>