#pragma once #ifndef __TENV_H__ #define __TENV_H__ #include "toonz4.6\tmacro.h" #include "toonz4.6\avl.h" #undef TNZAPI #ifdef TNZ_IS_COMMONLIB #define TNZAPI TNZ_EXPORT_API #else #define TNZAPI TNZ_IMPORT_API #endif /* Prototypes */ /* * Suffissi: * * _s : string * _i : int * _c : char * _d : double * _r : rational (stringa;e.s: per l'aspect ratio "4/3") * * n.b. non bisogna fare free() delle stringhe ritornate da tenv_get_var_s() * */ /* * La lista completa delle variabili di setup e del tipo a cui sono * associate e' mostrato in fondo al file. */ /* Set delle variabili (fanno prima un check) * Ritornano FALSE se falliscono */ TNZAPI int tenv_set_var_s(char *var_name, char *value); TNZAPI int tenv_set_var_i(char *var_name, int value); TNZAPI int tenv_set_var_c(char *var_name, char value); TNZAPI int tenv_set_var_d(char *var_name, double value); TNZAPI int tenv_set_var_r(char *var_name, char *value); /* Get delle variabili * Ritornano FALSE se falliscono * Non si deve assolutamente liberare nulla !! * In fondo a questo file viene spiegato come utilizzare * le seguenti funzioni per tutte le variabili di setup. */ TNZAPI int tenv_get_var_s(char *var_name, char **value); TNZAPI int tenv_get_var_i(char *var_name, int *value); TNZAPI int tenv_get_var_c(char *var_name, char *value); TNZAPI int tenv_get_var_d(char *var_name, double *value); TNZAPI int tenv_get_var_r(char *var_name, char **value); /* Check delle variabili ( range_min <= value <= range_max ) * Ritornano FALSE se falliscono */ TNZAPI int tenv_check_var_s(char *var_name, char *value); TNZAPI int tenv_check_var_i(char *var_name, int value); TNZAPI int tenv_check_var_c(char *var_name, char value); TNZAPI int tenv_check_var_d(char *var_name, double value); TNZAPI int tenv_check_var_r(char *var_name, char *value); /* Ritorna il messaggio di errore settato dalla libreria * */ TNZAPI char *tenv_get_error_string(void); /* Ritorna il codice di errore settato dalla libreria. * I codici di errore hanno il prefisso TENV_ERR_. */ int tenv_get_error_code(void); /* Error Codes */ #define TENV_ERR_VARIABLE_TYPE 1 #define TENV_ERR_OUT_OF_MEMORY 2 #define TENV_ERR_INSERT_VARIABLE 3 #define TENV_ERR_REMOVE_VARIABLE 4 #define TENV_ERR_FIND_VARIABLE 5 #define TENV_ERR_VARIABLE_RANGE 6 #define TENV_ERR_VARIABLE_VALUE 7 #define TENV_ERR_SETUP_NOT_FOUND 8 #define TENV_ERR_SETUP_STAT_FAILED 9 #define TENV_ERR_SETUP_OPEN_FAILED 10 #define TENV_ERR_TOONZROOT_NOT_FOUND 11 #define TENV_ERR_LIST_OPEN_FAILED 20 #define TENV_ERR_LIST_ITEM_EXIST 21 #define TENV_ERR_LIST_UPDATE_FAILED 22 #define TENV_ERR_LIST_DELETE_FAILED 23 #define TENV_ERR_LIST_REMOVE_FAILED 24 #define TENV_ERR_LIST_SET_FAILED 25 /*---------------------------------------------------------------------------*/ /* Enums */ typedef enum { TENV_NONE, TENV_CHAR, TENV_INT, TENV_DOUBLE, TENV_STRING, TENV_STRINGV, TENV_RATIONAL } TENV_TYPES; typedef struct { char *alias_str; char *alias_for; } TENV_ALIAS; /* Structures */ typedef struct { int id; TENV_TYPES type; char *var_name; char *lbl_name; double from, to, step, def, cur; int prec; char *rational_def; char *rational_cur; char *string; int stringv_num; int stringv_cur; int stringv_def; char **stringv; char loaded; int n_aliases; TENV_ALIAS *alias; } TENV_INFO; /* Prototypes */ TNZAPI void tenv_init(void); TNZAPI TENV_INFO *tenv_get_var_info(char *var_name); TNZAPI TENV_INFO *tenv_get_first_var(void); TNZAPI TENV_INFO *tenv_get_next_var(void); TNZAPI int tenv_update_current_values(char *fname); TNZAPI int tenv_check_for_save(char *fname); TNZAPI int tenv_write(char *fname); TNZAPI int tenv_write_def(char *fname); TNZAPI int tenv_varcmp(TENV_INFO *ptr1, TENV_INFO *ptr2); TNZAPI int tenv_setups_set(char *setup_name); TNZAPI int tenv_setups_add(char *setup_name); TNZAPI int tenv_setups_scan(int (*func)(char *setup_name, void *usr), void *usr); TNZAPI int tenv_setups_remove(char *setup_name); TNZAPI int tenv_delete_setups_file(void); TNZAPI int tenv_setups_does_exist(char *setup_name); TNZAPI int tenv_setups_update_list(void); TNZAPI char *tenv_get_filesetup(void); TNZAPI int tenv_is_database_enabled(void); TNZAPI void tenv_set_pt_flag(int mode); TNZAPI int tenv_get_pt_flag(void); TNZAPI int tenv_check_cosmo(void); TNZAPI void tenv_refresh(void); TNZAPI void tenv_set_default_filesetup(void); TNZAPI void tenv_rgb_update(char *filesetup); /* Defines */ #define TENV_ID(p) (p)->id #define TENV_TYPE(p) (p)->type #define TENV_VAR_NAME(p) (p)->var_name #define TENV_LBL_NAME(p) (p)->lbl_name #define TENV_CHAR_FROM(p) (char)(p)->from #define TENV_CHAR_TO(p) (char)(p)->to #define TENV_CHAR_STEP(p) (char)(p)->step #define TENV_CHAR_DEF(p) (char)(p)->def #define TENV_CHAR_CURR(p) (char)(p)->cur #define TENV_INT_FROM(p) (int)(p)->from #define TENV_INT_TO(p) (int)(p)->to #define TENV_INT_STEP(p) (int)(p)->step #define TENV_INT_DEF(p) (int)(p)->def #define TENV_INT_CURR(p) (int)(p)->cur #define TENV_INT_PREC(p) (int)(p)->prec #define TENV_DOUBLE_FROM(p) (p)->from #define TENV_DOUBLE_TO(p) (p)->to #define TENV_DOUBLE_STEP(p) (p)->step #define TENV_DOUBLE_DEF(p) (p)->def #define TENV_DOUBLE_CURR(p) (p)->cur #define TENV_DOUBLE_PREC(p) (p)->prec #define TENV_RATIONAL_FROM(p) (p)->from #define TENV_RATIONAL_TO(p) (p)->to #define TENV_RATIONAL_STEP(p) (p)->step #define TENV_RATIONAL_DEF_N(p) (p)->def #define TENV_RATIONAL_CUR_N(p) (p)->cur #define TENV_RATIONAL_DEF_S(p) (p)->rational_def #define TENV_RATIONAL_CUR_S(p) (p)->rational_cur #define TENV_STRING(p) (p)->string #define TENV_STRINGV_N(p) (p)->stringv_num #define TENV_STRINGV_C(p) (p)->stringv_cur #define TENV_STRINGV_D(p) (p)->stringv_def #define TENV_STRINGV_I(p, i) (p)->stringv[i] #define TENV_STRINGV_P(p) (p)->stringv #define TENV_STRINGV(p) (p)->stringv[TENV_STRINGV_C(p)] #define TENV_ADD_VAR_CHAR(var_name, lbl_name, from, to, step, def) \ tenv_add_node(TENV_CHAR, var_name, lbl_name, from, to, step, def, NULL) #define TENV_ADD_VAR_INT(var_name, lbl_name, from, to, step, def) \ tenv_add_node(TENV_INT, var_name, lbl_name, from, to, step, def, NULL) #define TENV_ADD_VAR_DOUBLE(var_name, lbl_name, from, to, step, def, prec) \ tenv_add_node(TENV_DOUBLE, var_name, lbl_name, from, to, step, def, prec, \ NULL) #define TENV_ADD_VAR_RATIONAL(var_name, lbl_name, from, to, step, def) \ tenv_add_node(TENV_RATIONAL, var_name, lbl_name, from, to, step, def, NULL) #define TENV_ADD_VAR_STRING(var_name, lbl_name, string) \ tenv_add_node(TENV_STRING, var_name, lbl_name, string, NULL) /* una macro per contare il numero di elementi di un array */ #define NUMBER_OF_ELEMENTS(T) (sizeof(T) / sizeof(T[0])) #define TENV_ADD_VAR_STRINGV(var_name, lbl_name, stringv, index_of_def) \ tenv_add_node(TENV_STRINGV, var_name, lbl_name, stringv, \ stringv[NUMBER_OF_ELEMENTS(stringv) - 1] \ ? NUMBER_OF_ELEMENTS(stringv) \ : NUMBER_OF_ELEMENTS(stringv) - 1, \ index_of_def, NULL) #define TENV_ADD_VAR_STRINGVV(var_name, lbl_name, stringv, items_num, \ index_of_def) \ tenv_add_node(TENV_STRINGV, var_name, lbl_name, stringv, items_num, \ index_of_def, NULL) static char Tenv_string_error[2048]; static int Tenv_code_error; static TREE *Tenv_tree = NULL; static int Tenv_pt_flag = FALSE; static char *Tenv_yes_no[] = {"yes", "no"}; static char *Tenv_yes_no_u[] = {"YES", "NO"}; static char *Tenv_status_mode[] = {"disabled", "enabled"}; static char *Tenv_browser_mode[] = {"show all files", "show significant only"}; static char *Tenv_turn_mode[] = {"ON", "OFF"}; static char *Tenv_onion_img_mode[] = {"keep loaded", "load when needed", "disabled"}; static char *Tenv_flash_viewer[] = {"Internal", "System"}; static char *Tenv_work_res[] = {"pal", "ntsc", "640", "1K", "1280", "1.5K", "1840", "1920", "2K", "2560", "3K", "4K", "cin_half", "cin_full"}; static char *Tenv_camera_prev[] = {"Vertical_Fit(TV)", "Horiz_Fit(Film)"}; static char *Tenv_fc_trasp[] = {"white", "black"}; static char *Tenv_ddr_connect[] = {"SCSI", "ETHERNET"}; static char *Tenv_default_plt[] = {"32 inks + 128 paints", "256 inks + 256 paints"}; static char *Tenv_scanner_dpi[] = {"LOW", "MEDIUM", "HIGH"}; static char *Tenv_scanner_tone[] = {"B&W", "GREYTONES", "RGB"}; static char *Tenv_scanner_driver[] = {"INTERNAL" #ifdef WIN32 , "TWAIN" #endif }; static char *Tenv_north_south[] = {"NORTH", "SOUTH", "NONE"}; static char *Tenv_east_west[] = {"EAST", "WEST", "NONE"}; static char *Tenv_top_bottom[] = {"TOP", "BOTTOM"}; static char *Tenv_autocenter[] = {"using pegholes", "taped pegbar", "OFF"}; static char *Tenv_adjust_mode[] = {"BLACK EQ", "HISTOGRAM", "HISTO-L", "NONE"}; static char *Tenv_compr_mode[] = {"compressed", "uncompressed"}; static char *Tenv_tz_compr_mode[] = {"Toonz RLE", "LZW (Toonz 4.2 compatible)"}; static char *Tenv_matte_chan[] = {"write", "do_not_write"}; static char *Tenv_colorstyle[] = {"gray scale", "full color"}; static char *Tenv_tga_subtypes[] = {"gray scale", "color mapped", "full color"}; static char *Tenv_bmp_subtypes[] = {"black and white", "gray scale", "color mapped", "full color"}; static char *Tenv_orientation[] = {"RIGHT BOTTOM", "RIGHT TOP", "LEFT BOTTOM", "LEFT TOP", "TOP RIGHT", "TOP LEFT", "BOTTOM RIGHT", "BOTTOM LEFT"}; static char *Tenv_rgb_bpp[] = {"8 (gray scale)", "24 (RGB)", "32 (RGBM)", "48 (RGB)", "64 (RGBM)"}; static char *Tenv_mm_rgb_bpp[] = {"32 (RGBM)", "64 (RGBM)"}; static char *Tenv_tga_bpp[] = {"8 (gray scale)", "8 (fast cmapped-16)", "8 (fast cmapped-24)", "8 (fast cmapped-32)", "8 (smart cmapped-16)", "8 (smart cmapped-24)", "8 (smart cmapped-32)", "16 (RGB)", "24 (RGB)", "32 (RGBM)"}; static char *Tenv_mm_tga_bpp[] = {"8 (fast cmapped-32)", "8 (smart cmapped-32)", "32 (RGBM)"}; static char *Tenv_tga_bpp_bgt[] = { "8 (gray scale)", "8 (cmapped-16)", "8 (cmapped-24)", "8 (cmapped-32)", "16 (RGB)", "24 (RGB)", "32 (RGBM)"}; static char *Tenv_bmp_bpp[] = {"1 (black and white)", "4 (gray scale)", "8 (gray scale)", "8 (fast cmapped)", "8 (smart cmapped)", "24 (RGB)"}; static char *Tenv_bmp_bpp_bgt[] = {"1 (black and white)", "4 (gray scale)", "8 (gray scale)", "8 (cmapped)", "24 (RGB)"}; static char *Tenv_jpg_bpp[] = {"8 (gray scale)", "24 (RGB)"}; static char *Tenv_tif_compress[] = {"NONE", "CCITTFAX3", "CCITTFAX4", "PACKBITS", "LZW"}; static char *Tenv_mm_tif_compress[] = {"NONE", "PACKBITS", "LZW"}; static char *Tenv_tif_bpp[] = {"1 (black and white)", "1 (white and black)", "8 (gray scale)", "8 (fast cmapped)", "8 (smart cmapped)", "24 (RGB)", "32 (RGBM)", "48 (RGB)", "64 (RGBM)"}; static char *Tenv_mm_tif_bpp[] = {"32 (RGBM)", "64 (RGBM)"}; static char *Tenv_tif_bpp_bgt[] = {"1 (black and white)", "1 (white and black)", "8 (gray scale)", "8 (cmapped)", "24 (RGB)", "32 (RGBM)", "48 (RGB)", "64 (RGBM)"}; static char *Tenv_screen_buf[] = {"singlebuffer", "doublebuffer"}; static char *Tenv_loading_pol[] = {"whole level", "first only", "one every 10", "one every 4", "one every 2"}; static char *Tenv_unit_system[] = {"inches/degrees", "pulses", "cm/degrees", "mm/degrees"}; static char *Tenv_field_guide[] = {"cinemascope", "vistavision", "normal", "hdtv"}; static char *Tenv_frame_count[] = {"by footage", "by number", "by timecode"}; /* static char *Tenv_col_order [] = { "right to left", "left to right" }; */ static char *Tenv_levcol_move[] = {"click&drag", "ALT+click&drag"}; static char *Tenv_numcol_move[] = {"click&drag", "ALT+click&drag"}; static char *Tenv_xsh_pegbar_look[] = {"detailed", "bounding box"}; static char *Tenv_xsh_load_at_once[] = {"yes", "no"}; static char *Tenv_xsh_column_icon_loading_policy[] = {"immediately", "on demand"}; static char *Tenv_xsh_level_names[] = {"repeat at marks", "first cell only"}; static char *Tenv_xsh_cuts_and_holds[] = {"yes", "no"}; static char *Tenv_subpix_move[] = {"all", "none", "only_rgb"}; static char *Tenv_bpc_prec[] = {"32 bit", "64 bit"}; static char *Tenv_resample_t[] = {"standard_quality", "improved_quality", "high_quality"}; static char *Tenv_ident_img_h[] = {"link_to_previous", "do_not_link_to_previous"}; static char *Tenv_cosmo_compr[] = {/*"BLACK&WHITE", "GREYTONES", "256 COLORS", "4096 COLORS", */ "COSMO_PAL", "COSMO_NTSC"}; static char *Tenv_screen_pix[] = {"16 bit", "32 bit"}; static char *Tenv_axis_frame[] = {"frame_on_vertical", "frame_on_horizontal"}; static char *Tenv_transition[] = {"linear", "speedin/out", "easein/out"}; static char *Tenv_buttons_style[] = {"classic", "modern"}; static char *Tenv_color_res[] = {"1 bit", "8 bit", "full color"}; /*--------------------------------------------------------------------------- Per le seguenti variabili di setup fare: { char *value; tenv_get_var_s(var_name, &value); . . . } -- General -- TOONZ_DATA_BASE TOONZ_DATA_BASE_STATUS TOONZ_STUDIO_PLT TOONZ_WORKING_RES TOONZ_CAMERA_PREVALENCE TOONZ_SCREEN_PIXEL (solo per WINDOWS NT) FULL_COLOR_TRANSPARENCY DDR_CONNECTION TOONZ_DEFAULT_PLT TOONZ_TZUP_COMPRESSION -- Input -- INPUT_PAP_FILE INPUT_SCANNER_DPI INPUT_SCANNER_TONE INPUT_PAPER_FEEDER INPUT_FDG_FILE INPUT_PEGS INPUT_NORTH_SOUTH INPUT_EAST_WEST INPUT_AUTOPOS INPUT_AUTOADJUST INPUT_AUTOADJUST_MODE INPUT_AUTOCLOSE -- Bgtiler -- BGTILER_RGB_COMPRESSION BGTILER_TGA_COMPRESSION BGTILER_TGA_SUBTYPES BGTILER_TGA_BITS_PER_PIXEL BGTILER_TIFF_COMPRESSION BGTILER_TIFF_BITS_PER_PIXEL -- Pltedit -- PLT_SCREEN_BUFFERS PLTEDIT_COLOR_CHIPS_NUM -- Inknpaint -- INKNPAINT_UNDO INKNP_COLOR_CHIPS_NUM INKNPAINT_ONION_SKIN_IMAGE -- Xsheet -- XSHEET_DEFAULT_LOADING_POLICY XSHEET_DEFAULT_OUTPUT_IMF XSHEET_UNITS_SYSTEM XSHEET_FIELD_GUIDE_TYPE XSHEET_GRAPH_AXIS_FRAME FRAME_COUNTER COLUMN_ORDER -- Casm -- CASM_SUBPIXEL_MOVE CASM_RESAMPLE_TYPE IDENTICAL_IMAGES_HANDLER CASM_RGB_SUBTYPE CASM_RGB_WRITE_MATTE CASM_TGA_COMPRESSION CASM_TGA_SUBTYPES CASM_TGA_BITS_PER_PIXEL CASM_TIFF_ORIENTATION CASM_TIFF_COMPRESSION CASM_TIFF_BITS_PER_PIXEL -- Eth rec -- TOONZ_RECDEV_NET TOONZ_REMOTE_DDR_USER -- Flip -- AUTO_SCREEN_FIT COSMO_CAMERA_DEFAULT COMPRESSION_DEFAULT LOAD_FULL_COLOR_LEVELS FILL_UNPAINTED_LEVELS **************************************** Per le seguenti variabili di setup fare: { int value; tenv_get_var_i(var_name, &value); . . . } -- General -- TOONZ_FRAMERATE -- Input INPUT_SCANNER_BRIGHTNESS INPUT_SCANNER_CONTRAST INPUT_SCANNER_THRESHOLD INPUT_SHARPNESS INPUT_PROCESS_BRIGHTNESS INPUT_PROCESS_CONTRAST -- Inknpaint -- TOONZ_FILL_DEPTH TOONZ_SHIFT_FILL_DEPTH RECTACLOSE_DISTANCE RECTACLOSE_ANGLE RECTACLOSE_USED_INK RECTACLOSE_INK_OPACITY -- Xsheet -- XSHEET_DEFAULT_CAMERA_FIELD XSHEET_DEFAULT_FIELD_GUIDE_SIZE XSHEET_DEFAULT_CAMERA_XRES XSHEET_DEFAULT_CLC_RED XSHEET_DEFAULT_CLC_GREEN XSHEET_DEFAULT_CLC_BLUE XSHEET_DEFAULT_CLC_MATTE XSHEET_DEFAULT_SUBSAMPLING XSHEET_DEFAULT_BG_SUBSAMPLING XSHEET_MARKER **************************************** Per le seguenti variabili di setup fare: { double value; tenv_get_var_d(var_name, &value); . . . } -- Input -- INPUT_ASPECT_RATIO INPUT_FIELD_SIZE INPUT_NORTH_SOUTH_SHIFT INPUT_EAST_WEST_SHIFT -- Xsheet -- XSHEET_DEFAULT_CAMERA_AR -- Casm -- CASM_RENDER_TILE CASM_MEMORY_CHUNK ---------------------------------------------------------------------------*/ #endif /* __TENV_H__ */