ðSyntax10.Scn.FntSyntax10i.Scn.Fnt;Syntax10b.Scn.Fnt  A   < kÿ |+w ÙÂ ìÕ˜MODULE AmigaLayers; (* updated OJ 30 Apr 96 *) IMPORT SYSTEM, E:=AmigaExec, G:=AmigaGraphics; VAR layersBase -: E.LibraryPtr; layersVersion- : INTEGER; termEntry : E.TermEntry; dummy : LONGINT; CONST layersName*="layers.library"; layerSimple*=0; layerBackdrop*=6; PROCEDURE -ReturnD0 04EH,05EH, 04EH,075H; PROCEDURE BeginUpdate*(l:G.LayerPtr); BEGIN SYSTEM.PUTREG( 8, l ); SYSTEM.CALL( -78, layersBase ) END BeginUpdate; PROCEDURE CreateUpfrontLayer*( li:G.LayerInfoPtr; bm:G.BitMapPtr; x0:LONGINT; y0:LONGINT; x1:LONGINT; y1:LONGINT; flags:SET; superbm:G.BitMapPtr):G.LayerPtr; BEGIN SYSTEM.PUTREG( 8, li ); SYSTEM.PUTREG( 9, bm ); SYSTEM.PUTREG( 10, superbm ); SYSTEM.PUTREG( 0, x0 ); SYSTEM.PUTREG( 1, y0 ); SYSTEM.PUTREG( 2, x1 ); SYSTEM.PUTREG( 3, y1 ); SYSTEM.PUTREG( 4, flags ); SYSTEM.CALL( -36, layersBase ); ReturnD0 END CreateUpfrontLayer; PROCEDURE DeleteLayer*(layer:G.LayerPtr):BOOLEAN; BEGIN SYSTEM.PUTREG( 9, layer ); SYSTEM.CALL( -90, layersBase ); SYSTEM.GETREG( 0, dummy ); RETURN dummy#E.false END DeleteLayer; PROCEDURE DisposeLayerInfo*(li:G.LayerInfoPtr); BEGIN SYSTEM.PUTREG( 8, li ); SYSTEM.CALL( -150, layersBase ) END DisposeLayerInfo; PROCEDURE EndUpdate*(layer:G.LayerPtr; completed:BOOLEAN); BEGIN IF completed THEN SYSTEM.PUTREG( 0, E.true) ELSE SYSTEM.PUTREG( 0, E.false) END; SYSTEM.PUTREG( 8, layer ); SYSTEM.CALL( -84, layersBase ) END EndUpdate; PROCEDURE InstallClipRegion*(layer:G.LayerPtr; region:G.RegionPtr):G.RegionPtr; BEGIN SYSTEM.PUTREG( 8, layer ); SYSTEM.PUTREG( 9, region ); SYSTEM.CALL( -174, layersBase ); ReturnD0 END InstallClipRegion; PROCEDURE NewLayerInfo*():G.LayerInfoPtr; BEGIN SYSTEM.CALL( -144, layersBase ); ReturnD0 END NewLayerInfo; PROCEDURE Init; TYPE LibraryPtr = POINTER TO E.Library; VAR lib:LibraryPtr; BEGIN layersBase:=E.OpenLibrary(layersName,37); IF layersBase=0 THEN HALT(99) END; lib:=SYSTEM.VAL(LibraryPtr,layersBase); layersVersion:=lib.version END Init; PROCEDURE Term; BEGIN E.CloseLibrary( layersBase ) END Term; BEGIN Init; E.Register(termEntry, Term); END AmigaLayers.