LMMS
Loading...
Searching...
No Matches
lv2_ui.h File Reference
#include <stdint.h>
#include "lv2/lv2plug.in/ns/lv2core/lv2.h"
#include <stdbool.h>

Go to the source code of this file.

Classes

struct  _LV2UI_Descriptor
struct  _LV2UI_Resize
struct  _LV2UI_Port_Map
struct  _LV2UI_Port_Subscribe
struct  _LV2UI_Touch
struct  _LV2UI_Idle_Interface
struct  _LV2UI_Show_Interface
struct  _LV2UI_Peak_Data

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__idleInterface   LV2_UI_PREFIX "idleInterface"
#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__showInterface   LV2_UI_PREFIX "showInterface"
#define LV2_UI__touch   LV2_UI_PREFIX "touch"
#define LV2_UI__ui   LV2_UI_PREFIX "ui"
#define LV2_UI__updateRate   LV2_UI_PREFIX "updateRate"
#define LV2_UI__windowTitle   LV2_UI_PREFIX "windowTitle"
#define LV2UI_INVALID_PORT_INDEX   ((uint32_t)-1)

Typedefs

typedef voidLV2UI_Widget
typedef voidLV2UI_Handle
typedef voidLV2UI_Controller
typedef voidLV2UI_Feature_Handle
typedef void(* LV2UI_Write_Function) (LV2UI_Controller controller, uint32_t port_index, uint32_t buffer_size, uint32_t port_protocol, const void *buffer)
typedef struct _LV2UI_Descriptor LV2UI_Descriptor
typedef struct _LV2UI_Resize LV2UI_Resize
typedef struct _LV2UI_Port_Map LV2UI_Port_Map
typedef struct _LV2UI_Port_Subscribe LV2UI_Port_Subscribe
typedef struct _LV2UI_Touch LV2UI_Touch
typedef struct _LV2UI_Idle_Interface LV2UI_Idle_Interface
typedef struct _LV2UI_Show_Interface LV2UI_Show_Interface
typedef struct _LV2UI_Peak_Data LV2UI_Peak_Data
typedef const LV2UI_Descriptor *(* LV2UI_DescriptorFunction) (uint32_t index)

Functions

LV2_SYMBOL_EXPORT const LV2UI_Descriptorlv2ui_descriptor (uint32_t index)

Macro Definition Documentation

◆ LV2_UI__binary

#define LV2_UI__binary   LV2_UI_PREFIX "binary"

◆ LV2_UI__CocoaUI

#define LV2_UI__CocoaUI   LV2_UI_PREFIX "CocoaUI"

◆ LV2_UI__fixedSize

#define LV2_UI__fixedSize   LV2_UI_PREFIX "fixedSize"

◆ LV2_UI__Gtk3UI

#define LV2_UI__Gtk3UI   LV2_UI_PREFIX "Gtk3UI"

◆ LV2_UI__GtkUI

#define LV2_UI__GtkUI   LV2_UI_PREFIX "GtkUI"

◆ LV2_UI__idleInterface

#define LV2_UI__idleInterface   LV2_UI_PREFIX "idleInterface"

◆ LV2_UI__notifyType

#define LV2_UI__notifyType   LV2_UI_PREFIX "notifyType"

◆ LV2_UI__noUserResize

#define LV2_UI__noUserResize   LV2_UI_PREFIX "noUserResize"

◆ LV2_UI__parent

#define LV2_UI__parent   LV2_UI_PREFIX "parent"

◆ LV2_UI__plugin

#define LV2_UI__plugin   LV2_UI_PREFIX "plugin"

◆ LV2_UI__portIndex

#define LV2_UI__portIndex   LV2_UI_PREFIX "portIndex"

◆ LV2_UI__portMap

#define LV2_UI__portMap   LV2_UI_PREFIX "portMap"

◆ LV2_UI__PortNotification

#define LV2_UI__PortNotification   LV2_UI_PREFIX "PortNotification"

◆ LV2_UI__portNotification

#define LV2_UI__portNotification   LV2_UI_PREFIX "portNotification"

◆ LV2_UI__portSubscribe

#define LV2_UI__portSubscribe   LV2_UI_PREFIX "portSubscribe"

◆ LV2_UI__Qt4UI

#define LV2_UI__Qt4UI   LV2_UI_PREFIX "Qt4UI"

◆ LV2_UI__resize

#define LV2_UI__resize   LV2_UI_PREFIX "resize"

◆ LV2_UI__showInterface

#define LV2_UI__showInterface   LV2_UI_PREFIX "showInterface"

◆ LV2_UI__touch

#define LV2_UI__touch   LV2_UI_PREFIX "touch"

◆ LV2_UI__UI

#define LV2_UI__UI   LV2_UI_PREFIX "UI"

◆ LV2_UI__ui

#define LV2_UI__ui   LV2_UI_PREFIX "ui"

◆ LV2_UI__updateRate

#define LV2_UI__updateRate   LV2_UI_PREFIX "updateRate"

◆ LV2_UI__WindowsUI

#define LV2_UI__WindowsUI   LV2_UI_PREFIX "WindowsUI"

◆ LV2_UI__windowTitle

#define LV2_UI__windowTitle   LV2_UI_PREFIX "windowTitle"

◆ LV2_UI__X11UI

#define LV2_UI__X11UI   LV2_UI_PREFIX "X11UI"

◆ LV2_UI_PREFIX

#define LV2_UI_PREFIX   LV2_UI_URI "#"

◆ LV2_UI_URI

#define LV2_UI_URI   "http://lv2plug.in/ns/extensions/ui"

◆ LV2UI_INVALID_PORT_INDEX

#define LV2UI_INVALID_PORT_INDEX   ((uint32_t)-1)

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

Typedef Documentation

◆ LV2UI_Controller

A pointer to a controller provided by the host.

The UI may compare this to NULL, but otherwise MUST NOT interpret it.

◆ LV2UI_Descriptor

typedef struct _LV2UI_Descriptor LV2UI_Descriptor

A plugin UI.

A pointer to an object of this type is returned by the lv2ui_descriptor() function.

◆ LV2UI_DescriptorFunction

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

The type of the lv2ui_descriptor() function.

◆ LV2UI_Feature_Handle

A pointer to opaque data for a feature.

◆ LV2UI_Handle

typedef void* LV2UI_Handle

A pointer to UI instance internals.

The host may compare this to NULL, but otherwise MUST NOT interpret it.

◆ LV2UI_Idle_Interface

typedef struct _LV2UI_Idle_Interface LV2UI_Idle_Interface

UI Idle Interface (LV2_UI__idleInterface)

UIs can provide this interface to have an idle() callback called by the host rapidly to update the UI.

◆ LV2UI_Peak_Data

typedef struct _LV2UI_Peak_Data LV2UI_Peak_Data

Peak data for a slice of time, the update format for ui:peakProtocol.

◆ LV2UI_Port_Map

typedef struct _LV2UI_Port_Map LV2UI_Port_Map

Feature to map port symbols to UIs.

This can be used by the UI to get the index for a port with the given symbol. This makes it possible to implement and distribute a UI separately from the plugin (since symbol, unlike index, is a stable port identifier).

◆ LV2UI_Port_Subscribe

typedef struct _LV2UI_Port_Subscribe LV2UI_Port_Subscribe

Feature to subscribe to port updates (LV2_UI__portSubscribe).

◆ LV2UI_Resize

typedef struct _LV2UI_Resize LV2UI_Resize

Feature/interface for resizable UIs (LV2_UI__resize).

This structure is used in two ways: as a feature passed by the host via LV2UI_Descriptor::instantiate(), or as an interface provided by a UI via LV2UI_Descriptor::extension_data()).

◆ LV2UI_Show_Interface

typedef struct _LV2UI_Show_Interface LV2UI_Show_Interface

UI Show Interface (LV2_UI__showInterface)

UIs can provide this interface to show and hide a window, which allows them to function in hosts unable to embed their widget. This allows any UI to provide a fallback for embedding that works in any host.

If used:

  • The host MUST use LV2UI_Idle_Interface to drive the UI.
  • The UI MUST return non-zero from LV2UI_Idle_Interface::idle() when it has been closed.
  • If idle() returns non-zero, the host MUST call hide() and stop calling idle(). It MAY later call show() then resume calling idle().

◆ LV2UI_Touch

typedef struct _LV2UI_Touch LV2UI_Touch

A feature to notify the host that the user has grabbed a UI control.

◆ LV2UI_Widget

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.

◆ LV2UI_Write_Function

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

A host-provided function that sends 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 protocol not supported by the host, but the host MUST gracefully ignore any protocol it does not understand.