00001 #ifndef U2D_GLMESH_H
00002 #define U2D_GLMESH_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include <fltk/gl.h>
00032 #include <fltk/GlWindow.h>
00033 #include <stdio.h>
00034 #include <GL/gl.h>
00035 #include <vector>
00036
00037 #include <u2d_display_set.h>
00038
00039 using namespace std;
00040
00041 class u2d_GLmesh : public fltk::GlWindow {
00042 void draw();
00043 int handle(int event);
00044
00045 public:
00046 u2d_GLmesh(int X, int Y, int W, int H, const char *L) : fltk::GlWindow(X, Y, W, H, L) {
00047 ref_minX = 0;
00048 ref_maxX = 0;
00049 ref_minY = 0;
00050 ref_maxY = 0;
00051 real_minX = 0;
00052 real_maxX = 0;
00053 real_minY = 0;
00054 real_maxY = 0;
00055 last_push_x = 0;
00056 last_push_y = 0;
00057 current_factor = 1;
00058 set_ref_sizes(-2, 2, -2, 2);
00059 }
00060
00061 void get_ref_sizes(double *minX, double *maxX, double *minY, double *maxY);
00062 void guess_ref_size();
00063 void get_real_sizes(double *minX, double *maxX, double *minY, double *maxY);
00064
00065
00066 GLuint create_display_list();
00067 void load_all_display_set();
00068 void call_all_display_set();
00069
00070 void set_vertex_array(void *array, unsigned int length);
00071 void load_vertex_array();
00072
00073 int load_display_set(u2d_Display_Set *display_set);
00074 void pan(double disp_x, double disp_y);
00075 void zoom(double delta_factor, int click_X, int click_Y);
00076 void centered_zoom(double delta_factor);
00077
00078 vector<u2d_Display_Set> display_set;
00079
00080
00081 private:
00082 void MyInit();
00083 void set_default_colors();
00084 void set_default_antialiasing();
00085
00086 void set_ref_sizes(double minX, double maxX, double minY, double maxY);
00087 int last_push_x;
00088 int last_push_y;
00089 double current_factor;
00090 double ref_minX;
00091 double ref_maxX;
00092 double ref_minY;
00093 double ref_maxY;
00094 double real_minX;
00095 double real_maxX;
00096 double real_minY;
00097 double real_maxY;
00098 };
00099
00100 #endif