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

#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 SVDRIVERS_SVDRIVERBASE_H
#include <svdrivers/svdriverbase.h>
#endif  /* SVDRIVERS_SVDRIVERBASE_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 <proto/utility.h>
#include <proto/superview.h>
#include <proto/svdrivers.h>
#include <proto/superviewsupport.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 : ...                             * */
/* *						     * */
/* *************************************************** */

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_a1, register __a2 UBYTE *filename, register __a3 APTR future);


extern void __saveds __stdargs SVLI_SPrintf(APTR buffer, char *formatstring, ...);


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

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


/* *************************************************** */
/* *						     * */
/* * SV_BufferSubs.c : ...                           * */
/* *						     * */
/* *************************************************** */

extern ULONG __saveds __asm SVO_ReadToGfxBuffer( register __a1 struct SVObjectHandle *SVObjectHandle_a1);
extern ULONG __saveds __asm SVO_GetGfxBuffer(    register __a1 struct SVObjectHandle *SVObjectHandle_a1,
                                                 register __a2 struct SV_GfxBuffer **bufferhandle,
                                                 register __a3 ULONG future);
extern ULONG __saveds __asm SVO_SetGfxBuffer(    register __a1 struct SVObjectHandle *SVObjectHandle_a1,
                                                 register __a2 struct SV_GfxBuffer *bufferhandle,
                                                 register __a3 ULONG 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       *UtilityBase;
extern struct Library       *XpkBase;
extern struct SVSupportBase *SVSupportBase;


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

 APTR                   ah_ramhandle;

 /* For SVO Files */

 struct SVOHeader      *ah_SVOHeader;
 APTR                   ah_XpkBuffer;
 ULONG                  ah_XpkBufferSize;

 /* For SVDriver Support */

 struct SVDriverBase   *ah_DriverBase;  /* Library-Base of svobject.    */
 struct SVD_DriverNode *ah_SVDriver;
 APTR                   ah_SVDriverHandle;

 struct SV_GfxBuffer   *ah_SV_GfxBuffer;  /* for read-/write-access   */
 struct SV_GfxBuffer   *ah_SV_GfxBuffer2; /* as source for conversion */
};

#endif /* SVOBJECT_H */
