/* superview/superview.h	    */
/* Version    : 6.1		    */
/* Date       : 27.05.1994	    */
/* Written by : Andreas R. Kleinert */

#ifndef SUPERVIEW_SUPERVIEW_H
#define SUPERVIEW_SUPERVIEW_H


/* *************************************************** */
/* *						     * */
/* * Version Defines				     * */
/* *						     * */
/* *************************************************** */

#define SVLIB_VERSION  6


/* *************************************************** */
/* *						     * */
/* * Includes					     * */
/* *						     * */
/* *************************************************** */

#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif /* EXEC_TYPES_H */

#ifndef LIBRARIES_DOS_H
#include <libraries/dos.h>
#endif /* LIBRARIES_DOS_H */

#ifndef _STDIO_H
#include <stdio.h>
#endif /* _STDIO_H */

#ifndef _STDLIB_H
#include <stdlib.h>
#endif /* _STDLIB_H */

#ifndef _STRING_H
#include <string.h>
#endif /* _STRING_H */

#ifndef SUPERVIEW_SVINFO_H
#include <superview/svinfo.h>
#endif /* SUPERVIEW_SVINFO_H */


/* *************************************************** */
/* *						     * */
/* * Custom Defines				     * */
/* *						     * */
/* *************************************************** */

#ifndef N
#define N NULL	 /* useful */
#endif /* N */


/* *************************************************** */
/* *						     * */
/* * MACROs for Version-Tests			     * */
/* *						     * */
/* *************************************************** */

#define LibVer(x) ( ((struct Library *) x)->lib_Version )
#define OS_VER	  LibVer(SysBase)


/* *************************************************** */
/* *						     * */
/* * DEFINES					     * */
/* *						     * */
/* *************************************************** */


/* Possible FileTypes */

#define SV_FILETYPE_NONE     ((ULONG) 0)
#define SV_FILETYPE_UNKNOWN  SV_FILETYPE_NONE
#define SV_FILETYPE_ILLEGAL  ((ULONG) 0xFFFFFFFF)

#define SV_FILETYPE_ILBM     ((ULONG) 1)          /* IFF-ILBM, any derivat   */
#define SV_FILETYPE_ACBM     ((ULONG) 2)          /* IFF-ACBM, any derivat   */
#define SV_FILETYPE_DATATYPE ((ULONG) 3)          /* V39-Datatype-Object     */

     /*
	up to here  : Constant codes for IFF-ILBM, IFF-ACBM and DataTypes
		      (constant for compatibility reasons).
	above these : External, user defined FileSubTypes
		      (defined EACH TIME NEW at Library's startup-time).
     */


/* Possible SubTypes of FileTypes */

#define SV_SUBTYPE_NONE     ((ULONG) 0)
#define SV_SUBTYPE_UNKNOWN  SV_SUBTYPE_NONE
#define SV_SUBTYPE_ILLEGAL  ((ULONG) 0xFFFFFFFF)

#define SV_SUBTYPE_ILBM     ((ULONG) 1)          /* Is IFF-ILBM              */
#define SV_SUBTYPE_ILBM_01  ((ULONG) 2)          /* Is IFF-ILBM, CmpByteRun1 */
#define SV_SUBTYPE_ACBM     ((ULONG) 3)          /* Is IFF-ACBM              */
#define SV_SUBTYPE_DATATYPE ((ULONG) 4)          /* Is V39-DataType-Object   */

     /*
	up to here  : Constant codes for IFF-ILBM, IFF-ACBM and DataTypes
		      (constant for compatibility reasons).
	above these : External, user defined FileSubTypes
		      (defined EACH TIME NEW at Library's startup-time).
     */


/* Possible Input and Output mediums */

#define AKO_MEDIUM_NONE     ((ULONG) 0)          /* means : DEFAULT          */
#define AKO_MEDIUM_ILLEGAL  ((ULONG) 0xFFFFFFFF)

#define AKO_MEDIUM_DISK ((ULONG) 1)              /* Read and Write media     */
#define AKO_MEDIUM_CLIP ((ULONG) 2)

     /* not any medium might be supported by any SVObject */


/* *************************************************** */
/* *						     * */
/* * Function Error Codes			     * */
/* *						     * */
/* *************************************************** */

#define SVERR_MAX_ERROR_TEXT_LENGTH (80)       /* plus Null-Byte */

#define SVERR_NO_ERROR		     (NULL)
#define SVERR_INTERNAL_ERROR	     ((ULONG) 0xFFFFFFFF)

#define SVERR_UNKNOWN_FILE_FORMAT    ((ULONG) 1)
#define SVERR_FILE_NOT_FOUND	     ((ULONG) 2)
#define SVERR_NO_MEMORY 	     ((ULONG) 3)
#define SVERR_IFFPARSE_ERROR	     ((ULONG) 4)
#define SVERR_NO_CLIPBOARD	     ((ULONG) 5)
#define SVERR_NO_SCREEN 	     ((ULONG) 6)
#define SVERR_NO_FILE		     ((ULONG) 7)
#define SVERR_NO_HANDLE 	     ((ULONG) 8)
#define SVERR_NO_DATA		     ((ULONG) 9)
#define SVERR_GOT_NO_WINDOW	     ((ULONG) 10)
#define SVERR_GOT_NO_SCREEN	     ((ULONG) 11)
#define SVERR_NO_INFORMATION	     ((ULONG) 12)
#define SVERR_ILLEGAL_ACCESS	     ((ULONG) 13)
#define SVERR_DECODE_ERROR	     ((ULONG) 14)
#define SVERR_UNKNOWN_PARAMETERS     ((ULONG) 15)
#define SVERR_ACTION_NOT_SUPPORTED   ((ULONG) 16)
#define SVERR_VERSION_CONFLICT	     ((ULONG) 17)
#define SVERR_NO_DRIVER_AVAILABLE    ((ULONG) 18)

	/* Each new Library-Subversion may contain new Codes above
	   the last one of these.
	   So do not interpret the codes directly, but use
	   SVL_GetErrorString().
	   Maybe, newer Codes will not be listed up here.
	*/

struct SV_GfxBuffer
{
 /*
    All values are strictly READ-ONLY :
    - DO NOT write-access any entries !
    - DO NOT free any memory by hand !
 */

 ULONG svgfx_Version;	     /* structure version, see below		    */

 ULONG svgfx_BufferType;     /* Data organization, see below		    */

 ULONG svgfx_Width;	     /* Graphic's Width                             */
 ULONG svgfx_Height;	     /* Graphic's Height                            */
 ULONG svgfx_ColorDepth;     /* Graphic's ColorDepth                        */
 ULONG svgfx_ViewMode32;     /* if NULL, best ScreenMode is suggested	    */

 UBYTE svgfx_Colors[256][3]; /* For ColorDepth < 8 : 3-Byte RGB 	    */


 ULONG svgfx_BytesPerLine;   /* as in conventional BitMaps (see below)      */
			     /* only valid, if svgfx_BufferType == BITPLANE */

 ULONG svgfx_PixelBits;      /* how many Bits per Pixel : 8, 16, 24 ?	    */
			     /* only valid, if svgfx_BufferType == ONEPLANE */

 APTR  svgfx_Buffer;	     /* any kind of memory (no chip ram needed)     */
 ULONG svgfx_BufferSize;     /* if you want to copy it ...		    */


 /* size of structure may grow in future versions : Check svgfx_Version ! */
};

#define SVGFX_VERSION (1)

#define SVGFX_BUFFERTYPE_BITPLANE (1)  /* Amiga-like BitPlanes            */
#define SVGFX_BUFFERTYPE_ONEPLANE (2)  /* single Byte-/Word-/24 Bit-Plane */

/* there may be more types in the future */


/* structure of svgfx_Buffer is as follows :

   BITPLANE : Amiga-like BitPlane, upto 256 Colors (8 Bit)
	      NO SPECIAL ALIGNMENT IS DONE.
   ONEPLANE :  8 Bit : Chunky Pixel (ColorMap)
	      16 Bit : R:G:B = 5:5:5 plus 1 Bit Alpha Channel (IGNORED)
	      24 Bit : R:G:B = 8:8:8
*/

#endif /* SUPERVIEW_SUPERVIEW_H */
