void load_unspecified_init_conds(custom_wave_t * custom_wave) { interface_wave = custom_wave; splay_traverse(load_unspec_init_cond, interface_wave->param_tree); interface_wave = NULL; }
/* Destroy the builtin parameter database. Generally, do this on projectm exit */ int destroy_builtin_param_db() { splay_traverse(free_param, builtin_param_tree); destroy_splaytree(builtin_param_tree); builtin_param_tree = NULL; return SUCCESS; }
/* Private function to close a preset file */ int close_preset(preset_t * preset) { if (preset == NULL) return FAILURE; splay_traverse(free_init_cond, preset->init_cond_tree); destroy_splaytree(preset->init_cond_tree); splay_traverse(free_init_cond, preset->per_frame_init_eqn_tree); destroy_splaytree(preset->per_frame_init_eqn_tree); splay_traverse(free_per_pixel_eqn, preset->per_pixel_eqn_tree); destroy_splaytree(preset->per_pixel_eqn_tree); splay_traverse(free_per_frame_eqn, preset->per_frame_eqn_tree); destroy_splaytree(preset->per_frame_eqn_tree); splay_traverse(free_param, preset->user_param_tree); destroy_splaytree(preset->user_param_tree); splay_traverse(free_custom_wave, preset->custom_wave_tree); destroy_splaytree(preset->custom_wave_tree); splay_traverse(free_custom_shape, preset->custom_shape_tree); destroy_splaytree(preset->custom_shape_tree); free(preset); return SUCCESS; }
void destroy_init_cond_tree(splaytree_t * tree) { if (!tree) return; splay_traverse(free_init_cond, tree); destroy_splaytree(tree); }
void destroy_param_db_tree(splaytree_t * tree) { if (!tree) return; splay_traverse(free_param, tree); destroy_splaytree(tree); }
void destroy_per_point_eqn_tree(splaytree_t * tree) { if (!tree) return; splay_traverse(free_per_point_eqn, tree); destroy_splaytree(tree); }
void evalPerPixelEqns() { /* Evaluate all per pixel equations using splay traversal */ splay_traverse(evalPerPixelEqn, active_preset->per_pixel_eqn_tree); /* Set mesh i / j values to -1 so engine vars are used by default again */ mesh_i = mesh_j = -1; }
int write_init_conditions(FILE * fs) { if (fs == NULL) return FAILURE; if (active_preset == NULL) return FAILURE; splay_traverse(write_init, active_preset->init_cond_tree); return SUCCESS; }
/* Interface function. Makes another custom wave the current concern for per frame / point equations */ custom_wave_t * nextCustomWave() { if ((interface_wave = splay_find(&interface_id, active_preset->custom_wave_tree)) == NULL) { interface_id = 0; return NULL; } interface_id++; /* Evaluate all per frame equations associated with this wave */ splay_traverse(eval_per_frame_eqn, interface_wave->per_frame_eqn_tree); return interface_wave; }
void reloadPerFrame(char * s, preset_t * preset) { FILE * fs; int slen; char c; int eqn_count = 1; per_frame_eqn_t * per_frame; if (s == NULL) return; if (preset == NULL) return; /* Clear previous per frame equations */ splay_traverse(free_per_frame_eqn, preset->per_frame_eqn_tree); destroy_splaytree(preset->per_frame_eqn_tree); preset->per_frame_eqn_tree = create_splaytree(compare_int, copy_int, free_int); /* Convert string to a stream */ fs = fmemopen (s, strlen(s), "r"); while ((c = fgetc(fs)) != EOF) { ungetc(c, fs); if ((per_frame = parse_per_frame_eqn(fs, eqn_count, preset)) != NULL) { splay_insert(per_frame, &eqn_count, preset->per_frame_eqn_tree); eqn_count++; } } fclose(fs); /* Clear string space */ memset(preset->per_frame_eqn_string_buffer, 0, STRING_BUFFER_SIZE); /* Compute length of string */ slen = strlen(s); /* Copy new string into buffer */ strncpy(preset->per_frame_eqn_string_buffer, s, slen); /* Yet again no bounds checking */ preset->per_frame_eqn_string_index = slen; /* Finished */ printf("reloadPerFrame: %d eqns parsed succesfully\n", eqn_count-1); return; }
void reloadPerPixel(char *s, preset_t * preset) { FILE * fs; int slen; char c; int i; if (s == NULL) return; if (preset == NULL) return; /* Clear previous per pixel equations */ splay_traverse(free_per_pixel_eqn, preset->per_pixel_eqn_tree); destroy_splaytree(preset->per_pixel_eqn_tree); preset->per_pixel_eqn_tree = create_splaytree(compare_int, copy_int, free_int); /* Convert string to a stream */ fs = fmemopen (s, strlen(s), "r"); while ((c = fgetc(fs)) != EOF) { ungetc(c, fs); parse_per_pixel_eqn(fs, preset); } fclose(fs); /* Clear string space */ memset(preset->per_pixel_eqn_string_buffer, 0, STRING_BUFFER_SIZE); /* Compute length of string */ slen = strlen(s); /* Copy new string into buffer */ strncpy(preset->per_pixel_eqn_string_buffer, s, slen); /* Yet again no bounds checking */ preset->per_pixel_eqn_string_index = slen; /* Finished */ return; }
int closePresetDir() { /* No preset director appears to be loaded */ if (chrono_order_preset_name_tree == NULL) return SUCCESS; if (PRESET_DEBUG) { printf("closePresetDir: freeing directory buffer..."); fflush(stdout); } /* Free each entry in the directory preset name tree */ splay_traverse(free_int, chrono_order_preset_name_tree); /* Destroy the chronological order splay tree */ destroy_splaytree(chrono_order_preset_name_tree); chrono_order_preset_name_tree = NULL; preset_name_buffer_size = 0; if (PRESET_DEBUG) printf("finished\n"); return SUCCESS; }
void evalPerPointEqns() { int x; for (x = 0; x < interface_wave->samples; x++) interface_wave->r_mesh[x] = interface_wave->r; for (x = 0; x < interface_wave->samples; x++) interface_wave->g_mesh[x] = interface_wave->g; for (x = 0; x < interface_wave->samples; x++) interface_wave->b_mesh[x] = interface_wave->b; for (x = 0; x < interface_wave->samples; x++) interface_wave->a_mesh[x] = interface_wave->a; for (x = 0; x < interface_wave->samples; x++) interface_wave->x_mesh[x] = interface_wave->x; for (x = 0; x < interface_wave->samples; x++) interface_wave->y_mesh[x] = interface_wave->y; /* Evaluate per pixel equations */ splay_traverse(evalPerPointEqn, interface_wave->per_point_eqn_tree); /* Reset index */ mesh_i = -1; }
void load_init_conditions() { splay_traverse(load_init_cond, builtin_param_tree); }
void evalPerFrameEquations() { splay_traverse(eval_per_frame_eqn, active_preset->per_frame_eqn_tree); }
void evalInitConditions() { splay_traverse(eval_init_cond, active_preset->init_cond_tree); splay_traverse(eval_init_cond, active_preset->per_frame_init_eqn_tree); }
inline void eval_custom_wave_init_conds(custom_wave_t * custom_wave) { splay_traverse(eval_init_cond, custom_wave->init_cond_tree); splay_traverse(eval_init_cond, custom_wave->per_frame_init_eqn_tree); }
void evalCustomWaveInitConditions() { splay_traverse(eval_custom_wave_init_conds, active_preset->custom_wave_tree); }
void load_custom_shape_init_conditions() { splay_traverse(load_custom_shape_init, active_preset->custom_shape_tree); }