# curve.h File Reference

Curve functions. More...

`#include <stdio.h>`
`#include <stdlib.h>`
`#include <gutenprint/sequence.h>`

## Data Structures

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

## Typedefs

typedef stp_curve | stp_curve_t
| The curve opaque data type.

## 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_t * | stp_curve_create (stp_curve_wrap_mode_t wrap)
| Create a new curve.
stp_curve_t * | stp_curve_create_copy (const stp_curve_t *curve)
| Copy and allocate an curve.
void | stp_curve_copy (stp_curve_t *dest, const stp_curve_t *source)
| Copy an curve.
void | stp_curve_destroy (stp_curve_t *curve)
| Destroy an curve.
int | stp_curve_set_bounds (stp_curve_t *curve, double low, double high)
| Set the lower and upper bounds on a curve.
void | stp_curve_get_bounds (const stp_curve_t *curve, double *low, double *high)
| Get the lower and upper bounds on a curve.
stp_curve_wrap_mode_t | stp_curve_get_wrap (const stp_curve_t *curve)
| Get the wrapping mode.
int | stp_curve_is_piecewise (const stp_curve_t *curve)
| Determine whether the curve is piecewise.
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.
int | stp_curve_set_interpolation_type (stp_curve_t *curve, stp_curve_type_t itype)
| Set the curve interpolation type.
stp_curve_type_t | stp_curve_get_interpolation_type (const stp_curve_t *curve)
| Get the curve interpolation type.
int | stp_curve_set_data (stp_curve_t *curve, size_t count, const double *data)
| Set all data points of the curve.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
int | stp_curve_set_gamma (stp_curve_t *curve, double f_gamma)
| Set the gamma of a curve.
double | stp_curve_get_gamma (const stp_curve_t *curve)
| Get the gamma value of the curve.
int | stp_curve_set_point (stp_curve_t *curve, size_t where, double data)
| Set a point along the curve.
int | stp_curve_get_point (const stp_curve_t *curve, size_t where, double *data)
| Get a point along the curve.
int | stp_curve_interpolate_value (const stp_curve_t *curve, double where, double *result)
| Interpolate a point along the curve.
int | stp_curve_resample (stp_curve_t *curve, size_t points)
| Resample a curve (change the number of points).
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).
int | stp_curve_write (FILE *file, const stp_curve_t *curve)
| Write a curve to a file.
char * | stp_curve_write_string (const stp_curve_t *curve)
| Write a curve to a string.
stp_curve_t * | stp_curve_create_from_stream (FILE *fp)
| Create a curve from a stream.
stp_curve_t * | stp_curve_create_from_file (const char *file)
| Create a curve from a stream.
stp_curve_t * | stp_curve_create_from_string (const char *string)
| Create a curve from a string.
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.

## Detailed Description

Curve functions.