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 DISCGRPDEF
26 #define DISCGRPDEF
27 
28 #include "bbox.h"
29 #include "dgflag.h"
30 #include "create.h"
31 #include "appearance.h"
32 #include "pick.h"
33 #include "streampool.h"
34 
35 #ifndef NULL
36 #define NULL 0
37 #endif
38 
39 #ifndef FALSE
40 #define FALSE 0
41 #endif
42 
43 #define DISCGRPMAGIC    GeomMagic('d',1)
44 
45 typedef struct DiscGrp DiscGrp ;
46 
47 extern DiscGrp *
48 DiscGrpPick( DiscGrp *, Pick *, Appearance *, Transform, TransformN *, int * );
49 extern GeomClass *DiscGrpMethods( void );
50 extern char     *DiscGrpName( void );
51 /*
52 extern DiscGrp  *DiscGrpFLoad( FILE *, char * );
53 extern DiscGrp  *DiscGrpLoad( char * );
54 */
55 extern Geom  *DiscGrpImport (Pool * );
56 extern DiscGrp  *DiscGrpSave( DiscGrp *, char * );
57 extern DiscGrp  *DiscGrpFSave( DiscGrp *, FILE *, char * );
58 extern BBox     *DiscGrpBound( DiscGrp *, Transform T, TransformN *TN);
59 extern DiscGrp  *DiscGrpDraw( DiscGrp * );
60 /*
61 extern DiscGrpElList *DiscGrpElListCreate(DiscGrpElList *, ...);
62 extern DiscGrp  *DiscGrpEvert( DiscGrp * );
63 extern DiscGrp     *DiscGrpTransform( DiscGrp *, Transform );
64 extern DiscGrp     *DiscGrpTransformTo( DiscGrp *, Transform );
65 */
66 
67 /* tokens used by the create routines, not duplicated in create.h */
68 /* we'll use the '900' region: this ought to be registered somewhere */
69 /* DGELC == DiscGrpElListCreate
70    DGC == DiscGrpCreate
71 */
72 enum {
73   DGCR_ATTRIBUTE = 900, /* int : attributes in both DGC and DGELC */
74   DGCR_ATTRIBUTELIST,   /* int * : list of attributes in DGELC */
75   DGCR_WORD,            /* char (*)[DG_WORDLENGTH] : used by
76 			 * DiscGrpElListCreate */
77   DGCR_ELEM,            /* DiscGrpEl * : used in DGELC note that
78 			 * CR_ELEM is also used here */
79   DGCR_CPOINT,          /* HPoint3 * :base  point of dirichlet domain: */
80 
81   DGCR_CAMGEOM,         /* Geom * :geometry used to represent the observer*/
82   DGCR_CAMGEOMHANDLE,   /* Handle * */
83   DGCR_HANDLE_CAMGEOM,  /* Handle *, Geom * */
84 
85   DGCR_DDGEOM,          /* Geom * :geometry for Dirichlet domain */
86   DGCR_DDGEOMHANDLE,    /* Handle * */
87   DGCR_HANDLE_DDGEOM,   /* Handle *, Geom * */
88   DGCR_GENS,            /* DiscGrpElList * : generators */
89   DGCR_BIGLIST,         /* DiscGrpElList * : general list */
90   DGCR_ENUMDEPTH,       /* int : depth to compute wordlist */
91   DGCR_ENUMDIST,        /* float : maximum distance of tiles */
92   DGCR_SCALE,           /* float : scaling factor for dirdom */
93   DGCR_FLAG,            /* the flag field of the DiscGrp */
94   DGCR_NAME,            /* the flag field of the DiscGrp */
95   DGCR_COMMENT,         /* the flag field of the DiscGrp */
96   DGCR_DRAWDIST,        /* max distance grp el moves cpoint for
97 			 * drawing purposes (generally less than
98 			 * enumdist)_ */
99   DGCR_END
100 };
101 
102 #endif /*DISCGRPDEF*/
103 
104 /*
105  * Local Variables: ***
106  * mode: c ***
107  * c-basic-offset: 2 ***
108  * End: ***
109  */
110