1 /* Copyright (C) 1992-1998 The Geometry Center
2  * Copyright (C) 1998-2000 Stuart Levy, Tamara Munzner, Mark Phillips
3  *
4  * This file is part of Geomview.
5  *
6  * Geomview is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published
8  * by the Free Software Foundation; either version 2, or (at your option)
9  * any later version.
10  *
11  * Geomview is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with Geomview; see the file COPYING.  If not, write
18  * to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
19  * USA, or visit http://www.gnu.org.
20  */
21 
22 
23 /* Authors: Charlie Gunn, Stuart Levy, Tamara Munzner, Mark Phillips */
24 
25 #ifndef BEZIERDEFS
26 #define BEZIERDEFS
27 
28 #include "mesh.h"
29 #include "list.h"
30 #include "bsptree.h"
31 
32 #define BEZIERMAGIC	GeomMagic ('b', 1)
33 
34 #define BEZ_ST 		VERT_ST
35 #define	BEZ_C		VERT_C
36 #define BEZ_4D		VERT_4D
37 #define BEZ_BINARY 	GEOMFLAG(0x01)
38 #define BEZ_REMESH 	GEOMFLAG(0x02) /* need to recompute mesh */
39 
40 #define MAX_BEZ_DEGREE	12
41 #define MAX_BEZ_DIMN	4
42 #define BEZ_DEFAULT_MESH_SIZE	10
43 
44 typedef struct Bezier Bezier;
45 
46 GeomClass	*BezierMethods(), *BezierListMethods();
47 Mesh 		*BezierReDice( Bezier * );
48 Bezier		*BezierDice( Bezier *, int nu, int nv );
49 char           	*BezierListName();
50 List 		*BezierListLoad();
51 List		*BezierListFLoad();
52 List 		*BezierListSave();
53 List		*BezierListFSave();
54 char           	*BezierName();
55 BBox           	*BezierBound();
56 Geom 		*BezierBoundSphere( Bezier *,
57 				    Transform T, TransformN *TN, int *axes,
58 				    int );
59 Bezier      	*BezierEvert();
60 Bezier      	*BezierDraw( Bezier *bezier );
61 Bezier      	*BezierBSPTree(Bezier *bezier, BSPTree *tree, int action);
62 Geom      	*BezierPick( Bezier *, Pick *, Appearance *, Transform, TransformN *, int *axes );
63 Bezier      	*BezierTransform( Bezier *, Transform, TransformN * );
64 
65 int		 BezierExport();
66 int		 BezierUnexport();
67 Bezier		*BezierImport();
68 
69 #endif /* ! BEZIERDEFS */
70