Enlightenment Foundation Libraries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Die Enlightenment Foundation Libraries sind eine Sammlung von Bibliotheken die ursprünglich entwickelt wurden um den DR17 Window Manager zu unterstützen. Diese Bibliotheken sind jedoch so mächtig, flexibel und einfach zu benutzen, dass sie eine gute Plattform zur Entwicklung vieler graphischer Anwendungen darstellen. Hier einige der wichtigsten Bibliotheken, anschliessend eine Grafik die verdeutlicht, wie die verschiedenen Libraries zusammenhaengen (Quelle: www.enlightenment.org): Evas ^^^^ Evas ist eine Canvas-API zur Erstellung und Verwaltung von Anzeige-Objekten und deren Eigenschaften. Objekte können einfach angelegt und manipuliert werden. Alle Grafik-Routinen sind hoch optimiert und Evas kümmert sich automatisch darum, Änderungen in der Anzeige mit möglichst wenig Aufwand neu zu zeichnen. Evas ist klein und schlank und wurde entworfen um sowohl auf Embedded-Systemen als auch auf leistungsstarken PCs zu arbeiten. Ecore.Evas ^^^^^^^^^^ Ecore.Evas stellt einige nützliche Funktionen zum Event-Handling von Evas- Anzeigen zur Verfügung. Edje ^^^^ Edje ist eine komplexe Grafik- und Layout-Bibliothek, die das Layout von der Verhaltenslogik trennt. In einem .edc-File wird das Layout beschrieben. Die einzelnen Anzeige-Elemente werden als "parts" definiert, mehrere zusammengehörige Elemente bilden eine "Collection". Außerdem kann in einer Programmliste definiert werden, wie sich die Darstellung der Elemente bei bestimmten Events (Mausklick, Tastatureingabe) ändert. Wird dieses Edje-File in ein Python-Programm eingebunden kann auf die Edje-Parts und Collections zugegriffen werden um komplexere Verhaltensweisen zu implementieren. Durch die Trennung von Layout und Verhaltenslogik ist es einfach und schnell möglich, das Layout eines Programms zu ändern. <<< Folgendes Beispiel zeichnet ein Fenster, das bei Mausklick die Farbe aendert. ------------------------------------------------- collections { group { name: "ColorChange"; min: 480 620; parts { part { name: "main"; type: RECT; mouse_events: 1; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; } } description { state: "default" 1.0; color: 0 0 0 0; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; } } } } ------------------------------------------------- <<< ------------------------------------------------- programs { program { name: "black"; source: "main"; signal: "mouse,clicked,1"; action: STATE_SET "default" 1.0; target: "main"; } program { name: "white"; source: "main"; signal: "mouse,clicked,1"; action: STATE_SET "default" 0.0; target: "main"; } } } } ------------------------------------------------- <<< Elementary ^^^^^^^^^^ Elementary ist ein Toolkit zum Schreiben von einfachen Anwendungen, das die Arbeit des Programmierers möglichst einfach und trotzdem flexibel gestalten soll. Emotion ^^^^^^^ Emotion ist eine Bibliothek die Multimedia-Funktionen zur Verfügung stellt. Sie unterstützt libxine 1.0 und gstreamer 0.10 und kann problemlos in die anderen EFL-Bibliotheken integriert werden. Alle Media-Formate die von libxine oder gstreamer unterstützt werden können auch mit Emotion verwendet werden. image::img/diagram-efl-simple-small.png[width=200]