28.06.2013 Aufrufe

Benny Kannengiesser - Lehrstuhl Algorithmen & Datenstrukturen ...

Benny Kannengiesser - Lehrstuhl Algorithmen & Datenstrukturen ...

Benny Kannengiesser - Lehrstuhl Algorithmen & Datenstrukturen ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

D I P L O M A R B E I T<br />

Implementierung des AOF-Viewers auf<br />

dem Macintosh PowerPC<br />

von<br />

<strong>Benny</strong> Kannengießer<br />

eingereicht am 13.4.99 beim<br />

Institut für Angewandte Informatik<br />

und Formale Beschreibungsverfahren<br />

Universität Karlsruhe<br />

Betreuer und Gutachter:<br />

Prof. Dr. Hartmut Schmeck (Universität Karlsruhe),<br />

Prof. Dr. Thomas Ottmann (Universität Freiburg),<br />

Dr. Jennifer Lennon (University of Auckland)


Heimatanschrift:<br />

Fr.-Ebert-Str.4<br />

67346 Speyer<br />

2


Inhaltsverzeichnis<br />

1 Einleitung . . . . . . . 4<br />

2 Authoring on the fly . . . . . 5<br />

2.1 Vorlesungen und neue multimediale Techniken . 5<br />

2.2 Das Authoring-on-the-fly-Prinzip . . . 6<br />

2.3 Werkzeuge . . . . . . . 7<br />

2.3.1 Whiteboard . . . . . . 7<br />

2.3.2 Aufnahme- und Wiedergabeumgebung . . 8<br />

2.3.3 Editor . . . . . . . 8<br />

2.4 Abspielen von Animationen und Simulationen . 9<br />

2.5 Aufzeichnung und Synchronisation der Datenströme 9<br />

2.5.1 Audiodatenstrom . . . . . 9<br />

2.5.2 Whiteboarddatenstrom - Eventqueue und Objectlist .<br />

10<br />

3 Der AOF-Viewer . . . . . . 12<br />

3.1 Die Module . . . . . . . 12<br />

3.1.1 aofSync . . . . . . 12<br />

3.1.2 wbPlay . . . . . . 14<br />

3.1.3 appPlay . . . . . . 15<br />

3.2 Synchronisation . . . . . . 16<br />

4 Portieren des AOF-Viewers auf Apple PowerPCs 19<br />

4.1 Ausgangspunkt . . . . . . 19<br />

4.2 Compiler und Gerät . . . . . 19<br />

4.3 Beibehaltene Prinzipien . . . . . 19<br />

4.4 Änderungen und Anpassungen für die Macintosh-Version 20<br />

4.4.1 Programmierung der Graphischen Benutzeroberfläche 20<br />

4.4.2 Kommunikation zwischen den Modulen . . 21<br />

4.4.3 Starten der Helfer-Anwendungen . . . 22<br />

4.4.4 Gestaltung der Fenster . . . . 22<br />

3


4.4.5 Macintosh-Dateisystem . . . . 24<br />

4.4.6 Abspielen der Audiodatei . . . . 25<br />

4.4.7 Einlesen der Bilder . . . . . 27<br />

4.4.8 Zeichenkommandos . . . . . 27<br />

4.4.9 Flackerfreies Zeichnen . . . . 28<br />

4.4.10 Öffnen eines AOF-Dokuments . . . 28<br />

4.4.11 Ladevorgang . . . . . 28<br />

4.4.12 Steuerung von Animationen durch das appPlay-Modul 29<br />

4.4.13 Schriftsatz-Problem . . . . . 30<br />

4.4.14 Zeichensatz . . . . . . 31<br />

4.4.15 Bildschirmgröße . . . . . 32<br />

4.5 Macintosh-Besonderheiten . . . . 32<br />

4.5.1 Dateien . . . . . . 32<br />

4.5.2 Icons . . . . . . . 32<br />

4.5.3 Menüs . . . . . . 33<br />

4.6 Vorteile der Macintosh-Version des AOF-Viewers . 35<br />

4.6.1 Graphik . . . . . . 35<br />

4.6.2 Menüs . . . . . . 35<br />

4.6.3 Icons . . . . . . . 35<br />

4.7 Nachteile der Macintosh-Version . . . 35<br />

5 Beurteilung der portierten Version. . . 37<br />

6 Literaturverzeichnis . . . . . 38<br />

7 Anhang . . . . . . . . 41<br />

4


1 Einleitung<br />

Thema dieser Diplomarbeit ist die Portierung des Authoring-on-the-fly-Viewers auf<br />

die Apple-Macintosh-Plattform (Power PC).<br />

Authoring-on-the-fly (AOF) ist ein Projekt [AO99] des Instituts für Informatik der<br />

Universität Freiburg. AOF wurde entwickelt, um das Unterrichten an Universitäten<br />

multimedial zu unterstützen. Es soll neue, multimediale Techniken mit<br />

konventionellen Vorlesungsmethoden kombinieren. Mit den AOF-Werkzeugen<br />

gehaltene Vorlesungen können live an andere Orte übertragen, aber auch<br />

aufgezeichnet und von Studenten z.B über das Internet heruntergeladen und<br />

nachträglich verfolgt werden. Zum Betrachten einer solchen Vorlesung ist der<br />

AOF-Viewer erforderlich. Er wurde ursprünglich für Unix-Plattformen entwickelt<br />

(so wie auch die AOF-Aufnahmeumgebung) und existiert seit kurzem auch in einer<br />

Windows-Version. Im Zuge der weiteren Verbreitung der AOF-Software, die durch<br />

geplante virtuelle Universitäten sicherlich bald beschleunigt wird (z.B. die Virtuelle<br />

Universität Oberrhein [VirW]), regte Herr Prof. Ottmann eine Portierung der<br />

Viewer-Software auf den Macintosh an. Dies gab den Anstoß zu vorliegender<br />

Diplomarbeit.<br />

Bei der Portierung wurden Teile des Originalcodes (geschrieben von Christian<br />

Bacher, Rainer Müller, Gabriela Maass und Andreas Reichle am Institut für<br />

Informatik der Universität Freiburg) von der Unix- und der Windows-Version<br />

unverändert übernommen. Diese Teile machen etwa ein Drittel des Macintosh-<br />

Programmcodes aus.<br />

Die eigentliche Entwicklung der Macintosh-spezifischen Programmteile fand an der<br />

University of Auckland (Neuseeland), Hypermedia Unit, und am Institut für<br />

Mikrosystemtechnik, Mikrosystem-Simulation, Universität Freiburg, statt. An<br />

dieser Stelle sei den verantwortlichen Professoren Frau Dr. Lennon und Herrn Prof.<br />

Korvink mein herzlicher Dank für ihre unkomplizierte Unterstützung vor allem in<br />

Form von Gerät und Software ausgesprochen. Ebenfalls zu Dank verpflichtet bin<br />

ich den Mitarbeitern und Assistenten an diesen genannten Instituten, die mich bei<br />

der Programmierung mit den Macintosh-Eigenheiten vertraut machten. Mein<br />

besonderer Dank geht an Gabriela Maass und Rainer Müller vom Institut für<br />

5


Informatik, Universität Freiburg, für die unermüdliche Beantwortung meiner<br />

programmtechnischen Fragen.<br />

6


2 Authoring-on-the-fly<br />

2.1 Vorlesungen und neue multimediale Techniken<br />

In ”konventionellen” Vorlesungen an einer Universität - zumindest im Bereich der<br />

Informatik - legt der Vortragende vorbereitete Folien auf einen Overheadprojektor,<br />

schreibt oder zeichnet erklärende Anmerkungen auf die Folien oder mit Kreide an<br />

die Tafel und kommentiert mündlich. Von weiteren - multimedialen - Techniken,<br />

die heutzutage Computer bieten, wird nur selten Gebrauch gemacht (“so stellt man<br />

fest, daß sicherlich 95% des Unterrichts nach wie vor in der traditionellen Form<br />

erfolgen, das heißt im Frontalunterricht ohne Medienunterstützung oder mit Tafel<br />

und Kreide”[BMO97, S.1]).<br />

Neue technische Errungenschaften bieten heutzutage jedoch schon andere Formen<br />

der Wissensvermittlung. Genannt seien hier z.B das Abspielen von Filmen und<br />

Audiosequenzen, das Verwenden von Hypertextfunktionen, das Vorführen von<br />

Simulationen und Animationen, um abstrakte Zusammenhänge zu verdeutlichen,<br />

oder das Einbinden von elektronischen Büchern. Die Akzeptanz dieser neuen<br />

Techniken ist, zumindest im universitären Bereich, relativ gering.<br />

Auch die immer weiter schreitende Vernetzung durch multimediale Netzdienste<br />

(z.B. Internet und ISDN) wird kaum ausgenutzt. Dabei ist es schon lange möglich,<br />

entsprechend aufgezeichnete Vorlesungen mit Teleteaching-Werkzeugen einem<br />

größeren und entfernteren Publikum zugänglich zu machen. So wäre es auch nicht<br />

mehr notwendig, daß sich Vortragender und Zuhörer zeit- und ortsgleich<br />

zusammenfinden, um einen bestimmten Vortrag zu hören bzw. zu halten. Vorträge<br />

könnten zudem, zusätzlich zu ihrer Live-Übertragung an entfernte Zuhörer, in<br />

einem multimedialen Dokument aufgezeichnet und in einer Art elektronischen<br />

Vorlesungsbibliothek verfügbar gemacht werden, so daß sich Studenten auch<br />

nachträglich, zur Wiederholung oder Vorbereitung auf Prüfungen, bestimmte<br />

Vorlesungen anschauen könnten.<br />

Die Gründe für die zu beobachtende schleppende Umstellung auf die neuen<br />

Techniken müssen jedoch auch berücksichtigt werden. So ist es z.B. nicht<br />

garantiert, daß neue Techniken die Wissensvermittlung unbedingt erleichtern.<br />

7


Vielleicht sind Tafel und Kreide in manchen Bereichen immer noch die<br />

effizienteste Methode, bestimmte Themen Studenten zugänglich zu machen.<br />

Finanzielle Hürden sind ebenfalls nicht zu unterschätzen. Ein wichtiger Grund mag<br />

außerdem sein, daß ein Vortragender vielleicht nicht unbedingt von zu vielen<br />

technischen Hilfsmitteln abhängig sein möchte. Des weiteren kostet der Gebrauch<br />

zusätzlicher Techniken natürlich mehr Vorbereitungszeit pro Vorlesung.<br />

Hier setzt der AOF-Ansatz an:<br />

2.2 Das Authoring-on-the-fly-Prinzip<br />

Das Authoring-on-the-fly-Prinzip (kurz AOF) wurde am Institut für Informatik der<br />

Universität Freiburg entwickelt[AO99]. Es geht davon aus, daß die vorherig<br />

erwähnte mangelnde Akzeptanz neuer multimedialer Vorlesungstechniken nur<br />

dadurch verbessert werden kann, wenn bewährte, traditionelle Lehrverfahren und<br />

Arbeitsweisen so weit es geht beibehalten werden. Ein ”radikaler Bruch mit der<br />

traditionellen Form der Hochschullehre” [BMO97; S.1] soll vermieden werden.<br />

Neue multimediale Techniken sollen ”die spezifischen Stärken des traditionellen<br />

Unterrichts erhalten” und ”kontinuierlich um neue Möglichkeiten erweitern”<br />

[BMO97; S.1].<br />

Konkret bedeutet die Umsetzung dieses Prinzips folgendes:<br />

Statt Tafel und Kreide benutzt der Vortragende eine elektronische Tafel<br />

(Whiteboard) und einen speziellen Stift, mit dem er genauso agieren kann wie<br />

bisher auf der traditionellen Tafel gewohnt. Statt Folien, Texte und Bilder auf den<br />

Overheadprojektor aufzulegen, werden die gleichen Dokumente vorher in dieses<br />

Whiteboard geladen und bei Bedarf abgerufen und angezeigt. Die Folien können<br />

mit dem elektronischen Stift graphisch bearbeitet werden. Der Dozent startet bei<br />

Bedarf elektronische Animationen, Simulationen und Videofilme.<br />

Als Whiteboard wurde zunächst das der MBone-Teleteaching-Umgebung [ErH94]<br />

verwendet. Dank der Multicastfähigkeit können so die Vorlesungen live (online) an<br />

andere Orte (Rechner oder Großbildschirme) übertragen werden. Das MBone-wb<br />

(Whiteboard) erlaubt das Laden von Postscript-Dateien, Vor- und Zurückblättern in<br />

8


den Folien sowie das Markieren und Zeichnen auf diesen. Seine Fähigkeiten sind<br />

jedoch beschränkt, weshalb ein verbessertes Whiteboard entwickelt wurde, auf das<br />

im nächsten Abschnitt eingegangen werden soll.<br />

Während dem Halten der Vorlesung werden gleichzeitig Stimme und<br />

gegebenenfalls auch ein Abbild (Videofilm) des Dozenten übertragen und<br />

aufgezeichnet. Die Vorlesung selbst findet wie gewohnt im Hörsaal statt. Studenten<br />

sind anwesend und können selbstverständlich auch Fragen stellen, auf die der<br />

Dozent eingehen kann. Sämtliche Aktionen auf dem Whiteboard werden nicht nur<br />

übertragen, sondern auch aufgezeichnet und mit dem Audio- und gegebenenfalls<br />

Videostrom synchronisiert (siehe Abschnitt “Synchronisation” im nächsten<br />

Kapitel). Eine so aufgenommene Vorlesung kann dann auf einem Multimediaserver<br />

abgelegt werden, und Studenten können, mit einem viewer ausgestattet, die<br />

Vorlesung (offline) auch nachträglich verfolgen.<br />

Auf die beschriebene Weise werden tradtionelle Vorlesungstechniken beibehalten,<br />

multimedial unterstützt und um neue Möglichkeiten erweitert. Dabei dient das<br />

Whiteboard dem Dozenten als ”Interaktionsmedium, das die traditionelle Form der<br />

Lehre mit unserem neuen Ansatz und seinen Möglichkeiten vereint” [BMO97; S.4].<br />

Der Name ”Authoring on the fly” wurde gewählt, um zu verdeutlichen, daß bereits<br />

während dem Halten der Vorlesung – also ”on the fly” – ein Multimedia-Dokument<br />

erstellt wird.<br />

2.3 Werkzeuge<br />

Ausgehend von dem oben beschriebenen Ansatz, multimedial unterstützte<br />

Vorlesungen mit den MBone-Werkzeugen zu halten, wurden einige<br />

Verbesserungen für das Authoring-on-the-fly an der Universität Freiburg<br />

entwickelt.<br />

2.3.1 Whiteboard<br />

Sehr wichtig für die Qualität einer multimedialen Vorlesung sind die Fähigkeiten<br />

des Whiteboards. Das am Anfang verwendete Whiteboard wb [ErH94] von MBone<br />

9


ietet zwar mehr Präsentationsmöglichkeiten als eine konventionelle Tafel/Kreide-<br />

Vorlesung, auch erlauben die Multicastfähigkeiten ein Teleteaching über Distanz;<br />

jedoch zeigte sich im Betrieb, daß noch einige Verbesserungen wünschenswert<br />

wären, und zwar sowohl was das Vorbereiten als auch das eigentliche Vortragen<br />

einer Vorlesung betrifft.<br />

Das ”AOFwb” wurde entwickelt. Es vereint Fähigkeiten des MBone wb und<br />

ähnlicher Software, wie z.B. Showcase, xfig, TeX, powerpoint., mit zusätzlichen<br />

Möglichkeiten. So können mit dem AOFwb Bilder in den unterschiedlichsten<br />

Formaten geladen und angezeigt werden, gezeichnete Objekte gruppiert und Folien<br />

und Objekte auch nachträglich (während der Rechnervorlesung) manipuliert<br />

werden. Des weiteren wurde der “Telepointer” eingeführt (vergleichbar einem<br />

Zeiger, den der Dozent freihändig bewegt, um auf bestimmte Objekte zu zeigen).<br />

Ein eingebauter Formeleditor dient dazu, Formeln in TeX während der<br />

Vorbereitung zu schreiben und dann bei der Vorlesung abzurufen und zu plazieren.<br />

Bilder können sowohl im Hintergrund als auch im Vordergrund gezeigt werden.<br />

Video- und Audiosequenzen sowie Animationen und Simulationen können<br />

ebenfalls vorbereitend geladen und bei Bedarf live gestartet werden.<br />

Desweiteren wird versucht, das AOFwb so weit wie möglich in die MBone-<br />

Umgebung zu integrieren, um die Teleteaching-Fähigkeiten beizubehalten.<br />

2.3.2 Aufnahme- und Wiedergabeumgebung<br />

Um Vorlesungen mit den AOF-Werkzeugen zu halten, wird eine spezielle<br />

Aufnahme- und Wiedergabeumgebung benutzt, die ”AOFshell”. Sie stellt ein<br />

komplexes, erweiterbares System verschiedener Softwarekomponenten dar. Die<br />

AOFshell, für die im Moment zwei UNIX-Workstations benötigt werden, integriert<br />

Audiostrom (und gegebenenfalls Videostrom), Whiteboardaktionen und das Starten<br />

der Animationen zu einem einzigen AOF-Dokument.<br />

2.3.3 Editor<br />

Mit dem AOF-Editor können AOF-Dokumente, also bereits aufgezeichnete<br />

Vorlesungen, nachträglich bearbeitet werden. Live aufgenommene Vorlesungen<br />

10


sind zwar erfahrungsgemäß so gut, daß keine Nachbereitung erforderlich ist, und<br />

kleine Fehler sollten nicht sonderlich stören, ”sondern einer solchen Vorlesung eher<br />

eine persönliche Note geben” [BMO97; S.6]. Jedoch möchte man manchmal<br />

bestimmte Abschnitte herausschneiden, um das Dokument kompakter zu machen.<br />

Darunter fallen Sprechpausen, Versprecher (die z.B von<br />

Spracherkennngsprogrammen auch automatisch gefunden werden könnten), das<br />

versehentliche Auflegen falscher Folien während dem Vortrag oder auch das<br />

Verschreiben des Vortragenden auf dem Whiteboard.<br />

Herkömmliche Editoren für Audio- und Videoströme können nicht verwendet<br />

werden, weil die Synchronisation der Ströme mit dem Whiteboardaktionsstrom<br />

erhalten bleiben muß. So soll z.B. durch das Herausschneiden eines Versprechers<br />

keine Aktion auf dem Whiteboard verloren gehen.<br />

Ein Editor, der diesen Anforderungen genügt, wurde am Institut für Informatik der<br />

Universität Freiburg ebenfalls entwickelt [MaG96]. Er läuft zur Zeit nur auf<br />

SGI/Irix-Systemen und erlaubt oben erklärtes Herausschneiden von Abschnitten<br />

mit Erhaltung der Synchronität. Whiteboardaktionen können mit dem Editor<br />

zeitlich ”hin- und hergeschoben” werden, um oben beschriebene unerwünschte<br />

Effekte beim Herausschneiden von kurzen Abschnitten zu vermeiden.<br />

2.4 Abspielen von Animationen und Simulationen<br />

Animationen mit ihren zugehörigen Werkzeugen stehen mittlerweile für eine<br />

Vielzahl von Bereichen für den Unterricht zur Verfügung. Da die meisten bisher<br />

aufgezeichneten AOF-Vorlesungen das Thema ”<strong>Algorithmen</strong> und <strong>Datenstrukturen</strong>”<br />

betrafen, boten sich die Animationswerkzeuge ”XTango” [StJ92] (neuere<br />

Versionen ”Polka”[ StJW] und ”Zeus”[BrM91]) an. Mit ihnen können<br />

implementierte <strong>Algorithmen</strong> visualisiert werden.<br />

Es stellt sich die Frage der Kontrolle der Animationen. Sollen sie einseitig vom<br />

Vortragenden kontrolliert werden oder soll eine gewisse Interaktivität zum<br />

Studenten hergestellt werden? Bei den bisherigen Entwicklungen für den AOF-<br />

Viewer wurde auf die Interaktivität der Animationen beim Abspielen von<br />

11


Vorlesungen verzichtet. Sie ist jedoch grundsätzlich mit oben genannten<br />

Werkzeugen möglich und pädagogisch sicherlich sinnvoll. Studenten könnten z.B.<br />

Parameter der visuell dargestellten <strong>Algorithmen</strong> eigenhändig verändern. Die vom<br />

AOF-Viewer dargestellten Animationen beschränken sich darauf, im richtigen<br />

Moment gestartet und gestoppt zu werden. Eventuell vorhandene Parameter haben<br />

die gleichen Werte wie in der Live-Vorlesung. Erwähnt sei an dieser Stelle, daß<br />

XTango und auch seine neueren Versionen nur auf Unix- und WindowsNT-<br />

Plattformen laufen. Die Konvertierung in Quicktime- oder MPEG-Filme (Moving<br />

Picture Expert Group) ist für eine Darstellung auf dem Macintosh notwendig.Das<br />

beansprucht natürlich auch mehr Speicherplatz.<br />

2.5 Aufzeichnung und Synchronisation der Datenströme<br />

Da bei bisher aufgenommenen Vorlesungen eine Videoaufnahme des Vortragenden<br />

nur in Ausnahmefällen als wichtig erschien, soll bei den folgenden Ausführungen<br />

nicht auf den Videodatenstrom eingegangen werden.<br />

2.5.1 Audiodatenstrom<br />

Der Audiodatenstrom, d.h. im Normalfall die (digitalisierte) Stimme des<br />

Vortragenden, wird im AIFF-Format (Audio Interchange File Format) oder AIFC-<br />

Format (Audio Interchange File Format Extension for Compression) aufgezeichnet.<br />

Eine Kompression ist im AIFC-Format möglich. Eine (unkomprimierte) Audiodatei<br />

hat typischerweise eine Größe von bis zu 40MB für eine einstündige<br />

Universitätsvorlesung.<br />

Da der Audiodatenstrom die zeitlich genaueste Auflösung besitzt, wird er zur<br />

Synchronisation der restlichen Datenströme benutzt und daher als ”Master”-<br />

Datenstrom bezeichnet. Die zeitliche Auflösung ist deshalb so genau, weil die<br />

analogen Audiosignale digitalisiert, d.h. in bestimmten Zeitabständen abgetastet<br />

und in diskrete Werte umgewandelt werden. Für eine ausreichende Tonqualität ist<br />

eine Abtastfrequenz von 8000 Hz erforderlich.<br />

12


2.5.2 Whiteboarddatenstrom - Event Queue und Object List<br />

Die Whiteboarddaten werden in zwei getrennten Dateien während dem Vortrag<br />

abgespeichert.<br />

Jedes auf dem Whiteboard während der Vorlesung gezeichnete Objekt (z.B. eine<br />

Linie, ein Rechteck, ein Punkt oder ein Buchstabe) wird mit seinen Daten (z.B. bei<br />

einer Linie ihre Dicke sowie Start- und Endkoordinate) in einer Liste, der ”Object<br />

List” abgelegt. In dieser Liste werden die Objekte numeriert und ihre Daten<br />

gespeichert. Jedes Objekt ist so anhand seiner Nummer eindeutig identifizierbar.<br />

In einer weiteren Datei, der ”Event Queue”, sind für jeden Zeitpunkt (zeitlich<br />

aufsteigend geordnet) die Nummern der Objekte aufgeführt, die gerade zu diesem<br />

Zeitpunkt auf dem Whiteboard sichtbar sind.<br />

Bild 1: Object List und Event Queue (aus [BaM, S.3])<br />

Diese Zeitpunkte werden auch als ”Timestamps” bezeichnet. Der Abstand zwischen<br />

zwei Timestamps ist üblicherweise der Zeitabstand zwischen zwei Veränderungen<br />

auf dem Whiteboard.<br />

Für jeden beliebigen, gegebenen Zeitpunkt kann auf diese Weise sofort festgestellt<br />

werden, welche Objekte auf dem Whiteboard gerade zu sehen sind, und zwar<br />

unabhängig von der Kenntnis, welche Objekte zu vorherigen Zeitpunkten zu sehen<br />

waren (diese Fähigkeit wird auch ”random-access” - Fähigkeit genannt).<br />

Wenn ein Objekt längere Zeit zu sehen ist, taucht seine Nummer in mehreren,<br />

zeitlich aufeinander folgenden Timestamps auf. Man spricht von ”overlapping<br />

objects”.<br />

13


Bild 2: overlapping Timestamps (aus [BaM, S.3])<br />

Ein Abspielgerät muß erkennen können, ob Objekte von einem zum nächsten<br />

Zeitpunkt ”überlappen”, und soll diese dann nicht neu auf den Bildschirm zeichnen.<br />

Die oben erwähnte random-access-Fähigkeit erlaubt schnelles Vor- und<br />

Zurückspulen in einem AOF-Dokument oder Springen an bestimmte Stellen im<br />

Dokument. Die Darstellung der Whiteboardaktionen in Event Queue und Object<br />

List ermöglicht dem Zuschauer so ein komfortables Navigieren im Dokument. Die<br />

random-access-Fähigkeit erlaubt technisch erst die Synchronisation des<br />

abzuspielenden Whiteboardaktionsstroms in Abhängigkeit von anderen<br />

Datenströmen, sprich dem Audiodatenstrom.<br />

14


3 Der AOF-Viewer<br />

3.1 Die Module<br />

Der AOF-Viewer soll eine Wiedergabe eines aufgezeichneten AOF-Dokumentes<br />

ermöglichen. Vorgaben beim Entwurf (der ersten Version für Unix) waren einfache<br />

Bedienbarkeit für den Benutzer sowie für die Entwickler eine robuste und<br />

gleichzeitig flexible Programmstruktur mit der Möglichkeit von Erweiterungen und<br />

Neuerungen.<br />

Ein wichtiges Prinzip des AOF-Viewers ist daher seine Modularität. Der Viewer<br />

soll die verschiedenen Datenströme, aus denen ein AOF-Dokument besteht,<br />

darstellen. Für jeden dieser Datenströme ist ein eigenes Programmmodul zuständig.<br />

Programmtechnisch bedeutet dies, daß ein Modul eine eigenständige, auch allein<br />

lauffähige Anwendung darstellt. Die Module müssen im simultanen Betrieb<br />

untereinander kommunizieren, um die Synchronisation der Datenströme zu<br />

gewährleisten.<br />

3.1.1 aofSync<br />

Das aofSync-Modul stellt das Hauptmodul des Viewers dar. Es ist für das<br />

Abspielen des Audiodatendstromes zuständig. Der Audiodatenstrom besitzt unter<br />

allen darzustellenden Datenströmen die zeitlich genaueste Auflösung und wird<br />

deshalb zur Synchronisation der restlichen Datenströme (Whiteboarddatenstrom,<br />

eventuell Videodatenstrom sowie Start- und Endpunkte der Animationen) benutzt.<br />

Man spricht von einer Master-Slave-Synchronisation, wobei das aofSync-Modul<br />

den Master darstellt. Die anderen Module werden als Helfer bezeichnet ([BaM],<br />

S.4).<br />

15


Bild 3: aofSync-Fenster (Unix-Version)<br />

16


Zum aofSync-Modul gehört das Kontrollfenster (Bild 3), anhand dessen der<br />

Benutzer das Abspielen eines Dokumentes steuern kann.<br />

Die Navigation in einem geöffneten (geladenen) Vortrag erfolgt mit Hilfe des Startund<br />

Stopknopfes. Für schnelles Vor- und Zurückspulen im Vortrag klickt der<br />

Benutzer einfach auf den Skalenzeiger , der die aktuelle Position im Dokument<br />

anzeigt, und zieht diesen an die gewünschte Stelle. Sobald auf den Skalenzeiger<br />

geklickt wird, wird der Ton des Vortrages abgeschaltet, bis der Spulvorgang<br />

beendet ist. Während dem Spulen werden jedoch jederzeit alle Whiteboardaktionen<br />

(siehe folgenden Abschnitt ”wbPlay”) angezeigt. Diese Tatsache stellt eine<br />

wichtige Navigationshilfe dar. Will der Benutzer z.B. an den Beginn eines<br />

bestimmten Abschnitts im Vortrag springen, zieht er den Skalenzeiger einfach so<br />

lange in die entsprechende Richtung, bis die entsprechende Folie auf dem<br />

Whiteboard zu sehen ist (”visible scrolling”).<br />

Durch die “Zoom-In”- und “Zoom-Out”-Kontrollknöpfe kann die angezeigte<br />

zeitliche Auflösung der Skala verändert werden. Das ermöglicht ein genaueres<br />

Spulen. Will der Benutzer in “eingezoomten” Zustand weiterspulen als der gerade<br />

angezeigte Zeitbereich der Skala es zuläßt, so zieht er den Skalenzeiger einfach an<br />

den Skalenanschlag. Sobald der Skalenzeiger den (linken oder rechten) Anschlag<br />

berührt, fängt die Zeitskala unter dem Zeiger an, sich zu bewegen (solange die<br />

Maus gedrückt bleibt) und setzt so den Spulvorgang fort. Die Geschwindigkeit, mit<br />

der sich die Skala bewegt, kann vergrößert werden, indem der Benutzer versucht,<br />

den Zeiger aus der Skala nach links bzw. nach rechts ”herauszuziehen”.<br />

Das Zählwerk zeigt die aktuelle Position im Dokument auf Millisekunden genau an.<br />

Daten des Vortrags, wie Titel, Autor und Länge, werden im unteren Fensterbereich<br />

dargestellt. Bei Bedarf kann dieser untere Bereich durch Drücken des ”More”-<br />

Knopfes erweitert werden, um weitere Daten anzuzeigen (Datum der Aufnahme,<br />

letzte Änderungen, Kommentar).<br />

Mit dem “Quit”-Knopf wird die aofSync-Anwendung beendet und eventuell<br />

laufende Helfer-Module ebenfalls.<br />

Die Auswahl des zu öffnenden AOF-Dokumentes wird in der Unix- und Windows-<br />

Version mit der Kommandozeilentechnik durchgeführt, d.h. beim Starten des<br />

17


aofSync-Moduls wird diesem in der Kommandozeile Name und Pfad der zu<br />

öffnenden AOF-Datei übergeben.<br />

Unmittelbar nach dem Starten werden dann die oben beschriebenen Daten der<br />

Vorlesung von der AOF-Datei geladen, angezeigt, die Audiodatei geöffnet und die<br />

im Vortrag benötigten Helfer-Module gestartet.<br />

18


3.1.2 wbPlay<br />

Das wbPlay-Modul ist für die Anzeige des Whiteboardaktionsstroms zuständig. Am<br />

linken Rand des wbPlay-Fensters deutet ein Zeiger auf die aktuelle Position im<br />

Dokument.<br />

Bild 4: wbPlay -Fenster (Unix-Version)<br />

19


Wird dieses Helfer-Modul vom aofSync-Modul gestartet und ihm von letzterem<br />

Name und Pfad der Eventqueue- und Objectlistdatei mitgeteilt, öffnet es diese, lädt<br />

sie in den Speicher und erstellt aus beiden eine verkettete Liste. Alle zum Vortrag<br />

gehörenden Folien (bisher meistens im GIF-Format vorliegend) werden in Bitmaps<br />

umgewandelt und ebenfalls im Speicher abgelegt. Die zwei aufgeführten Vorgänge<br />

können bis zu mehreren Sekunden Zeit beanspruchen. Aus diesem Grund wird für<br />

jeden der Ladevorgänge in einem eigenem Anzeigefenster der aktuelle Stand des<br />

Ladevorgangs angezeigt (“progressbar”). In der Unix- und der Windowsversion<br />

sind diese Anzeigefenster des Ladevorgangs eigenständige, wenn auch kleine<br />

Anwendungen. Trotzdem wurden sie hier nicht als Modul des AOF-Viewers<br />

aufgeführt, weil sie erstens nur sehr kurz beim Ladevorgang in Erscheinung treten<br />

und zweitens bei der Macintosh-Version keine eigene Anwendung darstellen (siehe<br />

Abschnitt ”Ladevorgang” im entsprechenden Kapitel).<br />

3.1.3 appPlay<br />

Das appPlay-Modul ist ebenfalls ein Helfer-Modul und für das Starten und<br />

Beenden von Animationen zuständig. Bisher wurden nur (XTango-)Animationen<br />

und MPEG-Filme gestartet, theoretisch können jedoch beliebige Anwendungen<br />

gestartet und gestoppt werden, die dann ein bestimmtes Dokument öffnen und<br />

anzeigen. Zum appPlay gehört ein kleines Anzeigefenster mit Skala und Zeiger.<br />

20


Bild 5: appPlay-Fenster (Unix-Version) und laufende XTango-Animation (Türme<br />

von Hanoi)<br />

Die zeitlichen Positionen und Längen der Animationen eines Vortrages sind durch<br />

dunkelgrüne Balken neben der Zeitskala des appPlay-Fensters dargestellt. Je länger<br />

eine Animation, desto dicker ihr Balken. Wird während dem Abspielen des<br />

Vortrages eine Animation gestartet, leuchtet der entsprechende Balken hellgrün auf,<br />

bis die Animation stoppt.<br />

Das appPlay-Modul kann außerdem das Spulen beeinflussen. Beendet der Benutzer<br />

nämlich ein Vor- oder Zurückspulen in einem Zeitbereich zwischen Start und Ende<br />

einer Animation, springt die Datenposition (aller Module) automatisch an den<br />

Anfang der Animation, in der das Spulen beendet wurde. Diese Eigenschaft wird<br />

durch Kontrollsignale ermöglicht, die zwischen den Helfer-Modulen (in diesem<br />

Fall dem appPlay) und dem aofSync-Modul gesendet werden können (s. Abschnitt<br />

”Synchronisation”).<br />

Programmtechnisch baut der appPlay beim Starten seine eigene Liste aus Start- und<br />

Endzeitpunkten von Animationen auf.<br />

21


Das eigentliche Starten der Animationen während dem Betrachten einer Vorlesung<br />

(im Normalfall Starten des XTango-Players, der eine bestimmte Animation<br />

abspielt) geschieht bei der Unix-Version durch Öffnen von Dateien, in denen<br />

Skripte (Unix-Kommandozeilen) stehen, die ausgeführt werden. Da Macintosh-<br />

Computer keine Kommandozeilentechnik kennen, mußte das Starten von<br />

Animationen hier anders durchgeführt werden.<br />

3.2 Synchronisation<br />

Wie vorher schon ausgeführt, müssen die verschiedenen Datenströme, aus denen<br />

ein AOF-Dokument besteht (Audio, eventuell Video, Whiteboardaktionen, sowie<br />

Animationskontrollkommandos), synchronisiert werden. Jeder dieser –<br />

zeitabhängigen und simultan darzustellenden - Datenströme ist ”randomaccessible”,<br />

d.h. der Inhalt des Datenstroms kann zu einem beliebigen Zeitpunkt<br />

unabhängig von seiner Vorgeschichte bestimmt werden. Einer der Datenströme ist<br />

der ”Master Stream”, die restlichen sind die ”Slave Streams”.<br />

Die Synchronisationsform des AOF-Viewers wird als ”Master-Slave-<br />

Synchronization” [BaM, S.4] bezeichnet. In dieser Synchronisationsform werden<br />

die Slave-Datenströme nicht nach einer zeitlich konstant laufenden Uhr<br />

synchronisiert, sondern nach dem Master-Datenstrom. Der Master-Strom ist in<br />

kleine, gleichlange Blöcke unterteilt. Dadurch erhält man Timestamps, die zur<br />

Synchronisation benutzt werden. Immer wenn ein Block des Master-Stroms<br />

komplett abgespielt wurde, wird nach dem entsprechenden Timestamp (oder dem<br />

nächstkleineren) in sämtlichen Slave-Datenströmen gesucht und die Daten, die zu<br />

diesem Zeitpunkt gehören, dargestellt. Das ist nur möglich, wenn die Slave-<br />

Datenströme random-accessible sind. Wird der Master-Strom in seiner<br />

Aufnahmegeschwindigkeit abgespielt, erhält man ein ”real-time replay” [BaM,<br />

S.4]. Die Blockgröße des Master-Stroms muß klein genug sein, um ein ”flüssiges”<br />

Abspielen der Slave-Datenströme zu ermöglichen.<br />

Im AOF-Viewer wird für die Darstellung jedes Datenstroms ein eigenes,<br />

unabhängig funktionierendes Präsentationsmodul verwendet. Module für Slave-<br />

Datenströme bezeichnet man auch als Helfer. Es sind dies beim Macintosh-Viewer<br />

22


die wbPlay- und appPlay-Anwendung. Das Modul, das den Master-Strom anzeigt<br />

(aofSync-Modul), wird auch als ”Synchronizer” bezeichnet. Zwischen Synchronizer<br />

und jedem Helfer bestehen Kommunikationskanäle, die Kommunikation in beiden<br />

Richtungen ermöglichen.<br />

Bild 6: Master-Slave-Synchronisation (aus [BaM, S.4])<br />

Die Kommunikationskanäle in Richtung Helfer werden für die Master-Slave-<br />

Synchronisation sowie für die Steuerung der Helfer benutzt. Der Synchronizer<br />

präsentiert den Master-Strom. Als Master-Strom wird der Audiodatenstrom<br />

verwendet, da er die zeitlich kleinste Auflösung besitzt. Immer wenn ein Block des<br />

Master-Stroms fertig gespielt wurde, wird der korrespondierende Timestamp durch<br />

die Kommunikationskanäle an die Helfer gesendet. Diese zeigen umgehend die zu<br />

diesem Timestamp gehörenden Daten ihres Slave-Stroms an. Durch die<br />

Kommunikationskanäle können – in beiden Richtungen – auch Kontrollnachrichten<br />

gesendet werden, wie z.B. ”Presentation has started, Presentation has stopped, User<br />

is scrolling, [] jump to specified time stamp”[BaM, S.5].<br />

Hier zeigt sich direkt ein Vorteil des Modularitätsprinzips: Die Erweiterung mit<br />

neuen Datenströmen und damit mit neuen Helfern ist ohne großen Aufwand<br />

möglich. Neue Helfer müssen lediglich ihren Datenstrom darstellen können und das<br />

Kommunikationsprotokoll beherrschen.<br />

23


Es ist darauf hinzuweisen, daß durch die random-access-Eigenschaft aller<br />

Datenströme und durch die oben beschriebene Architektur ein Springen an jede<br />

beliebige Stelle in einem Dokument möglich ist. Das erlaubt auch ein Indizieren<br />

eines AOF-Dokumentes, d.h. Verweise auf bestimmte Stellen im Dokument von<br />

außerhalb, z.B. von einem HTML-Browser via Hyperlinks aus. Bei den Unix- und<br />

Windows-Versionen wurde diese Funktion bereits realisiert.<br />

24


4 Portieren des AOF-Viewers auf Apple PowerPCs<br />

4.1 Ausgangspunkt<br />

Der Programmcode des AOF-Viewers ist für alle bisher unterstützten Plattformen<br />

in C++ geschrieben. Die Teile des Codes, die plattformunabhängig sind, wurden<br />

weitgehend unverändert übernommen. Es sind dies vor allem Klassen und<br />

Funktionen, mit deren Hilfe dynamische <strong>Datenstrukturen</strong> aufgebaut werden (doc.c,<br />

aoflist.c, aofobj.c und sgml.c).<br />

Die eigentliche Portierungsarbeit lag in denjenigen Bereichen des Codes, die<br />

plattformabhängige Befehle enthalten. Hierunter fällt vor allem die<br />

Programmierung der graphischen Benutzeroberfläche (Fenstergestaltung,<br />

Zeichenkommandos), das Abspielen des Audiodatenstroms sowie die<br />

Implementierung der Kommunikation zwischen den einzelnen Modulen des<br />

Viewers. Es wurden beide Codevarianten, die für Unix und die für Windows, für<br />

die Portierung herangezogen. Dabei gab der Windows-Code etwas mehr<br />

Anhaltspunkte für die Oberflächengestaltung, da sich die Befehle zum Zeichnen<br />

und Gestalten von Fenstern mit denen des Macintoshs ähneln. Der Unix-Code<br />

wiederum ließ etwas besser die modularen Prinzipien des Viewer-Aufbaus<br />

erkennen.<br />

4.2 Compiler und Gerät<br />

Als Compiler stand die Entwicklungsumgebung CodeWarrior von Metrowerks,<br />

Version 3 [MeW] zur Verfügung. Zielplattform für die Portierung des AOF-<br />

Viewers war der Apple Power PC ab Version 7.0. Die älteren 68K-Prozessoren<br />

konnten nicht unterstützt werden. Der Grund dafür lag in der Notwendigkeit, den<br />

Audiodatenstrom in kleinen, in einer Warteschlange aufgereihten 1024-Byte-<br />

Blöcken abzuspielen, da nur so eine Synchronisation mit den restlichen<br />

Datenströmen erreicht werden kann. Bei dieser Methode kann es jedoch bei den<br />

25


68K-Modellen zu akustischen Aussetzern zwischen dem Spielen zweier Blöcke<br />

kommen.<br />

Die Portierungsarbeit erfolgte auf zwei Power PCs mit Version 7.6.1 und 8.5.<br />

4.3 Beibehaltene Prinzipien<br />

Wie bereits am Anfang erwähnt, ist eines der programmtechnischen Prinzipien des<br />

AOF-Viewers die Modularität. Das heißt, daß jeder Helfer (wbPlay und appPlay)<br />

eine eigenständige, unabhängige Anwendung (standalone application) darstellt, die<br />

von der Hauptanwendung (aofSync) bei Bedarf gestartet wird und über<br />

Kommunikationskanäle Nachrichten austauscht. Dieses Prinzip wurde auch bei der<br />

Macintoshversion beibehalten. Jedes Modul (aofSync, wbPlay, appPlay) ist<br />

unabhängig von anderen Programmen lauffähig und besitzt auch äußerlich alle<br />

Merkmale einer eigenständigen Anwendung (z.B. eigenes Icon). Die Vorteile<br />

liegen auf der Hand: gefahrlosere Veränderbarkeit und Anpaßbarkeit des Codes<br />

eines Moduls, mehr Übersichtlichkeit sowie geringere Fehlerwahrscheinlichkeit.<br />

Das Modul-Prinzip erfordert die Implementierung einer Kommunikation zwischen<br />

den einzelnen Anwendungen. Dies wurde mit Hilfe von Highlevelevents und<br />

Appleevents realisiert (siehe dazu den entsprechenden Abschnitt). Die Unix-<br />

Versionen des AOF-Viewers benutzen hier named pipes und die Windows-Version<br />

das ”SendMessage”-Kommando, mit dessen Hilfe im Windows-Betriebssystem<br />

Nachrichten an Fenster anderer Anwendungen geschickt werden können.<br />

4.4 Änderungen und Anpassungen für die Macintosh-Version<br />

In diesem Abschnitt soll auf die eigentliche Portierungsarbeit eingegangen werden.<br />

Sie stellte den Haupt-Zeitaufwand dieser Diplomarbeit dar. Im folgenden seien die<br />

Teile des AOF-Viewers beschrieben, bei denen der Code der anderen Plattformen<br />

nicht übernommen werden konnte, sondern neu entwickelt werden mußte.<br />

4.4.1 Programmierung der graphischen Benutzeroberfläche<br />

26


Die graphische Benutzeroberfläche mußte für alle drei Viewer-Anwendungen von<br />

Grund auf neu programmiert werden. Der Code hierfür befindet sich für alle drei<br />

Programmmodule in der jeweiligen ”Window.c”-Datei. Zur<br />

Oberflächenprogrammierung gehören das Aussehen von Fenstern und Knöpfen, die<br />

Zeichenkommandos sowie die Implementierung der Reaktionen auf Knopfdrücke<br />

und Anwählen von Menüpunkten. Der Windowscode, der in diesem Bereich als<br />

Ausgangsbasis diente, konnte nur begrenzte Anhaltspunkte geben. Eine<br />

umfangreiche Einarbeitung in Macintosh-Oberflächenprogrammierung war<br />

notwendig. Hierzu wurden vor allem Handbücher, Programmierliteratur und online-<br />

Programmierführer verwendet ([Ma92],[IM91],[IMT92]). Ein typisches Apple-<br />

Problem, das sich dabei auftat, war die Tatsache, daß die Handbücher - z.T. noch<br />

aus den Achtzigerjahren stammend – weitestgehend nur PASCAL-Code für<br />

Befehlserklärungen und Programmbeispiele benutzen. Ein Grund hierfür ist die<br />

Tatsache, daß das Macintosh-Betriebssystem ursprünglich in PASCAL<br />

programmiert war. Eine Übersetzung in C-Code ist zwar nicht schwer, hat jedoch<br />

einiges “Ausprobieren” zur Folge. Wert- und Variablenübergabe in Funktions- und<br />

Prozeduraufrufen entsprechen sich nämlich in den PASCAL- und C-Versionen der<br />

Befehle nicht.<br />

4.4.2 Kommunikation zwischen den Modulen<br />

Zur Kommunikation zwischen den Modulen wurden Highlevelevents benutzt. Im<br />

Gegensatz zu Lowlevelevents (z.B. Mausklick, Tastendruck, Fensterbereich<br />

aktualisieren) sind Highlevelevents zur Kommunikation zwischen verschieden<br />

Anwendungen gedacht. Einige Highlevelevents sind bei Apple genormt: das<br />

OpenApplication-Event, OpenDocument-Event, PrintDocument-Event und<br />

QuitApplication-Event. Sie stellen die sog. Apple-Events dar, die jede Anwendung<br />

unterstützen sollte, um die typische Macintosh-Benutzung zu garantieren, wie z.B.<br />

das Öffnen eines Dokuments durch Ziehen des Dokument-Icons auf das Icon der<br />

öffnenden Anwendung oder Doppelklicken auf das Dokument-Icon. Die<br />

Nachrichten zwischen den AOF-Viewer-Modulen, deren Bedeutung sich mit denen<br />

der Apple-Events decken (das QuitApplication- und OpenDocument-Kommando),<br />

27


wurden deshalb auch als Apple-Event implementiert. Siehe hier als Beispiel das<br />

aofSync-Modul, das beim Empfangen eines QuitApplication-Kommandos die<br />

Audiodatei schließt, an die Helfer ebenfalls ein QuitApplication-Kommando<br />

schickt und die globale Variable gDone auf wahr setzt, um ein Beenden der<br />

Anwendung zu veranlassen (s.Datei window.c des aofSync-Moduls im Anhang):<br />

pascal OSErr doQuitAppEvent(AppleEvent *appEvent,AppleEvent *reply,<br />

long handlerRefCon)<br />

{<br />

gDone = true;<br />

if(gAOFDocumentOpen)<br />

{<br />

helpers->sendcommand(-17); // send Quit command to helpers<br />

sndExit(); // stop sound and close sound file<br />

}<br />

}<br />

Die Nachrichten zwischen den Modulen im AOF-Viewer dienen der<br />

Synchronisation (das aofSync-Modul teilt den Helfern den Timestamp, d.h. die<br />

aktuelle Position im AOF-Dokument mit), der Information über Zustände (spielen,<br />

stop, spulen) und dem Übermitteln des Sprung-Kommandos (Viewer soll an den<br />

Anfangspunkt einer zu startenden Animation springen). Für diese Nachrichten<br />

wurden Highlevelevents mit einer bestimmten Kennung verwendet, und zwar der<br />

Kennung ‘AOFM’ für das Senden einer Nachricht, d.h. des Timestamps, ‘AOFC’<br />

für das Übermitteln von Kommandos und Zuständen sowie ‘AOFI’ als Kennung für<br />

den Initialisierungsdatenblock (Dateinamen der Objectlist und Eventqueue). Siehe<br />

dazu die Dateien comm.c und comm.h im aofSync-Modul..<br />

Bei einer Audioblockgröße von 1024 Byte wird alle 1/16 Sekunde ein<br />

Synchronisationssignal an die Helfer geschickt. Tests bestätigten, daß<br />

Highlevelevents schnell genug übermittelt und ausgeführt werden, um die<br />

Synchronisation zwischen den Modulen zu gewährleisten.<br />

4.4.3 Starten der Helfer-Anwendungen<br />

28


Nach dem Öffnen eines AOF-Dokuments von der Hauptanwendung aofSync<br />

werden die für das Lesen des Dokuments notwendigen Helfer-Anwendungen<br />

automatisch gestartet. Das ist auch bei der Windows- und Unix-Version der Fall.<br />

Für die Macintosh-Version wurde noch ein Suchprozeß implementiert, der vor dem<br />

Starten eines Helfers in sämtlichen lokalen Speichermedien nach der<br />

Programmdatei dieses Helfers sucht. Auf diese Weise ist der Standort der Helfer-<br />

Programmdateien frei wählbar und auch nicht an den Standort des aofSync-Moduls<br />

gebunden. Für den Suchprozeß werden die Datenbanken ausgenutzt, die der<br />

Macintosh für jedes Speichermedium unterhält. Sie können in sehr kurzer Zeit<br />

durchsucht werden, um nach einer Programmdatei zu suchen, die gestartet werden<br />

soll (siehe die Funktion ‘start’ in der Datei comm.c im aofSync-Modul). Bekannt<br />

sein muß nur der ”signature”-Code der zu startenden Anwendung, ein vierstelliger<br />

Buchstabencode (32 Bit), der für jede Anwendung nur einmal existiert und sie<br />

identifiziert. Signatures für Programmanwendungen können bei Apple zentral<br />

registriert werden. Das wurde für den AOF-Viewers bereits getan.<br />

4.4.4 Gestaltung der Fenster<br />

Bei der Gestaltung der Fenster wurde auf ein Macintosh-typisches Aussehen Wert<br />

gelegt. Dies gilt vor allem für das aofSync-Fenster.<br />

29


Bild 7: Der AOF-Viewer für Macintosh<br />

Der “More”/”Less”-Knopf der Unix- und Windows-Version wurde durch das<br />

Macintosh-typische blaue Dreieck ersetzt, das seit Betriebssystem-Version 8.0<br />

immer dann verwendet wird, wenn Inhalte auf- und zugeklickt werden können.<br />

Alle Knöpfe wurden mit den Macintosh-typischen runden Ecken versehen und die<br />

ordnenden Rahmenlinien im Fenster ebenfalls an das Macintosh-Design angepaßt.<br />

Die Zahlen des Zählwerks wurden in einem blauen Farbton gehalten und die blauen<br />

Ziffern der Unix- und Windows-Zeitskala bei der Macintosh-Version auf schwarz<br />

angezeigt. Diese Reduzierung der Farbenanzahl geschah auf Anraten meiner<br />

Programmierbetreuer an der University of Auckland.<br />

30


Sämtliche Knöpfe wurden nicht als Standardkontrollknöpfe implementiert (wie z.B.<br />

die Knöpfe in üblichen Dialogfenstern), sondern von Hand programmiert. Das hat<br />

den Vorteil, daß die Knöpfe auf Betriebssystem 7.x und 8.x genau gleich ausehen.<br />

Das Aussehen herkömmlicher Standardkontrollknöpfe änderte sich bei Macintosh<br />

mit der Einführung der 8.0-Betriebssystemsversion.<br />

Der Skalenzeiger wurde so implementiert, daß bei “eingezoomten” Zustand und<br />

Ziehen des Zeigers ans Skalenende bereits beim Berühren desselben die Skala<br />

anfängt, weiterzuwandern und so das Vor- bzw. Zurückspulen fortgeführt wird<br />

(entspricht der Unix-Version, nicht der Windows-Version). Wird während dem<br />

Spulen der gedrückte Mauspfeil aus dem aofSync-Fenster herausbewegt, bewegt<br />

sich die Skala schneller. Des weiteren verdunkelt sich der Skalenzeiger, solange er<br />

angeklickt wird (übliches Macintosh-Verhalten beim Bewegen von Zeigern).<br />

4.4.5 Macintosh-Dateisystem<br />

Die Besonderheiten des Macintoshs, die Organisation von Dateien betreffend,<br />

machte sich auch beim Portieren des AOF-Viewers bemerkbar.<br />

Zum Identifizieren einer Datei benutzt ein Macintosh-Computer einen speziellen<br />

struct-Datentyp (FSSpec), in dem die Nummer des Speichermediums, die des<br />

übergeordneten Verzeichnisses, sowie der Name der Datei (ohne Pfad) abgelegt<br />

sind. Der Dateiname ist dabei ein PASCAL-String. Bei PASCAL-Strings gibt das<br />

erste Byte des Strings die Länge des Strings an. Außerdem wird im Gegensatz zu<br />

C-Strings keine Null am Ende des Strings angefügt.<br />

struct FSSpec {<br />

short vRefNum;<br />

long parID;<br />

Str63 name;<br />

};<br />

Alle Macintosh-spezifischen Befehle zum Öffnen, Schließen und Lesen von<br />

Dateien erfordern diesen FSSpec. Eine einmal geöffnete Datei wird über eine<br />

Nummer (die file reference number) referenziert, die beim Öffnen der Datei einer<br />

Variablen zugewiesen wird.<br />

31


Macintosh unterstützt auch die Standard-C-Ein- und Ausgabebefehle für Dateien,<br />

die zur Identifikation einer Datei den vollen Pfadnamen (als C-String, d.h. Nullterminiert)<br />

benutzen und zur Referenzierung einer offenen Datei den C-”FILE”struct<br />

benutzen.<br />

Jedoch ist manchmal die Benutzung der Macintosh-spezifischen Befehle<br />

unvermeidlich. Z.B. erfordert Macintoshs ‘ParseAIFFHeader’-Funktion, die den<br />

Dateikopf einer (offenen) Audiodatei liest , ihre file reference number. Hier mußte<br />

dann bei der Portierung der vorliegende volle Pfadname für die Audiodatei in einen<br />

FSSpec konvertiert werden, dann die Datei mit Macintosh-spezifischen Befehlen<br />

geöffnet werden, um so die file reference number zu erhalten. (Siehe die Funktion<br />

‘aof_af_open’ in der Datei snd.c im aofSync-Modul.)<br />

Ein weiteres Mal wurde die Verwendung des Macintosh-spezifischen FSSpecs im<br />

wbPlay-Modul erforderlich. Die Quicktime-Befehle, die zum Einlesen der GIF-<br />

files in den Speicher benutzt wurden, arbeiten ebenfalls nur mit dem FSSpec(siehe<br />

Funktion ‘newI’ in der Datei replay.c im wbPlay-Modul).<br />

Eine weitere Besonderheit des Macintosh-Dateisystems ist die Tatsache, daß in<br />

Datei- und auch Verzeichnisnamen Leerzeichen vorkommen dürfen. Das hat zur<br />

Folge, daß einige C-Funktionen, die mit Strings arbeiten (z.B. ‘sscanf’), nur mit<br />

Vorsicht benutzt werden dürfen, da sie ein Leerzeichen als Trennzeichen zwischen<br />

zwei verschiedenen Strings interpretieren. Funktionen dieser Art wurden bei der<br />

Macintosh-Version durch andere Funktionen ersetzt.<br />

4.4.6 Abspielen der Audiodatei<br />

Das Abspielen von Audiodateien ist in hohem Maße plattformabhängig.<br />

Macintosh-Computer bieten zahlreiche Möglichkeiten zum Abspielen von<br />

Audiodaten. Mit jeweils einem einzigen Befehl können sie z.B. direkt von Datei<br />

gestartet und sekundengenau gestoppt werden. Eine Sekunde ist jedoch zu lange für<br />

die geforderte Synchronisationsgenauigkeit des AOF-Viewers, der ungefähr alle<br />

1/16 Sekunde ein Synchronisationssignal für die Helfer benötigt. Deshalb mußte<br />

das Abspielen der Audiodatei ähnlich wie auf den anderen Plattformen<br />

implementiert werden. Die Audiodaten werden in 1024 Byte-Blöcken in einer Art<br />

32


Warteschlange dem Audiodevice zugeführt, das diese dann spielt. Jeweils nach dem<br />

Abspielen eines kompletten Blocks wird eine Callback-Prozedur aufgerufen, die<br />

die globale Variable “gBufferFlag” setzt (Synchronisationssignal). Der Wert dieser<br />

Variablen wird regelmäßig abgefragt und - falls sie gesetzt ist - das Füllen eines<br />

neuen Blocks mit Audiodaten von der Datei veranlaßt. Des weiteren wird die<br />

Datenposition aktualisiert (Zählwerk) und diese den Helfern mitgeteilt.<br />

Siehe hierzu einen Auszug aus dem eventloop des aofSync-Moduls (Datei<br />

window.c):<br />

33


void eventLoop(void)<br />

{<br />

EventRecord eventRec;<br />

Boolean gotEvent;<br />

gDone = false;<br />

}<br />

while(!gDone)<br />

{<br />

while (gBufferFlag>0) //one (or already several) buffer(s) played<br />

{<br />

gDataPosition = gDataPosition + (double)bytesToMs(kBufferSize);<br />

// update data position<br />

}<br />

if(gPlaying)<br />

{<br />

sndFillBuffer();<br />

sndPlayBuffer();<br />

gBufferFlag--;<br />

}<br />

else<br />

{<br />

sndStop();<br />

gBufferFlag = 0;<br />

}<br />

helpers->sendmessage((long)gDataPosition); // send time stamp<br />

// to helpers<br />

if(!gBufferFlag) drawCounter(gDataPosition); // update counter<br />

} // end while(gBufferFlag)<br />

gotEvent=WaitNextEvent(everyEvent,&eventRec,3,gMouseMovedRegion);<br />

if(gotEvent)<br />

doEvents(&eventRec);<br />

Gestoppt werden kann das Abspielen der Audioblöcke nur dann, wenn gerade ein<br />

Block zu Ende gespielt ist (deshalb dürfen die Blöcke nicht zu groß sein). Der<br />

”random-access” für die Audiodaten, d.h. die Möglichkeit zum Springen an<br />

bestimmte Stellen in der Audiodatei, ist gewährleistet durch Einlesen der<br />

Audiodaten in die Speicherblöcke von dieser bestimmten Stelle ab (Funktion<br />

‘sndStart’ in der Datei snd.c für aofSync-Modul).<br />

Die Länge eines Blocks wurde auf ein Kilobyte gesetzt (Datei snd.h im aofSync-<br />

Modul). Dies ermöglicht ein praktisch sofortiges, jederzeit mögliches Stoppen des<br />

Tones und garantiert bei Mono, 16000Hz Samplefrequenz und einer Samplegröße<br />

von 8 Bit ein Synchronisationssignal alle 1/16-Sekunde.<br />

Es fiel auf, daß, insgesamt gesehen, das Abspielen des Audiodatenstromes auf dem<br />

Macintosh nicht einfacher zu implementieren ist als auf den anderen Plattformen.<br />

34


Bessere Audiofähigkeiten und -möglichkeiten bietet der Macintosh vor allem im<br />

Synthesizerbereich, der beim AOF-Viewer jedoch keine Rolle spielt.<br />

Nichtsdestotrotz stellte die Benutzung der Macintosh-”ParseAIFF-Header”-<br />

Funktion eine große Vereinfachung dar, die fünf Seiten Windows-Programmcode<br />

ersetzte. Diese Funktion liest Parameter der Audiodatei, wie z.B. Dateilänge,<br />

Anzahl der Kanäle, Kompressionsart und Offset, die bekannt sein müssen, bevor<br />

die Audiodaten gespielt werden können.<br />

4.4.7 Einlesen der Bilder<br />

Eine wichtige Funktion des wbPlay -Moduls ist das Laden und Anzeigen der<br />

Folien, die während der Vorlesung gezeigt werden. Während bei der Unix-Version<br />

des Viewers die Folien in verschiedenen Formaten gelesen werden können (z.B.<br />

GIF, postscript, TIFF), kann der Windows-Viewer nur GIF-Bilddateien lesen.<br />

Für die Macintosh-Version wurde hier auf einige Quicktime-Funktionen<br />

zurückgegriffen, die verhältnismäßig viel Programmcode - verglichen mit den<br />

anderen Viewer-Versionen – ersparen (Datei replay.c im wbPlay-Modul):<br />

GraphicsImportComponent gi;<br />

PicHandle picHand;<br />

Rect natRect;<br />

FSSpec spec;<br />

GetGraphicsImporterForFile(&spec, &gi);<br />

GraphicsImportGetAsPicture(gi, &picHand);<br />

GraphicsImportGetNaturalBounds(gi, &natRect);<br />

CloseComponent(gi);<br />

Mit wenigen Programmzeilen erhält man so eine handle (Zeiger auf einen Zeiger)<br />

auf das jeweilige Bild. Vorausgesetzt werden muß jedoch, daß auf dem Computer<br />

des Benutzers Quicktime 3.0 installiert ist. Das sollte jedoch keinen Nachteil<br />

darstellen, da diese neueste Quicktime-Erweiterung auf dem Internet frei<br />

zugänglich ist. Ein Vorteil der Quicktime-Funktionen ist ihre Fähigkeit, zahlreiche<br />

Bildformate zu akzeptieren. Unterstützt werden: GIF, TIFF, JFIF/JPEG,<br />

SiliconGraphics, PICT, QTIF, BMP, PNG, Targa, MacPaint, Photoshop.<br />

4.4.8 Zeichenkommandos<br />

35


Die Übersetzung der Windows-Zeichenkommandos für das Whiteboard stellte kein<br />

großes Problem dar. Sie ähneln weitgehend denen des Macintoshs. Größere<br />

Änderungen im Code mußten hauptsächlich beim Anzeigen der Bitmaps (Folien)<br />

vorgenommen werden (siehe vorheriger Abschnitt).<br />

4.4.9 Flackerfreies Zeichnen<br />

Flackern findet immer dann statt, wenn ein bereits auf dem Bildschirm<br />

existierendes Objekt zusammen mit seinem Hintergrund neu gezeichnet wird.<br />

Dadurch, daß zuerst der Hintergrund gezeichnet wird (z.B. weiß), wird das alte<br />

Objekt auf dem Bildschirm kurz ”gelöscht”, bevor es neu auf den Hintergrund<br />

gezeichnet wird. Durch dieses kurze ”Löschen” des Objektes entsteht ein Flackern.<br />

Dieses macht sich beim AOF-Viewer (Windows- und Sun-Version) vor allem im<br />

Zählwerk und bei sich schnell verändernden Objekten auf dem Whiteboard<br />

bemerkbar (z.B. beim freihändigen, langsamen Einkreisen von Objekten).<br />

Bei der Macintosh-Version wurde darauf geachtet, daß alle graphischen Objekte,<br />

die alle 1/16-Sekunde neu gezeichnet werden (also nach Abspielen eines<br />

Audioblocks), zuerst in einen “unsichtbaren” Bildschirm im Speicher gezeichnet<br />

werden und dann erst dieser Speicherbereich Pixel für Pixel auf den eigentlichen<br />

Bildschirm kopiert wird. Auf diese Weise wird das Flackern vermieden, da Pixel,<br />

die sich nicht verändern, nicht erst gelöscht und dann wieder neu gezeichnet<br />

werden. Für das Auge macht sich diese Verbesserung vor allem beim Betrachten<br />

des Zählwerks positiv bemerkbar.<br />

4.4.10 Öffnen eines AOF-Dokumentes<br />

Da Macintosh-Computer keine Kommandozeilentechnik kennen, mit deren Hilfe<br />

dem Programm (aofSync-Modul) direkt beim Start Daten übergeben werden<br />

können - also Standort und Name der zu öffnenden AOF-Datei - , wurde das<br />

Öffnen eines AOF-Dokumentes in der Macintosh-Version mittels Menüs<br />

implementiert.<br />

36


Nach dem Starten des aofSync-Moduls kann der Benutzer durch den “Open”-Befehl<br />

im “File”-Menü ein AOF-Dokument öffnen. Siehe hierzu den Abschnitt ”Menüs”<br />

später in diesem Kapitel.<br />

4.4.11 Ladevorgang<br />

Die Zeit, die benötigt wird, um ein AOF-Dokument zu laden, wird hauptsächlich<br />

durch die Anzahl der vorkommenden Bilder (Folien) bestimmt. Ihre Umwandlung<br />

in Bitmaps kostet Zeit. Dieser Ladevorgang wird vom wbPlay-Modul veranlaßt, das<br />

nach seinem Start anhand der eingelesenen Objectlist und Eventqueue eine interne<br />

Objekt- und Ereignisliste anlegt.<br />

Wie im vorherigen Kapitel bereits erwähnt, wird dieses Laden bei der Unix- und<br />

der Windows-Version durch Ladevorgangsfenster illustriert, die<br />

programmtechnisch eigenständige Anwendungen sind.<br />

Auf eigenständige Anwendungen wurde bei der Macintosh-Version verzichtet und<br />

die Ladevorgangsfenster als Teil des wbPlay-Moduls implementiert (siehe Dateien<br />

prog.c und prog.h im wbPlay-Modul). Grund dafür war die Tatsache, daß<br />

Ladevorgänge, wenn sie einen eigenständigen Prozeß darstellen, in den<br />

Hintergrund geklickt werden können. Der gesamte Ladevorgang des wbPlay ist<br />

jedoch programmtechnisch kein eigenständiger Prozeß, sondern Teil des wbPlay-<br />

Programmprozesses. Schließlich wird während dem Laden der Eventloop der<br />

wbPlay-Anwendung nur einmal durchlaufen (deshalb kann das Laden auch nicht<br />

abgebrochen werden). Dieser Tatsache sollte dadurch Rechnung getragen werden,<br />

daß die Ladevorgangsfenster bei der Macintosh-Version fest im Vordergrund, über<br />

dem wbPlay-Fenster angezeigt werden, keine eigenständige Anwendung darstellen<br />

und auch keinen Abbruch(“Cancel”)-Knopf besitzen.<br />

Hier sind für zukünftige Viewer-Versionen Verbesserungsmöglichkeiten<br />

vorhanden, da Ladeprozesse der Sicherheit wegen immer abbrechbar sein sollten,<br />

z.B. im Falle nichtausreichenden Speicherplatzes.<br />

37


4.4.12 Steuerung von Animationen durch das appPlay-Modul<br />

Wie weiter oben schon ausgeführt startet das appPlay-Modul im Unix-Viewer zu<br />

entsprechenden Zeitpunkten beliebige Anwendungen. Dies geschieht, indem Shell-<br />

Skripte ausgeführt werden. In diesen Skripten (Dateien, die meistens nur aus einer<br />

Zeile bestehen) stehen Pfad und Name der Anwendung, die gestartet werden soll,<br />

sowie das von dieser Anwendung zu öffnende Dokument. Bsp.:<br />

/usr/local/mpeg2play /usr/local/movie01.mpg<br />

Für die Macintosh-Version des AOF-Viewers wurde in Abstimmung mit den<br />

Betreuern der anderen Plattformen beschlossen, die Skripte beizubehalten, auch<br />

wenn der Macintosh-Computer damit direkt keine Anwendung starten kann.<br />

Stattdessen wird, nach dem Einlesen des Skripts, der Name der Anwendung durch<br />

eine Mapping-Tabelle auf die signature einer entsprechenden Anwendung auf dem<br />

Macintosh abgebildet. Ist der Name der Anwendung im Skript z.B. “mpeg2play”<br />

(der MPEG-Player auf Unix-Plattformen), wird beim Macintosh der<br />

“AppleMoviePlayer” gestartet.<br />

Diese Tabelle, in der Namen von Unix-Anwendungen auf Macintosh-<br />

Anwendungen (genauer gesagt: deren signatures) abgebildet werden, befindet sich<br />

in der Resourcefork der appPlay-Programmdatei. Damit wird ein zukünftiges<br />

Hinzufügen von weiteren Anwendungen und deren Namen ohne Änderungen am<br />

Quellcode ermöglicht. Es wurde eine weitere Funktion implementiert, die, falls der<br />

Anwendungsname unbekannt ist, die Endung (Extension) des Dokumentnamens<br />

(z.B. ‘.mpg’) mit Hilfe einer weiteren Tabelle auf eine passende Anwendung<br />

abzubilden versucht.<br />

Ist die signature der zu startenden Anwendung gefunden, wird nach ihr gesucht und<br />

die Anwendung gestartet. Danach wird ihr ein OpenDocument-Kommando mit dem<br />

Dateinamen des zu öffnenden Dokuments geschickt (Funktion ‘startApp’ in<br />

window.c im appPlay-Modul).<br />

Als nicht unerheblicher Nachteil erwies sich die Tatsache, daß der Apple-Movie-<br />

Player nach dem Öffnen eines Filmdokuments dieses nicht automatisch startet und<br />

ihm dies auch nicht durch Nachrichten mitgeteilt werden kann. Der Benutzer muß<br />

38


manuell auf den Startknopf am unteren Fensterrand klicken. Man könnte<br />

argumentieren, daß ein erfahrener Macintosh-Benutzer wissen sollte, was es zu tun<br />

gilt, wenn der Movie-Player das Anfangsbild eines Films zeigt (nämlich ihn<br />

starten). Trotzdem ist das nicht komfortabel, wenn zu viele Filme in einer<br />

Vorlesung vorkommen.<br />

Applescript würde sich normalerweise in diesem Fall anbieten. Mit dieser Sprache<br />

können (bestimmte) Anwendungen auf Makroebene gesteuert werden. Jedoch ist<br />

der Apple-Movie-Player bis jetzt noch nicht durch applescript steuerbar. Als<br />

Abhilfe wurde ein eigener, selbst programmierter Movie-Player getestet. Hier störte<br />

jedoch ein bekannter und von Macintosh-Benutzern schon öfters monierter Fehler<br />

in Quicktime, der zur Folge hat, daß MPEG-Filme nur mit Tonspur gespielt werden<br />

können. Leider haben die bisher bei AOF-Vorlesungen benutzten Filme MPEG-<br />

Format, aber keine Tonspur.<br />

4.4.13 Schriftsatz-Problem<br />

Das Schriftsatz(Font)-Problem ist ein grundsätzliches Problem bei Portierungen<br />

von Anwendungen, die Schrift benutzen. Es taucht schon bei Portierungen<br />

zwischen verschiedenen Unix-Plattformen auf. Das AOF-System benutzt<br />

bestimmte Schriftsätze (z.B. Courier, Times Helvetica, etc.). Jeder Computer<br />

benutzt aber seine eigenen graphischen Darstellungen dieser Schriftsätze, d.h.<br />

andere Bitmaps für die Buchstaben. Breite und Höhe der Buchstaben können sich<br />

auf verschiedenen Plattformen unterscheiden. Eventuell vorgenommene<br />

Skalierungen, die notwendig sind, wenn ein Schriftsatz nicht in der gewünschten<br />

Größe als Bitmap auf dem System vorliegt, können ebenfalls von System zu<br />

System variieren. Das kann sich störend bemerkbar machen, wenn Text mit<br />

anderen graphischen Elementen gekoppelt ist, z.B. eingerahmt, oder unterstrichen.<br />

Hier kann es in ungünstigen Fällen passieren, daß der Text im Viewer seine<br />

Einrahmung durchbricht, an der falschen Stelle steht oder anderen Text überlappt.<br />

Das Problem taucht nur in Vorlesungen auf, in denen die Folien hauptsächlich mit<br />

dem Whiteboard erstellt worden sind.<br />

39


Das Schriftsatz-Problem wurde bisher für keine Plattform gelöst. Lösungen gäbe es<br />

jedoch. Z.B. könnte man festlegen, nur “True-Type-Fonts” zu verwenden. Diese<br />

Schriftsätze enthalten keine Bitmaps für die graphische Darstellung der<br />

Buchstaben, sondern Berechnungsregeln für deren Proportionen. Auf diese Weise<br />

sehen in allen Schriftgrößen und auf allen Plattformen die Buchstaben gleich aus.<br />

Die True-Type-Fonts müßten dann im Viewer-Code enthalten sein. Diese Lösung<br />

wäre wohl elegant und auf dem Macintosh zudem leicht zu implementieren. Sie<br />

kann jedoch nur in Abstimmung mit dem Whiteboard geschehen, dessen<br />

Entwickler zur Zeit aber noch eine neue Benutzeroberfläche (mit eventuell neuen<br />

Schriftsätzen) abwarten.<br />

Eine weitere Lösung wäre, für Texte mehr oder weniger genaue Informationen<br />

bezüglich der Position der einzelnen Buchstaben auf dem Whiteboard<br />

bereitzustellen. Das liefe auf eine Darstellung von Text durch einzelne Char-<br />

Zeichen heraus (die ja einen x- und y-Wert haben), wäre ziemlich aufwendig und<br />

speicherplatzintensiv.<br />

Ein Schritt in diese Richtung wurde schon gemacht, indem man Text (in der<br />

Objectlist) in einzelne Textitems aufgeteilt hat, die sich nicht überlappen dürfen. In<br />

der Praxis führt dies bereits zu recht guten Erscheinungsbildern.<br />

4.4.14 Zeichensatz<br />

Macintosh-Computer benutzen einen anderen Zeichensatz als Unix- und Windows-<br />

Rechner. Die ASCII-Zeichen sind zwar gleich (Codierung 1 bis 127), der restliche<br />

Bereich, in dem z.B. auch die deutschen Umlaute liegen, wird jedoch anders<br />

codiert. Da die meisten aufgenommenen Vorlesungen bisher deutsch sind, mußte<br />

hier Abhilfe durch eine Tabelle geschaffen werden, mit deren Hilfe die<br />

Codierungen der Zeichen auf die entsprechenden Werte des Macintoshs gesetzt<br />

werden (Datei “encoding.c” im wbPlay-Modul). Selbst für Zeilenwechsel benutzt<br />

Macintosh (beim Schreiben) andere Codierungen, nämlich “\r” statt “\n” auf Unixund<br />

Windows-Plattformen.<br />

Bei einer zukünftigen internationalen Benutzung der AOF-Software wäre ein<br />

Zusatz in der AOF-Datei angebracht, der den benutzten Zeichensatz angibt (z.B.<br />

40


ISO 8859-x, MacOSRoman, ISO 646,...) und eine eindeutige Darstellung der<br />

Zeichen erlaubt.<br />

4.4.15 Bildschirmgröße<br />

Das Whiteboard ist in einer Größe entworfen worden, die man nur auf einem relativ<br />

großen 1280 x 1024 Pixel-Bildschirm ausnutzen kann. Hat der Benutzer des<br />

Viewers einen kleineren Bildschirm, kann es passieren, daß bestimmte<br />

Whiteboardaktionen einfach abgeschnitten werden. Ein Hin- und Herscrollen<br />

während dem Betrachten eines Vortrags wäre hier auch keine Lösung.<br />

In die wbPlay-Version des Macintosh-Viewers wurde daher eine Abfrage nach der<br />

Bildschirmgröße eingebaut, die alle Zeichenobjekte und auch die Bitmaps der<br />

Bilder schon beim Einlesen auf eine passende Größe skaliert, so daß der gesamte<br />

Whiteboardinhalt auf den jeweiligen Bildschirm paßt.<br />

4.5 Macintosh-Besonderheiten<br />

4.5.1 Dateien<br />

Eine wichtige Macintosh-Eigenheit ist mit Sicherheit der Aufbau seiner Dateien. So<br />

besteht jede Datei beim Macintosh aus zwei Gabeln (”forks”), der Resourcefork<br />

und der Datafork. Wichtigste Fork ist die Datafork, in der die Daten von sowohl<br />

Dokument- wie auch Programmdateien abgelegt werden. Der Resourcefork kommt<br />

eine besondere Aufgabe zu. In ihr werden, sofern es sich um eine Programmdatei<br />

handelt, globale Konstanten, Textstrings, Icons, Fensterbreiten und -höhen, Menüs,<br />

Menütexte, Dialogfensteraufbau und -texte, also alles, was das äußere<br />

Erscheinungsbild der Anwendung bestimmt, abgelegt. So kann der Benutzer mit<br />

einem entsprechenden Werkzeug (z.B. mit dem frei erhältlichen Programm<br />

ResEdit) alle in der Anwendung vorkommenden Texte von Dialog-, Alarm- und<br />

auch normalen Fenstern in seine Muttersprache übersetzen oder Icons durch andere<br />

ersetzen. Das alles ist ohne Zugang zum eigentlichen Programmcode möglich (der<br />

kompiliert in der Datafork liegt). Dieses benutzerfreundliche Prinzip wurde<br />

versucht einzuhalten und demnach alle der oben erwähnten globalen Konstanten in<br />

der Resourcefork gespeichert.<br />

41


4.5.2 Icons<br />

In der graphischen Macintosh-Benutzeroberfläche spielen Icons eine wichtige<br />

Rolle. Icons repräsentieren sowohl Anwendungen wie auch Dokumente. Für die im<br />

AOF-Viewer vorkommenden drei Anwendungen (aofSync, wbPlay und appPlay)<br />

wurde beim Entwurf der Icons auf das dreifarbige AOF-Logo zurückgegriffen.<br />

Bild 8: AOF-Icons<br />

Alle mit Icons verbundenen Funktionen werden beim Macintosh-Viewer<br />

unterstützt:<br />

Doppelklick auf das Icon startet die jeweilige Anwendung (auch wbPlay und<br />

appPlay, die zwar nur Helferanwendungen sind und in diesem Fall nur ein graues<br />

Fenster mit der Andeutung einer Skala zeigen).<br />

Doppelklick auf ein AOF-Dokument-Icon mit der Endung ”.aof” startet<br />

automatisch die aofSync-Anwendung (die das Dokument öffnet und die Helfer<br />

startet), genauso als wäre das Dokument über den Open-File-Dialog der bereits<br />

gestarteten aofSync-Anwendung geöffnet worden. Diese Funktion (Doppelklick auf<br />

Dokument-Icon) setzt jedoch die richtige ”Creator”-Eintragung in der<br />

Dokumentdatei voraus. Der Creator-Code ist ein vierstelliger Buchstabencode in<br />

der Resourcefork jeder Macintoshdatei, der ihr eine Anwendung zuordnet, von der<br />

sie geöffnet werden kann. Hier muß die Anwendungssignature der aofSync-<br />

Anwendung eingetragen sein. Dies kann vor der Bereitstellung von AOF-<br />

Dokumenten für den Macintosh-Viewer leicht bewerkstelligt werden.<br />

Gleichsam können AOF-Dokumente - auch ohne Creator-Code - jederzeit geöffnet<br />

werden, indem das angeklickte Dokument-Icon über das aofSync-Icon gezogen<br />

wird.<br />

Alle erwähnten Icon-Funktionen arbeiten über die oben bereits erwähnten Apple-<br />

Events, die von den Anwendungen unterstützt werden (siehe Abschnitt<br />

”Kommunikation zwischen den Modulen” am Anfang dieses Kapitels). Z.B. wird<br />

42


eim Doppelklick auf ein AOF-Dokument-Icon automatisch die aofSync-<br />

Anwendung gestartet und dieser dann ein OpenDocument-Apple-Event geschickt,<br />

zusammen mit einem FSSpec des Dokuments.<br />

4.5.3 Menüs<br />

Zur graphischen Benutzeroberfläche des Apple Macintosh gehören Menüs. Der<br />

Menübalken ist dabei nicht, wie im Windows- und Unix-Betriebssystem, Teil eines<br />

Fensters, sondern befindet sich immer am oberen Bildschirmrand. Je nachdem,<br />

welches Programm gerade aktiv ist und welche Menüs es beinhaltet, verändert sich<br />

dieser zentrale Menübalken.<br />

Apple empfiehlt Entwicklern, in ihren Anwendungen mindestens das ”File”-Menü<br />

zu unterstützen, mit den Befehlen ”Open”, ”Close”, und ”Quit”.<br />

Das Menü-Prinzip sollte auch für den AOF-Viewer verwirklicht werden.<br />

So wird bei der aofSync Anwendung durch Wählen von ”Open” im File-Menü ein<br />

Standard-Dialogfenster zum Öffnen von Dateien geöffnet, durch das dann durch<br />

Navigation im Dateisystem ein AOF-Dokument ausgewählt und geöffnet werden<br />

kann.<br />

Das Schließen eines AOF-Dokuments (und das dadurch mögliche anschließende<br />

Öffnen eines anderen Dokuments) konnte leider nicht implementiert werden, da die<br />

dynamische Speicherallokation und -deallokation für den Aufbau der verketteten<br />

Listen im wbPlay-Modul Probleme bereitete. Zudem ist der Code des AOF-<br />

Viewers (Unix- und Windows-Version) auch eigentlich dafür ausgelegt, nur ein<br />

AOF-Dokument anzuzeigen und dann das Programm zu beenden. Grundsätzlich<br />

müßte das Schließen und Wiederöffnen von Dokumenten durch<br />

Codeverbesserungen jedoch noch realisierbar sein.<br />

Der “Quit”-Befehl im File-Menü beendet die Anwendung (der “Quit”-Knopf im<br />

unteren rechten Teil des aofSync-Fensters bewirkt das gleiche). Eventuell offene<br />

Helfer-Module werden durch Senden von entsprechenden Apple-Events ebenfalls<br />

geschlossen. Nach strenger Apple-Philosophie dürfte innerhalb des Fensters jedoch<br />

kein Quit-Knopf vorhanden sein - Anwendungen sollten nur durch den “Quit”-<br />

Befehl im File-Menü beendet werden.<br />

43


Bei den Helfer-Anwendungen wurden die “Open” - und “Close”-Befehle im File-<br />

Menü einfach zum Öffnen und Schließen der Fenster ausgelegt (das Schließen<br />

eines Fensters kann auch durch Anklicken eines speziellen Knopfes im oberen<br />

Fensterrahmen bewirkt werden).<br />

In einer verbesserten Version des Macintosh-AOF-Viewers wären noch andere<br />

Menüpunkte denkbar, wie z.B. das Umstellen von Stereo auf Mono oder das<br />

Ausschalten des wbPlay-Moduls schon vor dem Öffnen eines Dokuments, wie es<br />

auch bei der Unix-Version durch entsprechende Kommandos in der<br />

Kommandozeile möglich ist.<br />

44


4.6 Vorteile der Macintosh-Version<br />

Nach der Portierung des AOF-Viewers an das Macintosh-Betriebssystem können<br />

einige Verbesserungen gegenüber der Unix- und Windows-Version bemerkt<br />

werden:<br />

4.6.1 Graphik<br />

Vorteile der Macintosh-Graphik sind das Ausmerzen des Flackerns beim Zählwerk<br />

sowie bei den Whiteboard-Zeichenkommandos. Desweiteren ist durch eine<br />

Berücksichtigung der Bildschirmgröße sichergestellt, daß der gesamte<br />

Whiteboardinhalt dargestellt wird.<br />

4.6.2 Menüs<br />

Eine Erweiterung der Benutzerfreundlichkeit stellen die Menübefehle dar.<br />

In einer verbesserten Version müßte aber auf jeden Fall noch die Möglichkeit<br />

implementiert werden, ein AOF-Dokument wieder schließen zu können, ohne die<br />

Anwendung zu beenden (“Close”-Befehl). In diesem Fall müßten an die Helfer-<br />

Module (wbPlay und appPlay) entweder entsprechende Nachrichten geschickt<br />

werden (die den Abbau der für das offene Dokument aufgebauten Datenstruktur<br />

veranlassen) oder die Helfer-Anwendungen müßten beim Schließen eines<br />

Dokumentes einfach beendet und beim Öffnen eines neuen Dokuments neu<br />

gestartet werden.<br />

4.6.3 Icons<br />

Die oben bereits erwähnten Eigenschaften von Icons in Macintosh-Anwendungen<br />

stellen eine weitere Annehmlichkeit in der Bedienung des Macintosh-AOF-Viewers<br />

dar.<br />

4.7 Nachteile der Macintosh-Version<br />

45


Es ist bisher nicht möglich, den Apple-Movie-Player zu starten, ohne daß der<br />

Benutzer noch den Start-Knopf drücken müßte, damit der Film läuft. Falls Apple in<br />

Zukunft den Movie-Player modifiziert, d.h. zugänglich für applescript macht, wäre<br />

dieser Nachteil jedoch beseitigt.<br />

Die vom appPlay-Modul abzuspielenden Animationen waren bisher für die meisten<br />

aufgenommenen Vorlesungen (”<strong>Algorithmen</strong> und Datestrukturen”) Tango-<br />

Animationen. Tango ist eine spezielle Software zur graphischen Darstellung von<br />

<strong>Algorithmen</strong>. Die Tango-Software (shareware bereitgestellt vom Georgia Institut of<br />

Technology [StJ92]) existiert jedoch nur für Unix und Windows-Plattformen. Um<br />

die Animationen auf dem Macintosh abspielen zu können, müssen sie erst in<br />

Quicktime- oder MPEG-Filme konvertiert werden, so daß das appPlay-Modul dann<br />

an den entsprechenden Stellen den Apple-Movie-Player startet, um die Filme zu<br />

zeigen. Da jedoch - zumindest am Institut für Informatik an der Universität<br />

Freiburg - alle benutzten Animationen schon in MPEG-Filme konvertiert wurden,<br />

fällt dieses Manko nicht so stark ins Gewicht.<br />

Die Unix- und Windows-Viewer können mittlerweile schon direkt vom HTML-<br />

Browser Netscape aus gestartet werden. In den HTML-Seiten können bestimmte<br />

Stellen in Vorträgen angeklickt werden. Der Viewer wird dann gestartet und springt<br />

zur entsprechenden Stelle in der Vorlesung. Eine vorherige lokale Installation des<br />

Viewers ist erforderlich.<br />

Bei der Macintosh-Version steht die Verbindung mit Netscape noch aus, bietet sich<br />

aber für die nahe Zukunft an.<br />

46


5 Beurteilung der portierten Version<br />

Die Macintosh-Version des AOF-Viewers ist mit Sicherheit ein Schritt in Richtung<br />

einer weiteren Verbreitung der AOF-Software. Bei dieser neuesten Version des<br />

Viewers wurden, auch im Hinblick auf die relativ komfortable graphische<br />

Benutzeroberfläche des Apple Macintoshs, einige kleine Verbesserungen erzielt. Es<br />

wurde bei der Portierung darauf geachtet, auf Macintosh-Eigenheiten und -Stil<br />

Rücksicht zu nehmen.<br />

Von Vorteil sind bei der Macintosh-Version die etwas größere<br />

Benutzerfreunlichkeit. Die graphischen Verbesserungen sind angenehm, sollten<br />

aber auch bei den anderen Plattformen jederzeit ohne allzu großen Aufwand noch<br />

realisierbar sein.<br />

Die Geschwindigkeit der Macintosh-Version z.B. beim Öffnen eines Dokuments<br />

(Laden der Bilder) ist jener der anderen Plattformen ebenbürtig. Es zeigt sich, daß<br />

der Macintosh, auch mit dem älteren Betriebssystem 7.x, keinesfalls zu langsam für<br />

die Anforderungen des AOF-Viewers ist.<br />

Im Code konnten durch den Einsatz von Quicktime-Funktionen einige<br />

Vereinfachungen erzielt werden, die auch auf der Windows-Plattform noch zum<br />

Einsatz kommen könnten.<br />

47


6 Literaturverzeichnis<br />

[MO99] Müller R., Ottmann Th. : “The ‘Authoring on the Fly’ System for<br />

Automated Recording and Replay of (Tele)presentations”; accepted<br />

for<br />

Special Issue on "Multimedia Authoring and Presentation<br />

Techniques";<br />

ACM/Springer Multimedia Systems Journal; to appear 1999<br />

[BMO97] Bacher, Ch.; Müller, R; Ottmann, T. :” Ein Weg zur Integration von<br />

Live-Vorlesung, Teleteaching und Lehrsoftwareproduktion”;<br />

Proceedings Mediengestützte wissenschaftliche Weiterbildung;<br />

Braunschweig; 1997<br />

[BMOW97] Bacher, Ch.; Müller, R; Ottmann, T.; Will, M. :” Authoring on the<br />

Fly, A new way of integrating telepresentation and courseware<br />

production”; Proceedings ICCE ‘97; Kuching, Sarawak, Malaysia;<br />

1997<br />

[BaM98] Bacher, Ch.; Müller, R: ”Generalized Replay of Multi-<br />

Streamed<br />

Authored Documents”; Proceedings of ED-MEDIA ‘98; Freiburg;<br />

1998<br />

[MaG96] Maass, Gabriela: ”Editor für Multimedia-Dokumente”; Diplomarbeit;<br />

Institut für Informatik; Universität Freiburg; 1996<br />

[ErH94] Erikson, H.: ”Mbone: The multicast backbone”; ACM<br />

Communications; 37:54-60; 8 1994<br />

[IM91] Apple Computer Inc. (Hrsg.): ”Inside Macintosh”, Band I-VI;<br />

Reading, Mas.; 1987-91<br />

[IMT92] Apple Computer Inc. (Hrsg.): ”Inside Macintosh, Macintosh Toolbox<br />

Essentials”; Reading, Mas.; 1992<br />

[IMF92] Apple Computer Inc. (Hrsg.): ”Inside Macintosh, Files”; Reading,<br />

Mas.; 1992<br />

48


[Ma92] Mark, Dave: ”Macintosh C Programming Primer”; Reading, Mas.;<br />

1992<br />

[Al90] Allen, Daniel K.: ”On Macintosh Programming: Advanced<br />

Techniques”; Reading, Mas.; 1990<br />

[Kn87] Knaster, Scott: ”Macintosh Programming Secrets”; Reading, Mas.;<br />

1987<br />

[StJ92] Stasko, J.T.: ”Animating Algorithms with XTango”; SIGACT News,<br />

Vol.23, No.2; 1992<br />

[BrM91] Brown, M.H. : ”Zeus: A System for Algorithm Animation Multi-<br />

View<br />

Editing.”; IEEE Workshop on Visual Languages; 1991<br />

[AmW] http://cafe.ambrosiasw.com/macintosh-c<br />

[VirW] http://ad.informatik.uni-freiburg.de/viror.project.description<br />

[ApW] http://www.apple.com<br />

[MeW] http://www.metrowerks.com<br />

[StJW] Stasko, J.H. : ”Polka Animation System”;<br />

http://www.cc.gatech.edu/gvu/softviz/parviz/polka.html<br />

49


Ich versichere hiermit wahrheitsgemäß, die Arbeit bis auf die dem Aufgabensteller<br />

bereits bekannte Hilfe selbständig angefertigt, alle benutzten Hilfsmittel vollständig<br />

und genau angegeben und alles kenntlich gemacht zu haben, was aus Arbeiten<br />

anderer unverändert oder mit Abänderungen entnommen wurde.<br />

50


7 Anhang<br />

51

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!