#ifndef _INCLUDE_AUDIOPLUGIN_PROTOS_H
#define _INCLUDE_AUDIOPLUGIN_PROTOS_H

#include <exec/types.h>
#include <pragma/intuition_lib.h>


#ifdef __cplusplus
extern "C" {
#endif


APTR InitPlugin(PluginData *data, MsgPort *windowport, CxObj *broker); /* use this port as window->user_port!!! */
void QuitPlugin(APTR data);  /* Cleanup before closing plugin */

BOOL ShowPlugin(APTR data, MsgPort *port);  /* Show plugins window, if any */
BOOL AboutPlugin(APTR data, MsgPort *port); /*...*/
BOOL PluginPrefs(APTR data, MsgPort *port); /*...*/
void HidePlugin(APTR data);   /* Hide the plugins window, if any */
BOOL HiddenPlugin(APTR data); /* Is plugin main window hidden, TRUE if no window! */

BOOL HandlePluginWindowMsg(APTR data, IntuiMessage **); /* called whenever msg arrives at windowport...
												  not necessarily a msg for this plugin!!!
												  set *IntuiMessage = NULL if it was */
BOOL PluginHandleKey(APTR data, ULONG key);

void InitTransformation(APTR data,
	const char *label, ULONG duration, ULONG samplefreq, ULONG channels, ULONG bitrate, ULONG elapsed); /* called before every new song! */
void Transform(APTR data, WORD *left_buffer, WORD *right_buffer, ULONG samples);        /* called with a decoded sample-buffer */
void PluginDisplay(APTR data, const WORD *left_buffer, const WORD *right_buffer, ULONG samples);    /* called with a decoded sample-buffer */
void PluginClear(APTR data);
void EndTransformation(APTR data);

struct PluginData *GetPluginData(APTR data);

void LockPluginGUI(APTR data);
void UnLockPluginGUI(APTR data);

void PluginPriority(APTR data, LONG pri);


#ifdef __cplusplus
}
#endif


#endif
