| #ifndef TOONZ_HOSTIF_H__ |
| #define TOONZ_HOSTIF_H__ |
| |
| #include <stdint.h> |
| #include <stddef.h> |
| #include "toonz_plugin.h" |
| #include "toonz_params.h" |
| |
| #define TOONZ_PLUGIN_CLASS_MODIFIER_MASK (0xffUL << (32 - 8)) |
| #define TOONZ_PLUGIN_CLASS_MODIFIER_GEOMETRIC (1UL << (32 - 1)) |
| #define TOONZ_PLUGIN_CLASS_POSTPROCESS_ (0x10UL) |
| #define TOONZ_PLUGIN_CLASS_POSTPROCESS_SLAB (TOONZ_PLUGIN_CLASS_POSTPROCESS_ | 0UL) |
| |
| #define TOONZ_PORT_TYPE_RASTER (0) |
| |
| #if defined(_MSC_VER) |
| #pragma pack(push, 1) |
| #endif |
| |
| static const toonz_UUID toonz_uuid_node__ = {0xCC14EA21, 0x13D8, 0x4A3B, 0x9375, 0xAA4F68C9DDDD}; |
| static const toonz_UUID toonz_uuid_port__ = {0x2F89A423, 0x1D2D, 0x433F, 0xB93E, 0xCFFD83745F6F}; |
| static const toonz_UUID toonz_uuid_tile__ = {0x882BD525, 0x937E, 0x427C, 0x9D68, 0x4ECA651F6562}; |
| static const toonz_UUID toonz_uuid_fx_node__ = {0x26F9FC53, 0x632B, 0x422F, 0x87A0, 0x8A4547F55474}; |
| static const toonz_UUID toonz_uuid_param__ = {0x2E3E4A55, 0x8539, 0x4520, 0xA266, 0x15D32189EC4D}; |
| static const toonz_UUID toonz_uuid_setup__ = {0xcfde9107, 0xc59d, 0x414c, 0xae4a, 0x3d115ba97933}; |
| |
| #define TOONZ_UUID_NODE (&toonz_uuid_node__) |
| #define TOONZ_UUID_PORT (&toonz_uuid_port__) |
| #define TOONZ_UUID_TILE (&toonz_uuid_tile__) |
| #define TOONZ_UUID_FXNODE (&toonz_uuid_fx_node__) |
| #define TOONZ_UUID_PARAM (&toonz_uuid_param__) |
| #define TOONZ_UUID_SETUP (&toonz_uuid_setup__) |
| |
| |
| struct toonz_host_interface_t_ { |
| toonz_if_version_t ver; |
| int (*query_interface)(const toonz_UUID *, void **); |
| void (*release_interface)(void *); |
| } TOONZ_PACK; |
| typedef toonz_host_interface_t_ toonz_host_interface_t; |
| |
| struct toonz_rect_t_ { |
| double x0; |
| double y0; |
| double x1; |
| double y1; |
| } TOONZ_PACK; |
| |
| typedef struct toonz_rect_t_ toonz_rect_t; |
| |
| typedef void *toonz_param_handle_t; |
| |
| struct toonz_param_interface_t_ { |
| toonz_if_version_t ver; |
| int (*get_type)(toonz_param_handle_t param, double frame, int *type, int *counts); |
| int (*get_value)(toonz_param_handle_t param, double frame, int *pcounts, void *pvalue); |
| int (*set_value)(toonz_param_handle_t param, double frame, int counts, const void *pvalue); |
| int (*get_string_value)(toonz_param_handle_t param, int *wholesize, int rcvbufsize, char *pvalue); |
| int (*get_spectrum_value)(toonz_param_handle_t param, double frame, double x, toonz_param_spectrum_t *pvalue); |
| } TOONZ_PACK; |
| |
| typedef toonz_param_interface_t_ toonz_param_interface_t; |
| |
| typedef void *toonz_fxnode_handle_t; |
| |
| typedef void *toonz_port_handle_t; |
| |
| struct toonz_port_interface_t_ { |
| toonz_if_version_t ver; |
| int (*is_connected)(toonz_port_handle_t port, int *is_connected); |
| int (*get_fx)(toonz_port_handle_t port, toonz_fxnode_handle_t *fxnode); |
| } TOONZ_PACK; |
| |
| typedef toonz_port_interface_t_ toonz_port_interface_t; |
| |
| typedef void *toonz_tile_handle_t; |
| |
| struct toonz_tile_interface_t_ { |
| toonz_if_version_t ver; |
| int (*get_raw_address_unsafe)(toonz_tile_handle_t handle, void **); |
| int (*get_raw_stride)(toonz_tile_handle_t handle, int *stride); |
| int (*get_element_type)(toonz_tile_handle_t handle, int *element); |
| int (*copy_rect)(toonz_tile_handle_t handle, int left, int top, int width, int height, void *dst, int dststride); |
| |
| int (*create_from)(toonz_tile_handle_t handle, toonz_tile_handle_t *newhandle); |
| int (*create)(toonz_tile_handle_t *newhandle); |
| int (*destroy)(toonz_tile_handle_t handle); |
| |
| int (*get_rectangle)(toonz_tile_handle_t handle, toonz_rect_t *rect); |
| int (*safen)(toonz_tile_handle_t handle); |
| } TOONZ_PACK; |
| |
| |
| |
| |
| enum { |
| TOONZ_TILE_TYPE_NONE, |
| TOONZ_TILE_TYPE_32P, |
| TOONZ_TILE_TYPE_64P, |
| TOONZ_TILE_TYPE_GR8P, |
| TOONZ_TILE_TYPE_GR16P, |
| TOONZ_TILE_TYPE_GRDP, |
| TOONZ_TILE_TYPE_YUV422P, |
| }; |
| |
| typedef void *toonz_node_handle_t; |
| |
| struct toonz_node_interface_t_ { |
| toonz_if_version_t ver; |
| int (*get_input_port)(toonz_node_handle_t node, const char *name, toonz_port_handle_t *port); |
| |
| int (*get_rect)(toonz_rect_t *rect, double *x0, double *y0, double *x1, double *y1); |
| int (*set_rect)(toonz_rect_t *rect, double x0, double y0, double x1, double y1); |
| |
| int (*get_param)(toonz_node_handle_t node, const char *name, toonz_param_handle_t *param); |
| |
| int (*set_user_data)(toonz_node_handle_t node, void *user_data); |
| int (*get_user_data)(toonz_node_handle_t node, void **user_data); |
| |
| } TOONZ_PACK; |
| |
| typedef toonz_node_interface_t_ toonz_node_interface_t; |
| |
| typedef void *toonz_handle_t; |
| typedef toonz_tile_interface_t_ toonz_tile_interface_t; |
| struct toonz_affine_t_ { |
| double a11; |
| double a12; |
| double a13; |
| double a21; |
| double a22; |
| double a23; |
| } TOONZ_PACK; |
| |
| typedef toonz_affine_t_ toonz_affine_t; |
| |
| typedef void *toonz_node_handle_t; |
| |
| struct toonz_rendering_setting_t_ { |
| toonz_if_version_t ver; |
| |
| const void *context; |
| |
| toonz_affine_t affine; |
| |
| double gamma; |
| |
| double time_stretch_from; |
| |
| double time_stretch_to; |
| |
| double stereo_scopic_shift; |
| |
| |
| |
| |
| int bpp; |
| |
| |
| |
| |
| int max_tile_size; |
| |
| int quality; |
| |
| int field_prevalence; |
| |
| int stereoscopic; |
| |
| int is_swatch; |
| |
| int user_cachable; |
| |
| int apply_shrink_to_viewer; |
| |
| toonz_rect_t camera_box; |
| |
| volatile int *is_canceled; |
| } TOONZ_PACK; |
| |
| typedef toonz_rendering_setting_t_ toonz_rendering_setting_t; |
| |
| struct toonz_nodal_rasterfx_handler_t_ { |
| toonz_if_version_t ver; |
| void (*do_compute)(toonz_node_handle_t node, const toonz_rendering_setting_t *, double frame, toonz_tile_handle_t tile); |
| int (*do_get_bbox)(toonz_node_handle_t node, const toonz_rendering_setting_t *, double frame, toonz_rect_t *rect); |
| int (*can_handle)(toonz_node_handle_t node, const toonz_rendering_setting_t *, double frame); |
| size_t (*get_memory_requirement)(toonz_node_handle_t node, const toonz_rendering_setting_t *, double frame, const toonz_rect_t *rect); |
| |
| void (*on_new_frame)(toonz_node_handle_t node, const toonz_rendering_setting_t *, double frame); |
| void (*on_end_frame)(toonz_node_handle_t node, const toonz_rendering_setting_t *, double frame); |
| |
| int (*create)(toonz_node_handle_t node); |
| int (*destroy)(toonz_node_handle_t node); |
| int (*setup)(toonz_node_handle_t node); |
| int (*start_render)(toonz_node_handle_t node); |
| int (*end_render)(toonz_node_handle_t node); |
| |
| void *reserved_ptr_[5]; |
| } TOONZ_PACK; |
| |
| typedef toonz_nodal_rasterfx_handler_t_ toonz_nodal_rasterfx_handler_t; |
| |
| struct toonz_fxnode_interface_t_ { |
| toonz_if_version_t ver; |
| |
| int (*get_bbox)(toonz_fxnode_handle_t fxnode, const toonz_rendering_setting_t *, double frame, toonz_rect_t *rect, int *get_bbox); |
| int (*can_handle)(toonz_fxnode_handle_t fxnode, const toonz_rendering_setting_t *, double frame, int *can_handle); |
| |
| int (*get_input_port_count)(toonz_fxnode_handle_t fxnode, int *count); |
| int (*get_input_port)(toonz_fxnode_handle_t fxnode, int index, toonz_port_handle_t *port); |
| int (*compute_to_tile)(toonz_fxnode_handle_t fxnode, const toonz_rendering_setting_t *, double frame, const toonz_rect_t *rect, toonz_tile_handle_t intile, toonz_tile_handle_t outtile); |
| } TOONZ_PACK; |
| |
| typedef struct toonz_fxnode_interface_t_ toonz_fxnode_interface_t; |
| |
| struct toonz_setup_interface_t_ { |
| toonz_if_version_t ver; |
| int (*set_parameter_pages)(toonz_node_handle_t node, int num, toonz_param_page_t *pages); |
| int (*set_parameter_pages_with_error)(toonz_node_handle_t node, int num, toonz_param_page_t *pages, int *reason, void **position); |
| int (*add_input_port)(toonz_node_handle_t node, const char *name, int type); |
| |
| } TOONZ_PACK; |
| typedef struct toonz_setup_interface_t_ toonz_setup_interface_t; |
| |
| #if defined(_MSC_VER) |
| #pragma pack(pop) |
| #endif |
| |
| #if defined(__cplusplus) |
| namespace toonz |
| { |
| typedef toonz_rendering_setting_t rendering_setting_t; |
| typedef toonz_affine_t affine_t; |
| typedef toonz_rect_t rect_t; |
| |
| typedef toonz_param_handle_t param_handle_t; |
| |
| typedef toonz_node_handle_t node_handle_t; |
| typedef toonz_port_handle_t port_handle_t; |
| typedef toonz_tile_handle_t tile_handle_t; |
| typedef toonz_rendering_setting_t rendering_setting_t; |
| typedef toonz_fxnode_handle_t fxnode_handle_t; |
| |
| typedef toonz_param_interface_t param_interface_t; |
| |
| typedef toonz_node_interface_t node_interface_t; |
| typedef toonz_host_interface_t host_interface_t; |
| typedef toonz_tile_interface_t tile_interface_t; |
| typedef toonz_port_interface_t port_interface_t; |
| typedef toonz_nodal_rasterfx_handler_t nodal_rasterfx_handler_t; |
| typedef toonz_fxnode_interface_t fxnode_interface_t; |
| typedef toonz_setup_interface_t setup_interface_t; |
| } |
| #endif |
| |
| #endif |