00001
00002
00003
00004
00005 #ifndef BALL_VIEW_RENDERING_VRMLRENDERER_H
00006 #define BALL_VIEW_RENDERING_VRMLRENDERER_H
00007
00008 #ifndef BALL_VIEW_RENDERING_RENDERER_H
00009 # include <BALL/VIEW/RENDERING/renderer.h>
00010 #endif
00011
00012 #ifndef BALL_SYSTEM_FILE_H
00013 # include <BALL/SYSTEM/file.h>
00014 #endif
00015
00016 #ifndef BALL_MATHS_VECTOR3_H
00017 # include <BALL/MATHS/vector3.h>
00018 #endif
00019
00020 #ifndef BALL_MATHS_MATRIX44_H
00021 # include <BALL/MATHS/matrix44.h>
00022 #endif
00023
00024 namespace BALL
00025 {
00026 namespace VIEW
00027 {
00028 class ColorRGBA;
00029
00039 class BALL_VIEW_EXPORT VRMLRenderer : public Renderer
00040 {
00041 public:
00042
00046
00048 VRMLRenderer();
00049
00053 VRMLRenderer(const String& name)
00054 throw(Exception::FileNotFound);
00055
00057 virtual ~VRMLRenderer();
00058
00060 virtual void clear();
00061
00063
00066
00070 void setFileName(const String& name)
00071 throw(Exception::FileNotFound);
00072
00075 String VRMLColorRGBA(const ColorRGBA& input);
00076
00079 String VRMLVector3(Vector3 input);
00080
00082 void VRMLColor(const ColorRGBA& color);
00083
00085
00088
00092 virtual bool init(const Stage& stage);
00093
00097 virtual bool finish();
00098
00100
00101 void renderSphere_(const Sphere& sphere);
00102
00103 void renderMesh_(const Mesh& mesh);
00104
00105 void renderLine_(const Line& miniTube);
00106
00107 void renderTwoColoredLine_(const TwoColoredLine& miniTube);
00108
00109 void renderTube_(const Tube& tube);
00110
00111 void renderTwoColoredTube_(const TwoColoredTube& tube);
00112
00113 void out_(const String& data);
00114
00115 void outheader_(const String& data)
00116 {out_(data); current_indent_ += 1;}
00117
00118 void outfinish_(const String& data)
00119 {out_(data); current_indent_ -= 1;}
00120
00121 Size width, height;
00122
00123 protected:
00124
00125 void header_(const Vector3& translation, const ColorRGBA& color,
00126 const String& rotation = "");
00127
00128 void footer_();
00129
00130 File outfile_;
00131
00132 Vector3 origin_;
00133 Matrix4x4 rotation_;
00134 Index current_indent_;
00135
00136
00137 float smallX, smallY, smallZ, bigX, bigY, bigZ;
00138
00139
00140 bool scalingUsed;
00141 };
00142
00143 } }
00144
00145 #endif // BALL_VIEW_RENDERING_VRMLRENDERER_H