00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 #ifndef LIBGELATODISPLAYDEVICE
00024 #define LIBGELATODISPLAYDEVICE
00025 
00026 #include <stdio.h>
00027 #include "FileRenderer.h"
00028 
00030 class GelatoAPI;
00031 
00033 class LibGelatoDisplayDevice: public FileRenderer {
00034 private:
00035   GelatoAPI *gapi;
00036 
00039   float old_color[3];
00040   float old_opacity;
00041   float old_ambient;
00042   float old_diffuse;
00043   float old_specular;
00044 
00045   void reset_vars(void); 
00046   void write_materials(int write_color);
00047 
00048 protected:
00049   void line(float *xyz1, float *xyz2);
00050   void point(float *xyz);
00051   void sphere(float *xyzr);
00052   void square(float *, float *, float *, float *, float *);
00053   void triangle(const float *, const float *, const float *,
00054                 const float *, const float *, const float *);
00055   void tricolor(const float * xyz1, const float * xyz2, const float * xyz3,
00056                 const float * n1,   const float * n2,   const float * n3,
00057                 const float *c1,    const float *c2,    const float *c3);
00058   virtual void trimesh_c4n3v3(int numverts, float * cnv, 
00059                               int numfacets, int * facets);
00060   virtual void tristrip(int numverts, const float * cnv,
00061                         int numstrips, const int *vertsperstrip,
00062                         const int *facets);
00063 
00064 public: 
00065   LibGelatoDisplayDevice(void);
00066   virtual ~LibGelatoDisplayDevice(void);
00067   void write_header(void); 
00068   void write_trailer(void);
00069 }; 
00070 
00071 #endif
00072