Put in edje examples the super cool edje-emotion-elementary

videoplayer by Gustavo Barbieri.



SVN revision: 53214
This commit is contained in:
Davide Andreoli 2010-10-08 21:59:21 +00:00
parent 80e0de0e19
commit 1f34fa16e7
2 changed files with 243 additions and 0 deletions

View File

@ -478,8 +478,12 @@ This example show the usage of timers in embryo.
@example external_elm_button.edc @example external_elm_button.edc
This example create some elementary buttons and do some actions on user click. This example create some elementary buttons and do some actions on user click.
@example external_emotion_elm.edc
Super-concise video player example using Edje/Emotion/Elementary.
@example lua_script.edc @example lua_script.edc
This example show the usage of lua scripting to create and animate some This example show the usage of lua scripting to create and animate some
objects in the canvas. objects in the canvas.
*/ */

View File

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