Suil
0.4.4
|
00001 /* 00002 Copyright 2011 David Robillard <http://drobilla.net> 00003 00004 Permission to use, copy, modify, and/or distribute this software for any 00005 purpose with or without fee is hereby granted, provided that the above 00006 copyright notice and this permission notice appear in all copies. 00007 00008 THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 00009 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 00010 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 00011 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 00012 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 00013 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 00014 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 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)(SuilController controller, 00083 uint32_t port_index, 00084 uint32_t buffer_size, 00085 uint32_t protocol, 00086 void const* buffer); 00087 00089 typedef uint32_t (*SuilPortIndexFunc)(SuilController controller, 00090 const char* port_symbol); 00091 00093 typedef uint32_t (*SuilPortSubscribeFunc)(SuilController controller, 00094 uint32_t port_index, 00095 uint32_t protocol, 00096 const LV2_Feature* const* features); 00097 00098 00100 typedef uint32_t (*SuilPortUnsubscribeFunc)(SuilController controller, 00101 uint32_t port_index, 00102 uint32_t protocol, 00103 const LV2_Feature* const* features); 00104 00112 SUIL_API 00113 SuilHost* 00114 suil_host_new(SuilPortWriteFunc write_func, 00115 SuilPortIndexFunc index_func, 00116 SuilPortSubscribeFunc subscribe_func, 00117 SuilPortUnsubscribeFunc unsubscribe_func); 00118 00122 SUIL_API 00123 void 00124 suil_host_free(SuilHost* host); 00125 00135 SUIL_API 00136 unsigned 00137 suil_ui_supported(const char* host_type_uri, 00138 const char* ui_type_uri); 00139 00153 SUIL_API 00154 SuilInstance* 00155 suil_instance_new(SuilHost* host, 00156 SuilController controller, 00157 const char* container_type_uri, 00158 const char* plugin_uri, 00159 const char* ui_uri, 00160 const char* ui_type_uri, 00161 const char* ui_bundle_path, 00162 const char* ui_binary_path, 00163 const LV2_Feature* const* features); 00164 00171 SUIL_API 00172 void 00173 suil_instance_free(SuilInstance* instance); 00174 00183 SUIL_API 00184 SuilWidget 00185 suil_instance_get_widget(SuilInstance* instance); 00186 00190 SUIL_API 00191 void 00192 suil_instance_port_event(SuilInstance* instance, 00193 uint32_t port_index, 00194 uint32_t buffer_size, 00195 uint32_t format, 00196 const void* buffer); 00197 00201 SUIL_API 00202 const void* 00203 suil_instance_extension_data(SuilInstance* instance, 00204 const char* uri); 00205 00210 #ifdef __cplusplus 00211 } /* extern "C" */ 00212 #endif 00213 00214 #endif /* SUIL_SUIL_H */