1 <?xml version="1.0" encoding="utf-8"?>
2 <html xmlns="http://www.w3.org/1999/xhtml">
4 <title>EFL Maemo Edition - Enlightenment Foundation Libraries</title>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <link rel="stylesheet" type="text/css" href="style.css"/>
7 <link rel="icon" href="favicon.ico" type="image/x-icon"/>
8 <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
9 <link rel="icon" href="favicon.ico" type="image/ico"/>
10 <link rel="shortcut icon" href="favicon.ico" type="image/ico"/>
13 <div class="header"></div>
14 <h1 style="text-align: center">
15 EFL Maemo Edition - Enlightenment Foundation Libraries
18 <div class="left_box">
19 <h2>What are EFL?</h2>
21 The Enlightenment Foundation Libraries (EFL) are a collection
22 of libraries so powerful, flexible, and easy to use that they
23 present a strong platform on which to develop nearly any
24 graphical application you could think of.
27 The EFL begins with <a
28 href="http://www.enlightenment.org/p.php?p=about/libs/imlib2">Imlib2</a>,
29 a general image manipulation and rendering library, and
30 <a href="http://www.enlightenment.org/p.php?p=about/libs/evas">Evas</a>,
31 our canvas library. Because Evas is built on several different
32 selectable engines (Linux FrameBuffer, DirectFB, X11, OpenGL,
33 QTopia, etc) the platform is extremely portable, which
34 translates thru to all of the libraries built on top of it.
37 <a href="http://www.enlightenment.org/p.php?p=about/libs/ecore">Ecore</a>
38 is a modular convience library that in its base provides
39 timers, callback functionality, and loop management for event
40 handling. Ecore's various modules can simplify the setup of an
41 X11 drawable for general use (Ecore_X11), an X11 drawable for
42 use with Evas (Ecore_Evas), manage IPC (Ecore_IPC), manage BSD
43 Sockets (Ecore_Con), management of the FrameBuffer (Ecore_FB),
44 and more. Because Ecore can simplify so many tasks that are
45 used in conjuction with Evas it has lived up to its name as
46 the core componant of nearly any EFL application.
49 <a href="http://www.enlightenment.org/p.php?p=about/libs/edje">Edje</a>
50 provides a revolutionary method of abstracting every aspect of
51 your interface from the application itself. By passing signals
52 between the interface and the application all communication is
53 done in an interface neutral way. No longer are "themes"
54 simple changes of pixmaps over a fixed area. Using <a
55 href="http://www.enlightenment.org/p.php?p=about/libs/embryo">Embryo</a>
56 we can provide scripting ability to the interface componant
57 itself to harness even more power and flexibility.
60 Below is a diagram of how the various componants of the EFL
61 fit together. Because of complexity of the libraries and the
62 fact that so many libraries can be used independant of other
63 EFL libraries we have a diagram alittle more complex than your
64 standard block diagram.
66 href="http://enlightenment.sourceforge.net/Libraries/images/_images/efl.png"><img
67 src="images/efl_diagram_banner.png" alt="EFL Diagram banner"
68 class="center" style="margin-top: 5px;"/></a>
71 Want to learn more? Check the <a
72 href="http://www.enlightenment.org/p.php?p=about/libs">official website</a>.
75 <div class="center_box">
76 <a href="http://www.enlightenment.org/"
77 title="Enlightenment Project"><img
78 src="images/e_logo.png" alt="enlightenment logo"
82 <table class="download">
86 href="http://download.maemo.org/extras/dists/bora/install/efl-python-core.install"><img src="images/install_button.png" alt="One click install" class="center" style="margin-top: 10px;"/></a></td>
90 Python bindings, includes basic libraries.
96 href="http://download.maemo.org/extras/dists/bora/install/python-efl-core-demo.install"><img src="images/install_button.png" alt="One click install" class="center" style="margin-top: 10px;"/></a></td>
98 <b>Python-EFL-Demo</b>
100 Python bindings demonstration applications, includes
107 href="http://download.maemo.org/extras/dists/bora/install/expedite.install"><img src="images/install_button.png" alt="One click install" class="center" style="margin-top: 10px;"/></a></td>
111 Benchmark suite, includes basic libraries.
118 <p>Port Resources:</p>
121 href="https://garage.maemo.org/projects/maemo-efl/">Project</a></li>
123 href="https://garage.maemo.org/tracker/?group_id=262">Bug Tracker</a></li>
124 <li><a href="https://garage.maemo.org/forum/?group_id=262">Forum</a></li>
127 <p>Official Resources:</p>
129 <li><a href="http://www.enlightenment.org">Website</a></li>
130 <li><a href="http://wiki.enlightenment.org">Wiki</a></li>
132 href="http://www.enlightenment.org/p.php?p=docs">Docs</a></li>
133 <li><a href="http://bugs.enlightenment.org">Bug Tracker</a></li>
136 <p>Related Blogs:</p>
138 <li><a href="http://blog.gustavobarbieri.com.br/">Gustavo
139 Sverzut Barbieri</a></li>
140 <li><a href="http://codeposts.blogspot.com/">Kenneth Christiansen</a></li>
143 <div class="right_box">
144 <h2>About Maemo Port</h2>
146 As said in "What are EFL?", the code is very portable. Since
147 their developers are receptive to contributions, so all the
148 code was developed and integrated upstream, at the official
149 project. What remains here is just the package system, which
150 is specific to maemo.
153 The most significant contribution to EFL were made by Gustavo
154 Sverzut Barbieri and are:
159 href="http://blog.gustavobarbieri.com.br/2007/06/03/evas-now-using-rectangle-split-and-merge/">Rewrite
160 of <code>evas_tiler.c</code></a> to operate on dirty
161 rectangles instead of segmented screen regions. Before this
162 change, dirty areas were marked in a bitmap array that
163 represented tiles of the screen (screen was segmented in 8x8
164 tiles). To add a new dirty area, mark the bitmap array, to
165 check for dirty areas, walk it. For maemo devices it
166 resulted in <code>(800*480)/(8*8) = 6000</code> operations
167 to check we have nothing to do. Although this looks bad,
168 it's not because we have a maximum cost of 12000 operations,
169 independently of the number of dirty areas, and this
170 algorithm is stupidly fast on desktops. The new algorithm,
171 instead, keep the dirty areas as non-overlapping rectangles,
172 the tricky part was to minimize number of rectangles because
173 problem has quadratic <code>O(n²)</code> worst case, this
174 was done by some heuristics and merge of nearby rectangles
175 when possible. This removed the major profiled bottleneck.
179 href="http://blog.gustavobarbieri.com.br/2007/06/21/evas-on-n800-blazing-fast/">16bpp (bits-per-pixel)
180 engine</a> (<code>software_16</code>). So far
181 every Evas engine were 32bpp, with 8 bits per color
182 component, with conversion to required bit-depth on the fly
183 with use of dither-mask to make it look good. Although this
184 conversion is fast, it's still more to do on a limited power
185 device. And that's not the worse part: we have to operate on
186 much more data (usually 1 byte per pixel)! Working with
187 16bpp from the beginning we could reduce memory usage and
188 pack some operations into one arithmetic operation (it's
189 possible to work with 16bits data inside a 32bits word). This
190 brought us major performance gains.
195 <div class="center" style="width: 310px">
196 <img src="images/maemo_logo.jpg" alt="Built for Maemo(tm)"/>
197 <img src="images/indt_logo.jpg" alt="Sponsored by INdT"
198 style="margin-left: 20px"/>