Kurzübersicht für das Toy-Window-System
Struktur toy-geometry
(make-point x y) => point
- stellt einen Wert her, der einen Punkt oder einen Vektor
repräsentiert.
Der Ursprung ist dabei in der oberen linken Ecke, die
Y-Achse wächst nach unten
(point+ point1
point2) => point
- addiert zwei Punkte koordinatenweise.
(point+ point1
point2) => point
- subtrahiert zwei Punkte koordinatenweise.
(point<? point1 point2) =>
boolean
- vergleicht zwei Punkte koordinatenweise.
(make-rectangle x y
width height) => rectangle
- stellt einen Wert her, der ein Rechteck repräsentiert.
(rectangle-origin rectangle) => point
- liefert den Ursprungs des Rechteck.
(rectangle-x rectangle) => int
- liefert die X-Koordinate des Ursprungs des Rechtecks.
(rectangle-y rectangle) => int
- liefert die Y-Koordinate des Ursprungs des Rechtecks.
(rectangle-width rectangle) => int
- liefert die Breite des Rechtecks.
(rectangle-height rectangle) => int
- liefert die Höhe des Rechtecks.
(point-in-rectangle? point
rectangle) => boolean
- testet, ob ein Punkt innerhalb eines Rechtecks liegt.
(rectangle+ rectangle point) => rectangle
- liefert ein Rechteck, das gegenüber rectangle um
point verschoben ist.
(rectangle- rectangle point) => rectangle
- liefert ein Rechteck, das gegenüber rectangle um
-point verschoben ist.
(rectangle-within rectangle1
rectangle2) => rectangle
- liefert ein Rechteck der Größe von rectangle2,
das ggf. verschoben ist, um so gut wie möglich innerhalb von
rectangle1 zu passen.
Struktur toy-display-system
Bitmaps
Die Mal-Prozeduren nehmen jeweils ein
raster-op-Argument. Dies kann eins der Symbole
copy, xor, or,
and, clear und set sein,
womit jeweils eine logische Verknüpfung zwischen Quelle (bei den
einfach Mal-Prozeduren 1) und Ziel gemeint ist
(make-bitmap bitmap rectangle)
=> bitmap
- erzeugt eine neue Bitmap auf dem Schirm, die ein Kind von
bitmap ist und sich im Rechteck Rechteck
(relativ zu bitmap) befindet. Die Bitmap ist dabei
zunächst unter den Kindern von bitmap (den
"Geschwistern") ganz vorn.
(bitmap-to-front! bitmap)
- rückt bitmap unter den Geschwistern ganz nach
vorn.
(bitmap-to-back! bitmap)
- rückt bitmap unter den Geschwistern ganz nach
hinten.
(bitmap-move! bitmap point)
- verschiebt bitmap (relativ) um
point.
(bitmap-delete! bitmap)
- löscht die Bitmap bitmap.
(bitmap-clear bitmap)
- löscht den Inhalt von bitmap.
(bitmap-draw-line bitmap
raster-op point1
point2)
- zeichnet eine Linie von point1 nach
point2.
(bitmap-draw-rectangle bitmap
raster-op rectangle)
- zeichnet ein Rechteck, das gegenüber rectangle
nach rechts und unten um einen Punkt größer ist.
(bitmap-fill-rectangle bitmap
raster-op texture rectangle)
- füllt ein Rechteck der Größe von rectangle
mit der Textur texture. Die (für den Moment)
einzig sinnvolle Textur ist
texture-solid.
(bitmap-bitblt bitmap1 raster-op
point1 bitmap2
rectangle1)
- kopiert ein Rechteck aus bitmap2 der Größe von
rectangle1 nach bitmap2 an die Stelle
point1.
(bitmap-draw-text bitmap
raster-op point
text)
- malt den Text text an die Stelle
point. Dabei ist point links und auf
der Höhe der Basislinie.
(bitmap-text-size bitmap
text) => width height ascent
- ermittelt die Größe des Texts text. Dabei ist
ascent die Höhe des Texts oberhalb der
Basislinie.
Initialisierung
(make-display label width
height) => bitmap
mouse-channel
keyboard-channel
- initialisiert das Display-System, erzeugt ein X-Fenster der
Breite width und der Höhe height mit
Titel label und liefert eine Bitmap für das gesamte
Fenster sowie Kanäle für Maus- und Tastatur-Ereignisse zurück.
Maus-Messages
(mouse-message-up? message) =>
boolean
- stellt fest, ob der Mausknopf oben ist.
(mouse-message-down? message) => boolean
- stellt fest, ob der Mausknopf unten ist.
(mouse-message-position message) => point
- liefert die Position der Maus zurück.
(mouse-message-translate point message) => mouse-message
- transformiert die Positionskoordinaten von
message relativ zu point
Struktur toy-window-system
(make-widget-env bitmap
mouse-channel keyboard-channel
control-in-channel control-out-channel) =>
widget-env
- liefert ein Widget-Environment. Alle Kanäle bis auf
control-out-channel sind synchron, nur
control-out-channel ist asynchron.
(make-vanilla-widget-env
bitmap) => widget-env
- erzügt ein Widget-Environment mit frischen Kanälen.
(widget-env-bitmap widget-env) => bitmap
- liefert die Bitmap eines Widget-Environments.
(widget-env-mouse-channel widget-env) => channel
- liefert die Maus-Kanal eines Widget-Environments.
(widget-env-keyboard-channel widget-env) => channel
- liefert die Tastatur-Kanal eines Widget-Environments.
(widget-env-control-in--channel widget-env) => channel
- liefert den Kontroll-Eingangs-Kanal eines Widget-Environments.
(widget-env-control-out--channel widget-env) => async-channel
- liefert den Kontroll-Ausgangs-Kanal eines
Widget-Environments.
(make-channel-sink channel)
- stellt einen Abfluß für channel her, der alle
ankommenden Werte abholt und wegwirft.
(realize-widget bitmap rectangle
realization-proc => value
- erzeugt ein frisches Widget-Environment innerhalb der
Eltern-Bitmap bitmap an Position rectangle
und übergibt dieses an realization-proc. Dessen
Rückgabewert gibt auch
realize-widget
zurück.
(make-window-system label width
height) - initialisiert das
Window-System (ruft also
make-display auf), erzeugt
ein initiales Widget-Environment für das gesamte Fenster und
gibt dieses zurück.
Struktur toy-button
(make-button label thunk
widget-env) => widget-env
- stellt innerhalb von widget-env einen Knopf mit
Beschriftung label her; bei Betätigung wird
thunk aufgerufen.
Struktur toy-frame
(make-frame realize
widget-env) => frame value
- malt innerhalb von widget-env einen Rahmen um ein
anderes Widget, an das es alle Nachrichten weitergibt. Das
andere Widget muß von realize erzeugt werden, das als
Parameter ein eigenes Widget-Environment übergeben bekommt.
Zurückgegeben werden ein Wert, der das Frame repräsentiert,
sowie der Rückgabewert von realize.
Michael Sperber [Mr. Preprocessor]
Last modified: Wed Jun 19 09:49:46 MST 2002