/* SV_InfoSubs.c - Functions for UtahRLE-Support - (c) 1990-95 by Andreas R. Kleinert Last changes : 07.10.1995 */ #include "svobject.h" ULONG __saveds __asm SVO_FileInfoRequest( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future); ULONG __saveds __asm SVO_CheckFileType(register __a1 BPTR handle, register __a2 UBYTE *filename, register __a3 APTR future); void __saveds __stdargs SVLI_SPrintf(APTR buffer, char *formatstring, ...); /* *************************************************** */ /* * * */ /* * SVO_FileInfoRequest : Display File Information * */ /* * * */ /* *************************************************** */ ULONG __saveds __asm SVO_FileInfoRequest( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future) { struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1; ULONG retval = SVERR_NO_ERROR; char hbuf[80], buffer [1024]; ULONG idcmp = N, noinfo = TRUE; struct EasyStruct *estr; struct Window *disp_win = window; if(!SVObjectHandle) return(SVERR_NO_HANDLE); buffer[0] = (char) 0; if(SVObjectHandle->ah_SV_GfxBuffer) { noinfo = FALSE; strcat(buffer, "\n File Information" "\n\n UtahRLE"); strcat(buffer, " (Raytracer)"); strcat(buffer, "\n"); sprintf(hbuf, "\n GfxWidth : %ld", (long) SVObjectHandle->ah_SV_GfxBuffer->svgfx_Width); strcat(buffer, hbuf); sprintf(hbuf, "\n GfxHeight : %ld", (long) SVObjectHandle->ah_SV_GfxBuffer->svgfx_Height); strcat(buffer, hbuf); sprintf(hbuf, "\n Colordepth : 24"); strcat(buffer, hbuf); sprintf(hbuf, "\n => # of Colors : %ld", (long) ColorAcc(24)); strcat(buffer, hbuf); strcat(buffer, "\n"); }else retval = SVERR_NO_HANDLE; if(!retval) { if(noinfo) { strcat(buffer, "\n File Information" "\n\n No information available\n"); } estr = AllocVec(sizeof(struct EasyStruct), MEMF_CLEAR); if(estr) { estr->es_StructSize = sizeof(struct EasyStruct); estr->es_Flags = N; estr->es_Title = "SuperView InfoRequester"; estr->es_TextFormat = buffer; estr->es_GadgetFormat = "Confirm"; if(!disp_win) disp_win = SVObjectHandle->ah_Window; EasyRequestArgs(disp_win, estr, &idcmp, N); FreeVec(estr); } } return(retval); } /* *************************************************** */ /* * * */ /* * SVLI_CheckFileType : ... * */ /* * * */ /* *************************************************** */ ULONG __saveds __asm SVO_CheckFileType(register __a1 BPTR handle_a1, register __a2 UBYTE *filename, register __a3 APTR future) { BPTR handle = handle_a1; UWORD id; if(!handle) return(FALSE); Seek(handle, N, OFFSET_BEGINNING); Read(handle, &id, 2); if(id == RLE_ID) return(TRUE); return(FALSE); } extern void Fmt(void); /* Assembler-Routine for RawDoFmt */ void __saveds __stdargs SVLI_SPrintf(APTR buffer, char *formatstring, ...) { RawDoFmt((APTR) formatstring, (APTR) (((ULONG *)&formatstring)+1), (APTR) &Fmt, (APTR) buffer); }