Suil  0.6.0
Opaque Types | Functions
Suil

Opaque Types

typedef struct SuilHostImpl SuilHost
typedef struct SuilInstanceImpl SuilInstance
typedef void * SuilWidget
typedef void * SuilController
typedef void(* SuilPortWriteFunc )(SuilController controller, uint32_t port_index, uint32_t buffer_size, uint32_t protocol, void const *buffer)
typedef uint32_t(* SuilPortIndexFunc )(SuilController controller, const char *port_symbol)
typedef uint32_t(* SuilPortSubscribeFunc )(SuilController controller, uint32_t port_index, uint32_t protocol, const LV2_Feature *const *features)
typedef uint32_t(* SuilPortUnsubscribeFunc )(SuilController controller, uint32_t port_index, uint32_t protocol, const LV2_Feature *const *features)
typedef void(* SuilTouchFunc )(SuilController controller, uint32_t port_index, bool grabbed)

Functions

SuilHostsuil_host_new (SuilPortWriteFunc write_func, SuilPortIndexFunc index_func, SuilPortSubscribeFunc subscribe_func, SuilPortUnsubscribeFunc unsubscribe_func)
void suil_host_set_touch_func (SuilHost *host, SuilTouchFunc touch_func)
void suil_host_free (SuilHost *host)
unsigned suil_ui_supported (const char *host_type_uri, const char *ui_type_uri)
SuilInstancesuil_instance_new (SuilHost *host, SuilController controller, const char *container_type_uri, const char *plugin_uri, const char *ui_uri, const char *ui_type_uri, const char *ui_bundle_path, const char *ui_binary_path, const LV2_Feature *const *features)
void suil_instance_free (SuilInstance *instance)
SuilWidget suil_instance_get_widget (SuilInstance *instance)
void suil_instance_port_event (SuilInstance *instance, uint32_t port_index, uint32_t buffer_size, uint32_t format, const void *buffer)
const void * suil_instance_extension_data (SuilInstance *instance, const char *uri)

Detailed Description

A library for hosting LV2 plugin UIs.


Typedef Documentation

typedef struct SuilHostImpl SuilHost

UI host descriptor.

This contains the various functions that a plugin UI may use to communicate with the plugin. It is passed to suil_instance_new to provide these functions to the UI.

typedef struct SuilInstanceImpl SuilInstance

An instance of an LV2 plugin UI.

typedef void* SuilWidget

Opaque pointer to a UI widget.

typedef void* SuilController

UI controller.

This is an opaque pointer passed by the user which is passed to the various UI control functions (e.g. SuilPortWriteFunc). It is typically used to pass a pointer to some controller object the host uses to communicate with plugins.

typedef void(* SuilPortWriteFunc)(SuilController controller, uint32_t port_index, uint32_t buffer_size, uint32_t protocol, void const *buffer)

Function to write/send a value to a port.

typedef uint32_t(* SuilPortIndexFunc)(SuilController controller, const char *port_symbol)

Function to return the index for a port by symbol.

typedef uint32_t(* SuilPortSubscribeFunc)(SuilController controller, uint32_t port_index, uint32_t protocol, const LV2_Feature *const *features)

Function to subscribe to notifications for a port.

typedef uint32_t(* SuilPortUnsubscribeFunc)(SuilController controller, uint32_t port_index, uint32_t protocol, const LV2_Feature *const *features)

Function to unsubscribe from notifications for a port.

typedef void(* SuilTouchFunc)(SuilController controller, uint32_t port_index, bool grabbed)

Function called when a control is grabbed or released.


Function Documentation

SuilHost* suil_host_new ( SuilPortWriteFunc  write_func,
SuilPortIndexFunc  index_func,
SuilPortSubscribeFunc  subscribe_func,
SuilPortUnsubscribeFunc  unsubscribe_func 
)

Create a new UI host descriptor.

Parameters:
write_funcFunction to send a value to a plugin port.
index_funcFunction to get the index for a port by symbol.
subscribe_funcFunction to subscribe to port updates.
unsubscribe_funcFunction to unsubscribe from port updates.
void suil_host_set_touch_func ( SuilHost host,
SuilTouchFunc  touch_func 
)

Set a touch function for a host descriptor.

Note this function will only be called if the UI supports it.

void suil_host_free ( SuilHost host)

Free host.

unsigned suil_ui_supported ( const char *  host_type_uri,
const char *  ui_type_uri 
)

Check if suil can wrap a UI type.

Parameters:
host_type_uriThe URI of the desired widget type of the host, corresponding to the type_uri parameter of suil_instance_new.
ui_type_uriThe URI of the UI widget type.
Returns:
0 if wrapping is unsupported, otherwise the quality of the wrapping where 1 is the highest quality (direct native embedding with no wrapping) and increaing values are of a progressively lower quality and/or stability.
SuilInstance* suil_instance_new ( SuilHost host,
SuilController  controller,
const char *  container_type_uri,
const char *  plugin_uri,
const char *  ui_uri,
const char *  ui_type_uri,
const char *  ui_bundle_path,
const char *  ui_binary_path,
const LV2_Feature *const *  features 
)

Instantiate a UI for an LV2 plugin.

Parameters:
hostHost descriptor.
controllerOpaque host controller pointer.
container_type_uriURI of the desired host container widget type.
plugin_uriURI of the plugin to instantiate this UI for.
ui_uriURI of the specifically desired UI.
ui_type_uriURI of the actual UI widget type.
ui_bundle_pathPath of the UI bundle.
ui_binary_pathPath of the UI binary.
featuresNULL-terminated array of supported features, or NULL.
Returns:
A new UI instance, or NULL if instantiation failed.
void suil_instance_free ( SuilInstance instance)

Free a plugin UI instance.

The caller must ensure all references to the UI have been dropped before calling this function (e.g. it has been removed from its parent).

SuilWidget suil_instance_get_widget ( SuilInstance instance)

Get the widget for a UI instance.

Returns an opaque pointer to a widget, the type of which matches the container_type_uri parameter of suil_instance_new. Note this may be a wrapper widget created by Suil, and not necessarily the widget directly implemented by the UI.

void suil_instance_port_event ( SuilInstance instance,
uint32_t  port_index,
uint32_t  buffer_size,
uint32_t  format,
const void *  buffer 
)

Notify the UI about a change in a plugin port.

const void* suil_instance_extension_data ( SuilInstance instance,
const char *  uri 
)

Return a data structure defined by some LV2 extension URI.