998c049d5af5834a0a6d2cddaa0838e457acb0b7
[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 #ifdef VMS
31 # ifndef __DECC
32    typedef unsigned int u_int;
33 # else
34 #  if __DECC_VER < 50200000
35     typedef unsigned int u_int;
36 #  endif
37 # endif
38 #endif
39
40 typedef struct _spline
41 {
42   /* input */
43   u_int         n_controls;
44   double*       control_x;
45   double*       control_y;
46
47   /* output */
48   u_int         n_points;
49   XPoint*       points;
50   u_int         allocated_points;
51 } spline;
52
53 spline* make_spline (u_int size);
54 void compute_spline (spline* s);
55 void compute_closed_spline (spline* s);
56 void just_fill_spline (spline* s);
57 void append_spline_points (spline* s1, spline* s2);
58 void spline_bounding_box (spline* s, XRectangle* rectangle_out);
59
60 #endif /* _SPLINE_H_ */