1 | /*************************************** 2 | $Header$ 3 | 4 | This file defines the isurface and idisplay structures which map to the 5 | ISurface and IDisplay data types in illuminator.h. It also contains the 6 | zbuffer data type for multiz.c. 7 | ***************************************/ 8 | 9 | 10 | #ifndef SURFACE_H 11 | #define SURFACE_H /*+ To stop multiple inclusions. +*/ 12 | 13 | #include <illuminator.h> /* For various types */ 14 | 15 | struct isurface { 16 | /*+ Number of triangles in this node. Its value is initialized to zero, and 17 | incremented as each triangle is added, then reset to zero when the 18 | triangulation is displayed. +*/ 19 | int num_triangles; 20 | 21 | /*+ Number of triangles allocated in the vertices array. +*/ 22 | int vertisize; 23 | 24 | /*+ Array of vertex corners of triangles. The number of triangles is given 25 | by num_triangles, and size of the array by vertisize. For each triangle, 26 | this array has the coordinates of the three nodes, and its R, G, B and A 27 | color values, hence 13 PetscScalars for each triangle. +*/ 28 | PetscScalar *vertices; 29 | }; 30 | 31 | /*+ The zbuffer type, used to store an entry for a pixel. +*/ 32 | typedef struct { 33 | guchar r,g,b,a; 34 | float z; 35 | } zbuffer; 36 | 37 | struct idisplay { 38 | /*+ Geomview output pipe +*/ 39 | FILE *to_geomview; 40 | 41 | guchar *rgb; 42 | int rgb_width, rgb_height, rgb_rowskip, rgb_bpp; 43 | 44 | zbuffer *zbuf; 45 | int zbuf_width, zbuf_height, zbuf_rowskip, zbuf_depth; 46 | }; 47 | 48 | #endif /* SURFACE_H */