00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef VRS_GLUTCANVAS_H
00019 #define VRS_GLUTCANVAS_H
00020
00021 #include <vrs/glut/config.h>
00022 #include <vrs/opengl/glcanvas.h>
00023
00024 namespace VRS {
00025
00026 class VRS_GLUT_API GlutCanvas : public GLCanvas {
00028 public:
00029 GlutCanvas(
00030 const std::string& name,
00031 unsigned int width, unsigned int height,
00032 int properties = GLCanvas::RGBDD,
00033 TechniqueProcessor* techniqueprocessor = NULL,
00034 bool createNow = true
00035 );
00036 virtual ~GlutCanvas();
00051 virtual void setSize(unsigned int width, unsigned int height);
00053 virtual unsigned int getWidth() const;
00055 virtual unsigned int getHeight() const;
00058 virtual int getProperties() const;
00061 virtual void makeContextCurrent();
00062
00063 virtual void create();
00064 virtual void destroy();
00070 int windowId() const;
00072
00073 virtual void setCursor(Cursor::Shape cursor);
00074
00075 VRS_TYPEINFO(GlutCanvas, GLCanvas);
00076
00077 protected:
00078 virtual void finishRedisplay();
00079
00080 private:
00081 static void glut_display();
00082 static void glut_reshape(int, int);
00083 static void glut_visibility(int);
00084 static void glut_entry(int);
00085 static void glut_button(int,int,int,int);
00086 static void glut_mouse(int,int,int,int);
00087 static void glut_mousewheel(int,int,int,int);
00088 static void glut_motion(int,int);
00089 static void glut_keyboard(unsigned char, int, int);
00090 static void glut_keyboard_up(unsigned char, int, int);
00091 static void glut_special(int,int,int);
00092 static void glut_special_up(int,int,int);
00093 static unsigned int keymapping_glut2vrs(int keycode);
00094
00095 unsigned int width_;
00096 unsigned int height_;
00097 int properties_;
00098 int lastMotionX_;
00099 int lastMotionY_;
00100 unsigned int mode_;
00101 unsigned int actualMode_;
00102
00103 int winid_;
00104
00105 std::string name_;
00106 };
00107
00108 }
00109
00110 #endif // VRS_GLUTCANVAS_H