summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbeber <beber>2005-10-12 21:14:43 +0000
committerbeber <beber>2005-10-12 21:14:43 +0000
commit38312f3771a0660ae16f79aab95f94fb2e8ab47e (patch)
tree04ff578a45f139c7fe01b1d13db88ea320d7f932
parenta6e3c4bc6811816eb9717abbd1c13b71037b9c9e (diff)
Add test here
-rw-r--r--test/e.pngbin0 -> 74944 bytes
-rw-r--r--test/pres.xml229
-rw-r--r--test/sky.edjbin0 -> 130975 bytes
-rw-r--r--test/sky/bg.pngbin0 -> 59412 bytes
-rw-r--r--test/sky/build.sh2
-rw-r--r--test/sky/c1.pngbin0 -> 172983 bytes
-rw-r--r--test/sky/c2.pngbin0 -> 85067 bytes
-rw-r--r--test/sky/c3.pngbin0 -> 97280 bytes
-rw-r--r--test/sky/c4.pngbin0 -> 141508 bytes
-rw-r--r--test/sky/icon.pngbin0 -> 16849 bytes
-rw-r--r--test/sky/main_edje_source.edc625
-rw-r--r--test/sky/s0.pngbin0 -> 48604 bytes
-rw-r--r--test/sky/s1.pngbin0 -> 31506 bytes
-rw-r--r--test/sky/s2.pngbin0 -> 47676 bytes
-rw-r--r--test/sky/sky.edjbin0 -> 130982 bytes
15 files changed, 856 insertions, 0 deletions
diff --git a/test/e.png b/test/e.png
new file mode 100644
index 0000000..47597a8
--- /dev/null
+++ b/test/e.png
Binary files differ
diff --git a/test/pres.xml b/test/pres.xml
new file mode 100644
index 0000000..42076dc
--- /dev/null
+++ b/test/pres.xml
@@ -0,0 +1,229 @@
1<presentation>
2 <slide>
3 </slide>
4 <slide>
5 <title>BLING BLING!</title>
6 <image size="25">e.png</image>
7 <title>
8 Desktop Developers Conference, Ottawa, 2005
9 </title>
10 <text>
11 The power of structural objects for building widget sets, applications
12 in a way that allows powerful theme manipulation, smart display pipeline
13 optimization that scales from hand-held device all the way to the
14 high-end desktop.
15 </text>
16 <text>
17 Carsten Haitzler (Rasterman) - raster@rasterman.com
18 </text>
19 </slide>
20 <slide>
21 <title>Enlightenment is just a Window Manager... Right?</title>
22 <text>
23 Once upon a time in a galaxy far far away... Enlightenment was mostly a
24 Window Manager for X. As part of development for 0.17 It has become much
25 more.
26 </text>
27 <text>
28 The work for E17 has created an imaging toolkit, canvas library,
29 shareable theme engine, virtual machine and much more, targeted not just
30 at the WM but all the way down to embedded devices.
31 </text>
32 <text>
33 It all began when trying to write a better file manager - EFM, where it
34 turned out an immediate display system was much harder to use to build
35 such a GUI, as the program ended up creating a structured GUI on top
36 anyway.
37 </text>
38 </slide>
39 <slide>
40 <title>The nature of GUI's</title>
41 <text>
42 Despite the API X and other display systems provide at its core, the
43 nature of display is invariably object based. You display a set of
44 objects (icons, buttons, labels etc.) and need to retain that structure
45 and manipulate it. Generally this task is left up to the application
46 itself, or a widget set. Often you don't want a widget set, but need
47 some half-way house where you can arrange lower-level primitives, but
48 not need to worry how to draw them all the time.
49 </text>
50 <text>
51 Here comes the canvas...
52 </text>
53 </slide>
54 <slide>
55 <title>Back to file managers</title>
56 <text>
57 In a modern world a GUI with bitmapped fonts, jagged icons with a few
58 minimal colors just doesn't cut it. People want smooth icons, colorful
59 displays and smooth anti-aliased text. All of this revolves around
60 alpha blending image data one way or another, and handling scaling of
61 image data in addition to the old stalwart rendering algorithms.
62 </text>
63 <text>
64 To do this on any reasonable sized display needs a very fast CPU, or
65 hardware acceleration, but let's be honest - the hardware acceleration
66 support under X is patchy for this level of rendering. There is need for
67 a way to do this without HAVING to rely on hardware acceleration. This
68 also makes way for scaling DOWN to small embedded systems that often only
69 have very dumb framebuffers AS WELL AS supporting cards with no driver
70 support and a stable development platform for drivers to be improved.
71 </text>
72 </slide>
73 <slide>
74 <title>Evas engines and fast software</title>
75 <text>
76 Evas is built on the premise that the rendering back-end may change
77 over time and that there may even be multiple rendering engines supported
78 at any one time, BUT there must always be a reliable software engine
79 that works fast enough for real use as the target may not have hardware
80 accelerated support, or such acceleration may place limits on the
81 rendering that the application cannot allow.
82 </text>
83 <text>
84 Currently Evas supports rendering to X via software rendering, Linux
85 framebuffer, Memory ARGB buffer, OpenGL/)X, DirectFB, Qtopia via software
86 and even Cairo (not that useful). It works on a tile update system that
87 limits redraws to only what changed, but even this currently has limits.
88 </text>
89 </slide>
90 <slide>
91 <title>Building more powerful layers on top</title>
92 <video size="33" pos="20+10" alpha="40">vid1.mpg</video>
93 <video size="60" pos="50+60" alpha="50">vid3.mpg</video>
94 <text>
95 Being not just a rendering engine and abstraction layer, but a structural
96 drawing system, Evas does require building layers on top to make it do
97 more. Evas provides a way to extend its objects with your own. One
98 example of this is Emotion, a video object library that glues modular
99 video decoders to canvas objects, letting them play video on their own
100 and be just another native part of the canvas.
101 </text>
102 </slide>
103 <slide>
104 <title>Edje</title>
105 <text>
106 Another layer like this is Edje. This is a hybrid layout engine with
107 event, scripting, and general look and feel rolled in. This information
108 is compiled into small, compact portable files that do not need to be
109 "installed" to be used. They can be used as-is as they are accessed on
110 a on-demand basis. They can react to events (signals) and transition
111 states and even execute scripts. The scripts are entirely sand-boxed and
112 cannot take over a program or cause any security problems. By
113 transitioning states you can also generate animation as transitions can
114 happen over time and Edje will insert or drop frames as needed to meet
115 a target framerate.
116 </text>
117 <text>
118 The Edje file is compiled from a text source (that looks not much
119 different from a C struct), and produces the compressed output that can
120 be directly used by an application. These files are even de-compilable
121 so you can extract the original source from the compiled output.
122 </text>
123 </slide>
124 <slide>
125 <title>Defining GUI layout with a structure and procedure</title>
126 <text>
127 Edje takes a layout system that looks more like layers found in GIMP
128 or Photoshop, but generally has many more layers that move, resize,
129 get recolored or have their contents changed. These layers are known as
130 Parts in Edje and have their geometry defined relative to the Edje object
131 as a whole or to other Edje parts, as well as allowing padding, offsets,
132 and many other limiting and augmenting parameters (aspect ratio, min/max
133 size, alignment etc.). This allows for a wide range of layout abilities,
134 but does fall short of a widget set's multi-item containering such as
135 h/vbox, tables, lists etc. Edje was intended to be something that could
136 be used to augment a widget set at a lower level, or be used as part of
137 building one, allowing your "button" or "scrollbar" to be much more
138 visually flexible than existing widget theme systems allow. It saves
139 having to interpret lots of script code as the layout engine is compiled
140 but it just accepts many parameters.
141 </text>
142 </slide>
143 <slide>
144 <title>Events</title>
145 <text>
146 Edje can allow for things to happen on events or signals. These events
147 either come from the user (the mouse fore example) or from the running
148 program that is using the Edje (it can emit signals) as well as from
149 well structured message queues. Edje has a set of "programs" that "run"
150 when a certain signal happens. They may simply change the state of a
151 part from normal to selected, or may emit more signals, transition parts
152 over periods of time for animation and even run an entire virtual
153 machine and scripting engine (known as embryo) to perform work to react
154 to the program or the user.
155 </text>
156 <text>
157 When simple signals are not enough the program and the Edje object can
158 communicate via structured message queues that allow a set of Edje
159 object-side callbacks in Embryo and application message handling
160 callbacks to talk. This allows a fairly sophisticated way of
161 communicating with a fairly opaque GUI object.
162 </text>
163 </slide>
164 <slide>
165 <title>Encapsulation for ease of use</title>
166 <image size="50" dimensions="640x480">sky.edj</image>
167 <text>
168 Compiling the source files into a single output file allows for easy
169 distribution and use. The above example is a single Edje object that
170 can animate and behave on its own, all encapsulated in a single file.
171 </text>
172 </slide>
173 <slide>
174 <title>Problems</title>
175 <list>
176 <item>Still fairly limited in abilities</item>
177 <item>No GUI editing tools yet</item>
178 <item>Complex to get a hold on</item>
179 <item>Limited primitive support</item>
180 <item>Limited API available to scripts</item>
181 <item>Not easily ported away from Evas</item>
182 <item>No multi-item layout primitives (h/vbox etc.)</item>
183 </list>
184 </slide>
185 <slide>
186 <title>Application in other areas</title>
187 <text>
188 Widget set theme engines should allow the theme to REACT to events such
189 as signals, mouse and focus events etc. and thus possibly animate to
190 help draw attention to something or simply be more flexible.
191 </text>
192 <text>
193 Custom interfaces where widgets sets are just too "standard" such as
194 set top boxes, mobile phone GUI's, kiosks and any other
195 "specific purpose"
196 </text>
197 <text>
198 Window Managers, anything with skinnable GUI's such as XMMS etc.
199 </text>
200 <text>
201 Anythng you feel needs to be funky and/or heavily user "re-skinnable"
202 </text>
203 </slide>
204 <slide>
205 <title>The problems facing us</title>
206 <text>
207 One of the problems facing Edje is object explosion. Since each Edje
208 object in turn is composed of multiple sub-objects it is very easy to
209 get a massive object count very quickly. The real problem is Evas'
210 flat object heirachy. I hope to fix this in the future with better
211 recursive canvas support.
212 </text>
213 <text>
214 Another big problem is hardware accelerated rendering support and
215 decent software fallbacks for it when needed within such a layer.
216 Currently decent software rendering support is an all or nothing deal
217 with the client side doing it all or hoping that the server-side doesn't
218 ever hit a software fallback, as when it does the whole thing falls
219 apart. OpenGL is an option but is still unstable, not supported
220 everywhere and is not the most appropriate API for 2D rendering.
221 </text>
222 </slide>
223 <slide>
224 <title>Hardware acceleration</title>
225 <text>
226 /* FIXME: This needs fixing. */
227 </text>
228 </slide>
229</presentation>
diff --git a/test/sky.edj b/test/sky.edj
new file mode 100644
index 0000000..142b15d
--- /dev/null
+++ b/test/sky.edj
Binary files differ
diff --git a/test/sky/bg.png b/test/sky/bg.png
new file mode 100644
index 0000000..39a2f9b
--- /dev/null
+++ b/test/sky/bg.png
Binary files differ
diff --git a/test/sky/build.sh b/test/sky/build.sh
new file mode 100644
index 0000000..16f318b
--- /dev/null
+++ b/test/sky/build.sh
@@ -0,0 +1,2 @@
1#!/bin/sh
2edje_cc $@ --image_dir . --font_dir . main_edje_source.edc -o sky.edj
diff --git a/test/sky/c1.png b/test/sky/c1.png
new file mode 100644
index 0000000..6d66a56
--- /dev/null
+++ b/test/sky/c1.png
Binary files differ
diff --git a/test/sky/c2.png b/test/sky/c2.png
new file mode 100644
index 0000000..e4374b8
--- /dev/null
+++ b/test/sky/c2.png
Binary files differ
diff --git a/test/sky/c3.png b/test/sky/c3.png
new file mode 100644
index 0000000..488e756
--- /dev/null
+++ b/test/sky/c3.png
Binary files differ
diff --git a/test/sky/c4.png b/test/sky/c4.png
new file mode 100644
index 0000000..1f6de86
--- /dev/null
+++ b/test/sky/c4.png
Binary files differ
diff --git a/test/sky/icon.png b/test/sky/icon.png
new file mode 100644
index 0000000..d68aad1
--- /dev/null
+++ b/test/sky/icon.png
Binary files differ
diff --git a/test/sky/main_edje_source.edc b/test/sky/main_edje_source.edc
new file mode 100644
index 0000000..2aaaa9b
--- /dev/null
+++ b/test/sky/main_edje_source.edc
@@ -0,0 +1,625 @@
1images {
2 // image "filename.png" STORAGE_MEOTHD [option to storage method];
3 // STORAGE_METHOD can be:
4 // COMP = compressed, no loss
5 // RAW = uncompressed, no loss
6 // LOSSY = compressed with quality loss, next param is quality level (0-100)
7 image, "bg.png" LOSSY 80;
8 image, "icon.png" LOSSY 60;
9 image, "c1.png" LOSSY 60;
10 image, "c2.png" LOSSY 60;
11 image, "c3.png" LOSSY 60;
12 image, "c4.png" LOSSY 60;
13 image, "s0.png" LOSSY 60;
14 image, "s1.png" LOSSY 60;
15 image, "s2.png" LOSSY 60;
16}
17
18collections {
19 group {
20 name, "desktop/background";
21// min, 720, 480;
22// min, 180, 120;
23 parts {
24 /* BACKGROUND */
25 part {
26 name, "background";
27 mouse_events, 1;
28 description {
29 state, "default" 0.0;
30// aspect, 1.5 1.5;
31 rel1 {
32 relative, 0.0 0.0;
33 offset, 0 0;
34 }
35 rel2 {
36 relative, 1.0 1.0;
37 offset, -1 -1;
38 }
39 image {
40 normal, "bg.png";
41 }
42 fill {
43 smooth, 0;
44 }
45 }
46 }
47/*
48 part {
49 name, "icon";
50 mouse_events, 0;
51 description {
52 min, 253 176;
53 state, "default" 0.0;
54 align, 1.0 0.0;
55 rel1 {
56 relative, 0.0 1.0;
57 offset, 0 0;
58 }
59 rel2 {
60 relative, 0.0 1.0;
61 offset, 0 0;
62 }
63 image {
64 normal, "icon.png";
65 }
66 color, 255 255 255 50;
67 }
68 }
69 part {
70 name, "text";
71 type, TEXT;
72 effect, SOFT_SHADOW;
73 description {
74 state, "default" 0.0;
75 rel1 {
76 relative, 0.0 0.0;
77 offset, 48 36;
78 }
79 rel2 {
80 relative, 1.0, 1.0;
81 offset, -49, -37;
82 }
83 color, 255 255 255 255;
84 // color2, 0 0 255 255;
85 color3, 0 0 0 50;
86 text {
87 text, "Photos";
88 font, "Vera";
89 size, 48;
90 //fit, 0 1;
91 //min, 1 1;
92 align, 1.0 0.0;
93 }
94 }
95 }
96 */
97 /* LAND LAYER 0 */
98 part {
99 name, "land_0";
100 mouse_events, 0;
101 description {
102 state, "default" 0.0;
103// aspect, 1.5 1.5;
104 rel1 {
105 relative, 0.0 0.0;
106 offset, 0 0;
107 }
108 rel2 {
109 relative, 1.0 1.0;
110 offset, -1 -1;
111 }
112 fill {
113 smooth, 0;
114 origin {
115 relative, 0.0 0.0;
116 offset, 0 0;
117 }
118 size {
119 relative, 3.55556 1.0;
120 offset, 0 0;
121 }
122 }
123 color, 150 130 110 200;
124 image {
125 normal, "s0.png";
126 }
127 }
128 description {
129 state, "drift" 0.0;
130// aspect, 1.5 1.5;
131 rel1 {
132 relative, 0.0 0.0;
133 offset, 0 0;
134 }
135 rel2 {
136 relative, 1.0 1.0;
137 offset, -1 -1;
138 }
139 fill {
140 smooth, 0;
141 origin {
142 relative, 3.55556 0.0;
143 offset, 0 0;
144 }
145 size {
146 relative, 3.55556 1.0;
147 offset, 0 0;
148 }
149 }
150 color, 150 130 110 200;
151 image {
152 normal, "s0.png";
153 }
154 }
155 }
156 /* CLOUD LAYER 1 */
157 part {
158 name, "cloud_1";
159 mouse_events, 0;
160 description {
161 state, "default" 0.0;
162// aspect, 1.5 1.5;
163 rel1 {
164 relative, 0.0 0.0;
165 offset, 0 0;
166 }
167 rel2 {
168 relative, 1.0 1.0;
169 offset, -1 -1;
170 }
171 fill {
172 smooth, 0;
173 origin {
174 relative, 0.0 0.0;
175 offset, 0 0;
176 }
177 size {
178 relative, 3.55556 1.0;
179 offset, 0 0;
180 }
181 }
182 image {
183 normal, "c1.png";
184 }
185 }
186 description {
187 state, "drift" 0.0;
188// aspect, 1.5 1.5;
189 rel1 {
190 relative, 0.0 0.0;
191 offset, 0 0;
192 }
193 rel2 {
194 relative, 1.0 1.0;
195 offset, -1 -1;
196 }
197 fill {
198 smooth, 0;
199 origin {
200 relative, 3.55556 0.0;
201 offset, 0 0;
202 }
203 size {
204 relative, 3.55556 1.0;
205 offset, 0 0;
206 }
207 }
208 image {
209 normal, "c1.png";
210 }
211 }
212 }
213 /* LAND LAYER 1 */
214 part {
215 name, "land_1";
216 mouse_events, 0;
217 description {
218 state, "default" 0.0;
219// aspect, 1.5 1.5;
220 rel1 {
221 relative, 0.0 0.0;
222 offset, 0 0;
223 }
224 rel2 {
225 relative, 1.0 1.0;
226 offset, -1 -1;
227 }
228 fill {
229 smooth, 0;
230 origin {
231 relative, 0.0 0.0;
232 offset, 0 0;
233 }
234 size {
235 relative, 3.55556 1.0;
236 offset, 0 0;
237 }
238 }
239 color, 100 80 60 220;
240 image {
241 normal, "s1.png";
242 }
243 }
244 description {
245 state, "drift" 0.0;
246// aspect, 1.5 1.5;
247 rel1 {
248 relative, 0.0 0.0;
249 offset, 0 0;
250 }
251 rel2 {
252 relative, 1.0 1.0;
253 offset, -1 -1;
254 }
255 fill {
256 smooth, 0;
257 origin {
258 relative, 3.55556 0.0;
259 offset, 0 0;
260 }
261 size {
262 relative, 3.55556 1.0;
263 offset, 0 0;
264 }
265 }
266 color, 100 80 60 220;
267 image {
268 normal, "s1.png";
269 }
270 }
271 }
272 /* CLOUD LAYER 2 */
273 part {
274 name, "cloud_2";
275 mouse_events, 0;
276 description {
277 state, "default" 0.0;
278// aspect, 1.5 1.5;
279 rel1 {
280 relative, 0.0 0.0;
281 offset, 0 0;
282 }
283 rel2 {
284 relative, 1.0 1.0;
285 offset, -1 -1;
286 }
287 fill {
288 smooth, 0;
289 origin {
290 relative, 0.0 0.0;
291 offset, 0 0;
292 }
293 size {
294 relative, 1.47083 1.0;
295 offset, 0 0;
296 }
297 }
298 image {
299 normal, "c2.png";
300 }
301 }
302 description {
303 state, "drift" 0.0;
304// aspect, 1.5 1.5;
305 rel1 {
306 relative, 0.0 0.0;
307 offset, 0 0;
308 }
309 rel2 {
310 relative, 1.0 1.0;
311 offset, -1 -1;
312 }
313 fill {
314 smooth, 0;
315 origin {
316 relative, 1.47083 0.0;
317 offset, 0 0;
318 }
319 size {
320 relative, 1.47083 1.0;
321 offset, 0 0;
322 }
323 }
324 image {
325 normal, "c2.png";
326 }
327 }
328 }
329 /* LAND LAYER 2 */
330 part {
331 name, "land_2";
332 mouse_events, 0;
333 description {
334 state, "default" 0.0;
335// aspect, 1.5 1.5;
336 rel1 {
337 relative, 0.0 0.0;
338 offset, 0 0;
339 }
340 rel2 {
341 relative, 1.0 1.0;
342 offset, -1 -1;
343 }
344 fill {
345 smooth, 0;
346 origin {
347 relative, 0.0 0.0;
348 offset, 0 0;
349 }
350 size {
351 relative, 1.77778 1.0;
352 offset, 0 0;
353 }
354 }
355 color, 90 70 50 230;
356 image {
357 normal, "s2.png";
358 }
359 }
360 description {
361 state, "drift" 0.0;
362// aspect, 1.5 1.5;
363 rel1 {
364 relative, 0.0 0.0;
365 offset, 0 0;
366 }
367 rel2 {
368 relative, 1.0 1.0;
369 offset, -1 -1;
370 }
371 fill {
372 smooth, 0;
373 origin {
374 relative, 1.77778 0.0;
375 offset, 0 0;
376 }
377 size {
378 relative, 1.77778 1.0;
379 offset, 0 0;
380 }
381 }
382 color, 90 70 50 230;
383 image {
384 normal, "s2.png";
385 }
386 }
387 }
388 /* CLOUD LAYER 3 */
389 part {
390 name, "cloud_3";
391 mouse_events, 0;
392 description {
393 state, "default" 0.0;
394// aspect, 1.5 1.5;
395 rel1 {
396 relative, 0.0 0.0;
397 offset, 0 0;
398 }
399 rel2 {
400 relative, 1.0 1.0;
401 offset, -1 -1;
402 }
403 fill {
404 smooth, 0;
405 origin {
406 relative, 0.0 0.0;
407 offset, 0 0;
408 }
409 size {
410 relative, 1.86667 1.0;
411 offset, 0 0;
412 }
413 }
414 image {
415 normal, "c3.png";
416 }
417 }
418 description {
419 state, "drift" 0.0;
420// aspect, 1.5 1.5;
421 rel1 {
422 relative, 0.0 0.0;
423 offset, 0 0;
424 }
425 rel2 {
426 relative, 1.0 1.0;
427 offset, -1 -1;
428 }
429 fill {
430 smooth, 0;
431 origin {
432 relative, 1.86667 0.0;
433 offset, 0 0;
434 }
435 size {
436 relative, 1.86667 1.0;
437 offset, 0 0;
438 }
439 }
440 image {
441 normal, "c3.png";
442 }
443 }
444 }
445 /* CLOUD LAYER 4 */
446 part {
447 name, "cloud_4";
448 mouse_events, 0;
449 description {
450 state, "default" 0.0;
451// aspect, 1.5 1.5;
452 rel1 {
453 relative, 0.0 0.0;
454 offset, 0 0;
455 }
456 rel2 {
457 relative, 1.0 1.0;
458 offset, -1 -1;
459 }
460 fill {
461 smooth, 0;
462 origin {
463 relative, 0.0 0.0;
464 offset, 0 0;
465 }
466 size {
467 relative, 1.84722 1.0;
468 offset, 0 0;
469 }
470 }
471 image {
472 normal, "c4.png";
473 }
474 }
475 description {
476 state, "drift" 0.0;
477// aspect, 1.5 1.5;
478 rel1 {
479 relative, 0.0 0.0;
480 offset, 0 0;
481 }
482 rel2 {
483 relative, 1.0 1.0;
484 offset, -1 -1;
485 }
486 fill {
487 smooth, 0;
488 origin {
489 relative, 1.84722 0.0;
490 offset, 0 0;
491 }
492 size {
493 relative, 1.84722 1.0;
494 offset, 0 0;
495 }
496 }
497 image {
498 normal, "c4.png";
499 }
500 }
501 }
502 }
503 programs {
504 program {
505 name, "anim_1_land_0";
506 signal, "show";
507 source, "";
508 action, STATE_SET "drift" 0.0;
509 transition, LINEAR 855.0;
510 target, "land_0";
511 after, "anim_2_land_0";
512 }
513 program {
514 name, "anim_2_land_0";
515 signal, "NONE";
516 source, "NONE";
517 action, STATE_SET "default" 0.0;
518 target, "land_0";
519 after, "anim_1_land_0";
520 }
521 program {
522 name, "anim_1_cloud_1";
523 signal, "show";
524 source, "";
525 action, STATE_SET "drift" 0.0;
526 transition, LINEAR 485.0;
527 target, "cloud_1";
528 after, "anim_2_cloud_1";
529 }
530 program {
531 name, "anim_2_cloud_1";
532 signal, "NONE";
533 source, "NONE";
534 action, STATE_SET "default" 0.0;
535 target, "cloud_1";
536 after, "anim_1_cloud_1";
537 }
538 program {
539 name, "anim_1_land_1";
540 signal, "show";
541 source, "";
542 action, STATE_SET "drift" 0.0;
543 transition, LINEAR 425.0;
544 target, "land_1";
545 after, "anim_2_land_1";
546 }
547 program {
548 name, "anim_2_land_1";
549 signal, "NONE";
550 source, "NONE";
551 action, STATE_SET "default" 0.0;
552 target, "land_1";
553 after, "anim_1_land_1";
554 }
555 program {
556 name, "anim_1_cloud_2";
557 signal, "show";
558 source, "";
559 action, STATE_SET "drift" 0.0;
560 transition, LINEAR 65.0;
561 target, "cloud_2";
562 after, "anim_2_cloud_2";
563 }
564 program {
565 name, "anim_2_cloud_2";
566 signal, "NONE";
567 source, "NONE";
568 action, STATE_SET "default" 0.0;
569 target, "cloud_2";
570 after, "anim_1_cloud_2";
571 }
572 program {
573 name, "anim_1_land_2";
574 signal, "show";
575 source, "";
576 action, STATE_SET "drift" 0.0;
577 transition, LINEAR 70.0;
578 target, "land_2";
579 after, "anim_2_land_2";
580 }
581 program {
582 name, "anim_2_land_2";
583 signal, "NONE";
584 source, "NONE";
585 action, STATE_SET "default" 0.0;
586 target, "land_2";
587 after, "anim_1_land_2";
588 }
589 program {
590 name, "anim_1_cloud_3";
591 signal, "show";
592 source, "";
593 action, STATE_SET "drift" 0.0;
594 transition, LINEAR 55.0;
595 target, "cloud_3";
596 after, "anim_2_cloud_3";
597 }
598 program {
599 name, "anim_2_cloud_3";
600 signal, "";
601 source, "";
602 action, STATE_SET "default" 0.0;
603 target, "cloud_3";
604 after, "anim_1_cloud_3";
605 }
606 program {
607 name, "anim_1_cloud_4";
608 signal, "show";
609 source, "";
610 action, STATE_SET "drift" 0.0;
611 transition, LINEAR 25.0;
612 target, "cloud_4";
613 after, "anim_2_cloud_4";
614 }
615 program {
616 name, "anim_2_cloud_4";
617 signal, "";
618 source, "";
619 action, STATE_SET "default" 0.0;
620 target, "cloud_4";
621 after, "anim_1_cloud_4";
622 }
623 }
624 }
625}
diff --git a/test/sky/s0.png b/test/sky/s0.png
new file mode 100644
index 0000000..0f15972
--- /dev/null
+++ b/test/sky/s0.png
Binary files differ
diff --git a/test/sky/s1.png b/test/sky/s1.png
new file mode 100644
index 0000000..e1f1bc7
--- /dev/null
+++ b/test/sky/s1.png
Binary files differ
diff --git a/test/sky/s2.png b/test/sky/s2.png
new file mode 100644
index 0000000..af81024
--- /dev/null
+++ b/test/sky/s2.png
Binary files differ
diff --git a/test/sky/sky.edj b/test/sky/sky.edj
new file mode 100644
index 0000000..0fb8636
--- /dev/null
+++ b/test/sky/sky.edj
Binary files differ