home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magazyn Amiga Shareware Floppies
/
ma58.dms
/
ma58.adf
/
superplay-lib_DEV
/
Programmers
/
Example_SPObjects
/
SPO
/
SP_InfoSubs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-05-27
|
3KB
|
128 lines
/* SP_InfoSubs.c
- Functions for SPO-Support -
(c) 1994 by Andreas R. Kleinert
Last changes : 27.03.1994
*/
#include "spobject.h"
/* PUBLIC functions (high level) */
ULONG __saveds __asm SPO_FileInfoRequest( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future);
ULONG __saveds __asm SPO_CheckFileType(register __a1 BPTR handle, register __a2 UBYTE *filename, register __a3 APTR future);
/* *************************************************** */
/* * * */
/* * SPO_FileInfoRequest : Display File Information * */
/* * * */
/* *************************************************** */
ULONG __saveds __asm SPO_FileInfoRequest( register __a1 struct SPObjectHandle *SPObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future)
{
struct SPObjectHandle *SPObjectHandle = SPObjectHandle_a1;
ULONG retval = SPERR_NO_ERROR;
char buffer [1024], hbuf[80];
ULONG idcmp = N, noinfo = TRUE;
struct EasyStruct *estr;
struct Window *disp_win = window;
if(!SPObjectHandle) return(SPERR_NO_HANDLE);
buffer[0] = (char) 0;
if(SPObjectHandle->ah_SPOHeader)
{
noinfo = FALSE;
strcat(buffer, "\n File Information"
"\n\n File Type : SPO Sample");
strcat(buffer, "\n");
sprintf(hbuf, "\n Length : %ld Bytes", (ULONG) SPObjectHandle->ah_SPOHeader->spo_SampleLength);
strcat(buffer, hbuf);
sprintf(hbuf, "\n Frequency : %ld Hz", (ULONG) SPObjectHandle->ah_SPOHeader->spo_Frequency);
strcat(buffer, hbuf);
strcat(buffer, "\n");
}else retval = SPERR_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 = "SuperPlay InfoRequester";
estr->es_TextFormat = buffer;
estr->es_GadgetFormat = "Confirm";
if(!disp_win) disp_win = SPObjectHandle->ah_ReqIOWindow;
EasyRequestArgs(disp_win, estr, &idcmp, N);
FreeVec(estr);
}
}
return(retval);
}
/* *************************************************** */
/* * * */
/* * SPLI_CheckFileType : ... * */
/* * * */
/* *************************************************** */
ULONG __saveds __asm SPO_CheckFileType(register __a1 BPTR handle_a1, register __a2 UBYTE *filename, register __a3 APTR future)
{
BPTR handle = handle_a1;
BPTR handle2;
ULONG retval = FALSE;
UBYTE SPO_id[256];
char spo_name [256];
Seek(handle, N, OFFSET_BEGINNING);
Read(handle, &SPO_id[0], 256);
Seek(handle, N, OFFSET_BEGINNING);
if(!strncmp(SPO_id, SPO_ID, strlen(SPO_ID))) retval = TRUE;
if(!retval && filename)
{
strcpy(spo_name, filename);
strcat(spo_name, ".spo");
handle2 = Open(spo_name, MODE_OLDFILE);
if(handle2)
{
Read(handle2, &SPO_id[0], 256);
if(!strncmp(SPO_id, SPO_ID, strlen(SPO_ID))) retval = TRUE;
Close(handle2);
}
}
return(retval);
}
extern void Fmt(void); /* Assembler-Routine for RawDoFmt */
void __saveds __stdargs SPLI_SPrintf(APTR buffer, char *formatstring, ...)
{
RawDoFmt((APTR) formatstring, (APTR) (((ULONG *)&formatstring)+1), (APTR) &Fmt, (APTR) buffer);
}