/usr/include/geomview/mg.h is in libgeomview-dev 1.9.5-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 | /* Copyright (C) 1992-1998 The Geometry Center
* Copyright (C) 1998-2000 Stuart Levy, Tamara Munzner, Mark Phillips
*
* This file is part of Geomview.
*
* Geomview is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* Geomview is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Geomview; see the file COPYING. If not, write
* to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139,
* USA, or visit http://www.gnu.org.
*/
/* Authors: Charlie Gunn, Stuart Levy, Tamara Munzner, Mark Phillips */
#ifndef MINNEGRAPHICSDEFS
#define MINNEGRAPHICSDEFS
/*
* Public interface to mg (minnegraphics) package.
*/
#include "color.h"
#include "point.h"
#include "transform.h"
#include "window.h"
#include "camera.h"
#include "appearance.h"
#include "bsptree.h"
#ifndef POLYLISTPDEFS
struct Poly;
struct Vertex;
#endif
#ifndef _GV_BSPTREE_P_H_
struct BSPTree;
#endif
typedef struct mgcontext mgcontext; /* Opaque typedef */
typedef int (*mgshadefunc)( int npoints, HPoint3 *points, Point3 *normals,
ColorA *colors, ColorA *newcolors );
typedef void (*mgwinchfunc)( /*mgcontext *mgc, void *data, int win_why, ...*/ );
typedef struct mgNDctx mgNDctx;
typedef int (*mgNDmapfunc)(mgNDctx *NDctx,
HPointN *NDpoint, HPoint3 *newpoint,
ColorA *newcolor);
struct mgNDctx
{
mgNDmapfunc mapHPtN;
void *(*saveCTX)(mgNDctx *NDctx);
void (*pushTN)(mgNDctx *NDctx, TransformN *leftTN);
void (*pushT)(mgNDctx *NDctx, Transform leftT);
void (*restoreCTX)(mgNDctx *NDctx, void *savedCTX);
BSPTree *bsptree;
};
struct mgfuncs { /* mg member functions; potentially changed per device */
short mg_devno; /* Current device number */
int (*mg_setdevice)(void);
int (*mg_feature)(int feature);
mgcontext * (*mg_ctxcreate)(/* int a1, ... */);
void (*mg_ctxdelete)(mgcontext *ctx);
int (*mg_ctxset)(/* a1, ... */);
int (*mg_ctxget)(int attr, void* valueptr);
int (*mg_ctxselect)(mgcontext *ctx);
void (*mg_sync)(void);
void (*mg_worldbegin)(void);
void (*mg_worldend)(void);
void (*mg_reshapeviewport)(void);
/* geometry transform support */
void (*mg_settransform)(Transform T);
void (*mg_gettransform)(Transform T);
void (*mg_identity)(void);
void (*mg_transform)(Transform T);
int (*mg_pushtransform)(void);
int (*mg_poptransform)(void);
/* texture transform support */
void (*mg_settxtransform)(Transform T);
void (*mg_gettxtransform)(Transform T);
void (*mg_txidentity)(void);
void (*mg_txtransform)(Transform T);
int (*mg_pushtxtransform)(void);
int (*mg_poptxtransform)(void);
/* appearances */
int (*mg_pushappearance)(void);
int (*mg_popappearance)(void);
const Appearance *(*mg_setappearance)(const Appearance *app, int merge);
const Appearance *(*mg_getappearance)(void);
int (*mg_setcamera)(Camera* cam);
void (*mg_polygon)(int nv, HPoint3 *v, int nn,
Point3 *n, int nc,ColorA *c);
void (*mg_polylist)(int np, struct Poly *p,
int nv, struct Vertex *v, int plflags);
void (*mg_mesh)(int wrap,int nu,int nv,HPoint3 *p,
Point3 *n, Point3 *nq, ColorA *c, TxST *ST,
int mflags);
void (*mg_line)(HPoint3 *p1, HPoint3 *p2);
void (*mg_polyline)(int nv, HPoint3 *v, int nc, ColorA *c,
int wrapped);
void (*mg_quads)(int nquads, HPoint3 *v, Point3 *n, ColorA *c,
int qflags);
void (*mg_bezier)(int du, int dv, int dimn, float *ctrlpts,
TxST *txmapst, ColorA *c);
void (*mg_bsptree)(struct BSPTree *bsptree);
const void *(*mg_tagappearance)(void);
void (*mg_untagappearance)(const void *tag);
void (*mg_taggedappearance)(const void *tag);
};
extern struct mgfuncs _mgf;
/* Common mg attributes -- for mgctxcreate(), mgctxset(), mgctxget() */
#define MG_END 0
#define MG_WINDOW 128 /* WnWindow * */
#define MG_PARENT 129 /* mgcontext *context (of parent window)*/
#define MG_SHOW 130 /* int visible (make window visible) */
#define MG_SETOPTIONS 131 /* int mask (of options to enable) see */
#define MG_UNSETOPTIONS 132 /* int mask (options to disable) mg.h */
#define MG_BACKGROUND 133 /* ColorA * */
#define MG_CAMERA 134 /* Camera * */
#define MG_APPEAR 135 /* Appearance *default_appearance */
#define MG_ApSet 136 /* Appearance create list */
#define MG_WnSet 137 /* Window create list */
#define MG_CamSet 138 /* Camera create list */
#define MG_ZNUDGE 139 /* float; fraction of Z-range by which lines &
* edges are nudged nearer than polygons.
*/
#define MG_NDCTX 140 /* mgNDctx * */
/* Note 140, 141, 142 used to be MG_EUCLIDEAN, MG_HYPERBOLIC, and
MG_SPHERICAL, which are now obsolete. These numbers may be reused now. */
#define MG_SHADER 143 /* mgshadefunc *shader_function */
#define MG_SHADERDATA 144 /* void *shaderdata (interpreted by shader) */
#define MG_ABLOCK 145 /* void *ablock */
#define MG_SPACE 146 /* TM_EUCLIDEAN, TM_HYPERBOLIC,
or TM_SPHERICAL */
/* More control options: needed initially for X11, but might exist
* some day for others.
*/
#define MG_DITHER 150 /* Dithering control: 1(on)/0(off) */
#define MG_DEPTHSORT 151 /* Depth sorting: one of: */
enum sortmethod {MG_NONE, MG_DEPTH, MG_ZBUFFER};
#define MG_BITDEPTH 152 /* frame buffer depth (1,8,24,...?) */
#define MG_WINCHANGE 153 /* void *winchange(ctx, void *data)
* function, called when someone asks this
* mg window to change (size, border, etc.)
*/
#define MG_WINCHANGEDATA 154 /* void *data param for winchange() callback */
/* win_why values for (*winchange) callback */
#define MGW_WINCHANGE 1 /* Window data (pos'n, size, title, ...) change */
#define MGW_WINDELETE 2 /* Window being deleted */
#define MGW_DOUBLEBUF 3 /* Double-buffering state changed; called as */
/* winchange(mgc, info, MGW_DOUBLEBUF, is_double) */
/* Other values, 16 and up, may be per-device */
/* NOTE: the MG_SPACE attribute specifies the space in which the
objects being drawn live. It serves the same purpose as the
NeXT-specific attribute MG_GEOMTYPE, which should eventually
be phased out. mbp Fri Dec 11 14:51:30 1992 */
/* Possible MG Features */
#define MGF_BEZIER 100 /* Driver supports mgbezier */
/* Bitwise ORable options for mg_ctxset MG_[UN]SETOPTIONS */
#define MGO_DOUBLEBUFFER 0x1 /* Default single buffered */
#define MGO_HIDDEN 0x2 /* Default not Z-buffered */
#define MGO_BACKFACECULL 0x4 /* Default back-faces shown */
#define MGO_INHIBITBACKGROUND 0x8 /* Default background drawn */
#define MGO_INHIBITCLEAR 0x10 /* Default clear at worldbegin*/
#define MGO_INHIBITSWAP 0x20 /* Default swapbufs at worldend */
#define MGO_NORED 0x40 /* Inhibit drawing into red */
#define MGO_NOGREEN 0x80 /* ... green ... */
#define MGO_NOBLUE 0x100 /* ... or blue planes */
#define MGO_INHIBITCAM 0x200 /* Don't load matrix in worldbegin() */
/* mgmesh 'style' values */
#define MM_NOWRAP 0
#define MM_UWRAP 1
#define MM_VWRAP 2
/* mergeflag values for mgsetappearance() */
#define MG_SET 0
#define MG_MERGE 1
#define mgctxselect( mgc ) (*_mgf.mg_ctxselect)( mgc )
#define mgctxcreate (*_mgf.mg_ctxcreate)
#define mgctxdelete( mgc ) (*_mgf.mg_ctxdelete)( mgc )
#define mgctxset (*_mgf.mg_ctxset)
#define mgctxget( attr, valuep ) (*_mgf.mg_ctxget)( attr, valuep )
/* appearnce stack */
#define mgpushappearance() (*_mgf.mg_pushappearance)()
#define mgpopappearance() (*_mgf.mg_popappearance)()
#define mgsetappearance( ap, merge ) (*_mgf.mg_setappearance)( ap, merge )
#define mggetappearance() (*_mgf.mg_getappearance)()
#define mgtagappearance() (*_mgf.mg_tagappearance)()
#define mguntagappearance(tag) (*_mgf.mg_untagappearance)(tag)
#define mgtaggedappearance(tag) (*_mgf.mg_taggedappearance)(tag)
#define mgsetcamera( cam ) (*_mgf.mg_setcamera)( cam )
/* transform stack */
#define mgsettransform( T ) (*_mgf.mg_settransform)( T )
#define mggettransform( T ) (*_mgf.mg_gettransform)( T )
#define mgidentity() (*_mgf.mg_identity)()
#define mgtransform( T ) (*_mgf.mg_transform)( T )
#define mgpushtransform() (*_mgf.mg_pushtransform)()
#define mgpoptransform() (*_mgf.mg_poptransform)()
/* texture transform stack */
#define mgsettxtransform( T ) (*_mgf.mg_settxtransform)( T )
#define mggettxtransform( T ) (*_mgf.mg_gettxtransform)( T )
#define mgtxidentity() (*_mgf.mg_txidentity)()
#define mgtxtransform( T ) (*_mgf.mg_txtransform)( T )
#define mgpushtxtransform() (*_mgf.mg_pushtxtransform)()
#define mgpoptxtransform() (*_mgf.mg_poptxtransform)()
#define mgreshapeviewport() (*_mgf.mg_reshapeviewport)()
#define mgworldbegin() (*_mgf.mg_worldbegin)()
#define mgsync( ) (*_mgf.mg_sync)()
#define mgworldend() (*_mgf.mg_worldend)()
#define mgpolygon(nv,v, nn, n, nc, c) \
(*_mgf.mg_polygon)( nv,v, nn,n, nc,c )
#define mgpolylist(np, p, nv, v, flags) \
(*_mgf.mg_polylist)(np, p, nv, v, flags)
#define mgmesh(style, nu, nv, v, n, nq, c, mflags) \
(*_mgf.mg_mesh)(style, nu, nv, v, n, nq, c, NULL, mflags)
#define mgmeshst(style, nu, nv, v, n, nq, c ,st, mflags) \
(*_mgf.mg_mesh)(style, nu, nv, v, n, nq, c, st, mflags)
#define mgline(p1, p2) \
(*_mgf.mg_line)( p1, p2 )
#define mgpolyline(nv, v, nc,c, wrap) \
(*_mgf.mg_polyline)(nv, v, nc, c, wrap )
#define mgquads(nquad, v, n, c, qflags) \
(*_mgf.mg_quads)(nquad, v, n, c, qflags)
#define mgbezier(du, dv, dimn, ctrlpts, tx, c ) \
(*_mgf.mg_bezier)(du, dv, dimn, ctrlpts, tx, c)
#define mgbsptree(bsptree) \
(*_mgf.mg_bsptree)(bsptree)
#define mgfeature( feature ) (*_mgf.mg_feature)( feature )
extern mgcontext *mgcurrentcontext(); /* Get ptr to current context */
extern int mgbegin( void ); /* Init, select default dev */
extern int mgend( void ); /* Shut down */
extern int mgclonefrom( mgcontext *other ); /* Init cur mgctx from other */
/*
* Sample software-shading function, usable as MG_SHADER.
*/
extern int mg_eucshade( int npoints, HPoint3 *points, Point3 *normals,
ColorA *colors, ColorA *newcolors );
/*
* Polling routine, intended to be called roughly once per
* render cycle, which detects and purges textures which don't
* seem to be in use.
*/
extern int mg_textureclock(void);
#define CURRENTMGTYPE() (_mgf.mg_devno)
/*
* Device select routines -- set default for future mgctxcreate()'s
*/
extern int mgdevice_GL( void );
extern int mgdevice_X11( void );
extern int mgdevice_XGL( void );
extern int mgdevice_RIB( void );
extern int mgdevice_RI( void );
extern int mgdevice_PS( void );
extern int mgdevice_VT100( void );
extern int mgdevice_XT( void );
extern int mgdevice_MAC( void );
extern int mgdevice_TEK( void );
extern int mgdevice_TELETYPE( void );
extern int mgdevice_PUNCHCARD( void );
extern int mgdevice_SIMSTIM( void );
extern int mgdevice_NULL( void );
extern int mgdevice_BUF( void );
extern int mgdevice_OPENGL( void );
extern int mgdevice_PICK( void );
extern int mgdevice_PRIM( void );
extern int mgdevice( int deviceno ); /* Alternative to the above */
#define MGD_NODEV -1 /* error return: can't select that device */
#define MGD_NULL 0 /* no device, just return current one */
#define MGD_GL 1 /* SGI GL */
#define MGD_XGL 2 /* Sun XGL */
#define MGD_X11 3 /* Generic X11 */
#define MGD_RIB 4 /* Renderman RIB*/
#define MGD_PS 5 /* Postscript */
#define MGD_RI 6 /* Quick Renderman */
#define MGD_BUF 7 /* Raster buffer */
#define MGD_OPENGL 8 /* Open GL */
#define MGD_PICK 9 /* software pick */
#define MGD_PRIM 10 /* geometric data */
#endif
/*
* Local Variables: ***
* c-basic-offset: 2 ***
* End: ***
*/
|