curve_editor

	status.i4.v = curve_editor(num_points.i4.v, points.sa.r,
				   max_points.i4.v, x_axis_label.ch.d,
				   y_axis_label.ch.d, options.u4.v
				   [,user_function.f.v] [,function_data.g.v]
				   [,switch_func.f.v]
				   [,switch_func_data.g.v]
				   [,switch_label.i1a.r] [,title.i1a.r])

	This routine allows a user to edit a curve (set of points) graphically
	and returns the modified curve.

	num_points	number of points in curve
	points		curve points (array of structures of type CURVE_POINT)
	max_points	maximum number of points permitted
	x_axis_label	null terminated X axis label
	y_axis_label	null terminated Y axis label
	options		edit option flags
			(CURVE_OPT_NONE -> no options selected,
			 CURVE_OPT_Y_MOVE_ONLY -> only move points in the
						  Y plane,
			 CURVE_OPT_X_MOVE_ONLY -> only move points in the
						  X plane,
			 CURVE_OPT_CLEAN_UP -> clear graphics screen upon exit)
	[user_function]	user supplied function which will be called whenever
			a change is made to the curve and is called as follows:
			user_function(curve_data.s.r, function_data.g.v,
				      curve_number.i4.v)
			("curve_data" is a structure of type CURVE_EDIT_DATA)
			(A value of NULL can be passed for this argument if
			 this functionality is not needed.)
			(default is NULL)
	[function_data]	data to be passed to the user supplied function
			(A value of NULL can be passed for this argument if
			 this functionality is not needed.)
			(default is NULL)
	[switch_func]	user supplied function which will be called
			whenever the user defined switch is pressed and is
			called as follows:
			status.i4.v = switch_func(curve_data.s.r,
						  function_data.g.v,
						  curve_number.i4.v)
			("curve_data" is a structure of type CURVE_EDIT_DATA)
			(If a value of TRUE is returned, the curve will be
			 reloaded and redrawn with the values returned in
			 the curve_data structure.)
			(A value of NULL can be passed for this argument if
			 this functionality is not needed.)
			(default is NULL)
	[switch_func_data]	data to be passed to the user supplied
			switch function
			(A value of NULL can be passed for this argument if
			 this functionality is not needed.)
			(default is NULL)
	[switch_label]	label for the user defined switch
			(default is "User")
	[title]		optional window title
			(default is "Curve Editor")

	This function returns ACNET status values as follows:

	OK			success
	CBS_MEMFAIL		failed in allocating dynamic memory
	CBS_INVALID_DATA	passed data is out of range
	CBS_ABORT		user aborted
	CBS_READONLY		no points were changed

	This function requires the following include files:

	ul_cbsaux_h:auxlib_misc_h, acnet_errors_h

	Related functions:

	curve_editor_init

	C/C++ usage:

	static const char	x_axis_label[] = "X axis";
	static const char	y_axis_label[] = "Y axis";
	static const char	switch_label[] = "User Switch";
	static const char	title[] = "Curve Editor";
	int	status;
	int	num_points = NUM_POINTS;
	int	max_points = MAX_POINTS;
	unsigned int	options = 0;
	CURVE_POINT	points[MAX_POINTS];
	void	*function_data = (void *) NULL;
	void	*switch_func_data = (void *) NULL;
	curve_editor_user_function	user_function;
	curve_editor_user_function	switch_func;

	status = curve_editor(num_points,points,max_points,x_axis_label,
			      y_axis_label,options,user_function,function_data,
			      switch_func,switch_func_data,switch_label,title);