|
rpm-build |
8267b0 |
#ifndef _SPIRO_H
|
|
rpm-build |
8267b0 |
#define _SPIRO_H
|
|
rpm-build |
8267b0 |
|
|
rpm-build |
8267b0 |
typedef struct {
|
|
rpm-build |
8267b0 |
/* User passes an array of SpiroCP in this format for Spiro to solve */
|
|
rpm-build |
8267b0 |
double x; /* Spiro CodePoint Xloc */
|
|
rpm-build |
8267b0 |
double y; /* Spiro CodePoint Yloc */
|
|
rpm-build |
8267b0 |
char ty; /* Spiro CodePoint Type */
|
|
rpm-build |
8267b0 |
} spiro_cp;
|
|
rpm-build |
8267b0 |
|
|
rpm-build |
8267b0 |
struct spiro_seg_s {
|
|
rpm-build |
8267b0 |
/* run_spiro() uses array of information given in the structure above and */
|
|
rpm-build |
8267b0 |
/* creates an array in this structure format to use by spiro_to_bpath for */
|
|
rpm-build |
8267b0 |
/* building bezier curves */
|
|
rpm-build |
8267b0 |
double x; /* SpiroCP segment_chord startX */
|
|
rpm-build |
8267b0 |
double y; /* SpiroCP segment_chord startY */
|
|
rpm-build |
8267b0 |
char ty; /* Spiro CodePoint Type */
|
|
rpm-build |
8267b0 |
double bend_th; /* bend theta between this vector and next vector */
|
|
rpm-build |
8267b0 |
double ks[4];
|
|
rpm-build |
8267b0 |
double seg_ch; /* segment_chord distance from xy to next SpiroCP */
|
|
rpm-build |
8267b0 |
double seg_th; /* segment_theta angle for this SpiroCP */
|
|
rpm-build |
8267b0 |
double l;
|
|
rpm-build |
8267b0 |
};
|
|
rpm-build |
8267b0 |
|
|
rpm-build |
8267b0 |
typedef struct spiro_seg_s spiro_seg;
|
|
rpm-build |
8267b0 |
|
|
rpm-build |
8267b0 |
spiro_seg *
|
|
rpm-build |
8267b0 |
run_spiro(const spiro_cp *src, int n);
|
|
rpm-build |
8267b0 |
|
|
rpm-build |
8267b0 |
void
|
|
rpm-build |
8267b0 |
free_spiro(spiro_seg *s);
|
|
rpm-build |
8267b0 |
|
|
rpm-build |
8267b0 |
void
|
|
rpm-build |
8267b0 |
spiro_to_bpath(const spiro_seg *s, int n, bezctx *bc);
|
|
rpm-build |
8267b0 |
|
|
rpm-build |
8267b0 |
double get_knot_th(const spiro_seg *s, int i);
|
|
rpm-build |
8267b0 |
#endif
|