← index
Old.Learning.Projects/mxglut_pysche_map/mxglut_pysche_map/mxglut.h
Source: Old.Learning.Projects/mxglut_pysche_map/mxglut_pysche_map/mxglut.h
#include<string>

#include<iostream>

#include<glut.h>

#include<memory.h>



namespace mx {

	class mxEvent {
	public:
		virtual void render()  {}
		virtual void keydown(int key, int x, int y) {}
		virtual void reshape(int x, int y) {}
		virtual void mousemove(int x, int y, int button) {}
		virtual void mouseclick(int x, int y, int button) {}
		virtual void idle() {}

		static void glut_render();
		static void glut_idle();

		static void glut_reshape(int w, int h) {
			if(h == 0) h = 1;
			glViewport(0,0, static_cast<GLsizei>(w), static_cast<GLsizei>(h));
			glMatrixMode(GL_PROJECTION);
			glLoadIdentity();
			gluPerspective(45.0f,(GLfloat)w/(GLfloat)h,0.1f,100.0f);
			glMatrixMode(GL_MODELVIEW);							
			glLoadIdentity();
		}
		static void  glut_keydown(unsigned char key, int x, int y);
		static void  glut_special(int key, int x, int y);
	};

	class mxGlut;

	class mxTexture {
	public:
		int width, height;
		mxTexture(std::string fname);
		~mxTexture();
		bool LoadBMP(std::string fname);
		GLubyte *GetRawData() { return raw_data; }
		void ScrambleData();
	protected:
		GLubyte *raw_data;
		friend class mxGlut;
	};

	class mxGlut {
	public:
		mxGlut( int *argc, char **argv, std::string title, int x, int y, int w, int h );
		~mxGlut();
		bool SetEventHandler(mxEvent *event);
		int  EventLoop();
		void GenerateTextures(GLuint num, GLuint *tex_array);
		bool BindTextures(mxTexture &tex, GLuint *tex_array, GLuint index);
		bool UnBindTextures(mxTexture &tex, GLuint *tex_array, GLuint index); 
	protected:
		void init();
	};

	extern mxEvent *global_event;
	extern mxGlut  *global_glut;

}