#ifndef _CASM_NODE_DEFINED_H #define _CASM_NODE_DEFINED_H #include "raster.h" #include "casm.h" #include "tmacro.h" #include "affine.h" #include "toonzproc.h" #define CASM_NODE_HD \ struct CASM_NODEPROC *proc; \ char bg_flag, bad_branch; \ ULONG mask; \ int label; #define CASM_UNARY_NODE_HD \ CASM_NODE_HD \ CASM_NODE *arg; #define CASM_BINARY_NODE_HD \ CASM_NODE_HD \ CASM_NODE *arg_dn, *arg_up; \ int marker_dn, marker_up; #define CASM_N_ARY_NODE_HD \ CASM_NODE_HD \ int num_args; \ CASM_NODE **args; typedef struct CASM_NODE { CASM_NODE_HD } CASM_NODE; typedef struct CASM_TILE { RASTER r; int x1, y1, x2, y2; } CASM_TILE; typedef struct CASM_NODESIZE { float x1, y1, x2, y2; float sbx1, sby1, sbx2, sby2; } CASM_NODESIZE; typedef struct USR_IMAGE { void *buffer; enum img_type type; int wrap, lx, ly; struct { LPIXEL *buffer; int offset, size; } cmap; } USR_IMAGE; enum CASM_NODE_TYPE { OVR_TRANSF = 0, ADD_TRANSF, BACKLIT_TRANSF, MATTE_TRANSF, WARP_TRANSF, BLUR_TRANSF, MBLUR_TRANSF, UDIT_TRANSF, READ_TRANSF, FLIPX_TRANSF, FLIPY_TRANSF, EXTOP_TRANSF, COLOR_TRANSF, COLORCARD_TRANSF, AFFINE_TRANSF, SHARPEN_TRANSF, LOCALBLUR_TRANSF, LOCALTRANSP_TRANSF, BODY_SHADOW_TRANSF, REFLECTION_TRANSF, CASM_NODE_TYPE_HOW_MANY }; typedef int CASM_COMPUTE_FUNCTION(CASM_NODE *node, int x1, int y1, int x2, int y2, float dx, float dy, RASTER *raster, CASM_TILE *out); typedef void CASM_CE_FUNCTION(float *pars, int cx, int cy, RASTER *rin, RASTER *rout, int shrink); typedef struct CASM_RENDER_INFO { float dx, dy; int shrink; int frame; int column; } CASM_RENDER_INFO; typedef void CASM_CLC_FUNCTION(float *pars, CASM_RENDER_INFO *info, RASTER *rout); typedef int CASM_COMPARE_FUNCTION(CASM_NODE *n1, CASM_NODE *n2); typedef void CASM_WRITE_FUNCTION(CASM_NODE *node, T_CHAN fp); /*----------------------------------------------------------------------------*/ typedef struct CASM_NODEPROC { CASM_COMPUTE_FUNCTION *compute; CASM_COMPARE_FUNCTION *compare; CASM_WRITE_FUNCTION *write; int record_size; } CASM_NODEPROC; /*----------------------------------------------------------------------------*/ typedef struct CASM_FRAME { struct CASM_FRAME *next; CASM_NODE *node; char *filename; } CASM_FRAME; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_ADD { CASM_BINARY_NODE_HD int diff_values; float value; TBOOL is_add, dont_use_matte; } CASM_NODE_ADD; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_LOCALBLUR { CASM_BINARY_NODE_HD float value; } CASM_NODE_LOCALBLUR; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_LOCALTRANSP { CASM_BINARY_NODE_HD float value; } CASM_NODE_LOCALTRANSP; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_BLUR { CASM_UNARY_NODE_HD float blur; int backlit; } CASM_NODE_BLUR; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_MBLUR { CASM_UNARY_NODE_HD double bx; double by; } CASM_NODE_MBLUR; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_BODY_SHADOW { CASM_UNARY_NODE_HD TPOINT p; int blur; float transp; TBOOL is_highlight; } CASM_NODE_BODY_SHADOW; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_REFLECTION { CASM_UNARY_NODE_HD float stretch_x; float stretch_y; float skew; float blur_min; float blur_max; float transp_min; float transp_max; TBOOL is_shadow; } CASM_NODE_REFLECTION; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_SHARPEN { CASM_UNARY_NODE_HD int value; } CASM_NODE_SHARPEN; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_PREMULTIPLY { CASM_UNARY_NODE_HD } CASM_NODE_PREMULTIPLY; /*----------------------------------------------------------------------------*/ typedef struct OLD_USR_IMAGE { void *buffer; enum img_type type; int wrap, lx, ly; struct { LPIXEL *buffer; int offset, size; } cmap; } OLD_USR_IMAGE; typedef struct CASM_NODE_UDIT { CASM_N_ARY_NODE_HD char *keyword; char *op_name; char *type; int argc; char **argv; void (*op_function)(OLD_USR_IMAGE *img_in, OLD_USR_IMAGE *img_out, /* only for old udit*/ int argc, char **argv); int plugin_index; int fx_index; } CASM_NODE_UDIT; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_MATTE { CASM_BINARY_NODE_HD int revert; } CASM_NODE_MATTE; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_WARP { CASM_BINARY_NODE_HD int grid_step; float intensity; } CASM_NODE_WARP; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_OVR { CASM_BINARY_NODE_HD } CASM_NODE_OVR; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_BACKLIT { CASM_BINARY_NODE_HD int diff_values; float value; } CASM_NODE_BACKLIT; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_READ { CASM_NODE_HD char *filename; char *cmapname; char *op_name; int *no_ink, *no_paint; TBOOL keep_inks, keep_paints; int premultiply; int out_size; int argc; char **argv; void (*op_function)(OLD_USR_IMAGE *img_in, OLD_USR_IMAGE *img_out, int argc, char **argv); enum img_type type; int xsize, ysize, border; int sbx1, sby1, sbx2, sby2; double h_pos; UCHAR patch; CASM_WINDOW *bg_info; int occurrence; int full_read; } CASM_NODE_READ; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_COLOR { CASM_UNARY_NODE_HD char *keyword; int plugin_index; int fx_index; int num_pars; float *pars; } CASM_NODE_COLOR; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_COLORCARD { CASM_NODE_HD char *keyword; int plugin_index; int fx_index; int num_pars; float *pars; } CASM_NODE_COLORCARD; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_AFFINE { CASM_UNARY_NODE_HD AFFINE aff; enum CASM_RESAMPLE_TYPE resample_type; } CASM_NODE_AFFINE; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_S_FLIP { CASM_UNARY_NODE_HD double c; } CASM_NODE_S_FLIP; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_EXTOP { CASM_UNARY_NODE_HD char *op_filename, *format_in, *format_out, *arguments; } CASM_NODE_EXTOP; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_NO_INK { CASM_UNARY_NODE_HD int which_ink; } CASM_NODE_NO_INK; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_UNARY { CASM_UNARY_NODE_HD } CASM_NODE_UNARY; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_BINARY { CASM_BINARY_NODE_HD } CASM_NODE_BINARY; /*----------------------------------------------------------------------------*/ typedef struct CASM_NODE_N_ARY { CASM_N_ARY_NODE_HD } CASM_NODE_N_ARY; /*----------------------------------------------------------------------------*/ #endif