1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
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):
Elementary
^^^^^^^^^^
Elementary ist ein Toolkit dass die wichtigsten Funktionen für
einfache Applikationen zur Verfügung stellt. Es ist dazu gedacht, die Arbeit der
Entwickler möglichst einfach und gleichzeitig so flexibel wie möglich zu
gestalten.
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. So ist es auch möglich,
Buttons komplett im Edje-File zu definieren. Die Buttons des EFL-Clients wurden
jedoch mit Elementary realisiert, da diese dann das typische e17-Aussehen haben
und eine flexiblere Programmierung möglich ist.
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.
.EFL Library Stack
image::img/diagram-efl-simple-small.png[width=200]
|