/* superview/superview.h	    */
/* Version    : 11.1 		    */
/* Date       : 11.03.1995	    */
/* Written by : Andreas R. Kleinert */

#ifndef SUPERVIEW_SUPERVIEW_H
#define SUPERVIEW_SUPERVIEW_H


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

#define SVLIB_VERSION  11   /* just for info, should not be used anywhere */


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

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

#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif /* EXEC_LISTS_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 */

#ifndef SUPERVIEW_SVGFXBUFFER_H
#include <superview/svgfxbuffer.h>
#endif /* SUPERVIEW_SVGFXBUFFER_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).
     */


  /* You should not write code, which depends on the presence of any
     of the above file(sub)type definitions, since even the older ones
     aren't guaranted to be present (although the defines have to be kept
     static for compatibility reasons for ILBM, ACBM and DTs)
  */



/* 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)
#define SVERR_HAM_DATA               ((ULONG) 19)

	/* 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.

           As with V10.x SVL_GetErrorString() will take advantage
           of the presence of localization tables (OS V38+).
	*/

#endif /* SUPERVIEW_SUPERVIEW_H */
