#pragma once #ifndef _CASM_H_ #define _CASM_H_ #include #define MSG_I 1 #define MSG_W 2 #define MSG_E 3 #define MSG_F 4 #define MSG_IE 5 #define MSG_IF 6 #define MSG_P 7 typedef enum CASM_RESAMPLE_TYPE { CASM_RESAMPLE_NULL, CASM_RESAMPLE_STANDARD, CASM_RESAMPLE_IMPROVED, CASM_RESAMPLE_HIGH } CASM_RESAMPLE_TYPE; typedef struct { char *name; int (*routine)(void); } KEYWORD; typedef struct { double x, y, z; } VECTOR; typedef struct CASM_WINDOW { int x1, y1, x2, y2; struct CASM_WINDOW *next; } CASM_WINDOW; /*---------------------------------------------------------------------------*/ #define SLICE_LX 1024 #define SLICE_LY 1024 #define LOADABLE_PIXELS (1024 * 1024) /* WARNING it must be greater or */ /* equal to SLICE_LX*SLICE_LY! */ #define CASM_RENDER_DEFAULT 1.0 #define CASM_MEM_CHUNK_DEFAULT 1.0 /*---------------------------------------------------------------------------*/ #define INTERSECT(win1, win2, win) \ (win)->x1 = MAX((win1)->x1, (win2)->x1); \ (win)->y1 = MAX((win1)->y1, (win2)->y1); \ (win)->x2 = MIN((win1)->x2, (win2)->x2); \ (win)->y2 = MIN((win1)->y2, (win2)->y2) #define UNION(win1, win2, win) \ (win)->x1 = MIN((win1)->x1, (win2)->x1); \ (win)->y1 = MIN((win1)->y1, (win2)->y1); \ (win)->x2 = MAX((win1)->x2, (win2)->x2); \ (win)->y2 = MAX((win1)->y2, (win2)->y2) #define RESIZE_RECT(win, border) \ { \ (win)->x1 -= border; \ (win)->y1 -= border; \ (win)->x2 += border; \ (win)->y2 += border; \ } /*---------------------------------------------------------------------------*/ #define DDR_FILENAME " DDR" #define DDR_FILENAME_LEN 4 /*---------------------------------------------------------------------------*/ #ifndef WIN32 #define CASM_LINK_MASK_STRING " -link " #define CASM_LINK_QUAL_STRING \ "-link : forces casm to create a link to the previous image if " \ "the\n" \ " current image is identical. By default ngcasm writes\n" \ " another identical image on disk.\n" #else #define CASM_LINK_MASK_STRING " " #define CASM_LINK_QUAL_STRING "\n" #endif #define CASM_USAGE_MASK \ " --pt --shmem%d%s -trace -cf -constant_focus -intmove " \ " -fracmove --pipe%d --dimensions%d%d -shrink%d -s%d --rd%d " \ " -hq -iq -sq -no_overwrite -no -logfile%s -gamma%f -local_render -clap " \ " -step%d -range%d%d -r%d%d -mem%f -tile%f -64bit -32bit -lineart%d " \ "-edgealiasing%d -ddr%d" CASM_LINK_MASK_STRING \ " --nowait -frame%d -first%d -bc%s -ac%s -bc_args%s -ac_args%s -mm " \ "-mmsingle%d [filename]" #define CASM_USAGE_STRING \ "-range fs fe : \n" \ "-r fs fe : compose the frames ranging from 'fs' to 'fe'\n" \ "-frame n : compose the frame 'n' only\n" \ "-step n : compose each 'n' frames\n" \ "-intmove : do NOT apply subpixel positioning for full-color " \ "levels \n" \ "-fracmove : apply subpixel positioning also for anim-type\n" \ "-64bit : renders 64 bit color images\n" \ "-mm : save the levels of each frame separately\n" \ "-mmsingle [ #col ]: computes and save only level in the #col column " \ "number\n" \ " in the exposure sheet \n" \ "-shrink value : \n" \ "-s value : subsample one each 'value' pixels and one each\n" \ "-bc scriptfile : execute scriptfile before frame composition\n" \ "-ac scriptfile : execute scriptfile after frame composition\n" \ "-bc_args args : argument(s) for 'bc' script \n" \ "-ac_args args : argument(s) for 'ac' script \n" \ "-no_overwrite : \n" \ "-no : skip computing of already existing frames on disk\n" \ " (useful to render scenes on multiple workstations\n" \ " sharing the same database)\n" \ "-tile xsize : dimensions (in Kilopixels) of the largest squared " \ "portion \n" \ " of the frame to be composed in one step; xsize does " \ "not \n" \ " need to be an integer. \n" \ "-mem value : dimensions (in Kilopixels) of the squared portion of\n" \ " background image to be kept in RAM memory.\n" \ " It must be greater or equal to xsize of option -tile\n" \ "-constant_focus : \n" \ "-cf : forces casm to work in constant focus mode, thus " \ "avoiding\n" \ " abrupt changes from slight blurry to focused images " \ "as the \n" \ " camera zooms toward the final field size. This " \ "qualifier\n" \ " should be used ONLY when a zoom operation creates the " \ "above\n" \ " described problem because its usage will cause a " \ "longer\n" \ " compositing time and will force the camera to remain " \ "\n" \ " constantly out-of-focus.\n" \ "-sq :\n" \ "-iq :\n" \ "-hq : sets the resample quality respectively to standard, " \ "improved\n" \ " or high quality for geometrical transformations\n" \ " default: Resample type set in toonzsetup module.\n" \ "-logfile filename : writes a log file with all the errors and warnings.\n" \ "-ddr startframe : direct output frames on a Digital Disc Recorder " \ "starting from specified position.\n" \ "-local_render : makes a local copy of image files locally, to speed " \ "up rendering\n" \ "-gamma value : performs a gamma correction of specified value on all " \ "\n" \ " rendered images\n" \ "-lineart value : produces an aliased output image, with colors from " \ "original palette; \n" \ " it is ignored if not used in conjunction with -mm or " \ "-mmsingle and on \n" \ " full color input images\n" \ "-edgealiasing value : produces an output image with contour edges " \ "aliased;\n" \ " so, matte channel pixel values are either " \ "transparent or opaque; \n" \ " it is ignored if not used in conjunction with -mm or " \ "-mmsingle and on \n" \ " full color input images\n" CASM_LINK_QUAL_STRING #endif