
 /* svobject.h
    - Include File for UtahRLE.svobject -
    (c) 1993-95 by Andreas R. Kleinert
    Last changes : 07.10.1995
 */

#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 <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 "UtahRLE.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_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, 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_ShowSubs.c : ...                             * */
/* *						     * */
/* *************************************************** */

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


/* *************************************************** */
/* *						     * */
/* * 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);

extern void __saveds __asm SVLI_Progress(register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct SVProgress *pr, register __a3 APTR progressdata, register __d2 ULONG future);


/* *************************************************** */
/* *						     * */
/* * 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 SVSupportBase *SVSupportBase;


 /* some useful Defines */

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


 /* structures for File-Handling */

struct SVObjectHandle                   /* STRICTLY PRIVATE */
{
 BPTR                ah_filehandle_source;
 FILE               *ah_FILE_source;

 BPTR                ah_filehandle_dest;
 FILE               *ah_FILE_dest;

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

 /* For ProgressIndicators */

 struct SVProgress      ah_SVProgress;
 VOID           __far (*ah_ProgressFunc)(void);
 APTR                   ah_ProgressData;
 ULONG                  ah_ProgressFuture;
};

#endif /* SVOBJECT_H */
