===============================================================
Dokumentation des Moduls BackDrop V1.2    Bernd Preusing 5.5.89
===============================================================

Dies Modul dient dazu, auf möglichst simple Weise einen Screen
und ein Window zu öffnen.
Das Window ist vom Typ backDrop, borderless, smartRefresh ohne
IDCMPs und ist entweder so groß wie der ganze Screen oder 12
Zeilen kürzer, sodaß der Screen-Titel noch sichtbar ist.

Das Modul stellt zwei Prozeduren und drei Variablen zur Verfügung:

PROCEDURE OpenBackDrop(Depth, Width, Height:INTEGER; Title:ADDRES);
===================================================================
Öffnet einen Screen mit Depth Bitplanes in der Breite Width und der
Höhe Height oder Height+12.
Falls Title=NIL, dann ist das Window so groß wie der Screen und der
Menü-Balken ist nicht sichtbar, sonst ist das Window Height hoch
und der Screen Height+12.
Height gibt also die WINDOW-Höhe an, nicht die Screen-Höhe!
Falls Title <> NIL, wird es der Screen-Title.
Abhängig von der Screen-Größe wird automatisch hiRes und/oder
interlace aktiviert. Falls Depth=6 und NICHT hiRes, dann wird es
automatisch ein ExtraHalfbrite-Screen.
Falls Window oder Screen nicht geöffnet werden können, kommt ein
Arts.Assert.

Hiermit ist es möglich, beliebige Screen-Größen zu erzeugen, also
auch Overscan! Falls die Width <> 320 oder 640, wird der Screen
seitlich mittig gestellt. Falls Screenheight <> NormalScreenHeight
(256/512 bei PAL, 200/400 bei NTSC) mit einer Toleranz von +/-6 bzw.
+/-12 bei Interlace, wird der Screen vertikal mittig gestellt.
Es sollte aber darauf geachtet werden, daß Width ein Vielfaches von
16 ist, es ist zwar nicht unbedingt notwendig, aber ich habe das
Gefühl, die graphics.library mag es manchmal nicht anders.


PROCEDURE CloseBackDrop;
========================
CloseBackDrop schließt den Window und Screen wieder.
Diese Prozedur muß aber nicht aufgerufen werden, sie ist auch als
TermProcedure installiert.
Falls OpenBackDrop ein zweites mal mit anderen Parametern aufge-
rufen werden soll, MUSS vorher ein CloseBackDrop erfolgen!


VAR
   BdScreen: ScreenPtr;
   BdWindow: WindowPtr;
   BdRp: RastPortPtr; (* des Windows, also geclippt! *)

Auf diese Variablen kann nach OpenBackDrop beliebig zugegriffen
werden.

Fehler:
=======
Falls Over- oder Underscan aktiviert wurde, stimmen die Maus-
Koordinaten, die Intuition liefert, nicht mehr. Diese Werte
müssen mit BdScreen^.viewPort.dxOffset bzw. dyOffset korrigiert
werden.
Intuition mag solche Screens überhaupt nicht, ein Verschieben
sollte in diesem Fall durch Title=NIL unterbunden werden!

Ein HiRes-OverScan-Screen mit 4 BitPlanes wird nur bis zur View-
Koordinate 255 angezeigt, das ist meist Screen-Koordinate 200.
Dieser Fehler befindet sich in der Routine Graphics.MrgCop. Ich
bin ihm hart auf den Fersen (Sch..-'C'!).

Beispiel:
=========

FROM BackDrop IMPORT OpenBackDrop, BdWindow, BdRp;
...

BEGIN
  OpenBackDrop(3,640,256-12,ADR('I Hope, My Last Screen'));
  RectFill(BdRp,0,0,639,100);
  ....
  IF SetMenuStrip(BdWindow,MyMenu) THEN
    ModifyIDCMP(BdWindow,IDCMPFlagSet{menuPick});
    DoWhatYouWant;
    ClearMenuStrip(BdWindow); (* wichtig!! *)
  END (* CloseBackDrop kommt automatisch, ModifyIDCMP nicht nötig *)
END .
Weitere Anwendungen von BackDrop seht Ihr massenhaft in meinen
Programmen.
