#ifndef __AEffEditor__
#define __AEffEditor__

class AudioEffect;

struct ERect
{
	short top;
	short left;
	short bottom;
	short right;
};

class AEffEditor
{
public:
	AEffEditor (AudioEffect *effect) {this->effect = effect; updateFlag = 0; }
	virtual ~AEffEditor() {}

	virtual long getRect(ERect **rect) {*rect = 0; return 0;}
	virtual long open(void *ptr) {systemWindow = ptr; return 0;}
	virtual void close() {}
	virtual void idle() { if(updateFlag) {updateFlag = 0; update();} }
	
#if MAC
	virtual void draw(ERect *rect) {rect = rect;}
	virtual long mouse(long x, long y) {x = x; y = y; return 0;}
	virtual long key(long keyCode) {keyCode = keyCode; return 0;}
	virtual void top() {}
	virtual void sleep() {}
#endif
	virtual void update() {}
	virtual void postUpdate() {updateFlag = 1;}
	
protected:
	AEffEditor () {};

	AudioEffect *effect;
	void *systemWindow;
	long updateFlag;
};

#endif

