This is mg.h in view mode; [Download] [Up]
/* Copyright (c) 1992 The Geometry Center; University of Minnesota 1300 South Second Street; Minneapolis, MN 55454, USA; This file is part of geomview/OOGL. geomview/OOGL is free software; you can redistribute it and/or modify it only under the terms given in the file COPYING, which you should have received along with this file. This and other related software may be obtained via anonymous ftp from geom.umn.edu; email: software@geom.umn.edu. */ /* 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" typedef struct mgcontext mgcontext; /* Opaque typedef */ typedef int (*mgshadefunc)( int npoints, HPoint3 *points, Point3 *normals, ColorA *colors, ColorA *newcolors ); typedef int (*mgmapfunc)( void *NDinfo, void *NDpoint, HPoint3 *newpoint, ColorA *newcolor ); struct mgfuncs { /* mg member functions; potentially changed per device */ short mg_devno; /* Current device number */ int (*mg_setdevice)(); int (*mg_feature)(/* int feature */); mgcontext * (*mg_ctxcreate)(/* int a1, ... */); void (*mg_ctxdelete)(/* mgcontext *ctx */); void (*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 */); void (*mg_settransform)(/* Transform T */); void (*mg_gettransform)(/* Transform T */); void (*mg_identity)(/* void */); void (*mg_transform)(/* const Transform T */); int (*mg_pushtransform)(/* void */); int (*mg_poptransform)(/* void */); int (*mg_pushappearance)(/* void */); int (*mg_popappearance)(/* void */); Appearance * (*mg_setappearance)(/* Appearance* app, int merge */); Appearance * (*mg_getappearance)(/* void */); int (*mg_setcamera)(/* Camera* cam */); void (*mg_polygon)(/* int nv, Point3 *v, int nn, Point3 *n, int nc,ColorA *c */); void (*mg_polylist)(/* int np, Poly *p, int nv, Vertex *v, int plflags */); void (*mg_mesh)(/* int wrap,int nu,int nv,HPoint3 *p, Point3 *n,ColorA *c */); 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 */); void (*mg_bezier)(/* int du, int dv, int dimn, float *ctrlpts, float *txmapst, ColorA *c */); }; 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_NDMAP 140 /* int (*mapfunc)(void *NDdata, HPointN*, HPoint3*, ColorA*) */ /* function returns 1 if color was applied, * else 0 */ #define MG_NDINFO 141 /* void *NDinfo */ /* 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 */ /* 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 ) #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 mgsetcamera( cam ) (*_mgf.mg_setcamera)( cam ) #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)() #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,c ) (*_mgf.mg_mesh)( style, nu,nv, v,n,c ) #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 ) (*_mgf.mg_quads)( nquad, v, n, c ) #define mgbezier( du,dv, dimn, ctrlpts, tx, c ) (*_mgf.mg_bezier)( du, dv, \ dimn, ctrlpts, tx, c ) #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 mgset4to3( Transform T, int seq ); /* Set 4D->3D transform */ extern int mgget4to3( Transform T ); /* Get 4D->3D; return seq */ /* * Sample software-shading function, usable as MG_SHADER. */ extern int mg_eucshade( int npoints, HPoint3 *points, Point3 *normals, ColorA *colors, ColorA *newcolors ); /* * 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( 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 */ /* what else? raster buffer? */ #endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.