--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Maemo port of EFL (Enlightenment Foundation Libraries)</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <link rel="stylesheet" type="text/css" href="style.css"/>
+ <link rel="icon" href="favicon.ico" type="image/x-icon"/>
+ <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
+ <link rel="icon" href="favicon.ico" type="image/ico"/>
+ <link rel="shortcut icon" href="favicon.ico" type="image/ico"/>
+ </head>
+ <body>
+ <div class="header"></div>
+ <h1 style="text-align: center">
+ Maemo port of Enlightenment Foundation Libraries - EFL
+ </h1>
+
+ <div class="left_box">
+ <h2>What are EFL?</h2>
+ <p>
+ The Enlightenment Foundation Libraries (EFL) are a collection
+ of libraries so powerful, flexible, and easy to use that they
+ present a strong platform on which to develop nearly any
+ graphical application you could think of.
+ </p>
+ <p>
+ The EFL begins with <a
+ href="http://www.enlightenment.org/p.php?p=about/libs/imlib2">Imlib2</a>,
+ a general image manipulation and rendering library, and
+ <a href="http://www.enlightenment.org/p.php?p=about/libs/evas">Evas</a>,
+ our canvas library. Because Evas is built on several different
+ selectable engines (Linux FrameBuffer, DirectFB, X11, OpenGL,
+ QTopia, etc) the platform is extremely portable, which
+ translates thru to all of the libraries built on top of it.
+ <a href="http://www.enlightenment.org/p.php?p=about/libs/ecore">Ecore</a>
+ is a modular convience library that in its base provides
+ timers, callback functionality, and loop management for event
+ handling. Ecore's various modules can simplify the setup of an
+ X11 drawable for general use (Ecore_X11), an X11 drawable for
+ use with Evas (Ecore_Evas), manage IPC (Ecore_IPC), manage BSD
+ Sockets (Ecore_Con), management of the FrameBuffer (Ecore_FB),
+ and more. Because Ecore can simplify so many tasks that are
+ used in conjuction with Evas it has lived up to its name as
+ the core componant of nearly any EFL application.
+ </p>
+ <p>
+ <a href="http://www.enlightenment.org/p.php?p=about/libs/edje">Edje</a>
+ provides a revolutionary method of absstacting every aspect of
+ your interface from the application itself. By passing signals
+ between the interface and the application all communication is
+ done in an interface neutral way. No longer are "themes"
+ simple changes of pixmaps over a fixed area. Using <a
+ href="http://www.enlightenment.org/p.php?p=about/libs/embryo">Embryo</a>
+ we can provide scripting ability to the interface componant
+ itself to harness even more power and flexibility.
+ </p>
+ <p>
+ Below is a diagram of how the various componants of the EFL
+ fit together. Because of complexity of the libraries and the
+ fact that so many libraries can be used independant of other
+ EFL libraries we have a diagram alittle more complex than your
+ standard block diagram.
+ <a
+ href="http://enlightenment.sourceforge.net/Libraries/images/_images/efl.png"><img
+ src="images/efl_diagram_banner.png" alt="EFL Diagram banner"
+ class="center" style="margin-top: 5px;"/></a>
+ </p>
+ <p>
+ Want to learn more? Check the <a
+ href="http://www.enlightenment.org/p.php?p=about/libs">official website</a>.
+ </p>
+ </div>
+ <div class="center_box">
+ <a href="http://www.enlightenment.org/"
+ title="Enlightenment Project"><img
+ src="images/e_logo.png" alt="enlightenment logo"
+ id="e_logo" /></a>
+
+ <h2>Downloads</h2>
+ <table>
+ <tbody>
+ <tr>
+ <td><a
+ href="http://www.gustavobarbieri.com.br/e17-n800/python-efl.install"><img src="images/install_button.png" alt="One click install" class="center" style="margin-top: 10px;"/></a></td>
+ <td>
+ <b>Python-EFL</b>
+ <address>
+ Python bindings, includes basic libraries.
+ </address>
+ </td>
+ </tr>
+ <tr>
+ <td><a
+ href="http://www.gustavobarbieri.com.br/e17-n800/python-efl-demo.install"><img src="images/install_button.png" alt="One click install" class="center" style="margin-top: 10px;"/></a></td>
+ <td>
+ <b>Python-EFL-Demo</b>
+ <address>
+ Python bindings demonstration applications, includes
+ basic libraries.
+ </address>
+ </td>
+ </tr>
+ <tr>
+ <td><a
+ href="http://www.gustavobarbieri.com.br/e17-n800/expedite.install"><img src="images/install_button.png" alt="One click install" class="center" style="margin-top: 10px;"/></a></td>
+ <td>
+ <b>Expedite</b>
+ <address>
+ Benchmark suite, includes basic libraries.
+ </address>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Resources</h2>
+ <p>Port Resources:</p>
+ <ul>
+ <li><a
+ href="https://garage.maemo.org/projects/maemo-efl/">Project</a></li>
+ <li><a
+ href="https://garage.maemo.org/tracker/?group_id=262">Bug Tracker</a></li>
+ <li><a href="https://garage.maemo.org/forum/?group_id=262">Forum</a></li>
+
+ </ul>
+ <p>Official Resources:</p>
+ <ul>
+ <li><a href="http://www.enlightenment.org">Website</a></li>
+ <li><a href="http://wiki.enlightenment.org">Wiki</a></li>
+ <li><a
+ href="http://www.enlightenment.org/p.php?p=docs">Docs</a></li>
+ <li><a href="http://bugs.enlightenment.org">Bug Tracker</a></li>
+
+ </ul>
+ <p>Related Blogs:</p>
+ <ul>
+ <li><a href="http://blog.gustavobarbieri.com.br/">Gustavo
+ Sverzut Barbieri</a></li>
+ <li><a href="http://codeposts.blogspot.com/">Kenneth Christiansen</a></li>
+ </ul>
+ </div>
+ <div class="right_box">
+ <h2>About Maemo Port</h2>
+ <p>
+ As said in "What are EFL?", the code is very portable. Since
+ their developers are receptive to contributions, so all the
+ code was developed and integrated upstream, at the official
+ project. What remains here is just the package system, which
+ is specific to maemo.
+ </p>
+ <p>
+ The most significant contribution to EFL were made by Gustavo
+ Sverzut Barbieri and are:
+ </p>
+ <ul>
+ <li>
+ <a
+ href="http://blog.gustavobarbieri.com.br/2007/06/03/evas-now-using-rectangle-split-and-merge/">Rewrote
+ of <code>evas_tiler.c</code></a> to operate on dirty
+ rectangles instead of segmented screen regions. Before this
+ change, dirty areas were marked in a bitmap array that
+ represented tiles of the screen (screen was segmented in 8x8
+ tiles). To add a new dirty area, mark the bitmap array, to
+ check for dirty areas, walk it. For maemo devices it
+ resulted in <code>(800*480)/(8*8) = 6000</code> operations
+ to check we have nothing to do. Although this looks bad,
+ it's not because we have a maximum cost of 12000 operations,
+ independently of the number of dirty areas, and this
+ algorithm is stupidly fast on desktops. The new algorithm,
+ instead, keep the dirty areas as non-overlapping rectangles,
+ the tricky part was to minimize number of rectangles because
+ problem has quadratic <code>O(n²)</code> worst case, this
+ was done by some heuristics and merge of nearby rectangles
+ when possible. This removed the major profiled bottleneck.
+ </li>
+ <li>
+ <a
+ href="http://blog.gustavobarbieri.com.br/2007/06/21/evas-on-n800-blazing-fast/">16bpp (bits-per-pixel)
+ engine</a> (<code>software_16</code>). So far
+ every Evas engine were 32bpp, with 8 bits per color
+ component, with conversion to required bit-depth on the fly
+ with use of dither-mask to make it look good. Although this
+ conversion is fast, it's still more to do on a limited power
+ device. And that's not the worse part: we have to operate on
+ much more data (usually 1 byte per pixel)! Working with
+ 16bpp from the beginning we could reduce memory usage and
+ pack some operations into one arithmetic operation (it's
+ possibe to work with 16bits data inside a 32bits word). This
+ brought us major performance gains.
+ </li>
+ </ul>
+ </div>
+ <hr />
+ <div class="center" style="width: 280px">
+ <img src="images/maemo_logo.jpg" alt="Built for Maemo(tm)"/>
+ <img src="images/indt_logo.jpg" alt="Sponsored by INdT"
+ style="margin-left: 20px"/>
+ </div>
+ </body>
+</html>
\ No newline at end of file