tube_gc.h
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:2k
源码类别:

GIS编程

开发平台:

Visual C++

  1. /*
  2.  * tube_gc.h
  3.  *
  4.  * FUNCTION:
  5.  * This file allows for easy changes to changes in the way the extrusion
  6.  * library handles state info (i.e. context).
  7.  *
  8.  * HISTORY:
  9.  * Linas Vepstas --- February 1993
  10.  * Added auto texture coord generation hacks, Linas April 1994
  11.  */
  12. typedef float gleColor[3];
  13. typedef double gleTwoVec[2];
  14. typedef struct {
  15.    /* public methods */
  16.    void (*bgn_gen_texture) (int, double);
  17.    void (*n3f_gen_texture) (float *);
  18.    void (*n3d_gen_texture) (double *);
  19.    void (*v3f_gen_texture) (float *, int, int);
  20.    void (*v3d_gen_texture) (double *, int, int);
  21.    void (*end_gen_texture) (void);
  22.    /* protected members -- "general knowledge" stuff */
  23.    int join_style;
  24.    /* arguments passed into extrusion code */ 
  25.    int ncp;     /* number of contour points */
  26.    gleTwoVec *contour;    /* 2D contour */
  27.    gleTwoVec *cont_normal;  /* 2D contour normals */
  28.    gleDouble *up;               /* up vector */
  29.    int npoints;  /* number of points in polyline */
  30.    gleVector *point_array;     /* path */
  31.    gleColor *color_array;         /* path colors */
  32.    gleAffine *xform_array;  /* contour xforms */
  33.    /* private members, used by texturing code */
  34.    int num_vert;
  35.    int segment_number;
  36.    double segment_length;
  37.    double accum_seg_len;
  38.    double prev_x;
  39.    double prev_y;
  40.    void (*save_bgn_gen_texture) (int, double);
  41.    void (*save_n3f_gen_texture) (float *);
  42.    void (*save_n3d_gen_texture) (double *);
  43.    void (*save_v3f_gen_texture) (float *, int, int);
  44.    void (*save_v3d_gen_texture) (double *, int, int);
  45.    void (*save_end_gen_texture) (void);
  46. } gleGC;
  47. extern gleGC *_gle_gc;
  48. extern gleGC * gleCreateGC (void);
  49. #define INIT_GC() {if (!_gle_gc) _gle_gc = gleCreateGC(); }
  50. #define extrusion_join_style (_gle_gc->join_style)
  51. #define __TUBE_CLOSE_CONTOUR (extrusion_join_style & TUBE_CONTOUR_CLOSED)
  52. #define __TUBE_DRAW_CAP (extrusion_join_style & TUBE_JN_CAP)
  53. #define __TUBE_DRAW_FACET_NORMALS (extrusion_join_style & TUBE_NORM_FACET)
  54. #define __TUBE_DRAW_PATH_EDGE_NORMALS (extrusion_join_style & TUBE_NORM_PATH_EDGE)
  55. #define __TUBE_STYLE (extrusion_join_style & TUBE_JN_MASK)
  56. #define __TUBE_RAW_JOIN (extrusion_join_style & TUBE_JN_RAW)
  57. #define __TUBE_CUT_JOIN (extrusion_join_style & TUBE_JN_CUT)
  58. #define __TUBE_ANGLE_JOIN (extrusion_join_style & TUBE_JN_ANGLE)
  59. #define __TUBE_ROUND_JOIN (extrusion_join_style & TUBE_JN_ROUND)
  60. /* ======================= END OF FILE ========================== */