|##########| |#MAGIC #|CLABLMIL |#PROJECT #|"" |#PATHS #|"StdProject" |#FLAGS #|xx---x--x----xx----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|xx---xxxxx------ |##########| DEFINITION MODULE GfxShape; FROM GfxScreen IMPORT Screen; EXCEPTION NoShape : "File isn't a shape"; TYPE (*----------------------------------------------------------------------------* * Shape : Zugriff auf einen rechteckigen Bildausschnitt * *----------------------------------------------------------------------------*) Shape = HIDDEN; (*----------------------------------------------------------------------------* * AUFGABE : Holt einen Bildschirmausschnitt * * PARAMETER : s <= Zugriff auf den Screen * * shp => Zugriff auf das Shape * * x1,y1 <= Obere linke Ecke * * x2,y2 <= Untere rechte Ecke * * BEMERKUNGEN : Die Koordinaten werden evtl. getauscht * *----------------------------------------------------------------------------*) PROCEDURE GetShape( s : Screen; VAR shp : Shape; x1,y1, x2,y2 : INTEGER); (*----------------------------------------------------------------------------* * AUFGABE : Setzt ein Shape auf den Screen * * PARAMETER : s <= Zugriff auf den Screen * * shp <= Zugriff auf das Shape * * x,y <= Obere linke Ecke * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE PutShape(s : Screen; shp : Shape; x,y : INTEGER); (*----------------------------------------------------------------------------* * AUFGABE : Gibt den Speicher eines Shapes wieder frei * * PARAMETER : shp <> Zugriff auf das Shape * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE FreeShape(VAR shp : Shape); (*----------------------------------------------------------------------------* * AUFGABE : Lädt ein Shape * * PARAMETER : shp => Zugriff auf das Shape * * name <= Namen der Datei * * path <= Pfad der Datei * * BEMERKUNGEN : Die Speicherung erfolgt nicht in IFF * *----------------------------------------------------------------------------*) PROCEDURE LoadShape(VAR shp : Shape; REF path : STRING); (*----------------------------------------------------------------------------* * AUFGABE : Speichert ein Shape ab * * PARAMETER : shp <= Zugriff auf das Shape * * name <= Namen der Datei * * path <= Pfad der Datei * * BEMERKUNGEN : Die Speicherung erfolgt nicht in IFF * *----------------------------------------------------------------------------*) PROCEDURE SaveShape( shp : Shape; REF path : STRING); (*----------------------------------------------------------------------------* * AUFGABE : Erzeugt die Kopie eines Shapes, mit neuer Größe * * PARAMETER : sshp <= Quellshape * * dshp => Zielshape * * newx <= neue Breite * * newy <= neue Höhe * * BEMERKUNGEN : -- * *----------------------------------------------------------------------------*) PROCEDURE SizeShape( sshp : Shape; VAR dshp : Shape; newx, newy : INTEGER); (*----------------------------------------------------------------------------* * AUFGABE : wartet, bis der Kathodenstrahl den unteren Rand der Screen * * erreichnet hat * * PARAMETER : s <= Screen, auf die gewartet werden soll * * BEMERKUNGEN : sollte aufgerufen werden, bevor ein Shape gesetzt wird, * * damit kein Flackern auftritt * *----------------------------------------------------------------------------*) PROCEDURE Sync(s : Screen); GROUP All = Screen,Shape,GetShape,PutShape,FreeShape,LoadShape,SaveShape, Sync,SizeShape; END GfxShape.