Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 8871645d6fb2d75b3b56fecdf5e99eda > files > 74

gutenprint-devel-5.2.7-2.fc14.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>libgutenprint API Reference: curve</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libgutenprint API Reference&#160;<span id="projectnumber">5.2.7</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">curve</div>  </div>
</div>
<div class="contents">

<p>The curve type models a linear, spline or gamma curve.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct &#160;</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">&#160;</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"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef struct stp_curve&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">The curve opaque data type.  <a href="#ga375a2b23705fb0698ae1d823243c8524"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a> { <a class="el" href="group__curve.html#gga982f8191c84b049cc3ad3cee1558fc23a46228ddaa2d52a85ccd79c4dc0f76ad3">STP_CURVE_TYPE_LINEAR</a>, 
<a class="el" href="group__curve.html#gga982f8191c84b049cc3ad3cee1558fc23afb1ffdc3754f428d8e3a2124e014ff77">STP_CURVE_TYPE_SPLINE</a>
 }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Curve types.  <a href="group__curve.html#ga982f8191c84b049cc3ad3cee1558fc23">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a> { <a class="el" href="group__curve.html#gga3ae3af552b490b0ca8b02e442ac9547aad840485ad7df768a06ee4be02d93b97a">STP_CURVE_WRAP_NONE</a>, 
<a class="el" href="group__curve.html#gga3ae3af552b490b0ca8b02e442ac9547aac0361aebddfabfb263dc0205a61f6fbd">STP_CURVE_WRAP_AROUND</a>
 }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Wrapping mode.  <a href="group__curve.html#ga3ae3af552b490b0ca8b02e442ac9547a">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a> { <a class="el" href="group__curve.html#gga7eddbee28cb1f3c76a19408b86ea142eac38b0bf09e93edb67c3e5c53035295f3">STP_CURVE_COMPOSE_ADD</a>, 
<a class="el" href="group__curve.html#gga7eddbee28cb1f3c76a19408b86ea142ead3bd2cdb63498d5d22686e79e2c0ed95">STP_CURVE_COMPOSE_MULTIPLY</a>, 
<a class="el" href="group__curve.html#gga7eddbee28cb1f3c76a19408b86ea142ea8de151149fdfd4fcca78826e6352246a">STP_CURVE_COMPOSE_EXPONENTIATE</a>
 }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Composition types.  <a href="group__curve.html#ga7eddbee28cb1f3c76a19408b86ea142e">More...</a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga86d146e483ca1902f973d574f542b85f">stp_curve_bounds_t</a> { <a class="el" href="group__curve.html#gga86d146e483ca1902f973d574f542b85fa118d303bf7bdf4f00bda71cc6eac49c3">STP_CURVE_BOUNDS_RESCALE</a>, 
<a class="el" href="group__curve.html#gga86d146e483ca1902f973d574f542b85faec9e6673edac9d34e3aad376fa711aa5">STP_CURVE_BOUNDS_CLIP</a>, 
<a class="el" href="group__curve.html#gga86d146e483ca1902f973d574f542b85fad699d675d5df223055388cd83d0b362b">STP_CURVE_BOUNDS_ERROR</a>
 }</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Behaviour when curve exceeds bounds.  <a href="group__curve.html#ga86d146e483ca1902f973d574f542b85f">More...</a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga6b3640f0e25bd9d38e46bdc1b2ee58a4">stp_curve_create</a> (<a class="el" href="group__curve.html#ga3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a> wrap)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new curve.  <a href="#ga6b3640f0e25bd9d38e46bdc1b2ee58a4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga972ed591394396e0c66e928a0695b3bf">stp_curve_create_copy</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy and allocate a curve.  <a href="#ga972ed591394396e0c66e928a0695b3bf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gacd7861bf1c9d61ac4ec87844a15ab9d3">stp_curve_copy</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *dest, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *source)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy a curve.  <a href="#gacd7861bf1c9d61ac4ec87844a15ab9d3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga8c2aed234d3e4ddc4c239801be17bb73">stp_curve_create_reverse</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse and allocate a curve.  <a href="#ga8c2aed234d3e4ddc4c239801be17bb73"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga3416157017287eae136fb928802be234">stp_curve_reverse</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *dest, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *source)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Reverse a curve.  <a href="#ga3416157017287eae136fb928802be234"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga4294b85e848fe421496469e2406ef380">stp_curve_destroy</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy an curve.  <a href="#ga4294b85e848fe421496469e2406ef380"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gae32fb850963b8694d3739c0ed8475f75">stp_curve_set_bounds</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double low, double high)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the lower and upper bounds on a curve.  <a href="#gae32fb850963b8694d3739c0ed8475f75"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga63c3386fbfd75da9fe985673bf7b1ca3">stp_curve_get_bounds</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the lower and upper bounds on a curve.  <a href="#ga63c3386fbfd75da9fe985673bf7b1ca3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga859020827897bac0f4671322ec027dc4">stp_curve_get_wrap</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the wrapping mode.  <a href="#ga859020827897bac0f4671322ec027dc4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga29b022a3055afe0b48d1f2736ff2f4da">stp_curve_is_piecewise</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Determine whether the curve is piecewise.  <a href="#ga29b022a3055afe0b48d1f2736ff2f4da"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gacb8e51731b9385556747744a0d4f43fb">stp_curve_get_range</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double *low, double *high)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga766ff02b29b976372779f719076ad017">stp_curve_count_points</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of allocated points in the curve.  <a href="#ga766ff02b29b976372779f719076ad017"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga82890cef78f5861a88c5789c33693423">stp_curve_set_interpolation_type</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, <a class="el" href="group__curve.html#ga982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a> itype)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the curve interpolation type.  <a href="#ga82890cef78f5861a88c5789c33693423"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga42c98a6a6d2512516738b6df9367510e">stp_curve_get_interpolation_type</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the curve interpolation type.  <a href="#ga42c98a6a6d2512516738b6df9367510e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga81bceb4cb991cef1cda2298cf7bb9f15">stp_curve_set_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const double *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set all data points of the curve.  <a href="#ga81bceb4cb991cef1cda2298cf7bb9f15"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gace09cab4e6ae3d55f75aacae3689e8e6">stp_curve_set_data_points</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">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">&#160;</td><td class="mdescRight">Set all data points of the curve.  <a href="#gace09cab4e6ae3d55f75aacae3689e8e6"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gabd7a39289471607311141c7fc3bbb415">stp_curve_set_float_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const float *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the data points in a curve from float values.  <a href="#gabd7a39289471607311141c7fc3bbb415"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gae6a435a21a5c4b5e582d42095a7b06fc">stp_curve_set_long_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const long *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the data points in a curve from long values.  <a href="#gae6a435a21a5c4b5e582d42095a7b06fc"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga723173297f5b67af937205c7d74ac353">stp_curve_set_ulong_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const unsigned long *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the data points in a curve from unsigned long values.  <a href="#ga723173297f5b67af937205c7d74ac353"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga31e76843f4d2f207701755b58766a670">stp_curve_set_int_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const int *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the data points in a curve from integer values.  <a href="#ga31e76843f4d2f207701755b58766a670"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga3ee80f8e4f33691a78b3ad8c3fd7c34f">stp_curve_set_uint_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const unsigned int *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the data points in a curve from unsigned integer values.  <a href="#ga3ee80f8e4f33691a78b3ad8c3fd7c34f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga2fa5222aab07e85f215e389734b6dbea">stp_curve_set_short_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const short *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the data points in a curve from short values.  <a href="#ga2fa5222aab07e85f215e389734b6dbea"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga0af395eefa7bfe0d19acc1acbaeefe48">stp_curve_set_ushort_data</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t count, const unsigned short *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the data points in a curve from unsigned short values.  <a href="#ga0af395eefa7bfe0d19acc1acbaeefe48"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga5cbf7c4b6ad96ecb35fc06f46c0319f0">stp_curve_get_subrange</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t start, size_t count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a curve containing a subrange of data.  <a href="#ga5cbf7c4b6ad96ecb35fc06f46c0319f0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga73dfcc4c95734449965227e21deb3037">stp_curve_set_subrange</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *range, size_t start)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const double *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gab2208f56694e47e4300d10e057f59ee8">stp_curve_get_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the curve's raw data.  <a href="#gab2208f56694e47e4300d10e057f59ee8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structstp__curve__point__t.html">stp_curve_point_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga79e0d6afa3573917c756af64b56a0d82">stp_curve_get_data_points</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the curve's raw data as points.  <a href="#ga79e0d6afa3573917c756af64b56a0d82"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga251f105cb5f2b126ea02b7908f717c18">stp_curve_get_float_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to the curve's raw data as floats.  <a href="#ga251f105cb5f2b126ea02b7908f717c18"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const long *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gaf59bd38c9dfc7beb08a283dc9e400bf2">stp_curve_get_long_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to the curve's raw data as longs.  <a href="#gaf59bd38c9dfc7beb08a283dc9e400bf2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const unsigned long *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga24a862eda4cdbb626f51aeb7d8ae9a50">stp_curve_get_ulong_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned longs.  <a href="#ga24a862eda4cdbb626f51aeb7d8ae9a50"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga6de80e81b64262e0051441f697ae4de4">stp_curve_get_int_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to the curve's raw data as integers.  <a href="#ga6de80e81b64262e0051441f697ae4de4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const unsigned int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga19b3160a57dc6959fe08c631c7206a8a">stp_curve_get_uint_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned integers.  <a href="#ga19b3160a57dc6959fe08c631c7206a8a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga87c5d1904efa58be8a21ab6b2c41d0b9">stp_curve_get_short_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to the curve's raw data as shorts.  <a href="#ga87c5d1904efa58be8a21ab6b2c41d0b9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gaa02125af6b9c192e34985851370391b8">stp_curve_get_ushort_data</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t *count)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to the curve's raw data as unsigned shorts.  <a href="#gaa02125af6b9c192e34985851370391b8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="group__sequence.html#ga327a46aa1d782a4cd53abf306068e272">stp_sequence_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gade323594e84d4380c88ecf122a5a4da8">stp_curve_get_sequence</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the underlying stp_sequence_t data structure which stp_curve_t is derived from.  <a href="#gade323594e84d4380c88ecf122a5a4da8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gacb8a2b9b21f97f32faacb99a6125e152">stp_curve_set_gamma</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double f_gamma)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the gamma of a curve.  <a href="#gacb8a2b9b21f97f32faacb99a6125e152"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga0420a6cfa87aa96e5c9a56142aa0178d">stp_curve_get_gamma</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the gamma value of the curve.  <a href="#ga0420a6cfa87aa96e5c9a56142aa0178d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga2d3b8372bde3fce699a3b7bb3c9d8582">stp_curve_set_point</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t where, double data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a point along the curve.  <a href="#ga2d3b8372bde3fce699a3b7bb3c9d8582"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga569aae57147ed7681f23e0e60bd8af35">stp_curve_get_point</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t where, double *data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a point along the curve.  <a href="#ga569aae57147ed7681f23e0e60bd8af35"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gab33642ee6c49334f379a4dc185ecd355">stp_curve_interpolate_value</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double where, double *result)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Interpolate a point along the curve.  <a href="#gab33642ee6c49334f379a4dc185ecd355"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga87298cf562468cbcf2c1f76a0ab80b62">stp_curve_resample</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, size_t points)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Resample a curve (change the number of points).  <a href="#ga87298cf562468cbcf2c1f76a0ab80b62"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gaad611b3ddbd667ec204fa7b42f8d7546">stp_curve_rescale</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve, double scale, <a class="el" href="group__curve.html#ga7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a> mode, <a class="el" href="group__curve.html#ga86d146e483ca1902f973d574f542b85f">stp_curve_bounds_t</a> bounds_mode)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Rescale a curve (multiply all points by a scaling constant).  <a href="#gaad611b3ddbd667ec204fa7b42f8d7546"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gac12af55cf0eb2f76db967886f8996313">stp_curve_write</a> (FILE *file, const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a curve to a file.  <a href="#gac12af55cf0eb2f76db967886f8996313"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gaf2f0da590278ff74af1eccb0aa0c7169">stp_curve_write_string</a> (const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *curve)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Write a curve to a string.  <a href="#gaf2f0da590278ff74af1eccb0aa0c7169"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga478a24e44a3ce345f7207cf7ded12e37">stp_curve_create_from_stream</a> (FILE *fp)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a curve from a stream.  <a href="#ga478a24e44a3ce345f7207cf7ded12e37"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gad96d7d1cda5f037f7d6a9b651ebbbb46">stp_curve_create_from_file</a> (const char *file)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a curve from a stream.  <a href="#gad96d7d1cda5f037f7d6a9b651ebbbb46"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#gab8c0df217306a6e0597f058efbfaca82">stp_curve_create_from_string</a> (const char *string)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a curve from a string.  <a href="#gab8c0df217306a6e0597f058efbfaca82"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__curve.html#ga55c83a9139fc1b06b90e983d7c1ceff7">stp_curve_compose</a> (<a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> **retval, <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *a, <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *b, <a class="el" href="group__curve.html#ga7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a> mode, int points)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Compose two curves, creating a third curve.  <a href="#ga55c83a9139fc1b06b90e983d7c1ceff7"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<p>The curve type models a linear, spline or gamma curve. </p>
<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>
<p>Various operations are supported, including interpolation and composition. </p>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="ga375a2b23705fb0698ae1d823243c8524"></a><!-- doxytag: member="curve.h::stp_curve_t" ref="ga375a2b23705fb0698ae1d823243c8524" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a></td>
        </tr>
      </table>
</div>
<div class="memdoc">

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

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

<p>Behaviour when curve exceeds bounds. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga86d146e483ca1902f973d574f542b85fa118d303bf7bdf4f00bda71cc6eac49c3"></a><!-- doxytag: member="STP_CURVE_BOUNDS_RESCALE" ref="gga86d146e483ca1902f973d574f542b85fa118d303bf7bdf4f00bda71cc6eac49c3" args="" -->STP_CURVE_BOUNDS_RESCALE</em>&nbsp;</td><td>
<p>Rescale the bounds. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga86d146e483ca1902f973d574f542b85faec9e6673edac9d34e3aad376fa711aa5"></a><!-- doxytag: member="STP_CURVE_BOUNDS_CLIP" ref="gga86d146e483ca1902f973d574f542b85faec9e6673edac9d34e3aad376fa711aa5" args="" -->STP_CURVE_BOUNDS_CLIP</em>&nbsp;</td><td>
<p>Clip the curve to the existing bounds. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga86d146e483ca1902f973d574f542b85fad699d675d5df223055388cd83d0b362b"></a><!-- doxytag: member="STP_CURVE_BOUNDS_ERROR" ref="gga86d146e483ca1902f973d574f542b85fad699d675d5df223055388cd83d0b362b" args="" -->STP_CURVE_BOUNDS_ERROR</em>&nbsp;</td><td>
<p>Error if bounds are violated. </p>
</td></tr>
</table>
</dd>
</dl>

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

<p>Composition types. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga7eddbee28cb1f3c76a19408b86ea142eac38b0bf09e93edb67c3e5c53035295f3"></a><!-- doxytag: member="STP_CURVE_COMPOSE_ADD" ref="gga7eddbee28cb1f3c76a19408b86ea142eac38b0bf09e93edb67c3e5c53035295f3" args="" -->STP_CURVE_COMPOSE_ADD</em>&nbsp;</td><td>
<p>Add composition. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga7eddbee28cb1f3c76a19408b86ea142ead3bd2cdb63498d5d22686e79e2c0ed95"></a><!-- doxytag: member="STP_CURVE_COMPOSE_MULTIPLY" ref="gga7eddbee28cb1f3c76a19408b86ea142ead3bd2cdb63498d5d22686e79e2c0ed95" args="" -->STP_CURVE_COMPOSE_MULTIPLY</em>&nbsp;</td><td>
<p>Multiply composition. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga7eddbee28cb1f3c76a19408b86ea142ea8de151149fdfd4fcca78826e6352246a"></a><!-- doxytag: member="STP_CURVE_COMPOSE_EXPONENTIATE" ref="gga7eddbee28cb1f3c76a19408b86ea142ea8de151149fdfd4fcca78826e6352246a" args="" -->STP_CURVE_COMPOSE_EXPONENTIATE</em>&nbsp;</td><td>
<p>Exponentiate composition. </p>
</td></tr>
</table>
</dd>
</dl>

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

<p>Curve types. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga982f8191c84b049cc3ad3cee1558fc23a46228ddaa2d52a85ccd79c4dc0f76ad3"></a><!-- doxytag: member="STP_CURVE_TYPE_LINEAR" ref="gga982f8191c84b049cc3ad3cee1558fc23a46228ddaa2d52a85ccd79c4dc0f76ad3" args="" -->STP_CURVE_TYPE_LINEAR</em>&nbsp;</td><td>
<p>Linear interpolation. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga982f8191c84b049cc3ad3cee1558fc23afb1ffdc3754f428d8e3a2124e014ff77"></a><!-- doxytag: member="STP_CURVE_TYPE_SPLINE" ref="gga982f8191c84b049cc3ad3cee1558fc23afb1ffdc3754f428d8e3a2124e014ff77" args="" -->STP_CURVE_TYPE_SPLINE</em>&nbsp;</td><td>
<p>Spline interpolation. </p>
</td></tr>
</table>
</dd>
</dl>

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

<p>Wrapping mode. </p>
<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" id="gga3ae3af552b490b0ca8b02e442ac9547aad840485ad7df768a06ee4be02d93b97a"></a><!-- doxytag: member="STP_CURVE_WRAP_NONE" ref="gga3ae3af552b490b0ca8b02e442ac9547aad840485ad7df768a06ee4be02d93b97a" args="" -->STP_CURVE_WRAP_NONE</em>&nbsp;</td><td>
<p>The curve does not wrap. </p>
</td></tr>
<tr><td valign="top"><em><a class="anchor" id="gga3ae3af552b490b0ca8b02e442ac9547aac0361aebddfabfb263dc0205a61f6fbd"></a><!-- doxytag: member="STP_CURVE_WRAP_AROUND" ref="gga3ae3af552b490b0ca8b02e442ac9547aac0361aebddfabfb263dc0205a61f6fbd" args="" -->STP_CURVE_WRAP_AROUND</em>&nbsp;</td><td>
<p>The curve wraps to its starting point. </p>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="ga55c83a9139fc1b06b90e983d7c1ceff7"></a><!-- doxytag: member="curve.h::stp_curve_compose" ref="ga55c83a9139fc1b06b90e983d7c1ceff7" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> **&#160;</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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</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#ga7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a>&#160;</td>
          <td class="paramname"><em>mode</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>points</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Compose two curves, creating a third curve. </p>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">retval</td><td>a pointer to store the location of the newly-created output curve in. </td></tr>
    <tr><td class="paramname">a</td><td>the first source curve. </td></tr>
    <tr><td class="paramname">b</td><td>the second source curve. </td></tr>
    <tr><td class="paramname">mode</td><td>the composition mode. </td></tr>
    <tr><td class="paramname">points</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>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>FALSE if element-wise composition fails. </dd></dl>

</div>
</div>
<a class="anchor" id="gacd7861bf1c9d61ac4ec87844a15ab9d3"></a><!-- doxytag: member="curve.h::stp_curve_copy" ref="gacd7861bf1c9d61ac4ec87844a15ab9d3" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>source</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Copy a curve. </p>
<p>Both dest and source must be valid curves previously created with <a class="el" href="group__curve.html#ga6b3640f0e25bd9d38e46bdc1b2ee58a4" title="Create a new curve.">stp_curve_create()</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">dest</td><td>the destination curve. </td></tr>
    <tr><td class="paramname">source</td><td>the source curve. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga766ff02b29b976372779f719076ad017"></a><!-- doxytag: member="curve.h::stp_curve_count_points" ref="ga766ff02b29b976372779f719076ad017" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the number of allocated points in the curve. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of points. </dd></dl>

</div>
</div>
<a class="anchor" id="ga6b3640f0e25bd9d38e46bdc1b2ee58a4"></a><!-- doxytag: member="curve.h::stp_curve_create" ref="ga6b3640f0e25bd9d38e46bdc1b2ee58a4" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_create </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__curve.html#ga3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a>&#160;</td>
          <td class="paramname"><em>wrap</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new curve. </p>
<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>
<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). </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">wrap</td><td>the wrap mode of the curve. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the newly created curve. </dd></dl>

</div>
</div>
<a class="anchor" id="ga972ed591394396e0c66e928a0695b3bf"></a><!-- doxytag: member="curve.h::stp_curve_create_copy" ref="ga972ed591394396e0c66e928a0695b3bf" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_create_copy </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Copy and allocate a curve. </p>
<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#ga6b3640f0e25bd9d38e46bdc1b2ee58a4" title="Create a new curve.">stp_curve_create()</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the source curve. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the new copy of the curve. </dd></dl>

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

<p>Create a curve from a stream. </p>
<dl class="warning"><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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">file</td><td>the file to read. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured. </dd></dl>

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

<p>Create a curve from a stream. </p>
<dl class="warning"><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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">fp</td><td>the stream to read. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the newly created curve, or NULL if an error occured. </dd></dl>

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

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

</div>
</div>
<a class="anchor" id="ga8c2aed234d3e4ddc4c239801be17bb73"></a><!-- doxytag: member="curve.h::stp_curve_create_reverse" ref="ga8c2aed234d3e4ddc4c239801be17bb73" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_create_reverse </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reverse and allocate a curve. </p>
<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#ga6b3640f0e25bd9d38e46bdc1b2ee58a4" title="Create a new curve.">stp_curve_create()</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the source curve. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the new copy of the curve. </dd></dl>

</div>
</div>
<a class="anchor" id="ga4294b85e848fe421496469e2406ef380"></a><!-- doxytag: member="curve.h::stp_curve_destroy" ref="ga4294b85e848fe421496469e2406ef380" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destroy an curve. </p>
<p>It is an error to destroy the curve more than once. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to destroy. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ga63c3386fbfd75da9fe985673bf7b1ca3"></a><!-- doxytag: member="curve.h::stp_curve_get_bounds" ref="ga63c3386fbfd75da9fe985673bf7b1ca3" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>low</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>high</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">low</td><td>a pointer to a double to store the lower bound in. </td></tr>
    <tr><td class="paramname">high</td><td>a pointer to a double to store the upper bound in. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gab2208f56694e47e4300d10e057f59ee8"></a><!-- doxytag: member="curve.h::stp_curve_get_data" ref="gab2208f56694e47e4300d10e057f59ee8" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>a pointer to a size_t to store the curve size in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga79e0d6afa3573917c756af64b56a0d82"></a><!-- doxytag: member="curve.h::stp_curve_get_data_points" ref="ga79e0d6afa3573917c756af64b56a0d82" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>a pointer to a size_t to store the curve size in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga251f105cb5f2b126ea02b7908f717c18"></a><!-- doxytag: member="curve.h::stp_curve_get_float_data" ref="ga251f105cb5f2b126ea02b7908f717c18" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>a pointer to a size_t to store the curve size in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga0420a6cfa87aa96e5c9a56142aa0178d"></a><!-- doxytag: member="curve.h::stp_curve_get_gamma" ref="ga0420a6cfa87aa96e5c9a56142aa0178d" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the gamma value of the curve. </p>
<dl class="return"><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>
<a class="anchor" id="ga6de80e81b64262e0051441f697ae4de4"></a><!-- doxytag: member="curve.h::stp_curve_get_int_data" ref="ga6de80e81b64262e0051441f697ae4de4" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>a pointer to a size_t to store the curve size in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga42c98a6a6d2512516738b6df9367510e"></a><!-- doxytag: member="curve.h::stp_curve_get_interpolation_type" ref="ga42c98a6a6d2512516738b6df9367510e" 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#ga982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a> stp_curve_get_interpolation_type </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the curve interpolation type. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the interpolation type. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf59bd38c9dfc7beb08a283dc9e400bf2"></a><!-- doxytag: member="curve.h::stp_curve_get_long_data" ref="gaf59bd38c9dfc7beb08a283dc9e400bf2" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>a pointer to a size_t to store the curve size in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga569aae57147ed7681f23e0e60bd8af35"></a><!-- doxytag: member="curve.h::stp_curve_get_point" ref="ga569aae57147ed7681f23e0e60bd8af35" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>where</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get a point along the curve. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">where</td><td>the point to get. </td></tr>
    <tr><td class="paramname">data</td><td>a pointer to a double to store the value of where in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="gacb8e51731b9385556747744a0d4f43fb"></a><!-- doxytag: member="curve.h::stp_curve_get_range" ref="gacb8e51731b9385556747744a0d4f43fb" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>low</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>high</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="gade323594e84d4380c88ecf122a5a4da8"></a><!-- doxytag: member="curve.h::stp_curve_get_sequence" ref="gade323594e84d4380c88ecf122a5a4da8" 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#ga327a46aa1d782a4cd53abf306068e272">stp_sequence_t</a>* stp_curve_get_sequence </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</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>
<p>This can be used for fast access to the raw data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga87c5d1904efa58be8a21ab6b2c41d0b9"></a><!-- doxytag: member="curve.h::stp_curve_get_short_data" ref="ga87c5d1904efa58be8a21ab6b2c41d0b9" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>a pointer to a size_t to store the curve size in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga5cbf7c4b6ad96ecb35fc06f46c0319f0"></a><!-- doxytag: member="curve.h::stp_curve_get_subrange" ref="ga5cbf7c4b6ad96ecb35fc06f46c0319f0" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a>* stp_curve_get_subrange </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get a curve containing a subrange of data. </p>
<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 </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">start</td><td>the start of the subrange. </td></tr>
    <tr><td class="paramname">count</td><td>the number of point starting at start. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a curve containing the subrange. The returned curve is non-wrapping. </dd></dl>

</div>
</div>
<a class="anchor" id="ga19b3160a57dc6959fe08c631c7206a8a"></a><!-- doxytag: member="curve.h::stp_curve_get_uint_data" ref="ga19b3160a57dc6959fe08c631c7206a8a" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>a pointer to a size_t to store the curve size in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga24a862eda4cdbb626f51aeb7d8ae9a50"></a><!-- doxytag: member="curve.h::stp_curve_get_ulong_data" ref="ga24a862eda4cdbb626f51aeb7d8ae9a50" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>a pointer to a size_t to store the curve size in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="gaa02125af6b9c192e34985851370391b8"></a><!-- doxytag: member="curve.h::stp_curve_get_ushort_data" ref="gaa02125af6b9c192e34985851370391b8" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t *&#160;</td>
          <td class="paramname"><em>count</em>&#160;</td>
        </tr>
        <tr>
          <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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>a pointer to a size_t to store the curve size in. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga859020827897bac0f4671322ec027dc4"></a><!-- doxytag: member="curve.h::stp_curve_get_wrap" ref="ga859020827897bac0f4671322ec027dc4" 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#ga3ae3af552b490b0ca8b02e442ac9547a">stp_curve_wrap_mode_t</a> stp_curve_get_wrap </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="group__curve.html#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the wrapping mode. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the wrapping mode. </dd></dl>

</div>
</div>
<a class="anchor" id="gab33642ee6c49334f379a4dc185ecd355"></a><!-- doxytag: member="curve.h::stp_curve_interpolate_value" ref="gab33642ee6c49334f379a4dc185ecd355" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>where</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>result</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Interpolate a point along the curve. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">where</td><td>the point to interpolate. </td></tr>
    <tr><td class="paramname">result</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>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga29b022a3055afe0b48d1f2736ff2f4da"></a><!-- doxytag: member="curve.h::stp_curve_is_piecewise" ref="ga29b022a3055afe0b48d1f2736ff2f4da" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Determine whether the curve is piecewise. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>whether the curve is piecewise </dd></dl>

</div>
</div>
<a class="anchor" id="ga87298cf562468cbcf2c1f76a0ab80b62"></a><!-- doxytag: member="curve.h::stp_curve_resample" ref="ga87298cf562468cbcf2c1f76a0ab80b62" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>points</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Resample a curve (change the number of points). </p>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use (must not exceed 1048576). </td></tr>
    <tr><td class="paramname">points</td><td>the number of points. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="gaad611b3ddbd667ec204fa7b42f8d7546"></a><!-- doxytag: member="curve.h::stp_curve_rescale" ref="gaad611b3ddbd667ec204fa7b42f8d7546" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</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#ga7eddbee28cb1f3c76a19408b86ea142e">stp_curve_compose_t</a>&#160;</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#ga86d146e483ca1902f973d574f542b85f">stp_curve_bounds_t</a>&#160;</td>
          <td class="paramname"><em>bounds_mode</em>&#160;</td>
        </tr>
        <tr>
          <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>
<p>This also rescales the bounds. Note that this currently destroys the gamma property of the curve. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">scale</td><td>the scaling factor. </td></tr>
    <tr><td class="paramname">mode</td><td>the composition mode. </td></tr>
    <tr><td class="paramname">bounds_mode</td><td>the bounds exceeding mode. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>FALSE if this would exceed floating point limits </dd></dl>

</div>
</div>
<a class="anchor" id="ga3416157017287eae136fb928802be234"></a><!-- doxytag: member="curve.h::stp_curve_reverse" ref="ga3416157017287eae136fb928802be234" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>source</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Reverse a curve. </p>
<p>Both dest and source must be valid curves previously created with <a class="el" href="group__curve.html#ga6b3640f0e25bd9d38e46bdc1b2ee58a4" title="Create a new curve.">stp_curve_create()</a>. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">dest</td><td>the destination curve. </td></tr>
    <tr><td class="paramname">source</td><td>the source curve. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="gae32fb850963b8694d3739c0ed8475f75"></a><!-- doxytag: member="curve.h::stp_curve_set_bounds" ref="gae32fb850963b8694d3739c0ed8475f75" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>low</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>high</em>&#160;</td>
        </tr>
        <tr>
          <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>
<p>To change the bounds adjusting data as required, use stp_curve_rescale instead. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">low</td><td>the lower bound. </td></tr>
    <tr><td class="paramname">high</td><td>the upper bound. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>FALSE if any existing points on the curve are outside the bounds. </dd></dl>

</div>
</div>
<a class="anchor" id="ga81bceb4cb991cef1cda2298cf7bb9f15"></a><!-- doxytag: member="curve.h::stp_curve_set_data" ref="ga81bceb4cb991cef1cda2298cf7bb9f15" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set all data points of the curve. </p>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>the number of points (must be at least two and not more than 1048576). </td></tr>
    <tr><td class="paramname">data</td><td>a pointer to an array of doubles (must be at least count in size). </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gace09cab4e6ae3d55f75aacae3689e8e6"></a><!-- doxytag: member="curve.h::stp_curve_set_data_points" ref="gace09cab4e6ae3d55f75aacae3689e8e6" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</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> *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set all data points of the curve. </p>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>the number of points (must be at least two and not more than 1048576). </td></tr>
    <tr><td class="paramname">data</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>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gabd7a39289471607311141c7fc3bbb415"></a><!-- doxytag: member="curve.h::stp_curve_set_float_data" ref="gabd7a39289471607311141c7fc3bbb415" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const float *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <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>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
    <tr><td class="paramname">data</td><td>a pointer to an array of floats (must be at least count in size). </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gacb8a2b9b21f97f32faacb99a6125e152"></a><!-- doxytag: member="curve.h::stp_curve_set_gamma" ref="gacb8a2b9b21f97f32faacb99a6125e152" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>f_gamma</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the gamma of a curve. </p>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">f_gamma</td><td>the gamma value to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga31e76843f4d2f207701755b58766a670"></a><!-- doxytag: member="curve.h::stp_curve_set_int_data" ref="ga31e76843f4d2f207701755b58766a670" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <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>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
    <tr><td class="paramname">data</td><td>a pointer to an array of integers (must be at least count in size). </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga82890cef78f5861a88c5789c33693423"></a><!-- doxytag: member="curve.h::stp_curve_set_interpolation_type" ref="ga82890cef78f5861a88c5789c33693423" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</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#ga982f8191c84b049cc3ad3cee1558fc23">stp_curve_type_t</a>&#160;</td>
          <td class="paramname"><em>itype</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set the curve interpolation type. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">itype</td><td>the interpolation type. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, or 0 if itype is invalid. </dd></dl>

</div>
</div>
<a class="anchor" id="gae6a435a21a5c4b5e582d42095a7b06fc"></a><!-- doxytag: member="curve.h::stp_curve_set_long_data" ref="gae6a435a21a5c4b5e582d42095a7b06fc" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const long *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <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>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
    <tr><td class="paramname">data</td><td>a pointer to an array of longs (must be at least count in size). </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga2d3b8372bde3fce699a3b7bb3c9d8582"></a><!-- doxytag: member="curve.h::stp_curve_set_point" ref="ga2d3b8372bde3fce699a3b7bb3c9d8582" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>where</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set a point along the curve. </p>
<p>This call destroys any gamma value assigned to the curve. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">where</td><td>the point to set. </td></tr>
    <tr><td class="paramname">data</td><td>the value to set where to. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
<a class="anchor" id="ga2fa5222aab07e85f215e389734b6dbea"></a><!-- doxytag: member="curve.h::stp_curve_set_short_data" ref="ga2fa5222aab07e85f215e389734b6dbea" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const short *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <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>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
    <tr><td class="paramname">data</td><td>a pointer to an array of shorts (must be at least count in size). </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga73dfcc4c95734449965227e21deb3037"></a><!-- doxytag: member="curve.h::stp_curve_set_subrange" ref="ga73dfcc4c95734449965227e21deb3037" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>start</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

</div>
</div>
<a class="anchor" id="ga3ee80f8e4f33691a78b3ad8c3fd7c34f"></a><!-- doxytag: member="curve.h::stp_curve_set_uint_data" ref="ga3ee80f8e4f33691a78b3ad8c3fd7c34f" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned int *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <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>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
    <tr><td class="paramname">data</td><td>a pointer to an array of unsigned integers (must be at least count in size). </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga723173297f5b67af937205c7d74ac353"></a><!-- doxytag: member="curve.h::stp_curve_set_ulong_data" ref="ga723173297f5b67af937205c7d74ac353" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned long *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <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>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
    <tr><td class="paramname">data</td><td>a pointer to an array of unsigned longs (must be at least count in size). </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="ga0af395eefa7bfe0d19acc1acbaeefe48"></a><!-- doxytag: member="curve.h::stp_curve_set_ushort_data" ref="ga0af395eefa7bfe0d19acc1acbaeefe48" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const unsigned short *&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <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>
<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. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
    <tr><td class="paramname">count</td><td>the number of the number of points (must be at least two and not more than 1048576). </td></tr>
    <tr><td class="paramname">data</td><td>a pointer to an array of unsigned shorts (must be at least count in size). </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gac12af55cf0eb2f76db967886f8996313"></a><!-- doxytag: member="curve.h::stp_curve_write" ref="gac12af55cf0eb2f76db967886f8996313" 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 *&#160;</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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write a curve to a file. </p>
<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. </p>
<dl class="warning"><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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">file</td><td>the file to write. </td></tr>
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on success, 0 on failure. </dd></dl>

</div>
</div>
<a class="anchor" id="gaf2f0da590278ff74af1eccb0aa0c7169"></a><!-- doxytag: member="curve.h::stp_curve_write_string" ref="gaf2f0da590278ff74af1eccb0aa0c7169" 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#ga375a2b23705fb0698ae1d823243c8524">stp_curve_t</a> *&#160;</td>
          <td class="paramname"><em>curve</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write a curve to a string. </p>
<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. </p>
<dl class="warning"><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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">curve</td><td>the curve to use. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><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>
</div>
<hr class="footer"/><address class="footer"><small>Generated by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>