
 /* svobject.h
    - Include File for SVO.svobject -
    (c) 1990-93 by Andreas R. Kleinert
    Last changes : 18.12.1993
 */

#ifndef SVOBJECT_H
#define SVOBJECT_H

#ifndef SUPERVIEW_SUPERVIEWBASE_H
#include <superview/superviewbase.h>
#endif  /* SUPERVIEW_SUPERVIEWBASE_H */

#ifndef SVOBJECTS_SVOBJECTBASE_H
#include <svobjects/svobjectbase.h>
#endif  /* SVOBJECTS_SVOBJECTBASE_H

#ifndef INTUITION_INTUITIONBASE_H
#include <intuition/intuitionbase.h>
#endif /* INTUITION_INTUITIONBASE_H */

#ifndef EXEC_MEMORY_H
#include <exec/memory.h>
#endif /* EXEC_MEMORY_H */

#ifndef EXEC_LISTS_H
#include <exec/lists.h>
#endif /* EXEC_LISTS_H */

#ifndef EXEC_INTERRUPTS_H
#include <exec/interrupts.h>
#endif /* EXEC_INTERRUPTS_H */

#ifndef GRAPHICS_GFXBASE_H
#include <graphics/gfxbase.h>
#endif /* GRAPHICS_GFXBASE_H */

#ifndef GRAPHICS_VIEW_H
#include <graphics/view.h>
#endif /* GRAPHICS_VIEW_H */

#include <libraries/xpk.h>

#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/intuition.h>
#include <proto/graphics.h>


#include "SV_MemSubs.h"
#include "svo.h"


/* *************************************************** */
/* *						     * */
/* * SV_SuperVisor.c : Functions	             * */
/* *						     * */
/* *************************************************** */

extern struct SVObjectHandle * __saveds __asm SVO_AllocHandle( register __a1 APTR future_a1);
extern void __saveds __asm SVO_FreeHandle( register __a1 struct SVObjectHandle *SVObjectHandle_a1);
extern void __saveds __asm SVO_CloseDisplay( register __a1 struct SVObjectHandle *SVObjectHandle_a1);
extern void __saveds __asm SVO_FreeResources( register __a1 struct SVObjectHandle *SVObjectHandle_a1);


/* *************************************************** */
/* *						     * */
/* * SV_WriteSubs.c : ...                            * */
/* *						     * */
/* *************************************************** */

extern ULONG __saveds __asm SVO_Write( register __a1 struct SVObjectHandle *SVObjectHandle_a1);


/* *************************************************** */
/* *						     * */
/* * SV_PackSubs.c : ...                             * */
/* *						     * */
/* *************************************************** */

extern ULONG __saveds __stdargs DoPack(BYTE *buffer, BYTE *destbuffer, long lines, long depth, long bpl);


/* *************************************************** */
/* *						     * */
/* * SV_InfoSubs.c : ...                             * */
/* *						     * */
/* *************************************************** */

 /* PUBLIC functions (high level) */

extern ULONG __saveds __asm SVO_FileInfoRequest( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future);
extern ULONG __saveds __asm SVO_CheckFileType(register __a1 BPTR handle, register __a2 UBYTE *filename, register __a3 APTR future);


 /* internal functions (low level) */

extern long __saveds __stdargs SVLI_CheckInterleaved(struct Screen *sc);
extern ULONG __saveds __stdargs SVLI_GetBitMapDepth(struct Screen *sc);
extern ULONG __saveds __stdargs SVLI_GetBitMapHeight(struct Screen *sc);
extern ULONG __saveds __stdargs SVLI_GetBodySize(struct Screen *sc);


/* *************************************************** */
/* *						     * */
/* * SV_ChangeSubs.c : ...                           * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetAccessMode(  register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __d1 ULONG mode);
ULONG __saveds __asm SVO_SetWriteSubType( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 ULONG akt_type, register __a3 APTR future);
ULONG __saveds __asm SVO_SetScreenType( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __d1 ULONG type, register __a2 APTR future);
ULONG __saveds __asm SVO_SetWindowFlags( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __d1 ULONG flags, register __a2 APTR future);
ULONG __saveds __asm SVO_SetWindowIDCMP( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __d1 ULONG idcmp, register __a2 APTR future);
struct Screen * __saveds __asm SVO_GetScreenAddress( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 APTR future);
struct Window * __saveds __asm SVO_GetWindowAddress( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 APTR future);
ULONG __saveds __asm SVO_SetScreenAddress( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct Screen *writescreen, register __a3 APTR future);
ULONG __saveds __asm SVO_SetWindowAddress( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct Window *writewindow, register __a3 APTR future);
ULONG __saveds __asm SVO_SetReadName( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 char *readname, register __a3 APTR future);
ULONG __saveds __asm SVO_SetWriteName( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 char *writename, register __a3 APTR future);


/* *************************************************** */
/* *						     * */
/* * SV_ShowSubs.c : ...                             * */
/* *						     * */
/* *************************************************** */

extern ULONG __saveds __asm SVO_Show( register __a1 struct SVObjectHandle *SVObjectHandle_a1);


/* *************************************************** */
/* *						     * */
/* * Additional Base Declarations		     * */
/* *						     * */
/* *************************************************** */

extern struct SVObjectBase  *SVObjectBase;

extern struct ExecBase	    *SysBase;
extern struct DosLibrary    *DOSBase;
extern struct IntuitionBase *IntuitionBase;
extern struct GfxBase	    *GfxBase;
extern struct Library       *XpkBase;


 /* some useful Defines */

#define ColorAcc(x) (1<<x)


 /* structures for File-Handling */

struct SVObjectHandle                   /* STRICTLY PRIVATE */
{
 BPTR                ah_filehandle_source;
 BPTR                ah_filehandle_source2;
 BPTR                ah_filehandle_dest;
 BPTR                ah_filehandle_dest2;

 char               *ah_ReadName;
 char               *ah_WriteName;

 struct Screen      *ah_Screen;
 struct Screen      *ah_WriteScreen;

 struct Window      *ah_Window;
 struct Window      *ah_WriteWindow;

 ULONG               ah_ScreenType;
 ULONG               ah_WindowFlags;
 ULONG               ah_WindowIDCMP;

 ULONG               ah_FileType;           /* SV_FILETYPE_ ... */
 ULONG               ah_Type;               /* SV_SUBTYPE_  ... */
 ULONG               ah_WriteMode;          /* SV_SUBTYPE_  ... */
 ULONG               ah_Medium;             /* AKO_MEDIUM_  ... */

 struct AIM_MemList *ah_ramhandle;

 /* For SVO Files */

 struct SVOHeader   *ah_SVOHeader;
 APTR                ah_XpkBuffer;
 ULONG               ah_XpkBufferSize;
};

#endif /* SVOBJECT_H */
