|##########| |#MAGIC #|CLABLMGF |#PROJECT #|"" |#PATHS #|"StdProject" |#FLAGS #|xx---x--x----xx----------------- |#USERSW #|-------------------------------- |#USERMASK#|-------------------------------- |#SWITCHES#|xx---xxxxx------ |##########| DEFINITION MODULE GfxScreen; (* 16.08.90 UlSi *) TYPE (*----------------------------------------------------------------------------* * Screen : Zugriff auf einen Intuition-Screen. * * * * Eine Screen ist ein virtueller Bildschirm, der unabhängig von anderen * * Screens bearbeitet werden kann. * *----------------------------------------------------------------------------*) Screen = DEFERRED POINTER BasicGfx.ScreenPtr; (*----------------------------------------------------------------------------* * ColorRGB : Farbkomponenten * * Color : Feld, das die Farbkomponenten einer Farbe enthält * * Palette : Zusammenfassung mehrerer Farben * *----------------------------------------------------------------------------*) ColorRGB = (red,green,blue); Color = ARRAY ColorRGB OF SHORTINT; Palette = ARRAY OF Color; CONST Black = Color:( 0, 0, 0); White = Color:(15,15,15); Red = Color:(15, 0, 0); Green = Color:( 0,15, 0); Blue = Color:( 0, 0,15); Cyan = Color:( 0,12,12); Purple = Color:(12, 0,12); Yellow = Color:(15,15, 0); (*---------------------------------------------------------------------------* * AUFGABE : Öffnet eine Screen mit den agegebenen Parametern * * PARAMETER : s => Zugriff auf den Screen * * depth <= Anzahl der Bitplanes der Screen, die Zahl der * * möglichen Farben der Screen ist 2^depth * * hires <= gibt an, daß die Screen hochauflösend ist * * lace <= schaltet Interlace ein * * BEMERKUNGEN : Kann die Screen nicht geöffnet werden, wird ein Laufzeit- * * fehler erzeugt. * *---------------------------------------------------------------------------*) PROCEDURE OpenScreen(VAR s : Screen;depth : INTEGER;hires,lace : BOOLEAN); (*---------------------------------------------------------------------------* * AUFGABE : Liefert die Höhe eines Screens * * PARAMETER : s => Zugriff auf den Screen * * <= Die Höhe des Screens * * BEMERKUNGEN : -- * *---------------------------------------------------------------------------*) PROCEDURE ScreenHeight(s : Screen):INTEGER; (*---------------------------------------------------------------------------* * AUFGABE : Schließt eine mit OpenScreen oder LoadScreen geladene * * Screen wieder. * * PARAMETER : s <> Zugriff auf den Screen * * BEMERKUNGEN : Auf die Screen darf danach nicht mehr zugegriffen werden * *---------------------------------------------------------------------------*) PROCEDURE CloseScreen(VAR s : Screen); (*---------------------------------------------------------------------------* * AUFGABE : Bringt die angegebene Screen in den Bildvordergrund * * PARAMETER : s <= Zugriff auf den Screen * * BEMERKUNGEN : -- * *---------------------------------------------------------------------------*) PROCEDURE ScreenToFront(s : Screen); (*---------------------------------------------------------------------------* * AUFGABE : Bringt die angegeben Screen in den Hintergrund * * PARAMETER : s <= Zugriff auf den Screen * * BEMERKUNGEN : -- * *---------------------------------------------------------------------------*) PROCEDURE ScreenToBack(s : Screen); (*---------------------------------------------------------------------------* * AUFGABE : Setzt die Angegebene Palette für die Screen * * PARAMETER : s <= Zugriff auf den Screen * * color <= Palette, die verwendet werden soll * * BEMERKUNGEN : Es werden soviele Farben gesetzt, wie in der Palette * * enthalten ist * *---------------------------------------------------------------------------*) GROUP ScreenGrp = Screen,OpenScreen,ScreenHeight,CloseScreen, ScreenToFront,ScreenToBack; PROCEDURE SetPalette(s : Screen;VAR color : Palette); (*---------------------------------------------------------------------------* * AUFGABE : Setzt einen Teil der Palette einer Screen neu * * PARAMETER : s <= Zugriff auf den Screen * * reg <= Farbe, ab der geändert werden soll * * color <= Palette, die verwendet wird * * BEMERKUNGEN : Es werden soviele Farben gesetzt, wie in der Palette * * vorhanden sind. * *---------------------------------------------------------------------------*) PROCEDURE SetPalettePart(s : Screen;reg : INTEGER;VAR color : Palette); (*---------------------------------------------------------------------------* * AUFGABE : Setzt eine Farbe der Screen neu * * PARAMETER : s <= Zugriff auf den Screen * * reg <= Farbe, die geändert wird * * color <= Farbkombination, die eingetragen wird * * BEMERKUNGEN : -- * *---------------------------------------------------------------------------*) PROCEDURE SetColor(s : Screen;reg : INTEGER;color : Color); (*---------------------------------------------------------------------------* * AUFGABE : Setzt eine Farbe der Screen in Komponenten neu * * PARAMETER : s <= Zugriff auf den Screen * * reg <= Farbe, die geändert wird * * red <= Rotanteil, * * green <= Grünanteil, * * blue <= Blauanteil der neuen Farbkombination * * BEMERKUNGEN : -- * *---------------------------------------------------------------------------*) PROCEDURE SetRGB(s : Screen;reg,red,green,blue : INTEGER); (*---------------------------------------------------------------------------* * AUFGABE : Holt die Farben einer Screen * * PARAMETER : s <= Zugriff auf den Screen * * color => Palette, in die die Farbwerte eingetragen werden * * BEMERKUNGEN : Es werden nur soviele Farben geholt, wie color Elemente * * enthält * *---------------------------------------------------------------------------*) PROCEDURE GetPalette(s : Screen;VAR color : Palette); (*---------------------------------------------------------------------------* * AUFGABE : Holt einen Ausschnitt der Screenfarben * * PARAMETER : s <= Zugriff auf den Screen * * reg <= Farbe, ab der geholt werden soll * * color => Palette, in die die Werte eingetragen werden * * BEMERKUNGEN : Es werden nur soviele Farben geholt, wie color Elemente * * enthält * *---------------------------------------------------------------------------*) PROCEDURE GetPalettePart(s : Screen;reg : INTEGER;VAR color : Palette); (*---------------------------------------------------------------------------* * AUFGABE : Holt eine Farbe einer Screen * * PARAMETER : s <= Zugriff auf den Screen * * reg <= Farbe, deren Werte geholt werden sollen * * => Farbwerte * * BEMERKUNGEN : -- * *---------------------------------------------------------------------------*) PROCEDURE GetColor(s : Screen;reg : INTEGER):Color; (*---------------------------------------------------------------------------* * AUFGABE : Holt eine Komponente einer Farbe der Screen * * PARAMETER : s <= Zugriff auf den Screen * * reg <= Farbnummer * * color <= Farbkomponente * * => Intensität der Komponente * * BEMERKUNGEN : -- * *---------------------------------------------------------------------------*) PROCEDURE GetRGB(s : Screen;reg : INTEGER;color : ColorRGB):INTEGER; (*---------------------------------------------------------------------------* * AUFGABE : Blendet einen Bildschirm von schwarz aus ein * * PARAMETER : s <= Zugriff auf den Screen * * color <= Palette, die die Screen nachher haben soll * * time <= Gesamtdauer der Einblendung * * BEMERKUNGEN : Die Zeit wird in 50tel Sekunden angegeben * *---------------------------------------------------------------------------*) GROUP ColorGrp = ColorRGB,Color,Palette,Black,White,Red,Green,Blue,Cyan,Purple, Yellow,SetPalette,SetPalettePart,SetColor,SetRGB,GetPalette, GetPalettePart,GetColor,GetRGB; PROCEDURE FadeIn(s : Screen;VAR color : Palette;time : INTEGER); (*---------------------------------------------------------------------------* * AUFGABE : Blendet eine Screen langsam nach schwarz aus * * PARAMETER : s <= Zugriff auf den Screen * * time <= Zeit, die der Vorgang dauern soll. * * BEMERKUNGEN : Die Zeit wird in 50tel Sekunden angegeben * *---------------------------------------------------------------------------*) PROCEDURE FadeOut(s : Screen;time : INTEGER); GROUP All = ScreenGrp,ColorGrp,FadeIn,FadeOut; END GfxScreen.