1 /* BEGINREMOVEFROMADDON */
2 /* NOTE: All code contained between comments that look like
3  *             BEGINREMOVEFROMADDON
4  *             ENDREMOVEFROMADDON
5  * are pulled out to create the GLOBAL.h file used in addons.
6  */
7 /* ENDREMOVEFROMADDON */
8 
9 /*
10 ******************************************************************
11 ******************************************************************
12 *******                                                   ********
13 ******  (C) 1988-2010 Tecplot, Inc.                        *******
14 *******                                                   ********
15 ******************************************************************
16 ******************************************************************
17 */
18 
19 #ifndef _GLOBAL_H
20 #define _GLOBAL_H
21 
22 #if defined EXTERN
23 #undef EXTERN
24 #endif
25 #if defined Q_MAINMODULE && defined TECPLOTKERNEL
26 /* CORE SOURCE CODE REMOVED */
27 #else
28 #define EXTERN extern
29 #endif
30 
31 #define EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
32 /* BEGINREMOVEFROMADDON */
33 /*
34  * The reason for wrapping this test with "begin and end remove from addon" key
35  * words is so that the ADK users doesn't have to see this mess.
36  */
37 #if !defined COREAPI && \
38     !defined TECUTILMMODULE && \
39     !defined TECUTILOMODULE && \
40     !defined TECUTILQMODULE && \
41     !defined TECUTILSMODULE
42 /* we don't want Tecplot internals using deprecated interfaces */
43 #  undef EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
44 #endif
45 /* ENDREMOVEFROMADDON */
46 
47 
48 /****************************************************************
49  *                                                              *
50  *                          MACROS                              *
51  *                                                              *
52  ****************************************************************/
53 #if defined TRUE
54 #undef TRUE
55 #endif
56 #if defined FALSE
57 #undef FALSE
58 #endif
59 #if defined MIN
60 #undef MIN
61 #endif
62 #if defined MAX
63 #undef MAX
64 #endif
65 #if defined ROUND
66 #undef ROUND
67 #endif
68 #if defined ROUND2
69 #undef ROUND2
70 #endif
71 #if defined TRUNC
72 #undef TRUNC
73 #endif
74 
75 #define TRUE                  ((Boolean_t)1)
76 #define FALSE                 ((Boolean_t)0)
77 
78 /****************************************************************
79  *                                                              *
80  *                           MACROS                             *
81  *                                                              *
82  ****************************************************************/
83 #define ABS(X)                ((X) >= 0 ? (X) : -(X) )
84 #define MAX(X,Y)              ((X) > (Y) ? (X) : (Y) )
85 #define MIN(X,Y)              ((X) < (Y) ? (X) : (Y) )
86 #define BESTSHOWCOLOR(X)      ((X) == White_C ? Black_C : White_C)
87 #define ROUND_TO_BYTE(X)      ((BYTE)((X)+0.499))
88 #define ROUNDS(X)             ((short)((X)+0.499))
89 #define ROUNDL(X)             ((LgIndex_t)((X)+0.499))
90 #define ROUND2(X)             ((X) >= 0 ? ((int)((X)+0.499)) : ((int)((X)-0.499)))
91 #define TRUNC(X)              ((short) (X))
92 #define RAD_TO_DEG(rad)       (180.*(rad)/PI)
93 #define DEG_TO_RAD(deg)       (PI*(deg)/180.)
94 
95 # define CAPITAL(C) ( ('a'<=(C)&&(C)<='z') ? ((C)+('A'-'a')) : (C) ) /* okay for UNICODE */
96 
97 #include "TASSERT.h"
98 
99 #if defined TECPLOTKERNEL && defined MSWIN
100 /* CORE SOURCE CODE REMOVED */
101 #else
102 #define ISEMPTYSTRING(S)      ( ((const char*)(S))[0] == '\0' )
103 #endif
104 
105 #define ISWHITESPACE(C)       ((C == ' ') || (C == '\t') || (C == '\n'))
106 #define ISSEPARATOR(C)        ((C == ' ') || (C == '\t') || (C == ','))
107 /* clamp the input to the specified range */
108 #define CLAMP(value,low,high) ((value)<(low) ? (low) : (value) > (high) ? (high) : (value))
109 /* integer division rounds any fraction up (for example n=16,d=3 results in 6) */
110 #define INTEGER_DIVIDE_AND_ROUND_UP(n, d) (((int)(n)+(int)(d)-1)/(int)(d))
111 
112 /* BEGINREMOVEFROMADDON */
113 /**
114  * Calcualtes the cell's primary corner or cell centered index from the I, J,
115  * and K indices.
116  *
117  * Consider this IJ zone dimensioned 4 by 3:
118  * @verbatim
119     +-------+-------+-------+-------+
120     |       |       |       |       |
121     |  <8>  |  <9>  |  <10> |  <11> |  <--- ghost cells
122     |       |       |       |       |
123     |8      |9      |10     |11     |
124     +-------+-------+-------+-------+
125     |       |       |       |       |
126     |  <4>  |  <5>  |  <6>  |  <7>  |
127     |       |       |       |       |
128     |4      |5      |6      |7      |
129     +-------+-------+-------+-------+
130     |       |       |       |       |
131     |  <0>  |  <1>  |  <2>  |  <3>  |
132     |       |       |       |       |
133     |0      |1      |2      |3      |
134     +-------+-------+-------+-------+
135                                  .
136                                 /|\
137                                  |
138                                  |
139                             ghost cells
140 @endverbatim
141  */
142 #define IJKINDEX(CZData,I,J,K) ((I) + \
143                                 ((J)*(CZData)->NumIPts) + \
144                                 ((K)*(CZData)->NumIJPts))
145 
146 /**
147  * Calculates the I indice from the cell's primary corner or cell centered
148  * index. See IJKINDEX() for a picture.
149  */
150 #define IINDEX(CZData,N) ((N) % (CZData)->NumIPts)
151 
152 /**
153  * Calculates the J indice from the cell's primary corner or cell centered
154  * index. See IJKINDEX() for a picture.
155  */
156 #define JINDEX(CZData,N) (((N) % (CZData)->NumIJPts)/(CZData)->NumIPts)
157 
158 /**
159  * Calculates the K indice from the cell's primary corner or cell centered
160  * index. See IJKINDEX() for a picture.
161  */
162 #define KINDEX(CZData,N) ((N)/(CZData)->NumIJPts)
163 /* ENDREMOVEFROMADDON */
164 
165 /* */
166 #define SWITCH(Type,A,B)      do {Type T = (A); (A) = (B); (B) = T;} while (FALSE)
167 #define SWITCH_DOUBLES(A,B)   SWITCH(double, (A), (B))
168 #define FPRINTFOK(x)          (Boolean_t)((x) > 0)
169 #define GRAPHICSARE3D(F)      ((F->PlotType == PlotType_Cartesian3D))
170 
171 /* convenience macros for implication, P -> Q, and equivalence, P <-> Q. */
172 #define IMPLICATION(P,Q) (!(P) || (Q))
173 #define EQUIVALENCE(P,Q) ((P) == (Q))
174 
175 /* suppress compiler warnings about unused parameters */
176 #if defined UNUSED
177 #undef UNUSED
178 #endif
179 #define UNUSED(param) (void)param
180 
181 /**
182  * Converts a double into a float value
183  *
184  * param val
185  *     double value to be converted
186  */
187 #define CONVERT_DOUBLE_TO_FLOAT(val) \
188   ( (val) >= SMALLFLOAT \
189     ? ( (val) < LARGEFLOAT \
190         ? (float)(val) \
191         : (float)LARGEFLOAT \
192       ) \
193     : ( (val) <= -SMALLFLOAT  \
194         ? ( (val) > -LARGEFLOAT \
195             ? (float)(val) \
196             : (float)-LARGEFLOAT \
197           ) \
198         : (float)0.0 \
199       ) \
200   )
201 
202 
203 /**
204  * Clamps a double at the limits of Tecplot's precision
205  *
206  * param val
207  *     double value to be clamped
208  */
209 #define CLAMP_DOUBLE(val) \
210   ( (val) >= SMALLDOUBLE \
211     ? ( (val) < LARGEDOUBLE \
212         ? (double)(val) \
213         : (double)LARGEDOUBLE \
214       ) \
215     : ( (val) <= -SMALLDOUBLE  \
216         ? ( (val) > -LARGEDOUBLE \
217             ? (double)(val) \
218             : (double)-LARGEDOUBLE \
219           ) \
220         : (double)0.0 \
221       ) \
222   )
223 
224 
225 /**
226  * Converts a double into a 4-byte (signed) integer value
227  *
228  * param val
229  *     double value to be converted
230  */
231 #define CONVERT_DOUBLE_TO_INT32(val) \
232   ( (val) >= 1.0 \
233     ? ( (val) < MAXINT32 \
234         ? (Int32_t)(val) \
235         : (Int32_t)MAXINT32 \
236       ) \
237     : ( (val) <= -1.0  \
238         ? ( (val) > (Int32_t)-MAXINT32 \
239             ? (Int32_t)(val) \
240             : (Int32_t)-MAXINT32 \
241           ) \
242         : (Int32_t)0.0 \
243       ) \
244   )
245 
246 
247 /**
248  * Converts a double into a 2-byte (signed) integer value
249  *
250  * param val
251  *     double value to be converted
252  */
253 #define CONVERT_DOUBLE_TO_INT16(val) \
254   ( (val) >= 1.0 \
255     ? ( (val) < MAXINT16 \
256         ? (Int16_t)(val) \
257         : (Int16_t)MAXINT16 \
258       ) \
259     : ( (val) <= -1.0  \
260         ? ( (val) > (Int16_t)-MAXINT16 \
261             ? (Int16_t)(val) \
262             : (Int16_t)-MAXINT16 \
263           ) \
264         : (Int16_t)0.0 \
265       ) \
266   )
267 
268 /**
269  * Copies two bytes from SrcBuffer to DstBuffer without causing a page
270  * fault due to misaligned words.
271  *
272  * param DstBuffer
273  *     Pointer the buffer to send the two bytes to
274  * param SrcBuffer
275  *     Pointer the buffer to get the two bytes from
276  */
277 #define COPY_2_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \
278         do { \
279           /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \
280           /* most likely single byte pointers into unaligned blocks of data */ \
281           ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[0]; \
282           ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[1]; \
283         } while (FALSE)
284 
285 /**
286  * Copies two bytes from SrcBuffer to DstBuffer swapping the bytes
287  * as it copies.  Will not cause a page fault due to misaligned words.
288  *
289  * param DstBuffer
290  *     Pointer the buffer to send the two bytes to
291  * param SrcBuffer
292  *     Pointer the buffer to get the two bytes from
293  */
294 #define COPY_AND_REVERSE_2_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \
295         do { \
296           /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \
297           /* most likely single byte pointers into unaligned blocks of data */ \
298           ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[1]; \
299           ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[0]; \
300         } while (FALSE)
301 
302 /**
303  * Copies four bytes from SrcBuffer to DstBuffer without causing a page
304  * fault due to misaligned words.
305  *
306  * param DstBuffer
307  *     Pointer the buffer to send the four bytes to
308  * param SrcBuffer
309  *     Pointer the buffer to get the four bytes from
310  */
311 #define COPY_4_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \
312         do { \
313           /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \
314           /* most likely single byte pointers into unaligned blocks of data */ \
315           ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[0]; \
316           ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[1]; \
317           ((Byte_t *)(DstBuffer))[2] = ((Byte_t *)(SrcBuffer))[2]; \
318           ((Byte_t *)(DstBuffer))[3] = ((Byte_t *)(SrcBuffer))[3]; \
319         } while (FALSE)
320 
321 /**
322  * Copies four bytes from SrcBuffer to DstBuffer swapping the bytes
323  * as it copies.  Will not cause a page fault due to misaligned words.
324  *
325  * param DstBuffer
326  *     Pointer the buffer to send the four bytes to
327  * param SrcBuffer
328  *     Pointer the buffer to get the four bytes from
329  */
330 #define COPY_AND_REVERSE_4_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \
331         do { \
332           /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \
333           /* most likely single byte pointers into unaligned blocks of data */ \
334           ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[3]; \
335           ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[2]; \
336           ((Byte_t *)(DstBuffer))[2] = ((Byte_t *)(SrcBuffer))[1]; \
337           ((Byte_t *)(DstBuffer))[3] = ((Byte_t *)(SrcBuffer))[0]; \
338         } while (FALSE)
339 
340 /**
341  * Copies four bytes from SrcBuffer to DstBuffer without causing a page
342  * fault due to misaligned words.
343  *
344  * param DstBuffer
345  *     Pointer the buffer to send the four bytes to
346  * param SrcBuffer
347  *     Pointer the buffer to get the four bytes from
348  */
349 #define COPY_8_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \
350         do { \
351           /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \
352           /* most likely single byte pointers into unaligned blocks of data */ \
353           ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[0]; \
354           ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[1]; \
355           ((Byte_t *)(DstBuffer))[2] = ((Byte_t *)(SrcBuffer))[2]; \
356           ((Byte_t *)(DstBuffer))[3] = ((Byte_t *)(SrcBuffer))[3]; \
357           ((Byte_t *)(DstBuffer))[4] = ((Byte_t *)(SrcBuffer))[4]; \
358           ((Byte_t *)(DstBuffer))[5] = ((Byte_t *)(SrcBuffer))[5]; \
359           ((Byte_t *)(DstBuffer))[6] = ((Byte_t *)(SrcBuffer))[6]; \
360           ((Byte_t *)(DstBuffer))[7] = ((Byte_t *)(SrcBuffer))[7]; \
361         } while (FALSE)
362 
363 /**
364  * Copies eight bytes from SrcBuffer to DstBuffer swapping the bytes
365  * as it copies.  Will not cause a page fault due to misaligned words.
366  *
367  * param DstBuffer
368  *     Pointer the buffer to send the four bytes to
369  * param SrcBuffer
370  *     Pointer the buffer to get the four bytes from
371  */
372 #define COPY_AND_REVERSE_8_UNALIGNED_BYTES(DstBuffer, SrcBuffer) \
373         do { \
374           /* cannot check sizeof(SrcBuffer) or sizeof(DstBuffer) because they are */ \
375           /* most likely single byte pointers into unaligned blocks of data */ \
376           ((Byte_t *)(DstBuffer))[0] = ((Byte_t *)(SrcBuffer))[7]; \
377           ((Byte_t *)(DstBuffer))[1] = ((Byte_t *)(SrcBuffer))[6]; \
378           ((Byte_t *)(DstBuffer))[2] = ((Byte_t *)(SrcBuffer))[5]; \
379           ((Byte_t *)(DstBuffer))[3] = ((Byte_t *)(SrcBuffer))[4]; \
380           ((Byte_t *)(DstBuffer))[4] = ((Byte_t *)(SrcBuffer))[3]; \
381           ((Byte_t *)(DstBuffer))[5] = ((Byte_t *)(SrcBuffer))[2]; \
382           ((Byte_t *)(DstBuffer))[6] = ((Byte_t *)(SrcBuffer))[1]; \
383           ((Byte_t *)(DstBuffer))[7] = ((Byte_t *)(SrcBuffer))[0]; \
384         } while (FALSE)
385 
386 /**
387  * Reverses the byte order of the specified 2 byte buffer.
388  *
389  * param Buffer
390  *     Pointer to the 2 bytes needing byte order reversal.
391  */
392 #define REVERSE_2_BYTES_1_AT_A_TIME(Buffer) \
393           do { \
394             Byte_t Byte0 = ((Byte_t *)(Buffer))[0]; \
395             CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==2); \
396             ((Byte_t *)(Buffer))[0] = ((Byte_t *)(Buffer))[1]; \
397             ((Byte_t *)(Buffer))[1] = Byte0; \
398           } while (FALSE)
399 
400 #define REVERSE_2_BYTES_2_AT_A_TIME(Buffer) \
401           do { \
402             UInt16_t data_bits = ((UInt16_t *)(Buffer))[0]; \
403             CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==2); \
404             ((UInt16_t *)(Buffer))[0] = (((data_bits)<<8) | \
405                                          ((data_bits&0xff))); \
406           } while (FALSE)
407 
408 /* REVERSE_2_BYTES_2_AT_A_TIME may actually be slower, needs testing. */
409 #define REVERSE_2_BYTES REVERSE_2_BYTES_1_AT_A_TIME
410 
411 /**
412  * Reverses the byte order of the specified 4 byte buffer.
413  *
414  * param Buffer
415  *     Pointer to the 4 bytes needing byte order reversal.
416  *
417  * How this works:
418  *
419  *   ABCD
420  *   D--- <<24  (1)
421  *
422  *   ABCD
423  *   --C- &0x0000ff00
424  *   -C-- <<8   (2)
425  *
426  *   ABCD
427  *   -B-- &0x00ff0000
428  *   --B- >>8   (3)
429  *
430  *   ABCD
431  *   ---A >>24  (4)
432  *
433  * (1) | (2) | (3) | (4) = DCBA.
434  *
435  */
436 #define REVERSE_4_BYTES_1_AT_A_TIME(Buffer) \
437           do { \
438             Byte_t Byte0 = ((Byte_t *)(Buffer))[0]; \
439             Byte_t Byte1 = ((Byte_t *)(Buffer))[1]; \
440             CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==4); \
441             ((Byte_t *)(Buffer))[0] = ((Byte_t *)(Buffer))[3]; \
442             ((Byte_t *)(Buffer))[1] = ((Byte_t *)(Buffer))[2]; \
443             ((Byte_t *)(Buffer))[2] = Byte1; \
444             ((Byte_t *)(Buffer))[3] = Byte0; \
445           } while (FALSE)
446 
447 #define REVERSE_4_BYTES_4_AT_A_TIME(Buffer) \
448           do { \
449             UInt32_t data_bits = *((UInt32_t *)(Buffer)); \
450             CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==4); \
451             *((UInt32_t *)(Buffer)) = (((data_bits)<<24)            | \
452                                        ((data_bits&0x0000ff00)<<8)  | \
453                                        ((data_bits&0x00ff0000)>>8)  | \
454                                        ((data_bits)>>24)); \
455           } while (FALSE)
456 
457 #if defined MSWIN
458 /*
459  * The DevStuido compiler seems to be the only one that can truly handle this
460  * when optimization is turned on.
461  */
462 #define REVERSE_4_BYTES REVERSE_4_BYTES_4_AT_A_TIME
463 #else
464 #define REVERSE_4_BYTES REVERSE_4_BYTES_1_AT_A_TIME
465 #endif
466 
467 /**
468  * Reverses the byte order of the specified 8 byte buffer.
469  *
470  * param Buffer
471  *     Pointer to the 8 bytes needing byte order reversal.
472  */
473 #define REVERSE_8_BYTES_1_AT_A_TIME(Buffer) \
474         do { \
475             Byte_t Byte0 = ((Byte_t *)(Buffer))[0]; \
476             Byte_t Byte1 = ((Byte_t *)(Buffer))[1]; \
477             Byte_t Byte2 = ((Byte_t *)(Buffer))[2]; \
478             Byte_t Byte3 = ((Byte_t *)(Buffer))[3]; \
479             CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==8); \
480             ((Byte_t *)(Buffer))[0] = ((Byte_t *)(Buffer))[7]; \
481             ((Byte_t *)(Buffer))[1] = ((Byte_t *)(Buffer))[6]; \
482             ((Byte_t *)(Buffer))[2] = ((Byte_t *)(Buffer))[5]; \
483             ((Byte_t *)(Buffer))[3] = ((Byte_t *)(Buffer))[4]; \
484             ((Byte_t *)(Buffer))[4] = Byte3; \
485             ((Byte_t *)(Buffer))[5] = Byte2; \
486             ((Byte_t *)(Buffer))[6] = Byte1; \
487             ((Byte_t *)(Buffer))[7] = Byte0; \
488         } while (FALSE)
489 
490 #define REVERSE_8_BYTES_2_AT_A_TIME(Buffer) \
491         do { \
492           UInt16_t data_bits_0 = ((UInt16_t *)(Buffer))[0]; \
493           UInt16_t data_bits_1 = ((UInt16_t *)(Buffer))[1]; \
494           UInt16_t data_bits_2 = ((UInt16_t *)(Buffer))[2]; \
495           UInt16_t data_bits_3 = ((UInt16_t *)(Buffer))[3]; \
496           CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==8); \
497           ((UInt16_t *)(Buffer))[0] = (((data_bits_3)<<8) | \
498                                        ((data_bits_3&0xff))); \
499           ((UInt16_t *)(Buffer))[1] = (((data_bits_2)<<8) | \
500                                        ((data_bits_2&0xff))); \
501           ((UInt16_t *)(Buffer))[2] = (((data_bits_1)<<8) | \
502                                        ((data_bits_1&0xff))); \
503           ((UInt16_t *)(Buffer))[3] = (((data_bits_0)<<8) | \
504                                        ((data_bits_0&0xff))); \
505         } while (FALSE)
506 
507 #define REVERSE_8_BYTES_4_AT_A_TIME(Buffer) \
508         do { \
509           UInt32_t data_bits_0 = ((UInt32_t *)(Buffer))[0]; \
510           UInt32_t data_bits_1 = ((UInt32_t *)(Buffer))[1]; \
511           CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==8); \
512           ((UInt32_t *)(Buffer))[0] = (((data_bits_1)<<24)           | \
513                                        ((data_bits_1&0x0000ff00)<<8) | \
514                                        ((data_bits_1&0x00ff0000)>>8) | \
515                                        ((data_bits_1)>>24)); \
516           ((UInt32_t *)(Buffer))[1] = (((data_bits_0)<<24)           | \
517                                        ((data_bits_0&0x0000ff00)<<8) | \
518                                        ((data_bits_0&0x00ff0000)>>8) | \
519                                        ((data_bits_0)>>24)); \
520         } while (FALSE)
521 
522 #define REVERSE_8_BYTES_8_AT_A_TIME(Buffer) \
523         do { \
524           UInt64_t data_bits = *((UInt64_t *)(Buffer)); \
525           CHECK(sizeof(*(Buffer))==1 || sizeof(*(Buffer))==8); \
526           *((UInt64_t *)(Buffer)) = (((data_bits)<<56) | \
527                                      ((data_bits&0x000000000000ff00)<<40) | \
528                                      ((data_bits&0x0000000000ff0000)<<24) | \
529                                      ((data_bits&0x00000000ff000000)<<8)  | \
530                                      ((data_bits&0x000000ff00000000)>>8)  | \
531                                      ((data_bits&0x0000ff0000000000)>>24) | \
532                                      ((data_bits&0x00ff000000000000)>>40) | \
533                                      ((data_bits)>>56)); \
534         } while (FALSE)
535 
536 
537 #if defined MSWIN
538 /*
539  * The DevStuido compiler seems to be the only one that can truly handle this
540  * when optimization is turned on.
541  */
542 #define REVERSE_8_BYTES REVERSE_8_BYTES_4_AT_A_TIME
543 #else
544 #define REVERSE_8_BYTES REVERSE_8_BYTES_1_AT_A_TIME
545 #endif
546 
547 
548 /****************************************************************
549  *                                                              *
550  *             ADD-ON MSWIN IMPORT/EXPORT DEFINITIONS            *
551  *                                                              *
552  ****************************************************************/
553 #if defined MSWIN
554 #  define STDCALL __stdcall
555 #else
556 #  define STDCALL
557 #endif /* MSWIN */
558 
559 #if defined (__cplusplus)
560 # define EXTERNC extern "C"
561 #else
562 # define EXTERNC
563 #endif /* __cplusplus */
564 
565 #if defined MSWIN
566 #if defined AMTEC_INTERNAL_MAKELIBTEC || defined TECPLOTKERNEL
567 /* CORE SOURCE CODE REMOVED */
568 #  else
569 #    define TECPLOT_DLLAPI _declspec ( dllimport )
570 #  endif
571 #else
572 #  define TECPLOT_DLLAPI
573 #endif
574 
575 #define LINKTOADDON EXTERNC TECPLOT_DLLAPI
576 
577 
578 /*
579  *
580  * Usage:
581  * EXPORTFROMADDON void STDCALL InitTecAddOn(void) { ... }
582  *
583  */
584 #if defined MSWIN
585 # define EXPORTFROMADDON EXTERNC _declspec ( dllexport )
586 #else
587 # define EXPORTFROMADDON EXTERNC
588 #endif /* MSWIN */
589 
590 #define EXPORTFROMDLL EXPORTFROMADDON
591 
592 #define InitTecAddOn           InitTecAddOn113
593 #define TEC_INIT_FUNCTION_NAME "InitTecAddOn113"
594 
595 /* BEGINREMOVEFROMADDON */
596 /* Use INLINE for static functions that could be optimized as inline. */
597 #if defined (__cplusplus) && !defined _DEBUG
598 # define INLINE inline
599 #else
600 # define INLINE static
601 #endif /* __cplusplus */
602 /* ENDREMOVEFROMADDON */
603 
604 
605 /* BEGINREMOVEFROMADDON */
606 #if defined (MSWIN) ||\
607     defined (INTERX) ||\
608     defined (LINUX) ||\
609     defined (SUNSOLARIS86X) ||\
610     defined (COMPAQALPHA) ||\
611     defined (DEC) ||\
612     defined (__LITTLE_ENDIAN__)
613 #define MACHINE_DOES_INTEL_ORDER
614 #endif
615 
616 #if defined( MACHINE_DOES_INTEL_ORDER )
617 # define SwapBytes(IntelOrder) (!(IntelOrder))
618 #else
619 # define SwapBytes(IntelOrder) (IntelOrder)
620 #endif
621 /* ENDREMOVEFROMADDON */
622 
623 #if defined DECALPHA   || \
624     defined LINUXALPHA || \
625     defined LINUX64    || \
626     defined MAC64      || \
627     defined IBMRS6000  || \
628     defined SUN        || \
629     defined HP         || \
630     defined COMPAQALPHA
631 #define LONGIS64
632 #endif
633 
634 /****************************************************************
635  *                                                              *
636  *                       HARD CONSTANTS                         *
637  *                                                              *
638  ****************************************************************/
639 #define LARGEMEMORY              ((size_t)-1)
640 
641 /* BEGINREMOVEFROMADDON */
642 /* Tclinterp add-on barfs on these huge integer constants */
643 /* Note: Tecplot is conservative by one on LARGEINTs max */
644 #define LARGEINT64               9223372036854775806LL
645 /* ENDREMOVEFROMADDON */
646 #define LARGEINT32               2147483646
647 #define LARGEINT16               32766
648 #define LARGEINT8                126
649 
650 /* BEGINREMOVEFROMADDON */
651 #define LARGEUINT64              18446744073709551614ULL
652 /* ENDREMOVEFROMADDON */
653 #define LARGEUINT32              4294967294U
654 #define LARGEUINT16              65534U
655 #define LARGEUINT8               254U
656 
657 #ifdef INDEX_16_BIT
658 #define MAXINDEX               ((LgIndex_t)LARGEINT16)
659 #else
660 #define MAXINDEX               ((LgIndex_t)LARGEINT32)
661 #endif
662 #define MAXZONEMAP               MAXINDEX
663 #define LARGEDOUBLE              1.0e+150
664 #define SMALLDOUBLE              1.0e-150
665 #define LARGESTEXPONENT          150
666 #define SMALLESTEXPONENT         -150
667 
668 #define SMALLESTDOUBLE           SMALLDOUBLE
669 
670 #define LARGESTDOUBLEEXPONENT    308
671 #define SMALLESTDOUBLEEXPONENT   -307
672 #define LARGESTDOUBLE            1.0e+308
673 #define LARGEFLOAT               3.40282347E+38
674 #define SMALLFLOAT               1.17549435E-38
675 #define SMALLSTDOUBLE            1.0e-307
676 
677 /* Visual Studio 2008 defines MAXINT32, MAXINT16 which collide with ours */
678 #if defined MAXINT32
679 #undef MAXINT32
680 #endif
681 #if defined MAXINT16
682 #undef MAXINT16
683 #endif
684 
685 #define MAXINT32                 LARGEINT32
686 #define MAXINT16                 LARGEINT16
687 #define ETX                      3
688 #define LN2                      0.69314718055994530942
689 #define LN10                     2.30258509299404568402
690 #define PIOVER2                  1.57079632679489661923
691 #define TWOPI                    6.28318530717958647692
692 #if defined PI
693 #undef PI
694 #endif
695 #define PI                       3.14159265358979323846
696 #define ANGLEEPSILON             1.0e-10
697 #define LARGESTANGLE             (4*PI+ANGLEEPSILON)
698 #define DEGPERRADIANS            57.295779513082323
699 #define CMPERINCH                2.54
700 #define POINTSPERINCH            72.0
701 #define FONTMOVEMARK             192
702 #define FONTDECISIONMARK         128
703 #define FONTLINEMARK             64
704 #define BAD_SET_VALUE            ((SetIndex_t)-1)
705 #define MENU_POSITION_FIRST      (0)
706 #define MENU_POSITION_LAST       (-1)
707 #define INVALID_UNIQUE_ID        0
708 
709 #define BADSETVALUE              BAD_SET_VALUE
710 #define SOLID_TRANSLUCENCY       0
711 #define BAD_DISTANCE             (-1.0)
712 /* MIN_CIRCUMFERENTIAL_INDEX is the min J dimension for circular zones */
713 #define MIN_CIRCUMFERENTIAL_INDEX  4
714 
715 #define VALID_STRAND_ID(StrandID) (0 <= (StrandID) && (StrandID) < MAXZONEMAP)
716 #define STRAND_ID_STATIC          (-1)
717 #define STRAND_ID_PENDING         (-2)
718 
719 /*
720  * Need 3 passes for "Rest of pie" method but can only use 3 clip planes
721  * Need only 1 pass for "Piece of pie" method and can use 6 clip planes
722 */
723 #define MAX_ALLOWABLE_CLIPPASSES 1
724 #define MAX_ALLOWABLE_CLIPPLANES 6
725 #define INVALID_CLIP_PLANE -1
726 #define VALID_CLIP_PLANE(clipPlane) (0 <= clipPlane && clipPlane < MAX_ALLOWABLE_CLIPPLANES)
727 
728 /* BEGINREMOVEFROMADDON */
729 #if defined TECPLOTKERNEL
730 /* CORE SOURCE CODE REMOVED */
731 #if defined _DEBUG
732 #else
733 #endif
734 #if 0 /* NOTUSED */
735 #endif
736 #endif /* TECPLOTKERNEL */
737 /* ENDREMOVEFROMADDON */
738 
739 
740 /*
741  * NOTE: If you change TecplotBinaryFileVersion, you MUST also:
742  *
743  * 1. Update preplot:
744  *    - Change this define symbol in preplot.cpp
745  *    - Change version number in the data file format in the comments in preplot.cpp
746  *    - Change the version number of Preplot itself in preplot.cpp
747  * 2. Maintain the ability to write the old plt file format:
748  *    - Add a new entry to BinaryFileVersion_e
749  *    - Add a concrete class of the VersionWriterInterface, and update
750  *      VersionWriterAbstractFactory to return the correct instance for the previous and
751  *      new BinaryFileVersion_e
752  *    - Abstract away the difference in the two versions behind an interface (if one does
753  *      not yet exist) and create concrete implementations that can write the old and the
754  *      new versions. For a trivial example of this, see FileTypeWriterInterface and its
755  *      associated factory and concrete classes.
756  */
757 #define TecplotBinaryFileVersion    112 /* NOTE: only change this when we change the binary file format */
758 
759 #define    MaxNumZonesOrVars           MAXZONEMAP
760 #define    MaxXAxes                    5
761 #define    MaxYAxes                    5
762 #define    MaxGeoSegments              50
763 #define    MaxPtsCircleOrEllipse       720
764 #define    MaxFrames                   2048
765 #define    MaxCustomLabelSets          10
766 #define    MaxFontMoves                20000
767 #define    MaxColorMapOverrides        16
768 #define    MaxValueBlankConstraints    8
769 #define    MaxContourGroups            8
770 #define    MaxIsoSurfaceGroups         8
771 #define    MaxIsoSurfaceSpecificLevels 3
772 #define    MaxSliceGroups              8
773 
774 #define    MaxColorMapGroups         8
775 #define    DefaultNumContLevels      15
776 
777 
778 #define    DefaultColorMapGroup      ((SmInteger_t)0)
779 #define    BADGROUPNUMBER            ((SmInteger_t)-1)
780 #define    UNUSEDGROUPNUMBER         ((SmInteger_t)0)
781 
782 #define VALID_ISOSURFACE_GROUP(Group) (((((SmInteger_t)Group) >= 0) && (((SmInteger_t)Group) < MaxIsoSurfaceGroups)))
783 #define VALID_SLICE_GROUP(Group)      (((((SmInteger_t)Group) >= 0) && (((SmInteger_t)Group) < MaxSliceGroups)))
784 #define VALID_COLORMAP_GROUP(Group)   (((((SmInteger_t)Group) >= 0) && (((SmInteger_t)Group) < MaxColorMapGroups)))
785 
786 #define    MAX_AUTO_COLOR_SEQUENCE_VALUES  6
787 
788 
789 /*
790  * If any of these values changes its corresponding value in preplot.c must
791  * change to match it so that files created by preplot and Tecplot are
792  * consistent.
793  */
794 #define    MaxChrsDatasetTitle       256
795 #define    MaxChrsZnTitle            128
796 #define    MaxChrsVarName            128
797 #define    MaxChrsZnOrVarName        128
798 /* currently limited to MaxLineIndex in preplot.c */
799 #define    MaxChrsAuxValueString     32000
800 
801 #define    MaxNumViews               16
802 #define    MaxBasicSizes             5
803 #define    MaxColorMapControlPoints  50
804 #define    MaxRawColorMapEntries     800
805 #define    MaxDataSetReaders         100
806 #define    MaxExtendedCurveFits      100
807 #define    MaxColorMapCycles         20
808 
809 
810 /* Dimension Limits */
811 
812 #define    MinPaperDimInWorkArea     0.5
813 #define    MinFrameWidth             0.25
814 #define    MinFrameHeight            0.25
815 #define    MinAxisLength             0.1
816 
817 
818 #define    BadEnumValue              255
819 
820 /* BEGINREMOVEFROMADDON */
821 /* define class element limits */
822 #if defined TECPLOTKERNEL
823 /* CORE SOURCE CODE REMOVED */
824 #endif
825 /* ENDREMOVEFROMADDON */
826 
827 /*
828  * Floating point values are written to layouts with a certain precision.
829  * A high precision is necessary in some cases (like streamtrace starting locations)
830  * This used to be set to 12 which was not high enough.   It is now set to 16 which
831  * appears to be sufficient.   This also seems to jive with the number of digits of
832  * precision that are found in "ieee double precision" values which is 53 bits or
833  * equivalent to approximately 16 digits. -bdp
834  *
835  */
836 #define STYLE_FLOAT_PRECISION 16
837 
838 
839 /*
840  * Auxiliary data common names.
841  *
842  *      Define Name                                 Data Name                               Data Type    Data Location
843  *      ------------------------------------------  ------------------------------------    ---------    -------------
844  */
845 #define AuxData_Common_Incompressible               "Common.Incompressible"              /* Boolean_t    Dataset */
846 #define AuxData_Common_Density                      "Common.Density"                     /* double       Dataset */
847 #define AuxData_Common_SpecificHeat                 "Common.SpecificHeat"                /* double       Dataset */
848 #define AuxData_Common_SpecificHeatVar              "Common.SpecificHeatVar"             /* int          Dataset */
849 #define AuxData_Common_GasConstant                  "Common.GasConstant"                 /* double       Dataset */
850 #define AuxData_Common_GasConstantVar               "Common.GasConstantVar"              /* int          Dataset */
851 #define AuxData_Common_Gamma                        "Common.Gamma"                       /* double       Dataset */
852 #define AuxData_Common_GammaVar                     "Common.GammaVar"                    /* int          Dataset */
853 #define AuxData_Common_Viscosity                    "Common.Viscosity"                   /* double       Dataset */
854 #define AuxData_Common_ViscosityVar                 "Common.ViscosityVar"                /* int          Dataset */
855 #define AuxData_Common_Conductivity                 "Common.Conductivity"                /* double       Dataset */
856 #define AuxData_Common_ConductivityVar              "Common.ConductivityVar"             /* int          Dataset */
857 #define AuxData_Common_AngleOfAttack                "Common.AngleOfAttack"               /* double       Dataset */
858 #define AuxData_Common_SpeedOfSound                 "Common.SpeedOfSound"                /* double       Dataset */
859 #define AuxData_Common_ReferenceU                   "Common.ReferenceU"                  /* double       Dataset */
860 #define AuxData_Common_ReferenceV                   "Common.ReferenceV"                  /* double       Dataset */
861 #define AuxData_Common_XVar                         "Common.XVar"                        /* int          Dataset */
862 #define AuxData_Common_YVar                         "Common.YVar"                        /* int          Dataset */
863 #define AuxData_Common_ZVar                         "Common.ZVar"                        /* int          Dataset */
864 #define AuxData_Common_CVar                         "Common.CVar"                        /* int          Dataset */
865 #define AuxData_Common_UVar                         "Common.UVar"                        /* int          Dataset */
866 #define AuxData_Common_VVar                         "Common.VVar"                        /* int          Dataset */
867 #define AuxData_Common_WVar                         "Common.WVar"                        /* int          Dataset */
868 #define AuxData_Common_VectorVarsAreVelocity        "Common.VectorVarsAreVelocity"       /* Boolean_t    Dataset */
869 #define AuxData_Common_PressureVar                  "Common.PressureVar"                 /* int          Dataset */
870 #define AuxData_Common_TemperatureVar               "Common.TemperatureVar"              /* int          Dataset */
871 #define AuxData_Common_DensityVar                   "Common.DensityVar"                  /* int          Dataset */
872 #define AuxData_Common_StagnationEnergyVar          "Common.StagnationEnergyVar"         /* int          Dataset */
873 #define AuxData_Common_MachNumberVar                "Common.MachNumberVar"               /* int          Dataset */
874 #define AuxData_Common_ReferenceMachNumber          "Common.ReferenceMachNumber"         /* double       Dataset */
875 #define AuxData_Common_ReferenceW                   "Common.ReferenceW"                  /* double       Dataset */
876 #define AuxData_Common_PrandtlNumber                "Common.PrandtlNumber"               /* double       DataSet */
877 #define AuxData_Common_Axisymmetric                 "Common.Axisymmetric"                /* Boolean_t    Dataset */
878 #define AuxData_Common_AxisOfSymmetryVarAssignment  "Common.AxisOfSymmetryVarAssignment" /* int          Dataset */
879 #define AuxData_Common_AxisValue                    "Common.AxisValue"                   /* double       Dataset */
880 #define AuxData_Common_SteadyState                  "Common.SteadyState"                 /* Boolean_t    Dataset */
881 #define AuxData_Common_TurbulentKineticEnergyVar    "Common.TurbulentKineticEnergyVar"   /* int          Dataset */
882 #define AuxData_Common_TurbulentDissipationRateVar  "Common.TurbulentDissipationRateVar" /* int          Dataset */
883 #define AuxData_Common_TurbulentViscosityVar        "Common.TurbulentViscosityVar"       /* int          Dataset */
884 #define AuxData_Common_TurbulentFrequencyVar        "Common.TurbulentFrequencyVar"       /* int          Dataset */
885 #define AuxData_Common_Gravity                      "Common.Gravity"                     /* double       Dataset */
886 #define AuxData_Common_IsBoundaryZone               "Common.IsBoundaryZone"              /* Boolean_t    Zone */
887 #define AuxData_Common_BoundaryCondition            "Common.BoundaryCondition"           /* BCondition   Zone */
888 #define AuxData_Common_Time                         "Common.Time"                        /* double       Zone */
889 #define AuxData_Common_Mean                         "Common.Mean"                        /* double       Variable */
890 #define AuxData_Common_Median                       "Common.Median"                      /* double       Variable */
891 #define AuxData_Common_Variance                     "Common.Variance"                    /* double       Variable */
892 #define AuxData_Common_StdDev                       "Common.StdDev"                      /* double       Variable */
893 #define AuxData_Common_AvgDev                       "Common.AvgDev"                      /* double       Variable */
894 #define AuxData_Common_GeoMean                      "Common.GeoMean"                     /* double       Variable */
895 #define AuxData_Common_ChiSqre                      "Common.ChiSqre"                     /* double       Variable */
896 
897 
898 
899 
900 
901 
902 
903 /* BEGINREMOVEFROMADDON */
904 #if defined TECPLOTKERNEL
905 /* CORE SOURCE CODE REMOVED */
906 #if defined THREED
907 #endif
908 #endif /* TECPLOTKERNEL */
909 /* ENDREMOVEFROMADDON */
910 
911 /* Tecplot Add-on Custom Products */
912 
913 /* BEGINREMOVEFROMADDON */
914 /* In activeX, the color constants are an enum type,
915    so the activeX source code parser handles these as
916    a special case, and the types do not need to be
917    indicated as with the other hard #define constants */
918 /* ENDREMOVEFROMADDON */
919 
920 #define    Black_C           ((ColorIndex_t)0)
921 #define    Red_C             ((ColorIndex_t)1)
922 #define    Green_C           ((ColorIndex_t)2)
923 #define    Blue_C            ((ColorIndex_t)3)
924 #define    Cyan_C            ((ColorIndex_t)4)
925 #define    Yellow_C          ((ColorIndex_t)5)
926 #define    Purple_C          ((ColorIndex_t)6)
927 #define    White_C           ((ColorIndex_t)7)
928 
929 #define    Custom1_C         ((ColorIndex_t)8)
930 #define    Custom2_C         ((ColorIndex_t)9)
931 #define    Custom3_C         ((ColorIndex_t)10)
932 #define    Custom4_C         ((ColorIndex_t)11)
933 #define    Custom5_C         ((ColorIndex_t)12)
934 #define    Custom6_C         ((ColorIndex_t)13)
935 #define    Custom7_C         ((ColorIndex_t)14)
936 #define    Custom8_C         ((ColorIndex_t)15)
937 #define    Custom9_C         ((ColorIndex_t)16)
938 
939 #define    Custom10_C         ((ColorIndex_t)17)
940 #define    Custom11_C         ((ColorIndex_t)18)
941 #define    Custom12_C         ((ColorIndex_t)19)
942 #define    Custom13_C         ((ColorIndex_t)20)
943 #define    Custom14_C         ((ColorIndex_t)21)
944 #define    Custom15_C         ((ColorIndex_t)22)
945 #define    Custom16_C         ((ColorIndex_t)23)
946 #define    Custom17_C         ((ColorIndex_t)24)
947 #define    Custom18_C         ((ColorIndex_t)25)
948 #define    Custom19_C         ((ColorIndex_t)26)
949 
950 #define    Custom20_C         ((ColorIndex_t)27)
951 #define    Custom21_C         ((ColorIndex_t)28)
952 #define    Custom22_C         ((ColorIndex_t)29)
953 #define    Custom23_C         ((ColorIndex_t)30)
954 #define    Custom24_C         ((ColorIndex_t)31)
955 #define    Custom25_C         ((ColorIndex_t)32)
956 #define    Custom26_C         ((ColorIndex_t)33)
957 #define    Custom27_C         ((ColorIndex_t)34)
958 #define    Custom28_C         ((ColorIndex_t)35)
959 #define    Custom29_C         ((ColorIndex_t)36)
960 
961 #define    Custom30_C         ((ColorIndex_t)37)
962 #define    Custom31_C         ((ColorIndex_t)38)
963 #define    Custom32_C         ((ColorIndex_t)39)
964 #define    Custom33_C         ((ColorIndex_t)40)
965 #define    Custom34_C         ((ColorIndex_t)41)
966 #define    Custom35_C         ((ColorIndex_t)42)
967 #define    Custom36_C         ((ColorIndex_t)43)
968 #define    Custom37_C         ((ColorIndex_t)44)
969 #define    Custom38_C         ((ColorIndex_t)45)
970 #define    Custom39_C         ((ColorIndex_t)46)
971 
972 #define    Custom40_C         ((ColorIndex_t)47)
973 #define    Custom41_C         ((ColorIndex_t)48)
974 #define    Custom42_C         ((ColorIndex_t)49)
975 #define    Custom43_C         ((ColorIndex_t)50)
976 #define    Custom44_C         ((ColorIndex_t)51)
977 #define    Custom45_C         ((ColorIndex_t)52)
978 #define    Custom46_C         ((ColorIndex_t)53)
979 #define    Custom47_C         ((ColorIndex_t)54)
980 #define    Custom48_C         ((ColorIndex_t)55)
981 #define    Custom49_C         ((ColorIndex_t)56)
982 
983 #define    Custom50_C         ((ColorIndex_t)57)
984 #define    Custom51_C         ((ColorIndex_t)58)
985 #define    Custom52_C         ((ColorIndex_t)59)
986 #define    Custom53_C         ((ColorIndex_t)60)
987 #define    Custom54_C         ((ColorIndex_t)61)
988 #define    Custom55_C         ((ColorIndex_t)62)
989 #define    Custom56_C         ((ColorIndex_t)63)
990 
991 #define    MultiColor_C      ((ColorIndex_t)(-1))
992 #define    NoColor_C         ((ColorIndex_t)(-2))
993 #define    MultiColor2_C     ((ColorIndex_t)(-3))
994 #define    MultiColor3_C     ((ColorIndex_t)(-4))
995 #define    MultiColor4_C     ((ColorIndex_t)(-5))
996 #define    RGBColor_C        ((ColorIndex_t)(-6))
997 #define    MultiColor5_C     ((ColorIndex_t)(-7))
998 #define    MultiColor6_C     ((ColorIndex_t)(-8))
999 #define    MultiColor7_C     ((ColorIndex_t)(-9))
1000 #define    MultiColor8_C     ((ColorIndex_t)(-10))
1001 #define    InvalidColor_C    ((ColorIndex_t)(-255))
1002 
1003 #define    FirstCustomColor  Custom1_C
1004 #define    LastCustomColor   Custom56_C
1005 #define    NumCustomColors   (LastCustomColor-FirstCustomColor+1)
1006 
1007 #define    FirstBasicColor   Black_C
1008 #define    LastBasicColor    LastCustomColor
1009 #define    NumBasicColors    (LastBasicColor-FirstBasicColor+1)
1010 
1011 /* BEGINREMOVEFROMADDON */
1012 
1013 /*
1014  * V8 and earlier used this for MultiColor_C.  We adjust this
1015  * to the new value in the SetValue layer so old addons work.
1016  */
1017 #define    OldMultiColor_C   ((ColorIndex_t)255)
1018 /*
1019  * Gray is only used in the interface for workspace background and
1020  * for insensitive buttons in Motif.
1021  * True Black and True White are also interface only.  They draw
1022  * true black or true white - regardless of what the user has set
1023  * the RGB values for the black and white basic colors.
1024  * XOrColor_C is also for interface only.
1025  */
1026 #define    Gray_C                 (LastBasicColor+1)
1027 #define    DarkGray_C             (LastBasicColor+2) /* Used for inactive frame border color */
1028 #define    XOrColor_C             (LastBasicColor+3)
1029 #define    FirstInterfaceColor    Gray_C
1030 #define    LastInterfaceColor     XOrColor_C
1031 
1032 #define    NumInterfaceColors    (LastInterfaceColor-FirstInterfaceColor+1)
1033 #define    NumContourShades      (GeneralBase.Limits.MaxNumContourLevels+1)
1034 #define    NumColorsInColorTable (NumBasicColors+NumInterfaceColors+NumContourShades)
1035 #define    BasicColorOffset      (0)
1036 #define    InterfaceColorOffset  (NumBasicColors)
1037 #define    ContourColorOffset    (NumBasicColors+NumInterfaceColors)
1038 
1039 #define    BadKey           (short)31
1040 #define    Plus             (short)43
1041 #define    Minus            (short)45
1042 #define    RetKey           (short)13
1043 #define    DeleteKey        (short)127
1044 #define    ShiftDelete      (short)128
1045 #define    BackSpace        (short)8
1046 #define    LeftArrow        (short)29
1047 #define    RightArrow       (short)30
1048 #define    UpArrow          (short)11
1049 #define    DownArrow        (short)10
1050 #define    Toggle           (short)19
1051 #define    Esc              (short)27
1052 #define    RegFrame         (short)18
1053 #define    DoBitDump        (short)2
1054 
1055 
1056 /* File Markers */
1057 #define ZoneMarker        299.0
1058 #define GeomMarker        399.0
1059 #define TextMarker        499.0
1060 #define CustomLabelMarker 599.0
1061 #define UserRecMarker     699.0
1062 #define DataSetAuxMarker  799.0
1063 #define VarAuxMarker      899.0
1064 #define EndHeaderMarker   357.0
1065 
1066 
1067 /*
1068  * Additional objects that have plotter
1069  * pens assigned to them.
1070  */
1071 #define    AxisPen          Custom8_C+1
1072 #define    MajGridPen       Custom8_C+2
1073 #define    MinGridPen       Custom8_C+3
1074 #define    MarkerGridPen    Custom8_C+4
1075 #define    StreamlinePen    Custom8_C+5
1076 #define    ColoredLinePen   Custom8_C+6
1077 #define    BoundaryPen      Custom8_C+7
1078 #define    LabelPen         Custom8_C+8
1079 #define    NumPlotterPens   Custom8_C+9
1080 /* AutoSelectPen will select the correct pen from Black_C thru Custom8_C or ColoredLinePen */
1081 #define    AutoSelectPen    Custom8_C+10
1082 #define    InvalidPen       Custom8_C+99
1083 
1084 #define    FirstObjectPen   AxisPen
1085 #define    LastObjectPen    LabelPen
1086 
1087 #define    DelZFactor           0.0001
1088 
1089 #define    BadBaseValue         NULL
1090 
1091 
1092 /*
1093  *   NOTES ON TYPEDEFS:
1094  *
1095  *   TYPEDEF TYPE          Suffix
1096  *   ------------          ------
1097  *   simple                _t
1098  *   enumerated            _e
1099  *   structure             _s
1100  *   union                 _u
1101  *   abstract              _a
1102  *   pointer to simple     _pt
1103  *   pointer to enumerated _pe
1104  *   pointer to structure  _ps
1105  *   pointer to union      _pu
1106  *   pointer to abstract   _pa
1107  *   pointer to function   _pf
1108  *
1109  *
1110  *   The only execption is char * typedef's these use _t
1111  *
1112  *   Abstract types are intentionally made to be
1113  *   obscure.  The programmer should not have to know
1114  *   what the underlying structure really is for abstract
1115  *   types.
1116  *
1117  */
1118 
1119 
1120 #ifdef MSWIN
1121 # define DIR_SEPARATOR "\\"
1122 #else
1123 # define DIR_SEPARATOR "/"
1124 #endif
1125 
1126 /* ENDREMOVEFROMADDON */
1127 
1128 /* BEGINREMOVEFROMADDON */
1129 #if defined TECPLOTKERNEL
1130 /* CORE SOURCE CODE REMOVED */
1131 #else
1132 /* ENDREMOVEFROMADDON */
1133     #define TP_FREAD  fread
1134     #define TP_FWRITE fwrite
1135 /* BEGINREMOVEFROMADDON */
1136 #endif
1137 /* ENDREMOVEFROMADDON */
1138 
1139 #if defined MSWIN
1140 #define TP_FFLUSH   fflush
1141 #define TP_FCLOSE   fclose
1142 
1143 /* BEGINREMOVEFROMADDON */
1144 #if defined TECPLOTKERNEL
1145 /* CORE SOURCE CODE REMOVED */
1146 #else
1147 /* ENDREMOVEFROMADDON */
1148 #define TP_UNLINK   remove
1149 #define TP_RMDIR    _rmdir
1150 #define TP_FOPEN    ::fopen
1151 #define TP_FREOPEN  ::freopen
1152 #define TP_STAT     ::_stat
1153 #define TP_GETENV   ::getenv
1154 /* BEGINREMOVEFROMADDON */
1155 #endif /* TECPLOTKERNEL */
1156 /* ENDREMOVEFROMADDON */
1157 
1158 #if defined _WIN64
1159 #define TP_FSEEK(stream,offset,whence) _fseeki64((stream),(__int64)(offset),(whence))
1160 #define TP_FTELL                       _ftelli64
1161 #else
1162 #define TP_FSEEK(stream, offset, whence) fseek((stream), (long)(offset), (whence))
1163 #define TP_FTELL                         ftell
1164 #endif
1165 
1166 #else
1167 #define TP_RMDIR    rmdir
1168 #define TP_UNLINK   unlink
1169 #define TP_FOPEN    fopen
1170 #define TP_FREOPEN  freopen
1171 #define TP_FCLOSE   fclose
1172 #define TP_FFLUSH   fflush
1173 #define TP_FSEEK    fseeko
1174 #define TP_FTELL    ftello
1175 #define TP_STAT     stat
1176 #define _stat       stat /* ...make the UNIXX and MSWIN platforms have the same syntax to use "struct _stat" */
1177 #define TP_GETENV   getenv
1178 #endif
1179 
1180 /****************************************************************
1181  *                                                              *
1182  *                          SIMPLE TYPEDEFS                     *
1183  *                                                              *
1184  ****************************************************************/
1185 
1186 
1187 
1188 /* How to define UInt64_t/Int64_t is platform specific, but they are always 8-bytes */
1189 #if defined MSWIN
1190 typedef    unsigned __int64     UInt64_t;
1191 typedef    __int64              Int64_t;
1192 #else
1193 #if defined CRAY
1194 typedef    unsigned int       UInt64_t;
1195 typedef    int                Int64_t;
1196 #else
1197 #if defined LONGIS64
1198 typedef unsigned long      UInt64_t;
1199 typedef long               Int64_t;
1200 #else
1201 typedef unsigned long long UInt64_t;
1202 typedef long long          Int64_t;
1203 #endif
1204 #endif
1205 #endif
1206 
1207 #if defined LONGIS64
1208 typedef    unsigned int    UInt32_t;
1209 typedef    int             Int32_t;
1210 typedef    int             LgInteger_t;
1211 #else
1212 typedef    unsigned int    UInt32_t;
1213 typedef    int             Int32_t;
1214 typedef    int             LgInteger_t;
1215 #endif
1216 
1217 typedef    short           Int16_t;
1218 typedef    unsigned short  UInt16_t;
1219 typedef    signed char     Int8_t;
1220 typedef    unsigned char   UInt8_t;
1221 
1222 #ifdef INDEX_16_BIT
1223 typedef  Int16_t         LgIndex_t;
1224 #else
1225 typedef  Int32_t         LgIndex_t;
1226 #endif
1227 typedef    LgIndex_t       NodeMap_t;
1228 typedef    LgIndex_t       ScreenDim_t;
1229 
1230 /**
1231  * ArbParam_t type is used for passing arbitrary integers or pointers in
1232  * parameters. HgIndex_t is used for counting node maps and other things that
1233  * may individually be LgIndex_t, but in total exceed 32-bit.
1234  * The general rule is that these are 4 bytes on "32-bit" machines
1235  * and 8 bytes on "64-bit" machines.
1236  */
1237 #if defined CRAY
1238 typedef char *ArbParam_t;
1239 typedef long HgIndex_t;
1240 #elif defined LONGIS64
1241 typedef long ArbParam_t;
1242 typedef long HgIndex_t;
1243 #elif defined MSWIN
1244 typedef INT_PTR ArbParam_t;
1245 typedef INT_PTR HgIndex_t;
1246 #else
1247 typedef int ArbParam_t;
1248 typedef int HgIndex_t;
1249 #endif
1250 
1251 typedef    ArbParam_t      UniqueID_t;
1252 
1253 /* 64 bit offset used to hold file offset and size values. */
1254 typedef Int64_t FileOffset_t;
1255 
1256 /**
1257  * 64 bit offset for memory mapped I/O.
1258  */
1259 typedef UInt64_t MemMapOffset_t;
1260 
1261 /*
1262  *  SmInteger must be at least a short....
1263  */
1264 
1265 typedef    unsigned char    Byte_t;
1266 typedef    short            SmInteger_t;
1267 
1268 /**
1269  * A number of color index constants are \#defined. These include Black_C, Red_C,
1270  * Green_C, Blue_C, Cyan_C, Yellow_C, Purple_C, White_C, Custom1_C through
1271  * Custom56_C, MultiColor_C, NoColor_C, MulitiColor2_C through MulitiColor8_C,
1272  * RGBColor_C, and InvalidColor_C.
1273  */
1274 typedef    SmInteger_t      ColorIndex_t;
1275 
1276 #ifdef INDEX_16_BIT
1277 typedef  Int16_t          EntIndex_t;
1278 #else
1279 typedef  Int32_t          EntIndex_t;
1280 #endif
1281 typedef    Int16_t          SubZoneIndex_t;
1282 
1283 typedef    char             Boolean_t;
1284 typedef    char            *ZoneName_t;
1285 typedef    char            *VarName_t;
1286 typedef    char            *LString_t;
1287 
1288 typedef    LgIndex_t        Strand_t;
1289 typedef    LgIndex_t        HeapLength_t;
1290 typedef    LgIndex_t        SegPtsArray_t[MaxGeoSegments];
1291 typedef    double           BasicSize_t[MaxBasicSizes];
1292 typedef    double          *VarList_t;
1293 
1294 typedef    HgIndex_t        SetIndex_t;
1295 
1296 typedef    unsigned long    SetData_t;
1297 typedef    SetData_t       *SetData_pt;
1298 
1299 /* BEGINREMOVEFROMADDON */
1300 #if defined TECPLOTKERNEL
1301 /* CORE SOURCE CODE REMOVED */
1302 #endif /* TECPLOTKERNEL */
1303 
1304 /* The following list identifies items that can be inhibited. */
1305 #define FEATURE_3D                       (1L << 0)
1306 #define FEATURE_3DVOLUME                 (1L << 1)
1307 #define FEATURE_2D                       (1L << 2)
1308 #define FEATURE_XY                       (1L << 3)
1309 #define FEATURE_DATAALTER                (1L << 4)
1310 #define FEATURE_UNSTRUCTUREDDATA         (1L << 5)
1311 #define FEATURE_MULTIPLEFRAMES1          (1L << 6)
1312 #define FEATURE_MULTIPLEZONES1           (1L << 7)
1313 #define FEATURE_MULTIPLEFRAMES5          (1L << 8)
1314 #define FEATURE_MULTIPLEZONES5           (1L << 9)
1315 #define FEATURE_MULTIPLEFRAMES10         (1L << 10)
1316 #define FEATURE_MULTIPLEZONES10          (1L << 11)
1317 #define FEATURE_READNONOEMDATA           (1L << 12) /* Added 07/22/2000 */
1318 #define FEATURE_DATALOADERS              (1L << 13) /* Added 07/22/2000 */
1319 #define FEATURE_DATALOADERS_EXCEPTONE    (1L << 14) /* Added 11/26/2001 */
1320 #define FEATURE_LOADONDEMAND             (1L << 15) /* Added 09/13/2007 */
1321 #define FEATURE_MULTIPLEWORKERTHREADS    (1L << 16) /* Added 09/13/2007 */
1322 #define FEATURE_ISOSURFACEGROUPS         (1L << 17) /* Added 09/21/2007 */
1323 #define FEATURE_SLICEGROUPS              (1L << 18) /* Added 09/21/2007 */
1324 #define FEATURE_STREAMTRACEGROUPS        (1L << 19) /* Added 09/25/2007 not used yet */
1325 #define FEATURE_FEPOLYHEDRON             (1L << 20) /* Added 09/25/2007 */
1326 #define FEATURE_FEPOLYGON                (1L << 21) /* Added 09/25/2007 */
1327 
1328 /*
1329  * KnowFeaturesToInhibit must be updated whenever a new
1330  * item is added above.
1331  */
1332 #define KnownFeaturesToInhibit (FEATURE_3D                       |\
1333                                   FEATURE_3DVOLUME                 |\
1334                                   FEATURE_2D                       |\
1335                                   FEATURE_XY                       |\
1336                                   FEATURE_DATAALTER                |\
1337                                   FEATURE_UNSTRUCTUREDDATA         |\
1338                                   FEATURE_MULTIPLEFRAMES1          |\
1339                                   FEATURE_MULTIPLEZONES1           |\
1340                                   FEATURE_MULTIPLEFRAMES5          |\
1341                                   FEATURE_MULTIPLEZONES5           |\
1342                                   FEATURE_MULTIPLEFRAMES10         |\
1343                                   FEATURE_MULTIPLEZONES10          |\
1344                                   FEATURE_READNONOEMDATA           |\
1345                                   FEATURE_DATALOADERS              |\
1346                                   FEATURE_DATALOADERS_EXCEPTONE    |\
1347                                   FEATURE_LOADONDEMAND             |\
1348                                   FEATURE_MULTIPLEWORKERTHREADS    |\
1349                                   FEATURE_ISOSURFACEGROUPS         |\
1350                                   FEATURE_SLICEGROUPS              |\
1351                                   FEATURE_STREAMTRACEGROUPS        |\
1352                                   FEATURE_FEPOLYHEDRON             |\
1353                                   FEATURE_FEPOLYGON)
1354 
1355 #define VALID_FEATURE_INHIBIT_FLAG(feature) (((feature) & KnownFeaturesToInhibit) != 0)
1356 #define VALID_FEATURE_INHIBIT_MASK(mask) (((mask) & ~KnownFeaturesToInhibit)==0)
1357 
1358 
1359 
1360 /* The following are used by the OEM libs, so they need
1361    to be outside of TECPLOTKERNEL */
1362 typedef    unsigned long  FeatureFlag_t;
1363 typedef    unsigned long  FeatureMask_t;
1364 
1365 /* ENDREMOVEFROMADDON */
1366 
1367 typedef    char             SymbolChar_t[3];
1368 
1369 /**
1370  * Face node offset used for identifying which node of a polytope face is
1371  * desired.
1372  */
1373 typedef LgIndex_t FaceNodeOffset_t;
1374 
1375 /**
1376  * Element face offset used for identifying which face of a polytope element is
1377  * desired.
1378  */
1379 typedef LgIndex_t ElemFaceOffset_t;
1380 
1381 /**
1382  * Face boundary item offset used for identifying which boundary item of a
1383  * polytope face is desired.
1384  */
1385 typedef LgIndex_t FaceBndryItemOffset_t;
1386 
1387 /****************************************************************
1388  *                                                              *
1389  *                     ENUMERATED TYPEDEFS                      *
1390  *                                                              *
1391  ****************************************************************/
1392 
1393 typedef enum
1394 {
1395     PlacementPlaneOrientation_X,
1396     PlacementPlaneOrientation_Y,
1397     PlacementPlaneOrientation_Z,
1398     END_PlacementPlaneOrientation_e,
1399     PlacementPlaneOrientation_Invalid = BadEnumValue
1400 } PlacementPlaneOrientation_e;
1401 
1402 typedef enum
1403 {
1404     StringMode_ASCII,
1405     StringMode_UTF8,
1406     StringMode_Blend,
1407     END_StringMode_e,
1408     StringMode_Invalid = BadEnumValue
1409 
1410 } StringMode_e;
1411 
1412 typedef enum
1413 {
1414     SidebarSizing_MaxOfAll,
1415     SidebarSizing_Dynamic,
1416     END_SidebarSizing_e,
1417     SidebarSizing_Invalid = BadEnumValue
1418 
1419 } SidebarSizing_e;
1420 
1421 typedef enum
1422 {
1423     SidebarLocation_Left,
1424     SidebarLocation_Right,  /* Not allowed at this time */
1425     SidebarLocation_Top,    /* Not allowed at this time */
1426     SidebarLocation_Bottom, /* Not allowed at this time */
1427     END_SidebarLocation_e,
1428     SidebarLocation_Invalid = BadEnumValue
1429 
1430 } SidebarLocation_e;
1431 
1432 typedef enum
1433 {
1434     MenuItem_Option,
1435     MenuItem_Toggle,
1436     MenuItem_Separator,
1437     MenuItem_SubMenu,
1438     END_MenuItem_e,
1439     MenuItem_Invalid = BadEnumValue
1440 } MenuItem_e;
1441 
1442 typedef enum
1443 {
1444     StandardMenu_File,
1445     StandardMenu_Edit,
1446     StandardMenu_View,
1447     StandardMenu_Plot,
1448     StandardMenu_Insert,
1449     StandardMenu_Data,
1450     StandardMenu_Frame,
1451     StandardMenu_Workspace, /* deprecated: use Options instead */
1452     StandardMenu_Tools,
1453     StandardMenu_Help,
1454     StandardMenu_Animate,
1455     StandardMenu_Options,
1456     StandardMenu_Scripting,
1457     END_StandardMenu_e,
1458     StandardMenu_Invalid = BadEnumValue
1459 } StandardMenu_e;
1460 
1461 typedef enum
1462 {
1463     FieldProbeDialogPage_NodalValues,
1464     FieldProbeDialogPage_CellCenteredValues,
1465     FieldProbeDialogPage_ZoneCellInfo,
1466     FieldProbeDialogPage_FaceNeighbors,
1467     END_FieldProbeDialogPage_e,
1468     FieldProbeDialogPage_Invalid = BadEnumValue
1469 } FieldProbeDialogPage_e;
1470 
1471 /* BEGINREMOVEFROMADDON */
1472 
1473 /* used for caches of boolean type */
1474 typedef enum
1475 {
1476     BooleanCache_False, /* Value is cached and is FALSE */
1477     BooleanCache_True,  /* Value is cached and is TRUE */
1478     BooleanCache_Uncached, /* Value is not cached.  Value is unknown. */
1479     END_BooleanCache_e,
1480     BooleanCache_Invalid = BadEnumValue
1481 } BooleanCache_e;
1482 
1483 /*
1484  * For determining pick location along a line
1485  */
1486 typedef enum
1487 {
1488     LinePickLocation_None,
1489     LinePickLocation_StartHandle,
1490     LinePickLocation_MidLineOnHandle,
1491     LinePickLocation_MidLineOffHandles,
1492     LinePickLocation_EndHandle,
1493     END_LinePickLocation_e,
1494     LinePickLocation_Invalid = BadEnumValue
1495 } LinePickLocation_e;
1496 
1497 
1498 /*
1499  * Defines destination for setting up views: hardware (ie, OpenGL) or
1500  * software (ie, internal transformation matrices).
1501  */
1502 typedef enum
1503 {
1504     ViewDest_Hardware,
1505     ViewDest_Software,
1506     END_ViewDest_e,
1507     ViewDest_Invalid = BadEnumValue
1508 } ViewDest_e;
1509 
1510 /* used for identifying the origin of the dataset reader */
1511 typedef enum
1512 {
1513     DataSetReaderOrigin_Native,  /* created by Tecplot   */
1514     DataSetReaderOrigin_Foreign, /* created by an add-on */
1515     END_DataSetReaderOrigin_e,
1516     DataSetReaderOrigin_Invalid = BadEnumValue
1517 } DataSetReaderOrigin_e;
1518 
1519 /* used for identifying the origin of the extended curve fit */
1520 typedef enum
1521 {
1522     ExtendedCurveFitOrigin_Native,  /* created by Tecplot   */
1523     ExtendedCurveFitOrigin_Foreign, /* created by an add-on */
1524     END_ExtendedCurveFitOrigin_e,
1525     ExtendedCurveFitOrigin_Invalid = BadEnumValue
1526 } ExtendedCurveFitOrigin_e;
1527 
1528 typedef enum
1529 {
1530     CollapsedStatus_NotCollapsed,
1531     CollapsedStatus_CollapsedToPoint,
1532     CollapsedStatus_CollapsedToLine,
1533     CollapsedStatus_CollapsedToSegmentedLine,
1534     CollapsedStatus_CollapsedToTriangle,
1535     END_CollapsedStatus_e,
1536     CollapsedStatus_Invalid = BadEnumValue
1537 } CollapsedStatus_e;
1538 /* ENDREMOVEFROMADDON */
1539 
1540 /**
1541  */
1542 typedef enum
1543 {
1544     UndoStateCategory_Frame,
1545     UndoStateCategory_Picked,            /* picked changes, not the pick itself */
1546     UndoStateCategory_Text,
1547     UndoStateCategory_Geom,
1548     UndoStateCategory_View,
1549     UndoStateCategory_WorkspaceView,
1550     UndoStateCategory_Style,            /* style less text and geometries */
1551     UndoStateCategory_SpecificStyle,    /* meaning that specific undo style will be added by the caller */
1552     UndoStateCategory_Data,
1553     UndoStateCategory_DataAndStyle,
1554     UndoStateCategory_StyleIncTextGeom, /* style including text and geometires */
1555     UndoStateCategory_GlobalStyle,      /* style less field, map, text and geometries */
1556     UndoStateCategory_PageAction,
1557     END_UndoStateCategory_e,
1558     UndoStateCategory_Invalid = BadEnumValue
1559 } UndoStateCategory_e;
1560 
1561 
1562 /*
1563  * Used only for Action_PropagateLinking
1564  */
1565 typedef enum
1566 {
1567     LinkType_WithinFrame,
1568     LinkType_BetweenFrames,
1569     END_LinkType_e,
1570     LinkType_Invalid = BadEnumValue
1571 } LinkType_e;
1572 
1573 typedef enum
1574 {
1575     FrameCollection_All,
1576     FrameCollection_Picked,
1577     END_FrameCollection_e,
1578     FrameCollection_Invalid = BadEnumValue
1579 } FrameCollection_e;
1580 
1581 
1582 
1583 typedef enum
1584 {
1585     LegendProcess_DrawLegend,
1586     LegendProcess_EraseLegend,
1587     LegendProcess_GetExtents,
1588     END_LegendProcess_e,
1589     LegendProcess_Invalid = BadEnumValue
1590 } LegendProcess_e;
1591 
1592 
1593 typedef enum
1594 {
1595     RGBLegendOrientation_RGB,
1596     RGBLegendOrientation_GBR,
1597     RGBLegendOrientation_BRG,
1598     RGBLegendOrientation_RBG,
1599     RGBLegendOrientation_GRB,
1600     RGBLegendOrientation_BGR,
1601     END_RGBLegendOrientation_e,
1602     RGBLegendOrientation_Invalid = BadEnumValue
1603 } RGBLegendOrientation_e;
1604 
1605 
1606 
1607 /* BEGINREMOVEFROMADDON */
1608 /* Used by some of the image exporters/animators */
1609 typedef struct
1610 {
1611     Byte_t  R;
1612     Byte_t  G;
1613     Byte_t  B;
1614 } RGBTriple_s;
1615 
1616 typedef RGBTriple_s RGBPalette_t[256];
1617 
1618 /* ENDREMOVEFROMADDON */
1619 
1620 /* BEGINREMOVEFROMADDON */
1621 /* The tag on the following line is so that the Windows
1622    build script can parse all of the current state changes
1623    out of this file, and compare them to the state changes
1624    found in the main.c template file.
1625    Do not change or delete the line below.*/
1626 /*StateChange_e_BeginDef*/
1627 /* ENDREMOVEFROMADDON */
1628 
1629 typedef enum
1630 {
1631     StateChange_VarsAltered,
1632     StateChange_VarsAdded,
1633     StateChange_ZonesDeleted,
1634     StateChange_ZonesAdded,
1635     StateChange_NodeMapsAltered,
1636     StateChange_FrameDeleted,
1637     StateChange_NewTopFrame,               /* deprecated: use NewActiveFrame and/or FrameOrderChange */
1638     StateChange_Style,
1639     StateChange_DataSetReset,
1640     StateChange_NewLayout,
1641     StateChange_CompleteReset,             /* deprecated: no longer broadcast */
1642     StateChange_LineMapAssignment,         /* was StateChange_XYMapAssignment */
1643     StateChange_ContourLevels,
1644     StateChange_ModalDialogLaunch,
1645     StateChange_ModalDialogDismiss,
1646     StateChange_QuitTecplot,
1647     StateChange_ZoneName,
1648     StateChange_VarName,
1649     StateChange_LineMapName,               /* was StateChange_XYMapName */
1650     StateChange_LineMapAddDeleteOrReorder, /* was StateChange_XYMapAddDeleteOrReorder */
1651     StateChange_View,
1652     StateChange_ColorMap,
1653     StateChange_ContourVar,
1654     StateChange_Streamtrace,
1655     StateChange_NewAxisVariables,
1656     StateChange_MouseModeUpdate,
1657     StateChange_PickListCleared,
1658     StateChange_PickListGroupSelect,
1659     StateChange_PickListSingleSelect,
1660     StateChange_PickListStyle,
1661     StateChange_DataSetFileName,
1662     StateChange_UnsuspendInterface,        /* was StateChange_DrawGraphicsOn */
1663     StateChange_SuspendInterface,          /* was StateChange_DrawGraphicsOff */
1664     StateChange_DataSetLockOn,
1665     StateChange_DataSetLockOff,
1666     StateChange_Text,
1667     StateChange_Geom,
1668     StateChange_DataSetTitle,
1669     StateChange_DrawingInterrupted,
1670     StateChange_PrintPreviewLaunch,
1671     StateChange_PrintPreviewDismiss,
1672     StateChange_AuxDataAdded,
1673     StateChange_AuxDataDeleted,
1674     StateChange_AuxDataAltered,
1675     StateChange_VarsDeleted,
1676     StateChange_TecplotIsInitialized,
1677     StateChange_ImageExported,
1678     StateChange_VariableLockOn,
1679     StateChange_VariableLockOff,
1680     StateChange_PageDeleted,
1681     StateChange_NewTopPage,
1682     StateChange_NewActiveFrame,
1683     StateChange_FrameOrderChanged,
1684     END_StateChange_e,
1685     StateChange_Invalid = BadEnumValue,
1686     /* deprecated values */
1687     StateChange_DrawGraphicsOn          = StateChange_UnsuspendInterface,
1688     StateChange_DrawGraphicsOff         = StateChange_SuspendInterface,
1689     StateChange_XYMapAssignment         = StateChange_LineMapAssignment,
1690     StateChange_XYMapName               = StateChange_LineMapName,
1691     StateChange_XYMapAddDeleteOrReorder = StateChange_LineMapAddDeleteOrReorder
1692 } StateChange_e;
1693 
1694 typedef enum
1695 {
1696     StateChangeMode_v75,
1697     StateChangeMode_v80,
1698     StateChangeMode_v100,
1699     StateChangeMode_v113,
1700     END_StateChangeMode_e,
1701     StateChangeMode_Invalid = BadEnumValue
1702 } StateChangeMode_e;
1703 
1704 typedef enum
1705 {
1706     StateChangeCallbackAPI_Classic,
1707     StateChangeCallbackAPI_ChangeOnly,
1708     StateChangeCallbackAPI_ChangePlusClient,
1709     END_StateChangeCallbackAPI_e,
1710     StateChangeCallbackAPI_Invalid = BadEnumValue
1711 } StateChangeCallbackAPI_e;
1712 
1713 typedef enum
1714 {
1715     AppMode_Normal,
1716     AppMode_Demo,
1717     AppMode_OEM,
1718     END_AppMode_e,
1719     AppMode_Invalid = BadEnumValue
1720 } AppMode_e;
1721 
1722 typedef enum
1723 {
1724     ProductFlavor_TecplotFocus,
1725     ProductFlavor_Tecplot360,
1726     ProductFlavor_TecplotRS,
1727     ProductFlavor_TecplotSDK,
1728     END_ProductFlavor_e,
1729     ProductFlavor_Invalid = BadEnumValue,
1730     ProductFlavor_Focus = ProductFlavor_TecplotFocus, /* deprecated */
1731     ProductFlavor_360   = ProductFlavor_Tecplot360,   /* deprecated */
1732     ProductFlavor_RS    = ProductFlavor_TecplotRS,    /* deprecated */
1733     ProductFlavor_SDK   = ProductFlavor_TecplotSDK    /* deprecated */
1734 } ProductFlavor_e;
1735 
1736 typedef enum
1737 {
1738     LayoutPackageObject_Image,
1739     LayoutPackageObject_Layout,
1740     LayoutPackageObject_Data,
1741     END_LayoutPackageObject_e,
1742     LayoutPackageObject_Invalid = BadEnumValue
1743 } LayoutPackageObject_e;
1744 
1745 typedef enum
1746 {
1747     VarLoadMode_ByName,
1748     VarLoadMode_ByPosition,
1749     END_VarLoadMode_e,
1750     VarLoadMode_Invalid = BadEnumValue
1751 } VarLoadMode_e;
1752 
1753 typedef enum
1754 {
1755     ImageSelection_OnePerFrame,
1756     ImageSelection_WorkspaceOnly,
1757     END_ImageSelection_e,
1758     ImageSelection_Invalid = BadEnumValue
1759 } ImageSelection_e;
1760 
1761 typedef enum
1762 {
1763     LibraryType_Foreign,
1764     LibraryType_V7Standard,
1765     LibraryType_V7ActiveX,
1766     END_LibraryType_e,
1767     LibraryType_Invalid = BadEnumValue
1768 } LibraryType_e; /* <help> "Add-on types" */
1769 
1770 
1771 typedef enum
1772 {
1773     AssignOp_Equals,
1774     AssignOp_PlusEquals,
1775     AssignOp_MinusEquals,
1776     AssignOp_TimesEquals,
1777     AssignOp_DivideEquals,
1778     AssignOp_ConvertFromCm,
1779     AssignOp_ConvertFromIn,
1780     AssignOp_ConvertFromPt,
1781     AssignOp_ConvertFromPix,
1782     END_AssignOp_e,
1783     AssignOp_Invalid = BadEnumValue
1784 } AssignOp_e;
1785 
1786 typedef enum
1787 {
1788     Dialog_ColorMap,
1789     Dialog_Equation,
1790     Dialog_MacroViewer,
1791     Dialog_ZoneMapStyle, /* was Dialog_PlotAttributes*/
1792     Dialog_QuickEdit,
1793     Dialog_QuickMacroPanel,
1794     Dialog_ValueBlanking,
1795     Dialog_Probe,          /* used for dialog positioning only */
1796     Dialog_ProbeAt,
1797     Dialog_NewLayout,
1798     Dialog_OpenLayout,
1799     Dialog_Save,
1800     Dialog_SaveAs,
1801     Dialog_LoadData,
1802     Dialog_WriteData,
1803     Dialog_Print,
1804     Dialog_Import,
1805     Dialog_Export,
1806     Dialog_MacroPlay,
1807     Dialog_MacroRecord,
1808     Dialog_AxisEdit,
1809     Dialog_SpatialVars,
1810     Dialog_Reset3DAxes,
1811     Dialog_ThreeDAxisLimits,
1812     Dialog_ThreeDOrientationAxis,
1813     Dialog_Streamtraces,
1814     Dialog_IsoSurfaces,
1815     Dialog_Slices,
1816     Dialog_Contour,
1817     Dialog_VectorLength,
1818     Dialog_VectorVars,
1819     Dialog_VectorArrowheads,
1820     Dialog_VectorReferenceVector,
1821     Dialog_ScatterSizeAndFont,
1822     Dialog_ScatterLegend,
1823     Dialog_ScatterReferenceSymbol,
1824     Dialog_RGBColorVarsAndRange,
1825     Dialog_RGBColorLegend,
1826     Dialog_LineMapLegend,
1827     Dialog_IJKBlanking,
1828     Dialog_DepthBlanking,
1829     Dialog_LightSource,
1830     Dialog_Advanced3DControl,
1831     Dialog_TwoDDrawOrder,
1832     Dialog_PolarDrawingOptions,
1833     Dialog_DataLabels,
1834     Dialog_StyleLinking,
1835     Dialog_Smooth,
1836     Dialog_TransformCoordinates,
1837     Dialog_Rotate2DData,
1838     Dialog_Create1DLine,
1839     Dialog_CreateRectangularZone,
1840     Dialog_CreateCircularZone,
1841     Dialog_DuplicateZone,
1842     Dialog_MirrorZone,
1843     Dialog_CreateZoneFromPolylines,
1844     Dialog_CreateZoneFromValues,
1845     Dialog_DeleteVariables,
1846     Dialog_DeleteZones,
1847     Dialog_ExtractContourLines,
1848     Dialog_ExtractFEBoundary,
1849     Dialog_ExtractIsoSurfaces,
1850     Dialog_ExtractSlices,
1851     Dialog_ExtractSliceFromPlane,
1852     Dialog_ExtractStreamtraces,
1853     Dialog_ExtractSubZone,
1854     Dialog_ExtractDiscretePoints,
1855     Dialog_ExtractPointsFromPolyline,
1856     Dialog_ExtractPointsFromGeometry,
1857     Dialog_LinearInterpolation,
1858     Dialog_InverseDistanceInterpolation,
1859     Dialog_KrigingInterpolation,
1860     Dialog_Triangulate,
1861     Dialog_DataInfo,
1862     Dialog_CurveInfo,
1863     Dialog_DataSpreadsheet,
1864     Dialog_PaperSetup,
1865     Dialog_OrderFrames,
1866     Dialog_RulerGrid,
1867     Dialog_ThreeDViewRotate,
1868     Dialog_ThreeDViewDetails,
1869     Dialog_TranslateMagnify,
1870     Dialog_PrintPreview,
1871     Dialog_ColorPreferences,
1872     Dialog_MiscPreferences,
1873     Dialog_SizePreferences,
1874     Dialog_SaveConfiguration,
1875     Dialog_SaveColorMap,
1876     Dialog_LoadColorMap,
1877     Dialog_HelpAboutTecplot,
1878     Dialog_HelpAboutAddOns,
1879     Dialog_Publish,
1880     Dialog_EditFrame,
1881     Dialog_CopyToClipboard,
1882     Dialog_ThreeDEdge,
1883     Dialog_TimeDetails,
1884     Dialog_Performance,
1885     Dialog_HelpTecplotLicensing,
1886     Dialog_GeomDetails,
1887     Dialog_BasicColorLegend,
1888     Dialog_FourierTransform,
1889     END_Dialog_e,
1890     Dialog_Invalid = BadEnumValue,
1891     /* deprecated values */
1892     Dialog_PlotAttributes = Dialog_ZoneMapStyle
1893 } Dialog_e; /* <help> "Tecplot dialog types" */
1894 
1895 typedef enum
1896 {
1897     AnchorAlignment_TopLeft,
1898     AnchorAlignment_TopCenter,
1899     AnchorAlignment_TopRight,
1900     AnchorAlignment_MiddleLeft,
1901     AnchorAlignment_MiddleCenter,
1902     AnchorAlignment_MiddleRight,
1903     AnchorAlignment_BottomLeft,
1904     AnchorAlignment_BottomCenter,
1905     AnchorAlignment_BottomRight,
1906     END_AnchorAlignment_e,
1907     AnchorAlignment_Invalid = BadEnumValue
1908 } AnchorAlignment_e;
1909 
1910 /* BEGINREMOVEFROMADDON */
1911 typedef enum
1912 {
1913     PositionAtAnchor_Never,
1914     PositionAtAnchor_Once,
1915     PositionAtAnchor_Always,
1916     END_PositionAtAnchor_e,
1917     PositionAtAnchor_Invalid = BadEnumValue
1918 } PositionAtAnchor_e;
1919 /* ENDREMOVEFROMADDON */
1920 
1921 /* BEGINREMOVEFROMADDON */
1922 typedef struct
1923 {
1924     AnchorAlignment_e  AnchorAlignment;
1925     Boolean_t          AnchorHorizontalInside;
1926     Boolean_t          AnchorVerticalInside;
1927     SmInteger_t        MinVisibilityPercentage;
1928     LgIndex_t          IOffset;
1929     LgIndex_t          JOffset;
1930     PositionAtAnchor_e PositionAtAnchor;
1931     Boolean_t          HasBeenPositioned; /* not persistent */
1932 } DialogPosition_s;
1933 /* ENDREMOVEFROMADDON */
1934 
1935 
1936 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
1937 /**
1938  * @deprecated
1939  *     Please use \ref CurveInfoMode_e instead.
1940  */
1941 typedef enum
1942 {
1943     ProcessXYMode_NotUsed1,         /* deprecated: do not use                     */
1944     ProcessXYMode_NotUsed2,         /* deprecated: do not use                     */
1945     ProcessXYMode_NotUsed3,         /* deprecated: do not use                     */
1946     ProcessXYMode_NotUsed4,         /* deprecated: do not use                     */
1947     ProcessXYMode_NotUsed5,         /* deprecated: do not use                     */
1948     ProcessXYMode_NotUsed6,         /* deprecated: do not use                     */
1949     ProcessXYMode_NotUsed7,         /* deprecated: do not use                     */
1950     ProcessXYMode_NotUsed8,         /* deprecated: do not use                     */
1951     ProcessXYMode_NotUsed9,         /* deprecated: do not use                     */
1952     ProcessXYMode_WriteCurveCoef,   /* deprecated: use CurveInfoMode_Coefficients */
1953     ProcessXYMode_WriteCurvePoints, /* deprecated: use CurveInfoMode_RawData      */
1954     END_ProcessXYMode_e,
1955     ProcessXYMode_Invalid = BadEnumValue
1956 } ProcessXYMode_e;
1957 #endif
1958 
1959 typedef enum
1960 {
1961     CurveInfoMode_Coefficients, /* ProcessXYMode_WriteCurveCoef   */
1962     CurveInfoMode_RawData,      /* ProcessXYMode_WriteCurvePoints */
1963     CurveInfoMode_Macro,        /* ProcessXYMode_WriteCurveCoefMacro */
1964     END_CurveInfoMode_e,
1965     CurveInfoMode_Invalid = BadEnumValue
1966 } CurveInfoMode_e;
1967 
1968 /* BEGINREMOVEFROMADDON */
1969 typedef enum
1970 {
1971     ProcessLineMapMode_Draw,
1972     ProcessLineMapMode_GetXYMinMax,
1973     ProcessLineMapMode_GetDataMinMax,
1974     ProcessLineMapMode_GetSinglePick,
1975     ProcessLineMapMode_CheckOnlyForGroupPick,
1976     ProcessLineMapMode_GetGroupPick,
1977     ProcessLineMapMode_GetFirstValidDataPoint,
1978     ProcessLineMapMode_GetNearestPoint,
1979     ProcessLineMapMode_GetDependentValue,
1980     ProcessLineMapMode_GetRSquaredGoodness,
1981     ProcessLineMapMode_DisplayCurveCoef,
1982     ProcessLineMapMode_WriteCurveCoef,
1983     ProcessLineMapMode_WriteCurvePoints,
1984     ProcessLineMapMode_InsertLabels,
1985     ProcessLineMapMode_GetIndependentValue,
1986     ProcessLineMapMode_WriteCurveCoefMacro,
1987     END_ProcessLineMapMode_e,
1988     ProcessLineMapMode_Invalid = BadEnumValue
1989 } ProcessLineMapMode_e;
1990 /* ENDREMOVEFROMADDON */
1991 
1992 typedef enum
1993 {
1994     StyleBase_Factory,
1995     StyleBase_Config,
1996     END_StyleBase_e,
1997     StyleBase_Invalid = BadEnumValue
1998 } StyleBase_e;
1999 
2000 
2001 typedef enum
2002 {
2003     ReadDataOption_NewData,
2004     ReadDataOption_AppendData,
2005     ReadDataOption_ReplaceData,
2006     END_ReadDataOption_e,
2007     ReadDataOption_Invalid = BadEnumValue
2008 } ReadDataOption_e;
2009 
2010 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
2011 /**
2012  * @deprecated
2013  *     Please use \ref LabelType_e instead.
2014  */
2015 typedef enum
2016 {
2017     NodeLabel_Index,         /* deprecated: use LabelType_Index         */
2018     NodeLabel_VarValue,      /* deprecated: use LabelType_VarValue      */
2019     NodeLabel_XAndYVarValue, /* deprecated: use LabelType_XAndYVarValue */
2020     END_NodeLabel_e,
2021     NodeLabel_Invalid = BadEnumValue
2022 } NodeLabel_e;
2023 #endif
2024 
2025 typedef enum
2026 {
2027     LabelType_Index,         /* NodeLabel_Index         */
2028     LabelType_VarValue,      /* NodeLabel_VarValue      */
2029     LabelType_XAndYVarValue, /* NodeLabel_XAndYVarValue */
2030     END_LabelType_e,
2031     LabelType_Invalid = BadEnumValue
2032 } LabelType_e;
2033 
2034 
2035 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
2036 /**
2037  * @deprecated
2038  *     Please use \ref BorderAction_e instead.
2039  */
2040 typedef enum
2041 {
2042     SubBoundaryEditOption_All,      /* deprecated: use BorderAction_AddAll  */
2043     SubBoundaryEditOption_Add,      /* deprecated: use BorderAction_Add     */
2044     SubBoundaryEditOption_Remove,   /* deprecated: use BorderAction_Remove  */
2045     SubBoundaryEditOption_AddOnly,  /* deprecated: use BorderAction_AddOnly */
2046     END_SubBoundaryEditOption_e,
2047     SubBoundaryEditOption_Invalid = BadEnumValue
2048 } SubBoundaryEditOption_e;
2049 #endif
2050 
2051 typedef enum
2052 {
2053     BorderAction_AddAll,   /* SubBoundaryEditOption_All     */
2054     BorderAction_Add,      /* SubBoundaryEditOption_Add     */
2055     BorderAction_Remove,   /* SubBoundaryEditOption_Remove  */
2056     BorderAction_AddOnly,  /* SubBoundaryEditOption_AddOnly */
2057     END_BorderAction_e,
2058     BorderAction_Invalid = BadEnumValue
2059 } BorderAction_e;
2060 
2061 
2062 typedef enum
2063 {
2064     PointerStyle_NotUsed1,
2065     PointerStyle_NotUsed2,
2066     PointerStyle_NotUsed3,
2067     PointerStyle_AllDirections,
2068     PointerStyle_NotUsed4,
2069     PointerStyle_NotUsed5,
2070     PointerStyle_NotUsed6,
2071     PointerStyle_UpperLeftBracket,
2072     PointerStyle_UpperRightBracket,
2073     PointerStyle_LeftBracket,
2074     PointerStyle_LowerLeftBracket,
2075     PointerStyle_LowerRightBracket,
2076     PointerStyle_RightBracket,
2077     PointerStyle_BottomBracket,
2078     PointerStyle_TopBracket,
2079     PointerStyle_UpDown,
2080     PointerStyle_LeftRight,
2081     END_PointerStyle_e,
2082     PointerStyle_Invalid = BadEnumValue
2083 } PointerStyle_e;
2084 
2085 typedef enum
2086 {
2087     CursorStyle_Undefined,
2088     CursorStyle_StandardArrow,
2089     CursorStyle_AdjusterArrow,
2090     CursorStyle_AllDirections,
2091     CursorStyle_Rotate,
2092     CursorStyle_Zoom,
2093     CursorStyle_Locate,
2094     CursorStyle_UpperLeftBracket,
2095     CursorStyle_UpperRightBracket,
2096     CursorStyle_LeftBracket,
2097     CursorStyle_LowerLeftBracket,
2098     CursorStyle_LowerRightBracket,
2099     CursorStyle_RightBracket,
2100     CursorStyle_BottomBracket,
2101     CursorStyle_TopBracket,
2102     CursorStyle_UpDown,
2103     CursorStyle_LeftRight,
2104     CursorStyle_Waiting,
2105     END_CursorStyle_e,
2106     CursorStyle_Invalid = BadEnumValue
2107 } CursorStyle_e;
2108 
2109 
2110 typedef enum
2111 {
2112     PickSubPosition_All,
2113     PickSubPosition_Top,
2114     PickSubPosition_Bottom,
2115     PickSubPosition_Left,
2116     PickSubPosition_Right,
2117     PickSubPosition_TopLeft,
2118     PickSubPosition_TopRight,
2119     PickSubPosition_BottomLeft,
2120     PickSubPosition_BottomRight,
2121     PickSubPosition_BottomAndTop,
2122     PickSubPosition_LeftAndRight,
2123     END_PickSubPosition_e,
2124     PickSubPosition_Invalid = BadEnumValue
2125 } PickSubPosition_e;
2126 
2127 typedef enum
2128 {
2129     TecEngInitReturnCode_Ok,
2130     TecEngInitReturnCode_LicenseIsInvalid,
2131     TecEngInitReturnCode_LicenseExpired,
2132     TecEngInitReturnCode_InternalInitializationError,
2133     END_TecEngInitReturnCode_e,
2134     TecEngInitReturnCode_Invalid = BadEnumValue
2135 } TecEngInitReturnCode_e;
2136 
2137 typedef enum
2138 {
2139     GetValueReturnCode_Ok,
2140     GetValueReturnCode_ResultTypeError,
2141     GetValueReturnCode_SyntaxError,
2142     GetValueReturnCode_ContextError,
2143     GetValueReturnCode_DeprecatedError,
2144     END_GetValueReturnCode_e,
2145     GetValueReturnCode_Invalid = BadEnumValue,
2146     /* deprecated values */
2147     GetValue_Ok              = GetValueReturnCode_Ok,              /* deprecated */
2148     GetValue_ResultTypeError = GetValueReturnCode_ResultTypeError, /* deprecated */
2149     GetValue_SyntaxError     = GetValueReturnCode_SyntaxError,     /* deprecated */
2150     GetValue_ContextError    = GetValueReturnCode_ContextError,    /* deprecated */
2151     GetValue_DeprecatedError = GetValueReturnCode_DeprecatedError, /* deprecated */
2152     GetValue_Invalid         = GetValueReturnCode_Invalid          /* deprecated */
2153 } GetValueReturnCode_e;
2154 
2155 typedef enum
2156 {
2157     SetValueReturnCode_Ok,
2158     SetValueReturnCode_DuplicateValue,
2159     SetValueReturnCode_InvalidCommandOption,
2160     SetValueReturnCode_NoAttachedDatasetError,
2161     SetValueReturnCode_NoAttachedFrameError,
2162     SetValueReturnCode_NotAllowedInConfigError,
2163     SetValueReturnCode_ValueRangeError,
2164     SetValueReturnCode_ValueSyntaxError,
2165     SetValueReturnCode_AssignOpError,
2166     SetValueReturnCode_InvalidVarOrZone,
2167     SetValueReturnCode_InternalMemoryError,
2168     SetValueReturnCode_ContextError1,
2169     SetValueReturnCode_ContextError2,
2170     SetValueReturnCode_OnlyAllowedInConfigError,
2171     SetValueReturnCode_FeatureNotAvailable,
2172     END_SetValueReturnCode_e,
2173     /* BEGINREMOVEFROMADDON */
2174     /* For now this value is only used in Tecplot code.
2175      * the value is here as an option for the future. */
2176     SetValueReturnCode_Ignored = SetValueReturnCode_DuplicateValue,
2177     /* ENDREMOVEFROMADDON */
2178     SetValueReturnCode_Invalid = BadEnumValue,
2179     /* deprecated values */
2180     SetValue_Ok                       = SetValueReturnCode_Ok,                       /* deprecated */
2181     SetValue_DuplicateValue           = SetValueReturnCode_DuplicateValue,           /* deprecated */
2182     SetValue_InvalidCommandOption     = SetValueReturnCode_InvalidCommandOption,     /* deprecated */
2183     SetValue_NoAttachedDatasetError   = SetValueReturnCode_NoAttachedDatasetError,   /* deprecated */
2184     SetValue_NoAttachedFrameError     = SetValueReturnCode_NoAttachedFrameError,     /* deprecated */
2185     SetValue_NotAllowedInConfigError  = SetValueReturnCode_NotAllowedInConfigError,  /* deprecated */
2186     SetValue_ValueRangeError          = SetValueReturnCode_ValueRangeError,          /* deprecated */
2187     SetValue_ValueSyntaxError         = SetValueReturnCode_ValueSyntaxError,         /* deprecated */
2188     SetValue_AssignOpError            = SetValueReturnCode_AssignOpError,            /* deprecated */
2189     SetValue_InvalidVarOrZone         = SetValueReturnCode_InvalidVarOrZone,         /* deprecated */
2190     SetValue_InternalMemoryError      = SetValueReturnCode_InternalMemoryError,      /* deprecated */
2191     SetValue_ContextError1            = SetValueReturnCode_ContextError1,            /* deprecated */
2192     SetValue_ContextError2            = SetValueReturnCode_ContextError2,            /* deprecated */
2193     SetValue_OnlyAllowedInConfigError = SetValueReturnCode_OnlyAllowedInConfigError, /* deprecated */
2194     SetValue_FeatureNotAvailable      = SetValueReturnCode_FeatureNotAvailable,      /* deprecated */
2195     /* BEGINREMOVEFROMADDON */
2196     SetValue_Ignored                  = SetValueReturnCode_Ignored,                  /* deprecated */
2197     /* ENDREMOVEFROMADDON */
2198     SetValue_Invalid                  = SetValueReturnCode_Invalid                   /* deprecated */
2199 } SetValueReturnCode_e;
2200 
2201 
2202 typedef enum
2203 {
2204     ObjectAlign_LeftJustify,
2205     ObjectAlign_RightJustify,
2206     ObjectAlign_Center,
2207     ObjectAlign_Top,
2208     ObjectAlign_Bottom,
2209     END_ObjectAlign_e,
2210     ObjectAlign_Invalid = BadEnumValue
2211 } ObjectAlign_e;
2212 
2213 
2214 /*
2215  * For 3D axis labels only.
2216  */
2217 typedef enum
2218 {
2219     LabelAlignment_ByAngle,
2220     LabelAlignment_AlongAxis,
2221     LabelAlignment_PerpendicularToAxis,
2222     END_LabelAlignment_e,
2223     LabelAlignment_Invalid = BadEnumValue
2224 } LabelAlignment_e; /* <help> Label alignment for 3D axis labels only" */
2225 
2226 /*
2227  * View_SetMagnification added 02/24/03 so all plot types
2228  * can behave the same way "do a 'centered' magnification change".
2229  * Line plots will still accept View_Scale option and zoom towards
2230  * the corner so old macros/addons still work.
2231  */
2232 typedef enum
2233 {
2234     View_Fit,
2235     View_DataFit,
2236     View_AxisFit,
2237     View_Scale,   /* deprecated, Use SetMagnification */
2238     View_Center,
2239     View_Translate,
2240     View_Zoom,
2241     View_Last,
2242     View_Copy,
2243     View_Paste,
2244     View_Push,  /* End of V9 enums */
2245     View_SetMagnification,
2246     View_NiceFit,
2247     View_AxisNiceFit,
2248     View_MakeCurrentViewNice,
2249     View_AxisMakeCurrentValuesNice,
2250     View_AxisResetToEntireCircle,
2251     View_FitSurfaces,
2252     END_View_e,
2253     View_Invalid = BadEnumValue
2254 } View_e;
2255 
2256 
2257 
2258 typedef enum
2259 {
2260     WorkspaceView_FitSelectedFrames,
2261     WorkspaceView_FitAllFrames,
2262     WorkspaceView_FitPaper,
2263     WorkspaceView_Maximize,
2264     WorkspaceView_LastView,
2265     WorkspaceView_Zoom,
2266     WorkspaceView_Translate,
2267     WorkspaceView_UnMaximize,
2268     END_WorkspaceView_e,
2269     WorkspaceView_Invalid = BadEnumValue
2270 } WorkspaceView_e;
2271 
2272 
2273 typedef enum
2274 {
2275     ArrowheadStyle_Plain,
2276     ArrowheadStyle_Filled,
2277     ArrowheadStyle_Hollow,
2278     END_ArrowheadStyle_e,
2279     ArrowheadStyle_Invalid = BadEnumValue,
2280     /* deprecated values */
2281     Arrowhead_Plain   = ArrowheadStyle_Plain,  /* deprecated */
2282     Arrowhead_Filled  = ArrowheadStyle_Filled, /* deprecated */
2283     Arrowhead_Hollow  = ArrowheadStyle_Hollow, /* deprecated */
2284     Arrowhead_Invalid = ArrowheadStyle_Invalid /* deprecated */
2285 } ArrowheadStyle_e;
2286 
2287 
2288 typedef enum
2289 {
2290     ArrowheadAttachment_None,
2291     ArrowheadAttachment_AtBeginning,
2292     ArrowheadAttachment_AtEnd,
2293     ArrowheadAttachment_AtBothEnds,
2294     END_ArrowheadAttachment_e,
2295     ArrowheadAttachment_Invalid = BadEnumValue,
2296     /* deprecated values */
2297     ArrowheadAttach_None        = ArrowheadAttachment_None,        /* deprecated */
2298     ArrowheadAttach_AtBeginning = ArrowheadAttachment_AtBeginning, /* deprecated */
2299     ArrowheadAttach_AtEnd       = ArrowheadAttachment_AtEnd,       /* deprecated */
2300     ArrowheadAttach_AtBothEnds  = ArrowheadAttachment_AtBothEnds,  /* deprecated */
2301     ArrowheadAttach_Invalid     = ArrowheadAttachment_Invalid      /* deprecated */
2302 } ArrowheadAttachment_e;
2303 
2304 typedef enum
2305 {
2306     Clipping_ClipToViewport,
2307     Clipping_ClipToFrame,
2308     END_Clipping_e,
2309     Clipping_Invalid = BadEnumValue
2310 } Clipping_e;
2311 
2312 typedef enum
2313 {
2314     StatusInfo_Hover,
2315     StatusInfo_Identify,
2316     StatusInfo_Instruction,
2317     StatusInfo_Working,
2318     StatusInfo_PercentDone,
2319     END_StatusInfo_e,
2320     StatusInfo_Invalid = BadEnumValue
2321 } StatusInfo_e;
2322 
2323 
2324 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
2325 /**
2326  * @deprecated
2327  *     Please use \ref PlotType_e instead.
2328  */
2329 typedef enum
2330 {
2331     FrameMode_Empty,    /* deprecated: use PlotType_Automatic   */
2332     FrameMode_ThreeD,   /* deprecated: use PlotType_Cartesian3D */
2333     FrameMode_TwoD,     /* deprecated: use PlotType_Cartesian2D */
2334     FrameMode_XY,       /* deprecated: use PlotType_XYLine      */
2335     FrameMode_Sketch,   /* deprecated: use PlotType_Sketch      */
2336     END_FrameMode_e,
2337     FrameMode_Invalid = BadEnumValue,
2338     /* deprecated values */
2339     Frame_Empty   = FrameMode_Empty,    /* deprecated */
2340     Frame_ThreeD  = FrameMode_ThreeD,   /* deprecated */
2341     Frame_TwoD    = FrameMode_TwoD,     /* deprecated */
2342     Frame_XY      = FrameMode_XY,       /* deprecated */
2343     Frame_Sketch  = FrameMode_Sketch,   /* deprecated */
2344     Frame_Invalid = FrameMode_Invalid   /* deprecated */
2345 } FrameMode_e;
2346 #endif
2347 
2348 
2349 typedef enum
2350 {
2351     PlotType_Automatic,   /* Frame_Empty  */
2352     PlotType_Cartesian3D, /* Frame_ThreeD */
2353     PlotType_Cartesian2D, /* Frame_TwoD   */
2354     PlotType_XYLine,      /* Frame_XY     */
2355     PlotType_Sketch,      /* Frame_Sketch */
2356     PlotType_PolarLine,
2357     END_PlotType_e,
2358     PlotType_Invalid = BadEnumValue
2359 } PlotType_e;
2360 
2361 
2362 #define VALID_PLOTTYPE(PlotType) ( VALID_ENUM((PlotType), PlotType_e) && \
2363                                    ((PlotType) != PlotType_Automatic) )
2364 #define VALID_LINEPLOT_PLOTTYPE(PlotType) ( (PlotType) == PlotType_XYLine || \
2365                                             (PlotType) == PlotType_PolarLine )
2366 #define VALID_FIELDPLOT_PLOTTYPE(PlotType) ( (PlotType) == PlotType_Cartesian2D || \
2367                                              (PlotType) == PlotType_Cartesian3D )
2368 #define PLOTTYPE_USES_FIELDZONES(PlotType) VALID_FIELDPLOT_PLOTTYPE((PlotType))
2369 #define PLOTTYPE_USES_LINEMAPS(PlotType) VALID_LINEPLOT_PLOTTYPE((PlotType))
2370 #define VALID_V9_PLOTTYPE(PlotType) ( (PlotType) == PlotType_Sketch || \
2371                                       (PlotType) == PlotType_XYLine || \
2372                                       (PlotType) == PlotType_Cartesian2D || \
2373                                       (PlotType) == PlotType_Cartesian3D )
2374 
2375 
2376 typedef enum
2377 {
2378     ContLineCreateMode_OneZonePerContourLevel,
2379     ContLineCreateMode_OneZonePerIndependentPolyline,
2380     END_ContLineCreateMode_e,
2381     ContLineCreateMode_Invalid = BadEnumValue
2382 } ContLineCreateMode_e;
2383 
2384 
2385 typedef enum
2386 {
2387     PickObjects_None,
2388     PickObjects_Frame,
2389     PickObjects_Axis,
2390     PickObjects_ThreeDOrientationAxis,
2391     PickObjects_Geom,
2392     PickObjects_Text,
2393     PickObjects_ContourLegend,
2394     PickObjects_ContourLabel,
2395     PickObjects_ScatterLegend,
2396     PickObjects_LineLegend,
2397     PickObjects_ReferenceVector,
2398     PickObjects_ReferenceScatterSymbol,
2399     PickObjects_StreamtracePosition,
2400     PickObjects_StreamtraceTermLine,
2401     PickObjects_Paper,
2402     PickObjects_Zone,
2403     PickObjects_XYMapping, /* deprecated: use PickObject_LineMapping */
2404     PickObjects_StreamtraceCOB,
2405     PickObjects_SliceCOB,
2406     PickObjects_IsoSurfaceCOB,
2407     PickObjects_RGBLegend,
2408     PickObjects_LineMapping,
2409     PickObjects_BasicColorLegend,
2410     END_PickObjects_e,
2411     PickObjects_Invalid = BadEnumValue,
2412     /* deprecated values */
2413     PickObject_None                   = PickObjects_None,                   /* deprecated */
2414     PickObject_Frame                  = PickObjects_Frame,                  /* deprecated */
2415     PickObject_Axis                   = PickObjects_Axis,                   /* deprecated */
2416     PickObject_3DOrientationAxis      = PickObjects_ThreeDOrientationAxis,  /* deprecated */
2417     PickObject_Geom                   = PickObjects_Geom,                   /* deprecated */
2418     PickObject_Text                   = PickObjects_Text,                   /* deprecated */
2419     PickObject_ContourLegend          = PickObjects_ContourLegend,          /* deprecated */
2420     PickObject_ContourLabel           = PickObjects_ContourLabel,           /* deprecated */
2421     PickObject_ScatterLegend          = PickObjects_ScatterLegend,          /* deprecated */
2422     PickObject_LineLegend             = PickObjects_LineLegend,             /* deprecated */
2423     PickObject_XYLegend               = PickObjects_LineLegend,             /* deprecated */
2424     PickObject_ReferenceVector        = PickObjects_ReferenceVector,        /* deprecated */
2425     PickObject_ReferenceScatterSymbol = PickObjects_ReferenceScatterSymbol, /* deprecated */
2426     PickObject_StreamtracePosition    = PickObjects_StreamtracePosition,    /* deprecated */
2427     PickObject_StreamtraceTermLine    = PickObjects_StreamtraceTermLine,    /* deprecated */
2428     PickObject_Paper                  = PickObjects_Paper,                  /* deprecated */
2429     PickObject_Zone                   = PickObjects_Zone,                   /* deprecated */
2430     PickObject_XYMapping              = PickObjects_XYMapping,              /* deprecated */
2431     PickObject_StreamtraceCOB         = PickObjects_StreamtraceCOB,         /* deprecated */
2432     PickObject_SliceCOB               = PickObjects_SliceCOB,               /* deprecated */
2433     PickObject_IsoSurfaceCOB          = PickObjects_IsoSurfaceCOB,          /* deprecated */
2434     PickObject_RGBLegend              = PickObjects_RGBLegend,              /* deprecated */
2435     PickObject_LineMapping            = PickObjects_LineMapping,            /* deprecated */
2436     PickObject_Invalid                = PickObjects_Invalid                 /* deprecated */
2437 } PickObjects_e;
2438 
2439 
2440 /* BEGINREMOVEFROMADDON */
2441 typedef enum
2442 {
2443     SingleEditState_NotEditing,
2444     SingleEditState_ActivelyEditing,
2445     SingleEditState_WasEditing,
2446     END_SingleEditState_e,
2447     EditingInvalid = BadEnumValue
2448 } SingleEditState_e;
2449 
2450 
2451 typedef enum
2452 {
2453     AxisSubObject_GridArea,
2454     AxisSubObject_AxisLine,
2455     AxisSubObject_Title,
2456     END_AxisSubObject_e,
2457     AxisSubObject_Invalid = BadEnumValue
2458 } AxisSubObject_e;
2459 
2460 typedef enum
2461 {
2462     AxisSubPosition_GridMinBorder,
2463     AxisSubPosition_GridMaxBorder,
2464     AxisSubPosition_MainAxisLine,
2465     AxisSubPosition_BackAxisLine,
2466     AxisSubPosition_PerpAxisLine,
2467     AxisSubPosition_PerpBackAxisLine,
2468     END_AxisSubPosition_e,
2469     AxisSubPosition_Invalid = BadEnumValue,
2470     AxisSubPosition_2DStart = AxisSubPosition_GridMinBorder,
2471     AxisSubPosition_2DEnd = AxisSubPosition_MainAxisLine,
2472     AxisSubPosition_PolarStart = AxisSubPosition_GridMinBorder,
2473     AxisSubPosition_PolarEnd = AxisSubPosition_PerpBackAxisLine
2474 } AxisSubPosition_e;
2475 /* ENDREMOVEFROMADDON */
2476 
2477 /*
2478  * NOTE: The _NoOp value is not at the top so this
2479  *       enumeration aligns with the old AltMouseButtonMode_e
2480  *       enumeration.
2481  */
2482 typedef enum
2483 {
2484     MouseButtonClick_Redraw,
2485     MouseButtonClick_RevertToSelect,
2486     MouseButtonClick_NoOp,
2487     END_MouseButtonClick_e,
2488     MouseButtonClick_Invalid = BadEnumValue
2489 } MouseButtonClick_e;
2490 
2491 
2492 typedef enum
2493 {
2494     MouseButtonDrag_NoOp,
2495     MouseButtonDrag_ZoomPaper,
2496     MouseButtonDrag_TranslatePaper,
2497     MouseButtonDrag_ZoomData,
2498     MouseButtonDrag_TranslateData,
2499     MouseButtonDrag_RlrBallRtatData,
2500     MouseButtonDrag_SpherZRtatData,     /* Was SpherRtatData*/
2501     MouseButtonDrag_XRotateData,
2502     MouseButtonDrag_YRotateData,
2503     MouseButtonDrag_ZRotateData,
2504     MouseButtonDrag_TwistRotateData,
2505     MouseButtonDrag_ZoomViewer,
2506     MouseButtonDrag_TranslateViewer,
2507     MouseButtonDrag_RlrBallRtatVwr,
2508     MouseButtonDrag_SpherZRotateVwr,    /* Was SpherRotateVwr*/
2509     MouseButtonDrag_XRotateViewer,
2510     MouseButtonDrag_YRotateViewer,
2511     MouseButtonDrag_ZRotateViewer,
2512     MouseButtonDrag_TwistRotateViewer,
2513     MouseButtonDrag_SpherXRtatData,
2514     MouseButtonDrag_SpherYRtatData,
2515     MouseButtonDrag_SpherXRotateVwr,
2516     MouseButtonDrag_SpherYRotateVwr,
2517     END_MouseButtonDrag_e,
2518     MouseButtonDrag_Invalid = BadEnumValue,
2519     /* deprecated values */
2520     MouseButtonDrag_SpherRtatData  = MouseButtonDrag_SpherZRtatData,
2521     MouseButtonDrag_SpherRotateVwr = MouseButtonDrag_SpherZRotateVwr
2522 } MouseButtonDrag_e;
2523 
2524 
2525 /* BEGINREMOVEFROMADDON */
2526 typedef struct
2527 {
2528     MouseButtonClick_e ButtonClick;
2529     MouseButtonDrag_e  SimpleDrag;
2530     MouseButtonDrag_e  ControlledDrag;
2531     MouseButtonDrag_e  AltedDrag;
2532     MouseButtonDrag_e  ShiftedDrag;
2533     MouseButtonDrag_e  ControlAltedDrag;
2534     MouseButtonDrag_e  ControlShiftedDrag;
2535     MouseButtonDrag_e  AltShiftedDrag;
2536     MouseButtonDrag_e  ControlAltShiftedDrag;
2537 } MouseButtonAction_s;
2538 
2539 
2540 typedef struct
2541 {
2542     MouseButtonAction_s MiddleButton;
2543     MouseButtonAction_s RightButton;
2544 } MouseActions_s;
2545 /* ENDREMOVEFROMADDON */
2546 
2547 
2548 typedef enum  /* deprecated */
2549 {
2550     AltMouseButtonMode_Regen,
2551     AltMouseButtonMode_RevertToSelect,
2552     END_AltMouseButtonMode_e,
2553     AltMouseButtonMode_Invalid = BadEnumValue
2554 } AltMouseButtonMode_e;
2555 
2556 
2557 typedef enum
2558 {
2559     MouseButtonMode_NoMode,
2560     MouseButtonMode_Select,
2561     MouseButtonMode_Adjust,
2562     MouseButtonMode_Zoom,
2563     MouseButtonMode_Translate,
2564     MouseButtonMode_Probe,
2565     MouseButtonMode_Text,
2566     MouseButtonMode_GeomPolyline,
2567     MouseButtonMode_GeomSquare,
2568     MouseButtonMode_GeomCircle,
2569     MouseButtonMode_GeomRectangle,
2570     MouseButtonMode_GeomEllipse,
2571     MouseButtonMode_GeomSpline,
2572     MouseButtonMode_CreateFrame,
2573     MouseButtonMode_RotateSphericalZ,   /* Was MouseButtonMode_RotateSpherical */
2574     MouseButtonMode_RotateRollerBall,
2575     MouseButtonMode_RotateTwist,
2576     MouseButtonMode_RotateXAxis,
2577     MouseButtonMode_RotateYAxis,
2578     MouseButtonMode_RotateZAxis,
2579     MouseButtonMode_ContourLabel,
2580     MouseButtonMode_ContourAdd,
2581     MouseButtonMode_ContourDelete,
2582     MouseButtonMode_StreamPoints,
2583     MouseButtonMode_StreamEndLine,
2584     MouseButtonMode_ExtractPoints,
2585     MouseButtonMode_ExtractLine,
2586     MouseButtonMode_CreateRectangularZone,
2587     MouseButtonMode_CreateCircularZone,
2588     MouseButtonMode_Slice,
2589     MouseButtonMode_LightSource,
2590     MouseButtonMode_User1,
2591     MouseButtonMode_User2,
2592     MouseButtonMode_User3,
2593     MouseButtonMode_User4,
2594     MouseButtonMode_RotateSphericalX,
2595     MouseButtonMode_RotateSphericalY,
2596     MouseButtonMode_AdvancedAdjust,
2597     END_MouseButtonMode_e,
2598     MouseButtonMode_Invalid = BadEnumValue,
2599     /* deprecated values */
2600     MouseButtonMode_RotateSpherical = MouseButtonMode_RotateSphericalZ,
2601     Mouse_NoMode                = MouseButtonMode_NoMode,                /* deprecated */
2602     Mouse_Select                = MouseButtonMode_Select,                /* deprecated */
2603     Mouse_Adjust                = MouseButtonMode_Adjust,                /* deprecated */
2604     Mouse_Zoom                  = MouseButtonMode_Zoom,                  /* deprecated */
2605     Mouse_Translate             = MouseButtonMode_Translate,             /* deprecated */
2606     Mouse_Probe                 = MouseButtonMode_Probe,                 /* deprecated */
2607     Mouse_Text                  = MouseButtonMode_Text,                  /* deprecated */
2608     Mouse_GeomPolyline          = MouseButtonMode_GeomPolyline,          /* deprecated */
2609     Mouse_GeomSquare            = MouseButtonMode_GeomSquare,            /* deprecated */
2610     Mouse_GeomCircle            = MouseButtonMode_GeomCircle,            /* deprecated */
2611     Mouse_GeomRectangle         = MouseButtonMode_GeomRectangle,         /* deprecated */
2612     Mouse_GeomEllipse           = MouseButtonMode_GeomEllipse,           /* deprecated */
2613     Mouse_GeomSpline            = MouseButtonMode_GeomSpline,            /* deprecated */
2614     Mouse_CreateFrame           = MouseButtonMode_CreateFrame,           /* deprecated */
2615     Mouse_RotateSpherical       = MouseButtonMode_RotateSphericalZ,      /* deprecated */
2616     Mouse_RotateRollerBall      = MouseButtonMode_RotateRollerBall,      /* deprecated */
2617     Mouse_RotateTwist           = MouseButtonMode_RotateTwist,           /* deprecated */
2618     Mouse_RotateXAxis           = MouseButtonMode_RotateXAxis,           /* deprecated */
2619     Mouse_RotateYAxis           = MouseButtonMode_RotateYAxis,           /* deprecated */
2620     Mouse_RotateZAxis           = MouseButtonMode_RotateZAxis,           /* deprecated */
2621     Mouse_ContourLabel          = MouseButtonMode_ContourLabel,          /* deprecated */
2622     Mouse_ContourAdd            = MouseButtonMode_ContourAdd,            /* deprecated */
2623     Mouse_ContourDelete         = MouseButtonMode_ContourDelete,         /* deprecated */
2624     Mouse_StreamPoints          = MouseButtonMode_StreamPoints,          /* deprecated */
2625     Mouse_StreamEndLine         = MouseButtonMode_StreamEndLine,         /* deprecated */
2626     Mouse_ExtractPoints         = MouseButtonMode_ExtractPoints,         /* deprecated */
2627     Mouse_ExtractLine           = MouseButtonMode_ExtractLine,           /* deprecated */
2628     Mouse_CreateRectangularZone = MouseButtonMode_CreateRectangularZone, /* deprecated */
2629     Mouse_CreateCircularZone    = MouseButtonMode_CreateCircularZone,    /* deprecated */
2630     Mouse_Slice                 = MouseButtonMode_Slice,                 /* deprecated */
2631     Mouse_User1                 = MouseButtonMode_User1,                 /* deprecated */
2632     Mouse_User2                 = MouseButtonMode_User2,                 /* deprecated */
2633     Mouse_User3                 = MouseButtonMode_User3,                 /* deprecated */
2634     Mouse_User4                 = MouseButtonMode_User4,                 /* deprecated */
2635     Mouse_Invalid               = MouseButtonMode_Invalid                /* deprecated */
2636 } MouseButtonMode_e;
2637 
2638 
2639 typedef enum
2640 {
2641     DetailsButtonState_QuickEdit,
2642     DetailsButtonState_ObjectDetails,
2643     DetailsButtonState_ToolDetails,
2644     END_DetailsButtonState_e,
2645     DetailsButtonState_Invalid = BadEnumValue
2646 } DetailsButtonState_e;
2647 
2648 
2649 typedef enum
2650 {
2651     Event_ButtonPress,
2652     Event_ButtonRelease,
2653     Event_ButtonDoublePress,
2654     Event_Motion,
2655     Event_Drag,
2656     Event_KeyPress,
2657     END_Event_e,
2658     Event_Invalid = BadEnumValue
2659 } Event_e;
2660 
2661 
2662 typedef enum
2663 {
2664     ObjectDrawMode_DrawFirst,
2665     ObjectDrawMode_Move,
2666     ObjectDrawMode_Remove,
2667     ObjectDrawMode_Place,
2668     END_ObjectDrawMode_e,
2669     ObjectDrawMode_Invalid = BadEnumValue
2670 } ObjectDrawMode_e;
2671 
2672 
2673 typedef enum
2674 {
2675     ThreeDViewChangeDrawLevel_Full,
2676     ThreeDViewChangeDrawLevel_Trace,
2677     END_ThreeDViewChangeDrawLevel_e,
2678     ThreeDViewChangeDrawLevel_Invalid = BadEnumValue
2679 } ThreeDViewChangeDrawLevel_e; /* <help> "ThreeDViewChangeDrawLevel is deprecated. Use PlotApproximateMode.\n"*/
2680 
2681 typedef enum
2682 {
2683     NonCurrentFrameRedrawLevel_Full,
2684     NonCurrentFrameRedrawLevel_Trace,
2685     END_NonCurrentFrameRedrawLevel_e,
2686     NonCurrentFrameRedrawLevel_Invalid = BadEnumValue
2687 } NonCurrentFrameRedrawLevel_e; /* <help> "NonCurrentFrameRedrawLevel is deprecated. Use PlotApproximateMode.\n"*/
2688 
2689 
2690 /**
2691  * Enumerates the redraw reasons and is passed as an argument to registered
2692  * draw event callbacks.
2693  *
2694  *   - RedrawReason_UserReqRedrawActiveFrame:\n
2695  *     The full draw event is in response to the "redraw" action function.
2696  *
2697  *   - RedrawReason_UserReqTraceActiveFrame:\n
2698  *     The approximate draw event is in response to the "redraw" action function.
2699  *
2700  *   - RedrawReason_UserReqRedrawAllFrames:\n
2701  *     The full draw event is in response to the "redraw all" action function.
2702  *
2703  *   - RedrawReason_UserReqTraceAllFrames:\n
2704  *     The approximate draw event is in response to the "redraw all" action function.
2705  *
2706  *   - RedrawReason_InteractiveDataViewChange:\n
2707  *     The draw event is in response to an interactive data view change such as
2708  *     rotate, translate, zoom, etc.
2709  *
2710  *   - RedrawReason_InteractivePaperViewChange:\n
2711  *     The draw event is in response to an interactive paper translate view or
2712  *     paper zoom view change.
2713  *
2714  *   - RedrawReason_InteractiveStyleChange:\n
2715  *     The draw event is in response to an interactive style changes such as
2716  *     dragging a contour level or a slice.
2717  *
2718  *   - RedrawReason_Animation:\n
2719  *     The draw event is in response to an animation.
2720  *
2721  *   - RedrawReason_AutoRedraw:\n
2722  *     The draw event is in response to an auto redraw.
2723  *
2724  *   - RedrawReason_RedrawForcedViewUpdate:\n
2725  *     The draw event is in response to forced view update when auto redraw is
2726  *     off such as a view fit or movement of the frame.
2727  *
2728  *   - RedrawReason_RedrawForcedStyleUpdate:\n
2729  *     The draw event is in response to forced view update when auto redraw is
2730  *     off such as deleting a contour level.
2731  *
2732  *   - RedrawReason_PreFullRedrawTraceOfAllFrames:\n
2733  *     The draw event is an approximate redraw done prior to a full redraw.
2734  *
2735  * @sa TecUtilEventAddPreDrawCallback(), TecUtilEventAddPostDrawCallback()
2736  */
2737 typedef enum
2738 {
2739     RedrawReason_UserReqRedrawActiveFrame,
2740     RedrawReason_UserReqTraceActiveFrame,
2741     RedrawReason_UserReqRedrawAllFrames,
2742     RedrawReason_UserReqTraceAllFrames,
2743     RedrawReason_InteractiveDataViewChange,
2744     RedrawReason_InteractivePaperViewChange,
2745     RedrawReason_InteractiveStyleChange,
2746     RedrawReason_Animation,
2747     RedrawReason_AutoRedraw,
2748     RedrawReason_RedrawForcedViewUpdate,
2749     RedrawReason_RedrawForcedStyleUpdate,
2750     RedrawReason_PreFullRedrawTraceOfAllFrames,
2751     END_RedrawReason_e,
2752     RedrawReason_Invalid = BadEnumValue,
2753     RedrawReason_UserReqRedrawCurrentFrame = RedrawReason_UserReqRedrawActiveFrame,
2754     RedrawReason_UserReqTraceCurrentFrame = RedrawReason_UserReqTraceActiveFrame
2755 } RedrawReason_e;
2756 
2757 typedef enum
2758 {
2759     RotationMode_XYZAxis,
2760     RotationMode_Spherical,
2761     RotationMode_RollerBall,
2762     END_RotationMode_e,
2763     RotationMode_Invalid = BadEnumValue
2764 } RotationMode_e;
2765 
2766 typedef enum
2767 {
2768     RotateAxis_X,
2769     RotateAxis_Y,
2770     RotateAxis_Z,
2771     RotateAxis_Psi,
2772     RotateAxis_Theta,
2773     RotateAxis_Alpha,
2774     RotateAxis_Twist,
2775     RotateAxis_VertRollerBall,
2776     RotateAxis_HorzRollerBall,
2777     RotateAxis_AboutVector,
2778     /* BEGINREMOVEFROMADDON */
2779     RotateAxis_DontCare, /* internal use only */
2780     /* ENDREMOVEFROMADDON */
2781     END_RotateAxis_e,
2782     RotateAxis_Invalid = BadEnumValue
2783 } RotateAxis_e;
2784 
2785 typedef enum
2786 {
2787     RotateOriginLocation_DefinedOrigin,
2788     RotateOriginLocation_Viewer,
2789     END_RotateOriginLocation_e,
2790     RotateOriginLocation_Invalid = BadEnumValue
2791 } RotateOriginLocation_e;
2792 
2793 /*
2794  * NOTE: This is only used with the $!Reset3DOrigin command.
2795  */
2796 typedef enum
2797 {
2798     OriginResetLocation_DataCenter,
2799     OriginResetLocation_ViewCenter,
2800     END_OriginResetLocation_e,
2801     OriginResetLocation_Invalid = BadEnumValue
2802 } OriginResetLocation_e;
2803 
2804 /*
2805  * NOTE: This is only used with the $!CreateSliceZoneFromPlane command.
2806  */
2807 typedef enum
2808 {
2809     SliceSource_SurfaceZones,
2810     SliceSource_VolumeZones,
2811     SliceSource_SurfacesOfVolumeZones,
2812     SliceSource_LinearZones,
2813     END_SliceSource_e,
2814     SliceSource_Invalid = BadEnumValue
2815 } SliceSource_e;
2816 
2817 
2818 
2819 
2820 
2821 typedef enum
2822 {
2823     Input_SmInteger,
2824     Input_Short,
2825     Input_Integer,
2826     Input_Float,
2827     Input_Double,
2828     Input_Radians,
2829     Input_TimeDateDouble,
2830     Input_ElapsedTimeDouble,
2831     END_Input_e,
2832     Input_Invalid = BadEnumValue
2833 } Input_e;
2834 
2835 
2836 
2837 typedef enum
2838 {
2839     PtSelection_All,
2840     PtSelection_NearestN,
2841     PtSelection_OctantN,
2842     END_PtSelection_e,
2843     PtSelection_Invalid = BadEnumValue
2844 } PtSelection_e;
2845 
2846 
2847 
2848 typedef enum
2849 {
2850     Drift_None,
2851     Drift_Linear,
2852     Drift_Quad,
2853     END_Drift_e,
2854     Drift_Invalid = BadEnumValue
2855 } Drift_e;
2856 
2857 
2858 
2859 /* atpoint is simple boundary condition.
2860    atpointb2 is better boundary condition.
2861 */
2862 typedef enum
2863 {
2864     DerivPos_atpoint,
2865     DerivPos_atpointb2,
2866     DerivPos_kphalf,
2867     DerivPos_jphalf,
2868     DerivPos_iphalf,
2869     END_DerivPos_e,
2870     DerivPos_Invalid = BadEnumValue
2871 } DerivPos_e; /*<help>"atpoint is the simple boundary condition\n"*/
2872 /*<help>"atpointb2 is a better boundary condition"*/
2873 
2874 
2875 typedef enum
2876 {
2877     LinearInterpMode_DontChange,
2878     LinearInterpMode_SetToConst,
2879     END_LinearInterpMode_e,
2880     LinearInterpMode_Invalid = BadEnumValue
2881 } LinearInterpMode_e;
2882 
2883 typedef enum
2884 {
2885     VolumeCellInterpolationMode_PiecewiseLinear,
2886     VolumeCellInterpolationMode_TriLinear,
2887     END_VolumeCellInterpolationMode_e,
2888     VolumeCellInterpolationMode_Invalid = BadEnumValue
2889 } VolumeCellInterpolationMode_e;
2890 
2891 typedef enum
2892 {
2893     PolyCellInterpolationMode_UseCCValue,
2894     PolyCellInterpolationMode_AverageNodes,
2895     END_PolyCellInterpolationMode_e,
2896     PolyCellInterpolationMode_Invalid = BadEnumValue
2897 } PolyCellInterpolationMode_e;
2898 
2899 typedef enum
2900 {
2901     ConstraintOp2Mode_UseVar,
2902     ConstraintOp2Mode_UseConstant,
2903     END_ConstraintOp2Mode_e,
2904     ConstraintOp2Mode_Invalid = BadEnumValue
2905 } ConstraintOp2Mode_e;
2906 
2907 /**
2908  * Controls how data is loaded for interactive probe events.
2909  * DataProbeVarLoadMode_IncrementallyLoadAll will load as much data as possible within
2910  * load-on-demand time/space thresholds. DataProbeVarLoadMode_LoadRequiredVarsOnly will
2911  * load only the data necessary to complete the probe request.
2912  * DataProbeVarLoadMode_IncrementallyLoadAll is the default.
2913  */
2914 typedef enum
2915 {
2916     DataProbeVarLoadMode_IncrementallyLoadAll,
2917     DataProbeVarLoadMode_LoadRequiredVarsOnly,
2918     END_DataProbeVarLoadMode_e,
2919     DataProbeVarLoadMode_Invalid = BadEnumValue
2920 } DataProbeVarLoadMode_e;
2921 
2922 typedef enum
2923 {
2924     ValueBlankCellMode_AllCorners,
2925     ValueBlankCellMode_AnyCorner,
2926     ValueBlankCellMode_PrimaryValue,
2927     END_ValueBlankCellMode_e,
2928     ValueBlankCellMode_Invalid = BadEnumValue,
2929     /* deprecated values */
2930     ValueBlankCellMode_PrimaryCorner = ValueBlankCellMode_PrimaryValue
2931 } ValueBlankCellMode_e;
2932 
2933 
2934 /*
2935  * deprecated: ValueBlankMode_e enumeration will not be supported after
2936  *             version 8. This API was retained for add-on developers
2937  *             using the TecUtilStyleSetLowLevel API.
2938  */
2939 typedef enum
2940 {
2941     ValueBlankMode_AndRule,
2942     ValueBlankMode_OrRule,
2943     ValueBlankMode_CornerRule,
2944     END_ValueBlankMode_e,
2945     ValueBlankMode_Invalid = BadEnumValue
2946 } ValueBlankMode_e; /*<help>"DEPRECATED: ValueBlankMode_e will not be supported after version 8"*/
2947 
2948 
2949 typedef enum
2950 {
2951     CellBlankedCond_NotBlanked,
2952     CellBlankedCond_PartiallyBlanked,
2953     CellBlankedCond_EntirelyBlanked,
2954     CellBlankedCond_Uncertain,
2955     END_CellBlankedCond_e,
2956     CellBlankedCond_Invalid = BadEnumValue
2957 } CellBlankedCond_e;
2958 
2959 
2960 typedef enum
2961 {
2962     RelOp_LessThanOrEqual,
2963     RelOp_GreaterThanOrEqual,
2964     RelOp_LessThan,
2965     RelOp_GreaterThan,
2966     RelOp_EqualTo,
2967     RelOp_NotEqualTo,
2968     END_RelOp_e,
2969     RelOp_Invalid = BadEnumValue
2970 } RelOp_e;
2971 
2972 
2973 
2974 typedef enum
2975 {
2976     IJKBlankMode_BlankInterior,
2977     IJKBlankMode_BlankExterior,
2978     END_IJKBlankMode_e,
2979     IJKBlankMode_Invalid = BadEnumValue
2980 } IJKBlankMode_e;
2981 
2982 
2983 typedef enum
2984 {
2985     PlotApproximationMode_Automatic,
2986     PlotApproximationMode_NonCurrentAlwaysApproximated,
2987     PlotApproximationMode_AllFramesAlwaysApproximated,
2988     END_PlotApproximationMode_e,
2989     PlotApproximationMode_Invalid = BadEnumValue
2990 } PlotApproximationMode_e;
2991 
2992 typedef enum
2993 {
2994     SphereScatterRenderQuality_Low,
2995     SphereScatterRenderQuality_Medium,
2996     SphereScatterRenderQuality_High,
2997     END_SphereScatterRenderQuality_e,
2998     SphereScatterRenderQuality_Invalid = BadEnumValue
2999 } SphereScatterRenderQuality_e;
3000 
3001 /*
3002  * NOTE: FillPat_e is deprecated.  It must be retained to maintain
3003  *       backward compatibility with the TecUtil layer however.
3004  *       This has been replaced by Translucency_e.
3005  */
3006 typedef enum
3007 {
3008     Pattern_Solid,
3009     Pattern_LowTranslucent,
3010     Pattern_MedTranslucent,
3011     Pattern_HighTranslucent,
3012     END_FillPat_e,
3013     Pattern_Invalid = BadEnumValue
3014 } FillPat_e; /*<help>"DEPRECATED: Replaced by Translucency_e"*/
3015 
3016 
3017 typedef enum
3018 {
3019     Translucency_Solid,
3020     Translucency_Low,
3021     Translucency_Medium,
3022     Translucency_High,
3023     END_Translucency_e,
3024     Translucency_Invalid = BadEnumValue
3025 } Translucency_e;
3026 
3027 
3028 
3029 typedef enum
3030 {
3031     SunRaster_OldFormat,
3032     SunRaster_Standard,
3033     SunRaster_ByteEncoded,
3034     END_SunRaster_e,
3035     SunRaster_Invalid = BadEnumValue
3036 } SunRaster_e;
3037 
3038 
3039 typedef enum
3040 {
3041     BoundaryCondition_Fixed,
3042     BoundaryCondition_ZeroGradient,
3043     BoundaryCondition_Zero2nd,
3044     END_BoundaryCondition_e,
3045     BoundaryCondition_Invalid = BadEnumValue
3046 } BoundaryCondition_e;
3047 
3048 
3049 
3050 /* Note:
3051  *   In 2D: AxisMode_Independent and AxisMode_XYDependent are used;
3052  *   in 3D: AxisMode_Independent, AxisMode_XYZDependent, and AxisMode_XYDependent are used.
3053  */
3054 typedef enum
3055 {
3056     AxisMode_Independent,
3057     AxisMode_XYZDependent,
3058     AxisMode_XYDependent,
3059     END_AxisMode_e,
3060     AxisMode_Invalid = BadEnumValue
3061 } AxisMode_e;/*<help>"In 2D AxisMode_Independent and AxisMode_XYDependent are used\n"*/
3062 /*<help>"In 3D AxisMode_Independent, "*/
3063 /*<help>"AxisMode_XYZDependent, and AxisMode_XYDependent are used."*/
3064 
3065 typedef enum
3066 {
3067     Quick_LineColor,
3068     Quick_FillColor,
3069     Quick_TextColor,
3070     END_QuickColorMode_e,
3071     Quick_Invalid = BadEnumValue
3072 } QuickColorMode_e;
3073 
3074 
3075 typedef enum
3076 {
3077     FillMode_None,
3078     FillMode_UseSpecificColor,
3079     FillMode_UseLineColor,
3080     FillMode_UseBackgroundColor,
3081     END_FillMode_e,
3082     FillMode_Invalid = BadEnumValue
3083 } FillMode_e;
3084 
3085 
3086 typedef enum
3087 {
3088     LinePattern_Solid,
3089     LinePattern_Dashed,
3090     LinePattern_DashDot,
3091     LinePattern_Dotted,
3092     LinePattern_LongDash,
3093     LinePattern_DashDotDot,
3094     END_LinePattern_e,
3095     LinePattern_Invalid = BadEnumValue
3096 } LinePattern_e;
3097 
3098 
3099 
3100 typedef enum
3101 {
3102     Join_Miter,
3103     Join_Round,
3104     Join_Bevel,
3105     END_LineJoin_e,
3106     Join_Invalid = BadEnumValue
3107 } LineJoin_e;
3108 
3109 
3110 
3111 typedef enum
3112 {
3113     Cap_Flat,
3114     Cap_Round,
3115     Cap_Square,
3116     END_LineCap_e,
3117     Cap_Invalid = BadEnumValue
3118 } LineCap_e;
3119 
3120 
3121 
3122 typedef enum
3123 {
3124     GeomForm_LineSegs,
3125     GeomForm_Rectangle,
3126     GeomForm_Square,
3127     GeomForm_Circle,
3128     GeomForm_Ellipse,
3129     GeomForm_LineSegs3D, /* deprecated: use GeomForm_LineSegs with CoordSys_Grid3D */
3130     GeomForm_Image,
3131     END_GeomForm_e,
3132     GeomForm_Invalid = BadEnumValue,
3133     /* new value names */
3134     GeomType_LineSegs = GeomForm_LineSegs,
3135     GeomType_Rectangle = GeomForm_Rectangle,
3136     GeomType_Square = GeomForm_Square,
3137     GeomType_Circle = GeomForm_Circle,
3138     GeomType_Ellipse = GeomForm_Ellipse,
3139     GeomType_LineSegs3D = GeomForm_LineSegs3D, /* deprecated: use GeomType_LineSegs with CoordSys_Grid3D */
3140     GeomType_Image = GeomForm_Image,
3141     END_GeomType_e = END_GeomForm_e,
3142     GeomType_Invalid = GeomForm_Invalid
3143 } GeomForm_e;
3144 
3145 typedef GeomForm_e GeomType_e;
3146 
3147 typedef enum
3148 {
3149     VariableDerivationMethod_Fast,
3150     VariableDerivationMethod_Accurate,
3151     END_VariableDerivationMethod_e,
3152     VariableDerivationMethod_Invalid = BadEnumValue
3153 } VariableDerivationMethod_e;
3154 
3155 /**
3156  */
3157 typedef enum
3158 {
3159     AuxDataType_String,
3160     END_AuxDataType_e,
3161     AuxDataType_Invalid = BadEnumValue
3162 } AuxDataType_e;
3163 
3164 /**
3165  */
3166 typedef enum
3167 {
3168     AuxDataLocation_Zone,
3169     AuxDataLocation_DataSet,
3170     AuxDataLocation_Frame,
3171     AuxDataLocation_Var,
3172     AuxDataLocation_LineMap,
3173     AuxDataLocation_Page,
3174     END_AuxDataLocation_e,
3175     AuxDataLocation_Invalid = BadEnumValue
3176 } AuxDataLocation_e;
3177 
3178 
3179 /* Note: This replaces Element_e */
3180 typedef enum
3181 {
3182     ZoneType_Ordered,
3183     ZoneType_FETriangle,
3184     ZoneType_FEQuad,
3185     ZoneType_FETetra,
3186     ZoneType_FEBrick,
3187     ZoneType_FELineSeg,
3188     ZoneType_FEPolygon,
3189     ZoneType_FEPolyhedron,
3190     END_ZoneType_e,
3191     ZoneType_Invalid = BadEnumValue
3192 } ZoneType_e;
3193 
3194 typedef enum
3195 {
3196     ZoneOrder_I,
3197     ZoneOrder_J,
3198     ZoneOrder_K,
3199     ZoneOrder_IJ,
3200     ZoneOrder_IK,
3201     ZoneOrder_JK,
3202     ZoneOrder_IJK,
3203     END_ZoneOrder_e,
3204     ZoneOrder_Invalid = BadEnumValue
3205 } ZoneOrder_e;
3206 
3207 /* deprecated: replaced by ZoneType_e DataPacking_e */
3208 typedef enum
3209 {
3210     DataFormat_IJKBlock,
3211     DataFormat_IJKPoint,
3212     DataFormat_FEBlock,
3213     DataFormat_FEPoint,
3214     END_DataFormat_e,
3215     DataFormat_Invalid = BadEnumValue
3216 } DataFormat_e;
3217 
3218 typedef enum
3219 {
3220     DataPacking_Block,
3221     DataPacking_Point,
3222     END_DataPacking_e,
3223     DataPacking_Invalid = BadEnumValue
3224 } DataPacking_e;
3225 
3226 
3227 
3228 typedef enum
3229 {
3230     PD_HPGL,
3231     PD_HPGL2,
3232     PD_PS,
3233     PD_LASERG, /* deprecated */
3234     PD_EPS,
3235     PD_WINDOWS, /* Windows Print Driver */
3236     PD_WMF, /* Windows MetaFile (used from Export only) */
3237     PD_X3D,
3238     END_PrinterDriver_e,
3239     PD_Invalid = BadEnumValue
3240 } PrinterDriver_e;
3241 
3242 
3243 
3244 typedef enum
3245 {
3246     Image_None,
3247     Image_TIFF,
3248     Image_EPSI2,
3249     Image_FRAME,
3250     END_EPSPreviewImage_e,
3251     Image_Invalid = BadEnumValue
3252 } EPSPreviewImage_e;
3253 
3254 typedef enum
3255 {
3256     TIFFByteOrder_Intel,
3257     TIFFByteOrder_Motorola,
3258     END_TIFFByteOrder_e,
3259     TIFFByteOrder_Invalid = BadEnumValue
3260 } TIFFByteOrder_e;
3261 
3262 typedef enum
3263 {
3264     JPEGEncoding_Standard,
3265     JPEGEncoding_Progressive,
3266     END_JPEGEncoding_e,
3267     JPEGEncoding_Invalid = BadEnumValue
3268 } JPEGEncoding_e;
3269 
3270 
3271 typedef enum
3272 {
3273     FlashImageType_Lossless,
3274     FlashImageType_JPEG,
3275     FlashImageType_Color256,
3276     END_FlashImageType_e,
3277     FlashImageType_Invalid = BadEnumValue,
3278     /* deprecated values */
3279     FlashImageType_256Color = FlashImageType_Color256
3280 } FlashImageType_e;
3281 
3282 typedef enum
3283 {
3284     FlashCompressionType_BestSpeed,
3285     FlashCompressionType_SmallestSize,
3286     END_FlashCompressionType_e,
3287     FlashCompressionType_Invalid = BadEnumValue
3288 } FlashCompressionType_e;
3289 
3290 
3291 typedef enum
3292 {
3293     ExportFormat_RasterMetafile,
3294     ExportFormat_TIFF,
3295     ExportFormat_SGI,
3296     ExportFormat_SunRaster,
3297     ExportFormat_XWindows,
3298     ExportFormat_PSImage,       /* deprecated */
3299     ExportFormat_HPGL,
3300     ExportFormat_HPGL2,
3301     ExportFormat_PS,
3302     ExportFormat_EPS,
3303     ExportFormat_LaserGraphics, /* deprecated */
3304     ExportFormat_WindowsMetafile,
3305     ExportFormat_BMP,
3306     ExportFormat_PNG,
3307     ExportFormat_AVI,
3308     ExportFormat_Custom,  /* May be used in a future version */
3309     ExportFormat_JPEG,
3310     ExportFormat_Flash,
3311     ExportFormat_X3D,
3312     ExportFormat_TecplotViewer,
3313     ExportFormat_FLV,
3314     ExportFormat_MPEG4,
3315     ExportFormat_WMV,
3316     END_ExportFormat_e,
3317     ExportFormat_Invalid = BadEnumValue
3318 } ExportFormat_e;
3319 
3320 typedef enum
3321 {
3322     AVICompression_ColorPreserving,
3323     AVICompression_LinePreserving,
3324     AVICompression_LosslessUncompressed,
3325     END_AVICompression_e,
3326     AVICompression_Invalid = BadEnumValue
3327 } AVICompression_e;
3328 
3329 typedef enum
3330 {
3331     AnimationDest_Screen,
3332     AnimationDest_AVI,
3333     AnimationDest_RM,
3334     AnimationDest_Flash,
3335     AnimationDest_FLV,
3336     AnimationDest_MPEG4,
3337     AnimationDest_WMV,
3338     END_AnimationDest_e,
3339     AnimationDest_Invalid = BadEnumValue
3340 } AnimationDest_e;
3341 
3342 
3343 
3344 typedef enum
3345 {
3346     AnimationOperation_Forward,
3347     AnimationOperation_Backward,
3348     AnimationOperation_Loop,
3349     AnimationOperation_Bounce,
3350     END_AnimationOperation_e,
3351     AnimationOperation_Invalid = BadEnumValue
3352 } AnimationOperation_e;
3353 
3354 typedef enum
3355 {
3356     AnimationStep_First,
3357     AnimationStep_Second,
3358     AnimationStep_Current,
3359     AnimationStep_SecondToLast,
3360     AnimationStep_Last,
3361     AnimationStep_Previous,
3362     AnimationStep_Next,
3363     END_AnimationStep_e,
3364     AnimationStep_Invalid = BadEnumValue
3365 } AnimationStep_e;
3366 
3367 typedef enum
3368 {
3369     ZoneAnimationMode_StepByNumber,
3370     ZoneAnimationMode_GroupStepByNumber,
3371     ZoneAnimationMode_StepByTime,
3372     END_ZoneAnimationMode_e,
3373     ZoneAnimationMode_Invalid = BadEnumValue
3374 } ZoneAnimationMode_e;
3375 
3376 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
3377 /**
3378  * @deprecated
3379  *     Please use \ref ExportRegion_e instead.
3380  */
3381 typedef enum
3382 {
3383     BitDumpRegion_CurrentFrame,
3384     BitDumpRegion_AllFrames,
3385     BitDumpRegion_WorkArea,
3386     END_BitDumpRegion_e,
3387     BitDumpRegion_Invalid = BadEnumValue
3388 } BitDumpRegion_e;
3389 #endif
3390 
3391 typedef enum
3392 {
3393     ExportRegion_CurrentFrame,
3394     ExportRegion_AllFrames,
3395     ExportRegion_WorkArea,
3396     END_ExportRegion_e,
3397     ExportRegion_Invalid = BadEnumValue
3398 } ExportRegion_e;
3399 
3400 typedef enum
3401 {
3402     PaperSize_Letter,
3403     PaperSize_Double,
3404     PaperSize_A4,
3405     PaperSize_A3,
3406     PaperSize_Custom1,
3407     PaperSize_Custom2,
3408     END_PaperSize_e,
3409     PaperSize_Invalid = BadEnumValue,
3410     /* deprecated values */
3411     Paper_Letter  = PaperSize_Letter,  /* deprecated */
3412     Paper_Double  = PaperSize_Double,  /* deprecated */
3413     Paper_A4      = PaperSize_A4,      /* deprecated */
3414     Paper_A3      = PaperSize_A3,      /* deprecated */
3415     Paper_Custom1 = PaperSize_Custom1, /* deprecated */
3416     Paper_Custom2 = PaperSize_Custom2, /* deprecated */
3417     Paper_Invalid = PaperSize_Invalid  /* deprecated */
3418 } PaperSize_e;
3419 
3420 
3421 
3422 typedef enum
3423 {
3424     PaperUnitSpacing_HalfCentimeter,
3425     PaperUnitSpacing_OneCentimeter,
3426     PaperUnitSpacing_TwoCentimeters,
3427     PaperUnitSpacing_QuarterInch,
3428     PaperUnitSpacing_HalfInch,
3429     PaperUnitSpacing_OneInch,
3430     PaperUnitSpacing_TenPoints,
3431     PaperUnitSpacing_TwentyFourPoints,
3432     PaperUnitSpacing_ThirtySixPoints,
3433     PaperUnitSpacing_FiftyPoints,
3434     PaperUnitSpacing_SeventyTwoPoints,
3435     PaperUnitSpacing_OneTenthInch,
3436     PaperUnitSpacing_OneTenthCentimeter,
3437     END_PaperUnitSpacing_e,
3438     PaperUnitSpacing_Invalid = BadEnumValue
3439 } PaperUnitSpacing_e;
3440 
3441 
3442 typedef enum
3443 {
3444     Palette_Monochrome,
3445     Palette_PenPlotter,
3446     Palette_Color,
3447     END_Palette_e,
3448     Palette_Invalid = BadEnumValue
3449 } Palette_e;
3450 
3451 
3452 typedef enum
3453 {
3454     PrintRenderType_Vector,
3455     PrintRenderType_Image,
3456     END_PrintRenderType_e,
3457     PrintRenderType_Invalid = BadEnumValue
3458 } PrintRenderType_e;
3459 
3460 
3461 typedef enum
3462 {
3463     Units_Grid,
3464     Units_Frame,
3465     Units_Point,
3466     Units_Screen,
3467     Units_AxisPercentage,
3468     END_Units_e,
3469     Units_Invalid = BadEnumValue
3470 } Units_e;
3471 
3472 
3473 typedef enum
3474 {
3475     CoordScale_Linear,
3476     CoordScale_Log,
3477     END_CoordScale_e,
3478     CoordScale_Invalid = BadEnumValue,
3479     /* old names for the same values */
3480     Scale_Linear = CoordScale_Linear,
3481     Scale_Log = CoordScale_Log,
3482     Scale_Invalid = CoordScale_Invalid
3483 } CoordScale_e;
3484 
3485 /* BEGINREMOVEFROMADDON */
3486 #define GetLog10(R) ( ((R) < SMALLDOUBLE) ? SMALLESTEXPONENT : ( ((R) > LARGEDOUBLE) ? LARGESTEXPONENT : log10((R)) ) )
3487 /* ENDREMOVEFROMADDON */
3488 
3489 typedef enum
3490 {
3491     CoordSys_Grid,
3492     CoordSys_Frame,
3493     CoordSys_FrameOffset,
3494     CoordSys_Paper,
3495     CoordSys_Screen,
3496     CoordSys_Hardcopy,
3497     CoordSys_Grid3D,
3498     CoordSys_Workspace,
3499     END_CoordSys_e,
3500     CoordSys_Invalid = BadEnumValue
3501 } CoordSys_e;
3502 
3503 /*
3504  *  NOTE:  CoordSys_FrameOffset always is stored in inches internally.
3505  *         in stylesheet this may be written in other units if
3506  *         appropriate suffix is added.
3507  *
3508  */
3509 
3510 
3511 
3512 typedef enum
3513 {
3514     Scope_Global,
3515     Scope_Local,
3516     END_Scope_e,
3517     Scope_Invalid = BadEnumValue
3518 } Scope_e;
3519 
3520 
3521 typedef enum
3522 {
3523     TextAnchor_Left,
3524     TextAnchor_Center,
3525     TextAnchor_Right,
3526     TextAnchor_MidLeft,
3527     TextAnchor_MidCenter,
3528     TextAnchor_MidRight,
3529     TextAnchor_HeadLeft,
3530     TextAnchor_HeadCenter,
3531     TextAnchor_HeadRight,
3532     TextAnchor_OnSide,
3533     END_TextAnchor_e,
3534     TextAnchor_Invalid = BadEnumValue
3535 } TextAnchor_e;
3536 
3537 
3538 
3539 typedef enum
3540 {
3541     TextBox_None,
3542     TextBox_Filled,
3543     TextBox_Hollow,
3544     END_TextBox_e,
3545     TextBox_Invalid = BadEnumValue
3546 } TextBox_e;
3547 
3548 
3549 
3550 typedef enum
3551 {
3552     GeomShape_Square,
3553     GeomShape_Del,
3554     GeomShape_Grad,
3555     GeomShape_RTri,
3556     GeomShape_LTri,
3557     GeomShape_Diamond,
3558     GeomShape_Circle,
3559     GeomShape_Cube,
3560     GeomShape_Sphere,
3561     GeomShape_Octahedron,
3562     GeomShape_Point,
3563     END_GeomShape_e,
3564     GeomShape_Invalid = BadEnumValue
3565 } GeomShape_e;
3566 
3567 
3568 typedef enum
3569 {
3570     BasicSize_Tiny,
3571     BasicSize_Small,
3572     BasicSize_Medium,
3573     BasicSize_Large,
3574     BasicSize_Huge,
3575     END_BasicSize_e,
3576     BasicSize_Invalid = BadEnumValue
3577 } BasicSize_e;
3578 
3579 
3580 
3581 /*
3582  * NOTE: LineForm_e is deprecated.  It must be retained to maintain
3583  *       backward compatibility with the TecUtil layer however.
3584  *       This has been replaced by CurveType_e.
3585  */
3586 typedef enum
3587 {
3588     LineForm_LineSeg,
3589     LineForm_CurvFit,
3590     LineForm_EToRFit,
3591     LineForm_PowerFit,
3592     LineForm_Spline,
3593     LineForm_ParaSpline,
3594     END_LineForm_e,
3595     LineForm_Invalid = BadEnumValue
3596 } LineForm_e;
3597 
3598 
3599 typedef enum
3600 {
3601     CurveType_LineSeg,
3602     CurveType_PolynomialFit,
3603     CurveType_EToRFit,
3604     CurveType_PowerFit,
3605     CurveType_Spline,
3606     CurveType_ParaSpline,
3607     CurveType_Extended,
3608     END_CurveType_e,
3609     CurveType_Invalid = BadEnumValue,
3610     CurveType_CurvFit = CurveType_PolynomialFit
3611 } CurveType_e;
3612 
3613 typedef enum
3614 {
3615     Script_None,
3616     Script_Super,
3617     Script_Sub,
3618     END_Script_e,
3619     Script_Invalid = BadEnumValue
3620 } Script_e;
3621 
3622 
3623 typedef enum
3624 {
3625     Font_Helvetica,
3626     Font_HelveticaBold,
3627     Font_Greek,
3628     Font_Math,
3629     Font_UserDefined,
3630     Font_Times,
3631     Font_TimesItalic,
3632     Font_TimesBold,
3633     Font_TimesItalicBold,
3634     Font_Courier,
3635     Font_CourierBold,
3636     Font_Extended,
3637     END_Font_e,
3638     Font_Invalid = BadEnumValue
3639 } Font_e;
3640 
3641 typedef enum
3642 {
3643     FontStyle_Regular,
3644     FontStyle_Italic,
3645     FontStyle_Bold,
3646     FontStyle_BoldItalic,
3647     END_FontStyle_e,
3648     FontStyle_Invalid = BadEnumValue
3649 } FontStyle_e;
3650 
3651 typedef enum
3652 {
3653     TwoDDrawOrder_ByZone,
3654     TwoDDrawOrder_ByLayer,
3655     END_TwoDDrawOrder_e,
3656     TwoDDrawOrder_Invalid = BadEnumValue
3657 } TwoDDrawOrder_e;
3658 
3659 typedef enum
3660 {
3661     DrawOrder_AfterData,
3662     DrawOrder_BeforeData,
3663     END_DrawOrder_e,
3664     DrawOrder_Invalid = BadEnumValue
3665 } DrawOrder_e;
3666 
3667 /*
3668  *
3669  * NOTE: Streamtrace_TwoDLine is new.  All 2D
3670  *       streamtraces are assigned this value.
3671  */
3672 typedef enum
3673 {
3674     Streamtrace_SurfaceLine,
3675     Streamtrace_SurfaceRibbon,
3676     Streamtrace_VolumeLine,
3677     Streamtrace_VolumeRibbon,
3678     Streamtrace_VolumeRod,
3679     Streamtrace_TwoDLine,
3680     END_Streamtrace_e,
3681     Streamtrace_Invalid = BadEnumValue
3682 } Streamtrace_e;
3683 
3684 
3685 
3686 typedef enum
3687 {
3688     StreamDir_Forward,
3689     StreamDir_Reverse,
3690     StreamDir_Both,
3691     END_StreamDir_e,
3692     StreamDir_Invalid = BadEnumValue
3693 } StreamDir_e;
3694 
3695 typedef enum
3696 {
3697     DistributionRegion_Point,
3698     DistributionRegion_Rake,
3699     DistributionRegion_SurfacesOfActiveZones,
3700     DistributionRegion_SurfacesOfSelectedObjects,
3701     END_DistributionRegion_e,
3702     DistributionRegion_Invalid = BadEnumValue
3703 } DistributionRegion_e;
3704 
3705 typedef enum
3706 {
3707     IsoSurfaceSelection_AllContourLevels,
3708     IsoSurfaceSelection_OneSpecificValue,
3709     IsoSurfaceSelection_TwoSpecificValues,
3710     IsoSurfaceSelection_ThreeSpecificValues,
3711     END_IsoSurfaceSelection_e,
3712     IsoSurfaceSelection_Invalid = BadEnumValue
3713 } IsoSurfaceSelection_e;
3714 
3715 
3716 typedef enum
3717 {
3718     ValueLocation_CellCentered,
3719     ValueLocation_Nodal,
3720     END_ValueLocation_e,
3721     ValueLocation_Invalid = BadEnumValue
3722 } ValueLocation_e;
3723 
3724 typedef enum
3725 {
3726     FieldDataType_Reserved, /* never use */
3727     FieldDataType_Float,
3728     FieldDataType_Double,
3729     FieldDataType_Int32,
3730     FieldDataType_Int16,
3731     FieldDataType_Byte,
3732     FieldDataType_Bit,
3733     END_FieldDataType_e,
3734     FieldDataType_IJKFunction,   /* Not used yet */
3735     FieldDataType_Int64, /* Not used yet */
3736 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
3737     FieldDataType_LongInt = FieldDataType_Int32,
3738     FieldDataType_ShortInt = FieldDataType_Int16,
3739 #endif
3740     FieldDataType_Invalid = BadEnumValue
3741 } FieldDataType_e;
3742 
3743 #define VALID_FIELD_DATA_TYPE(FieldDataType) (VALID_ENUM((FieldDataType),FieldDataType_e) && \
3744                                               (FieldDataType)!=FieldDataType_Reserved)
3745 
3746 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
3747 /**
3748  * @deprecated
3749  *     Please use \ref MeshType_e instead.
3750  */
3751 typedef enum
3752 {
3753     Mesh_Wireframe,  /* deprecated: use MeshType_Wireframe  */
3754     Mesh_Overlay,    /* deprecated: use MeshType_Overlay    */
3755     Mesh_HiddenLine, /* deprecated: use MeshType_HiddenLine */
3756     END_MeshPlotType_e,
3757     Mesh_Invalid = BadEnumValue
3758 } MeshPlotType_e;
3759 #endif
3760 
3761 typedef enum
3762 {
3763     MeshType_Wireframe,  /* Mesh_Wireframe  */
3764     MeshType_Overlay,    /* Mesh_Overlay    */
3765     MeshType_HiddenLine, /* Mesh_HiddenLine */
3766     END_MeshType_e,
3767     MeshType_Invalid = BadEnumValue
3768 } MeshType_e;
3769 
3770 
3771 
3772 
3773 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
3774 /**
3775  * @deprecated
3776  *     Please use \ref ContourType_e instead.
3777  */
3778 typedef enum
3779 {
3780     Contour_Lines,       /* deprecated: use ContourType_Lines        */
3781     Contour_Flood,       /* deprecated: use ContourType_Flood        */
3782     Contour_Overlay,     /* deprecated: use ContourType_Overlay      */
3783     Contour_AverageCell, /* deprecated: use ContourType_AverageCell  */
3784     Contour_CornerCell,  /* deprecated: use ContourType_PrimaryValue */
3785     END_ContourPlotType_e,
3786     Contour_Invalid = BadEnumValue
3787 } ContourPlotType_e;
3788 #endif
3789 
3790 
3791 typedef enum
3792 {
3793     ContourType_Lines,         /* Contour_Lines       */
3794     ContourType_Flood,         /* Contour_Flood       */
3795     ContourType_Overlay,       /* Contour_Overlay     */
3796     ContourType_AverageCell,   /* Contour_AverageCell */
3797     ContourType_PrimaryValue,  /* Contour_CornerCell  */
3798     END_ContourType_e,
3799     ContourType_Invalid = BadEnumValue
3800 } ContourType_e;
3801 
3802 typedef enum
3803 {
3804     ContourColoring_RGB,
3805     ContourColoring_Group1,
3806     ContourColoring_Group2,
3807     ContourColoring_Group3,
3808     ContourColoring_Group4,
3809     ContourColoring_Group5,
3810     ContourColoring_Group6,
3811     ContourColoring_Group7,
3812     ContourColoring_Group8,
3813     END_ContourColoring_e,
3814     ContourColoring_Invalid = BadEnumValue
3815 } ContourColoring_e;
3816 
3817 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
3818 /**
3819  * @deprecated
3820  *     Please use \ref VectorType_e instead.
3821  */
3822 typedef enum
3823 {
3824     Vector_TailAtPoint, /* deprecated: use VectorType_TailAtPoint */
3825     Vector_HeadAtPoint, /* deprecated: use VectorType_HeadAtPoint */
3826     Vector_MidAtPoint,  /* deprecated: use VectorType_MidAtPoint  */
3827     Vector_HeadOnly,    /* deprecated: use VectorType_HeadOnly    */
3828     END_VectorPlotType_e,
3829     Vector_Invalid = BadEnumValue
3830 } VectorPlotType_e;
3831 #endif
3832 
3833 
3834 typedef enum
3835 {
3836     VectorType_TailAtPoint, /* Vector_TailAtPoint */
3837     VectorType_HeadAtPoint, /* Vector_HeadAtPoint */
3838     VectorType_MidAtPoint,  /* Vector_MidAtPoint  */
3839     VectorType_HeadOnly,    /* Vector_HeadOnly    */
3840     END_VectorType_e,
3841     VectorType_Invalid = BadEnumValue
3842 } VectorType_e;
3843 
3844 
3845 /*
3846  * NOTE: ShadePlotType_e is deprecated.  It must be retained to maintain
3847  *       backward compatibility with the TecUtil layer however.
3848  *       This has been replaced by LightingEffect_e.
3849  */
3850 typedef enum
3851 {
3852     Shade_SolidColor,
3853     Shade_Paneled,
3854     Shade_Gouraud,
3855     Shade_ColoredPaneled,
3856     Shade_ColoredGouraud,
3857     END_ShadePlotType_e,
3858     Shade_Invalid = BadEnumValue
3859 } ShadePlotType_e;
3860 
3861 /*
3862  * NOTE: LightingEffect_None is deprecated.  It must remain
3863  *       in the list to allow macro processing of older
3864  *       (i.e. early v9) macros.
3865  */
3866 typedef enum
3867 {
3868     LightingEffect_Paneled,
3869     LightingEffect_Gouraud,
3870     LightingEffect_None,
3871     END_LightingEffect_e,
3872     LightingEffect_Invalid = BadEnumValue
3873 } LightingEffect_e;
3874 
3875 typedef enum
3876 {
3877     IJKLines_I,
3878     IJKLines_J,
3879     IJKLines_K,
3880     END_IJKLines_e,
3881     IJKLines_Invalid = BadEnumValue,
3882     /* deprecated values */
3883     Lines_I       = IJKLines_I,       /* deprecated */
3884     Lines_J       = IJKLines_J,       /* deprecated */
3885     Lines_K       = IJKLines_K,       /* deprecated */
3886     Lines_Invalid = IJKLines_Invalid  /* deprecated */
3887 } IJKLines_e;
3888 
3889 typedef enum
3890 {
3891     IJKCellType_Planes,
3892     IJKCellType_FacePlanes,
3893     IJKCellType_Volume,
3894     END_IJKCellType_e,
3895     IJKCellType_Invalid = BadEnumValue
3896 } IJKCellType_e;
3897 
3898 
3899 /*
3900  *  Ver 6 used PlaneSet.  Ver 7 uses CellType and Planes variables.
3901  *
3902  *   "PlaneSet" in version 6    vs.  IJKPlanes in v7:
3903  *
3904  *   'A' = AllPlanes                 CellType = IJKCellType_Volume
3905  *   'd','e','f','C' = ComboPlanes   CellType = IJKCellType_Planes, IJKPlanes = depends on defC
3906  *   'F' = Faces Planes Only         CellType = IJKCellType_FacePlanes
3907  *   'I' = I-Planes                  CellType = IJKCellType_Planes, IJKPlanes = IJKPlanes_I
3908  *   'J' = J-Planes                  CellType = IJKCellType_Planes, IJKPlanes = IJKPlanes_J
3909  *   'K' = K-Planes                  CellType = IJKCellType_Planes, IJKPlanes = IJKPlanes_K
3910  *
3911  *
3912  * NOTE: IJKPlanes_e is still used internally in tecplot (and in the TecUtil layer).
3913  *       it has been relagated to communicating which planes of an IJK zone are in
3914  *       use.
3915  *
3916  */
3917 
3918 typedef enum
3919 {
3920     IJKPlanes_I,
3921     IJKPlanes_J,
3922     IJKPlanes_K,
3923     IJKPlanes_Face,  /* used on the panel heap */
3924     IJKPlanes_IJ,    /* deprecated */
3925     IJKPlanes_JK,    /* deprecated */
3926     IJKPlanes_IK,    /* deprecated */
3927     IJKPlanes_IJK,   /* deprecated */
3928     IJKPlanes_Volume,
3929     IJKPlanes_Unused,
3930     END_IJKPlanes_e,
3931     IJKPlanes_Invalid = BadEnumValue,
3932     /* deprecated values */
3933     Planes_I       = IJKPlanes_I,      /* deprecated */
3934     Planes_J       = IJKPlanes_J,      /* deprecated */
3935     Planes_K       = IJKPlanes_K,      /* deprecated */
3936     Planes_IJ      = IJKPlanes_IJ,     /* deprecated */
3937     Planes_JK      = IJKPlanes_JK,     /* deprecated */
3938     Planes_IK      = IJKPlanes_IK,     /* deprecated */
3939     Planes_IJK     = IJKPlanes_IJK,    /* deprecated */
3940     Planes_Face    = IJKPlanes_Face,   /* deprecated */
3941     Planes_Volume  = IJKPlanes_Volume, /* deprecated */
3942     Planes_Unused  = IJKPlanes_Unused, /* deprecated */
3943     Planes_Invalid = IJKPlanes_Invalid /* deprecated */
3944 } IJKPlanes_e;
3945 
3946 
3947 
3948 typedef enum
3949 {
3950     SurfacesToPlot_BoundaryFaces,
3951     SurfacesToPlot_ExposedCellFaces,
3952     SurfacesToPlot_IPlanes,
3953     SurfacesToPlot_JPlanes,
3954     SurfacesToPlot_KPlanes,
3955     SurfacesToPlot_IJPlanes,
3956     SurfacesToPlot_JKPlanes,
3957     SurfacesToPlot_IKPlanes,
3958     SurfacesToPlot_IJKPlanes,
3959     SurfacesToPlot_All,
3960     SurfacesToPlot_None,
3961     END_SurfacesToPlot_e,
3962     SurfacesToPlot_Invalid = BadEnumValue
3963 } SurfacesToPlot_e;
3964 
3965 typedef enum
3966 {
3967     PointsToPlot_SurfaceNodes,  /* was _SurfacesOnly */
3968     PointsToPlot_AllNodes,      /* was _All          */
3969     PointsToPlot_SurfaceCellCenters,
3970     PointsToPlot_AllCellCenters,
3971     PointsToPlot_AllConnected,
3972     END_PointsToPlot_e,
3973 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
3974     PointsToPlot_SurfacesOnly = PointsToPlot_SurfaceNodes, /* deprecated */
3975     PointsToPlot_All          = PointsToPlot_AllNodes,     /* deprecated */
3976 #endif
3977     PointsToPlot_Invalid = BadEnumValue
3978 } PointsToPlot_e;
3979 
3980 
3981 typedef enum
3982 {
3983     SliceSurface_XPlanes,
3984     SliceSurface_YPlanes,
3985     SliceSurface_ZPlanes,
3986     SliceSurface_IPlanes,
3987     SliceSurface_JPlanes,
3988     SliceSurface_KPlanes,
3989     END_SliceSurface_e,
3990     SliceSurface_Invalid = BadEnumValue
3991 } SliceSurface_e;
3992 
3993 
3994 typedef enum
3995 {
3996     ClipPlane_None,
3997     ClipPlane_BelowPrimarySlice,
3998     ClipPlane_AbovePrimarySlice,
3999     END_ClipPlane_e,
4000     ClipPlane_Invalid = BadEnumValue
4001 } ClipPlane_e;
4002 
4003 typedef enum
4004 {
4005     Skip_ByIndex,
4006     Skip_ByFrameUnits,
4007     END_SkipMode_e,
4008     Skip_Invalid = BadEnumValue
4009 } SkipMode_e;
4010 
4011 
4012 typedef enum
4013 {
4014     EdgeType_Borders,
4015     EdgeType_Creases,
4016     EdgeType_BordersAndCreases,
4017     END_EdgeType_e,
4018     EdgeType_Invalid = BadEnumValue
4019 } EdgeType_e;
4020 
4021 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
4022 /**
4023  * @deprecated
4024  *     Please use \ref BorderLocation_e instead.
4025  */
4026 typedef enum
4027 {
4028     Boundary_None, /* deprecated: use BoundaryType_None */
4029     Boundary_Min,  /* deprecated: use BoundaryType_Min  */
4030     Boundary_Max,  /* deprecated: use BoundaryType_Max  */
4031     Boundary_Both, /* deprecated: use BoundaryType_Both */
4032     END_BoundPlotType_e,
4033     Boundary_Invalid = BadEnumValue
4034 } BoundPlotType_e;
4035 #endif
4036 
4037 typedef enum
4038 {
4039     BoundaryType_None, /* Boundary_None */
4040     BoundaryType_Min,  /* Boundary_Min  */
4041     BoundaryType_Max,  /* Boundary_Max  */
4042     BoundaryType_Both, /* Boundary_Both */
4043     END_BoundaryType_e,
4044     BoundaryType_Invalid = BadEnumValue
4045 } BoundaryType_e;  /* deprecated */
4046 
4047 typedef enum
4048 {
4049     BorderLocation_None, /* Boundary_None */
4050     BorderLocation_Min,  /* Boundary_Min  */
4051     BorderLocation_Max,  /* Boundary_Max  */
4052     BorderLocation_Both, /* Boundary_Both */
4053     END_BorderLocation_e,
4054     BorderLocation_Invalid = BadEnumValue
4055 } BorderLocation_e;
4056 
4057 typedef enum
4058 {
4059     ContourColorMap_SmRainbow,
4060     ContourColorMap_LgRainbow,
4061     ContourColorMap_Modern,
4062     ContourColorMap_GrayScale,
4063     ContourColorMap_Wild,
4064     ContourColorMap_UserDef,
4065     ContourColorMap_TwoColor,
4066     ContourColorMap_RawUserDef,
4067     ContourColorMap_DivBuRd,
4068     ContourColorMap_DivBuYlRd,
4069     ContourColorMap_DivBrBG,
4070     ContourColorMap_DivOrPu,
4071     ContourColorMap_DivPiYG,
4072     ContourColorMap_DivPRGn,
4073     ContourColorMap_Doppler,
4074     ContourColorMap_ElevAboveGrnd,
4075     ContourColorMap_ElevAbsolute,
4076     ContourColorMap_HotMetal,
4077     ContourColorMap_Magma,
4078     ContourColorMap_DkRainbow,
4079     ContourColorMap_MdRainbow,
4080     ContourColorMap_QualAccent,
4081     ContourColorMap_QualDark1,
4082     ContourColorMap_QualDark2,
4083     ContourColorMap_QualPaired,
4084     ContourColorMap_QualPastel1,
4085     ContourColorMap_QualPastel2,
4086     ContourColorMap_QualPastel3,
4087     ContourColorMap_SeqBlue,
4088     ContourColorMap_SeqBuGn,
4089     ContourColorMap_SeqBuPu,
4090     ContourColorMap_SeqGreen,
4091     ContourColorMap_SeqGnBu,
4092     ContourColorMap_SeqOrange,
4093     ContourColorMap_SeqOrRd,
4094     ContourColorMap_SeqPiPu,
4095     ContourColorMap_SeqPurple,
4096     ContourColorMap_SeqPuBu,
4097     ContourColorMap_SeqPuBuGn,
4098     ContourColorMap_SeqPuRd,
4099     ContourColorMap_SeqRed,
4100     ContourColorMap_SeqYlGn,
4101     ContourColorMap_SeqYlGnBu,
4102     ContourColorMap_SeqYlOrBr,
4103     ContourColorMap_SeqYlOrRd,
4104     END_ContourColorMap_e,
4105     ContourColorMap_Invalid = BadEnumValue,
4106     /* deprecated values */
4107     ColorMap_SmRainbow    = ContourColorMap_SmRainbow,    /* deprecated */
4108     ColorMap_LgRainbow    = ContourColorMap_LgRainbow,    /* deprecated */
4109     ColorMap_Modern       = ContourColorMap_Modern,       /* deprecated */
4110     ColorMap_GrayScale    = ContourColorMap_GrayScale,    /* deprecated */
4111     ColorMap_Wild         = ContourColorMap_Wild,         /* deprecated */
4112     ColorMap_UserDef      = ContourColorMap_UserDef,      /* deprecated */
4113     ColorMap_TwoColor     = ContourColorMap_TwoColor,     /* deprecated */
4114     ColorMap_RawUserDef   = ContourColorMap_RawUserDef,   /* deprecated */
4115     ColorMap_Invalid      = ContourColorMap_Invalid       /* deprecated */
4116 } ContourColorMap_e;
4117 
4118 
4119 
4120 typedef enum
4121 {
4122     ErrorBar_Up,
4123     ErrorBar_Down,
4124     ErrorBar_Left,
4125     ErrorBar_Right,
4126     ErrorBar_Horz,
4127     ErrorBar_Vert,
4128     ErrorBar_Cross,
4129     END_ErrorBar_e,
4130     ErrorBar_Invalid = BadEnumValue
4131 } ErrorBar_e;
4132 
4133 
4134 
4135 typedef enum
4136 {
4137     ContourLineMode_UseZoneLineType,
4138     ContourLineMode_SkipToSolid,
4139     ContourLineMode_DashNegative,
4140     END_ContourLineMode_e,
4141     ContourLineMode_Invalid = BadEnumValue
4142 } ContourLineMode_e;
4143 
4144 
4145 /* BEGINREMOVEFROMADDON */
4146 typedef enum
4147 {
4148     Panel_Bad,
4149     Panel_Cell,                 /* FieldZone */
4150     Panel_Vector,               /* FieldZone */
4151     Panel_Scatter,              /* FieldZone */
4152     Panel_IJKBorderLine,        /* FieldZone IJK border lines */
4153     Panel_CellEdge,             /* FieldZone border lines and creases */
4154     Panel_FEBoundaryCell,       /* FieldZone */
4155     Panel_NodeLabel,            /* FieldZone */
4156     Panel_CellLabel,            /* FieldZone */
4157     Panel_StreamtraceCell,      /* Streamtrace COB          */
4158     Panel_StreamtraceMarker,    /* StreamtraceMarker COB (Scatter Symbol) */
4159     Panel_StreamtraceArrowhead, /* StreamtraceArrowhead COB (Vector) */
4160     Panel_IsoSurfaceCell,       /* IsoSurface COB */
4161     Panel_IsoSurfaceCellEdge,   /* IsoSurface COB border lines and creases (border lines and creases not currently used) */
4162     Panel_SliceCell,            /* Slice COB */
4163     Panel_SliceVector,          /* Slice COB */
4164     Panel_SliceIJKBorderLine,   /* Slice COB IJK border lines */
4165     Panel_SliceCellEdge,        /* Slice COB border lines and creases (creases not currently used) */
4166     Panel_Geom,                 /* Misc */
4167     Panel_Text,                 /* Misc */
4168     END_Panel_e,
4169     Panel_Invalid = BadEnumValue
4170 } Panel_e;
4171 /* ENDREMOVEFROMADDON */
4172 
4173 
4174 typedef enum
4175 {
4176     MessageBoxType_Error,
4177     MessageBoxType_Warning,
4178     MessageBoxType_Information,
4179     MessageBoxType_Question,   /* Ok, Cancel buttons */
4180     MessageBoxType_YesNo,
4181     MessageBoxType_YesNoCancel,
4182     MessageBoxType_WarningOkCancel,
4183     END_MessageBoxType_e,
4184     MessageBoxType_Invalid = BadEnumValue,
4185     /* deprecated values */
4186     MessageBox_Error           = MessageBoxType_Error,           /* deprecated */
4187     MessageBox_Warning         = MessageBoxType_Warning,         /* deprecated */
4188     MessageBox_Information     = MessageBoxType_Information,     /* deprecated */
4189     MessageBox_Question        = MessageBoxType_Question,        /* deprecated */
4190     MessageBox_YesNo           = MessageBoxType_YesNo,           /* deprecated */
4191     MessageBox_YesNoCancel     = MessageBoxType_YesNoCancel,     /* deprecated */
4192     MessageBox_WarningOkCancel = MessageBoxType_WarningOkCancel, /* deprecated */
4193     MessageBox_Invalid         = MessageBoxType_Invalid          /* deprecated */
4194 } MessageBoxType_e;
4195 
4196 
4197 typedef enum
4198 {
4199     MessageBoxReply_Yes,
4200     MessageBoxReply_No,
4201     MessageBoxReply_Cancel,
4202     MessageBoxReply_Ok,
4203     END_MessageBoxReply_e,
4204     MessageBoxReply_Invalid = BadEnumValue
4205 } MessageBoxReply_e;
4206 
4207 typedef enum
4208 {
4209     NumberFormat_Integer,
4210     NumberFormat_FixedFloat,
4211     NumberFormat_Exponential,
4212     NumberFormat_BestFloat,
4213     NumberFormat_SuperScript,
4214     NumberFormat_CustomLabel,
4215     NumberFormat_LogSuperScript,
4216     NumberFormat_RangeBestFloat,
4217     NumberFormat_DynamicLabel,
4218     NumberFormat_TimeDate,
4219     END_NumberFormat_e,
4220     NumberFormat_Invalid = BadEnumValue
4221 } NumberFormat_e;
4222 
4223 /* For backward compatibility with v9- */
4224 typedef NumberFormat_e ValueFormat_e;
4225 
4226 
4227 typedef enum
4228 {
4229     BackingStoreMode_QuickAndDirty,
4230     BackingStoreMode_RealTimeUpdate,
4231     BackingStoreMode_PeriodicUpdate,
4232     END_BackingStoreMode_e,
4233     BackingStoreMode_Invalid = BadEnumValue
4234 } BackingStoreMode_e;
4235 
4236 
4237 typedef enum
4238 {
4239     TickDirection_In,
4240     TickDirection_Out,
4241     TickDirection_Centered,
4242     END_TickDirection_e,
4243     TickDirection_Invalid = BadEnumValue
4244 } TickDirection_e;
4245 
4246 /* This enumerated type is no longer used as of Tecplot V10. */
4247 typedef enum
4248 {
4249     AxisTitlePosition_Left,
4250     AxisTitlePosition_Center,
4251     AxisTitlePosition_Right,
4252     END_AxisTitlePosition_e,
4253     AxisTitlePosition_Invalid = BadEnumValue
4254 } AxisTitlePosition_e;
4255 
4256 typedef enum
4257 {
4258     AxisTitleMode_NoTitle,
4259     AxisTitleMode_UseVarName,
4260     AxisTitleMode_UseText,
4261     END_AxisTitleMode_e,
4262     AxisTitleMode_Invalid = BadEnumValue
4263 } AxisTitleMode_e;
4264 
4265 typedef enum
4266 {
4267     AxisAlignment_WithViewport,
4268     AxisAlignment_WithOpposingAxisValue,
4269     AxisAlignment_WithGridMin,
4270     AxisAlignment_WithGridMax,
4271     AxisAlignment_WithSpecificAngle,
4272     AxisAlignment_WithGridAreaTop,
4273     AxisAlignment_WithGridAreaBottom,
4274     AxisAlignment_WithGridAreaLeft,
4275     AxisAlignment_WithGridAreaRight,
4276     END_AxisAlignment_e,
4277     AxisAlignment_Invalid = BadEnumValue
4278 } AxisAlignment_e;
4279 
4280 typedef enum
4281 {
4282     FunctionDependency_XIndependent,
4283     FunctionDependency_YIndependent,
4284     END_FunctionDependency_e,
4285     FunctionDependency_Invalid = BadEnumValue,
4286     FunctionDependency_ThetaIndependent = FunctionDependency_XIndependent,
4287     FunctionDependency_RIndependent = FunctionDependency_YIndependent
4288 } FunctionDependency_e;
4289 
4290 typedef enum
4291 {
4292     LegendShow_Yes,
4293     LegendShow_No,
4294     LegendShow_Auto,
4295     END_LegendShow_e,
4296     LegendShow_Invalid = BadEnumValue
4297 } LegendShow_e;
4298 
4299 typedef enum
4300 {
4301     LineMapSort_None,
4302     LineMapSort_IndependentVar,
4303     LineMapSort_DependentVar,
4304     LineMapSort_SpecificVar,
4305     END_LineMapSort_e,
4306     LineMapSort_Invalid = BadEnumValue
4307 } LineMapSort_e;
4308 
4309 typedef enum
4310 {
4311     ContLegendLabelLocation_ContourLevels,
4312     ContLegendLabelLocation_Increment,
4313     ContLegendLabelLocation_ColorMapDivisions,
4314     END_ContLegendLabelLocation_e,
4315     ContLegendLabelLocation_Invalid = BadEnumValue
4316 } ContLegendLabelLocation_e;
4317 
4318 typedef enum
4319 {
4320     ThetaMode_Degrees,
4321     ThetaMode_Radians,
4322     ThetaMode_Arbitrary,
4323     END_ThetaMode_e,
4324     ThetaMode_Invalid = BadEnumValue
4325 } ThetaMode_e;
4326 
4327 typedef enum
4328 {
4329     Transform_PolarToRect,
4330     Transform_SphericalToRect,
4331     Transform_RectToPolar,
4332     Transform_RectToSpherical,
4333     END_Transform_e,
4334     Transform_Invalid = BadEnumValue
4335 } Transform_e;
4336 
4337 typedef enum
4338 {
4339     WindowFunction_Rectangular,
4340     WindowFunction_Triangular,
4341     WindowFunction_Hann,
4342     WindowFunction_Hamming,
4343     END_WindowFunction_e,
4344     WindowFunction_Invalid = BadEnumValue
4345 } WindowFunction_e;
4346 
4347 typedef enum
4348 {
4349     LaunchDialogMode_ModalSync,
4350     LaunchDialogMode_Modeless,
4351     LaunchDialogMode_ModalAsync,
4352     END_LaunchDialogMode_e,
4353     LaunchDialogMode_Invalid = BadEnumValue
4354 } LaunchDialogMode_e;
4355 
4356 
4357 typedef enum
4358 {
4359     SelectFileOption_ReadSingleFile,
4360     SelectFileOption_ReadMultiFile,
4361     SelectFileOption_AllowMultiFileRead,
4362     SelectFileOption_WriteFile,
4363     SelectFileOption_SelectDirectory,
4364     END_SelectFileOption_e,
4365     SelectFileOption_Invalid = BadEnumValue
4366 } SelectFileOption_e;
4367 
4368 typedef enum
4369 {
4370     BinaryFileVersion_Tecplot2006,
4371     BinaryFileVersion_Tecplot2008,
4372     BinaryFileVersion_Tecplot2009,
4373     BinaryFileVersion_Current,
4374     END_BinaryFileVersion_e,
4375     BinaryFileVersion_Invalid = BadEnumValue
4376 } BinaryFileVersion_e;
4377 
4378 /*   CURRENTLY NOT USED .... */
4379 typedef enum
4380 {
4381     ViewActionDrawMode_NoDraw,
4382     ViewActionDrawMode_DrawTrace,
4383     ViewActionDrawMode_DrawFull,
4384     END_ViewActionDrawMode_e,
4385     ViewActionDrawMode_Invalid = BadEnumValue
4386 } ViewActionDrawMode_e;
4387 
4388 typedef enum
4389 {
4390     PageAction_Create,
4391     PageAction_Delete,
4392     PageAction_Clear,
4393     PageAction_SetCurrentToNext,
4394     PageAction_SetCurrentToPrev,
4395     PageAction_SetCurrentByName,
4396     PageAction_SetCurrentByUniqueID,
4397     END_PageAction_e,
4398     PageAction_Invalid = BadEnumValue
4399 } PageAction_e;
4400 
4401 typedef enum
4402 {
4403     FrameAction_PushTop,
4404     FrameAction_PopByNumber,
4405     FrameAction_PopAtPosition,
4406     FrameAction_DeleteActive,
4407     FrameAction_FitAllToPaper,
4408     FrameAction_PushByName,
4409     FrameAction_PopByName,
4410     FrameAction_PushByNumber,
4411     FrameAction_ActivateTop,
4412     FrameAction_ActivateNext,
4413     FrameAction_ActivatePrevious,
4414     FrameAction_ActivateAtPosition,
4415     FrameAction_ActivateByName,
4416     FrameAction_ActivateByNumber,
4417     FrameAction_MoveToTopActive,
4418     FrameAction_MoveToTopByName,
4419     FrameAction_MoveToTopByNumber,
4420     FrameAction_MoveToBottomActive,
4421     FrameAction_MoveToBottomByName,
4422     FrameAction_MoveToBottomByNumber,
4423     END_FrameAction_e,
4424     FrameAction_Invalid = BadEnumValue,
4425     FrameAction_Pop = FrameAction_PopByNumber,
4426     FrameAction_Push = FrameAction_PushByNumber,
4427     FrameAction_DeleteTop = FrameAction_DeleteActive
4428 } FrameAction_e;
4429 
4430 typedef enum
4431 {
4432     DoubleBufferAction_On,
4433     DoubleBufferAction_Off,
4434     DoubleBufferAction_Swap,
4435     END_DoubleBufferAction_e,
4436     DoubleBufferAction_Invalid = BadEnumValue
4437 } DoubleBufferAction_e;
4438 
4439 /*
4440  * PickAction_CheckToAdd had the side effects of popping a frame that was selected
4441  * only if not collecting.  Pick_AddAtPosition avoids this.
4442  */
4443 typedef enum
4444 {
4445     PickAction_CheckToAdd, /* deprecated: use Pick_AddAtPosition */
4446     PickAction_AddAll,
4447     PickAction_AddAllInRegion,
4448     PickAction_Edit,
4449     PickAction_Cut,
4450     PickAction_Copy,
4451     PickAction_Clear,
4452     PickAction_Paste,
4453     PickAction_PasteAtPosition,
4454     PickAction_Shift,
4455     PickAction_Magnify,
4456     PickAction_Push,
4457     PickAction_Pop,
4458     PickAction_SetMouseMode,
4459     PickAction_DeselectAll,
4460     PickAction_AddZones,
4461     PickAction_AddXYMaps, /* deprecated: use PickAction_AddLineMaps */
4462     PickAction_AddLineMaps,
4463     PickAction_AddAtPosition,
4464     END_PickAction_e,
4465     PickAction_Invalid = BadEnumValue
4466 } PickAction_e;
4467 
4468 
4469 typedef enum
4470 {
4471     ContourLevelAction_Add,
4472     ContourLevelAction_New,
4473     ContourLevelAction_DeleteRange,
4474     ContourLevelAction_Reset,
4475     ContourLevelAction_ResetToNice,
4476     ContourLevelAction_DeleteNearest,
4477     END_ContourLevelAction_e,
4478     ContourLevelAction_Invalid = BadEnumValue
4479 } ContourLevelAction_e;
4480 
4481 typedef enum
4482 {
4483     ContourLabelAction_Add,
4484     ContourLabelAction_DeleteAll,
4485     END_ContourLabelAction_e,
4486     ContourLabelAction_Invalid = BadEnumValue
4487 } ContourLabelAction_e;
4488 
4489 typedef enum
4490 {
4491     StreamtraceAction_Add,
4492     StreamtraceAction_DeleteAll,
4493     StreamtraceAction_DeleteRange,
4494     StreamtraceAction_SetTerminationLine,
4495     StreamtraceAction_ResetDeltaTime,
4496     END_StreamtraceAction_e,
4497     StreamtraceAction_Invalid = BadEnumValue
4498 } StreamtraceAction_e;
4499 
4500 typedef enum
4501 {
4502     ColorMapControlAction_RedistributeControlPoints,
4503     ColorMapControlAction_CopyCannedColorMap,
4504     ColorMapControlAction_ResetToFactoryDefaults,
4505     END_ColorMapControlAction_e,
4506     ColorMapControlAction_Invalid = BadEnumValue
4507 } ColorMapControlAction_e;
4508 
4509 typedef enum
4510 {
4511     ColorMapDistribution_Continuous,
4512     ColorMapDistribution_Banded,
4513     END_ColorMapDistribution_e,
4514     ColorMapDistribution_Invalid = BadEnumValue
4515 } ColorMapDistribution_e;
4516 
4517 typedef enum
4518 {
4519     RGBMode_SpecifyRGB,
4520     RGBMode_SpecifyRG,
4521     RGBMode_SpecifyRB,
4522     RGBMode_SpecifyGB,
4523     END_RGBMode_e,
4524     RGBMode_Invalid = BadEnumValue
4525 } RGBMode_e;
4526 
4527 typedef enum
4528 {
4529     TecUtilErr_None,
4530     TecUtilErr_Undetermined,
4531     END_TecUtilErr_e,
4532     TecUtilErr_Invalid = BadEnumValue
4533 } TecUtilErr_e;
4534 
4535 /* BEGINREMOVEFROMADDON */
4536 /* deprecated type from alpha/beta v10 */
4537 typedef enum
4538 {
4539     AxisShape_Ray,
4540     AxisShape_LineTwoDirections,
4541     AxisShape_LShape,
4542     AxisShape_CrossOrBox,
4543     END_AxisShape_e,
4544     AxisShape_Invalid = BadEnumValue
4545 } AxisShape_e;
4546 
4547 /* licensing enums : keep hidden */
4548 typedef enum
4549 {
4550     RunMode_Demo,
4551     RunMode_Eval,
4552     RunMode_Full,
4553     /**/
4554     END_RunMode_e,
4555     /**/
4556     RunMode_Invalid = BadEnumValue
4557 } RunMode_e;
4558 
4559 /* ENDREMOVEFROMADDON */
4560 
4561 typedef enum /* Custom exporter error message */
4562 {
4563     ExportCustReturnCode_Ok,
4564     ExportCustReturnCode_Failed,
4565     ExportCustReturnCode_TecplotLocked,
4566     ExportCustReturnCode_ExporterNotLoaded,
4567     ExportCustReturnCode_ExportCallbackFailed,
4568     ExportCustReturnCode_NotAnImageExporter,
4569     ExportCustReturnCode_NotAFieldDataExporter,
4570     END_ExportCustReturnCode_e,
4571     ExportCustReturnCode_Invalid = BadEnumValue
4572 } ExportCustReturnCode_e;
4573 
4574 /**
4575  * COB/Zone types.
4576  */
4577 typedef enum
4578 {
4579     CZType_FieldDataZone,
4580     CZType_FEBoundaryCOB,
4581     CZType_IsoSurfaceCOB,
4582     CZType_SliceCOB,
4583     CZType_StreamtraceCOB,
4584     CZType_StreamtraceMarkerCOB,
4585     CZType_StreamtraceArrowheadCOB,
4586     END_CZType_e,
4587     CZType_Invalid = BadEnumValue
4588 } CZType_e;
4589 
4590 /**
4591  */
4592 typedef enum
4593 {
4594     FaceNeighborMode_LocalOneToOne,
4595     FaceNeighborMode_LocalOneToMany,
4596     FaceNeighborMode_GlobalOneToOne,
4597     FaceNeighborMode_GlobalOneToMany,
4598     END_FaceNeighborMode_e,
4599     FaceNeighborMode_Invalid = BadEnumValue
4600 } FaceNeighborMode_e;
4601 
4602 
4603 /**
4604  * Page render destinations.
4605  */
4606 typedef enum
4607 {
4608     PageRenderDest_None,
4609     PageRenderDest_OnScreen,
4610     PageRenderDest_OffScreen,
4611     END_PageRenderDest_e,
4612     PageRenderDest_Invalid = BadEnumValue
4613 } PageRenderDest_e;
4614 
4615 /* BEGINREMOVEFROMADDON */
4616 /*
4617  * Destination for all internal rendering (VDI/Gr) functions. For external
4618  * linkage we translate RenderDest_WorkArea to PageRenderDest_OnScreen,
4619  * RenderDest_OffscreenBitmap to PageRenderDest_OffScreen and
4620  * RenderDest_Invalid to PageRenderDest_None.
4621  */
4622 typedef enum
4623 {
4624     RenderDest_WorkArea, /* Do not move from start of screen entries */
4625     RenderDest_ExampleText,
4626     RenderDest_ExampleLightSourcePosition,
4627     RenderDest_ExampleColorMap,
4628     RenderDest_ExampleBasicColor, /* Do not move from end of screen entries */
4629     RenderDest_OffscreenBitmap,
4630     RenderDest_Hardcopy,
4631     END_RenderDest_e,
4632     RenderDest_Invalid = BadEnumValue,
4633     /*
4634      * These next two are optimizations to make the
4635      * RDT_IsScreen() macro as efficient as possible.
4636      */
4637     RenderDest_FirstScreenEntry = RenderDest_WorkArea,
4638     RenderDest_LastScreenEntry = RenderDest_ExampleBasicColor
4639 } RenderDest_e;
4640 /* ENDREMOVEFROMADDON */
4641 
4642 typedef enum
4643 {
4644     Stipple_All,
4645     Stipple_Critical,
4646     Stipple_None,
4647     END_Stipple_e,
4648     Stipple_Invalid = BadEnumValue
4649 } Stipple_e;
4650 
4651 typedef enum
4652 {
4653     DataFileType_Full,
4654     DataFileType_Grid,
4655     DataFileType_Solution,
4656     END_DataFileType_e,
4657     DataFileType_Invalid = BadEnumValue
4658 } DataFileType_e;
4659 
4660 typedef enum
4661 {
4662     ConditionAwakeReason_Signaled,
4663     ConditionAwakeReason_TimedOut,
4664     END_ConditionAwakeReason_e,
4665     ConditionAwakeReason_Invalid = BadEnumValue
4666 } ConditionAwakeReason_e;
4667 
4668 typedef enum
4669 {
4670     ProbeStatus_Normal,
4671     ProbeStatus_Terminated,
4672     ProbeStatus_Exited,
4673     END_ProbeStatus_e,
4674     ProbeStatus_Invalid = BadEnumValue
4675 } ProbeStatus_e;
4676 
4677 typedef enum
4678 {
4679     FrameSizePosUnits_Paper,
4680     FrameSizePosUnits_Workspace,
4681     END_FrameSizePosUnits_e,
4682     FrameSizePosUnits_Invalid = BadEnumValue
4683 } FrameSizePosUnits_e;
4684 
4685 typedef enum
4686 {
4687     Gridline_Major,
4688     Gridline_Minor,
4689     Gridline_Marker,
4690     END_Gridline_e,
4691     Gridline_Invalid = BadEnumValue
4692 } Gridline_e;
4693 
4694 /* Used by MarkerGridlineDetail */
4695 typedef enum
4696 {
4697     PositionMarkerBy_SolutionTime,
4698     PositionMarkerBy_Constant,
4699     END_PositionMarkerBy_e,
4700     PositionMarkerBy_Invalid = BadEnumValue
4701 } PositionMarkerBy_e;
4702 
4703 
4704 /****************************************************************
4705  *                                                              *
4706  *                     STRUCTURE TYPEDEFS                       *
4707  *                                                              *
4708  ****************************************************************/
4709 
4710 /*
4711  * These are defined to work with pthreads, more work for WINAPI needed
4712  */
4713 typedef struct _Mutex_a* Mutex_pa;
4714 
4715 typedef struct _SpinLock_a* SpinLock_pa; /* NOTE: some platforms may not have spin locks; see use of HAVE_SPINLOCKS define */
4716 
4717 typedef void*(STDCALL *ThreadFunction_pf)(ArbParam_t ThreadData);
4718 
4719 typedef struct _Condition_a* Condition_pa;
4720 
4721 typedef struct _JobControl_s* JobControl_pa;
4722 
4723 typedef void (STDCALL *ThreadPoolJob_pf)(ArbParam_t JobData);
4724 
4725 /* BEGINREMOVEFROMADDON */
4726 #if defined TECPLOTKERNEL
4727 /* CORE SOURCE CODE REMOVED */
4728 #if defined USE_OOSTYLE
4729 #endif
4730 #endif /* TECPLOTKERNEL */
4731 /* ENDREMOVEFROMADDON */
4732 
4733 typedef struct _StringList_s *StringList_pa;
4734 typedef struct _Menu_s       *Menu_pa;
4735 /* BEGINREMOVEFROMADDON */
4736 typedef struct _ArrayList_s  *ArrayList_pa;
4737 /* ENDREMOVEFROMADDON */
4738 typedef struct _LineSegmentProbeResult_s *LineSegProbeResult_pa;
4739 
4740 typedef enum
4741 {
4742     ImageResizeFilter_Texture,
4743     ImageResizeFilter_Box,
4744     ImageResizeFilter_Lanczos2,
4745     ImageResizeFilter_Lanczos3,
4746     ImageResizeFilter_Triangle,
4747     ImageResizeFilter_Bell,
4748     ImageResizeFilter_BSpline,
4749     ImageResizeFilter_Cubic,
4750     ImageResizeFilter_Mitchell,
4751     ImageResizeFilter_Gaussian,
4752     END_ImageResizeFilter_e,
4753     ImageResizeFilter_Invalid = BadEnumValue
4754 } ImageResizeFilter_e;
4755 
4756 typedef enum
4757 {
4758     VarStatus_Passive,
4759     VarStatus_Custom,
4760     VarStatus_Map,
4761     VarStatus_Heap,
4762     VarStatus_NotLoaded,
4763     END_VarStatus_e,
4764     VarStatus_Invalid = BadEnumValue
4765 } VarStatus_e;
4766 
4767 
4768 
4769 /* BEGINREMOVEFROMADDON */
4770 
4771 /* here until GR and GRHW layer can be rearranged. */
4772 #if defined TECPLOTKERNEL
4773 /* CORE SOURCE CODE REMOVED */
4774 #   if !defined NO_ASSERTS
4775 #   endif
4776 #endif /* TECPLOTKERNEL */
4777 
4778 /* ENDREMOVEFROMADDON */
4779 
4780 typedef struct _Set_a *Set_pa;
4781 
4782 typedef struct
4783 {
4784     double X;
4785     double Y;
4786     double Z;
4787 } XYZ_s;
4788 
4789 /* BEGINREMOVEFROMADDON */
4790 
4791 typedef struct
4792 {
4793     double Psi;
4794     double Theta;
4795     double Alpha;
4796 } PTA_s;
4797 
4798 namespace tecplot
4799 {
4800     class Typeface;
4801 }
4802 
4803 typedef struct _Generic3Var_s
4804 {
4805     double V1;
4806     double V2;
4807     double V3;
4808 } Generic3Var_s;
4809 
4810 typedef struct _ThetaR_s
4811 {
4812     double Theta;
4813     double R;
4814 } ThetaR_s;
4815 
4816 /*
4817  * This union is designed to allow different plot types
4818  * to access the same values by different names.  In
4819  * C++ we could use member access functions, or we
4820  * could have used macros, but instead we use this
4821  * union.  NOTE: This only works if all the structures
4822  * have the same alignment.
4823  */
4824 typedef union _AnchorPos_u
4825 {
4826     Generic3Var_s Generic;
4827     XYZ_s         XYZ;
4828     ThetaR_s      ThetaR;
4829 } AnchorPos_u;
4830 
4831 typedef struct _DataFileInfo_s
4832 {
4833     char          *PrimaryFName;
4834     char          *TempBinaryFName;
4835     DataFileType_e FileType;
4836     FileOffset_t   DataFileOffset;
4837     StringList_pa  VarName;
4838     EntIndex_t     NumZones;
4839     EntIndex_t     NumVars;
4840     double         SolutionFileTime;
4841     struct _DataFileInfo_s *NextFile;
4842 } DataFileInfo_s;
4843 
4844 typedef struct _StylesheetIOFlags_s
4845 {
4846     Boolean_t IncludePlotStyle;
4847     Boolean_t IncludeFieldAndMapStyle;     /* Only used for undo */
4848     Boolean_t IncludeUniqueIDs;            /* Only used for undo */
4849     Boolean_t IncludeText;
4850     Boolean_t IncludeGeom;
4851     Boolean_t IncludeGeomImageData;
4852     Boolean_t IncludeAuxData;
4853     Boolean_t IncludeStreamPositions;
4854     Boolean_t IncludeContourLevels;
4855     Boolean_t IncludeFactoryDefaults;      /* Only used when writing */
4856     Boolean_t CompressStyleCommands;       /* Only used when writing */
4857     Boolean_t MergeStyle;                  /* Only used when reading */
4858     Boolean_t IncludeFrameSizeAndPosition; /* Only used when reading */
4859     Boolean_t UseRelativePaths;
4860 } StylesheetIOFlags_s;
4861 
4862 
4863 /**
4864  */
4865 typedef struct
4866 {
4867     Boolean_t Show; /* power switch */
4868     Boolean_t ShowMesh;
4869     Boolean_t ShowContour;
4870     Boolean_t ShowShade;
4871     Boolean_t UseLightingEffect;
4872     Boolean_t UseTranslucency;
4873 } IsoSurfaceLayers_s;
4874 
4875 /**
4876  */
4877 typedef struct
4878 {
4879     Boolean_t Show; /* power switch */
4880     Boolean_t ShowMesh;
4881     Boolean_t ShowContour;
4882     Boolean_t ShowVector;
4883     Boolean_t ShowShade;
4884     Boolean_t ShowEdge;
4885     Boolean_t UseLightingEffect;
4886     Boolean_t UseTranslucency;
4887 } SliceLayers_s;
4888 
4889 /**
4890  */
4891 typedef struct
4892 {
4893     Boolean_t Show; /* power switch */
4894     Boolean_t ShowPaths;
4895     Boolean_t ShowDashes;
4896     Boolean_t ShowArrowheads;
4897     Boolean_t ShowMesh;
4898     Boolean_t ShowContour;
4899     Boolean_t ShowShade;
4900     Boolean_t ShowMarkers;
4901     Boolean_t UseLightingEffect;
4902     Boolean_t UseTranslucency;
4903 } StreamtraceLayers_s;
4904 
4905 /**
4906  */
4907 typedef struct
4908 {
4909 #if 0 /* in the future we may add a main power switch */
4910     Boolean_t       Show; /* power switch */
4911 #endif
4912     TwoDDrawOrder_e TwoDDrawOrder;
4913     Boolean_t       ShowMesh;
4914     Boolean_t       ShowContour;
4915     Boolean_t       ShowVector;
4916     Boolean_t       ShowScatter;
4917     Boolean_t       ShowShade;
4918     Boolean_t       ShowEdge;
4919     Boolean_t       UseLightingEffect;
4920     Boolean_t       UseTranslucency;
4921 } FieldLayers_s;
4922 
4923 /**
4924  * General purpose field layers structure used for low level drawing code only.
4925  * SetupXxxx is responsible for populating this general field layers structure
4926  * from the specific layer structures above for CZInfo.
4927  */
4928 typedef struct
4929 {
4930     Boolean_t ShowMesh;
4931     Boolean_t ShowContour;
4932     Boolean_t ShowVector;
4933     Boolean_t ShowScatter;
4934     Boolean_t ShowShade;
4935     Boolean_t ShowEdge;
4936     Boolean_t UseLightingEffect;
4937     Boolean_t UseTranslucency;
4938 } CZFieldLayers_s;
4939 
4940 /**
4941  */
4942 typedef struct _LinePlotLayers_s
4943 {
4944 #if 0 /* in the future we may add a main power switch */
4945     Boolean_t       Show; /* power switch */
4946 #endif
4947     Boolean_t ShowLines;
4948     Boolean_t ShowSymbols;
4949     Boolean_t ShowBarCharts;
4950     Boolean_t ShowErrorBars;
4951 } LinePlotLayers_s;
4952 
4953 
4954 typedef union _InterfaceAdjust_u
4955 {
4956     double    ScaleFact;
4957     LgIndex_t Shift;
4958 } InterfaceAdjust_u;
4959 
4960 typedef Boolean_t (*SuffixModifier_pf)(TP_IN_OUT double* Value,
4961                                        const char*       Suffix);
4962 
4963 typedef struct _InputSpecs_s
4964 {
4965     Input_e           Type;
4966     double            Min;
4967     double            Max;
4968     InterfaceAdjust_u InterfaceAdjust;
4969     SuffixModifier_pf SuffixModifier;
4970 } InputSpec_s;
4971 
4972 
4973 typedef struct _RGB_s
4974 {
4975     ColorIndex_t R;
4976     ColorIndex_t G;
4977     ColorIndex_t B;
4978 } RGB_s;
4979 
4980 
4981 typedef struct _ControlPoint_s
4982 {
4983     double ColorMapFraction;
4984     RGB_s  LeadRGB;
4985     RGB_s  TrailRGB;
4986 } ControlPoint_s;
4987 
4988 
4989 typedef struct _ColorMapBand_s
4990 {
4991     short          NumControlPoints;
4992     ControlPoint_s ControlPoint[MaxColorMapControlPoints];
4993 } ColorMapBand_s;
4994 
4995 
4996 typedef struct _EventAction_s
4997 {
4998     int       I;
4999     int       J;
5000     int       LastI;
5001     int       LastJ;
5002     int       BaseI;
5003     int       BaseJ;
5004     int       ButtonOrKey;
5005     Event_e   Event;
5006     Boolean_t IsShifted;
5007     Boolean_t IsAlted;
5008     Boolean_t IsControlled;
5009     Boolean_t WasShiftedOnButtonPress;
5010     Boolean_t WasAltedOnButtonPress;
5011     Boolean_t WasControlledOnButtonPress;
5012 } EventAction_s;
5013 
5014 typedef struct _MacroCmd_s
5015 {
5016     LString_t           MacroLine;
5017     struct _MacroCmd_s *NextCmd;
5018 } MacroCmd_s;
5019 
5020 
5021 typedef struct _IntegerRect_s
5022 {
5023     LgIndex_t X1;
5024     LgIndex_t Y1;
5025     LgIndex_t X2;
5026     LgIndex_t Y2;
5027 } IntegerRect_s;
5028 
5029 
5030 typedef struct _Rect_s
5031 {
5032     double X1;
5033     double Y1;
5034     double X2;
5035     double Y2;
5036 } Rect_s;
5037 
5038 typedef struct _XY_s
5039 {
5040     double X;
5041     double Y;
5042 } XY_s;
5043 
5044 typedef struct _IJKSkip_s
5045 {
5046     LgIndex_t  I;
5047     LgIndex_t  J;
5048     LgIndex_t  K;
5049 } IJKSkip_s;
5050 
5051 
5052 
5053 /*
5054  *
5055  *  NOTE ON RANGES (Ent and Index)
5056  *
5057  *  Min, Max and Skip all use the following assignment logic:
5058  *
5059  *              0 = First element
5060  *             -1 = mxindex value,  (X[mxindex-1] in c)
5061  *             -n = mxindex-n+1  value (X[mxindex+n] in c)
5062  *              n = n+1 value (X[n] in c)
5063  *
5064  */
5065 
5066 /*
5067  *  2/28/95:  NOTE:  EntRange_s is no longer used but may be
5068  *                   needed later.
5069  */
5070 
5071 typedef struct _EntRange_s
5072 {
5073     EntIndex_t Min;
5074     EntIndex_t Max;
5075     EntIndex_t Skip;
5076 } EntRange_s;
5077 
5078 
5079 typedef struct _IndexRange_s
5080 {
5081     LgIndex_t Min;
5082     LgIndex_t Max;
5083     LgIndex_t Skip;
5084 } IndexRange_s;
5085 
5086 
5087 #if defined TECPLOTKERNEL
5088 /* CORE SOURCE CODE REMOVED */
5089 #if defined (THREED)
5090 #endif
5091 #endif /* TECPLOTKERNEL */
5092 
5093 typedef struct _TextShape_s
5094 {
5095 #if defined TECPLOTKERNEL
5096 /* CORE SOURCE CODE REMOVED */
5097 #else
5098     Font_e                    Font;
5099 #endif
5100     double                    Height;
5101     Units_e                   SizeUnits;
5102 } TextShape_s;
5103 
5104 #define AsciiShapeFontIsGreek(S)       (((S)->useBaseFont == FALSE) && (FontLibrary::instance().font((S)->typefaceOverride) == Font_Greek))
5105 #define AsciiShapeFontIsMath(S)        (((S)->useBaseFont == FALSE) && (FontLibrary::instance().font((S)->typefaceOverride) == Font_Math))
5106 #define AsciiShapeFontIsUserDefined(S) (((S)->useBaseFont == FALSE) && (FontLibrary::instance().font((S)->typefaceOverride) == Font_UserDefined))
5107 
5108 
5109 typedef struct
5110 {
5111     Boolean_t                useBaseFont;
5112     tecplot::Typeface const* typefaceOverride;
5113     SymbolChar_t             Char;
5114 } AsciiShape_s;
5115 
5116 typedef struct _SymbolShape_s
5117 {
5118     GeomShape_e  GeomShape;
5119     Boolean_t    IsAscii;
5120     AsciiShape_s AsciiShape;
5121 } SymbolShape_s;
5122 
5123 #ifdef NOT_USED
5124 struct _AddOnList_a
5125 {
5126     /* added temporarily so Windows makelibtec works */
5127     int dummy;
5128 };
5129 #endif
5130 
5131 /* ENDREMOVEFROMADDON */
5132 
5133 typedef struct _AddOnList_a *AddOn_pa;
5134 
5135 typedef struct _NodeMap_a *NodeMap_pa;
5136 
5137 /* BEGINREMOVEFROMADDON */
5138 typedef struct _StylePointState_a   *StylePointState_pa;
5139 typedef struct _DataElementState_a  *DataElementState_pa;
5140 typedef struct _StyleElementState_a *StyleElementState_pa;
5141 typedef struct _NormalCache_a       *NormalCache_pa;
5142 /* ENDREMOVEFROMADDON */
5143 
5144 
5145 #define INVALID_INDEX (-1)
5146 
5147 /* used to indicate that no neighboring element or zone exists */
5148 #define NO_NEIGHBORING_ELEMENT (-1)
5149 #define NO_NEIGHBORING_ZONE    (-1)
5150 
5151 typedef struct _FaceNeighbor_a *FaceNeighbor_pa;
5152 
5153 /**
5154  */
5155 typedef struct _FaceMap_a *FaceMap_pa;
5156 
5157 /**
5158  */
5159 typedef struct _ElemToFaceMap_a *ElemToFaceMap_pa;
5160 
5161 /**
5162  */
5163 typedef struct _NodeToElemMap_a *NodeToElemMap_pa;
5164 
5165 /* BEGINREMOVEFROMADDON */
5166 
5167 /*
5168  * Enumerates the face neighbor array members to make indexed members
5169  * identifiable.
5170  */
5171 typedef enum
5172 {
5173     FaceNeighborMemberArray_CellFaceNbrs,
5174     FaceNeighborMemberArray_BndryConnectNbrsCompObscure,
5175     FaceNeighborMemberArray_BndryConnectFaceToCellsMap,
5176     FaceNeighborMemberArray_BndryConnectIsPerfectNbr,
5177     FaceNeighborMemberArray_BndryConnectCellList,
5178     FaceNeighborMemberArray_BndryConnectZoneList,
5179     END_FaceNeighborMemberArray_e,
5180     FaceNeighborMemberArray_Invalid = BadEnumValue
5181 } FaceNeighborMemberArray_e;
5182 
5183 int const FaceNeighborNumMemberArrays = (int)END_FaceNeighborMemberArray_e;
5184 
5185 /*
5186  * Enumerates the face map's array members to make indexed members
5187  * identifiable.
5188  */
5189 typedef enum
5190 {
5191     FaceMapMemberArray_FaceNodeOffsets,
5192     FaceMapMemberArray_FaceNodes,
5193     FaceMapMemberArray_FaceLeftElems,
5194     FaceMapMemberArray_FaceRightElems,
5195     FaceMapMemberArray_FaceBndryItemOffsets,
5196     FaceMapMemberArray_FaceBndryItemElems,
5197     FaceMapMemberArray_FaceBndryItemElemZones,
5198     END_FaceMapMemberArray_e,
5199     FaceMapMemberArray_Invalid = BadEnumValue
5200 } FaceMapMemberArray_e;
5201 
5202 const int FaceMapNumMemberArrays = (int)END_FaceMapMemberArray_e;
5203 
5204 /*
5205  * Enumerates the element to face map's array members to make indexed members
5206  * identifiable.
5207  */
5208 typedef enum
5209 {
5210     ElemToFaceMapMemberArray_ElemFaceOffsets,
5211     ElemToFaceMapMemberArray_ElemFaces,
5212     END_ElemToFaceMapMemberArray_e,
5213     ElemToFaceMapMemberArray_Invalid = BadEnumValue
5214 } ElemToFaceMapMemberArray_e;
5215 
5216 const int ElemToFaceMapNumMemberArrays = (int)END_ElemToFaceMapMemberArray_e;
5217 
5218 /*
5219  * Enumerates the element map's array members to make indexed members
5220  * identifiable.
5221  */
5222 typedef enum
5223 {
5224     NodeToElemMapMemberArray_NodeElemOffsets,
5225     NodeToElemMapMemberArray_NodeElems,
5226     END_NodeToElemMapMemberArray_e,
5227     NodeToElemMapMemberArray_Invalid = BadEnumValue
5228 } NodeToElemMapMemberArray_e;
5229 
5230 const int NodeToElemMapNumMemberArrays = (int)END_NodeToElemMapMemberArray_e;
5231 
5232 /* ENDREMOVEFROMADDON */
5233 
5234 
5235 typedef struct _FieldData_a *FieldData_pa;
5236 
5237 /**
5238  */
5239 typedef struct _AuxData_s  *AuxData_pa;
5240 
5241 
5242 /**
5243  * Enumerates the data value structure of a variable in a data file.
5244  * For all but ordered cell centered data the classic, classic padded and
5245  * classic plus formats are identical. All values are laid out contiguously
5246  * in the file. The number of values written depends upon the value location:
5247  *
5248  *   - FE nodal:\n
5249  *     The number of values equals the number of data points.
5250  *   - FE cell centered:\n
5251  *     The number of values equals the number of elements.
5252  *   - Ordered nodal:\n
5253  *     The number of values equals the number of data points.
5254  *   - Ordered cell centered:\n
5255  *     There are three formats:
5256  *     -# Classic (binary version < 103):\n
5257  *          Classic is a compressed format of ordered cell centered data in
5258  *          that it does not include ghost cells. The cell index of each cell
5259  *          does not correspond to the lowest corner point index of each cell
5260  *          as it does internally in Tecplot.\n
5261  *          The number of values in the data file is calculated as follows:
5262  *          @code
5263  *            NumValues = MAX(IMax-1,1) * MAX(JMax-1,1) * MAX(KMax-1,1);
5264  *          @endcode
5265  *          Where IMax, JMax, and KMax are the maximum point dimensions of the
5266  *          zone.
5267  *     -# Classic padded (binary version < 104):\n
5268  *          Classic padded is an intermediary format that was available only
5269  *          within Tecplot, Inc. The cell centered data includes the ghost cells
5270  *          and each cell index corresponds to the lowest corner point index of
5271  *          each cell.\n
5272  *          The number of values in the data file (including ghost cells) is
5273  *          calculated as follows:
5274  *          @code
5275  *            NumValues = IMax * JMax * KMax;
5276  *          @endcode
5277  *          Where IMax, JMax, and KMax are the maximum point dimensions of the
5278  *          zone. The contents of the ghost cells is undefined and should not
5279  *          be used.
5280  *     -# Classic plus (binary version >= 104):\n
5281  *          Classic plus is similar to classic padded except that it does not
5282  *          include the ghost cells of the slowest moving index greater than
5283  *          one.\n
5284  *          The number of values in the data file (including ghost cells) is
5285  *          calculated as follows:
5286  *          @code
5287  *            FinalIMax = IMax;
5288  *            FinalJMax = JMax;
5289  *            FinalKMax = KMax;
5290  *
5291  *            // decrement the max index of the slowest moving index greater than 1
5292  *            if (KMax > 1)
5293  *              FinalKMax--;
5294  *            else if (JMax > 1)
5295  *              FinalJMax--;
5296  *            else if (IMax > 1)
5297  *              FinalIMax--;
5298  *
5299  *            NumValues = FinalIMax * FinalJMax * FinalKMax;
5300  *          @endcode
5301  *          Where IMax, JMax, and KMax are the maximum point dimensions of the
5302  *          zone. The contents of the ghost cells is undefined and should not
5303  *          be used.
5304  */
5305 typedef enum
5306 {
5307     DataValueStructure_Classic,
5308     DataValueStructure_ClassicPadded,
5309     DataValueStructure_ClassicPlus,
5310     END_DataValueStructure_e,
5311     /* BEGINREMOVEFROMADDON */
5312     DataValueStructure_Latest = (END_DataValueStructure_e - 1),
5313     /* ENDREMOVEFROMADDON */
5314     DataValueStructure_Invalid = BadEnumValue
5315 } DataValueStructure_e;
5316 
5317 /**
5318  * Enumerates the data node structure of a node map in a data file. The classic
5319  * format uses 1 based nodes while the classic plus format uses zero based
5320  * node.
5321  */
5322 typedef enum
5323 {
5324     DataNodeStructure_Classic,     /* ones based node maps */
5325     DataNodeStructure_ClassicPlus, /* zero based node maps */
5326     END_DataNodeStructure_e,
5327     DataNodeStructure_Invalid = BadEnumValue
5328 } DataNodeStructure_e;
5329 
5330 /**
5331  * Enumerates the variable locking modes. The \ref VarLockMode_ValueChange mode
5332  * prevents modification of the values in a variable but permits deletion, and
5333  * the \ref VarLockMode_Delete mode prevents deletion of a varaible but permits
5334  * modification.
5335  */
5336 typedef enum
5337 {
5338     VarLockMode_ValueChange,
5339     VarLockMode_Delete,
5340     END_VarLockMode_e,
5341     VarLockMode_Invalid = BadEnumValue
5342 } VarLockMode_e;
5343 
5344 typedef enum
5345 {
5346     FieldMapMode_UseStrandID,
5347     FieldMapMode_UseZoneSet,
5348     END_FieldMapMode_e,
5349     FieldMapMode_Invalid = BadEnumValue
5350 } FieldMapMode_e;
5351 
5352 typedef enum
5353 {
5354     UnloadStrategy_Auto,
5355     UnloadStrategy_NeverUnload,
5356     UnloadStrategy_MinimizeMemoryUse,
5357     END_UnloadStrategy_e,
5358     UnloadStrategy_Invalid = BadEnumValue
5359 } UnloadStrategy_e;
5360 
5361 /* BEGINREMOVEFROMADDON */
5362 
5363 
5364 
5365 typedef struct
5366 {
5367     ColorIndex_t       PresetZoneColor;
5368     Boolean_t          IsInBlockFormat;
5369 } ZoneLoadInfo_s;
5370 
5371 /*
5372  * Note: For FE Data, NumPtsI = Number of data points.
5373  *                    NumPtsJ = Number of elements.
5374  *                    NumPtsK = Number of points per element.
5375  */
5376 
5377 typedef struct _ZoneSpec_s
5378 {
5379     UniqueID_t         UniqueID;
5380     ZoneName_t         Name;
5381     EntIndex_t         ParentZone;
5382     Strand_t           StrandID;
5383     double             SolutionTime;
5384     LgIndex_t          NumPtsI;  /* ...NumDataPts */
5385     LgIndex_t          NumPtsJ;  /* ...NumElements */
5386     LgIndex_t          NumPtsK;  /* ...NumPtsPerElem or NumFaces */
5387     LgIndex_t          ICellDim; /* ...currently not used */
5388     LgIndex_t          JCellDim; /* ...currently not used */
5389     LgIndex_t          KCellDim; /* ...currently not used */
5390     ZoneType_e         Type;
5391     ZoneLoadInfo_s     ZoneLoadInfo;
5392     AuxData_pa         AuxData;
5393     Boolean_t          BuildZoneOptInfo;
5394 
5395     /* classic data only */
5396     FaceNeighborMode_e FNMode;
5397     Boolean_t          FNAreCellFaceNbrsSupplied; /* ...meaning we don't need to update them */
5398 
5399     /* polytope data only */
5400     LgIndex_t          NumFaceNodes;
5401     LgIndex_t          NumFaceBndryFaces;
5402     LgIndex_t          NumFaceBndryItems;
5403 } ZoneSpec_s;
5404 
5405 
5406 
5407 #if defined TECPLOTKERNEL
5408 /* CORE SOURCE CODE REMOVED */
5409 #endif /* TECPLOTKERNEL */
5410 
5411 typedef struct _GenericImage_a *GenericImage_pa;
5412 
5413 typedef struct _TextBox_s
5414 {
5415     TextBox_e        BoxType;       /* Used to be textbox */
5416     double           Margin;        /* Used to be textboxmargin */
5417     double           LineThickness; /* Used to be textboxmargin */
5418     ColorIndex_t     BColor;        /* Used to be textboxcolor */
5419     ColorIndex_t     FillBColor;    /* Used to be textboxfillcolor */
5420 } TextBox_s;
5421 
5422 
5423 typedef struct _Text_s
5424 {
5425     UniqueID_t       UniqueID; /* Not used yet */
5426     AnchorPos_u      AnchorPos;
5427     CoordSys_e       PositionCoordSys;
5428     EntIndex_t       Zone;
5429     Boolean_t        AttachToZone; /* New */
5430     ColorIndex_t     BColor;       /* Used to be TextColor */
5431     TextShape_s      TextShape;
5432     TextBox_s        Box;          /* Box items used to be here*/
5433     double           Angle;        /* NOTE: short in v6, now in rad */
5434     TextAnchor_e     Anchor;       /* New */
5435     double           LineSpacing;  /* New */
5436     Scope_e          Scope;
5437     char            *MacroFunctionCommand;
5438     Clipping_e       Clipping;
5439     char            *Text;
5440     struct _Text_s  *NextText;
5441     struct _Text_s  *PrevText;
5442 } Text_s;
5443 
5444 
5445 typedef struct _GenericGeomData_s
5446 {
5447     FieldData_pa  V1Base;
5448     FieldData_pa  V2Base;
5449     FieldData_pa  V3Base;
5450 } GenericGeomData_s;
5451 
5452 typedef struct _PolarGeomData_s
5453 {
5454     FieldData_pa  ThetaBase;
5455     FieldData_pa  RBase;
5456 } PolarGeomData_s;
5457 
5458 typedef struct _CartesianGeomData_s
5459 {
5460     FieldData_pa  XBase;
5461     FieldData_pa  YBase;
5462     FieldData_pa  ZBase;
5463 } CartesianGeomData_s;
5464 
5465 /*
5466  * This union is designed to allow different plottypes
5467  * to access the same values by different names.  In
5468  * C++ we could use member access functions, or we
5469  * could have used macros, but instead we use this
5470  * union.  NOTE: This only works if all the structures
5471  * have the same alignment.
5472  */
5473 typedef union _GeomData_u
5474 {
5475     GenericGeomData_s   Generic;
5476     CartesianGeomData_s XYZ;
5477     PolarGeomData_s     ThetaR;
5478 } GeomData_u;
5479 
5480 typedef struct _Geom_s
5481 {
5482     UniqueID_t              UniqueID;
5483     GeomType_e              GeomType;
5484     CoordSys_e              PositionCoordSys;
5485     AnchorPos_u             AnchorPos;
5486     Boolean_t               AttachToZone;
5487     EntIndex_t              Zone;
5488     ColorIndex_t            BColor;
5489     Boolean_t               IsFilled;
5490     ColorIndex_t            FillBColor;
5491     LinePattern_e           LinePattern;
5492     double                  PatternLength;
5493     double                  LineThickness;
5494     Scope_e                 Scope;
5495     DrawOrder_e             DrawOrder;
5496     Clipping_e              Clipping;
5497     FieldDataType_e         DataType;
5498     char                   *MacroFunctionCommand;
5499     ArrowheadStyle_e        ArrowheadStyle;
5500     ArrowheadAttachment_e   ArrowheadAttachment;
5501     double                  ArrowheadSize;
5502     double                  ArrowheadAngle;
5503     SmInteger_t             NumEllipsePts;
5504     char                   *ImageFileName;
5505     LgIndex_t               ImageNumber; /* used only to locate images within .lpk files */
5506     Boolean_t               MaintainAspectRatio;
5507     double                  PixelAspectRatio; /* VerticalPixelsPerHorizontalPixel */
5508     SmInteger_t             NumSegments;
5509     SegPtsArray_t           NumSegPts;
5510     GeomData_u              GeomData;
5511     ImageResizeFilter_e     ImageResizeFilter;
5512     /* Internal Scratch */
5513     GenericImage_pa         _ImageData;
5514     struct _Geom_s         *_NextGeom;
5515     struct _Geom_s         *_PrevGeom;
5516 } Geom_s;
5517 
5518 
5519 typedef struct _Text_s  *Text_pa;
5520 typedef struct _Geom_s  *Geom_pa;
5521 
5522 
5523 #if defined TECPLOTKERNEL
5524 /* CORE SOURCE CODE REMOVED */
5525     #if defined USE_VBOs
5526     #endif
5527 #if defined USE_OOSTYLE
5528 #endif
5529 #if defined USE_OOSTYLE
5530 #endif
5531 #endif /* TECPLOTKERNEL */
5532 
5533 /* ENDREMOVEFROMADDON */
5534 /* - NO DOXYGEN COMMENT GENERATION -
5535  * Page creation callback is responsible for creating a RenderHandler for the page and
5536  * calling @ref TecEngPageCreateNew(ArbParam_t RenderHandle)
5537  *
5538  * The RenderHandler type can be anything, for example,a pointer to a class instance that will
5539  * be responsible for handling requests from the engine to perform operations on
5540  * a page.
5541  *
5542  * @param PageConstructionHints a string list of construction hints that can be used for deciding
5543  * how the page should be displayed in an application's UI. The construction hints could have been
5544  * restored from a saved layout file or passed to @ref TecUtilPageCreateNew function.
5545  *
5546  * @param RegistrationClientData
5547  *   Client data that was registered with the callback.
5548  *
5549  * @return TRUE if page create request was handled and TecEngPageCreateNew() returned TRUE.
5550  *
5551  * @sa TecEngPageCreateRegisterCallback, TecEngPageCreateNew
5552  *
5553  * @since
5554  *   11.0-5-014
5555  */
5556 typedef Boolean_t (STDCALL *PageCreateCallback_pf)(StringList_pa PageConstructionHints,
5557                                                    ArbParam_t    RegistrationClientData);
5558 
5559 /* - NO DOXYGEN COMMENT GENERATION -
5560  * Page destruction callback responsible for destroying a page.
5561  *
5562  * @param PageClientData
5563  *   Data associated with a page that was returned from the PageCreateCallback_pf
5564  *   callback function.   You will get a different value for each page.
5565  *
5566  * @param RegistrationClientData
5567  *   Data associated with the registration of this function.   This will always return
5568  *   the value supplied in the original registration of this function.
5569  *
5570  * @sa TecEngPageDestroyRegisterCallback, PageCreateCallback_pf
5571  *
5572  * @since
5573  *   11.0-5-014
5574  */
5575 typedef void (STDCALL *PageDestroyCallback_pf)(ArbParam_t PageClientData,
5576                                                ArbParam_t RegistrationClientData);
5577 
5578 /* - NO DOXYGEN COMMENT GENERATION -
5579  * Callback responsible for informing the parent application of a new current page.
5580  * Note that this could be done via a state change monitor but a more secure method
5581  * is needed as state changes may be shut down from time to time.
5582  *
5583  * @param PageClientData
5584  *   Data associated with a page that was returned from the PageCreateCallback_pf
5585  *   callback function.   You will get a different value for each page.
5586  *
5587  * @param RegistrationClientData
5588  *   Data associated with the registration of this function.   This will always return
5589  *   the value supplied in the original registration of this function.
5590  *
5591  * @since
5592  *   11.0-5-017
5593  */
5594 typedef void (STDCALL *PageNewCurrentCallback_pf)(ArbParam_t PageClientData,
5595                                                   ArbParam_t RegistrationClientData);
5596 
5597 /* - NO DOXYGEN COMMENT GENERATION -
5598  * Callback responsible for creation of an offscreen image.
5599  *
5600  * @param RegistrationClientData
5601  *   Data associated with the registration of this function.   This will always return
5602  *   the value supplied in the original registration of this function.
5603  *
5604  * @param ImageHandle handle to a newly created image. This is an output parameter.
5605  *
5606  * @return TRUE if an offscreen image was created successfully.
5607  *
5608  * @since
5609  *   11.2-0-054
5610  */
5611 typedef Boolean_t (STDCALL *OffscreenImageCreateCallback_pf)(ScreenDim_t        Width,
5612                                                              ScreenDim_t        Height,
5613                                                              ArbParam_t         RegistrationClientData,
5614                                                              TP_OUT ArbParam_t* ImageHandle);
5615 
5616 /* - NO DOXYGEN COMMENT GENERATION -
5617  * Callback responsible for destruction of an offscreen image.
5618  *
5619  * @param ImageHandle handle to an offscreen image to be destroyed.
5620  *
5621  * @param RegistrationClientData
5622  *   Data associated with the registration of this function.   This will always return
5623  *   the value supplied in the original registration of this function.
5624  *
5625  * @since
5626  *   11.2-0-054
5627  */
5628 typedef void (STDCALL *OffscreenImageDestroyCallback_pf)(ArbParam_t ImageHandle,
5629                                                          ArbParam_t RegistrationClientData);
5630 
5631 /* - NO DOXYGEN COMMENT GENERATION -
5632  * Callback responsible for returning RGB values for a row.
5633  *
5634  * @param ImageHandle
5635  *     Handle to an off-screen image from which RGB values to be retrieved.
5636  *
5637  * @param Row
5638  *     Row for which RGB values to be retrieved.
5639  *
5640  * @param RedArray
5641  *     Array to receive the red byte values for the specified Row. The number of values in
5642  *     the array must equal the width of the image. The array address is maintained by the
5643  *     Tecplot Engine until the image is destroyed however it is reused for each invocation
5644  *     of this callback.
5645  *
5646  * @param GreenArray
5647  *     Array to receive the green byte values for the specified Row. The number of values in
5648  *     the array must equal the width of the image. The array address is maintained by the
5649  *     Tecplot Engine until the image is destroyed however it is reused for each invocation
5650  *     of this callback.
5651  *
5652  * @param BlueArray
5653  *     Array to receive the blue byte values for the specified Row. The number of values in
5654  *     the array must equal the width of the image. The array address is maintained by the
5655  *     Tecplot Engine until the image is destroyed however it is reused for each invocation
5656  *     of this callback.
5657  *
5658  * @param RegistrationClientData
5659  *     Data associated with the registration of this function.   This will always return
5660  *     the value supplied in the original registration of this function.
5661  *
5662  * @return TRUE if successful, FALSE otherwise.
5663  *
5664  * @since
5665  *     11.2-0-054
5666  */
5667 typedef Boolean_t (STDCALL *OffscreenImageGetRGBRowCallback_pf)(ArbParam_t           ImageHandle,
5668                                                                 ScreenDim_t          Row,
5669                                                                 ArbParam_t           RegistrationClientData,
5670                                                                 TP_ARRAY_OUT Byte_t* RedArray,
5671                                                                 TP_ARRAY_OUT Byte_t* GreenArray,
5672                                                                 TP_ARRAY_OUT Byte_t* BlueArray);
5673 
5674 #if defined MSWIN
5675 /* - NO DOXYGEN COMMENT GENERATION -
5676  * Callback responsible for printing an image on the specified printer DC
5677  *
5678  * @param PrintDC a device context of a printer on which the printing should be performed.
5679  *
5680  * @param ImageHandle handle to an image to print.
5681  *
5682  * @param Palette specifies if an image should be printed as a color or monochrome image.
5683  *
5684  * @param RegistrationClientData
5685  *   Data associated with the registration of this function.   This will always return
5686  *   the value supplied in the original registration of this function.
5687  *
5688  * @return TRUE if the printing operation was successfull.
5689  *
5690  * @since
5691  *   11.2-0-463
5692  */
5693 typedef Boolean_t (STDCALL *WinPrintImageCallback_pf)(HDC        PrintDC,
5694                                                       ArbParam_t ImageHandle,
5695                                                       Palette_e  Palette,
5696                                                       ArbParam_t RegistrationClientData);
5697 
5698 #endif /* MSWIN */
5699 
5700 #if defined MSWIN
5701 /* - NO DOXYGEN COMMENT GENERATION -
5702  * Callback responsible for providing a printer context.
5703  *
5704  * @param RegistrationClientData
5705  *   Data associated with the registration of this function.   This will always return
5706  *   the value supplied in the original registration of this function.
5707  *
5708  * @return HDC context of the destination printer.
5709  *
5710  * @since
5711  *   11.2-0-468
5712  */
5713 typedef HDC(STDCALL *WinPrinterGetContextCallback_pf)(ArbParam_t RegistrationClientData);
5714 
5715 #endif /* MSWIN */
5716 
5717 /* - NO DOXYGEN COMMENT GENERATION -
5718  * Render destination callback responsible for switching the render destination
5719  * of the OpenGL drawing state when requested by the Tecplot engine.
5720  *
5721  * @since
5722  *   11.0-0-397
5723  *
5724  * @param PageRenderDest
5725  *   Enumeration of page render destination of interest.
5726  *
5727  * @param RenderDestClientData
5728  *   Data associated with a render destination, such as returned from the PageCreateCallback_pf or
5729  *   OffscreenImageCreate_pf callback functions.
5730  *
5731  * @param RegistrationClientData
5732  *   Data associated with the registration of this function. This will always return
5733  *   the value supplied in the original registration of this function.
5734  *
5735  * @return
5736  *   TRUE if render destination was set successfully. FALSE, otherwise.
5737  *
5738  * @sa TecEngRenderDestRegisterCallback
5739  */
5740 typedef Boolean_t (STDCALL *RenderDestCallback_pf)(PageRenderDest_e PageRenderDest,
5741                                                    ArbParam_t       RenderDestClientData,
5742                                                    ArbParam_t       RegistrationClientData);
5743 
5744 /* - NO DOXYGEN COMMENT GENERATION -
5745  * Render query callback responsible for informing Tecplot if the page
5746  * associated with the PageClientData should be rendered into.
5747  *
5748  * @since
5749  *   11.0-5-018
5750  *
5751  * @param PageClientData
5752  *   Data associated with a page that was returned from the
5753  *   PageCreateCallback_pf callback function.
5754  * @param RegistrationClientData
5755  *   Data associated with the registration of this function. This will always
5756  *   return the value supplied in the original registration of this function.
5757  *
5758  *
5759  * @return
5760  *   TRUE if Tecplot should render to the page identified by the
5761  *   PageClientData, FALSE otherwise.
5762  *
5763  * @sa TecEngRenderQueryRegisterCallback
5764  */
5765 typedef Boolean_t (STDCALL *RenderQueryCallback_pf)(ArbParam_t PageClientData,
5766                                                     ArbParam_t RegistrationClientData);
5767 /* - NO DOXYGEN COMMENT GENERATION -
5768  * Render destination size callback responsible for returning the size of the
5769  * specified render destination when requested by the Tecplot engine.
5770  *
5771  * @since
5772  *   11.0-0-397
5773  *
5774  * @param PageClientData
5775  *   Data associated with a page that was returned from the
5776  *   PageCreateCallback_pf callback function.
5777  * @param RegistrationClientData
5778  *   Client data that was registered with the callback.
5779  * @param Width
5780  *   Pointer who's contents should receive the width of the current render
5781  *   destination.
5782  * @param Height
5783  *   Pointer who's contents should receive the height of the current render
5784  *   destination.
5785  *
5786  * @sa TecEngRenderDestSizeRegisterCallback
5787  */
5788 typedef void (STDCALL *RenderDestSizeCallback_pf)(ArbParam_t        PageClientData,
5789                                                   ArbParam_t        RegistrationClientData,
5790                                                   TP_OUT LgIndex_t* Width,
5791                                                   TP_OUT LgIndex_t* Height);
5792 
5793 /* - NO DOXYGEN COMMENT GENERATION -
5794  * Callback responsible for swapping the front and back buffers for the current
5795  * OpenGL drawing state's render destination when requested by the Tecplot
5796  * engine.
5797  *
5798  * @since
5799  *   11.0-0-397
5800  *
5801  * @param RegistrationClientData
5802  *   Client data that was registered with the callback.
5803  *
5804  * @sa TecUtilpBuffersRegisterCallback
5805  */
5806 typedef void (STDCALL *SwapBuffersCallback_pf)(ArbParam_t RegistrationClientData);
5807 
5808 
5809 /* - NO DOXYGEN COMMENT GENERATION -
5810  * Callback responsible for querying of key states.
5811  *
5812  * @since
5813  *   11.0-0-399
5814  *
5815  * @param RegistrationClientData
5816  *   Client data that was registered with the callback.
5817  * @param IsShiftKeyDown
5818  *   Boolean pointer. If non-NULL, set the boolean to TRUE if the Shift key is
5819  *   down or FALSE if it is up.
5820  * @param IsAltKeyDown
5821  *   Boolean pointer. If non-NULL, set the boolean to TRUE if the Alt key is
5822  *   down or FALSE if it is up.
5823  * @param IsCntrlKeyDown
5824  *   Boolean pointer. If non-NULL, set the boolean to TRUE if the Cntrl key is
5825  *   down or FALSE if it is up.
5826  *
5827  * @sa TecEngKeyStateRegisterCallback
5828  */
5829 typedef void (STDCALL *KeyStateCallback_pf)(ArbParam_t        RegistrationClientData,
5830                                             TP_OUT Boolean_t* IsShiftKeyDown,
5831                                             TP_OUT Boolean_t* IsAltKeyDown,
5832                                             TP_OUT Boolean_t* IsCntrlKeyDown);
5833 
5834 /* - NO DOXYGEN COMMENT GENERATION -
5835  * Callback responsible for querying of a mouse button state.
5836  *
5837  * @since
5838  *   11.0-0-424
5839  *
5840  * @param Button
5841  *   Mouse button number to query. Button numbers start at one.
5842  * @param RegistrationClientData
5843  *   Client data that was registered with the callback.
5844  *
5845  * @return
5846  *   TRUE if the specified mouse button is down, FALSE otherwise.
5847  *
5848  * @sa TecEngMouseButtonStateRegisterCallback
5849  */
5850 typedef Boolean_t (STDCALL *MouseButtonStateCallback_pf)(int        Button,
5851                                                          ArbParam_t RegistrationClientData);
5852 
5853 /* - NO DOXYGEN COMMENT GENERATION -
5854  * Callback responsible for setting wait cursor when requested by the kernel
5855  *
5856  * @since
5857  *   11.2-0-302
5858  *
5859  * @param Activate
5860  *   TRUE if the kernel is requesting that the wait cursor be activated.
5861  *   FALSE if the kernel is requesting that the wait cursor be deactivated.
5862  * @param RegistractionClientData
5863  *   Client data that was registered with the callback.
5864  *
5865  * @sa TecEngWaitCursorStateRegisterCallback
5866  */
5867 typedef void (STDCALL *WaitCursorStateCallback_pf)(Boolean_t  Activate,
5868                                                    ArbParam_t RegistrationClientData);
5869 
5870 /* - NO DOXYGEN COMMENT GENERATION -
5871  * Callback responsible for setting cursor style when requested by the kernel
5872  *
5873  * @since
5874  *   11.2-0-302
5875  *
5876  * @param CursorStyle
5877  *   The cursor style which the kernel is requesting.
5878  * @param RenderHandle
5879  *   Handle to page where new cursor shape is being set.
5880  * @param RegistractionClientData
5881  *   Client data that was registered with the callback.
5882  *
5883  * @sa TecEngBaseCursorStyleRegisterCallback
5884  */
5885 typedef void (STDCALL *BaseCursorStyleCallback_pf)(CursorStyle_e CursorStyle,
5886                                                    ArbParam_t    RenderHandle,
5887                                                    ArbParam_t    RegistrationClientData);
5888 
5889 /* - NO DOXYGEN COMMENT GENERATION -
5890  * Callback responsible for processing events when the Tecplot engine is busy
5891  * peforming a requested operation. This callback will be called at regular
5892  * intervals to repair the interface and if required check for interrupts. Very
5893  * little work should be done by this function.
5894  *
5895  * @since
5896  *   11.0-0-415
5897  *
5898  * @param RegistrationClientData
5899  *   Client data that was registered with the callback.
5900  *
5901  * @sa TecEngProcessBusyEventsRegisterCallback, TecUtilInterrupt
5902  */
5903 typedef void (STDCALL *ProcessBusyEventsCallback_pf)(ArbParam_t RegistrationClientData);
5904 
5905 /* - NO DOXYGEN COMMENT GENERATION -
5906  * Callback responsible for launching a dialog.
5907  *
5908  * @since
5909  *   11.0-0-415
5910  *
5911  * @param RegistrationClientData
5912  *   Client data that was registered with this launch dialog callback.
5913  *
5914  * @return
5915  *   TRUE if the dialog was launched, FALSE if it could not be launched
5916  *   programmatically.
5917  *
5918  * @sa TecUtilDialogLaunch, TecUtilDialogDrop
5919  */
5920 typedef Boolean_t (STDCALL *DialogLaunchCallback_pf)(ArbParam_t RegistrationClientData);
5921 
5922 /* - NO DOXYGEN COMMENT GENERATION -
5923  * Callback responsible for dropping a dialog.
5924  *
5925  * @since
5926  *   11.0-0-407
5927  *
5928  * @param RegistrationClientData
5929  *   Client data that was registered with this drop dialog callback.
5930  *
5931  * @sa TecUtilDialogLaunch, TecUtilDialogDrop
5932  */
5933 typedef void (STDCALL *DialogDropCallback_pf)(ArbParam_t RegistrationClientData);
5934 
5935 /* - NO DOXYGEN COMMENT GENERATION -
5936  * Callback responsible for querying of the physical display's horizontal and
5937  * vertical dot pitch.
5938  *
5939  * @since
5940  *   11.0-0-407
5941  *
5942  * @param RegistrationClientData
5943  *   Client data that was registered with the callback.
5944  * @param IDotsPerCm
5945  *   Pointer who's contents should receive the physical display's horizontal
5946  *   dot pitch in terms of the number of dots per centimeter.
5947  * @param JDotsPerCm
5948  *   Pointer who's contents should receive the physical display's vertical
5949  *   dot pitch in terms of the number of dots per centimeter.
5950  *
5951  * @sa TecEngDotPitchRegisterCallback
5952  */
5953 typedef void (STDCALL *DotPitchCallback_pf)(ArbParam_t     RegistrationClientData,
5954                                             TP_OUT double* IDotsPerCm,
5955                                             TP_OUT double* JDotsPerCm);
5956 
5957 /* - NO DOXYGEN COMMENT GENERATION -
5958  * Callback responsible for querying of the physical display's width and
5959  * height in pixels.
5960  *
5961  * @since
5962  *   11.2-0-471
5963  *
5964  * @param RegistrationClientData
5965  *   Client data that was registered with the callback.
5966  * @param WidthInPixels
5967  *   Pointer who's contents should receive the physical display's width
5968  *   in pixels. NULL may be passed.
5969  * @param HeightInPixels
5970  *   Pointer who's contents should receive the physical display's height
5971  *   in pixels. NULL may be passed.
5972  *
5973  * @sa TecEngScreenSizeRegisterCallback
5974  */
5975 typedef void (STDCALL *ScreenSizeCallback_pf)(ArbParam_t  RegistrationClientData,
5976                                               TP_OUT int* WidthInPixels,
5977                                               TP_OUT int* HeightInPixels);
5978 
5979 /* - NO DOXYGEN COMMENT GENERATION -
5980  * Callback responsible for displaying a message box dialog and returning the
5981  * user's response.
5982  *
5983  * @since
5984  *   11.0-0-415
5985  *
5986  * @param MessageString
5987  *   Message string to display in the dialog.
5988  * @param MessageBoxType
5989  *   Type of message box to display.
5990  * @param RegistrationClientData
5991  *   Client data that was registered with the callback.
5992  *
5993  * @return
5994  *   Result of user's response to the dialog.
5995  *
5996  * @sa TecEngDialogMessageBoxRegisterCallback
5997  */
5998 typedef MessageBoxReply_e(STDCALL *DialogMessageBoxCallback_pf)(const char*      MessageString,
5999                                                                 MessageBoxType_e MessageBoxType,
6000                                                                 ArbParam_t       RegistrationClientData);
6001 
6002 /* - NO DOXYGEN COMMENT GENERATION -
6003  * Callback responsible for displaying a status line
6004  *
6005  * @since
6006  *   11.2-0-085
6007  *
6008  * @param StatusString
6009  *   Message string to display in the dialog.
6010  *
6011  * @param RegistrationClientData
6012  *   Client data that was registered with the callback.
6013  *
6014  * @sa TecEngStatusLineRegisterCallback
6015  */
6016 typedef void (STDCALL *StatusLineCallback_pf)(const char* StatusString,
6017                                               ArbParam_t  RegistrationClientData);
6018 
6019 /* - NO DOXYGEN COMMENT GENERATION -
6020  * Callback that will be called with the updated progress status.
6021  *
6022  * @since 11.2-0-098
6023  *
6024  *
6025  * @param ProgressStatus
6026  *   Percentage of the progress.
6027  *
6028  * @param RegistrationClientData
6029  *   Client data that was registered with the callback.
6030  *
6031  * @sa TecEngProgressMonitorRegisterCallback
6032  */
6033 typedef void (STDCALL *ProgressMonitorCallback_pf)(int        ProgressStatus,
6034                                                    ArbParam_t RegistrationClientData);
6035 /* - NO DOXYGEN COMMENT GENERATION -
6036  * Callback that will be called with Tecplot Engine is about to perform a lengthy operation.
6037  * The client that registers such the callback may present a user with a progress bar,
6038  * if the ShowProgressBar argument is TRUE, and a stop button that would interrupt the operation by
6039  * calling TecUtilInterrupt().
6040  *
6041  * @since 11.2-0-098
6042  *
6043  * @param ShowProgressBar
6044  *   Boolean indicating if the progress steps can be monitored for an operation. If TRUE, Tecplot Engine will be calling
6045  *   the registered ProgressMonitorCallback_pf function with the updated progress status.
6046  *
6047  * @param IsInterruptible
6048  *   Boolean indicating if the operation can be interrupted before completion.
6049  *
6050  * @param RegistrationClientData
6051  *   Client data that was registered with the callback.
6052  *
6053  * @sa TecEngProgressMonitorRegisterCallback
6054  */
6055 typedef void (STDCALL *ProgressMonitorStartCallback_pf)(Boolean_t  ShowProgressBar,
6056                                                         Boolean_t  IsInterruptible,
6057                                                         ArbParam_t RegistrationClientData);
6058 /* - NO DOXYGEN COMMENT GENERATION -
6059  * Callback tht will be called with Tecplot Engine has finished performing a lengthy operation.
6060  * At this point, client may hide progress bar that was shown during handling of ProgressMonitorStartCallback callback and
6061  * disable or hide the stop button.
6062  *
6063  * @since 11.2-0-098
6064  *
6065  * @param RegistrationClientData
6066  *   Client data that was registered with the callback.
6067  *
6068  * @sa TecEngProgressMonitorRegisterCallback
6069  */
6070 typedef void (STDCALL *ProgressMonitorFinishCallback_pf)(ArbParam_t RegistrationClientData);
6071 
6072 /*********************************************************
6073  * Add-on Timers
6074  *********************************************************/
6075 /**
6076  * This is called when a registered timer fires.
6077  *
6078  * @par Limitation:
6079  *   Unix and Linux versions of Tecplot currently do not fire timer events when
6080  *   Tecplot is running in batch mode (with the -b flag). This behavior
6081  *   limitation is subject to change.
6082  *
6083  * @param ClientData
6084  *   Arbitrary client data.
6085  *
6086  * @return
6087  *   Return TRUE if the timer should be reinstated.   Return FALSE
6088  *   to stop subsequent callbacks.
6089  *
6090  *
6091  * <FortranSyntax>
6092  *    INTEGER*4 FUNCTION MyAddOnTimerCallback(
6093  *   &                     ClientDataPtr)
6094  *    POINTER (ClientDataPtr,DummyClientData)
6095  * </FortranSyntax>
6096  */
6097 typedef Boolean_t (STDCALL *AddOnTimerCallback_pf)(ArbParam_t ClientData);
6098 
6099 /* - NO DOXYGEN COMMENT GENERATION -
6100  * Callback that will be called when Tecplot Engine has requested an event timer to be created.
6101  *
6102  * @since 12.0.1.5642
6103  *
6104  * @param ClientData
6105  *   ClientData that should be sent in the callback.
6106  *
6107  * @param TimerCallback
6108  *   Callback to fire when the timer interval has expired.
6109  *
6110  * @param Interval
6111  *   The time (in milliseconds) after which the timer callback should be called.
6112  *
6113  * @param RegistrationClientData
6114  *   Client data that was registered via TecEngTimerRegisterCallback.
6115  *
6116  * @return
6117  *   Return TRUE if the timer was successfully created, FALSE if not.
6118  */
6119 typedef Boolean_t (STDCALL *TimerCallback_pf)(AddOnTimerCallback_pf  TimerCallback,
6120                                               ArbParam_t             ClientData,
6121                                               UInt32_t               Interval,
6122                                               ArbParam_t             RegistrationClientData);
6123 
6124 /**
6125  * This function is called when the user activates a menu item
6126  * added via TecUtilMenuInsertOption or TecUtilMenuInsertToggle.
6127  *
6128  * @param RegistrationClientData
6129  *   Arbitrary client data.
6130  */
6131 typedef void (STDCALL *MenuActivateCallback_pf)(ArbParam_t RegistrationClientData);
6132 
6133 /**
6134  * This function is called when the a menu is deleted.
6135  *
6136  * @param RegistrationClientData
6137  *   Arbitrary client data.
6138  */
6139 typedef void (STDCALL *MenuDeleteCallback_pf)(ArbParam_t RegistrationClientData);
6140 
6141 /**
6142  * This function is called to determine the sensitivity for a menu item (option,
6143  * toggle or submenu).
6144  *
6145  * @param RegistrationClientData
6146  *   Arbitrary client data.
6147  *
6148  * @return
6149  *   Return TRUE if the menu item should be sensitive to user input,
6150  *   or FALSE if it should be insensitive to user input (gray).
6151  */
6152 typedef Boolean_t (STDCALL *MenuGetSensitivityCallback_pf)(ArbParam_t RegistrationClientData);
6153 
6154 /**
6155  * This function is called to determine the checked state for a toggle menu item.
6156  *
6157  * @param RegistrationClientData
6158  *   Arbitrary client data.
6159  *
6160  * @return
6161  *   Return TRUE if the toggle should be checked,
6162  *   or FALSE if it should be unchecked.
6163  */
6164 typedef Boolean_t (STDCALL *MenuGetToggleStateCallback_pf)(ArbParam_t RegistrationClientData);
6165 
6166 
6167 /**
6168  * This function is called when the user performs a probe event.
6169  *
6170  * @param IsNearestPoint
6171  *   This is TRUE if the previous probe event was a nearest point probe.
6172  *   This is FALSE if it was an interpolated probe.
6173  *
6174  * <FortranSyntax>
6175  *   SUBROUTINE MyProbeDestinationCallback(
6176  *              IsNearestPoint)
6177  *   INTEGER*4 IsNearestPoint
6178  * </FortranSyntax>
6179  */
6180 typedef void (STDCALL *ProbeDestination_pf)(Boolean_t IsNearestPoint);
6181 
6182 
6183 /**
6184  * This function type called when a probe callback is installed via
6185  * TecUtilProbeInstallCallbackX.
6186  *
6187  * @param WasSuccessful
6188  *   This is TRUE if the previous probe event was successful.
6189  *   This is FALSE if it was the probe failed. Probe events may fail if the
6190  *   user probes in a region of the plot that contains no data.
6191  *
6192  * @param IsNearestPoint
6193  *   This is TRUE if the previous probe event was a nearest point probe.
6194  *   This is FALSE if it was an interpolated probe.
6195  *
6196  * @param ClientData
6197  *   Arbitrary client data.
6198  *
6199  */
6200 typedef void (STDCALL *ProbeDestinationX_pf)(Boolean_t  WasSuccessful,
6201                                              Boolean_t  IsNearestPoint,
6202                                              ArbParam_t ClientData);
6203 
6204 
6205 /**
6206  * DynamicMenu Functions are called upon a user selecting
6207  * a menu item added via TecUtilMenuAddOption.
6208  *
6209  * <FortranSyntax>
6210  *   SUBROUTINE MyDynamicMenuCallback()
6211  * </FortranSyntax>
6212  */
6213 typedef void (STDCALL *DynamicMenuCallback_pf)(void);
6214 
6215 /**
6216  * This callback signature is used to perform redraw events.
6217  *
6218  * @since
6219  *   11.0-0-363
6220  *
6221  * @param RedrawReason
6222  *   An enumerated value describing the reason for the re-draw event.
6223  * @param ClientData
6224  *   Client data that was registered with the callback.
6225  *
6226  * @return
6227  *   TRUE if successfull, FALSE otherwise.
6228  *
6229  * <FortranSyntax>
6230  *    INTEGER*4 FUNCTION DrawEventCallback(
6231  *   &                     RedrawReason,
6232  *   &                     ClientDataPtr)
6233  *    INTEGER*4 RedrawReason
6234  *    POINTER   (ClientDataPtr,ClientData)
6235  * </FortranSyntax>
6236  *
6237  * @sa TecUtilEventAddPreDrawCallback(), TecUtilEventAddPostDrawCallback()
6238  */
6239 typedef Boolean_t (STDCALL *DrawEventCallback_pf)(RedrawReason_e RedrawReason,
6240                                                   ArbParam_t     ClientData);
6241 
6242 
6243 /**
6244  * Compares two strings from a list string. Note that either string may be NULL
6245  * as StringLists allow for NULL elements.
6246  *
6247  * @param String1
6248  *   String to compare against String2.
6249  * @param String2
6250  *   String to compare against String1.
6251  * @param ClientData
6252  *   Contextual information that was passed to the 'StringListSort' function.
6253  *
6254  * @return
6255  *   - A value less than zero if String1 is less than String2.
6256  *   - A value of zero if String1 is equal to String2.
6257  *   - A value greater than zero if String1 is greater than String2.
6258  */
6259 typedef int (STDCALL *StringListStringComparator_pf)(const char* String1,
6260                                                      const char* String2,
6261                                                      ArbParam_t  ClientData);
6262 
6263 /**
6264  * Gets a value at the specified point index using, if necessary, the private
6265  * client data retrieved from the field data handle.
6266  *
6267  * @par Note:
6268  *   This callback is called asynchronously. This callback should NOT
6269  *   lock/unlock Tecplot.
6270  *
6271  * @since
6272  *   10.0-3-128
6273  *
6274  * @param FD
6275  *   Field data handle for which to set the value.  This
6276  *   FieldValueGetFunction_pf must have been retrieved from this field data
6277  *   handle via TecUtilDataValueRefGetGetFunc.
6278  *
6279  * @param pt
6280  *   Zero-based index into the field data.
6281  *
6282  * @return
6283  *   Value for that index, always passed as a double precision floating-point
6284  *   value regardless of the data type of the field data handle.
6285  *
6286  * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData()
6287  */
6288 typedef double(STDCALL *FieldValueGetFunction_pf)(const FieldData_pa FD,
6289                                                   LgIndex_t          pt);
6290 
6291 /**
6292  * Sets a value at the specified index using the private client data retrieved
6293  * from the field data handle.
6294  *
6295  * @par Note:
6296  *   This callback is called asynchronously. This callback should NOT
6297  *   lock/unlock Tecplot.
6298  *
6299  * @since
6300  *   10.0-3-128
6301  *
6302  * @param FD
6303  *   Field data handle for which to set the value.  This
6304  *   FieldValueSetFunction_pf must have been retrieved from this field data
6305  *   handle via TecUtilDataValueRefGetSetFunc.
6306  *
6307  * @param pt
6308  *   Zero-based index into the field data.
6309  *
6310  * @param val
6311  *   New value for that index, always passed as a double precision
6312  *   floating-point value regardless of the data type of the field data handle.
6313  *
6314  * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData()
6315  */
6316 typedef void (STDCALL *FieldValueSetFunction_pf)(FieldData_pa FD,
6317                                                  LgIndex_t    pt,
6318                                                  double       val);
6319 
6320 /**
6321  * Callback responsible for loading the specified variable for Tecplot using
6322  * the private client data retrieved from the field data handle.
6323  *
6324  * @par Note:
6325  *   This callback is called asynchronously. With the exception of calls to
6326  *   modify the field data all calls back to Tecplot through the TecUtil layer
6327  *   should be limited to queries.
6328  *
6329  * @since
6330  *   11.0-0-001
6331  *
6332  * @param FieldData
6333  *   Field data handle of the variable load.
6334  *
6335  * @return
6336  *   TRUE if the variable was loaded, FALSE if unable to do so.
6337  *
6338  * @code
6339  *   typedef struct
6340  *     {
6341  *       char      *DataFileName;
6342  *       long       SeekOffset;
6343  *       LgIndex_t  NumValues;
6344  *       ... other information needed to load variable data
6345  *     } MyVariableClientData_s;
6346  *
6347  *   Boolean_t STDCALL MyVariableLoader(FieldData_pa FieldData)
6348  *   {
6349  *     REQUIRE(VALID_REF(FieldData));
6350  *
6351  *     MyVariableClientData_s *MyClientData = (MyVariableClientData_s *)TecUtilDataValueGetClientData(FieldData);
6352  *
6353  *     // open the data file
6354  *     FILE *MyDataFile = fopen(MyClientData->DataFileName, "rb");
6355  *     Boolean_t IsOk = (MyDataFile != NULL);
6356  *
6357  *     // seek to the place in the file where the variable data is located
6358  *     IsOk = IsOk && (fseek(MyDataFile, MyClientData->SeekOffset, SEEK_SET) == 0);
6359  *     if (IsOk)
6360  *       {
6361  *         // load the data into the variable's field data
6362  *         IsOk = ReadMyDataInfoVariable(MyDataFile, MyClientData, FieldData);
6363  *       }
6364  *
6365  *     // cleanup
6366  *     if (MyDataFile != NULL)
6367  *       fclose(MyDataFile);
6368  *
6369  *     ENSURE(VALID_BOOLEAN(IsOk));
6370  *     return IsOk;
6371  *   }
6372  * @endcode
6373  *
6374  * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData()
6375  */
6376 typedef Boolean_t (STDCALL *LoadOnDemandVarLoad_pf)(FieldData_pa FieldData);
6377 
6378 /**
6379  * Callback responsible for performing private actions associated with a
6380  * variable being unloaded using the private client data retrieved from the
6381  * field data handle. Whenever possible the callback should honor Tecplot's
6382  * request to unload the variable by returning TRUE. This callback is
6383  * responsible for performing private actions associated with a variable being
6384  * unloaded.
6385  *
6386  * Most add-ons should simply supply NULL for this callback thereby instructing
6387  * Tecplot to handle the unloading (and subsequent reloading) of the variable
6388  * without the intervention of the add-on.
6389  *
6390  * @par Note:
6391  *   This callback is called asynchronously. All calls back to Tecplot through
6392  *   the TecUtil layer should be limited to queries.
6393  *
6394  * @since
6395  *   11.0-0-001
6396  *
6397  * @param FieldData
6398  *   Field data handle of the variable Tecplot wants to unload.
6399  *
6400  * @code
6401  *   typedef struct
6402  *     {
6403  *       char      *DataFileName;
6404  *       long       SeekOffset;
6405  *       LgIndex_t  NumValues;
6406  *       ... other information needed to load variable data
6407  *     } MyVariableClientData_s;
6408  *
6409  *   Boolean_t STDCALL MyVariableUnload(FieldData_pa FieldData)
6410  *   {
6411  *     REQUIRE(VALID_REF(FieldData));
6412  *
6413  *     // We don't have any private data to cleanup (i.e in addition to the
6414  *     // private client data which we don't cleanup here) so all we have to do
6415  *     // is return TRUE or FALSE letting Tecplot know that it can or can not
6416  *     // unload the variable.
6417  *     Boolean_t Result = TRUE; // ...tell Tecplot to go ahead and unload the variable
6418  *
6419  *     ENSURE(VALID_BOOLEAN(Result));
6420  *     return Result;
6421  *   }
6422  * @endcode
6423  *
6424  * @return
6425  *   TRUE if the variable can be unloaded, FALSE otherwise. The add-on should
6426  *   if at all possible honor the request to unload the variable. Most add-ons
6427  *   should return TRUE.
6428  *
6429  * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData()
6430  */
6431 typedef Boolean_t (STDCALL *LoadOnDemandVarUnload_pf)(FieldData_pa FieldData);
6432 
6433 /**
6434  * Callback responsible for performing private actions associated with a
6435  * variable being cleaned up using the private client data retrieved from the
6436  * field data handle. Most add-ons will need to register this callback in order
6437  * to cleanup privately allocated client data.
6438  *
6439  * @par Note:
6440  *   This callback is called asynchronously. All calls back to Tecplot through
6441  *   the TecUtil layer should be limited to queries.
6442  *
6443  * @since
6444  *   11.0-0-001
6445  *
6446  * @param FieldData
6447  *   Field data handle of the variable being cleaned up.
6448  *
6449  * @code
6450  *   typedef struct
6451  *     {
6452  *       char      *DataFileName;
6453  *       long       SeekOffset;
6454  *       LgIndex_t  NumValues;
6455  *       ... other information needed to load variable data
6456  *     } MyVariableClientData_s;
6457  *
6458  *   void STDCALL MyVariableCleanup(FieldData_pa FieldData)
6459  *   {
6460  *     REQUIRE(VALID_REF(FieldData));
6461  *
6462  *     MyVariableClientData_s *MyClientData = (MyVariableClientData_s *)TecUtilDataValueGetClientData(FieldData);
6463  *
6464  *     // cleanup privately allocated resources
6465  *     free(MyClientData->DataFileName);
6466  *     free(MyClientData);
6467  *   }
6468  * @endcode
6469  *
6470  * @sa TecUtilDataValueCustomLOD(), TecUtilDataValueGetClientData()
6471  */
6472 typedef void (STDCALL *LoadOnDemandVarCleanup_pf)(FieldData_pa FieldData);
6473 
6474 /**
6475  * Callback responsible for loading the specified node mapping for Tecplot
6476  * using the private client data retrieved from the node mapping handle.
6477  *
6478  * @par Note:
6479  *   This callback is called asynchronously. With the exception of calls to
6480  *   modify the node mapping, all calls back to Tecplot through the TecUtil
6481  *   layer should be limited to queries.
6482  *
6483  * @since
6484  *   11.3-0-010
6485  *
6486  * @param NodeMap
6487  *   Handle of the node mapping.
6488  *
6489  * @return
6490  *   TRUE if the node mapping was loaded, FALSE if unable to do so.
6491  *
6492  * @code
6493  *   typedef struct
6494  *     {
6495  *       char      *DataFileName;
6496  *       long       SeekOffset;
6497  *       ... other information needed to load node map data
6498  *     } MyNodeMapClientData_s;
6499  *
6500  *   Boolean_t STDCALL MyNodeMapLoader(NodeMap_pa NodeMap)
6501  *   {
6502  *     REQUIRE(VALID_REF(NodeMap));
6503  *
6504  *     MyNodeMapClientData_s *MyClientData =
6505  *             (MyNodeMapClientData_s *)TecUtilDataNodeGetClientData(NodeMap);
6506  *
6507  *     // open the data file
6508  *     FILE *MyDataFile = fopen(MyClientData->DataFileName, "rb");
6509  *     Boolean_t IsOk = (MyDataFile != NULL);
6510  *
6511  *     // seek to the place in the file where the node map data is located
6512  *     IsOk = IsOk && (fseek(MyDataFile, MyClientData->SeekOffset, SEEK_SET) == 0);
6513  *     if (IsOk)
6514  *       {
6515  *         // load the data into the zone's node map
6516  *         IsOk = ReadMyNodeMapDataIntoZone(MyDataFile, MyClientData, NodeMap);
6517  *       }
6518  *
6519  *     // cleanup
6520  *     if (MyDataFile != NULL)
6521  *       fclose(MyDataFile);
6522  *
6523  *     ENSURE(VALID_BOOLEAN(IsOk));
6524  *     return IsOk;
6525  *   }
6526  * @endcode
6527  *
6528  * @sa TecUtilDataNodeCustomLOD(), TecUtilDataNodeGetClientData()
6529  */
6530 typedef Boolean_t (STDCALL *LoadOnDemandNodeMapLoad_pf)(NodeMap_pa NodeMap);
6531 
6532 /**
6533  * Callback responsible for performing private actions associated with a
6534  * node mapping being unloaded using the private client data retrieved from the
6535  * node mapping handle. Whenever possible the callback should honor Tecplot's
6536  * request to unload the node mapping by returning TRUE.
6537  *
6538  * Most add-ons should simply supply NULL for this callback thereby instructing
6539  * Tecplot to handle the unloading (and subsequent reloading) of the node mapping
6540  * without the intervention of the add-on.
6541  *
6542  * @par Note:
6543  *   This callback is called asynchronously. All calls back to Tecplot through
6544  *   the TecUtil layer should be limited to queries.
6545  *
6546  * @since
6547  *   11.3-0-010
6548  *
6549  * @param NodeMap
6550  *   Node mapping handle of the node mapping Tecplot wants to unload.
6551  *
6552  * @code
6553  *   Boolean_t STDCALL MyNodeMapUnload(NodeMap_pa NodeMap)
6554  *   {
6555  *     REQUIRE(VALID_REF(NodeMap));
6556  *
6557  *     // We don't have any private data to cleanup (i.e in addition to the
6558  *     // private client data which we don't cleanup here) so all we have to do
6559  *     // is return TRUE or FALSE letting Tecplot know that it can or can not
6560  *     // unload the variable.
6561  *     Boolean_t Result = TRUE; // ...tell Tecplot to go ahead and unload the node mapping
6562  *
6563  *     ENSURE(VALID_BOOLEAN(Result));
6564  *     return Result;
6565  *   }
6566  * @endcode
6567  *
6568  * @return
6569  *   TRUE if the node mapping can be unloaded, FALSE otherwise. The add-on should
6570  *   if at all possible honor the request to unload the node mapping. Most add-ons
6571  *   should return TRUE.
6572  *
6573  * @sa TecUtilDataNodeCustomLOD(), TecUtilDataNodeGetClientData()
6574  */
6575 typedef Boolean_t (STDCALL *LoadOnDemandNodeMapUnload_pf)(NodeMap_pa NodeMap);
6576 
6577 /**
6578  * Callback responsible for performing private actions associated with a
6579  * node mapping being cleaned up using the private client data retrieved from the
6580  * node mapping handle. Most add-ons will need to register this callback in order
6581  * to cleanup privately allocated client data.
6582  *
6583  * @par Note:
6584  *   This callback is called asynchronously. All calls back to Tecplot through
6585  *   the TecUtil layer should be limited to queries.
6586  *
6587  * @since
6588  *   11.3-0-010
6589  *
6590  * @param NodeMap
6591  *   Node Mapping data handle of the node mapping being cleaned up.
6592  *
6593  * @code
6594  *   typedef struct
6595  *     {
6596  *       char      *DataFileName;
6597  *       long       SeekOffset;
6598  *       ... other information needed to load node map data
6599  *     } MyNodeMapClientData_s;
6600  *
6601  *   void STDCALL MyNodeMapCleanup(NodeMap_pa NodeMap)
6602  *   {
6603  *     REQUIRE(VALID_REF(NodeMap));
6604  *
6605  *     MyNodeMapClientData_s *MyClientData = (MyNodeMapClientData_s *)TecUtilDataNodeGetClientData(NodeMap);
6606  *
6607  *     // cleanup privately allocated resources
6608  *     free(MyClientData->DataFileName);
6609  *     free(MyClientData);
6610  *   }
6611  * @endcode
6612  *
6613  * @sa TecUtilDataNodeCustomLOD(), TecUtilDataNodeGetClientData()
6614  */
6615 typedef void (STDCALL *LoadOnDemandNodeMapCleanup_pf)(NodeMap_pa NodeMap);
6616 
6617 /**
6618  * Callback responsible for loading the specified face neighbor for Tecplot
6619  * using the private client data retrieved from the face neighbor handle.
6620  *
6621  * @par Note:
6622  *   This callback is called asynchronously. With the exception of calls to
6623  *   modify the face neighbors, all calls back to Tecplot through the TecUtil
6624  *   layer should be limited to queries.
6625  *
6626  * @since
6627  *   11.3-0-010
6628  *
6629  * @param FaceNeighbor
6630  *   Handle of the face neighbors.
6631  *
6632  * @return
6633  *   TRUE if the face neighbors was loaded, FALSE if unable to do so.
6634  *
6635  * @code
6636  *   typedef struct
6637  *     {
6638  *       char      *DataFileName;
6639  *       long       SeekOffset;
6640  *       ...other information needed to load face neighbor data
6641  *     } MyFaceNeighborClientData_s;
6642  *
6643  *   Boolean_t STDCALL MyFaceNeighborLoader(FaceNeighbor_pa FaceNeighbor)
6644  *   {
6645  *     REQUIRE(VALID_REF(FaceNeighbor));
6646  *
6647  *     MyFaceNeighborClientData_s *MyClientData =
6648  *             (MyFaceNeighborClientData_s*)TecUtilDataFaceNbrGetClientData(FaceNeighbor);
6649  *
6650  *     // open the data file
6651  *     FILE *MyDataFile = fopen(MyClientData->DataFileName, "rb");
6652  *     Boolean_t IsOk = (MyDataFile != NULL);
6653  *
6654  *     // seek to the place in the file where the face neighbor data is located
6655  *     IsOk = IsOk && (fseek(MyDataFile, MyClientData->SeekOffset, SEEK_SET) == 0);
6656  *     if (IsOk)
6657  *       {
6658  *         // load the data into the zone's face neighbor
6659  *         IsOk = ReadMyFaceNeighborDataIntoZone(MyDataFile, MyClientData, FaceNeighbor);
6660  *       }
6661  *
6662  *     // cleanup
6663  *     if (MyDataFile != NULL)
6664  *       fclose(MyDataFile);
6665  *
6666  *     ENSURE(VALID_BOOLEAN(IsOk));
6667  *     return IsOk;
6668  *   }
6669  * @endcode
6670  *
6671  * @sa TecUtilDataFaceNbrCustomLOD(), TecUtilDataFaceNbrGetClientData()
6672  */
6673 typedef Boolean_t (STDCALL *LoadOnDemandFaceNeighborLoad_pf)(FaceNeighbor_pa FaceNeighbor);
6674 
6675 /**
6676  * Callback responsible for performing private actions associated with a
6677  * face neighbors being unloaded using the private client data retrieved from
6678  * the face neighbor handle. Whenever possible the callback should honor
6679  * Tecplot's request to unload the face neighbors by returning TRUE.
6680  *
6681  * Most add-ons should simply supply NULL for this callback thereby instructing
6682  * Tecplot to handle the unloading (and subsequent reloading) of the face
6683  * neighbors without the intervention of the add-on.
6684  *
6685  * @par Note:
6686  *   This callback is called asynchronously. All calls back to Tecplot through
6687  *   the TecUtil layer should be limited to queries.
6688  *
6689  * @since
6690  *   11.3-0-010
6691  *
6692  * @param FaceNeighbor
6693  *   Face neighbor handle of the face neighbors Tecplot wants to unload.
6694  *
6695  * @code
6696  *   Boolean_t STDCALL MyFaceNeighborUnload(FaceNeighbor_pa FaceNeighbor)
6697  *   {
6698  *     REQUIRE(VALID_REF(FaceNeighbor));
6699  *
6700  *     // We don't have any private data to cleanup (i.e in addition to the
6701  *     // private client data which we don't cleanup here) so all we have to do
6702  *     // is return TRUE or FALSE letting Tecplot know that it can or can not
6703  *     // unload the variable.
6704  *     Boolean_t Result = TRUE; // ...tell Tecplot to go ahead and unload the face neighbors
6705  *
6706  *     ENSURE(VALID_BOOLEAN(Result));
6707  *     return Result;
6708  *   }
6709  * @endcode
6710  *
6711  * @return
6712  *   TRUE if the face neighbors can be unloaded, FALSE otherwise. The add-on
6713  *   should if at all possible honor the request to unload the face neighbors.
6714  *   Most add-ons should return TRUE.
6715  *
6716  * @sa TecUtilDataFaceNbrCustomLOD(), TecUtilDataFaceNbrGetClientData()
6717  */
6718 typedef Boolean_t (STDCALL *LoadOnDemandFaceNeighborUnload_pf)(FaceNeighbor_pa FaceNeighbor);
6719 
6720 /**
6721  * Callback responsible for performing private actions associated with a face
6722  * neighbors being cleaned up using the private client data retrieved from the
6723  * face neighbor handle. Most add-ons will need to register this callback in
6724  * order to cleanup privately allocated client data.
6725  *
6726  * @par Note:
6727  *   This callback is called asynchronously. All calls back to Tecplot through
6728  *   the TecUtil layer should be limited to queries.
6729  *
6730  * @since
6731  *   11.3-0-010
6732  *
6733  * @param FaceNeighbor
6734  *   Face neighbor data handle of the Face neighbors being cleaned up.
6735  *
6736  * @code
6737  *   typedef struct
6738  *     {
6739  *       char      *DataFileName;
6740  *       long       SeekOffset;
6741  *       ... other information needed to load face neighbor data
6742  *     } MyFaceNeighborClientData_s;
6743  *
6744  *   void STDCALL MyFaceNeighborCleanup(FaceNeighbor_pa FaceNeighbor)
6745  *   {
6746  *     REQUIRE(VALID_REF(FaceNeighbor));
6747  *
6748  *     MyFaceNeighborClientData_s *MyClientData = (MyFaceNeighborClientData_s *)TecUtilDataFaceNbrGetClientData(FaceNeighbor);
6749  *
6750  *     // cleanup privately allocated resources
6751  *     free(MyClientData->DataFileName);
6752  *     free(MyClientData);
6753  *   }
6754  * @endcode
6755  *
6756  * @sa TecUtilDataFaceNbrCustomLOD(), TecUtilDataFaceNbrGetClientData()
6757  */
6758 typedef void (STDCALL *LoadOnDemandFaceNeighborCleanup_pf)(FaceNeighbor_pa FaceNeighbor);
6759 
6760 /**
6761  * Callback responsible for loading the specified face mapping for Tecplot
6762  * using the private client data retrieved from the face mapping handle.
6763  *
6764  * @par Note:
6765  *   This callback is called asynchronously. With the exception of calls to
6766  *   modify the face mapping, all calls back to Tecplot through the TecUtil
6767  *   layer should be limited to queries.
6768  *
6769  * @since
6770  *   11.2-1-0
6771  *
6772  * @param FaceMap
6773  *   Handle of the face mapping.
6774  *
6775  * @return
6776  *   TRUE if the face mapping was loaded, FALSE if unable to do so.
6777  *
6778  * @code
6779  *   typedef struct
6780  *     {
6781  *       char      *DataFileName;
6782  *       long       SeekOffset;
6783  *       ... other information needed to load face map data
6784  *     } MyFaceMapClientData_s;
6785  *
6786  *   Boolean_t STDCALL MyFaceMapLoader(FaceMap_pa FaceMap)
6787  *   {
6788  *     REQUIRE(VALID_REF(FaceMap));
6789  *
6790  *     MyFaceMapClientData_s *MyClientData =
6791  *             (MyFaceMapClientData_s *)TecUtilDataFaceMapGetClientData(FaceMap);
6792  *
6793  *     // open the data file
6794  *     FILE *MyDataFile = fopen(MyClientData->DataFileName, "rb");
6795  *     Boolean_t IsOk = (MyDataFile != NULL);
6796  *
6797  *     // seek to the place in the file where the face map data is located
6798  *     IsOk = IsOk && (fseek(MyDataFile, MyClientData->SeekOffset, SEEK_SET) == 0);
6799  *     if (IsOk)
6800  *       {
6801  *         // load the data into the zone's face map
6802  *         IsOk = ReadMyFaceMapDataIntoZone(MyDataFile, MyClientData, FaceMap);
6803  *       }
6804  *
6805  *     // cleanup
6806  *     if (MyDataFile != NULL)
6807  *       fclose(MyDataFile);
6808  *
6809  *     ENSURE(VALID_BOOLEAN(IsOk));
6810  *     return IsOk;
6811  *   }
6812  * @endcode
6813  *
6814  * @sa TecUtilDataFaceMapCustomLOD(), TecUtilDataFaceMapGetClientData()
6815  */
6816 typedef Boolean_t (STDCALL *LoadOnDemandFaceMapLoad_pf)(FaceMap_pa FaceMap);
6817 
6818 /**
6819  * Callback responsible for performing private actions associated with a
6820  * face mapping being unloaded using the private client data retrieved from the
6821  * face mapping handle. Whenever possible the callback should honor Tecplot's
6822  * request to unload the face mapping by returning TRUE.
6823  *
6824  * Most add-ons should simply supply NULL for this callback thereby instructing
6825  * Tecplot to handle the unloading (and subsequent reloading) of the face mapping
6826  * without the intervention of the add-on.
6827  *
6828  * @par Note:
6829  *   This callback is called asynchronously. All calls back to Tecplot through
6830  *   the TecUtil layer should be limited to queries.
6831  *
6832  * @since
6833  *   11.2-1-0
6834  *
6835  * @param FaceMap
6836  *   Face mapping handle of the face mapping Tecplot wants to unload.
6837  *
6838  * @code
6839  *   Boolean_t STDCALL MyFaceMapUnload(FaceMap_pa FaceMap)
6840  *   {
6841  *     REQUIRE(VALID_REF(FaceMap));
6842  *
6843  *     // We don't have any private data to cleanup (i.e in addition to the
6844  *     // private client data which we don't cleanup here) so all we have to do
6845  *     // is return TRUE or FALSE letting Tecplot know that it can or can not
6846  *     // unload the variable.
6847  *     Boolean_t Result = TRUE; // ...tell Tecplot to go ahead and unload the face mapping
6848  *
6849  *     ENSURE(VALID_BOOLEAN(Result));
6850  *     return Result;
6851  *   }
6852  * @endcode
6853  *
6854  * @return
6855  *   TRUE if the face mapping can be unloaded, FALSE otherwise. The add-on should
6856  *   if at all possible honor the request to unload the face mapping. Most add-ons
6857  *   should return TRUE.
6858  *
6859  * @sa TecUtilDataFaceMapCustomLOD(), TecUtilDataFaceMapGetClientData()
6860  */
6861 typedef Boolean_t (STDCALL *LoadOnDemandFaceMapUnload_pf)(FaceMap_pa FaceMap);
6862 
6863 /**
6864  * Callback responsible for performing private actions associated with a
6865  * face mapping being cleaned up using the private client data retrieved from the
6866  * face mapping handle. Most add-ons will need to register this callback in order
6867  * to cleanup privately allocated client data.
6868  *
6869  * @par Note:
6870  *   This callback is called asynchronously. All calls back to Tecplot through
6871  *   the TecUtil layer should be limited to queries.
6872  *
6873  * @since
6874  *   11.2-1-0
6875  *
6876  * @param FaceMap
6877  *   Face Mapping data handle of the face mapping being cleaned up.
6878  *
6879  * @code
6880  *   typedef struct
6881  *     {
6882  *       char      *DataFileName;
6883  *       long       SeekOffset;
6884  *       ... other information needed to load face map data
6885  *     } MyFaceMapClientData_s;
6886  *
6887  *   void STDCALL MyFaceMapCleanup(FaceMap_pa FaceMap)
6888  *   {
6889  *     REQUIRE(VALID_REF(FaceMap));
6890  *
6891  *     MyFaceMapClientData_s *MyClientData = (MyFaceMapClientData_s *)TecUtilDataFaceMapGetClientData(FaceMap);
6892  *
6893  *     // cleanup privately allocated resources
6894  *     free(MyClientData->DataFileName);
6895  *     free(MyClientData);
6896  *   }
6897  * @endcode
6898  *
6899  * @sa TecUtilDataFaceMapCustomLOD(), TecUtilDataFaceMapGetClientData()
6900  */
6901 typedef void (STDCALL *LoadOnDemandFaceMapCleanup_pf)(FaceMap_pa FaceMap);
6902 
6903 
6904 /**
6905  * ExtractDestination functions are called upon successful completion of an
6906  * extract polyline or extract discrete points operation.
6907  *
6908  * @param NumPts
6909  *   Number of points extracted.
6910  *
6911  * @param XValues
6912  *   Double precision array of X-Coordinates of the extracted polyline.
6913  *
6914  * @param YValues
6915  *   Double precision array of Y-Coordinates of the extracted polyline.
6916  *
6917  * <FortranSyntax>
6918  *   INTEGER*4 FUNCTION MyExtractDestinationCallback(
6919  *  &                   NumPts,
6920  *  &                   XValues,
6921  *  &                   YValues)
6922  *   INTEGER*4 NumPts
6923  *   REAL*8    XValues
6924  *   REAL*8    YValues
6925  * </FortranSyntax>
6926  */
6927 typedef void (STDCALL *ExtractDestination_pf)(LgIndex_t NumPts,
6928                                               double*   XValues,
6929                                               double*   YValues);
6930 
6931 
6932 
6933 /**
6934  * SelectFileOptionsCallback Functions are called when the
6935  * "Options" button is pressed in the modal file selection
6936  * dialog.
6937  *
6938  * <FortranSyntax>
6939  *   SUBROUTINE MySelectFileOptionsCallback()
6940  * </FortranSyntax>
6941  */
6942 typedef void (STDCALL *SelectFileOptionsCallback_pf)(void);
6943 
6944 
6945 
6946 
6947 /**
6948  * Post data load instruction callback for "Converter-Plus" addons.
6949  *
6950  * @param PreviousInstructions
6951  *   The previous set of instructions used by the converter.
6952  *
6953  * @param PreviousRawData
6954  *   The previous raw data associated with the instructions.
6955  *
6956  * @param PreviousZones
6957  *   Set of zones loaded with the previous instructions.
6958  *
6959  * <FortranSyntax>
6960  *    SUBROUTINE MyConverterPostReadCallback(
6961  *   &                   PreviousInstructions,
6962  *   &                   PreviousRawData,
6963  *   &                   PreviousZones)
6964  *    CHARACTER*(*)   CommandString
6965  *    CHARACTER*(*)   ErrMsgString
6966  *    POINTER         (PreviousZones,DummyPreviousZonesData)
6967  * </FortranSyntax>
6968  *
6969  */
6970 typedef void (STDCALL *ConverterPostReadCallback_pf)(const char*  PreviousInstructions,
6971                                                      const char*  PreviousRawData,
6972                                                      const Set_pa PreviousZones);
6973 
6974 
6975 /**
6976  * Callback registered by your addon to convert a foreign datafile into a
6977  * Tecplot Binary datafile format.
6978  *
6979  * @return
6980  *   Return TRUE if the conversion is successful. Otherwise return FALSE.
6981  *   If FALSE is returned then *MessageString is assumed to contain an error
6982  *   message.
6983  *
6984  * @param DataFName
6985  *   Name of the original foreign data file to be converted.
6986  *
6987  * @param TempBinFName
6988  *   Name of the temporary binary datafile that is created (by your converter).
6989  *
6990  * @param MessageString
6991  *   Reference to a string. If an error occurs during conversion allocate space
6992  *   for an error message and copy the message string into that allocated
6993  *   space otherwise be sure to assign *MessageString to NULL. If
6994  *   *MessageString is non NULL Tecplot will release the allocated memory when
6995  *   finished.
6996  *
6997  * <FortranSyntax>
6998  *    INTEGER*4 FUNCTION MyDataSetConverterCallback(
6999  *   &                   DataFName,
7000  *   &                   TempBinFName,
7001  *   &                   MessageString)
7002  *    CHARACTER*(*)   DataFName
7003  *    CHARACTER*(*)   TempBinFName
7004  *    CHARACTER*(*)   MessageString
7005  * </FortranSyntax>
7006  *
7007  */
7008 typedef Boolean_t (STDCALL *DataSetConverter_pf)(char*           DataFName,
7009                                                  char*           TempBinFName,
7010                                                  TP_GIVES char** MessageString);
7011 
7012 
7013 
7014 
7015 
7016 
7017 
7018 /**
7019  * Callback registered by your addon to process foreign loader instructions.
7020  * When called, it must parse the supplied instructions and load the data into Tecplot.
7021  *
7022  * @return
7023  *   Return TRUE if the data is loaded successfully. Otherwise, FALSE.
7024  *
7025  * @param Instructions
7026  *   This contains all of the instructions needed to load the data.
7027  *
7028  *
7029  * <FortranSyntax>
7030  *    INTEGER*4 FUNCTION MyDataSetLoaderCallback(
7031  *   &                   Instructions)
7032  *    POINTER        (Instructions,DummyInstructionsData)
7033  * </FortranSyntax>
7034  */
7035 typedef Boolean_t (STDCALL *DataSetLoader_pf)(StringList_pa Instructions);
7036 
7037 
7038 
7039 
7040 
7041 /**
7042  * Callback used to provide the ability to override data loader instructions
7043  * while processing a layout.
7044  *
7045  * @return
7046  *   Return TRUE if the instructions are successfully replaced or left alone.
7047  *   Return FALSE if the user cancels the operation.
7048  *
7049  * @param Instructions
7050  *   The original instructions needed to load the data.
7051  *
7052  * <FortranSyntax>
7053  *    INTEGER*4 FUNCTION MyDataSetLoaderInstOverCallback(
7054  *   &                   Instructions)
7055  *    POINTER        (Instructions,DummyInstructionsData)
7056  * </FortranSyntax>
7057  *
7058  */
7059 typedef Boolean_t (STDCALL *DataSetLoaderInstructionOverride_pf)(StringList_pa  Instructions);
7060 
7061 
7062 
7063 /**
7064  *  Callback used to assign extended curve settings.
7065  *  This is called when the user presses the "Curve Settings"
7066  *  button in the mapping style dialog.
7067  *
7068  *  @param LineMapSet
7069  *    Set of line maps currently selected.
7070  *  @param SelectedLineMapSettings
7071  *    A string list of the curve settings for the Line-maps that are selected in the
7072  *    Line mappings dialog.
7073  *
7074  * <FortranSyntax>
7075  *   SUBROUTINE MyGetCurveSettingsCallback(
7076  *  &                LineMapSet,
7077  *  &                SelectedLineMapSettings)
7078  *    POINTER    (LineMapSet,DummyLineMapData)
7079  *    POINTER    (SelectedLineMapSettings,DummyLineMapSettings)
7080  * </FortranSyntax>
7081  */
7082 typedef void (STDCALL *GetCurveSettingsCallback_pf)(Set_pa        LineMapSet,
7083                                                     StringList_pa SelectedLineMapSettings);
7084 
7085 
7086 
7087 
7088 /**
7089  * Callback function that returns an abbreviated version of the curve settings
7090  * for a particular Line Map for display in the Line Mappings dialog.
7091  *
7092  * @param LineMap
7093  *   The map number that is currently being operated on.
7094  * @param CurveSettings
7095  *   The string that Tecplot maintains which contains the extended curve fit
7096  *   settings for the current Line-map. This argument may be NULL indicating
7097  *   that defaults should be used.
7098  * @param AbbreviatedSettings
7099  *   The short form of the CurveSettings that is allocated and returned from
7100  *   your function and used by Tecplot. This must be allocated by the addon
7101  *   using TecUtilStringAlloc().
7102  *
7103  * <FortranSyntax>
7104  *   SUBROUTINE MyGetAbrevSettingsStringCallback(
7105  *  &                LineMap,
7106  *  &                CurveSettings,
7107  *  &                AbbreviatedSettings),
7108  *    INTEGER*4  LineMap
7109  *    CHARACTER*(*) CurveSettings
7110  *    CHARACTER*(*) AbbreviatedSettings
7111  * </FortranSyntax>
7112  */
7113 typedef void (STDCALL *GetAbbreviatedSettingsStringCallback_pf)(EntIndex_t      LineMap,
7114                                                                 char*           CurveSettings,
7115                                                                 TP_GIVES char** AbbreviatedSettings);
7116 
7117 
7118 
7119 
7120 /**
7121  * This function returns a string (CurveInfoString) for Tecplot to display
7122  * information about a particular curve in the curve info dialog.
7123  *
7124  * @param RawIndV
7125  *   The handle to the raw field data of the independent variable.
7126  * @param RawDepV
7127  *   The handle to the raw field data of the dependent variable.
7128  * @param IndVCoordScale
7129  *   An enumerated variable whose values are Scale_linear when the independent variable
7130  *   axis has a linear scale and Scale_log when it has a log scale.
7131  * @param DepVCoordScale
7132  *   An enumerated variable whose values are Scale_linear when the dependent variable axis
7133  *   has a linear scale and Scale_log when it has a log scale.
7134  * @param NumRawPts
7135  *   number of raw field data values.
7136  * @param LineMap
7137  *   The map number that is currently being operated on.
7138  * @param CurveSettings
7139  *   The curve settings string for the current Line-map. This argument may be
7140  *   NULL indicating that defaults should be used.
7141  * @param CurveInfoString
7142  *   The string that is allocated and returned by your function and be
7143  *   presented in the Data/XY-Plot Curve Info dialog. The CurveInfoString must
7144  *   be allocated by the addon using TecUtilStringAlloc().
7145  *
7146  * @return
7147  *   Return TRUE if the curve info string can be generated, otherwise FALSE.
7148  *
7149  * <FortranSyntax>
7150  *    INTEGER*4 FUNCTION MyGetCurveInfoStringCallback(
7151  *   &                   RawIndV,
7152  *   &                   RawDepV,
7153  *   &                   IndVCoordScale,
7154  *   &                   DepVCoordScale,
7155  *   &                   NumRawPts,
7156  *   &                   LineMap,
7157  *   &                   CurveSettings,
7158  *   &                   CurveInfoString)
7159  *    POINTER       (RawIndV,DummyRawIndVData)
7160  *    POINTER       (RawDepV,DummyRawDepVData)
7161  *    INTEGER*4     IndVCoordScale
7162  *    INTEGER*4     DepVCoordScale
7163  *    INTEGER*4     NumRawPts
7164  *    INTEGER*4     LineMap
7165  *    CHARACTER*(*) CurveSettings
7166  *    CHARACTER*(*) CurveInfoString
7167  * </FortranSyntax>
7168  */
7169 typedef Boolean_t (STDCALL *GetCurveInfoStringCallback_pf)(FieldData_pa    RawIndV,
7170                                                            FieldData_pa    RawDepV,
7171                                                            CoordScale_e    IndVCoordScale,
7172                                                            CoordScale_e    DepVCoordScale,
7173                                                            LgIndex_t       NumRawPts,
7174                                                            EntIndex_t      LineMap,
7175                                                            char*           CurveSettings,
7176                                                            TP_GIVES char** CurveInfoString);
7177 
7178 /**
7179  * Callback function used to calculate data points for an extended curve fit.
7180  *
7181  * @return
7182  *   Return TRUE if the curve can be calculated, otherwise FALSE.
7183  *
7184  * @param RawIndV
7185  *   The handle to the raw field data of the independent variable.
7186  * @param RawDepV
7187  *   The handle to the raw field data of the dependent variable.
7188  * @param IndVCoordScale
7189  *   An enumerated variable whose values are Scale_linear when the independent variable
7190  *   axis has a linear scale and Scale_log when it has a log scale.
7191  * @param DepVCoordScale
7192  *   An enumerated variable whose values are Scale_linear when the dependent variable axis
7193  *   has a linear scale and Scale_log when it has a log scale.
7194  * @param NumRawPts
7195  *   number of raw field data values.
7196  * @param NumCurvePts
7197  *   The number of points that will construct the curve fit.
7198  * @param LineMap
7199  *   The line map to operated on.
7200  * @param CurveSettings
7201  *   The curve settings string for the current Line-map. This argument may be
7202  *   NULL indicating that defaults should be used.
7203  * @param IndCurveValues
7204  *   A pre-allocated array of size NumCurvePts which the addon will populate with
7205  *   the independent values for the curve fit
7206  * @param DepCurveValues.
7207  *   A pre-allocated array of size NumCurvePts which the add-on will populate
7208  *   with the dependent values for the curve fit.
7209  *
7210  * <FortranSyntax>
7211  *    INTEGER*4 FUNCTION MyGetLinePlotDataPointsCallback(
7212  *   &                   RawIndV,
7213  *   &                   RawDepV,
7214  *   &                   IndVCoordScale,
7215  *   &                   DepVCoordScale,
7216  *   &                   NumRawPts,
7217  *   &                   NumCurvePts,
7218  *   &                   LineMap,
7219  *   &                   CurveSettings,
7220  *   &                   IndCurveValues,
7221  *   &                   DepCurveValues)
7222  *    POINTER       (RawIndV,DummyRawIndVData)
7223  *    POINTER       (RawDepV,DummyRawDepVData)
7224  *    INTEGER*4     IndVCoordScale
7225  *    INTEGER*4     DepVCoordScale
7226  *    INTEGER*4     NumRawPts
7227  *    INTEGER*4     NumCurvePts
7228  *    INTEGER*4     LineMap
7229  *    CHARACTER*(*) CurveSettings
7230  *    REAL*8        IndCurveValues()
7231  *    REAL*8        DepCurveValues()
7232  * </FortranSyntax>
7233  */
7234 typedef Boolean_t (STDCALL *GetLinePlotDataPointsCallback_pf)(FieldData_pa   RawIndV,
7235                                                               FieldData_pa   RawDepV,
7236                                                               CoordScale_e   IndVCoordScale,
7237                                                               CoordScale_e   DepVCoordScale,
7238                                                               LgIndex_t      NumRawPts,
7239                                                               LgIndex_t      NumCurvePts,
7240                                                               EntIndex_t     LineMap,
7241                                                               char*          CurveSettings,
7242                                                               TP_OUT double* IndCurveValues,
7243                                                               TP_OUT double* DepCurveValues);
7244 #if defined EXPORT_DEPRECATED_INTERFACES_TO_ADK_ONLY
7245 /**
7246  * @deprecated
7247  *     Please use \ref GetLinePlotDataPointsCallback_pf instead.
7248  */
7249 typedef GetLinePlotDataPointsCallback_pf GetXYDataPointsCallback_pf;
7250 #endif
7251 
7252 
7253 
7254 
7255 /**
7256  * A Callback function used to obtain an interpolated dependent value for an
7257  * extended curve fit given an independent value.
7258  *
7259  * @return
7260  *   Return TRUE if it is possible to obtain the interpolated value, otherwise FALSE.
7261  *
7262  * @param RawIndV
7263  *   handle to the raw field data of the independent variable.
7264  * @param RawDepV
7265  *   The handle to the raw field data of the dependent variable.
7266  * @param IndVCoordScale
7267  *   An enumerated variable whose values are Scale_linear when the independent variable
7268  *   axis has a linear scale and Scale_log when it has a log scale.
7269  * @param DepVCoordScale
7270  *   An enumerated variable whose values are Scale_linear when the dependent variable axis
7271  *   has a linear scale and Scale_log when it has a log scale.
7272  * @param NumRawPts
7273  *   The number of field data values.
7274  * @param NumCurvePts
7275  *   The number of points used to construct the curve fit.
7276  * @param LineMapNum
7277  *   The line map number currently being operated on.
7278  * @param CurveSettings
7279  *   The curve settings string for the current Line-map. This argument may be
7280  *   NULL indicating that defaults should be used.
7281  * @param ProbeIndValue
7282  *   The independent value location of the probe (supplied).
7283  * @param ProbeDepValue
7284  *   Reference to the calculated dependent value location of the probe.
7285  *
7286  * <FortranSyntax>
7287  *    INTEGER*4 FUNCTION MyGetProbeValueCallback(
7288  *   &                   RawIndV,
7289  *   &                   RawDepV,
7290  *   &                   IndVCoordScale,
7291  *   &                   DepVCoordScale,
7292  *   &                   NumRawPts,
7293  *   &                   NumCurvePts,
7294  *   &                   LineMapNum,
7295  *   &                   CurveSettings,
7296  *   &                   CurveInfoString,
7297  *   &                   ProbeIndValue,
7298  *   &                   ProbeDepValue)
7299  *    POINTER       (RawIndV,DummyRawIndVData)
7300  *    POINTER       (RawDepV,DummyRawDepVData)
7301  *    INTEGER*4     IndVCoordScale
7302  *    INTEGER*4     DepVCoordScale
7303  *    INTEGER*4     NumRawPts
7304  *    INTEGER*4     NumCurvePts
7305  *    INTEGER*4     LineMapNum
7306  *    CHARACTER*(*) CurveSettings
7307  *    REAL*8        ProbeIndValue
7308  *    REAL*8        ProbeDepValue
7309  * </FortranSyntax>
7310  *
7311  */
7312 typedef Boolean_t (STDCALL *GetProbeValueCallback_pf)(FieldData_pa   RawIndV,
7313                                                       FieldData_pa   RawDepV,
7314                                                       CoordScale_e   IndVCoordScale,
7315                                                       CoordScale_e   DepVCoordScale,
7316                                                       LgIndex_t      NumRawPts,
7317                                                       LgIndex_t      NumCurvePts,
7318                                                       EntIndex_t     LineMapNum,
7319                                                       char*          CurveSettings,
7320                                                       double         ProbeIndValue,
7321                                                       TP_OUT double* ProbeDepValue);
7322 
7323 
7324 
7325 #if defined MSWIN
7326 typedef Boolean_t (STDCALL *PreTranslateMessage_pf)(MSG *pMsg);
7327 #endif
7328 
7329 
7330 /**
7331  * Callback function pointer for providing a Dynamic Axis labels.
7332  * @since
7333  *    10.0-6-015
7334  * @param Value
7335  *     Value that corresponds to a tick label that will be drwan.
7336  *
7337  * @param ClientData
7338  *     Convenience storage of user client data.
7339  *
7340  * @param LabelString
7341  *    Output label for the tick mark.
7342  *    This must be allocated by the addon using TecUtilStringAlloc().
7343  *
7344  * @return
7345  *    Returns TRUE if the LabelString has been successfully allocated.
7346  *    Otherwise, FALSE is returned.
7347  */
7348 typedef Boolean_t (STDCALL *DynamicLabelCallback_pf)(double          Value,
7349                                                      ArbParam_t      ClientData,
7350                                                      TP_GIVES char** LabelString);
7351 
7352 /**
7353  * This is called when Tecplot is idle.
7354  *
7355  * @par Note:
7356  *   Tecplot is never idle when running in batch mode (with the -b flag).
7357  *
7358  * @param ClientData
7359  *   Arbitrary client data.
7360  *
7361  * <FortranSyntax>
7362  *    INTEGER*4 FUNCTION MyOnIdleCallback(
7363  *   &                     ClientDataPtr)
7364  *    POINTER (ClientDataPtr,DummyClientData)
7365  * </FortranSyntax>
7366  *
7367  */
7368 typedef void (STDCALL *OnIdleCallback_pf)(ArbParam_t ClientData);
7369 
7370 /**
7371  * Callback responsible for executing the specified script file.
7372  *
7373  * @since
7374  *     11.0-2-005
7375  *
7376  * @param ScriptFileName
7377  *     Relative or absolute file name of the script to execute. If the path
7378  *     is relative it is relative to the current working directory.
7379  * @param ClientData
7380  *     Client data registered with the callback.
7381  *
7382  * @return
7383  *     TRUE if the script executed successfully, FALSE otherwise.
7384  *
7385  * @sa TecUtilScriptExecRegisterCallback
7386  */
7387 typedef Boolean_t (STDCALL *ScriptExecCallback_pf)(const char *ScriptFileName,
7388                                                    ArbParam_t  ClientData);
7389 
7390 /**
7391  * This callback is called by TecUtilLineSegProbe() each time a cell face
7392  * is about to be passed through in the course of a probe.
7393  *
7394  * @return
7395  *   Return FALSE if you want to stop the probe at the current face.
7396  *   Return TRUE if you want the probe to progress through the face toward
7397  *   the specified end point.
7398  *
7399  * @param WhichEndingPosition
7400  *   Which ending position of the call to TecUtilLineSegProbe() is currently
7401  *   being probed. It will be between 1 and NumEndingPositions, inclusive, where
7402  *   NumEndingPositions is the number of ending positions passed into
7403  *   TecUtilLineSegProbe().
7404  *
7405  * @param Zone
7406  *   The zone that the probe is currently passing through.
7407  *
7408  * @param Cell
7409  *   The number of the cell that the probe is currently passing through.
7410  *
7411  * @param Face
7412  *   The face number of the face that the probe is about to pass through.
7413  *   For ordered and classic finite-element zones, this will be between
7414  *   1 and the number of faces per cell, inclusive. For polygonal and
7415  *   polyhedral zones, this is the overall zone face number, and will be
7416  *   between 1 and the total number of faces in the zone, inclusive.
7417  *
7418  * @param Position
7419  *   An array contining the X, Y, Z location of the point at which the
7420  *   probe trajectory has intercepted the face. In 2-D, it contains X and Y.
7421  *
7422  * @param ClientData
7423  *   The client data that was passed into TecUtilLineSegProbe().
7424  *
7425  * <FortranSyntax>
7426  * INTEGER*4 FUNCTION LineSegProbeCallback()
7427  * </FortranSyntax>
7428  */
7429 typedef Boolean_t (STDCALL * LineSegProbeCallback_pf)(LgIndex_t         WhichEndingPosition,
7430                                                       EntIndex_t        Zone,
7431                                                       LgIndex_t         Cell,
7432                                                       LgIndex_t         Face,
7433                                                       TP_GIVES double * Position,
7434                                                       ArbParam_t        ClientData);
7435 
7436 /* BEGINREMOVEFROMADDON */
7437 #if defined TECPLOTKERNEL
7438 /* CORE SOURCE CODE REMOVED */
7439 #if 0 /* NOTUSED */
7440 #endif
7441 #if !defined NO_ASSERTS
7442 #endif
7443 #if defined MSWIN
7444 #endif /* MSWIN */
7445 #if !defined (MSWIN)
7446 #endif
7447 #if defined Q_MAINMODULE
7448 #else
7449 #endif
7450 #if 0 /* NOTUSED */
7451 #endif
7452 #endif /* TECPLOTKERNEL */
7453 
7454 #if defined TECPLOTKERNEL
7455 /* CORE SOURCE CODE REMOVED */
7456 #endif /* TECPLOTKERNEL */
7457 
7458 
7459 /* ENDREMOVEFROMADDON */
7460 struct _ViewState_a;
7461 typedef struct _ViewState_a *SavedView_pa, *ViewState_pa;
7462 
7463 /* define Tecplot support email address in one place */
7464 static char const* const tecplotSupportEmailAddress = "support@tecplot.com";
7465 
7466 #endif /* _GLOBAL_H */
7467