ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SIDPlayer/src/clamp_includes/InputPlugin.h
Revision: 1.1
Committed: 2000-07-28T12:42:30Z (24 years, 3 months ago) by cebix
Content type: text/plain
Branch point for: MAIN, cebix
Log Message:
Initial revision

File Contents

# Content
1
2 #ifndef CLAMP_INPUT_PLUGIN_H
3 #define CLAMP_INPUT_PLUGIN_H
4
5 #include <AppKit.h>
6 #include <StorageKit.h>
7
8 #include "Plugin_Messages.h"
9 #include "Plugin_ConstructorStruct.h"
10
11 #include "InputPlugin_InfoStruct.h"
12
13 #define MAX_GETAUDIO_SIZE (10*1024)
14
15 // The class description of the object that will be returned when CL-Amp ask the AddOn (Plugin) for its object...
16 class InputPlugin {
17 public:
18 // Used by CL-Amp. Don't bother about these functions!
19 // InputPlugin(char *label, char *desc, struct InputPluginFuncs *F) { CLAmpHandler=NULL; Label= label; Description= desc; Master= false; }
20 InputPlugin(char *label, char *desc) { CLAmpHandler=NULL; Label= label; Description= desc; Master= false; }
21 virtual ~InputPlugin() { }
22 void SetHandler(BHandler *handler) { CLAmpHandler= handler; }
23 void SetMaster() { Master= true; }
24
25 // =================================================================
26 // Here comes the functions you have to provide in your plugin code!
27
28 // No thread considerations with this function!
29 virtual void Init()=0;
30 virtual void Cleanup() {};
31 // 2 special special functions follows, not needed for most plugins!!
32 virtual void *GetUserData() { return(NULL); }
33 virtual void SetUserData(void *UserData) { }
34
35 // These functions will run in thread A, dont let functions from A use data from B or vice verse...
36 virtual bool About(bool Question)=0;
37 virtual bool Prefs(bool Question)=0;
38 virtual bool Edit (const char *FileName, bool Question)=0;
39 virtual bool GetMimeType(BMimeType *m, int Nr)=0;
40 virtual bool IsOur(const char *FileName)=0;
41 virtual bool GetSongInfo(const char *FileName, struct PlayerInfoStruct *Info)=0;
42 virtual void AbortPlaying()=0;
43 virtual void Pause(bool On)=0;
44 virtual void NewSpeed (long Promille)=0;
45 virtual void NewVolume (long Promille)=0;
46 // 2 special functions follows, not needed for most plugins!!
47 virtual void NewPanning(long Promille) {}
48 virtual bool CanCrossFade(char *FileName1, char *FileName2) { return(true); }
49
50 // These functions will run in thread B, dont let functions from B use data from A or vice verse...
51 virtual bool InitPlaying(const char *FileName, struct PlayerInfoStruct *Info)=0;
52 virtual int GetAudio(char **Buff, int Size)=0;
53 virtual void JumpTo(long NewTime)=0;
54 virtual void CleanupPlaying()=0;
55
56 // End of the functions you have to provide in your plugin code!
57 // =================================================================
58
59 // Help functions you can call to get data from the InputPlugin class itself
60 const char *GetLabel() { return Label; }
61 const char *GetDescription() { return Description; }
62 BHandler *GetCLAmpHandler() { return CLAmpHandler; }
63 void SendToCLAmp(struct PlayerInfoStruct *info) { BMessage Msg(CLAMP_MSG_PLAYINFO); BLooper *l; if (CLAmpHandler && (l=CLAmpHandler->Looper())) { Msg.AddData(CLAMP_PLAYINFO_LABEL, B_STRING_TYPE, (char *)info, sizeof(*info)); l->PostMessage (&Msg, CLAmpHandler); } }
64 void SendToCLAmp_ChangedFile(const char *FileName) { BMessage Msg(CLAMP_MSG_CHANGED); BLooper *l; if (CLAmpHandler && (l=CLAmpHandler->Looper())) { Msg.AddString(CLAMP_CHANGED_LABEL, FileName); l->PostMessage (&Msg, CLAmpHandler); } }
65 void SendToCLAmp_AddFile(const char *FileName) { BMessage Msg(CLAMP_MSG_ADD); BLooper *l; if (CLAmpHandler && (l=CLAmpHandler->Looper())) { Msg.AddString(CLAMP_ADD_LABEL, FileName); l->PostMessage (&Msg, CLAmpHandler); } }
66 void SendToCLAmp_AddFile(const char *FileName, long SongId) { BMessage Msg(CLAMP_MSG_ADD); BLooper *l; if (CLAmpHandler && (l=CLAmpHandler->Looper())) { Msg.AddString(CLAMP_ADD_LABEL, FileName); Msg.AddInt32(CLAMP_SONG_ID, SongId); l->PostMessage (&Msg, CLAmpHandler); } }
67 void SendToCLAmp_DelFile(const char *FileName) { BMessage Msg(CLAMP_MSG_DEL); BLooper *l; if (CLAmpHandler && (l=CLAmpHandler->Looper())) { Msg.AddString(CLAMP_DEL_LABEL, FileName); l->PostMessage (&Msg, CLAmpHandler); } }
68 void SendToCLAmp_DelFile(long SongId) { BMessage Msg(CLAMP_MSG_DEL); BLooper *l; if (CLAmpHandler && (l=CLAmpHandler->Looper())) { Msg.AddInt32(CLAMP_SONG_ID, SongId); l->PostMessage (&Msg, CLAmpHandler); } }
69 bool IsMaster() { return (Master); }
70 private:
71 char *Label, *Description;
72 BHandler *CLAmpHandler;
73 bool Master;
74 };
75
76 #define CURRENT_INPUT_PLUGIN_VERSION 3
77 #define INPUT_PLUGIN_VERSION_MASK 0x0fff
78 #define PUT_THIS_PLUGIN_LAST 0x1000
79
80 #endif