Suil
0.6.0
|
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)( 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 00172 SUIL_API 00173 SuilInstance* 00174 suil_instance_new(SuilHost* host, 00175 SuilController controller, 00176 const char* container_type_uri, 00177 const char* plugin_uri, 00178 const char* ui_uri, 00179 const char* ui_type_uri, 00180 const char* ui_bundle_path, 00181 const char* ui_binary_path, 00182 const LV2_Feature* const* features); 00183 00190 SUIL_API 00191 void 00192 suil_instance_free(SuilInstance* instance); 00193 00202 SUIL_API 00203 SuilWidget 00204 suil_instance_get_widget(SuilInstance* instance); 00205 00209 SUIL_API 00210 void 00211 suil_instance_port_event(SuilInstance* instance, 00212 uint32_t port_index, 00213 uint32_t buffer_size, 00214 uint32_t format, 00215 const void* buffer); 00216 00220 SUIL_API 00221 const void* 00222 suil_instance_extension_data(SuilInstance* instance, 00223 const char* uri); 00224 00229 #ifdef __cplusplus 00230 } /* extern "C" */ 00231 #endif 00232 00233 #endif /* SUIL_SUIL_H */