summaryrefslogtreecommitdiff
path: root/inc/OpenGl_telem_inquire.hxx
blob: 5f40c6362611fa147c9c8ee0dbd7a66baf187cf9 (plain)
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
#ifndef OPENGL_TELEM_INQUIRE_H
#define OPENGL_TELEM_INQUIRE_H

typedef struct {
  Tint        number;        /* number of Tints in list */
  Tint        *integers;        /* list of integers */
} Tintlst;

typedef struct {
  Tint        x_dim;        /* dimension (number of divisions) along X */
  Tint        y_dim;        /* dimension (number of divisions) along Y */
} Tdim;

typedef union
{
  Tint       idata;        /* integer valued data */
  Tfloat     fdata;        /* float valued data */
  Tchar      *data;        /* %%TEMP - use for application data for now */
  TEL_POINT  *pts3;        /* list of 3d points */

  struct 
  {
    TEL_POINT   ref_pt;  /* reference text point */
    TEL_POINT   anno;    /* annotation pt/offset */
    Techar      *string; /* text string */
  } atext3;

  Tint            size;
  Tint            interior_style; /* interior style */
  Tint            edge_flag;      /* edge flag */
  Tintlst         name_set;       /* name sets */
  Tmatrix3        mat3;           /* 3d transformation matrix */

  struct 
  {
    Tmatrix3     mat3;         /* 3d transformation matrix */
    TComposeType compose_type; /* composition type */
  } local_xform_3;

  struct 
  {
    Tint        vrtflag;        /* per vertex data flag */
    Tint        num_bounds;     /* number of lines in the set */
    Tint        *bounds;        /* list of number of points in each bound */
    TEL_POINT   *points;        /* array of points */
    TEL_COLOUR  *colours;       /* array of vertex colour values */
  } lineset3data;

  struct 
  {
    Tint        shpflag;           /* primitive shape flag */
    Tint        faflag;            /* per fill area data flag */
    Tint        vrtflag;           /* per vertex data flag */
    TEL_POINT   *gnormal;          /* geometric normal */
    Tint        num_points;        /* number of vertices in fill area */
    tel_colour  facet_colour_val;  /* facet colour value */
    TEL_POINT   *points;           /* array of points */
    TEL_COLOUR  *colours;          /* array of vertex colour values */
    TEL_POINT   *vnormals;         /* array of vertex normals */
  } fillarea3data;

  struct 
  {
    Tint        shpflag;           /* primitive shape flag */
    Tint        faflag;            /* per fill area data flag */
    Tint        vrtflag;           /* per vertex data flag */
    Tint        edgflag;         /* edge flag */
    TEL_POINT   *gnormal;          /* geometric normal */
    Tint        *edgvis;          /* edge visibility per edge */
    Tint        num_bounds;        /* number of bounds in fill area set */
    tel_colour  facet_colour_val;  /* facet colour value */
    Tint        *bounds;           /* bounds */
    TEL_POINT   *points;           /* array of points */
    TEL_COLOUR  *colours;          /* array of vertex colour values */
    TEL_POINT   *vnormals;         /* array of vertex normals */
  } fillareaset3data;

  struct 
  {
    Tint        fctflag;            /* per facet data flag */
    Tint        vrtflag;            /* per vertex data flag */
    Tint        num_facets;         /* number of facets, (num_points-2) */
    TEL_POINT   *gnormals;          /* geometric normals */
    TEL_COLOUR  *facet_colour_vals; /* facet colour value */
    TEL_POINT   *points;            /* array of points for all bounds */
    TEL_COLOUR  *colours;           /* array of vertex colour values */
    TEL_POINT   *vnormals;      /* array of vertex normals for all bounds */
  } trianglestrip3data;

  struct 
  {
    Tint        shpflag;            /* primitive shape flag */
    Tint        fctflag;            /* per facet data flag */
    Tint        vrtflag;            /* per vertex data flag */
    Tdim        dim;                /* number of cols by rows */
    TEL_POINT   *gnormals;          /* geometric normals */
    TEL_COLOUR  *facet_colour_vals; /* facet colour value */
    TEL_POINT   *points;            /* array of points for all bounds */
    TEL_COLOUR  *colours;           /* array of vertex colour values */
    TEL_POINT   *vnormals;      /* array of vertex normals for all bounds */
  } quadmesh3data;

  struct 
  {
    Tint       shpflag;   /* primitive shape flag */
    Tint       fctflag;   /* per facet data flag */
    Tint       vrtflag;   /* per vertex data flag */
    Tint       edgflag;   /* per edge data flag */
    TEL_POINT  *gnormals; /* geometric normals */
    Tint       *edgvis;   /* array of edge visibility flags for all edges */
    Tint       num_vertices;/*number of fill areas in the set */
    TEL_COLOUR *facet_colour_vals; /* facet colour values */
    TEL_POINT  *points;            /* array of vertices */
    TEL_COLOUR *colours;           /* array of vertex colour values */
    TEL_POINT  *vnormals;     /* array of vertex normals for all vertices */
    Tint       num_bounds;    /* number of bounds */
    Tint       *bounds;       /* list of number of points in each bound */
    Tint       *indices;      /* list of vertex indices for all bounds */
  } indexedpolygons3data;

  /*  depth cue index             */            /* -- idata              -- */
  /*  surface properties          */
  /*  back surface properties     */
  TEL_SURF_PROP  surf_prop;         /* Front or back surface properties */
  /*  interior shading method     */            /* -- idata              -- */
  /*  interior lighting method    */            /* -- idata              -- */

  struct 
  {
    Tintlst        on;        /* list of activated lights */
    Tintlst        off;       /* list of deactivated lights */
  } light_source_state;

  struct {
    Tint        distinguish;   /* distinguish */
    TelCullMode cull;          /* culling mode */
  } face_processing_mode;

  /*  polyline, polymarker, text, interior, back interior, edge colour */
  TEL_COLOUR gnl_colour;
} Teldata;

typedef struct
{
  Tint    size;
  Tint    act_size;
  Tchar   *buf;
  Teldata *data;
} TEL_INQ_CONTENT, *tel_inq_content;

/* keys to be used for inquiry */
#define INQ_GET_SIZE_ID    1  /* key.data.ldata will contain size */
#define INQ_GET_CONTENT_ID 2  /* key.data.pdata is pointer to Teldata */

/* element,   size */
extern TStatus TelInqCurElemTypeSize( TelType *, Tint * );

/* size of buffer, buffer,  actual_size, data */
extern TStatus TelInqCurElemContent( Tint, Tchar *, Tint *,      Teldata * );

#endif