#ifndef  GRAPHICS_TIGA_H
#define  GRAPHICS_TIGA_H

/*
**	$VER: gsp_gfx.h 1.0 (25.1.94)
**
**	C typedefs. For use with 32 bit integers only.
**
**	(C) Copyright 1994, PointDesign -js-
**	    All Rights Reserved
*/

#ifndef POINTER_H
#include "pointer.h"
#endif
#ifndef GRAPHICS_TYPES_H
#include "gfx_types.h"
#endif

#ifndef  GRAPHICS_GFX_H
#include <graphics/gfx.h>
#endif
#ifndef  GRAPHICS_DISPLAYINFO_H
#include <graphics/displayinfo.h>
#endif
#ifndef  GRAPHICS_GELS_H
#include <graphics/gels.h>
#endif
#ifndef  GRAPHICS_RASTPORT_H
#include <graphics/rastport.h>
#endif
#ifndef  GRAPHICS_VIEW_H
#include <graphics/view.h>
#endif
#ifndef  GRAPHICS_COPPER_H
#include <graphics/copper.h>
#endif
#ifndef  GRAPHICS_CLIP_H
#include <graphics/clip.h>
#endif
#ifndef  GRAPHICS_REGIONS_H
#include <graphics/regions.h>
#endif
#ifndef  GRAPHICS_SPRITE_H
#include <graphics/sprite.h>
#endif
#ifndef  GRAPHICS_TEXT_H
#include <graphics/text.h>
#endif
#ifndef  HARDWARE_BLIT_H
#include <hardware/blit.h>
#endif
/*
#ifndef GSP_GFX_BASE
// typedef  struct Library GspGfxBase;
#endif 
*/
#define XOR 10
#define OR  0
#define SET 0
/*
 *  new def :
 */
#define DST_IS_SRC      0
#define SRC_AND_DST     1
#define SRC_AND_NOT_DST 2
#define DST_ZERO        3
#define SRC_OR_NOT_DST  4
#define SRC_EQU_DST     5
#define NOT_DST         6
#define SRC_NOR_DST     7
#define SRC_OR_DST      8
#define DST             9
#define SRC_XOR_DST     10
#define NOT_SRC_AND_DST 11
#define DST_IS_ONE      12
#define NOT_SRC_OR_DST  13
#define SRC_NAND_DST    14
#define NOT_SRC         15
#define SRC_PLUS_DST_O  16
#define SRC_PLUS_DST_S  17
#define SRC_MINUS_DST_O 18
#define SRC_MINUS_DST_S 19
#define MAX_SRC_DST     20
#define MIN_SRC_DST     21

#define IN TRUE
#define OUT FALSE
#define BMB_CHUNKY_MAP   5 // private defintion for AllocBitmap
#define BMB_GSP_MAP      6 // private defintion
#define BMB_HST_MAP      7

#define BMF_CHUNKY_MAP  (1L<<BMB_CHUNKY_MAP) // private defintion for AllocBitmap
#define BMF_GSP_MAP     (1L<<BMB_GSP_MAP)// private defintion
#define BMF_HST_MAP     (1L<<BMB_HST_MAP)     

#define BMB_CACHE_STANDARD 0
#define BMB_NO_CACHE       1
#define BMB_LOCK_CACHE     2
#define BMB_CACHE_FLUSH    8 // no mem, flush a map but not locked !
#define BMB_FORCE_FLUSH    9 // flush also locked maps

#define BMF_CACHE_STANDARD (1<<BMB_CACHE_STANDARD)
#define BMF_NO_CACHE       (1<<BMB_NO_CACHE)
#define BMF_LOCK_CACHE     (1<<BMB_LOCK_CACHE)
#define BMF_CACHE_FLUSH    (1<<BMB_CACHE_FLUSH)
#define BMF_FORCE_FLUSH    (1<<BMB_FORCE_FLUSH)

#define INTEL_BYTES 1   // 1 = ON, 0 = OFF; only host2gsp: 2 = ?, 3 Rotates bitwise ~4+?,
#define INTEL_BITS  3                       
#define MOTO_BYTES  0

/*
DEFINES for the x/y-Offset
*/

//#define CLIP_ON
#define XOff ((rp->Layer) ? (rp->Layer->bounds.MinX - rp->Layer->Scroll_X) : 0)
#define YOff ((rp->Layer) ? (rp->Layer->bounds.MinY - rp->Layer->Scroll_Y) : 0)
#define XWidth (rp->Layer->bounds.MaxX)-XOff
#define YWidth (rp->Layer->bounds.MaxY)-YOff

struct ChunkyMap 
{
    UBYTE *data;
    long depth;
    long xSize,ySize;
    long bmsize;
    long flag;
};

#endif	 /* GRAPHICS_TIGA_H */
