
 /* SV_ChangeSubs.c
    - Functions for controlling the SVObject -
    (c) 1990-94 by Andreas R. Kleinert
    Last changes : 14.02.1994
 */

#include "svobject.h"

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


/* *************************************************** */
/* *						     * */
/* * SVO_SetAccessMode : ...                         * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetAccessMode(  register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __d1 ULONG mode)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;
 ULONG retval = SVERR_NO_ERROR;

 if(!SVObjectHandle) return(SVERR_NO_HANDLE);

 switch(mode)
  {
   case AKO_MEDIUM_DISK : SVObjectHandle->ah_Medium = mode;
   case AKO_MEDIUM_CLIP : SVObjectHandle->ah_Medium = mode; break;

   default : retval = SVERR_ACTION_NOT_SUPPORTED; break;
  }

 return(retval);
}

/* *************************************************** */
/* *						     * */
/* * SVO_SetWriteType :                              * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetWriteSubType( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 ULONG akt_type, register __a3 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;

 if(!SVObjectHandle) return(SVERR_NO_HANDLE);

 SVObjectHandle->ah_WriteMode = akt_type;

 return(SVERR_NO_ERROR);
}

/* *************************************************** */
/* *						     * */
/* * SVO_SetScreenType :                             * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetScreenType( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __d1 ULONG type, register __a2 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;
 ULONG retval = SVERR_NO_ERROR;

 if(!SVObjectHandle) return(SVERR_NO_HANDLE);

 SVObjectHandle->ah_ScreenType = type;

 if(SVObjectHandle->ah_SVDriverHandle)
  {
   struct SVDriverBase *SVDriverBase = SVObjectHandle->ah_DriverBase;

   retval = SVD_SetScreenType(SVObjectHandle->ah_SVDriverHandle, type, future);
  }

 return(retval);
}

/* *************************************************** */
/* *						     * */
/* * SVO_SetWindowFlags :                            * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetWindowFlags( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __d1 ULONG flags, register __a2 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;
 ULONG retval = SVERR_NO_ERROR;

 if(!SVObjectHandle) return(SVERR_NO_HANDLE);

 SVObjectHandle->ah_WindowFlags = flags;

 if(SVObjectHandle->ah_SVDriverHandle)
  {
   struct SVDriverBase *SVDriverBase = SVObjectHandle->ah_DriverBase;

   retval = SVD_SetWindowFlags(SVObjectHandle->ah_SVDriverHandle, flags, future);
  }

 return(retval);
}

/* *************************************************** */
/* *						     * */
/* * SVO_SetWindowIDCMP :                            * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetWindowIDCMP( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __d1 ULONG idcmp, register __a2 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;
 ULONG retval = SVERR_NO_ERROR;

 if(!SVObjectHandle) return(SVERR_NO_HANDLE);

 SVObjectHandle->ah_WindowIDCMP = idcmp;

 if(SVObjectHandle->ah_SVDriverHandle)
  {
   struct SVDriverBase *SVDriverBase = SVObjectHandle->ah_DriverBase;

   retval = SVD_SetWindowIDCMP(SVObjectHandle->ah_SVDriverHandle, idcmp, future);
  }

 return(retval);
}

/* *************************************************** */
/* *						     * */
/* * SVO_GetScreenAddress :                          * */
/* *						     * */
/* *************************************************** */

struct Screen * __saveds __asm SVO_GetScreenAddress( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;

 if(!SVObjectHandle) return(N);

 if(SVObjectHandle->ah_SVDriverHandle)
  {
   struct SVDriverBase *SVDriverBase = SVObjectHandle->ah_DriverBase;

   return(SVD_GetScreenAddress(SVObjectHandle->ah_SVDriverHandle, future));
  }

 return(SVObjectHandle->ah_Screen);
}

/* *************************************************** */
/* *						     * */
/* * SVO_GetWindowAddress :                          * */
/* *						     * */
/* *************************************************** */

struct Window * __saveds __asm SVO_GetWindowAddress( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;

 if(!SVObjectHandle) return(N);

 if(SVObjectHandle->ah_SVDriverHandle)
  {
   struct SVDriverBase *SVDriverBase = SVObjectHandle->ah_DriverBase;

   return(SVD_GetWindowAddress(SVObjectHandle->ah_SVDriverHandle, future));
  }

 return(SVObjectHandle->ah_Window);
}

/* *************************************************** */
/* *						     * */
/* * SVO_SetScreenAddress : ...                      * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetScreenAddress( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct Screen *writescreen, register __a3 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;

 if(!SVObjectHandle) return(SVERR_NO_HANDLE);

 SVObjectHandle->ah_WriteScreen = writescreen;

 return(SVERR_NO_ERROR);
}

/* *************************************************** */
/* *						     * */
/* * SVO_SetWindowAddress : ...                      * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetWindowAddress( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct Window *writeWindow, register __a3 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;

 if(!SVObjectHandle) return(SVERR_NO_HANDLE);

 SVObjectHandle->ah_WriteWindow = writeWindow;

 return(SVERR_NO_ERROR);
}

/* *************************************************** */
/* *						     * */
/* * SVO_SetReadName :                               * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetReadName( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 char *readname, register __a3 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;

 if(!SVObjectHandle) return(SVERR_NO_HANDLE);

 SVObjectHandle->ah_ReadName = readname;

 return(SVERR_NO_ERROR);
}

/* *************************************************** */
/* *						     * */
/* * SVO_SetWriteName :                              * */
/* *						     * */
/* *************************************************** */

ULONG __saveds __asm SVO_SetWriteName( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 char *writename, register __a3 APTR future)
{
 struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;

 if(!SVObjectHandle) return(SVERR_NO_HANDLE);

 SVObjectHandle->ah_WriteName = writename;

 return(SVERR_NO_ERROR);
}
