//-------------------------------------------------------------------------------------------------------
// VST Plug-Ins SDK
// Version 2.3 Extension
// © 2003, Steinberg Media Technologies, All Rights Reserved
//-------------------------------------------------------------------------------------------------------

#ifndef __AEffEditor__
#define __AEffEditor__

class AudioEffect;

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

#ifndef __aeffectx__
#include "aeffectx.h"
#endif

#define VST_2_1_EXTENSIONS 1

//----------------------------------------------------------------------
// class AEffEditor Declaration
//----------------------------------------------------------------------
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; }

	#if VST_2_1_EXTENSIONS
	virtual long onKeyDown (VstKeyCode &keyCode) { keyCode = keyCode; return -1; }
	virtual long onKeyUp (VstKeyCode &keyCode) { keyCode = keyCode; return -1; }
	virtual long setKnobMode (int val) { return 0; };

	virtual bool onWheel (float distance) { return false; };
	#endif

protected:
	AEffEditor () {};

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

#endif // __AEffEditor__
//-------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------

