Benny Kannengiesser - Lehrstuhl Algorithmen & Datenstrukturen ...
Benny Kannengiesser - Lehrstuhl Algorithmen & Datenstrukturen ...
Benny Kannengiesser - Lehrstuhl Algorithmen & Datenstrukturen ...
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