http://ftp.ksu.edu.tw/FTP/FreeBSD/distfiles/xscreensaver-4.23.tar.gz
[xscreensaver] / utils / spline.h
1 /*
2  * Copyright (c) 1987, 1988, 1989 Stanford University
3  *
4  * Permission to use, copy, modify, distribute, and sell this software and its
5  * documentation for any purpose is hereby granted without fee, provided
6  * that the above copyright notice appear in all copies and that both that
7  * copyright notice and this permission notice appear in supporting
8  * documentation, and that the name of Stanford not be used in advertising or
9  * publicity pertaining to distribution of the software without specific,
10  * written prior permission.  Stanford makes no representations about
11  * the suitability of this software for any purpose.  It is provided "as is"
12  * without express or implied warranty.
13  *
14  * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
16  * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
18  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
19  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
20  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21  */
22
23 /* This code came with the InterViews distribution, and was translated
24    from C++ to C by Matthieu Devin <devin@lucid.com> some time in 1992.
25  */
26
27 #ifndef _SPLINE_H_
28 #define _SPLINE_H_
29
30 typedef struct _spline
31 {
32   /* input */
33   unsigned int  n_controls;
34   double*       control_x;
35   double*       control_y;
36
37   /* output */
38   unsigned int          n_points;
39   XPoint*       points;
40   unsigned int          allocated_points;
41 } spline;
42
43 spline* make_spline (unsigned int size);
44 void compute_spline (spline* s);
45 void compute_closed_spline (spline* s);
46 void just_fill_spline (spline* s);
47 void append_spline_points (spline* s1, spline* s2);
48 void spline_bounding_box (spline* s, XRectangle* rectangle_out);
49 void free_spline(spline *s);
50
51 #endif /* _SPLINE_H_ */