|
|
@@ -1,22 +1,30 @@ |
|
|
/* -*- Mode: C ; c-basic-offset: 2 -*- */ |
|
|
|
|
|
/***************************************************************************** |
|
|
|
|
|
* |
|
|
|
|
|
* This work is in public domain. |
|
|
|
|
|
* |
|
|
|
|
|
* This file is distributed in the hope that it will be useful, |
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
|
|
|
|
* |
|
|
|
|
|
* If you have questions, contact Nedko Arnaudov <nedko@arnaudov.name> or |
|
|
|
|
|
* ask in #lad channel, FreeNode IRC network. |
|
|
|
|
|
* |
|
|
|
|
|
*****************************************************************************/ |
|
|
|
|
|
|
|
|
|
|
|
#ifndef LV2_EXTERNAL_UI_H__5AFE09A5_0FB7_47AF_924E_2AF0F8DE8873__INCLUDED |
|
|
|
|
|
#define LV2_EXTERNAL_UI_H__5AFE09A5_0FB7_47AF_924E_2AF0F8DE8873__INCLUDED |
|
|
|
|
|
|
|
|
|
|
|
/** UI extension suitable for out-of-process UIs */ |
|
|
|
|
|
#define LV2_EXTERNAL_UI_URI "http://nedko.arnaudov.name/lv2/external_ui/" |
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
LV2 External UI extension |
|
|
|
|
|
This work is in public domain. |
|
|
|
|
|
|
|
|
|
|
|
This file is distributed in the hope that it will be useful, |
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
|
|
|
|
|
|
|
|
|
|
If you have questions, contact Filipe Coelho (aka falkTX) <falktx@falktx.com> |
|
|
|
|
|
or ask in #lad channel, FreeNode IRC network. |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
@file lv2_external_ui.h |
|
|
|
|
|
C header for the LV2 External UI extension <http://kxstudio.sf.net/ns/lv2ext/external-ui>. |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
#ifndef LV2_EXTERNAL_UI_H |
|
|
|
|
|
#define LV2_EXTERNAL_UI_H |
|
|
|
|
|
|
|
|
|
|
|
#include "ui.h" |
|
|
|
|
|
|
|
|
|
|
|
#define LV2_EXTERNAL_UI_URI "http://kxstudio.sf.net/ns/lv2ext/external-ui" |
|
|
|
|
|
#define LV2_EXTERNAL_UI_PREFIX LV2_EXTERNAL_UI_URI "#" |
|
|
|
|
|
|
|
|
|
|
|
#define LV2_EXTERNAL_UI__Host LV2_EXTERNAL_UI_PREFIX "Host" |
|
|
|
|
|
#define LV2_EXTERNAL_UI__Widget LV2_EXTERNAL_UI_PREFIX "Widget" |
|
|
|
|
|
|
|
|
/** This extension used to be defined by a lv2plug.in URI */ |
|
|
/** This extension used to be defined by a lv2plug.in URI */ |
|
|
#define LV2_EXTERNAL_UI_DEPRECATED_URI "http://lv2plug.in/ns/extensions/ui#external" |
|
|
#define LV2_EXTERNAL_UI_DEPRECATED_URI "http://lv2plug.in/ns/extensions/ui#external" |
|
|
@@ -24,53 +32,49 @@ |
|
|
#ifdef __cplusplus |
|
|
#ifdef __cplusplus |
|
|
extern "C" { |
|
|
extern "C" { |
|
|
#endif |
|
|
#endif |
|
|
#if 0 |
|
|
|
|
|
} /* Adjust editor indent */ |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* When LV2_EXTERNAL_UI_URI UI is instantiated, the returned |
|
|
|
|
|
* LV2UI_Widget handle must be cast to pointer to struct lv2_external_ui. |
|
|
|
|
|
|
|
|
* When LV2_EXTERNAL_UI__Widget UI is instantiated, the returned |
|
|
|
|
|
* LV2UI_Widget handle must be cast to pointer to LV2_External_UI_Widget. |
|
|
* UI is created in invisible state. |
|
|
* UI is created in invisible state. |
|
|
*/ |
|
|
*/ |
|
|
struct lv2_external_ui |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
typedef struct _LV2_External_UI_Widget { |
|
|
/** |
|
|
/** |
|
|
* Host calls this function regulary. UI library implementing the |
|
|
* Host calls this function regulary. UI library implementing the |
|
|
* callback may do IPC or redraw the UI. |
|
|
* callback may do IPC or redraw the UI. |
|
|
* |
|
|
* |
|
|
* @param _this_ the UI context |
|
|
* @param _this_ the UI context |
|
|
*/ |
|
|
*/ |
|
|
void (* run)(struct lv2_external_ui * _this_); |
|
|
|
|
|
|
|
|
void (*run)(struct _LV2_External_UI_Widget * _this_); |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Host calls this function to make the plugin UI visible. |
|
|
* Host calls this function to make the plugin UI visible. |
|
|
* |
|
|
* |
|
|
* @param _this_ the UI context |
|
|
* @param _this_ the UI context |
|
|
*/ |
|
|
*/ |
|
|
void (* show)(struct lv2_external_ui * _this_); |
|
|
|
|
|
|
|
|
void (*show)(struct _LV2_External_UI_Widget * _this_); |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Host calls this function to make the plugin UI invisible again. |
|
|
* Host calls this function to make the plugin UI invisible again. |
|
|
* |
|
|
* |
|
|
* @param _this_ the UI context |
|
|
* @param _this_ the UI context |
|
|
*/ |
|
|
*/ |
|
|
void (* hide)(struct lv2_external_ui * _this_); |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
void (*hide)(struct _LV2_External_UI_Widget * _this_); |
|
|
|
|
|
} LV2_External_UI_Widget; |
|
|
|
|
|
|
|
|
#define LV2_EXTERNAL_UI_RUN(ptr) (ptr)->run(ptr) |
|
|
|
|
|
|
|
|
#define LV2_EXTERNAL_UI_RUN(ptr) (ptr)->run(ptr) |
|
|
#define LV2_EXTERNAL_UI_SHOW(ptr) (ptr)->show(ptr) |
|
|
#define LV2_EXTERNAL_UI_SHOW(ptr) (ptr)->show(ptr) |
|
|
#define LV2_EXTERNAL_UI_HIDE(ptr) (ptr)->hide(ptr) |
|
|
#define LV2_EXTERNAL_UI_HIDE(ptr) (ptr)->hide(ptr) |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* On UI instantiation, host must supply LV2_EXTERNAL_UI_URI |
|
|
|
|
|
* feature. LV2_Feature::data must be pointer to struct lv2_external_ui_host. */ |
|
|
|
|
|
struct lv2_external_ui_host |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
* On UI instantiation, host must supply LV2_EXTERNAL_UI__Host feature. |
|
|
|
|
|
* LV2_Feature::data must be pointer to LV2_External_UI_Host. |
|
|
|
|
|
*/ |
|
|
|
|
|
typedef struct _LV2_External_UI_Host { |
|
|
/** |
|
|
/** |
|
|
* Callback that plugin UI will call |
|
|
* Callback that plugin UI will call |
|
|
* when UI (GUI window) is closed by user. |
|
|
* when UI (GUI window) is closed by user. |
|
|
* This callback wil; be called during execution of lv2_external_ui::run() |
|
|
|
|
|
|
|
|
* This callback will be called during execution of LV2_External_UI_Widget::run() |
|
|
* (i.e. not from background thread). |
|
|
* (i.e. not from background thread). |
|
|
* |
|
|
* |
|
|
* After this callback is called, UI is defunct. Host must call |
|
|
* After this callback is called, UI is defunct. Host must call |
|
|
@@ -80,7 +84,7 @@ struct lv2_external_ui_host |
|
|
* @param controller Host context associated with plugin UI, as |
|
|
* @param controller Host context associated with plugin UI, as |
|
|
* supplied to LV2UI_Descriptor::instantiate() |
|
|
* supplied to LV2UI_Descriptor::instantiate() |
|
|
*/ |
|
|
*/ |
|
|
void (* ui_closed)(LV2UI_Controller controller); |
|
|
|
|
|
|
|
|
void (*ui_closed)(LV2UI_Controller controller); |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Optional (may be NULL) "user friendly" identifier which the UI |
|
|
* Optional (may be NULL) "user friendly" identifier which the UI |
|
|
@@ -92,13 +96,10 @@ struct lv2_external_ui_host |
|
|
* LV2UI_Descriptor::instantiate() |
|
|
* LV2UI_Descriptor::instantiate() |
|
|
*/ |
|
|
*/ |
|
|
const char * plugin_human_id; |
|
|
const char * plugin_human_id; |
|
|
}; |
|
|
|
|
|
|
|
|
} LV2_External_UI_Host; |
|
|
|
|
|
|
|
|
#if 0 |
|
|
|
|
|
{ /* Adjust editor indent */ |
|
|
|
|
|
#endif |
|
|
|
|
|
#ifdef __cplusplus |
|
|
#ifdef __cplusplus |
|
|
} /* extern "C" */ |
|
|
} /* extern "C" */ |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#endif /* #ifndef LV2_EXTERNAL_UI_H__5AFE09A5_0FB7_47AF_924E_2AF0F8DE8873__INCLUDED */ |
|
|
|
|
|
|
|
|
#endif /* LV2_EXTERNAL_UI_H */ |