⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 param.c

📁 video linux conference
💻 C
📖 第 1 页 / 共 2 页
字号:
  load_builtin_param_double("q1", (void*)&q1,  NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);  load_builtin_param_double("q2", (void*)&q2,  NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);  load_builtin_param_double("q3", (void*)&q3,  NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);  load_builtin_param_double("q4", (void*)&q4,  NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);  load_builtin_param_double("q5", (void*)&q5,  NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);  load_builtin_param_double("q6", (void*)&q6,  NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);  load_builtin_param_double("q7", (void*)&q7,  NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);  load_builtin_param_double("q8", (void*)&q8,  NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL);  /* variables added in 1.04 */  load_builtin_param_int("meshx", (void*)&gx, P_FLAG_READONLY, 32, 96, 8, NULL);  load_builtin_param_int("meshy", (void*)&gy, P_FLAG_READONLY, 24, 72, 6, NULL);  return SUCCESS;    }/* Free's a parameter type */void free_param(param_t * param) {  int x;  if (param == NULL)	return;    if (param->flags & P_FLAG_USERDEF) {    free(param->engine_val);  }  if (!(param->flags & P_FLAG_DONT_FREE_MATRIX)) {    if (param->flags & P_FLAG_PER_POINT)      free(param->matrix);    else if (param->flags & P_FLAG_PER_PIXEL) {       for(x = 0; x < gx; x++) 	   free(((double**)param->matrix)[x]);       free(param->matrix);      }  }  if (PARAM_DEBUG) printf("free_param: freeing \"%s\".\n", param->name);  free(param);}/* Loads a double parameter into the builtin database */int load_builtin_param_double(char * name, void * engine_val, void * matrix, short int flags, 						double init_val, double upper_bound, double lower_bound, char * alt_name) {  param_t * param = NULL;  value_t iv, ub, lb;  iv.double_val = init_val;  ub.double_val = upper_bound;  lb.double_val = lower_bound;							  /* Create new parameter of type double */  if (PARAM_DEBUG == 2) {	  printf("load_builtin_param_double: (name \"%s\") (alt_name = \"%s\") ", name, alt_name);	  fflush(stdout);  }     if ((param = create_param(name, P_TYPE_DOUBLE, flags, engine_val, matrix, iv, ub, lb)) == NULL) {    return OUTOFMEM_ERROR;  }    if (PARAM_DEBUG == 2) {	printf("created...");	fflush(stdout);   }	       /* Insert the paremeter into the database */  if (insert_builtin_param(param) < 0) {	free_param(param);    return ERROR;  }  if (PARAM_DEBUG == 2) {	  printf("inserted...");	  fflush(stdout);  }      /* If this parameter has an alternate name, insert it into the database as link */    if (alt_name != NULL) {	insert_param_alt_name(param, alt_name);   if (PARAM_DEBUG == 2) {	  printf("alt_name inserted...");	  fflush(stdout);  	}  	  }  	    if (PARAM_DEBUG == 2) printf("finished\n");	    /* Finished, return success */  return SUCCESS;}/* Loads a double parameter into the builtin database */param_t * new_param_double(char * name, short int flags, void * engine_val, void * matrix,						double upper_bound, double lower_bound, double init_val) {  param_t * param;  value_t iv, ub, lb;  iv.double_val = init_val;  ub.double_val = upper_bound;  lb.double_val = lower_bound;			     			  if ((param = create_param(name, P_TYPE_DOUBLE, flags, engine_val, matrix,iv, ub, lb)) == NULL)     return NULL;      /* Finished, return success */  return param;}/* Creates a new parameter of type int */param_t * new_param_int(char * name, short int flags, void * engine_val,						int upper_bound, int lower_bound, int init_val) {  param_t * param;  value_t iv, ub, lb;  iv.int_val = init_val;  ub.int_val = upper_bound;  lb.int_val = lower_bound;							  if ((param = create_param(name, P_TYPE_INT, flags, engine_val, NULL, iv, ub, lb)) == NULL)     return NULL;     /* Finished, return success */  return param;}/* Creates a new parameter of type bool */param_t * new_param_bool(char * name, short int flags, void * engine_val,						int upper_bound, int lower_bound, int init_val) {  param_t * param;  value_t iv, ub, lb;  iv.bool_val = init_val;  ub.bool_val = upper_bound;  lb.bool_val = lower_bound;							  if ((param = create_param(name, P_TYPE_BOOL, flags, engine_val, NULL, iv, ub, lb)) == NULL)    return NULL;     /* Finished, return success */  return param;}/* Loads a integer parameter into the builtin database */int load_builtin_param_int(char * name, void * engine_val, short int flags,						int init_val, int upper_bound, int lower_bound, char * alt_name) {  param_t * param;  value_t iv, ub, lb;  iv.int_val = init_val;  ub.int_val = upper_bound;  lb.int_val = lower_bound;								  param = create_param(name, P_TYPE_INT, flags, engine_val, NULL, iv, ub, lb);  if (param == NULL) {    return OUTOFMEM_ERROR;  }  if (insert_builtin_param(param) < 0) {	free_param(param);    return ERROR;  }    if (alt_name != NULL) {	insert_param_alt_name(param, alt_name);  	   }      return SUCCESS;}														/* Loads a boolean parameter */int load_builtin_param_bool(char * name, void * engine_val, short int flags, 								int init_val, char * alt_name) {  param_t * param;  value_t iv, ub, lb;  iv.int_val = init_val;  ub.int_val = TRUE;  lb.int_val = FALSE;																	  param = create_param(name, P_TYPE_BOOL, flags, engine_val, NULL, iv, ub, lb);  if (param == NULL) {    return OUTOFMEM_ERROR;  }  if (insert_builtin_param(param) < 0) {	free_param(param);    return ERROR;  }    if (alt_name != NULL) {	insert_param_alt_name(param, alt_name);  	   }      return SUCCESS;}	/* Returns nonzero if the string is valid parameter name */int is_valid_param_string(char * string) {    if (string == NULL)    return FALSE;    /* This ensures the first character is non numeric */  if( ((*string) >= 48) && ((*string) <= 57))    return FALSE;   /* These probably should never happen */  if (*string == '.')	return FALSE;    if (*string == '+')	return FALSE;    if (*string == '-')	return FALSE;    /* Could also add checks for other symbols. May do later */    return TRUE;   }/* Inserts a parameter into the builtin database */int insert_builtin_param(param_t * param) {	if (param == NULL)		return FAILURE;		return splay_insert(param, param->name, builtin_param_tree);	}/* Inserts a parameter into the builtin database */int insert_param(param_t * param, splaytree_t * database) {	if (param == NULL)	  return FAILURE;	if (database == NULL)	  return FAILURE;	return splay_insert(param, param->name, database);	}/* Sets the parameter engine value to value val.	clipping occurs if necessary */void set_param(param_t * param, double val) {	switch (param->type) {			case P_TYPE_BOOL:		if (val < 0)			*((int*)param->engine_val) = 0;		else if (val > 0)			*((int*)param->engine_val) = 1;		else			*((int*)param->engine_val) = 0;		break;	case P_TYPE_INT:		/* Make sure value is an integer */		val = floor(val);		if (val < param->lower_bound.int_val)				*((int*)param->engine_val) = param->lower_bound.int_val;		else if (val > param->upper_bound.int_val)				*((int*)param->engine_val) = param->upper_bound.int_val;		else				*((int*)param->engine_val) = val;		break;	case P_TYPE_DOUBLE:	  /* Make sure value is an integer */		 	  if (val < param->lower_bound.double_val) 	    *((double*)param->engine_val) = param->lower_bound.double_val;	  	  else if (val > param->upper_bound.double_val)	    *((double*)param->engine_val) = param->upper_bound.double_val;	  else	    *((double*)param->engine_val) = val;	  break;	default:	  break;	}		return;}/* Search for parameter 'name' in 'database', if create_flag is true, then generate the parameter    and insert it into 'database' */param_t * find_param_db(char * name, splaytree_t * database, int create_flag) {  param_t * param = NULL;  /* Null argument checks */  if (name == NULL)    return NULL;  if (database == NULL)    return NULL;    /* First look in the builtin database */  param = (param_t *)splay_find(name, database);    if (((param = (param_t *)splay_find(name, database)) == NULL) && (create_flag == TRUE)) {		/* Check if string is valid */	if (!is_valid_param_string(name))		return NULL;		/* Now, create the user defined parameter given the passed name */	if ((param = create_user_param(name)) == NULL)		return NULL;		/* Finally, insert the new parameter into this preset's proper splaytree */	if (splay_insert(param, param->name, database) < 0) {		free_param(param);		return NULL;	}	 	  }	      /* Return the found (or created) parameter. Note that this could be null */  return param;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -