libgutenprint API Reference  5.2.12-pre3
Data Structures | Typedefs | Enumerations | Functions
curve

The curve type models a linear, spline or gamma curve. More...

Data Structures

struct  stp_curve_point_t
 Point (x,y) for piecewise curve. More...
 

Typedefs

typedef struct stp_curve stp_curve_t
 The curve opaque data type. More...
 

Enumerations

enum  stp_curve_type_t { STP_CURVE_TYPE_LINEAR, STP_CURVE_TYPE_SPLINE }
 Curve types. More...
 
enum  stp_curve_wrap_mode_t { STP_CURVE_WRAP_NONE, STP_CURVE_WRAP_AROUND }
 Wrapping mode. More...
 
enum  stp_curve_compose_t { STP_CURVE_COMPOSE_ADD, STP_CURVE_COMPOSE_MULTIPLY, STP_CURVE_COMPOSE_EXPONENTIATE }
 Composition types. More...
 
enum  stp_curve_bounds_t { STP_CURVE_BOUNDS_RESCALE, STP_CURVE_BOUNDS_CLIP, STP_CURVE_BOUNDS_ERROR }
 Behaviour when curve exceeds bounds. More...
 

Functions

stp_curve_tstp_curve_create (stp_curve_wrap_mode_t wrap)
 Create a new curve. More...
 
stp_curve_tstp_curve_create_copy (const stp_curve_t *curve)
 Copy and allocate a curve. More...
 
void stp_curve_copy (stp_curve_t *dest, const stp_curve_t *source)
 Copy a curve. More...
 
stp_curve_tstp_curve_create_reverse (const stp_curve_t *curve)
 Reverse and allocate a curve. More...
 
void stp_curve_reverse (stp_curve_t *dest, const stp_curve_t *source)
 Reverse a curve. More...
 
void stp_curve_destroy (stp_curve_t *curve)
 Destroy an curve. More...
 
int stp_curve_set_bounds (stp_curve_t *curve, double low, double high)
 Set the lower and upper bounds on a curve. More...
 
void stp_curve_get_bounds (const stp_curve_t *curve, double *low, double *high)
 Get the lower and upper bounds on a curve. More...
 
stp_curve_wrap_mode_t stp_curve_get_wrap (const stp_curve_t *curve)
 Get the wrapping mode. More...
 
int stp_curve_is_piecewise (const stp_curve_t *curve)
 Determine whether the curve is piecewise. More...
 
void stp_curve_get_range (const stp_curve_t *curve, double *low, double *high)
 
size_t stp_curve_count_points (const stp_curve_t *curve)
 Get the number of allocated points in the curve. More...
 
int stp_curve_set_interpolation_type (stp_curve_t *curve, stp_curve_type_t itype)
 Set the curve interpolation type. More...
 
stp_curve_type_t stp_curve_get_interpolation_type (const stp_curve_t *curve)
 Get the curve interpolation type. More...
 
int stp_curve_set_data (stp_curve_t *curve, size_t count, const double *data)
 Set all data points of the curve. More...
 
int stp_curve_set_data_points (stp_curve_t *curve, size_t count, const stp_curve_point_t *data)
 Set all data points of the curve. More...
 
int stp_curve_set_float_data (stp_curve_t *curve, size_t count, const float *data)
 Set the data points in a curve from float values. More...
 
int stp_curve_set_long_data (stp_curve_t *curve, size_t count, const long *data)
 Set the data points in a curve from long values. More...
 
int stp_curve_set_ulong_data (stp_curve_t *curve, size_t count, const unsigned long *data)
 Set the data points in a curve from unsigned long values. More...
 
int stp_curve_set_int_data (stp_curve_t *curve, size_t count, const int *data)
 Set the data points in a curve from integer values. More...
 
int stp_curve_set_uint_data (stp_curve_t *curve, size_t count, const unsigned int *data)
 Set the data points in a curve from unsigned integer values. More...
 
int stp_curve_set_short_data (stp_curve_t *curve, size_t count, const short *data)
 Set the data points in a curve from short values. More...
 
int stp_curve_set_ushort_data (stp_curve_t *curve, size_t count, const unsigned short *data)
 Set the data points in a curve from unsigned short values. More...
 
stp_curve_tstp_curve_get_subrange (const stp_curve_t *curve, size_t start, size_t count)
 Get a curve containing a subrange of data. More...
 
int stp_curve_set_subrange (stp_curve_t *curve, const stp_curve_t *range, size_t start)
 
const double * stp_curve_get_data (const stp_curve_t *curve, size_t *count)
 Get a pointer to the curve's raw data. More...
 
const stp_curve_point_tstp_curve_get_data_points (const stp_curve_t *curve, size_t *count)
 Get a pointer to the curve's raw data as points. More...
 
const float * stp_curve_get_float_data (const stp_curve_t *curve, size_t *count)
 Get pointer to the curve's raw data as floats. More...
 
const long * stp_curve_get_long_data (const stp_curve_t *curve, size_t *count)
 Get pointer to the curve's raw data as longs. More...
 
const unsigned long * stp_curve_get_ulong_data (const stp_curve_t *curve, size_t *count)
 Get pointer to the curve's raw data as unsigned longs. More...
 
const int * stp_curve_get_int_data (const stp_curve_t *curve, size_t *count)
 Get pointer to the curve's raw data as integers. More...
 
const unsigned int * stp_curve_get_uint_data (const stp_curve_t *curve, size_t *count)
 Get pointer to the curve's raw data as unsigned integers. More...
 
const short * stp_curve_get_short_data (const stp_curve_t *curve, size_t *count)
 Get pointer to the curve's raw data as shorts. More...
 
const unsigned short * stp_curve_get_ushort_data (const stp_curve_t *curve, size_t *count)
 Get pointer to the curve's raw data as unsigned shorts. More...
 
const stp_sequence_tstp_curve_get_sequence (const stp_curve_t *curve)
 Get the underlying stp_sequence_t data structure which stp_curve_t is derived from. More...
 
int stp_curve_set_gamma (stp_curve_t *curve, double f_gamma)
 Set the gamma of a curve. More...
 
double stp_curve_get_gamma (const stp_curve_t *curve)
 Get the gamma value of the curve. More...
 
int stp_curve_set_point (stp_curve_t *curve, size_t where, double data)
 Set a point along the curve. More...
 
int stp_curve_get_point (const stp_curve_t *curve, size_t where, double *data)
 Get a point along the curve. More...
 
int stp_curve_interpolate_value (const stp_curve_t *curve, double where, double *result)
 Interpolate a point along the curve. More...
 
int stp_curve_resample (stp_curve_t *curve, size_t points)
 Resample a curve (change the number of points). More...
 
int stp_curve_rescale (stp_curve_t *curve, double scale, stp_curve_compose_t mode, stp_curve_bounds_t bounds_mode)
 Rescale a curve (multiply all points by a scaling constant). More...
 
int stp_curve_write (FILE *file, const stp_curve_t *curve)
 Write a curve to a file. More...
 
char * stp_curve_write_string (const stp_curve_t *curve)
 Write a curve to a string. More...
 
stp_curve_tstp_curve_create_from_stream (FILE *fp)
 Create a curve from a stream. More...
 
stp_curve_tstp_curve_create_from_file (const char *file)
 Create a curve from a stream. More...
 
stp_curve_tstp_curve_create_from_string (const char *string)
 Create a curve from a string. More...
 
int stp_curve_compose (stp_curve_t **retval, stp_curve_t *a, stp_curve_t *b, stp_curve_compose_t mode, int points)
 Compose two curves, creating a third curve. More...
 

Detailed Description

The curve type models a linear, spline or gamma curve.

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.

Various operations are supported, including interpolation and composition.

Typedef Documentation

§ stp_curve_t

typedef struct stp_curve stp_curve_t

The curve opaque data type.

Enumeration Type Documentation

§ stp_curve_bounds_t

Behaviour when curve exceeds bounds.

Enumerator
STP_CURVE_BOUNDS_RESCALE 

Rescale the bounds.

STP_CURVE_BOUNDS_CLIP 

Clip the curve to the existing bounds.

STP_CURVE_BOUNDS_ERROR 

Error if bounds are violated.

§ stp_curve_compose_t

Composition types.

Enumerator
STP_CURVE_COMPOSE_ADD 

Add composition.

STP_CURVE_COMPOSE_MULTIPLY 

Multiply composition.

STP_CURVE_COMPOSE_EXPONENTIATE 

Exponentiate composition.

§ stp_curve_type_t

Curve types.

Enumerator
STP_CURVE_TYPE_LINEAR 

Linear interpolation.

STP_CURVE_TYPE_SPLINE 

Spline interpolation.

§ stp_curve_wrap_mode_t

Wrapping mode.

Enumerator
STP_CURVE_WRAP_NONE 

The curve does not wrap.

STP_CURVE_WRAP_AROUND 

The curve wraps to its starting point.

Function Documentation

§ stp_curve_compose()

int stp_curve_compose ( stp_curve_t **  retval,
stp_curve_t a,
stp_curve_t b,
stp_curve_compose_t  mode,
int  points 
)

Compose two curves, creating a third curve.

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.

Parameters
retvala pointer to store the location of the newly-created output curve in.
athe first source curve.
bthe second source curve.
modethe composition mode.
pointsthe 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).
Returns
FALSE if element-wise composition fails.

§ stp_curve_copy()

void stp_curve_copy ( stp_curve_t dest,
const stp_curve_t source 
)

Copy a curve.

Both dest and source must be valid curves previously created with stp_curve_create().

Parameters
destthe destination curve.
sourcethe source curve.

§ stp_curve_count_points()

size_t stp_curve_count_points ( const stp_curve_t curve)

Get the number of allocated points in the curve.

Parameters
curvethe curve to use.
Returns
the number of points.

§ stp_curve_create()

stp_curve_t* stp_curve_create ( stp_curve_wrap_mode_t  wrap)

Create a new curve.

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.

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

Parameters
wrapthe wrap mode of the curve.
Returns
the newly created curve.

§ stp_curve_create_copy()

stp_curve_t* stp_curve_create_copy ( const stp_curve_t curve)

Copy and allocate a curve.

dest will be created, and then the contents of source will be copied into it. dest must not have been previously allocated with stp_curve_create().

Parameters
curvethe source curve.
Returns
the new copy of the curve.

§ stp_curve_create_from_file()

stp_curve_t* stp_curve_create_from_file ( const char *  file)

Create a curve from a stream.

Warning
NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation.
Parameters
filethe file to read.
Returns
the newly created curve, or NULL if an error occured.

§ stp_curve_create_from_stream()

stp_curve_t* stp_curve_create_from_stream ( FILE *  fp)

Create a curve from a stream.

Warning
NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation.
Parameters
fpthe stream to read.
Returns
the newly created curve, or NULL if an error occured.

§ stp_curve_create_from_string()

stp_curve_t* stp_curve_create_from_string ( const char *  string)

Create a curve from a string.

Warning
NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation.
Parameters
stringthe string to read.
Returns
the newly created curve, or NULL if an error occured.

§ stp_curve_create_reverse()

stp_curve_t* stp_curve_create_reverse ( const stp_curve_t curve)

Reverse and allocate a curve.

dest will be created, and then the contents of source will be copied into it. dest must not have been previously allocated with stp_curve_create().

Parameters
curvethe source curve.
Returns
the new copy of the curve.

§ stp_curve_destroy()

void stp_curve_destroy ( stp_curve_t curve)

Destroy an curve.

It is an error to destroy the curve more than once.

Parameters
curvethe curve to destroy.

§ stp_curve_get_bounds()

void stp_curve_get_bounds ( const stp_curve_t curve,
double *  low,
double *  high 
)

Get the lower and upper bounds on a curve.

Parameters
curvethe curve to use.
lowa pointer to a double to store the lower bound in.
higha pointer to a double to store the upper bound in.

§ stp_curve_get_data()

const double* stp_curve_get_data ( const stp_curve_t curve,
size_t *  count 
)

Get a pointer to the curve's raw data.

Parameters
curvethe curve to use.
counta pointer to a size_t to store the curve size in.
Returns
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.

§ stp_curve_get_data_points()

const stp_curve_point_t* stp_curve_get_data_points ( const stp_curve_t curve,
size_t *  count 
)

Get a pointer to the curve's raw data as points.

Parameters
curvethe curve to use.
counta pointer to a size_t to store the curve size in.
Returns
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.

§ stp_curve_get_float_data()

const float* stp_curve_get_float_data ( const stp_curve_t curve,
size_t *  count 
)

Get pointer to the curve's raw data as floats.

Parameters
curvethe curve to use.
counta pointer to a size_t to store the curve size in.
Returns
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.

§ stp_curve_get_gamma()

double stp_curve_get_gamma ( const stp_curve_t curve)

Get the gamma value of the curve.

Returns
the gamma value. A value of 0 indicates that the curve does not have a valid gamma value.

§ stp_curve_get_int_data()

const int* stp_curve_get_int_data ( const stp_curve_t curve,
size_t *  count 
)

Get pointer to the curve's raw data as integers.

Parameters
curvethe curve to use.
counta pointer to a size_t to store the curve size in.
Returns
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.

§ stp_curve_get_interpolation_type()

stp_curve_type_t stp_curve_get_interpolation_type ( const stp_curve_t curve)

Get the curve interpolation type.

Parameters
curvethe curve to use.
Returns
the interpolation type.

§ stp_curve_get_long_data()

const long* stp_curve_get_long_data ( const stp_curve_t curve,
size_t *  count 
)

Get pointer to the curve's raw data as longs.

Parameters
curvethe curve to use.
counta pointer to a size_t to store the curve size in.
Returns
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.

§ stp_curve_get_point()

int stp_curve_get_point ( const stp_curve_t curve,
size_t  where,
double *  data 
)

Get a point along the curve.

Parameters
curvethe curve to use.
wherethe point to get.
dataa pointer to a double to store the value of where in.
Returns
FALSE if where is outside of the number of valid points. This also returns NULL if the curve is a piecewise curve.

§ stp_curve_get_range()

void stp_curve_get_range ( const stp_curve_t curve,
double *  low,
double *  high 
)

§ stp_curve_get_sequence()

const stp_sequence_t* stp_curve_get_sequence ( const stp_curve_t curve)

Get the underlying stp_sequence_t data structure which stp_curve_t is derived from.

This can be used for fast access to the raw data.

Parameters
curvethe curve to use.
Returns
the stp_sequence_t. If the curve is a piecewise curve, the sequence returned is NULL;

§ stp_curve_get_short_data()

const short* stp_curve_get_short_data ( const stp_curve_t curve,
size_t *  count 
)

Get pointer to the curve's raw data as shorts.

Parameters
curvethe curve to use.
counta pointer to a size_t to store the curve size in.
Returns
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.

§ stp_curve_get_subrange()

stp_curve_t* stp_curve_get_subrange ( const stp_curve_t curve,
size_t  start,
size_t  count 
)

Get a curve containing a subrange of data.

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

Parameters
curvethe curve to use.
startthe start of the subrange.
countthe number of point starting at start.
Returns
a curve containing the subrange. The returned curve is non-wrapping.

§ stp_curve_get_uint_data()

const unsigned int* stp_curve_get_uint_data ( const stp_curve_t curve,
size_t *  count 
)

Get pointer to the curve's raw data as unsigned integers.

Parameters
curvethe curve to use.
counta pointer to a size_t to store the curve size in.
Returns
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.

§ stp_curve_get_ulong_data()

const unsigned long* stp_curve_get_ulong_data ( const stp_curve_t curve,
size_t *  count 
)

Get pointer to the curve's raw data as unsigned longs.

Parameters
curvethe curve to use.
counta pointer to a size_t to store the curve size in.
Returns
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.

§ stp_curve_get_ushort_data()

const unsigned short* stp_curve_get_ushort_data ( const stp_curve_t curve,
size_t *  count 
)

Get pointer to the curve's raw data as unsigned shorts.

Parameters
curvethe curve to use.
counta pointer to a size_t to store the curve size in.
Returns
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.

§ stp_curve_get_wrap()

stp_curve_wrap_mode_t stp_curve_get_wrap ( const stp_curve_t curve)

Get the wrapping mode.

Parameters
curvethe curve to use.
Returns
the wrapping mode.

§ stp_curve_interpolate_value()

int stp_curve_interpolate_value ( const stp_curve_t curve,
double  where,
double *  result 
)

Interpolate a point along the curve.

Parameters
curvethe curve to use.
wherethe point to interpolate.
resulta 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.
Returns
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.

§ stp_curve_is_piecewise()

int stp_curve_is_piecewise ( const stp_curve_t curve)

Determine whether the curve is piecewise.

Parameters
curvethe curve to use.
Returns
whether the curve is piecewise

§ stp_curve_resample()

int stp_curve_resample ( stp_curve_t curve,
size_t  points 
)

Resample a curve (change the number of points).

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.

Parameters
curvethe curve to use (must not exceed 1048576).
pointsthe number of points.
Returns
FALSE if the number of points is invalid (less than two, except that zero points is permitted for a gamma curve).

§ stp_curve_rescale()

int stp_curve_rescale ( stp_curve_t curve,
double  scale,
stp_curve_compose_t  mode,
stp_curve_bounds_t  bounds_mode 
)

Rescale a curve (multiply all points by a scaling constant).

This also rescales the bounds. Note that this currently destroys the gamma property of the curve.

Parameters
curvethe curve to use.
scalethe scaling factor.
modethe composition mode.
bounds_modethe bounds exceeding mode.
Returns
FALSE if this would exceed floating point limits

§ stp_curve_reverse()

void stp_curve_reverse ( stp_curve_t dest,
const stp_curve_t source 
)

Reverse a curve.

Both dest and source must be valid curves previously created with stp_curve_create().

Parameters
destthe destination curve.
sourcethe source curve.

§ stp_curve_set_bounds()

int stp_curve_set_bounds ( stp_curve_t curve,
double  low,
double  high 
)

Set the lower and upper bounds on a curve.

To change the bounds adjusting data as required, use stp_curve_rescale instead.

Parameters
curvethe curve to use.
lowthe lower bound.
highthe upper bound.
Returns
FALSE if any existing points on the curve are outside the bounds.

§ stp_curve_set_data()

int stp_curve_set_data ( stp_curve_t curve,
size_t  count,
const double *  data 
)

Set all data points of the curve.

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.

Parameters
curvethe curve to use.
countthe number of points (must be at least two and not more than 1048576).
dataa pointer to an array of doubles (must be at least count in size).
Returns
1 on success, 0 on failure.

§ stp_curve_set_data_points()

int stp_curve_set_data_points ( stp_curve_t curve,
size_t  count,
const stp_curve_point_t data 
)

Set all data points of the curve.

If any of the data points fall outside the bounds, the operation is not performed and FALSE is returned. This creates a piecewise curve.

Parameters
curvethe curve to use.
countthe number of points (must be at least two and not more than 1048576).
dataa 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.
Returns
1 on success, 0 on failure.

§ stp_curve_set_float_data()

int stp_curve_set_float_data ( stp_curve_t curve,
size_t  count,
const float *  data 
)

Set the data points in a curve from float values.

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.

Parameters
curvethe curve to use.
countthe number of the number of points (must be at least two and not more than 1048576).
dataa pointer to an array of floats (must be at least count in size).
Returns
1 on success, 0 on failure.

§ stp_curve_set_gamma()

int stp_curve_set_gamma ( stp_curve_t curve,
double  f_gamma 
)

Set the gamma of a curve.

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.

Parameters
curvethe curve to use.
f_gammathe gamma value to set.
Returns
FALSE if the gamma value is illegal (0, infinity, or NaN), or if the curve wraps around.

§ stp_curve_set_int_data()

int stp_curve_set_int_data ( stp_curve_t curve,
size_t  count,
const int *  data 
)

Set the data points in a curve from integer values.

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.

Parameters
curvethe curve to use.
countthe number of the number of points (must be at least two and not more than 1048576).
dataa pointer to an array of integers (must be at least count in size).
Returns
1 on success, 0 on failure.

§ stp_curve_set_interpolation_type()

int stp_curve_set_interpolation_type ( stp_curve_t curve,
stp_curve_type_t  itype 
)

Set the curve interpolation type.

Parameters
curvethe curve to use.
itypethe interpolation type.
Returns
1 on success, or 0 if itype is invalid.

§ stp_curve_set_long_data()

int stp_curve_set_long_data ( stp_curve_t curve,
size_t  count,
const long *  data 
)

Set the data points in a curve from long values.

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.

Parameters
curvethe curve to use.
countthe number of the number of points (must be at least two and not more than 1048576).
dataa pointer to an array of longs (must be at least count in size).
Returns
1 on success, 0 on failure.

§ stp_curve_set_point()

int stp_curve_set_point ( stp_curve_t curve,
size_t  where,
double  data 
)

Set a point along the curve.

This call destroys any gamma value assigned to the curve.

Parameters
curvethe curve to use.
wherethe point to set.
datathe value to set where to.
Returns
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.

§ stp_curve_set_short_data()

int stp_curve_set_short_data ( stp_curve_t curve,
size_t  count,
const short *  data 
)

Set the data points in a curve from short values.

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.

Parameters
curvethe curve to use.
countthe number of the number of points (must be at least two and not more than 1048576).
dataa pointer to an array of shorts (must be at least count in size).
Returns
1 on success, 0 on failure.

§ stp_curve_set_subrange()

int stp_curve_set_subrange ( stp_curve_t curve,
const stp_curve_t range,
size_t  start 
)

§ stp_curve_set_uint_data()

int stp_curve_set_uint_data ( stp_curve_t curve,
size_t  count,
const unsigned int *  data 
)

Set the data points in a curve from unsigned integer values.

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.

Parameters
curvethe curve to use.
countthe number of the number of points (must be at least two and not more than 1048576).
dataa pointer to an array of unsigned integers (must be at least count in size).
Returns
1 on success, 0 on failure.

§ stp_curve_set_ulong_data()

int stp_curve_set_ulong_data ( stp_curve_t curve,
size_t  count,
const unsigned long *  data 
)

Set the data points in a curve from unsigned long values.

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.

Parameters
curvethe curve to use.
countthe number of the number of points (must be at least two and not more than 1048576).
dataa pointer to an array of unsigned longs (must be at least count in size).
Returns
1 on success, 0 on failure.

§ stp_curve_set_ushort_data()

int stp_curve_set_ushort_data ( stp_curve_t curve,
size_t  count,
const unsigned short *  data 
)

Set the data points in a curve from unsigned short values.

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.

Parameters
curvethe curve to use.
countthe number of the number of points (must be at least two and not more than 1048576).
dataa pointer to an array of unsigned shorts (must be at least count in size).
Returns
1 on success, 0 on failure.

§ stp_curve_write()

int stp_curve_write ( FILE *  file,
const stp_curve_t curve 
)

Write a curve to a file.

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.

Warning
NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation.
Parameters
filethe file to write.
curvethe curve to use.
Returns
1 on success, 0 on failure.

§ stp_curve_write_string()

char* stp_curve_write_string ( const stp_curve_t curve)

Write a curve to a string.

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.

Warning
NOTE that these calls are not thread-safe! These routines may manipulate the locale to achieve a safe representation.
Parameters
curvethe curve to use.
Returns
a pointer to a string. This is allocated on the heap, and it is the caller's responsibility to free it.