a8a04d5e0ba0b0dee0c3b93d7233a814f0c13e3e
[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 #include <X11/Xlib.h>
31
32 #if __STDC__
33 # define P(x)x
34 #else
35 # define P(x)()
36 #endif
37
38 typedef struct _spline
39 {
40   /* input */
41   u_int         n_controls;
42   double*       control_x;
43   double*       control_y;
44
45   /* output */
46   u_int         n_points;
47   XPoint*       points;
48   u_int         allocated_points;
49 } spline;
50
51 spline* make_spline P((u_int size));
52 void compute_spline P((spline* s));
53 void compute_closed_spline P((spline* s));
54 void just_fill_spline P((spline* s));
55 void append_spline_points P((spline* s1, spline* s2));
56 void spline_bounding_box P((spline* s, XRectangle* rectangle_out));
57
58 #undef P
59 #endif /* _SPLINE_H_ */