migrating to the latest JUCE version
This commit is contained in:
@ -1,140 +1,140 @@
|
||||
#ifndef _REAPER_PLUGIN_FX_EMBED_H_
|
||||
#define _REAPER_PLUGIN_FX_EMBED_H_
|
||||
|
||||
|
||||
/*
|
||||
* to support via VST2: canDo("hasCockosEmbeddedUI") should return 0xbeef0000
|
||||
* dispatcher will be called with opcode=effVendorSpecific, index=effEditDraw, value=parm2, ptr=(void*)(INT_PTR)parm3, opt=message (REAPER_FXEMBED_WM_*)
|
||||
*
|
||||
* to support via VST3: IController should support IReaperUIEmbedInterface, see reaper_vst3_interfaces.h
|
||||
*
|
||||
* to support via LV2: todo
|
||||
*/
|
||||
|
||||
// these alias to win32's WM_*
|
||||
|
||||
|
||||
#define REAPER_FXEMBED_WM_IS_SUPPORTED 0x0000
|
||||
/* return 1 if embedding is supported and available
|
||||
* return -1 if embedding is supported and unavailable
|
||||
* return 0 if embedding is not supported
|
||||
*/
|
||||
|
||||
#define REAPER_FXEMBED_WM_CREATE 0x0001 // called when embedding begins (return value ignored)
|
||||
#define REAPER_FXEMBED_WM_DESTROY 0x0002 // called when embedding ends (return value ignored)
|
||||
|
||||
|
||||
|
||||
typedef struct REAPER_FXEMBED_DrawInfo // alias of REAPER_inline_positioninfo
|
||||
{
|
||||
int context; // 0=unknown (v6.23 and earlier), 1=TCP, 2=MCP
|
||||
int dpi; // 0=unknown (v6.23 and earlier), otherwise 24.8 fixed point (256=100%)
|
||||
int mousewheel_amt; // for REAPER_FXEMBED_WM_MOUSEWHEEL, 120 = step, typically
|
||||
double _res2;
|
||||
|
||||
int width, height;
|
||||
int mouse_x, mouse_y;
|
||||
|
||||
int flags; // REAPER_FXEMBED_DRAWINFO_FLAG_PAINT_OPTIONAL etc
|
||||
int _res3;
|
||||
|
||||
void *spare[6];
|
||||
} REAPER_FXEMBED_DrawInfo;
|
||||
|
||||
#define REAPER_FXEMBED_DRAWINFO_FLAG_PAINT_OPTIONAL 1
|
||||
#define REAPER_FXEMBED_DRAWINFO_FLAG_LBUTTON_CAPTURED 0x10000
|
||||
#define REAPER_FXEMBED_DRAWINFO_FLAG_RBUTTON_CAPTURED 0x20000
|
||||
|
||||
#define REAPER_FXEMBED_WM_PAINT 0x000F
|
||||
/*
|
||||
* draw embedded UI.
|
||||
* parm2: REAPER_FXEMBED_IBitmap * to draw into. note
|
||||
* parm3: REAPER_FXEMBED_DrawInfo *
|
||||
*
|
||||
* if flags has REAPER_FXEMBED_DRAWINFO_FLAG_PAINT_OPTIONAL set, update is optional. if no change since last draw, return 0.
|
||||
* if flags has REAPER_FXEMBED_DRAWINFO_FLAG_LBUTTON_CAPTURED set, left mouse button is down and captured
|
||||
* if flags has REAPER_FXEMBED_DRAWINFO_FLAG_RBUTTON_CAPTURED set, right mouse button is down and captured
|
||||
*
|
||||
* HiDPI:
|
||||
* if REAPER_FXEMBED_IBitmap::Extended(REAPER_FXEMBED_EXT_GET_ADVISORY_SCALING,NULL) returns nonzero, then it is a 24.8 scalefactor for UI drawing
|
||||
*
|
||||
* return 1 if drawing occurred, 0 otherwise.
|
||||
*
|
||||
*/
|
||||
|
||||
#define REAPER_FXEMBED_WM_SETCURSOR 0x0020 // parm3: REAPER_FXEMBED_DrawInfo*. set mouse cursor and return REAPER_FXEMBED_RETNOTIFY_HANDLED, or return 0.
|
||||
|
||||
#define REAPER_FXEMBED_WM_GETMINMAXINFO 0x0024
|
||||
/*
|
||||
* get size hints. parm3 = (REAPER_FXEMBED_SizeHints*). return 1 if supported
|
||||
* note that these are just hints, the actual size may vary
|
||||
*/
|
||||
typedef struct REAPER_FXEMBED_SizeHints { // alias to MINMAXINFO
|
||||
int preferred_aspect; // 16.16 fixed point (65536 = 1:1, 32768 = 1:2, etc)
|
||||
int minimum_aspect; // 16.16 fixed point
|
||||
|
||||
int _res1, _res2, _res3, _res4;
|
||||
|
||||
int min_width, min_height;
|
||||
int max_width, max_height;
|
||||
} REAPER_FXEMBED_SizeHints;
|
||||
|
||||
/*
|
||||
* mouse messages
|
||||
* parm3 = (REAPER_FXEMBED_DrawInfo*)
|
||||
* capture is automatically set on mouse down, released on mouse up
|
||||
* when not captured, will always receive a mousemove when exiting the window
|
||||
*/
|
||||
|
||||
#define REAPER_FXEMBED_WM_MOUSEMOVE 0x0200
|
||||
#define REAPER_FXEMBED_WM_LBUTTONDOWN 0x0201
|
||||
#define REAPER_FXEMBED_WM_LBUTTONUP 0x0202
|
||||
#define REAPER_FXEMBED_WM_LBUTTONDBLCLK 0x0203
|
||||
#define REAPER_FXEMBED_WM_RBUTTONDOWN 0x0204
|
||||
#define REAPER_FXEMBED_WM_RBUTTONUP 0x0205
|
||||
#define REAPER_FXEMBED_WM_RBUTTONDBLCLK 0x0206
|
||||
#define REAPER_FXEMBED_WM_MOUSEWHEEL 0x020A
|
||||
|
||||
|
||||
/* REAPER_FXEMBED_WM_SETCURSOR should return REAPER_FXEMBED_RETNOTIFY_HANDLED if a cursor was set
|
||||
*/
|
||||
#define REAPER_FXEMBED_RETNOTIFY_HANDLED 0x0000001
|
||||
|
||||
/* if the mouse messages return with REAPER_FXEMBED_RETNOTIFY_INVALIDATE set, a non-optional
|
||||
* redraw is initiated (generally sooner than the next timer-based redraw)
|
||||
*/
|
||||
#define REAPER_FXEMBED_RETNOTIFY_INVALIDATE 0x1000000
|
||||
|
||||
/*
|
||||
* bitmap interface
|
||||
* this is an alias of LICE_IBitmap etc from WDL/lice/lice.h
|
||||
*
|
||||
*/
|
||||
#define REAPER_FXEMBED_RGBA(r,g,b,a) (((b)&0xff)|(((g)&0xff)<<8)|(((r)&0xff)<<16)|(((a)&0xff)<<24))
|
||||
#define REAPER_FXEMBED_GETB(v) ((v)&0xff)
|
||||
#define REAPER_FXEMBED_GETG(v) (((v)>>8)&0xff)
|
||||
#define REAPER_FXEMBED_GETR(v) (((v)>>16)&0xff)
|
||||
#define REAPER_FXEMBED_GETA(v) (((v)>>24)&0xff)
|
||||
|
||||
#ifdef __cplusplus
|
||||
class REAPER_FXEMBED_IBitmap // alias of LICE_IBitmap
|
||||
{
|
||||
public:
|
||||
virtual ~REAPER_FXEMBED_IBitmap() { }
|
||||
|
||||
virtual unsigned int *getBits()=0;
|
||||
virtual int getWidth()=0;
|
||||
virtual int getHeight()=0;
|
||||
virtual int getRowSpan()=0; // includes any off-bitmap data. this is in sizeof(unsigned int) units, not bytes.
|
||||
virtual bool isFlipped() { return false; }
|
||||
virtual bool resize(int w, int h)=0;
|
||||
|
||||
virtual void *getDC() { return 0; } // do not use
|
||||
|
||||
virtual INT_PTR Extended(int id, void* data) { return 0; }
|
||||
};
|
||||
#endif
|
||||
|
||||
#define REAPER_FXEMBED_EXT_GET_ADVISORY_SCALING 0x2003 // data ignored, returns .8 fixed point. returns 0 if unscaled
|
||||
|
||||
#endif
|
||||
#ifndef _REAPER_PLUGIN_FX_EMBED_H_
|
||||
#define _REAPER_PLUGIN_FX_EMBED_H_
|
||||
|
||||
|
||||
/*
|
||||
* to support via VST2: canDo("hasCockosEmbeddedUI") should return 0xbeef0000
|
||||
* dispatcher will be called with opcode=effVendorSpecific, index=effEditDraw, value=parm2, ptr=(void*)(INT_PTR)parm3, opt=message (REAPER_FXEMBED_WM_*)
|
||||
*
|
||||
* to support via VST3: IController should support IReaperUIEmbedInterface, see reaper_vst3_interfaces.h
|
||||
*
|
||||
* to support via LV2: todo
|
||||
*/
|
||||
|
||||
// these alias to win32's WM_*
|
||||
|
||||
|
||||
#define REAPER_FXEMBED_WM_IS_SUPPORTED 0x0000
|
||||
/* return 1 if embedding is supported and available
|
||||
* return -1 if embedding is supported and unavailable
|
||||
* return 0 if embedding is not supported
|
||||
*/
|
||||
|
||||
#define REAPER_FXEMBED_WM_CREATE 0x0001 // called when embedding begins (return value ignored)
|
||||
#define REAPER_FXEMBED_WM_DESTROY 0x0002 // called when embedding ends (return value ignored)
|
||||
|
||||
|
||||
|
||||
typedef struct REAPER_FXEMBED_DrawInfo // alias of REAPER_inline_positioninfo
|
||||
{
|
||||
int context; // 0=unknown (v6.23 and earlier), 1=TCP, 2=MCP
|
||||
int dpi; // 0=unknown (v6.23 and earlier), otherwise 24.8 fixed point (256=100%)
|
||||
int mousewheel_amt; // for REAPER_FXEMBED_WM_MOUSEWHEEL, 120 = step, typically
|
||||
double _res2;
|
||||
|
||||
int width, height;
|
||||
int mouse_x, mouse_y;
|
||||
|
||||
int flags; // REAPER_FXEMBED_DRAWINFO_FLAG_PAINT_OPTIONAL etc
|
||||
int _res3;
|
||||
|
||||
void *spare[6];
|
||||
} REAPER_FXEMBED_DrawInfo;
|
||||
|
||||
#define REAPER_FXEMBED_DRAWINFO_FLAG_PAINT_OPTIONAL 1
|
||||
#define REAPER_FXEMBED_DRAWINFO_FLAG_LBUTTON_CAPTURED 0x10000
|
||||
#define REAPER_FXEMBED_DRAWINFO_FLAG_RBUTTON_CAPTURED 0x20000
|
||||
|
||||
#define REAPER_FXEMBED_WM_PAINT 0x000F
|
||||
/*
|
||||
* draw embedded UI.
|
||||
* parm2: REAPER_FXEMBED_IBitmap * to draw into. note
|
||||
* parm3: REAPER_FXEMBED_DrawInfo *
|
||||
*
|
||||
* if flags has REAPER_FXEMBED_DRAWINFO_FLAG_PAINT_OPTIONAL set, update is optional. if no change since last draw, return 0.
|
||||
* if flags has REAPER_FXEMBED_DRAWINFO_FLAG_LBUTTON_CAPTURED set, left mouse button is down and captured
|
||||
* if flags has REAPER_FXEMBED_DRAWINFO_FLAG_RBUTTON_CAPTURED set, right mouse button is down and captured
|
||||
*
|
||||
* HiDPI:
|
||||
* if REAPER_FXEMBED_IBitmap::Extended(REAPER_FXEMBED_EXT_GET_ADVISORY_SCALING,NULL) returns nonzero, then it is a 24.8 scalefactor for UI drawing
|
||||
*
|
||||
* return 1 if drawing occurred, 0 otherwise.
|
||||
*
|
||||
*/
|
||||
|
||||
#define REAPER_FXEMBED_WM_SETCURSOR 0x0020 // parm3: REAPER_FXEMBED_DrawInfo*. set mouse cursor and return REAPER_FXEMBED_RETNOTIFY_HANDLED, or return 0.
|
||||
|
||||
#define REAPER_FXEMBED_WM_GETMINMAXINFO 0x0024
|
||||
/*
|
||||
* get size hints. parm3 = (REAPER_FXEMBED_SizeHints*). return 1 if supported
|
||||
* note that these are just hints, the actual size may vary
|
||||
*/
|
||||
typedef struct REAPER_FXEMBED_SizeHints { // alias to MINMAXINFO
|
||||
int preferred_aspect; // 16.16 fixed point (65536 = 1:1, 32768 = 1:2, etc)
|
||||
int minimum_aspect; // 16.16 fixed point
|
||||
|
||||
int _res1, _res2, _res3, _res4;
|
||||
|
||||
int min_width, min_height;
|
||||
int max_width, max_height;
|
||||
} REAPER_FXEMBED_SizeHints;
|
||||
|
||||
/*
|
||||
* mouse messages
|
||||
* parm3 = (REAPER_FXEMBED_DrawInfo*)
|
||||
* capture is automatically set on mouse down, released on mouse up
|
||||
* when not captured, will always receive a mousemove when exiting the window
|
||||
*/
|
||||
|
||||
#define REAPER_FXEMBED_WM_MOUSEMOVE 0x0200
|
||||
#define REAPER_FXEMBED_WM_LBUTTONDOWN 0x0201
|
||||
#define REAPER_FXEMBED_WM_LBUTTONUP 0x0202
|
||||
#define REAPER_FXEMBED_WM_LBUTTONDBLCLK 0x0203
|
||||
#define REAPER_FXEMBED_WM_RBUTTONDOWN 0x0204
|
||||
#define REAPER_FXEMBED_WM_RBUTTONUP 0x0205
|
||||
#define REAPER_FXEMBED_WM_RBUTTONDBLCLK 0x0206
|
||||
#define REAPER_FXEMBED_WM_MOUSEWHEEL 0x020A
|
||||
|
||||
|
||||
/* REAPER_FXEMBED_WM_SETCURSOR should return REAPER_FXEMBED_RETNOTIFY_HANDLED if a cursor was set
|
||||
*/
|
||||
#define REAPER_FXEMBED_RETNOTIFY_HANDLED 0x0000001
|
||||
|
||||
/* if the mouse messages return with REAPER_FXEMBED_RETNOTIFY_INVALIDATE set, a non-optional
|
||||
* redraw is initiated (generally sooner than the next timer-based redraw)
|
||||
*/
|
||||
#define REAPER_FXEMBED_RETNOTIFY_INVALIDATE 0x1000000
|
||||
|
||||
/*
|
||||
* bitmap interface
|
||||
* this is an alias of LICE_IBitmap etc from WDL/lice/lice.h
|
||||
*
|
||||
*/
|
||||
#define REAPER_FXEMBED_RGBA(r,g,b,a) (((b)&0xff)|(((g)&0xff)<<8)|(((r)&0xff)<<16)|(((a)&0xff)<<24))
|
||||
#define REAPER_FXEMBED_GETB(v) ((v)&0xff)
|
||||
#define REAPER_FXEMBED_GETG(v) (((v)>>8)&0xff)
|
||||
#define REAPER_FXEMBED_GETR(v) (((v)>>16)&0xff)
|
||||
#define REAPER_FXEMBED_GETA(v) (((v)>>24)&0xff)
|
||||
|
||||
#ifdef __cplusplus
|
||||
class REAPER_FXEMBED_IBitmap // alias of LICE_IBitmap
|
||||
{
|
||||
public:
|
||||
virtual ~REAPER_FXEMBED_IBitmap() { }
|
||||
|
||||
virtual unsigned int *getBits()=0;
|
||||
virtual int getWidth()=0;
|
||||
virtual int getHeight()=0;
|
||||
virtual int getRowSpan()=0; // includes any off-bitmap data. this is in sizeof(unsigned int) units, not bytes.
|
||||
virtual bool isFlipped() { return false; }
|
||||
virtual bool resize(int w, int h)=0;
|
||||
|
||||
virtual void *getDC() { return 0; } // do not use
|
||||
|
||||
virtual INT_PTR Extended(int id, void* data) { return 0; }
|
||||
};
|
||||
#endif
|
||||
|
||||
#define REAPER_FXEMBED_EXT_GET_ADVISORY_SCALING 0x2003 // data ignored, returns .8 fixed point. returns 0 if unscaled
|
||||
|
||||
#endif
|
||||
|
@ -1,31 +1,31 @@
|
||||
#ifndef _REAPER_VST3_INTERFACES_H_
|
||||
#define _REAPER_VST3_INTERFACES_H_
|
||||
|
||||
class IReaperHostApplication : public FUnknown // available from IHostApplication in REAPER v5.02+
|
||||
{
|
||||
public:
|
||||
// Gets a REAPER Extension API function by name, returns NULL is failed
|
||||
virtual void* PLUGIN_API getReaperApi(CStringA funcname) = 0;
|
||||
|
||||
virtual void* PLUGIN_API getReaperParent(uint32 w) = 0; // get parent track(=1), take(=2), project(=3), fxdsp(=4), trackchan(=5)
|
||||
|
||||
// Multi-purpose function, returns NULL if unsupported
|
||||
virtual void* PLUGIN_API reaperExtended(uint32 call, void *parm1, void *parm2, void *parm3) = 0;
|
||||
|
||||
static const FUID iid;
|
||||
};
|
||||
|
||||
DECLARE_CLASS_IID (IReaperHostApplication, 0x79655E36, 0x77EE4267, 0xA573FEF7, 0x4912C27C)
|
||||
|
||||
class IReaperUIEmbedInterface : public FUnknown // supported by REAPER v6.24+, queried from plug-in IController
|
||||
{
|
||||
public:
|
||||
// note: VST2 uses CanDo "hasCockosEmbeddedUI"==0xbeef0000, then opcode=effVendorSpecific, index=effEditDraw, opt=(float)msg, value=parm2, ptr=parm3
|
||||
// see reaper_plugin_fx_embed.h
|
||||
virtual Steinberg::TPtrInt embed_message(int msg, Steinberg::TPtrInt parm2, Steinberg::TPtrInt parm3) = 0;
|
||||
|
||||
static const FUID iid;
|
||||
};
|
||||
|
||||
DECLARE_CLASS_IID (IReaperUIEmbedInterface, 0x049bf9e7, 0xbc74ead0, 0xc4101e86, 0x7f725981)
|
||||
#endif
|
||||
#ifndef _REAPER_VST3_INTERFACES_H_
|
||||
#define _REAPER_VST3_INTERFACES_H_
|
||||
|
||||
class IReaperHostApplication : public FUnknown // available from IHostApplication in REAPER v5.02+
|
||||
{
|
||||
public:
|
||||
// Gets a REAPER Extension API function by name, returns NULL is failed
|
||||
virtual void* PLUGIN_API getReaperApi(CStringA funcname) = 0;
|
||||
|
||||
virtual void* PLUGIN_API getReaperParent(uint32 w) = 0; // get parent track(=1), take(=2), project(=3), fxdsp(=4), trackchan(=5)
|
||||
|
||||
// Multi-purpose function, returns NULL if unsupported
|
||||
virtual void* PLUGIN_API reaperExtended(uint32 call, void *parm1, void *parm2, void *parm3) = 0;
|
||||
|
||||
static const FUID iid;
|
||||
};
|
||||
|
||||
DECLARE_CLASS_IID (IReaperHostApplication, 0x79655E36, 0x77EE4267, 0xA573FEF7, 0x4912C27C)
|
||||
|
||||
class IReaperUIEmbedInterface : public FUnknown // supported by REAPER v6.24+, queried from plug-in IController
|
||||
{
|
||||
public:
|
||||
// note: VST2 uses CanDo "hasCockosEmbeddedUI"==0xbeef0000, then opcode=effVendorSpecific, index=effEditDraw, opt=(float)msg, value=parm2, ptr=parm3
|
||||
// see reaper_plugin_fx_embed.h
|
||||
virtual Steinberg::TPtrInt embed_message(int msg, Steinberg::TPtrInt parm2, Steinberg::TPtrInt parm3) = 0;
|
||||
|
||||
static const FUID iid;
|
||||
};
|
||||
|
||||
DECLARE_CLASS_IID (IReaperUIEmbedInterface, 0x049bf9e7, 0xbc74ead0, 0xc4101e86, 0x7f725981)
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user