Wurde das Präsentationsfenster festgelegt, gilt es nun in einem zweiten
Schritt einzelne Präsentationsbereiche zu definieren, in denen die jeweiligen
Multimediaobjekte sichtbar werden sollen. Mit dem <region>-Element kann die
Position und Größe eines Präsentationsbereiches sowie die
Skalierung eines Multimediaobjekts festgelegt werden.
Um im Präsentationsbereich "bild" tatsächlich ein Bild
sichtbar werden zu lassen, müssen wir im body-Teil des SMIL-Dokuments mit
Hilfe des Mediaelements <img src="..."
alt="..." region="..." />
ein Bild in den Präsentationsbereich des Präsentationsfensters
"einfügen".
Beispiel:
[...]
Das region-Attribute des <img>-Elements dient
als Zeiger zu der Positionsangabe des <region>-Elements.
Durch diesen Zeiger wird die in der Layoutdefinition getroffene
Positionsangabe eines Objekts mit der tatsächlichen Quelle
des zu präsentierenden Objekts verknüpft.
Fassen wir zusammen: In dem Beispiel
wird das Präsentationsfenster auf 300 x 200 Pixeln festgelegt;
ein Bildausschnitt der Größe 100 x 100 Pixel eines
Bildes wird auf der Position 75 Pixel vom linken Rand und 50 Pixel
vom oberen Rand eingeblendet.
2.4.2. Relative Spezifikation des Präsentationsbereiches
Im Gegensatz zur absoluten Spezifizierung von Präsentationsbereichen
werden bei der relativen Spezifizierung nicht Pixel sondern Prozentangaben
benutzt. Die Prozentangaben beziehen sich auf die Breite bzw.
Höhe des Präsentationsfensters. Unser Beispiel
könnte sich wie folgt verändern:
<smil>
<head>
<layout>
<root-layout width="300" height="200"background-color="white" />
<region id="bild" left="50%" top="50%"width="100" height="100" />
</layout>
</head>
[...]
Jetzt wurde die linke obere Ecke desselben Bildausschnitt
der Größe 300 x 200 Pixel 50% vom linken Rand und 50%
vom oberen Rand plaziert. Die Angabe von Prozentwerten beschränkt
sich nicht auf die Attribute "left" oder "top";
auch die Größenangaben des Bildausschnitts können
in Prozentwerten angegeben werden.
2.4.3. Die Überlappung von Präsentationsbereichen
– der z-index
Werden mehrere Präsentationsbereiche definiert,
können diese nebeneinander, übereinander oder überlappend
angeordnet werden.
Folgendes Beispiel
zeigt zwei Präsentationsbereiche, die nebeneinander angeordnet
sind:
<smil>
<head>
<layout>
<root-layout width="300" height="200" background-color="white" />
<region id="bild1" left="0%" top="0%"width="100" height="100" />
<region id="bild2" left="50%" top="50%" width="100" height="100" />
</layout>
</head>
<body>
<img src="bild.jpg" alt="Testbild" region="bild1" />
<img src="bild.jpg" alt="Testbild" region="bild2" />;
</body>
</smil>
Sollen sich Präsentationsbereiche überlappen,
kann mit Hilfe des Attributes z-index des <region>-Elements
angegeben werden, welcher Präsentationsbereich im Vordergrund
und welcher im Hintergrund dargestellt wird.
Im folgenden Beispiel
wird der Präsentationsbereich "Region 1" im Vordergrund
und der Präsentationsbereich "Region 2" im Hintergrund
dargestellt:
<smil>
<head>
<layout>
<root-layout width="300" height="200" background-color="white" />
<region id="region_1" left="50" top="50" width="150"
height="125" z-index="2"/>
<region id="region_2" left="25" top="25" width="100"
height="100" z-index="1"/>
</layout>
</head>
<body>
<par>
<text src="text1.txt" region="region_1" />
<text src="text2.txt" region="region_2" />
</par>
</body>
</smil>
Überlappen sich Präsentationsbereiche
und wurde kein z-index angegeben, wird der zuerst genannte Bereich
im Vordergrund gezeigt.
2.4.4. Einpassen von Multimediaobjekten – das fit-Attribut
In den bislang behandelten Beispielen wurde zwar
die Größe des Präsentationsfensters und die Größe
des Präsentationsbereiches spezifiziert, wie Multimediaobjekte
unterschiedlicher Größe in einen Präsentationsbereich
eingepasst werden, wurde bislang nicht besprochen. Wie die oben
dargestellten Beispiele zeigen, wird immer dann, wenn keine Angaben
zur Einpassung eines Multimediaobjekts gemacht werden lediglich
ein Ausschnitt eines Objekts (z.B. eines Bildes oder eines Textes)
sichtbar.
Die Einpassung eines Objekts in einen Präsentationsbereich
wird über das fit-Attribut des <region>-Elements
gesteuert. Das fit-Attribut kennt die Werte "fill",
"meet" und "slice". Soll ein Objekt den gesamten
Präsentationsbereich ausfüllen, wird "fill"
benutzt; dabei kann es bei Bildern zu Verzerrungen in der Darstellung
kommen, wenn die Relation von Höhe und Breite des Präsentationsbereiches
nicht der Relation von Höhe und Breite des Bildes entsprechen.
Mit "meet" können Verzerrungen vermieden werden.
In diesem Fall wird das Objekt proportional nur soweit vergrößert,
bis der linke oder untere Rand des Präsentationsbereiches
erreicht ist. In diesem Fall können Teile des Präsentationsbereiches
leer bleiben. In den "Leerzonen" wird dann die Hintergrundfarbe
des Präsentationsbereiches sichtbar.
Das folgende Beispiel zeigt
die Anwendung des fit-Attributs mit dem Wert "fill":
<smil>
<head>
<layout>
<root-layout width="450" height="300" background-color="#FAEBD7" />
<region id="region_1" left="85" top="85" width="280" height="120"
background-color="#000080" fit="fill" />
</layout>
</head>
<body>
<!—Dieses Bild ist größer als die Präsentationsfläche -->
<img src="images/mandeln.jpg" region="region_1" />
</body>
</smil>
Das Bildschirmfenster wurde mit einer Größe
von 450 x 300 Pixel mit einem hellen Hintergrund definiert. In
dieses Fenster wurde ein Präsentationsbereich der Größe
280 x 120 Pixel mit blauem Hintergrund eingepasst. Durch das fit-Attribut
mit dem Wert "fill" wird das gesamte Bild in den Präsentationsbereich
eingepasst. Da das Bild größer und breiter als der
Präsentationsbereich ist, wird es ohne Rücksicht auf
mögliche Verzerrungen der Größe des Präsentationsbereiches
entsprechend verkleinert. In unserem Beispiel ist die dadurch
entstehende Verzerrung deutlich zu sehen.
Die Verwendung von "meet" führt nun
zu folgendem Ergebnis:
<smil>
<head>
<layout>
<root-layout width="450" height="300" background-color="#FAEBD7" />
<region id="region_1" left="85" top="85" width="280" height="120"
background-color="#000080" fit="meet" />
</layout>
</head>
<body>
<!—Dieses Bild ist größer als die Präsentationsfläche -->
<img src="images/mandeln.jpg" region="region_1" />
</body>
</smil>
Das Bild ist größer als der Präsentationsbereich;
es wird aber proportional ohne Verzerrung verkleinert. Dies führt
dazu, dass am rechten Rand ein Teil des Präsentationsbereiches
nicht von dem Bild ausgefüllt wird. Am rechten Rand wird
deshalb die Hintergrundfarbe des Präsentationsbereiches sichtbar.
Ein weiteres Beispiel
von fit=meet zeigt, wie ein Video in einem 4:3 Playerfenster im
Breitwandformat gezeigt werden kann. Dadurch entsteht der vom
Fernsehen her bekannte Effekt, dass oben und unten schwarze Balken
zu sehen sind.
Eine proportionale Verkleinerung des Bildes und die vollständige
Ausfüllung des Präsentationsbereiches wird mit "slice"
erzielt; in diesem Fall werden Teile des Bildes, die nicht in
den Präsentationsbereich passen, abgeschnitten.
Unser Beispiel mit dem fit-Wert
"slice":
<smil>
<head>
<layout>
<root-layout width="450" height="300" background-color="#FAEBD7" />
<region id="region_1" left="85" top="85" width="280" height="120"
background-color="#000080" fit="slice" />
</layout>
</head>
<body>
<!—Dieses Bild ist größer als die Präsentationsfläche -->
<img src="images/mandeln.jpg" region="region_1" />
</body>
</smil>
In unserem Fall erweist sich auch "slice"
als wenig ideale Lösung. Nun tritt zwar keine Verzerrung
mehr auf, dafür wird aber der untere Teil des Bildes abgeschnitten.
Ist das Objekt größer als der definierte Präsentationsbereich,
und soll keine Information abgeschnitten werden, können mit
dem scroll-Parameter Rollbalken in die Präsentation
eingefügt werden.
In diesem Fall erhalten wir folgendes Beispiel:
<smil>
<head>
<layout>
<root-layout width="450" height="300" background-color="#FAEBD7" />
<region id="region_1" left="85" top="85" width="280" height="120"
background-color="#000080" fit="scroll" />
</layout>
</head>
<body>
<!—Dieses Bild ist größer als die Präsentationsfläche -->
<img src="images/mandeln.jpg" region="region_1" />
</body>
</smil>
Mit SMIL 2.o wurde zur Kontrolle von Audiodateien
das neue Attribut "soundLevel" eingeführt. Um die
Originallautstärke eines Audiofiles beispielsweise zu verdoppeln,
muss als Attributwert 200% eingegeben werden:
<layout width="450" height="300" background-color="#FAEBD7">
<region id="ton" soundLevel="200%" />
</layout>
Das folgende Beispiel
demonstriert diese Funktion.
