
; 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
	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
	move.l	(SP)+,\2
	ELSE
	movem.l	(SP)+,\2
	ENDC
	rts

	ENDC

	ENDM





SATZ	MACRO	Satz1,Anzahl1,Satz2,Anzahl2...
	IFEQ	 \2-1
	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

