Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 7a022198a50a2e9f6bdbca88b73d1ff0 > files > 72

gutenprint-devel-5.2.6-1.fc14.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>libgutenprint API Reference: curve</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<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 struct stp_curve&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The curve opaque data type.  <a href="#g375a2b23705fb0698ae1d823243c8524"></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#g982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a> { <a class="el" href="group__curve.html#gg982f8191c84b049cc3ad3cee1558fc2346228ddaa2d52a85ccd79c4dc0f76ad3">STP_CURVE_TYPE_LINEAR</a>, 
<a class="el" href="group__curve.html#gg982f8191c84b049cc3ad3cee1558fc23fb1ffdc3754f428d8e3a2124e014ff77">STP_CURVE_TYPE_SPLINE</a>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Curve types.  <a href="group__curve.html#g982f8191c84b049cc3ad3cee1558fc23">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#g3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a> { <a class="el" href="group__curve.html#gg3ae3af552b490b0ca8b02e442ac9547ad840485ad7df768a06ee4be02d93b97a">STP_CURVE_WRAP_NONE</a>, 
<a class="el" href="group__curve.html#gg3ae3af552b490b0ca8b02e442ac9547ac0361aebddfabfb263dc0205a61f6fbd">STP_CURVE_WRAP_AROUND</a>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Wrapping mode.  <a href="group__curve.html#g3ae3af552b490b0ca8b02e442ac9547a">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#g7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a> { <a class="el" href="group__curve.html#gg7eddbee28cb1f3c76a19408b86ea142ec38b0bf09e93edb67c3e5c53035295f3">STP_CURVE_COMPOSE_ADD</a>, 
<a class="el" href="group__curve.html#gg7eddbee28cb1f3c76a19408b86ea142ed3bd2cdb63498d5d22686e79e2c0ed95">STP_CURVE_COMPOSE_MULTIPLY</a>, 
<a class="el" href="group__curve.html#gg7eddbee28cb1f3c76a19408b86ea142e8de151149fdfd4fcca78826e6352246a">STP_CURVE_COMPOSE_EXPONENTIATE</a>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Composition types.  <a href="group__curve.html#g7eddbee28cb1f3c76a19408b86ea142e">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#g86d146e483ca1902f973d574f542b85f">stp_curve_bounds_t</a> { <a class="el" href="group__curve.html#gg86d146e483ca1902f973d574f542b85f118d303bf7bdf4f00bda71cc6eac49c3">STP_CURVE_BOUNDS_RESCALE</a>, 
<a class="el" href="group__curve.html#gg86d146e483ca1902f973d574f542b85fec9e6673edac9d34e3aad376fa711aa5">STP_CURVE_BOUNDS_CLIP</a>, 
<a class="el" href="group__curve.html#gg86d146e483ca1902f973d574f542b85fd699d675d5df223055388cd83d0b362b">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#g86d146e483ca1902f973d574f542b85f">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#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#g6b3640f0e25bd9d38e46bdc1b2ee58a4">stp_curve_create</a> (<a class="el" href="group__curve.html#g3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a> wrap)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new curve.  <a href="#g6b3640f0e25bd9d38e46bdc1b2ee58a4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#g972ed591394396e0c66e928a0695b3bf">stp_curve_create_copy</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy and allocate a curve.  <a href="#g972ed591394396e0c66e928a0695b3bf"></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#gcd7861bf1c9d61ac4ec87844a15ab9d3">stp_curve_copy</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *dest, const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *source)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy a curve.  <a href="#gcd7861bf1c9d61ac4ec87844a15ab9d3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#g8c2aed234d3e4ddc4c239801be17bb73">stp_curve_create_reverse</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reverse and allocate a curve.  <a href="#g8c2aed234d3e4ddc4c239801be17bb73"></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#g3416157017287eae136fb928802be234">stp_curve_reverse</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *dest, const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *source)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reverse a curve.  <a href="#g3416157017287eae136fb928802be234"></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#g4294b85e848fe421496469e2406ef380">stp_curve_destroy</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy an curve.  <a href="#g4294b85e848fe421496469e2406ef380"></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#ge32fb850963b8694d3739c0ed8475f75">stp_curve_set_bounds</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#ge32fb850963b8694d3739c0ed8475f75"></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#g63c3386fbfd75da9fe985673bf7b1ca3">stp_curve_get_bounds</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g63c3386fbfd75da9fe985673bf7b1ca3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#g3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#g859020827897bac0f4671322ec027dc4">stp_curve_get_wrap</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the wrapping mode.  <a href="#g859020827897bac0f4671322ec027dc4"></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#g29b022a3055afe0b48d1f2736ff2f4da">stp_curve_is_piecewise</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine whether the curve is piecewise.  <a href="#g29b022a3055afe0b48d1f2736ff2f4da"></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#gcb8e51731b9385556747744a0d4f43fb">stp_curve_get_range</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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#g766ff02b29b976372779f719076ad017">stp_curve_count_points</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g766ff02b29b976372779f719076ad017"></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#g82890cef78f5861a88c5789c33693423">stp_curve_set_interpolation_type</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, <a class="el" href="group__curve.html#g982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a> itype)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the curve interpolation type.  <a href="#g82890cef78f5861a88c5789c33693423"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#g982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#g42c98a6a6d2512516738b6df9367510e">stp_curve_get_interpolation_type</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the curve interpolation type.  <a href="#g42c98a6a6d2512516738b6df9367510e"></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#g81bceb4cb991cef1cda2298cf7bb9f15">stp_curve_set_data</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g81bceb4cb991cef1cda2298cf7bb9f15"></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#gce09cab4e6ae3d55f75aacae3689e8e6">stp_curve_set_data_points</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#gce09cab4e6ae3d55f75aacae3689e8e6"></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#gbd7a39289471607311141c7fc3bbb415">stp_curve_set_float_data</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#gbd7a39289471607311141c7fc3bbb415"></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#ge6a435a21a5c4b5e582d42095a7b06fc">stp_curve_set_long_data</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#ge6a435a21a5c4b5e582d42095a7b06fc"></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#g723173297f5b67af937205c7d74ac353">stp_curve_set_ulong_data</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g723173297f5b67af937205c7d74ac353"></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#g31e76843f4d2f207701755b58766a670">stp_curve_set_int_data</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g31e76843f4d2f207701755b58766a670"></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#g3ee80f8e4f33691a78b3ad8c3fd7c34f">stp_curve_set_uint_data</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g3ee80f8e4f33691a78b3ad8c3fd7c34f"></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#g2fa5222aab07e85f215e389734b6dbea">stp_curve_set_short_data</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g2fa5222aab07e85f215e389734b6dbea"></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#g0af395eefa7bfe0d19acc1acbaeefe48">stp_curve_set_ushort_data</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g0af395eefa7bfe0d19acc1acbaeefe48"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#g5cbf7c4b6ad96ecb35fc06f46c0319f0">stp_curve_get_subrange</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g5cbf7c4b6ad96ecb35fc06f46c0319f0"></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#g73dfcc4c95734449965227e21deb3037">stp_curve_set_subrange</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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#gb2208f56694e47e4300d10e057f59ee8">stp_curve_get_data</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#gb2208f56694e47e4300d10e057f59ee8"></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#g79e0d6afa3573917c756af64b56a0d82">stp_curve_get_data_points</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g79e0d6afa3573917c756af64b56a0d82"></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#g251f105cb5f2b126ea02b7908f717c18">stp_curve_get_float_data</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g251f105cb5f2b126ea02b7908f717c18"></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#gf59bd38c9dfc7beb08a283dc9e400bf2">stp_curve_get_long_data</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#gf59bd38c9dfc7beb08a283dc9e400bf2"></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#g24a862eda4cdbb626f51aeb7d8ae9a50">stp_curve_get_ulong_data</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g24a862eda4cdbb626f51aeb7d8ae9a50"></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#g6de80e81b64262e0051441f697ae4de4">stp_curve_get_int_data</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g6de80e81b64262e0051441f697ae4de4"></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#g19b3160a57dc6959fe08c631c7206a8a">stp_curve_get_uint_data</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g19b3160a57dc6959fe08c631c7206a8a"></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#g87c5d1904efa58be8a21ab6b2c41d0b9">stp_curve_get_short_data</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g87c5d1904efa58be8a21ab6b2c41d0b9"></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#ga02125af6b9c192e34985851370391b8">stp_curve_get_ushort_data</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#ga02125af6b9c192e34985851370391b8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="group__sequence.html#g327a46aa1d782a4cd53abf306068e272">stp_sequence_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gde323594e84d4380c88ecf122a5a4da8">stp_curve_get_sequence</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#gde323594e84d4380c88ecf122a5a4da8"></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#gcb8a2b9b21f97f32faacb99a6125e152">stp_curve_set_gamma</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#gcb8a2b9b21f97f32faacb99a6125e152"></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#g0420a6cfa87aa96e5c9a56142aa0178d">stp_curve_get_gamma</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g0420a6cfa87aa96e5c9a56142aa0178d"></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#g2d3b8372bde3fce699a3b7bb3c9d8582">stp_curve_set_point</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g2d3b8372bde3fce699a3b7bb3c9d8582"></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#g569aae57147ed7681f23e0e60bd8af35">stp_curve_get_point</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g569aae57147ed7681f23e0e60bd8af35"></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#gb33642ee6c49334f379a4dc185ecd355">stp_curve_interpolate_value</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#gb33642ee6c49334f379a4dc185ecd355"></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#g87298cf562468cbcf2c1f76a0ab80b62">stp_curve_resample</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">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="#g87298cf562468cbcf2c1f76a0ab80b62"></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#gad611b3ddbd667ec204fa7b42f8d7546">stp_curve_rescale</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double scale, <a class="el" href="group__curve.html#g7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a> mode, <a class="el" href="group__curve.html#g86d146e483ca1902f973d574f542b85f">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="#gad611b3ddbd667ec204fa7b42f8d7546"></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#gc12af55cf0eb2f76db967886f8996313">stp_curve_write</a> (FILE *file, const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a curve to a file.  <a href="#gc12af55cf0eb2f76db967886f8996313"></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#gf2f0da590278ff74af1eccb0aa0c7169">stp_curve_write_string</a> (const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Write a curve to a string.  <a href="#gf2f0da590278ff74af1eccb0aa0c7169"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#g478a24e44a3ce345f7207cf7ded12e37">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="#g478a24e44a3ce345f7207cf7ded12e37"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gd96d7d1cda5f037f7d6a9b651ebbbb46">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="#gd96d7d1cda5f037f7d6a9b651ebbbb46"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gb8c0df217306a6e0597f058efbfaca82">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="#gb8c0df217306a6e0597f058efbfaca82"></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#g55c83a9139fc1b06b90e983d7c1ceff7">stp_curve_compose</a> (<a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> **retval, <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *a, <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *b, <a class="el" href="group__curve.html#g7eddbee28cb1f3c76a19408b86ea142e">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="#g55c83a9139fc1b06b90e983d7c1ceff7"></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="g375a2b23705fb0698ae1d823243c8524"></a><!-- doxytag: member="curve.h::stp_curve_t" ref="g375a2b23705fb0698ae1d823243c8524" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef struct stp_curve <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The curve opaque data type. 
<p>

</div>
</div><p>
<hr><h2>Enumeration Type Documentation</h2>
<a class="anchor" name="g86d146e483ca1902f973d574f542b85f"></a><!-- doxytag: member="curve.h::stp_curve_bounds_t" ref="g86d146e483ca1902f973d574f542b85f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__curve.html#g86d146e483ca1902f973d574f542b85f">stp_curve_bounds_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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="gg86d146e483ca1902f973d574f542b85f118d303bf7bdf4f00bda71cc6eac49c3"></a><!-- doxytag: member="STP_CURVE_BOUNDS_RESCALE" ref="gg86d146e483ca1902f973d574f542b85f118d303bf7bdf4f00bda71cc6eac49c3" args="" -->STP_CURVE_BOUNDS_RESCALE</em>&nbsp;</td><td>
Rescale the bounds. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg86d146e483ca1902f973d574f542b85fec9e6673edac9d34e3aad376fa711aa5"></a><!-- doxytag: member="STP_CURVE_BOUNDS_CLIP" ref="gg86d146e483ca1902f973d574f542b85fec9e6673edac9d34e3aad376fa711aa5" args="" -->STP_CURVE_BOUNDS_CLIP</em>&nbsp;</td><td>
Clip the curve to the existing bounds. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg86d146e483ca1902f973d574f542b85fd699d675d5df223055388cd83d0b362b"></a><!-- doxytag: member="STP_CURVE_BOUNDS_ERROR" ref="gg86d146e483ca1902f973d574f542b85fd699d675d5df223055388cd83d0b362b" args="" -->STP_CURVE_BOUNDS_ERROR</em>&nbsp;</td><td>
Error if bounds are violated. 
<p>
</td></tr>
</table>
</dl>

</div>
</div><p>
<a class="anchor" name="g7eddbee28cb1f3c76a19408b86ea142e"></a><!-- doxytag: member="curve.h::stp_curve_compose_t" ref="g7eddbee28cb1f3c76a19408b86ea142e" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__curve.html#g7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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="gg7eddbee28cb1f3c76a19408b86ea142ec38b0bf09e93edb67c3e5c53035295f3"></a><!-- doxytag: member="STP_CURVE_COMPOSE_ADD" ref="gg7eddbee28cb1f3c76a19408b86ea142ec38b0bf09e93edb67c3e5c53035295f3" args="" -->STP_CURVE_COMPOSE_ADD</em>&nbsp;</td><td>
Add composition. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg7eddbee28cb1f3c76a19408b86ea142ed3bd2cdb63498d5d22686e79e2c0ed95"></a><!-- doxytag: member="STP_CURVE_COMPOSE_MULTIPLY" ref="gg7eddbee28cb1f3c76a19408b86ea142ed3bd2cdb63498d5d22686e79e2c0ed95" args="" -->STP_CURVE_COMPOSE_MULTIPLY</em>&nbsp;</td><td>
Multiply composition. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg7eddbee28cb1f3c76a19408b86ea142e8de151149fdfd4fcca78826e6352246a"></a><!-- doxytag: member="STP_CURVE_COMPOSE_EXPONENTIATE" ref="gg7eddbee28cb1f3c76a19408b86ea142e8de151149fdfd4fcca78826e6352246a" args="" -->STP_CURVE_COMPOSE_EXPONENTIATE</em>&nbsp;</td><td>
Exponentiate composition. 
<p>
</td></tr>
</table>
</dl>

</div>
</div><p>
<a class="anchor" name="g982f8191c84b049cc3ad3cee1558fc23"></a><!-- doxytag: member="curve.h::stp_curve_type_t" ref="g982f8191c84b049cc3ad3cee1558fc23" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__curve.html#g982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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="gg982f8191c84b049cc3ad3cee1558fc2346228ddaa2d52a85ccd79c4dc0f76ad3"></a><!-- doxytag: member="STP_CURVE_TYPE_LINEAR" ref="gg982f8191c84b049cc3ad3cee1558fc2346228ddaa2d52a85ccd79c4dc0f76ad3" args="" -->STP_CURVE_TYPE_LINEAR</em>&nbsp;</td><td>
Linear interpolation. 
<p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" name="gg982f8191c84b049cc3ad3cee1558fc23fb1ffdc3754f428d8e3a2124e014ff77"></a><!-- doxytag: member="STP_CURVE_TYPE_SPLINE" ref="gg982f8191c84b049cc3ad3cee1558fc23fb1ffdc3754f428d8e3a2124e014ff77" args="" -->STP_CURVE_TYPE_SPLINE</em>&nbsp;</td><td>
Spline interpolation. 
<p>
</td></tr>
</table>
</dl>

</div>
</div><p>
<a class="anchor" name="g3ae3af552b490b0ca8b02e442ac9547a"></a><!-- doxytag: member="curve.h::stp_curve_wrap_mode_t" ref="g3ae3af552b490b0ca8b02e442ac9547a" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__curve.html#g3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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="gg3ae3af552b490b0ca8b02e442ac9547ad840485ad7df768a06ee4be02d93b97a"></a><!-- doxytag: member="STP_CURVE_WRAP_NONE" ref="gg3ae3af552b490b0ca8b02e442ac9547ad840485ad7df768a06ee4be02d93b97a" 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="gg3ae3af552b490b0ca8b02e442ac9547ac0361aebddfabfb263dc0205a61f6fbd"></a><!-- doxytag: member="STP_CURVE_WRAP_AROUND" ref="gg3ae3af552b490b0ca8b02e442ac9547ac0361aebddfabfb263dc0205a61f6fbd" args="" -->STP_CURVE_WRAP_AROUND</em>&nbsp;</td><td>
The curve wraps to its starting point. 
<p>
</td></tr>
</table>
</dl>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g55c83a9139fc1b06b90e983d7c1ceff7"></a><!-- doxytag: member="curve.h::stp_curve_compose" ref="g55c83a9139fc1b06b90e983d7c1ceff7" args="(stp_curve_t **retval, stp_curve_t *a, stp_curve_t *b, stp_curve_compose_t mode, int points)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_compose           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> **&nbsp;</td>
          <td class="paramname"> <em>retval</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__curve.html#g7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a>&nbsp;</td>
          <td class="paramname"> <em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>points</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>FALSE if element-wise composition fails. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gcd7861bf1c9d61ac4ec87844a15ab9d3"></a><!-- doxytag: member="curve.h::stp_curve_copy" ref="gcd7861bf1c9d61ac4ec87844a15ab9d3" args="(stp_curve_t *dest, const stp_curve_t *source)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void stp_curve_copy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>source</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy a curve. 
<p>
Both dest and source must be valid curves previously created with <a class="el" href="group__curve.html#g6b3640f0e25bd9d38e46bdc1b2ee58a4" title="Create a new curve.">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>

</div>
</div><p>
<a class="anchor" name="g766ff02b29b976372779f719076ad017"></a><!-- doxytag: member="curve.h::stp_curve_count_points" ref="g766ff02b29b976372779f719076ad017" args="(const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t stp_curve_count_points           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>the number of points. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g6b3640f0e25bd9d38e46bdc1b2ee58a4"></a><!-- doxytag: member="curve.h::stp_curve_create" ref="g6b3640f0e25bd9d38e46bdc1b2ee58a4" args="(stp_curve_wrap_mode_t wrap)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_create           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a>&nbsp;</td>
          <td class="paramname"> <em>wrap</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>the newly created curve. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g972ed591394396e0c66e928a0695b3bf"></a><!-- doxytag: member="curve.h::stp_curve_create_copy" ref="g972ed591394396e0c66e928a0695b3bf" args="(const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_create_copy           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copy and allocate a 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#g6b3640f0e25bd9d38e46bdc1b2ee58a4" title="Create a new curve.">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 class="return" compact><dt><b>Returns:</b></dt><dd>the new copy of the curve. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gd96d7d1cda5f037f7d6a9b651ebbbb46"></a><!-- doxytag: member="curve.h::stp_curve_create_from_file" ref="gd96d7d1cda5f037f7d6a9b651ebbbb46" args="(const char *file)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_create_from_file           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>file</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a curve from a stream. 
<p>
<dl class="warning" 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 class="return" compact><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g478a24e44a3ce345f7207cf7ded12e37"></a><!-- doxytag: member="curve.h::stp_curve_create_from_stream" ref="g478a24e44a3ce345f7207cf7ded12e37" args="(FILE *fp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_create_from_stream           </td>
          <td>(</td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>fp</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a curve from a stream. 
<p>
<dl class="warning" 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 class="return" compact><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gb8c0df217306a6e0597f058efbfaca82"></a><!-- doxytag: member="curve.h::stp_curve_create_from_string" ref="gb8c0df217306a6e0597f058efbfaca82" args="(const char *string)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_create_from_string           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>string</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a curve from a string. 
<p>
<dl class="warning" 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 class="return" compact><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g8c2aed234d3e4ddc4c239801be17bb73"></a><!-- doxytag: member="curve.h::stp_curve_create_reverse" ref="g8c2aed234d3e4ddc4c239801be17bb73" args="(const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_create_reverse           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reverse and allocate a 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#g6b3640f0e25bd9d38e46bdc1b2ee58a4" title="Create a new curve.">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 class="return" compact><dt><b>Returns:</b></dt><dd>the new copy of the curve. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g4294b85e848fe421496469e2406ef380"></a><!-- doxytag: member="curve.h::stp_curve_destroy" ref="g4294b85e848fe421496469e2406ef380" args="(stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void stp_curve_destroy           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>

</div>
</div><p>
<a class="anchor" name="g63c3386fbfd75da9fe985673bf7b1ca3"></a><!-- doxytag: member="curve.h::stp_curve_get_bounds" ref="g63c3386fbfd75da9fe985673bf7b1ca3" args="(const stp_curve_t *curve, double *low, double *high)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void stp_curve_get_bounds           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>low</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>high</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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>

</div>
</div><p>
<a class="anchor" name="gb2208f56694e47e4300d10e057f59ee8"></a><!-- doxytag: member="curve.h::stp_curve_get_data" ref="gb2208f56694e47e4300d10e057f59ee8" args="(const stp_curve_t *curve, size_t *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const double* stp_curve_get_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g79e0d6afa3573917c756af64b56a0d82"></a><!-- doxytag: member="curve.h::stp_curve_get_data_points" ref="g79e0d6afa3573917c756af64b56a0d82" args="(const stp_curve_t *curve, size_t *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a>* stp_curve_get_data_points           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g251f105cb5f2b126ea02b7908f717c18"></a><!-- doxytag: member="curve.h::stp_curve_get_float_data" ref="g251f105cb5f2b126ea02b7908f717c18" args="(const stp_curve_t *curve, size_t *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const float* stp_curve_get_float_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g0420a6cfa87aa96e5c9a56142aa0178d"></a><!-- doxytag: member="curve.h::stp_curve_get_gamma" ref="g0420a6cfa87aa96e5c9a56142aa0178d" args="(const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double stp_curve_get_gamma           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the gamma value of the curve. 
<p>
<dl class="return" 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>

</div>
</div><p>
<a class="anchor" name="g6de80e81b64262e0051441f697ae4de4"></a><!-- doxytag: member="curve.h::stp_curve_get_int_data" ref="g6de80e81b64262e0051441f697ae4de4" args="(const stp_curve_t *curve, size_t *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const int* stp_curve_get_int_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g42c98a6a6d2512516738b6df9367510e"></a><!-- doxytag: member="curve.h::stp_curve_get_interpolation_type" ref="g42c98a6a6d2512516738b6df9367510e" args="(const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__curve.html#g982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a> stp_curve_get_interpolation_type           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>the interpolation type. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gf59bd38c9dfc7beb08a283dc9e400bf2"></a><!-- doxytag: member="curve.h::stp_curve_get_long_data" ref="gf59bd38c9dfc7beb08a283dc9e400bf2" args="(const stp_curve_t *curve, size_t *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const long* stp_curve_get_long_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g569aae57147ed7681f23e0e60bd8af35"></a><!-- doxytag: member="curve.h::stp_curve_get_point" ref="g569aae57147ed7681f23e0e60bd8af35" args="(const stp_curve_t *curve, size_t where, double *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_get_point           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>where</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="gcb8e51731b9385556747744a0d4f43fb"></a><!-- doxytag: member="curve.h::stp_curve_get_range" ref="gcb8e51731b9385556747744a0d4f43fb" args="(const stp_curve_t *curve, double *low, double *high)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void stp_curve_get_range           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>low</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>high</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="gde323594e84d4380c88ecf122a5a4da8"></a><!-- doxytag: member="curve.h::stp_curve_get_sequence" ref="gde323594e84d4380c88ecf122a5a4da8" args="(const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="group__sequence.html#g327a46aa1d782a4cd53abf306068e272">stp_sequence_t</a>* stp_curve_get_sequence           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g87c5d1904efa58be8a21ab6b2c41d0b9"></a><!-- doxytag: member="curve.h::stp_curve_get_short_data" ref="g87c5d1904efa58be8a21ab6b2c41d0b9" args="(const stp_curve_t *curve, size_t *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const short* stp_curve_get_short_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g5cbf7c4b6ad96ecb35fc06f46c0319f0"></a><!-- doxytag: member="curve.h::stp_curve_get_subrange" ref="g5cbf7c4b6ad96ecb35fc06f46c0319f0" args="(const stp_curve_t *curve, size_t start, size_t count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_get_subrange           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>a curve containing the subrange. The returned curve is non-wrapping. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g19b3160a57dc6959fe08c631c7206a8a"></a><!-- doxytag: member="curve.h::stp_curve_get_uint_data" ref="g19b3160a57dc6959fe08c631c7206a8a" args="(const stp_curve_t *curve, size_t *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned int* stp_curve_get_uint_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g24a862eda4cdbb626f51aeb7d8ae9a50"></a><!-- doxytag: member="curve.h::stp_curve_get_ulong_data" ref="g24a862eda4cdbb626f51aeb7d8ae9a50" args="(const stp_curve_t *curve, size_t *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned long* stp_curve_get_ulong_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="ga02125af6b9c192e34985851370391b8"></a><!-- doxytag: member="curve.h::stp_curve_get_ushort_data" ref="ga02125af6b9c192e34985851370391b8" args="(const stp_curve_t *curve, size_t *count)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const unsigned short* stp_curve_get_ushort_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&nbsp;</td>
          <td class="paramname"> <em>count</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g859020827897bac0f4671322ec027dc4"></a><!-- doxytag: member="curve.h::stp_curve_get_wrap" ref="g859020827897bac0f4671322ec027dc4" args="(const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__curve.html#g3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a> stp_curve_get_wrap           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>the wrapping mode. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gb33642ee6c49334f379a4dc185ecd355"></a><!-- doxytag: member="curve.h::stp_curve_interpolate_value" ref="gb33642ee6c49334f379a4dc185ecd355" args="(const stp_curve_t *curve, double where, double *result)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_interpolate_value           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>where</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>result</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g29b022a3055afe0b48d1f2736ff2f4da"></a><!-- doxytag: member="curve.h::stp_curve_is_piecewise" ref="g29b022a3055afe0b48d1f2736ff2f4da" args="(const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_is_piecewise           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>whether the curve is piecewise </dd></dl>

</div>
</div><p>
<a class="anchor" name="g87298cf562468cbcf2c1f76a0ab80b62"></a><!-- doxytag: member="curve.h::stp_curve_resample" ref="g87298cf562468cbcf2c1f76a0ab80b62" args="(stp_curve_t *curve, size_t points)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_resample           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>points</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="gad611b3ddbd667ec204fa7b42f8d7546"></a><!-- doxytag: member="curve.h::stp_curve_rescale" ref="gad611b3ddbd667ec204fa7b42f8d7546" args="(stp_curve_t *curve, double scale, stp_curve_compose_t mode, stp_curve_bounds_t bounds_mode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_rescale           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>scale</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__curve.html#g7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a>&nbsp;</td>
          <td class="paramname"> <em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__curve.html#g86d146e483ca1902f973d574f542b85f">stp_curve_bounds_t</a>&nbsp;</td>
          <td class="paramname"> <em>bounds_mode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>FALSE if this would exceed floating point limits </dd></dl>

</div>
</div><p>
<a class="anchor" name="g3416157017287eae136fb928802be234"></a><!-- doxytag: member="curve.h::stp_curve_reverse" ref="g3416157017287eae136fb928802be234" args="(stp_curve_t *dest, const stp_curve_t *source)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void stp_curve_reverse           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>source</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reverse a curve. 
<p>
Both dest and source must be valid curves previously created with <a class="el" href="group__curve.html#g6b3640f0e25bd9d38e46bdc1b2ee58a4" title="Create a new curve.">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>

</div>
</div><p>
<a class="anchor" name="ge32fb850963b8694d3739c0ed8475f75"></a><!-- doxytag: member="curve.h::stp_curve_set_bounds" ref="ge32fb850963b8694d3739c0ed8475f75" args="(stp_curve_t *curve, double low, double high)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_bounds           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>low</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>high</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>FALSE if any existing points on the curve are outside the bounds. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g81bceb4cb991cef1cda2298cf7bb9f15"></a><!-- doxytag: member="curve.h::stp_curve_set_data" ref="g81bceb4cb991cef1cda2298cf7bb9f15" args="(stp_curve_t *curve, size_t count, const double *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_data           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gce09cab4e6ae3d55f75aacae3689e8e6"></a><!-- doxytag: member="curve.h::stp_curve_set_data_points" ref="gce09cab4e6ae3d55f75aacae3689e8e6" args="(stp_curve_t *curve, size_t count, const stp_curve_point_t *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_data_points           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gbd7a39289471607311141c7fc3bbb415"></a><!-- doxytag: member="curve.h::stp_curve_set_float_data" ref="gbd7a39289471607311141c7fc3bbb415" args="(stp_curve_t *curve, size_t count, const float *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_float_data           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gcb8a2b9b21f97f32faacb99a6125e152"></a><!-- doxytag: member="curve.h::stp_curve_set_gamma" ref="gcb8a2b9b21f97f32faacb99a6125e152" args="(stp_curve_t *curve, double f_gamma)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_gamma           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>f_gamma</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g31e76843f4d2f207701755b58766a670"></a><!-- doxytag: member="curve.h::stp_curve_set_int_data" ref="g31e76843f4d2f207701755b58766a670" args="(stp_curve_t *curve, size_t count, const int *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_int_data           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g82890cef78f5861a88c5789c33693423"></a><!-- doxytag: member="curve.h::stp_curve_set_interpolation_type" ref="g82890cef78f5861a88c5789c33693423" args="(stp_curve_t *curve, stp_curve_type_t itype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_interpolation_type           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__curve.html#g982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a>&nbsp;</td>
          <td class="paramname"> <em>itype</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, or 0 if itype is invalid. </dd></dl>

</div>
</div><p>
<a class="anchor" name="ge6a435a21a5c4b5e582d42095a7b06fc"></a><!-- doxytag: member="curve.h::stp_curve_set_long_data" ref="ge6a435a21a5c4b5e582d42095a7b06fc" args="(stp_curve_t *curve, size_t count, const long *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_long_data           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const long *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g2d3b8372bde3fce699a3b7bb3c9d8582"></a><!-- doxytag: member="curve.h::stp_curve_set_point" ref="g2d3b8372bde3fce699a3b7bb3c9d8582" args="(stp_curve_t *curve, size_t where, double data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_point           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>where</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" 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>

</div>
</div><p>
<a class="anchor" name="g2fa5222aab07e85f215e389734b6dbea"></a><!-- doxytag: member="curve.h::stp_curve_set_short_data" ref="g2fa5222aab07e85f215e389734b6dbea" args="(stp_curve_t *curve, size_t count, const short *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_short_data           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const short *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g73dfcc4c95734449965227e21deb3037"></a><!-- doxytag: member="curve.h::stp_curve_set_subrange" ref="g73dfcc4c95734449965227e21deb3037" args="(stp_curve_t *curve, const stp_curve_t *range, size_t start)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_subrange           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>start</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>

</div>
</div><p>
<a class="anchor" name="g3ee80f8e4f33691a78b3ad8c3fd7c34f"></a><!-- doxytag: member="curve.h::stp_curve_set_uint_data" ref="g3ee80f8e4f33691a78b3ad8c3fd7c34f" args="(stp_curve_t *curve, size_t count, const unsigned int *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_uint_data           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned int *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g723173297f5b67af937205c7d74ac353"></a><!-- doxytag: member="curve.h::stp_curve_set_ulong_data" ref="g723173297f5b67af937205c7d74ac353" args="(stp_curve_t *curve, size_t count, const unsigned long *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_ulong_data           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned long *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="g0af395eefa7bfe0d19acc1acbaeefe48"></a><!-- doxytag: member="curve.h::stp_curve_set_ushort_data" ref="g0af395eefa7bfe0d19acc1acbaeefe48" args="(stp_curve_t *curve, size_t count, const unsigned short *data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_set_ushort_data           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned short *&nbsp;</td>
          <td class="paramname"> <em>data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gc12af55cf0eb2f76db967886f8996313"></a><!-- doxytag: member="curve.h::stp_curve_write" ref="gc12af55cf0eb2f76db967886f8996313" args="(FILE *file, const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int stp_curve_write           </td>
          <td>(</td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>file</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="warning" 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 class="return" compact><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="gf2f0da590278ff74af1eccb0aa0c7169"></a><!-- doxytag: member="curve.h::stp_curve_write_string" ref="gf2f0da590278ff74af1eccb0aa0c7169" args="(const stp_curve_t *curve)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* stp_curve_write_string           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#g375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&nbsp;</td>
          <td class="paramname"> <em>curve</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<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 class="warning" 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 class="return" 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>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Aug 10 20:32:51 2010 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.5.6 </small></address>
</body>
</html>