108 lines
2.7 KiB
C
108 lines
2.7 KiB
C
|
#ifndef _RF_H_
|
||
|
#define _RF_H_
|
||
|
|
||
|
//based on Tempura specs.
|
||
|
//NOT compatible with WA3 alphas
|
||
|
|
||
|
class WReader
|
||
|
{
|
||
|
protected:
|
||
|
|
||
|
/* WReader
|
||
|
** WReader constructor
|
||
|
*/
|
||
|
WReader() : m_player(0) { }
|
||
|
|
||
|
public:
|
||
|
|
||
|
/* m_player
|
||
|
** Filled by Winamp. Pointer to Winamp 3 core interface
|
||
|
*/
|
||
|
/*WPlayer_callback*/ void *m_player; //PP: hack. read_file.dll doesn't call it at all. simply don't touch it
|
||
|
|
||
|
/* GetDescription
|
||
|
** Retrieves your plug-in's text description
|
||
|
*/
|
||
|
virtual char *GetDescription() { return "Unknown"; };
|
||
|
|
||
|
/* Open
|
||
|
** Used to open a file, return 0 on success
|
||
|
*/
|
||
|
virtual int Open(char *url, bool *killswitch)=0;
|
||
|
|
||
|
/* Read
|
||
|
** Returns number of BYTES read (if < length then eof or killswitch)
|
||
|
*/
|
||
|
virtual int Read(char *buffer, int length, bool *killswitch)=0;
|
||
|
|
||
|
/* GetLength
|
||
|
** Returns length of the entire file in BYTES, return -1 on unknown/infinite (as for a stream)
|
||
|
*/
|
||
|
virtual int GetLength(void)=0;
|
||
|
|
||
|
/* CanSeek
|
||
|
** Returns 1 if you can skip ahead in the file, 0 if not
|
||
|
*/
|
||
|
virtual int CanSeek(void)=0; //PP: currently available read_file.dll vesions can always seek in any direction
|
||
|
|
||
|
/* Seek
|
||
|
** Jump to a certain absolute position
|
||
|
*/
|
||
|
virtual int Seek(int position, bool *killswitch)=0;
|
||
|
|
||
|
/* GetHeader
|
||
|
** Retrieve header. Used in read_http to retrieve the HTTP header
|
||
|
*/
|
||
|
virtual char *GetHeader(char *name) { return 0; }
|
||
|
|
||
|
/* ~WReader
|
||
|
** WReader virtual destructor
|
||
|
*/
|
||
|
//virtual ~WReader() { }
|
||
|
virtual void Release(int) {};
|
||
|
//PP: hack - shut up linker when getting rid of evil CRT library; seems to work OK under Tempura
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#define READ_VER 0x100
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
/* version
|
||
|
** Version revision number
|
||
|
*/
|
||
|
int version;
|
||
|
|
||
|
/* description
|
||
|
** Text description of the reader plug-in
|
||
|
*/
|
||
|
char *description;
|
||
|
|
||
|
/* create
|
||
|
** Function pointer to create a reader module
|
||
|
*/
|
||
|
WReader *(*create)();
|
||
|
|
||
|
/* ismine
|
||
|
** Determines whether or not a file should be read by this plug-in
|
||
|
*/
|
||
|
int (*ismine)(char *url);
|
||
|
|
||
|
} reader_source;
|
||
|
|
||
|
//exported symbol is:
|
||
|
//int readerSource(HINSTANCE,reader_source**);
|
||
|
|
||
|
/*
|
||
|
(not a part of Tempura specs)
|
||
|
int _stdcall gzip_writefile(char* path,void* buf,DWORD size) - writes a memory block to a GZIP file - in_midi calls it from file info box
|
||
|
|
||
|
other hacks:
|
||
|
recent versions understand file://... urls, can do partial file access (eg. "partial://00006666-66660000:c:\foo\bar.dat\zzz.wav" (zzz.wav is the "display name" + extension to make winamp select correct plug-in) and auto-detect CD drive letter (eg. #:\x.mp3 will scan all drives for that file; also works with partial:// )
|
||
|
you can (for an example) build a playlist which will play Unreal soundtrack directly from the game CD on any system
|
||
|
latest read_file.dll is bundled with the midi plug-in: http://www.blorp.com/~peter/zips/in_midi.zip
|
||
|
*/
|
||
|
|
||
|
#endif
|