curve_editor_init

	curve_editor_init(auto_scale_function.f.v, range_bounds_function.f.v
			  [,is_phase_mode_func.f.v] [,marker_func.f.v]
			  [,restore_func.f.v] [,restore_func_data.g.v])

	This routine provides a way to override certain default methods
	assumed for the default object type that the curve_editor
	editor handles much the way a method can be overriden for an
	instantiation of an object.   A value of NULL can be passed for any
	of the arguments for which no function is to be supplied.

	auto_scale_function	The function should return FALSE if the user
				does NOT want curve_editor to initially
				auto scale the editing plot window. When
				FALSE is returned, the user MUST supply the x
				and y plot limits by passing back a range
				structure with the appropriate limit values.
				(function called as follows:
				 status.i4.v = auto_scale_func(limit_data.s.r)
				 ("limit_data" is a structure of type
				  CURVE_LIMIT_DATA))
	range_bounds_function	If data range bounds are desired, the user
				MUST supply the x and y range limits
				by passing a range structure with the
				appropriate limits.  These limits will be
				used to check the input value of user
			        supplied data points.  If this function is
				not supplied, the limits will be set to the
				limits of the coordinate values in the table
				passed to curve_editor.
				(function called as follows:
				 range_bounds_func(limit_data.s.r)
				 ("limit_data" is a structure of type
				  CURVE_LIMIT_DATA))
	[is_phase_mode_func]	This function allows the caller to specify
				that drag mode will operate in phase mode
				which means that when the dragging reaches
				a limit specified by this function the
				cursor will be warped to the opposite
				limit.  This function must return a value
				of TRUE if this behavior is desired or
				FALSE otherwise.
				(function called as follows:
				 is_phase_mode_func(limit_data.s.r)
				 ("limit_data" is a structure of type
				  CURVE_PHASE_LIMIT_DATA))
	[marker_func]		This function allows the caller to specify
				the drawing of markers on the plot.  This
				function must return a value of TRUE if
				markers are desired.
				(function called as follows:
				 marker_func(num_markers.i4.r, marker_data.sp.r)
				 ("marker_data" is an array of structures
				  of type CURVE_EDITOR_MARKER_DATA))
	[restore_func]		user supplied function which will be called
				whenever the restore switch is pressed and is
				called as follows:
				status.i4.v = restore_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)
	[restore_func_data]	data to be passed to the user supplied
				restore function
				(A value of NULL can be passed for this
				 argument if this functionality is not needed.)
				(default is NULL)

	This function requires the following include files:

	ul_cbsaux_h:auxlib_misc_h

	Related functions:

	curve_editor

	C/C++ usage:

	int	auto_scale_function(CURVE_LIMIT_DATA *limit_data);
	void	range_bounds(CURVE_LIMIT_DATA *limit_data);
	int	is_phase_mode(CURVE_PHASE_LIMIT_DATA *limit_data);
	int	marker_func(int *num_markers,
			    CURVE_EDITOR_MARKER_DATA **marker_data);
	int	restore_func(CURVE_EDIT_DATA *curve_data,
			     void *function_data, int curve_number);
	void	*restore_func_data = (void *) NULL;

	curve_editor_init(auto_scale_function,range_bounds,is_phase_mode,
			  marker_func,restore_func,restore_func_data);