#ifndef  CLIB_LAYERS_PROTOS_H
#define  CLIB_LAYERS_PROTOS_H

/*******************************************************************
 pOS / Amiga adapt
*******************************************************************/

#ifndef  EXEC_TYPES_H
#include <exec/types.h>
#endif
#ifndef  GRAPHICS_LAYERS_H
#include <graphics/layers.h>
#endif
#ifndef  GRAPHICS_CLIP_H
#include <graphics/clip.h>
#endif
#ifndef  GRAPHICS_RASTPORT_H
#include <graphics/rastport.h>
#endif
#ifndef  GRAPHICS_REGIONS_H
#include <graphics/regions.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

struct Layer *CreateUpfrontLayer( struct Layer_Info *li, struct BitMap *bm,
        long x0, long y0, long x1, long y1, long flags, struct BitMap *bm2 );
struct Layer *CreateBehindLayer( struct Layer_Info *li, struct BitMap *bm,
        long x0, long y0, long x1, long y1, long flags, struct BitMap *bm2 );
LONG UpfrontLayer( long dummy, struct Layer *layer );
LONG BehindLayer( long dummy, struct Layer *layer );
LONG MoveLayer( long dummy, struct Layer *layer, long dx, long dy );
LONG SizeLayer( long dummy, struct Layer *layer, long dx, long dy );
void ScrollLayer( long dummy, struct Layer *layer, long dx, long dy );
LONG BeginUpdate( struct Layer *l );
void EndUpdate( struct Layer *layer, unsigned long flag );
LONG DeleteLayer( long dummy, struct Layer *layer );
void LockLayer( long dummy, struct Layer *layer );
void UnlockLayer( struct Layer *layer );
void LockLayers( struct Layer_Info *li );
void UnlockLayers( struct Layer_Info *li );
void LockLayerInfo( struct Layer_Info *li );
struct Layer *WhichLayer( struct Layer_Info *li, long x, long y );
void UnlockLayerInfo( struct Layer_Info *li );
struct Layer_Info *NewLayerInfo( void );
void DisposeLayerInfo( struct Layer_Info *li );
LONG MoveLayerInFrontOf( struct Layer *layer_to_move,struct Layer *other_layer );
struct Region *InstallClipRegion( struct Layer *layer,struct Region *region );
LONG MoveSizeLayer( struct Layer *layer, long dx, long dy, long dw, long dh );





#ifdef __IGNORE_NOT_SUPPORTED__

  void SwapBitsRastPortClipRect( struct RastPort *rp, struct ClipRect *cr );
  struct Layer *CreateUpfrontHookLayer(struct Layer_Info*,struct BitMap*,long,long,long,long,long,struct Hook*,struct BitMap*);
  struct Layer *CreateBehindHookLayer( struct Layer_Info*,struct BitMap*,long,long,long,long,long,struct Hook*,struct BitMap*);
  struct Hook *InstallLayerHook( struct Layer *layer, struct Hook *hook );
  struct Hook *InstallLayerInfoHook( struct Layer_Info *li, struct Hook *hook );

#else  /** __IGNORE_NOT_SUPPORTED__ **/

#define SwapBitsRastPortClipRect SwapBitsRastPortClipRect_NOT_SUPPORTED
  void SwapBitsRastPortClipRect(struct NOT_SUPPORTED*, struct RastPort *rp, struct ClipRect *cr );
#define CreateUpfrontHookLayer CreateUpfrontHookLayer_NOT_SUPPORTED
  struct Layer *CreateUpfrontHookLayer(struct NOT_SUPPORTED*,struct Layer_Info*,struct BitMap*,long,long,long,long,long,struct Hook*,struct BitMap*);
#define CreateBehindHookLayer CreateBehindHookLayer_NOT_SUPPORTED
  struct Layer *CreateBehindHookLayer(struct NOT_SUPPORTED*, struct Layer_Info*,struct BitMap*,long,long,long,long,long,struct Hook*,struct BitMap*);
#define InstallLayerHook InstallLayerHook_NOT_SUPPORTED
  struct Hook *InstallLayerHook(struct NOT_SUPPORTED*, struct Layer *layer, struct Hook *hook );
#define InstallLayerInfoHook InstallLayerInfoHook_NOT_SUPPORTED
  struct Hook *InstallLayerInfoHook(struct NOT_SUPPORTED*, struct Layer_Info *li, struct Hook *hook );

#endif /** __IGNORE_NOT_SUPPORTED__ **/








#ifdef __cplusplus
}
#endif

#endif   /* CLIB_LAYERS_PROTOS_H */
