00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TACHYONDISPLAYDEVICE
00023 #define TACHYONDISPLAYDEVICE
00024
00025 #include <stdio.h>
00026 #include "FileRenderer.h"
00027
00029 class TachyonDisplayDevice : public FileRenderer {
00030 private:
00031 int enablemirrorspecular;
00032 float phongspecularthresh;
00033 int inclipgroup;
00034 int involtex;
00035 int voltexID;
00036 float xplaneeq[4];
00037 float yplaneeq[4];
00038 float zplaneeq[4];
00039
00040 void reset_vars(void);
00041 void write_camera(void);
00042 void write_lights(void);
00043 void write_materials(void);
00044 void write_cindexmaterial(int, int);
00045 void write_colormaterial(float *, int);
00046
00047 protected:
00048
00049 void comment(const char *);
00050 void cylinder(float *, float *, float rad, int filled);
00051 void line(float *xyz1, float *xyz2);
00052 void point(float *xyz);
00053 void sphere(float *xyzr);
00054 virtual void sphere_array(int num, int res, float *centers, float *radii, float *colors);
00055 void text(float *pos, float size, float thickness, const char *str);
00056 void triangle(const float *, const float *, const float *,
00057 const float *, const float *, const float *);
00058 void tricolor(const float * xyz1, const float * xyz2, const float * xyz3,
00059 const float * n1, const float * n2, const float * n3,
00060 const float * c1, const float * c2, const float * c3);
00061 virtual void trimesh_c4n3v3(int numverts, float * cnv,
00062 int numfacets, int * facets);
00063 virtual void tristrip(int numverts, const float * cnv,
00064 int numstrips, const int *vertsperstrip,
00065 const int *facets);
00066
00067
00068 virtual void define_volume_texture(int ID, int xs, int ys, int zs,
00069 const float *xplaneeq,
00070 const float *yplaneeq,
00071 const float *zplaneeq,
00072 unsigned char *texmap);
00073
00074
00075 virtual void volume_texture_on(int texmode);
00076
00077
00078 virtual void volume_texture_off(void);
00079
00080
00081
00082 void start_clipgroup(void);
00083 void end_clipgroup(void);
00084
00085 void update_exec_cmd();
00086
00087 public:
00088 TachyonDisplayDevice(void);
00089 virtual ~TachyonDisplayDevice(void);
00090 void write_header(void);
00091 void write_trailer(void);
00092 };
00093
00094 #endif
00095