00001 /*************************************************************************** 00002 *cr 00003 *cr (C) Copyright 1995-2019 The Board of Trustees of the 00004 *cr University of Illinois 00005 *cr All Rights Reserved 00006 *cr 00007 ***************************************************************************/ 00008 /*************************************************************************** 00009 * RCS INFORMATION: 00010 * 00011 * $RCSfile: X3DDisplayDevice.h,v $ 00012 * $Author: johns $ $Locker: $ $State: Exp $ 00013 * $Revision: 1.17 $ $Date: 2020年07月01日 06:09:05 $ 00014 * 00015 ***************************************************************************/ 00033 #ifndef X3DDISPLAYDEVICE_H 00034 #define X3DDISPLAYDEVICE_H 00035 00036 #include <stdio.h> 00037 #include "FileRenderer.h" 00038 00040 class X3DDisplayDevice : public FileRenderer { 00041 private: 00042 virtual void cylinder_noxfrm(float *a, float *b, float rad, int filled); 00043 00044 protected: 00045 // XXX would-be private routines also needed by the X3DOM subclass 00046 virtual void write_cindexmaterial(int, int); // write colors, materials etc. 00047 virtual void write_colormaterial(float *, int); // write colors, materials etc. 00048 00049 // assorted graphics functions 00050 virtual void comment(const char *); 00051 virtual void cone(float *a, float *b, float rad, int /* resolution */); 00052 virtual void cylinder(float *a, float *b, float rad, int filled); 00053 virtual void line(float *xyz1, float *xyz2); 00054 virtual void line_array(int num, float thickness, float *points); 00055 virtual void point(float *xyz); 00056 virtual void point_array(int num, float size, float *xyz, float *colors); 00057 virtual void polyline_array(int num, float thickness, float *points); 00058 virtual void sphere(float *xyzr); 00059 virtual void text(float *pos, float size, float thickness, const char *str); 00060 virtual void triangle(const float *, const float *, const float *, 00061 const float *, const float *, const float *); 00062 virtual void tricolor(const float * xyz1, const float * xyz2, const float * xyz3, 00063 const float * n1, const float * n2, const float * n3, 00064 const float *c1, const float *c2, const float *c3); 00065 virtual void trimesh_c4n3v3(int numverts, float * cnv, 00066 int numfacets, int * facets); 00067 virtual void trimesh_c4u_n3b_v3f(unsigned char *c, signed char *n, 00068 float *v, int numfacets); 00069 virtual void tristrip(int numverts, const float * cnv, 00070 int numstrips, const int *vertsperstrip, 00071 const int *facets); 00072 00073 virtual void load(const Matrix4& mat); 00074 virtual void multmatrix(const Matrix4& mat); 00075 virtual void set_color(int color_index); 00076 00077 public: 00079 X3DDisplayDevice(const char *public_name, 00080 const char *public_pretty_name, 00081 const char *default_file_name, 00082 const char *default_command_line); 00083 00084 X3DDisplayDevice(void); 00085 virtual void write_header(void); 00086 virtual void write_trailer(void); 00087 }; 00088 00089 00090 class X3DOMDisplayDevice : public X3DDisplayDevice { 00091 protected: 00092 // assorted graphics functions 00093 virtual void line_array(int num, float thickness, float *points); 00094 virtual void polyline_array(int num, float thickness, float *points); 00095 virtual void text(float *pos, float size, float thickness, const char *str); 00096 virtual void tristrip(int numverts, const float * cnv, 00097 int numstrips, const int *vertsperstrip, 00098 const int *facets); 00099 00100 public: 00101 X3DOMDisplayDevice(void); // constructor 00102 }; 00103 00104 00105 00106 #endif 00107 00108 00109