#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__ */