extrude.h 3.98 KB
Newer Older
Dat Nguyen's avatar
Dat Nguyen committed
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

/*
 * extrude.h
 *
 * FUNCTION:
 * prototypes for privately used subroutines for the tubing library
 *
 * HISTORY:
 * Linas Vepstas 1991
 */
 
#include "port.h" /* for gleDouble */

#ifndef M_PI
#define M_PI  3.14159265358979323846
#endif

/* ============================================================ */
/* 
 * Provides choice of calling subroutine, vs. invoking macro.
 * Basically, inlines the source, or not.
 * Trades performance for executable size.
 */

#define INLINE_INTERSECT
#ifdef INLINE_INTERSECT
#define INNERSECT(sect,p,n,v1,v2) { INTERSECT(sect,p,n,v1,v2); }
#else
#define INNERSECT(sect,p,n,v1,v2) intersect(sect,p,n,v1,v2)
#endif /* INLINE_INTERSECT */

/* ============================================================ */
/* The folowing defines give a kludgy way of accessing the qmesh primitive */

/*
#define bgntmesh _emu_qmesh_bgnqmesh
#define endtmesh _emu_qmesh_endqmesh
#define c3f _emu_qmesh_c3f
#define n3f _emu_qmesh_n3f
#define v3f _emu_qmesh_v3f
*/

/* ============================================================ */

extern void up_sanity_check (gleDouble up[3],      /* up vector for contour */
                      int npoints,              /* numpoints in poly-line */
                      gleDouble point_array[][3]);   /* polyline */


extern void draw_raw_style_end_cap (int ncp,     /* number of contour points */
                             gleDouble contour[][2],     /* 2D contour */
                             gleDouble zval,             /* where to draw cap */
                             int frontwards);    /* front or back cap */

extern void draw_round_style_cap_callback (int iloop,
                                  double cap[][3],
                                  float face_color[3],
                                  gleDouble cut_vector[3],
                                  gleDouble bisect_vector[3],
                                  double norms[][3],
                                  int frontwards);

extern void draw_angle_style_front_cap (int ncp,
                           gleDouble bi[3],
                           gleDouble point_array[][3]);

extern void extrusion_raw_join (int ncp,        /* number of contour points */
                         gleDouble contour[][2],    /* 2D contour */
                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
                         gleDouble up[3],           /* up vector for contour */
                         int npoints,           /* numpoints in poly-line */
                         gleDouble point_array[][3],        /* polyline */
                         float color_array[][3],        /* color of polyline */
                         gleDouble xform_array[][2][3]);  /* 2D contour xforms */


extern void extrusion_round_or_cut_join (int ncp, /* number of contour points */
                         gleDouble contour[][2],    /* 2D contour */
                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
                           gleDouble up[3],         /* up vector for contour */
                           int npoints,         /* numpoints in poly-line */
                           gleDouble point_array[][3],      /* polyline */
                           float color_array[][3],      /* color of polyline */
                           gleDouble xform_array[][2][3]);  /* 2D contour xforms */


extern void extrusion_angle_join (int ncp,      /* number of contour points */
                         gleDouble contour[][2],    /* 2D contour */
                         gleDouble cont_normal[][2],/* 2D contour normal vecs */
                           gleDouble up[3],         /* up vector for contour */
                           int npoints,         /* numpoints in poly-line */
                           gleDouble point_array[][3],      /* polyline */
                           float color_array[][3],      /* color of polyline */
                           gleDouble xform_array[][2][3]);  /* 2D contour xforms */

/* -------------------------- end of file -------------------------------- */