00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00021 #ifndef SUIL_SUIL_H
00022 #define SUIL_SUIL_H
00023
00024 #include <stdbool.h>
00025 #include <stdint.h>
00026
00027 #include "lv2/lv2plug.in/ns/lv2core/lv2.h"
00028
00029 #ifdef SUIL_SHARED
00030 # ifdef _WIN32
00031 # define SUIL_LIB_IMPORT __declspec(dllimport)
00032 # define SUIL_LIB_EXPORT __declspec(dllexport)
00033 # else
00034 # define SUIL_LIB_IMPORT __attribute__((visibility("default")))
00035 # define SUIL_LIB_EXPORT __attribute__((visibility("default")))
00036 # endif
00037 # ifdef SUIL_INTERNAL
00038 # define SUIL_API SUIL_LIB_EXPORT
00039 # else
00040 # define SUIL_API SUIL_LIB_IMPORT
00041 # endif
00042 #else
00043 # define SUIL_API
00044 #endif
00045
00046 #ifdef __cplusplus
00047 extern "C" {
00048 #endif
00049
00063 typedef struct SuilHostImpl SuilHost;
00064
00066 typedef struct SuilInstanceImpl SuilInstance;
00067
00069 typedef void* SuilWidget;
00070
00079 typedef void* SuilController;
00080
00082 typedef void (*SuilPortWriteFunc)(
00083 SuilController controller,
00084 uint32_t port_index,
00085 uint32_t buffer_size,
00086 uint32_t protocol,
00087 void const* buffer);
00088
00090 typedef uint32_t (*SuilPortIndexFunc)(
00091 SuilController controller,
00092 const char* port_symbol);
00093
00095 typedef uint32_t (*SuilPortSubscribeFunc)(
00096 SuilController controller,
00097 uint32_t port_index,
00098 uint32_t protocol,
00099 const LV2_Feature* const* features);
00100
00102 typedef uint32_t (*SuilPortUnsubscribeFunc)(
00103 SuilController controller,
00104 uint32_t port_index,
00105 uint32_t protocol,
00106 const LV2_Feature* const* features);
00107
00109 typedef void (*SuilTouchFunc)(
00110 SuilController controller,
00111 uint32_t port_index,
00112 bool grabbed);
00113
00121 SUIL_API
00122 SuilHost*
00123 suil_host_new(SuilPortWriteFunc write_func,
00124 SuilPortIndexFunc index_func,
00125 SuilPortSubscribeFunc subscribe_func,
00126 SuilPortUnsubscribeFunc unsubscribe_func);
00127
00133 SUIL_API
00134 void
00135 suil_host_set_touch_func(SuilHost* host,
00136 SuilTouchFunc touch_func);
00137
00141 SUIL_API
00142 void
00143 suil_host_free(SuilHost* host);
00144
00154 SUIL_API
00155 unsigned
00156 suil_ui_supported(const char* host_type_uri,
00157 const char* ui_type_uri);
00158
00178 SUIL_API
00179 SuilInstance*
00180 suil_instance_new(SuilHost* host,
00181 SuilController controller,
00182 const char* container_type_uri,
00183 const char* plugin_uri,
00184 const char* ui_uri,
00185 const char* ui_type_uri,
00186 const char* ui_bundle_path,
00187 const char* ui_binary_path,
00188 const LV2_Feature* const* features);
00189
00196 SUIL_API
00197 void
00198 suil_instance_free(SuilInstance* instance);
00199
00208 SUIL_API
00209 SuilWidget
00210 suil_instance_get_widget(SuilInstance* instance);
00211
00215 SUIL_API
00216 void
00217 suil_instance_port_event(SuilInstance* instance,
00218 uint32_t port_index,
00219 uint32_t buffer_size,
00220 uint32_t format,
00221 const void* buffer);
00222
00226 SUIL_API
00227 const void*
00228 suil_instance_extension_data(SuilInstance* instance,
00229 const char* uri);
00230
00235 #ifdef __cplusplus
00236 }
00237 #endif
00238
00239 #endif