summaryrefslogtreecommitdiff
path: root/doc/gutenprint/html/group__curve.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/gutenprint/html/group__curve.html')
-rw-r--r--doc/gutenprint/html/group__curve.html2470
1 files changed, 2470 insertions, 0 deletions
diff --git a/doc/gutenprint/html/group__curve.html b/doc/gutenprint/html/group__curve.html
new file mode 100644
index 0000000..25b60cc
--- /dev/null
+++ b/doc/gutenprint/html/group__curve.html
@@ -0,0 +1,2470 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libgutenprint API Reference: curve</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.3-20050530 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<h1>curve</h1>The curve type models a linear, spline or gamma curve.
+<a href="#_details">More...</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Point (x,y) for piecewise curve. <a href="structstp__curve__point__t.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef stp_curve&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga0">stp_curve_t</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The curve opaque data type. <a href="#ga0"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> { <a class="el" href="group__curve.html#gga47a1">STP_CURVE_TYPE_LINEAR</a>,
+<a class="el" href="group__curve.html#gga47a2">STP_CURVE_TYPE_SPLINE</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Curve types. <a href="group__curve.html#ga47">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> { <a class="el" href="group__curve.html#gga48a3">STP_CURVE_WRAP_NONE</a>,
+<a class="el" href="group__curve.html#gga48a4">STP_CURVE_WRAP_AROUND</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapping mode. <a href="group__curve.html#ga48">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> { <a class="el" href="group__curve.html#gga49a5">STP_CURVE_COMPOSE_ADD</a>,
+<a class="el" href="group__curve.html#gga49a6">STP_CURVE_COMPOSE_MULTIPLY</a>,
+<a class="el" href="group__curve.html#gga49a7">STP_CURVE_COMPOSE_EXPONENTIATE</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Composition types. <a href="group__curve.html#ga49">More...</a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a> { <a class="el" href="group__curve.html#gga50a8">STP_CURVE_BOUNDS_RESCALE</a>,
+<a class="el" href="group__curve.html#gga50a9">STP_CURVE_BOUNDS_CLIP</a>,
+<a class="el" href="group__curve.html#gga50a10">STP_CURVE_BOUNDS_ERROR</a>
+ }</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Behaviour when curve exceeds bounds. <a href="group__curve.html#ga50">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga1">stp_curve_create</a> (<a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> wrap)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new curve. <a href="#ga1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga2">stp_curve_create_copy</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate an curve. <a href="#ga2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga3">stp_curve_copy</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *dest, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *source)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy an curve. <a href="#ga3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga4">stp_curve_destroy</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy an curve. <a href="#ga4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga5">stp_curve_set_bounds</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double low, double high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the lower and upper bounds on a curve. <a href="#ga5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga6">stp_curve_get_bounds</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the lower and upper bounds on a curve. <a href="#ga6"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga7">stp_curve_get_wrap</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the wrapping mode. <a href="#ga7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga8">stp_curve_is_piecewise</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine whether the curve is piecewise. <a href="#ga8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga9">stp_curve_get_range</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga10">stp_curve_count_points</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of allocated points in the curve. <a href="#ga10"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga11">stp_curve_set_interpolation_type</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, <a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> itype)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the curve interpolation type. <a href="#ga11"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga12">stp_curve_get_interpolation_type</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the curve interpolation type. <a href="#ga12"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga13">stp_curve_set_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set all data points of the curve. <a href="#ga13"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga14">stp_curve_set_data_points</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set all data points of the curve. <a href="#ga14"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga15">stp_curve_set_float_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const float *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from float values. <a href="#ga15"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga16">stp_curve_set_long_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from long values. <a href="#ga16"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga17">stp_curve_set_ulong_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const unsigned long *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from unsigned long values. <a href="#ga17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga18">stp_curve_set_int_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from integer values. <a href="#ga18"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga19">stp_curve_set_uint_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const unsigned int *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from unsigned integer values. <a href="#ga19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga20">stp_curve_set_short_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from short values. <a href="#ga20"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga21">stp_curve_set_ushort_data</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t count, const unsigned short *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the data points in a curve from unsigned short values. <a href="#ga21"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga22">stp_curve_get_subrange</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t start, size_t count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a curve containing a subrange of data. <a href="#ga22"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga23">stp_curve_set_subrange</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *range, size_t start)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const double *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga24">stp_curve_get_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a pointer to the curve's raw data. <a href="#ga24"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga25">stp_curve_get_data_points</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a pointer to the curve's raw data as points. <a href="#ga25"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const float *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga26">stp_curve_get_float_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as floats. <a href="#ga26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga27">stp_curve_get_long_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as longs. <a href="#ga27"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned long *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga28">stp_curve_get_ulong_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned longs. <a href="#ga28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga29">stp_curve_get_int_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as integers. <a href="#ga29"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga30">stp_curve_get_uint_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned integers. <a href="#ga30"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga31">stp_curve_get_short_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as shorts. <a href="#ga31"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const unsigned short *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga32">stp_curve_get_ushort_data</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t *count)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned shorts. <a href="#ga32"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga33">stp_curve_get_sequence</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the underlying stp_sequence_t data structure which stp_curve_t is derived from. <a href="#ga33"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga34">stp_curve_set_gamma</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double f_gamma)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the gamma of a curve. <a href="#ga34"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga35">stp_curve_get_gamma</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the gamma value of the curve. <a href="#ga35"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga36">stp_curve_set_point</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t where, double data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set a point along the curve. <a href="#ga36"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga37">stp_curve_get_point</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t where, double *data)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a point along the curve. <a href="#ga37"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga38">stp_curve_interpolate_value</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double where, double *result)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Interpolate a point along the curve. <a href="#ga38"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga39">stp_curve_resample</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, size_t points)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Resample a curve (change the number of points). <a href="#ga39"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga40">stp_curve_rescale</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve, double scale, <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> mode, <a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a> bounds_mode)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rescale a curve (multiply all points by a scaling constant). <a href="#ga40"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga41">stp_curve_write</a> (FILE *file, const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a curve to a file. <a href="#ga41"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga42">stp_curve_write_string</a> (const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *curve)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a curve to a string. <a href="#ga42"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga43">stp_curve_create_from_stream</a> (FILE *fp)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a curve from a stream. <a href="#ga43"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga44">stp_curve_create_from_file</a> (const char *file)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a curve from a stream. <a href="#ga44"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga45">stp_curve_create_from_string</a> (const char *string)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a curve from a string. <a href="#ga45"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga46">stp_curve_compose</a> (<a class="el" href="group__curve.html#ga0">stp_curve_t</a> **retval, <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *a, <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *b, <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> mode, int points)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compose two curves, creating a third curve. <a href="#ga46"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The curve type models a linear, spline or gamma curve.
+<p>
+curve "inherits" from the sequence data structure (implemented via containment), since the curve data is represented internally as a sequence of numbers, for linear and spline curves. Linear Piecewise Curves (LPCs) should be implemented in the future which represent a curve in a more compact format.<p>
+Various operations are supported, including interpolation and composition.<hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="ga0"></a><!-- doxytag: member="curve.h::stp_curve_t" ref="ga0" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">typedef struct stp_curve <a class="el" href="group__curve.html#ga0">stp_curve_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The curve opaque data type.
+<p>
+ </td>
+ </tr>
+</table>
+<hr><h2>Enumeration Type Documentation</h2>
+<a class="anchor" name="ga50"></a><!-- doxytag: member="curve.h::stp_curve_bounds_t" ref="ga50" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Behaviour when curve exceeds bounds.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga50a8"></a><!-- doxytag: member="STP_CURVE_BOUNDS_RESCALE" ref="gga50a8" args="" -->STP_CURVE_BOUNDS_RESCALE</em>&nbsp;</td><td>
+Rescale the bounds. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga50a9"></a><!-- doxytag: member="STP_CURVE_BOUNDS_CLIP" ref="gga50a9" args="" -->STP_CURVE_BOUNDS_CLIP</em>&nbsp;</td><td>
+Clip the curve to the existing bounds. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga50a10"></a><!-- doxytag: member="STP_CURVE_BOUNDS_ERROR" ref="gga50a10" args="" -->STP_CURVE_BOUNDS_ERROR</em>&nbsp;</td><td>
+Error if bounds are violated. </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga49"></a><!-- doxytag: member="curve.h::stp_curve_compose_t" ref="ga49" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Composition types.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga49a5"></a><!-- doxytag: member="STP_CURVE_COMPOSE_ADD" ref="gga49a5" args="" -->STP_CURVE_COMPOSE_ADD</em>&nbsp;</td><td>
+Add composition. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga49a6"></a><!-- doxytag: member="STP_CURVE_COMPOSE_MULTIPLY" ref="gga49a6" args="" -->STP_CURVE_COMPOSE_MULTIPLY</em>&nbsp;</td><td>
+Multiply composition. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga49a7"></a><!-- doxytag: member="STP_CURVE_COMPOSE_EXPONENTIATE" ref="gga49a7" args="" -->STP_CURVE_COMPOSE_EXPONENTIATE</em>&nbsp;</td><td>
+Exponentiate composition. </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga47"></a><!-- doxytag: member="curve.h::stp_curve_type_t" ref="ga47" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Curve types.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga47a1"></a><!-- doxytag: member="STP_CURVE_TYPE_LINEAR" ref="gga47a1" args="" -->STP_CURVE_TYPE_LINEAR</em>&nbsp;</td><td>
+Linear interpolation. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga47a2"></a><!-- doxytag: member="STP_CURVE_TYPE_SPLINE" ref="gga47a2" args="" -->STP_CURVE_TYPE_SPLINE</em>&nbsp;</td><td>
+Spline interpolation. </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga48"></a><!-- doxytag: member="curve.h::stp_curve_wrap_mode_t" ref="ga48" args="" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">enum <a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Wrapping mode.
+<p>
+<dl compact><dt><b>Enumerator: </b></dt><dd>
+<table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" name="gga48a3"></a><!-- doxytag: member="STP_CURVE_WRAP_NONE" ref="gga48a3" args="" -->STP_CURVE_WRAP_NONE</em>&nbsp;</td><td>
+The curve does not wrap. </td></tr>
+<tr><td valign="top"><em><a class="anchor" name="gga48a4"></a><!-- doxytag: member="STP_CURVE_WRAP_AROUND" ref="gga48a4" args="" -->STP_CURVE_WRAP_AROUND</em>&nbsp;</td><td>
+The curve wraps to its starting point. </td></tr>
+</table>
+</dl>
+ </td>
+ </tr>
+</table>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="ga46"></a><!-- doxytag: member="curve.h::stp_curve_compose" ref="ga46" args="(stp_curve_t **retval, stp_curve_t *a, stp_curve_t *b, stp_curve_compose_t mode, int points)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_compose </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> **&nbsp;</td>
+ <td class="mdname" nowrap> <em>retval</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>b</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>mode</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>points</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Compose two curves, creating a third curve.
+<p>
+Only add and multiply composition is currently supported. If both curves are gamma curves with the same sign, and the operation is multiplication or division, the returned curve is a gamma curve with the appropriate number of points. Both a and b must have the same wraparound type. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>retval</em>&nbsp;</td><td>a pointer to store the location of the newly-created output curve in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>the first source curve. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>the second source curve. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>the composition mode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>points</em>&nbsp;</td><td>the number of points in the output curve (must not exceed 1048576). It must be at least two, unless the curve is a gamma curve and the operation chosen is multiplication or division. If -1, the resulting number of points will be the least common multiplier of the number of points in the input and output curves (but will not exceed 1048576). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if element-wise composition fails.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga3"></a><!-- doxytag: member="curve.h::stp_curve_copy" ref="ga3" args="(stp_curve_t *dest, const stp_curve_t *source)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dest</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>source</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy an curve.
+<p>
+Both dest and source must be valid curves previously created with <a class="el" href="group__curve.html#ga1">stp_curve_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>the destination curve. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source curve.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga10"></a><!-- doxytag: member="curve.h::stp_curve_count_points" ref="ga10" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">size_t stp_curve_count_points </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the number of allocated points in the curve.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the number of points.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga1"></a><!-- doxytag: member="curve.h::stp_curve_create" ref="ga1" args="(stp_curve_wrap_mode_t wrap)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a>&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>wrap</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a new curve.
+<p>
+Curves have y=lower..upper. The default bounds are 0..1. The default interpolation type is linear. There are no points allocated, and the gamma is defaulted to 1. The curve is a dense (equally-spaced) curve.<p>
+A wrapped curve has the same value at x=0 and x=1. The wrap mode of a curve cannot be changed except by routines that destroy the old curve entirely (e. g. stp_curve_copy, stp_curve_read). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>wrap</em>&nbsp;</td><td>the wrap mode of the curve. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga2"></a><!-- doxytag: member="curve.h::stp_curve_create_copy" ref="ga2" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create_copy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Copy and allocate an curve.
+<p>
+dest will be created, and then the contents of source will be copied into it. dest must not have been previously allocated with <a class="el" href="group__curve.html#ga1">stp_curve_create()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the source curve. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the new copy of the curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga44"></a><!-- doxytag: member="curve.h::stp_curve_create_from_file" ref="ga44" args="(const char *file)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create_from_file </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>file</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a curve from a stream.
+<p>
+<dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>file</em>&nbsp;</td><td>the file to read. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga43"></a><!-- doxytag: member="curve.h::stp_curve_create_from_stream" ref="ga43" args="(FILE *fp)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create_from_stream </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">FILE *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>fp</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a curve from a stream.
+<p>
+<dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>fp</em>&nbsp;</td><td>the stream to read. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga45"></a><!-- doxytag: member="curve.h::stp_curve_create_from_string" ref="ga45" args="(const char *string)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_create_from_string </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>string</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Create a curve from a string.
+<p>
+<dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>string</em>&nbsp;</td><td>the string to read. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga4"></a><!-- doxytag: member="curve.h::stp_curve_destroy" ref="ga4" args="(stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Destroy an curve.
+<p>
+It is an error to destroy the curve more than once. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to destroy.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga6"></a><!-- doxytag: member="curve.h::stp_curve_get_bounds" ref="ga6" args="(const stp_curve_t *curve, double *low, double *high)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_get_bounds </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>high</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the lower and upper bounds on a curve.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>low</em>&nbsp;</td><td>a pointer to a double to store the lower bound in. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>high</em>&nbsp;</td><td>a pointer to a double to store the upper bound in.</td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga24"></a><!-- doxytag: member="curve.h::stp_curve_get_data" ref="ga24" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const double* stp_curve_get_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a pointer to the curve's raw data.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This call also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga25"></a><!-- doxytag: member="curve.h::stp_curve_get_data_points" ref="ga25" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a>* stp_curve_get_data_points </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a pointer to the curve's raw data as points.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This call also returns NULL if the curve is a dense (equally-spaced) curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga26"></a><!-- doxytag: member="curve.h::stp_curve_get_float_data" ref="ga26" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const float* stp_curve_get_float_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as floats.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga35"></a><!-- doxytag: member="curve.h::stp_curve_get_gamma" ref="ga35" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">double stp_curve_get_gamma </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the gamma value of the curve.
+<p>
+<dl compact><dt><b>Returns:</b></dt><dd>the gamma value. A value of 0 indicates that the curve does not have a valid gamma value.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga29"></a><!-- doxytag: member="curve.h::stp_curve_get_int_data" ref="ga29" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const int* stp_curve_get_int_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as integers.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga12"></a><!-- doxytag: member="curve.h::stp_curve_get_interpolation_type" ref="ga12" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a> stp_curve_get_interpolation_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the curve interpolation type.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the interpolation type.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga27"></a><!-- doxytag: member="curve.h::stp_curve_get_long_data" ref="ga27" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const long* stp_curve_get_long_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as longs.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga37"></a><!-- doxytag: member="curve.h::stp_curve_get_point" ref="ga37" args="(const stp_curve_t *curve, size_t where, double *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_get_point </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a point along the curve.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>where</em>&nbsp;</td><td>the point to get. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to a double to store the value of where in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if where is outside of the number of valid points. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga9"></a><!-- doxytag: member="curve.h::stp_curve_get_range" ref="ga9" args="(const stp_curve_t *curve, double *low, double *high)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">void stp_curve_get_range </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>high</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga33"></a><!-- doxytag: member="curve.h::stp_curve_get_sequence" ref="ga33" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__sequence.html#ga0">stp_sequence_t</a>* stp_curve_get_sequence </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the underlying stp_sequence_t data structure which stp_curve_t is derived from.
+<p>
+This can be used for fast access to the raw data. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the stp_sequence_t. If the curve is a piecewise curve, the sequence returned is NULL;</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga31"></a><!-- doxytag: member="curve.h::stp_curve_get_short_data" ref="ga31" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const short* stp_curve_get_short_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as shorts.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga22"></a><!-- doxytag: member="curve.h::stp_curve_get_subrange" ref="ga22" args="(const stp_curve_t *curve, size_t start, size_t count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a>* stp_curve_get_subrange </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>start</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get a curve containing a subrange of data.
+<p>
+If the start or count is invalid, the returned curve will compare equal to NULL (i. e. it will be a null pointer). start and count must not exceed the number of points in the curve, and count must be at least 2. The curve must be a dense (equally-spaced) curve <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>start</em>&nbsp;</td><td>the start of the subrange. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of point starting at start. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a curve containing the subrange. The returned curve is non-wrapping.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga30"></a><!-- doxytag: member="curve.h::stp_curve_get_uint_data" ref="ga30" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned int* stp_curve_get_uint_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as unsigned integers.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga28"></a><!-- doxytag: member="curve.h::stp_curve_get_ulong_data" ref="ga28" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned long* stp_curve_get_ulong_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as unsigned longs.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga32"></a><!-- doxytag: member="curve.h::stp_curve_get_ushort_data" ref="ga32" args="(const stp_curve_t *curve, size_t *count)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">const unsigned short* stp_curve_get_ushort_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get pointer to the curve's raw data as unsigned shorts.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>a pointer to a size_t to store the curve size in. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the curve data. This data is not guaranteed to be valid beyond the next non-const curve call. If the curve is a pure gamma curve (no associated points), NULL is returned and the count is 0. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga7"></a><!-- doxytag: member="curve.h::stp_curve_get_wrap" ref="ga7" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga48">stp_curve_wrap_mode_t</a> stp_curve_get_wrap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Get the wrapping mode.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the wrapping mode.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga38"></a><!-- doxytag: member="curve.h::stp_curve_interpolate_value" ref="ga38" args="(const stp_curve_t *curve, double where, double *result)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_interpolate_value </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>result</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Interpolate a point along the curve.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>where</em>&nbsp;</td><td>the point to interpolate. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</td><td>a pointer to double to store the value of where in. If interpolation would produce a value outside of the allowed range (as could happen with spline interpolation), the value is clipped to the range. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if 'where' is less than 0 or greater than the number of points, an error is returned. Also returns FALSE if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga8"></a><!-- doxytag: member="curve.h::stp_curve_is_piecewise" ref="ga8" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_is_piecewise </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Determine whether the curve is piecewise.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>whether the curve is piecewise</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga39"></a><!-- doxytag: member="curve.h::stp_curve_resample" ref="ga39" args="(stp_curve_t *curve, size_t points)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_resample </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>points</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Resample a curve (change the number of points).
+<p>
+This does not destroy the gamma value of a curve. Points are interpolated as required; any interpolation that would place points outside of the bounds of the curve will be clipped to the bounds. The resulting curve is always dense (equally-spaced). This is the correct way to convert a piecewise curve to an equally-spaced curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use (must not exceed 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>points</em>&nbsp;</td><td>the number of points. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if the number of points is invalid (less than two, except that zero points is permitted for a gamma curve).</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga40"></a><!-- doxytag: member="curve.h::stp_curve_rescale" ref="ga40" args="(stp_curve_t *curve, double scale, stp_curve_compose_t mode, stp_curve_bounds_t bounds_mode)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_rescale </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>scale</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga49">stp_curve_compose_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>mode</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga50">stp_curve_bounds_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>bounds_mode</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Rescale a curve (multiply all points by a scaling constant).
+<p>
+This also rescales the bounds. Note that this currently destroys the gamma property of the curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>scale</em>&nbsp;</td><td>the scaling factor. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>the composition mode. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>bounds_mode</em>&nbsp;</td><td>the bounds exceeding mode. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if this would exceed floating point limits</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga5"></a><!-- doxytag: member="curve.h::stp_curve_set_bounds" ref="ga5" args="(stp_curve_t *curve, double low, double high)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_bounds </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>low</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>high</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the lower and upper bounds on a curve.
+<p>
+To change the bounds adjusting data as required, use stp_curve_rescale instead. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>low</em>&nbsp;</td><td>the lower bound. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>high</em>&nbsp;</td><td>the upper bound. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if any existing points on the curve are outside the bounds.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga13"></a><!-- doxytag: member="curve.h::stp_curve_set_data" ref="ga13" args="(stp_curve_t *curve, size_t count, const double *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const double *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set all data points of the curve.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of doubles (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga14"></a><!-- doxytag: member="curve.h::stp_curve_set_data_points" ref="ga14" args="(stp_curve_t *curve, size_t count, const stp_curve_point_t *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_data_points </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set all data points of the curve.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a piecewise curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of points (must be at least count in size). The first point must have X=0, and each point must have an X value at least .000001 greater than the previous point. If the curve is not a wraparound curve, the last point must have X=1. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga15"></a><!-- doxytag: member="curve.h::stp_curve_set_float_data" ref="ga15" args="(stp_curve_t *curve, size_t count, const float *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_float_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const float *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from float values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of floats (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga34"></a><!-- doxytag: member="curve.h::stp_curve_set_gamma" ref="ga34" args="(stp_curve_t *curve, double f_gamma)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_gamma </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>f_gamma</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the gamma of a curve.
+<p>
+This replaces all existing points along the curve. The bounds are set to 0..1. If the gamma value is positive, the function is increasing; if negative, the function is decreasing. Count must be either 0 or at least 2. If the count is zero, the gamma of the curve is set for interpolation purposes, but points cannot be assigned to. It is illegal to set gamma on a wrap-mode curve. The resulting curve is treated as a dense (equally-spaced) curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>f_gamma</em>&nbsp;</td><td>the gamma value to set. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if the gamma value is illegal (0, infinity, or NaN), or if the curve wraps around.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga18"></a><!-- doxytag: member="curve.h::stp_curve_set_int_data" ref="ga18" args="(stp_curve_t *curve, size_t count, const int *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_int_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from integer values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of integers (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga11"></a><!-- doxytag: member="curve.h::stp_curve_set_interpolation_type" ref="ga11" args="(stp_curve_t *curve, stp_curve_type_t itype)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_interpolation_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap><a class="el" href="group__curve.html#ga47">stp_curve_type_t</a>&nbsp;</td>
+ <td class="mdname" nowrap> <em>itype</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the curve interpolation type.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>itype</em>&nbsp;</td><td>the interpolation type. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, or 0 if itype is invalid.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga16"></a><!-- doxytag: member="curve.h::stp_curve_set_long_data" ref="ga16" args="(stp_curve_t *curve, size_t count, const long *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_long_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const long *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from long values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of longs (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga36"></a><!-- doxytag: member="curve.h::stp_curve_set_point" ref="ga36" args="(stp_curve_t *curve, size_t where, double data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_point </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>where</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>double&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set a point along the curve.
+<p>
+This call destroys any gamma value assigned to the curve. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>where</em>&nbsp;</td><td>the point to set. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>the value to set where to. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>FALSE if data is outside the valid bounds or if where is outside the number of valid points. This also returns NULL if the curve is a piecewise curve.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga20"></a><!-- doxytag: member="curve.h::stp_curve_set_short_data" ref="ga20" args="(stp_curve_t *curve, size_t count, const short *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_short_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const short *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from short values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of shorts (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga23"></a><!-- doxytag: member="curve.h::stp_curve_set_subrange" ref="ga23" args="(stp_curve_t *curve, const stp_curve_t *range, size_t start)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_subrange </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>range</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>start</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga19"></a><!-- doxytag: member="curve.h::stp_curve_set_uint_data" ref="ga19" args="(stp_curve_t *curve, size_t count, const unsigned int *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_uint_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from unsigned integer values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of unsigned integers (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga17"></a><!-- doxytag: member="curve.h::stp_curve_set_ulong_data" ref="ga17" args="(stp_curve_t *curve, size_t count, const unsigned long *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_ulong_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned long *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from unsigned long values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of unsigned longs (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga21"></a><!-- doxytag: member="curve.h::stp_curve_set_ushort_data" ref="ga21" args="(stp_curve_t *curve, size_t count, const unsigned short *data)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_set_ushort_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>size_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const unsigned short *&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Set the data points in a curve from unsigned short values.
+<p>
+If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a curve with equally-spaced points. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>count</em>&nbsp;</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>a pointer to an array of unsigned shorts (must be at least count in size). </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga41"></a><!-- doxytag: member="curve.h::stp_curve_write" ref="ga41" args="(FILE *file, const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">int stp_curve_write </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">FILE *&nbsp;</td>
+ <td class="mdname" nowrap> <em>file</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td class="md"></td>
+ <td class="md" nowrap>const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname" nowrap> <em>curve</em></td>
+ </tr>
+ <tr>
+ <td class="md"></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Write a curve to a file.
+<p>
+The printable representation is guaranteed to contain only 7-bit printable ASCII characters, and is null-terminated. The curve will not contain any space, newline, single quote, or comma characters. Furthermore, a printed curve will be read back correctly in all locales. These calls are not guaranteed to provide more than 6 decimal places of precision or +/-0.5e-6 accuracy, whichever is less. <dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>file</em>&nbsp;</td><td>the file to write. </td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure.</dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="ga42"></a><!-- doxytag: member="curve.h::stp_curve_write_string" ref="ga42" args="(const stp_curve_t *curve)" --><p>
+<table class="mdTable" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top">char* stp_curve_write_string </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const <a class="el" href="group__curve.html#ga0">stp_curve_t</a> *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>curve</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing="5" cellpadding="0" border="0">
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Write a curve to a string.
+<p>
+The printable representation is guaranteed to contain only 7-bit printable ASCII characters, and is null-terminated. The curve will not contain any space, newline, or comma characters. Furthermore, a printed curve will be read back correctly in all locales. These calls are not guaranteed to provide more than 6 decimal places of precision or +/-0.5e-6 accuracy, whichever is less. <dl compact><dt><b>Warning:</b></dt><dd>NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation. </dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>curve</em>&nbsp;</td><td>the curve to use. </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to a string. This is allocated on the heap, and it is the caller's responsibility to free it.</dd></dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Sat Jul 2 09:45:10 2005 for libgutenprint API Reference by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.3-20050530 </small></address>
+</body>
+</html>