2016-05-17 03:04:11 +12:00
|
|
|
#pragma once
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
#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"
|
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
#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;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
typedef struct CASM_TILE {
|
2016-06-15 18:43:10 +12:00
|
|
|
RASTER r;
|
|
|
|
int x1, y1, x2, y2;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_TILE;
|
|
|
|
|
|
|
|
typedef struct CASM_NODESIZE {
|
2016-06-15 18:43:10 +12:00
|
|
|
float x1, y1, x2, y2;
|
|
|
|
float sbx1, sby1, sbx2, sby2;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODESIZE;
|
|
|
|
|
|
|
|
typedef struct USR_IMAGE {
|
2016-06-15 18:43:10 +12:00
|
|
|
void *buffer;
|
|
|
|
enum img_type type;
|
|
|
|
int wrap, lx, ly;
|
|
|
|
struct {
|
|
|
|
LPIXEL *buffer;
|
|
|
|
int offset, size;
|
|
|
|
} cmap;
|
2016-03-19 06:57:51 +13:00
|
|
|
} USR_IMAGE;
|
|
|
|
|
|
|
|
enum CASM_NODE_TYPE {
|
2016-06-15 18:43:10 +12:00
|
|
|
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
|
2016-03-19 06:57:51 +13:00
|
|
|
};
|
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
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);
|
2016-03-19 06:57:51 +13:00
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
typedef void CASM_CE_FUNCTION(float *pars, int cx, int cy, RASTER *rin,
|
|
|
|
RASTER *rout, int shrink);
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
typedef struct CASM_RENDER_INFO {
|
2016-06-15 18:43:10 +12:00
|
|
|
float dx, dy;
|
|
|
|
int shrink;
|
|
|
|
int frame;
|
|
|
|
int column;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_RENDER_INFO;
|
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
typedef void CASM_CLC_FUNCTION(float *pars, CASM_RENDER_INFO *info,
|
|
|
|
RASTER *rout);
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
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 {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_COMPUTE_FUNCTION *compute;
|
|
|
|
CASM_COMPARE_FUNCTION *compare;
|
|
|
|
CASM_WRITE_FUNCTION *write;
|
|
|
|
int record_size;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODEPROC;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_FRAME {
|
2016-06-15 18:43:10 +12:00
|
|
|
struct CASM_FRAME *next;
|
|
|
|
CASM_NODE *node;
|
|
|
|
char *filename;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_FRAME;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_ADD {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_BINARY_NODE_HD
|
|
|
|
int diff_values;
|
|
|
|
float value;
|
|
|
|
TBOOL is_add, dont_use_matte;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_ADD;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_LOCALBLUR {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_BINARY_NODE_HD
|
|
|
|
float value;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_LOCALBLUR;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_LOCALTRANSP {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_BINARY_NODE_HD
|
|
|
|
float value;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_LOCALTRANSP;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_BLUR {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
|
|
|
float blur;
|
|
|
|
int backlit;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_BLUR;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_MBLUR {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
|
|
|
double bx;
|
|
|
|
double by;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_MBLUR;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_BODY_SHADOW {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
|
|
|
TPOINT p;
|
|
|
|
int blur;
|
|
|
|
float transp;
|
|
|
|
TBOOL is_highlight;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_BODY_SHADOW;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_REFLECTION {
|
2016-06-15 18:43:10 +12:00
|
|
|
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;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_REFLECTION;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_SHARPEN {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
|
|
|
int value;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_SHARPEN;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_PREMULTIPLY {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_PREMULTIPLY;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct OLD_USR_IMAGE {
|
2016-06-15 18:43:10 +12:00
|
|
|
void *buffer;
|
|
|
|
enum img_type type;
|
|
|
|
int wrap, lx, ly;
|
|
|
|
struct {
|
|
|
|
LPIXEL *buffer;
|
|
|
|
int offset, size;
|
|
|
|
} cmap;
|
2016-03-19 06:57:51 +13:00
|
|
|
} OLD_USR_IMAGE;
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_UDIT {
|
2016-06-15 18:43:10 +12:00
|
|
|
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;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_UDIT;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_MATTE {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_BINARY_NODE_HD
|
|
|
|
int revert;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_MATTE;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_WARP {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_BINARY_NODE_HD
|
|
|
|
int grid_step;
|
|
|
|
float intensity;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_WARP;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
typedef struct CASM_NODE_OVR { CASM_BINARY_NODE_HD } CASM_NODE_OVR;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_BACKLIT {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_BINARY_NODE_HD
|
|
|
|
int diff_values;
|
|
|
|
float value;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_BACKLIT;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_READ {
|
2016-06-15 18:43:10 +12:00
|
|
|
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;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_READ;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_COLOR {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
|
|
|
char *keyword;
|
|
|
|
int plugin_index;
|
|
|
|
int fx_index;
|
|
|
|
int num_pars;
|
|
|
|
float *pars;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_COLOR;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
typedef struct CASM_NODE_COLORCARD {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_NODE_HD
|
|
|
|
char *keyword;
|
|
|
|
int plugin_index;
|
|
|
|
int fx_index;
|
|
|
|
int num_pars;
|
|
|
|
float *pars;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_COLORCARD;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_AFFINE {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
|
|
|
AFFINE aff;
|
|
|
|
enum CASM_RESAMPLE_TYPE resample_type;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_AFFINE;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_S_FLIP {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
|
|
|
double c;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_S_FLIP;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_EXTOP {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
|
|
|
char *op_filename, *format_in, *format_out, *arguments;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_EXTOP;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
typedef struct CASM_NODE_NO_INK {
|
2016-06-15 18:43:10 +12:00
|
|
|
CASM_UNARY_NODE_HD
|
|
|
|
int which_ink;
|
2016-03-19 06:57:51 +13:00
|
|
|
} CASM_NODE_NO_INK;
|
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
typedef struct CASM_NODE_UNARY { CASM_UNARY_NODE_HD } CASM_NODE_UNARY;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
typedef struct CASM_NODE_BINARY { CASM_BINARY_NODE_HD } CASM_NODE_BINARY;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
2016-06-15 18:43:10 +12:00
|
|
|
typedef struct CASM_NODE_N_ARY { CASM_N_ARY_NODE_HD } CASM_NODE_N_ARY;
|
2016-03-19 06:57:51 +13:00
|
|
|
|
|
|
|
/*----------------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
#endif
|