http://se.aminet.net/pub/X11/ftp.x.org/contrib/vms/xscreensaver-124.zip
[xscreensaver] / hacks / 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 #ifdef VMS
39 typedef unsigned int u_int;
40 #endif
41
42 typedef struct _spline
43 {
44   /* input */
45   u_int         n_controls;
46   double*       control_x;
47   double*       control_y;
48
49   /* output */
50   u_int         n_points;
51   XPoint*       points;
52   u_int         allocated_points;
53 } spline;
54
55 spline* make_spline P((u_int size));
56 void compute_spline P((spline* s));
57 void compute_closed_spline P((spline* s));
58 void just_fill_spline P((spline* s));
59 void append_spline_points P((spline* s1, spline* s2));
60 void spline_bounding_box P((spline* s, XRectangle* rectangle_out));
61
62 #undef P
63 #endif /* _SPLINE_H_ */