
; Layers-Interface

   INCLUDE  "lvo/layers.i"

   XREF  _LayersBase





CREATE MACRO Name,Registermaske,Registeranzahl,Satz1,Anzahl1,Satz2,Anzahl2...

   IFD   \1
   XDEF  _\1

_\1
  IFEQ   \3-1        ; ein Register ?
   move.l   \2,-(SP)
  ELSE
   movem.l  \2,-(SP)
  ENDC

TIEFE SET   4+4*\3
  IFNC   '\4',''
   SATZ  \4,\5,\6,\7,\8,\9,\a,\b,\c,\d,\e,\f,\g,\h,\i,\j
  ENDC

   move.l   _LayersBase,a6
   jsr      _LVO\1(a6)
  IFEQ   \3-1        ; ein Register ?
   move.l   (SP)+,\2
  ELSE
   movem.l  (SP)+,\2
  ENDC
   rts

   ENDC

   ENDM





SATZ  MACRO Satz1,Anzahl1,Satz2,Anzahl2...
  IFEQ   \2-1        ; ein Register ?
   move.l   TIEFE(SP),\1
  ELSE
   movem.l  TIEFE(SP),\1
  ENDC
TIEFE SET   TIEFE+4*\2
  IFNC   '\3',''
   SATZ  \3,\4,\5,\6,\7,\8,\9,\a,\b,\c,\d,\e,\f,\g,\h,\i
  ENDC
   ENDM





; InitLayers(li)(A0)
   CREATE   InitLayers,a6,1,a0,1

; CreateUpfrontLayer(li,bm,x0,y0,x1,y1,flags,bm2)(A0/A1,D0/D1/D2/D3/D4,A2)
   CREATE   CreateUpfrontLayer,d2-d4/a2/a6,5,a0-a1,2,d0-d4/a2,6

; CreateBehindLayer(li,bm,x0,y0,x1,y1,flags,bm2)(A0/A1,D0/D1/D2/D3/D4,A2)
   CREATE   CreateBehindLayer,d2-d4/a2/a6,5,a0-a1,2,d0-d4/a2,6

; UpfrontLayer(li,layer)(A0/A1)
   CREATE   UpfrontLayer,a6,1,a0-a1,2

; BehindLayer(li,layer)(A0/A1)
   CREATE   BehindLayer,a6,1,a0-a1,2

; MoveLayer(li,layer,dx,dy)(A0/A1,D0/D1)
   CREATE   MoveLayer,a6,1,a0-a1,2,d0-d1,2

; SizeLayer(li,layer,dx,dy)(A0/A1,D0/D1)
   CREATE   SizeLayer,a6,1,a0-a1,2,d0-d1,2

; ScrollLayer(li,layer,dx,dy)(A0/A1,D0/D1)
   CREATE   ScrollLayer,a6,1,a0-a1,2,d0-d1,2

; BeginUpdate(layer)(A0)
   CREATE   BeginUpdate,a6,1,a0,1

; EndUpdate(layer,flag)(A0,d0)
   CREATE   EndUpdate,a6,1,a0,1,d0,1

; DeleteLayer(li,layer)(A0/A1)
   CREATE   DeleteLayer,a6,1,a0-a1,2

; LockLayer(li,layer)(A0/A1)
   CREATE   LockLayer,a6,1,a0-a1,2

; UnlockLayer(layer)(A0)
   CREATE   UnlockLayer,a6,1,a0,1

; LockLayers(li)(A0)
   CREATE   LockLayers,a6,1,a0,1

; UnlockLayers(li)(A0)
   CREATE   UnlockLayers,a6,1,a0,1

; LockLayerInfo(li)(A0)
   CREATE   LockLayerInfo,a6,1,a0,1

; SwapBitsRastPortClipRect(rp,cr)(A0/A1)
   CREATE   SwapBitsRastPortClipRect,a6,1,a0-a1,2

; WhichLayer(li,x,y)(a0,d0/d1)
   CREATE   WhichLayer,a6,1,a0,1,d0-d1,2

; UnlockLayerInfo(li)(A0)
   CREATE   UnlockLayerInfo,a6,1,a0,1

; NewLayerInfo()()
   CREATE   NewLayerInfo,a6,1

; DisposeLayerInfo(li)(a0)
   CREATE   DisposeLayerInfo,a6,1,a0,1

; FattenLayerInfo(li)(a0)
   CREATE   FattenLayerInfo,a6,1,a0,1

; ThinLayerInfo(li)(a0)
   CREATE   ThinLayerInfo,a6,1,a0,1

; MoveLayerInFrontOf(layer_to_move,layer_to_be_infront_of)(a0/a1)
   CREATE   MoveLayerInFrontOf,a6,1,a0-a1,2

; InstallClipRegion(layer,region)(a0/a1)
   CREATE   InstallClipRegion,a6,1,a0-a1,2





; Offsets

   IFD   OFFSETS

   XDEF  _LVOInitLayers
   XDEF  _LVOCreateUpfrontLayer
   XDEF  _LVOCreateBehindLayer
   XDEF  _LVOUpfrontLayer
   XDEF  _LVOBehindLayer
   XDEF  _LVOMoveLayer
   XDEF  _LVOSizeLayer
   XDEF  _LVOScrollLayer
   XDEF  _LVOBeginUpdate
   XDEF  _LVOEndUpdate
   XDEF  _LVODeleteLayer
   XDEF  _LVOLockLayer
   XDEF  _LVOUnlockLayer
   XDEF  _LVOLockLayers
   XDEF  _LVOUnlockLayers
   XDEF  _LVOLockLayerInfo
   XDEF  _LVOSwapBitsRastPortClipRect
   XDEF  _LVOWhichLayer
   XDEF  _LVOUnlockLayerInfo
   XDEF  _LVONewLayerInfo
   XDEF  _LVODisposeLayerInfo
   XDEF  _LVOFattenLayerInfo
   XDEF  _LVOThinLayerInfo
   XDEF  _LVOMoveLayerInFrontOf
   XDEF  _LVOInstallClipRegion

   ENDC





   END

