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 DGFLAGDEFS
26 #define DGFLAGDEFS
27 
28 #define DG_HYPERBOLIC	1
29 #define DG_EUCLIDEAN	2
30 #define DG_SPHERICAL	4
31 #define DG_FINITE	8
32 #define DG_TRANSPOSED	16
33 
34 #define DG_CONFORMALBALL	32
35 #define DG_UPPERHALFSPACE	64
36 #define DG_PROJECTIVEMODEL	128
37 #define DG_NUM_ATTR	8	/* the above are the attributes */
38 
39 #define DG_METRIC_BITS		(DG_HYPERBOLIC | DG_EUCLIDEAN | DG_SPHERICAL)
40 #define DG_MODEL_BITS		(DG_CONFORMALBALL | DG_UPPERHALFSPACE | DG_PROJECTIVE)
41 
42 /* for the matrix group entries */
43 #define DG_GENERAL	0x000	/* general invertible group: default */
44 #define DG_SPECIAL	0x100	/* determinant +/- 1 */
45 #define DG_ORTHOGONAL	0x200	/* M.Transpose(M) = d.I */
46 #define DG_PROJECTIVE	0x400	/* M.Transpose(M) = d.I */
47 #define DG_REAL		0x000	/* default is real */
48 #define DG_COMPLEX	0x800	/* default is real */
49 
50 #define DG_TMP		0x10000
51 
52 /* flag */
53 #define DG_CENTERCAM	1
54 #define DG_NEWDIRDOM	2	/* recompute dirdom */
55 #define DG_DRAWDIRDOM	4
56 #define DG_ZCULL	8	/* don't draw those behind the camera */
57 #define DG_DRAWCAM	0x10
58 #define DG_DDBEAM	0x20	/* compute beamed dirichlet domain */
59 #define DG_DDSLICE	0x40	/* slice off cusps in dirichlet domain */
60 #define DG_DEBUG	0x100
61 #define DG_SAVEBIGLIST	0x200	/* does DiscGrpSave write out the group elements? */
62 #define DG_SAVEDIRDOM	0x400	/* does DiscGrpSave write out the dirichlet domain? */
63 #define DG_DRAWGEOM	0x800	/* draw other geometry? */
64 #define DG_NUM_DSPYATTR	5	/* zcull, cenercam, drawcam, drawdirdom, and drawgeom are externally settable */
65 
66 /* constraint return values (only DG_CONSTRAINT_VALID is required) */
67 #define DG_CONSTRAINT_PRINT	1
68 #define DG_CONSTRAINT_TOOFAR	2
69 #define DG_CONSTRAINT_STORE	4
70 #define DG_CONSTRAINT_LONG	8
71 #define DG_CONSTRAINT_NEW	16
72 #define DG_CONSTRAINT_MAXLEN	32
73 
74 /* bits in DiscGrpEl.attributes */
75 #define DGEL_IS_IDENTITY	0x1	/* need to mark the identity matrix */
76 #endif /*DGFLAGDEFS*/
77