00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00032 #ifndef WavefrontDISPLAYDEVICE
00033 #define WavefrontDISPLAYDEVICE
00034
00035 #include <stdio.h>
00036 #include "FileRenderer.h"
00037
00039 class WavefrontDisplayDevice : public FileRenderer {
00040 private:
00041 FILE *mtlfile;
00042 char *mtlfilename;
00043 int oldColorIndex;
00044 int oldMaterialIndex;
00045 int oldMaterialState;
00046 void write_material_block(void);
00047 void write_cindexmaterial(int, int);
00048 void write_colormaterial(float *, int);
00049
00050 protected:
00051 void beginrepgeomgroup(const char *);
00052 void comment(const char *);
00053 void line(float *xyz1, float *xyz2);
00054 void point(float *xyz);
00055 void triangle(const float *, const float *, const float *,
00056 const float *, const float *, const float *);
00057 virtual void trimesh_c4n3v3(int numverts, float * cnv,
00058 int numfacets, int * facets);
00059 virtual void trimesh_c4u_n3b_v3f(unsigned char *c, signed char *n,
00060 float *v, int numfacets);
00061 virtual void tristrip(int numverts, const float * cnv,
00062 int numstrips, const int *vertsperstrip,
00063 const int *facets);
00064
00065 public:
00066 WavefrontDisplayDevice(void);
00067 virtual ~WavefrontDisplayDevice(void);
00068 virtual int open_file(const char *filename);
00069 virtual void close_file(void);
00070 void write_header (void);
00071 void write_trailer(void);
00072 };
00073
00074 #endif
00075