LV2  1.0.13
Data Structures | Macros | Typedefs | Functions
ui.h File Reference

C header for the LV2 UI extension http://lv2plug.in/ns/extensions/ui. More...

Data Structures

struct  LV2UI_Descriptor
 The implementation of a UI. More...
 
struct  LV2UI_Resize
 UI Resize Feature (LV2_UI__resize) More...
 
struct  LV2UI_Port_Map
 Port Map Feature (LV2_UI__portMap). More...
 
struct  LV2UI_Port_Subscribe
 Port subscription feature (LV2_UI__portSubscribe);. More...
 
struct  LV2UI_Touch
 A feature to notify the host the user has grabbed a UI control. More...
 
struct  LV2UI_Peak_Data
 Peak data for a slice of time, the update format for ui:peakProtocol. More...
 

Macros

#define LV2_UI_URI   "http://lv2plug.in/ns/extensions/ui"
 
#define LV2_UI_PREFIX   LV2_UI_URI "#"
 
#define LV2_UI__CocoaUI   LV2_UI_PREFIX "CocoaUI"
 
#define LV2_UI__Gtk3UI   LV2_UI_PREFIX "Gtk3UI"
 
#define LV2_UI__GtkUI   LV2_UI_PREFIX "GtkUI"
 
#define LV2_UI__PortNotification   LV2_UI_PREFIX "PortNotification"
 
#define LV2_UI__Qt4UI   LV2_UI_PREFIX "Qt4UI"
 
#define LV2_UI__UI   LV2_UI_PREFIX "UI"
 
#define LV2_UI__WindowsUI   LV2_UI_PREFIX "WindowsUI"
 
#define LV2_UI__X11UI   LV2_UI_PREFIX "X11UI"
 
#define LV2_UI__binary   LV2_UI_PREFIX "binary"
 
#define LV2_UI__fixedSize   LV2_UI_PREFIX "fixedSize"
 
#define LV2_UI__noUserResize   LV2_UI_PREFIX "noUserResize"
 
#define LV2_UI__notifyType   LV2_UI_PREFIX "notifyType"
 
#define LV2_UI__parent   LV2_UI_PREFIX "parent"
 
#define LV2_UI__plugin   LV2_UI_PREFIX "plugin"
 
#define LV2_UI__portIndex   LV2_UI_PREFIX "portIndex"
 
#define LV2_UI__portMap   LV2_UI_PREFIX "portMap"
 
#define LV2_UI__portNotification   LV2_UI_PREFIX "portNotification"
 
#define LV2_UI__portSubscribe   LV2_UI_PREFIX "portSubscribe"
 
#define LV2_UI__resize   LV2_UI_PREFIX "resize"
 
#define LV2_UI__touch   LV2_UI_PREFIX "touch"
 
#define LV2_UI__ui   LV2_UI_PREFIX "ui"
 
#define LV2UI_INVALID_PORT_INDEX   ((uint32_t)-1)
 The index returned by LV2_UI_Port_Port::port_index() for unknown ports.
 

Typedefs

typedef void * LV2UI_Widget
 A pointer to some widget or other type of UI handle.
 
typedef void * LV2UI_Handle
 A pointer to an instance of a UI.
 
typedef void * LV2UI_Controller
 A pointer to a controller provided by the host.
 
typedef void * LV2UI_Feature_Handle
 A pointer to opaque data for a feature.
 
typedef void(* LV2UI_Write_Function )(LV2UI_Controller controller, uint32_t port_index, uint32_t buffer_size, uint32_t port_protocol, const void *buffer)
 The type of the host-provided function that the UI can use to send data to a plugin's input ports.
 
typedef const LV2UI_Descriptor *(* LV2UI_DescriptorFunction )(uint32_t index)
 The type of the lv2ui_descriptor() function.
 

Functions

LV2_SYMBOL_EXPORT const
LV2UI_Descriptor
lv2ui_descriptor (uint32_t index)
 A plugin UI programmer must include a function called "lv2ui_descriptor" with the following function prototype within the shared object file.
 

Detailed Description

C header for the LV2 UI extension http://lv2plug.in/ns/extensions/ui.

Macro Definition Documentation

#define LV2_UI_URI   "http://lv2plug.in/ns/extensions/ui"
#define LV2_UI_PREFIX   LV2_UI_URI "#"
#define LV2_UI__CocoaUI   LV2_UI_PREFIX "CocoaUI"
#define LV2_UI__Gtk3UI   LV2_UI_PREFIX "Gtk3UI"
#define LV2_UI__GtkUI   LV2_UI_PREFIX "GtkUI"
#define LV2_UI__PortNotification   LV2_UI_PREFIX "PortNotification"
#define LV2_UI__Qt4UI   LV2_UI_PREFIX "Qt4UI"
#define LV2_UI__UI   LV2_UI_PREFIX "UI"
#define LV2_UI__WindowsUI   LV2_UI_PREFIX "WindowsUI"
#define LV2_UI__X11UI   LV2_UI_PREFIX "X11UI"
#define LV2_UI__binary   LV2_UI_PREFIX "binary"
#define LV2_UI__fixedSize   LV2_UI_PREFIX "fixedSize"
#define LV2_UI__noUserResize   LV2_UI_PREFIX "noUserResize"
#define LV2_UI__notifyType   LV2_UI_PREFIX "notifyType"
#define LV2_UI__parent   LV2_UI_PREFIX "parent"
#define LV2_UI__plugin   LV2_UI_PREFIX "plugin"
#define LV2_UI__portIndex   LV2_UI_PREFIX "portIndex"
#define LV2_UI__portMap   LV2_UI_PREFIX "portMap"
#define LV2_UI__portNotification   LV2_UI_PREFIX "portNotification"
#define LV2_UI__portSubscribe   LV2_UI_PREFIX "portSubscribe"
#define LV2_UI__resize   LV2_UI_PREFIX "resize"
#define LV2_UI__touch   LV2_UI_PREFIX "touch"
#define LV2_UI__ui   LV2_UI_PREFIX "ui"
#define LV2UI_INVALID_PORT_INDEX   ((uint32_t)-1)

The index returned by LV2_UI_Port_Port::port_index() for unknown ports.

Typedef Documentation

typedef void* LV2UI_Widget

A pointer to some widget or other type of UI handle.

The actual type is defined by the type of the UI.

typedef void* LV2UI_Handle

A pointer to an instance of a UI.

It is valid to compare this to NULL (0 for C++) but otherwise the host MUST not attempt to interpret it. The UI plugin may use it to reference internal instance data.

typedef void* LV2UI_Controller

A pointer to a controller provided by the host.

It is valid to compare this to NULL (0 for C++) but otherwise the UI plugin MUST NOT attempt to interpret it. The host may use it to reference internal instance data.

typedef void* LV2UI_Feature_Handle

A pointer to opaque data for a feature.

typedef void(* LV2UI_Write_Function)(LV2UI_Controller controller, uint32_t port_index, uint32_t buffer_size, uint32_t port_protocol, const void *buffer)

The type of the host-provided function that the UI can use to send data to a plugin's input ports.

The buffer parameter must point to a block of data, buffer_size bytes large. The format of this data and how the host should use it is defined by the port_protocol. This buffer is owned by the UI and is only valid for the duration of this call.

The port_protocol parameter should either be 0 or the URID for a ui:PortProtocol. If it is 0, the protocol is implicitly ui:floatProtocol, the port must be an lv2:ControlPort input, buffer must point to a single float value, and buffer_size must be sizeof(float).

The UI SHOULD NOT use a PortProtocol not supported by the host (i.e. one not passed by the host as a feature), but the host MUST gracefully ignore any port_protocol it does not understand.

typedef const LV2UI_Descriptor*(* LV2UI_DescriptorFunction)(uint32_t index)

The type of the lv2ui_descriptor() function.

Function Documentation

LV2_SYMBOL_EXPORT const LV2UI_Descriptor* lv2ui_descriptor ( uint32_t  index)

A plugin UI programmer must include a function called "lv2ui_descriptor" with the following function prototype within the shared object file.

This function will have C-style linkage (if you are using C++ this is taken care of by the 'extern "C"' clause at the top of the file). This function is loaded from the library by the UI host and called to get a LV2UI_Descriptor for the wanted plugin.

Just like lv2_descriptor(), this function takes an index parameter. The index should only be used for enumeration and not as any sort of ID number - the host should just iterate from 0 and upwards until the function returns NULL or a descriptor with an URI matching the one the host is looking for.