#include "keyboard.h" #include "../actions/clear_selection.h" #include "../actions/selection_from_db.h" #include "reshape.h" #include "../../view/state0.h" #include "../../model/state/pan_info_init.h" #include "../../model/state/zoom_info_init.h" #include #define S state0 void keyboard (unsigned char key, int x, int y) { switch (key) { case 27: /* * ESC Pressed. */ clear_selection (); glutPostRedisplay (); break; case 'd': /* * Toggle display of the datarose. */ S.datarose = !S.datarose; glutPostRedisplay (); break; case 'g': /* * g has been pressed. This is used to load a selection from * the database since it is the convention to use g for * refreshing a buffer in Emacs. */ selection_from_db (); glutPostRedisplay (); break; case 'l': /* * Toggle display of the legend. */ S.legend = !S.legend; glutPostRedisplay (); break; case 'r': /* * Reset the view (unzoom, recenter). */ pan_info_init (&S.pan); zoom_info_init (&S.zoom); GLint viewport[4]; glGetIntegerv (GL_VIEWPORT, viewport); reshape (viewport[2], viewport[3]); glutPostRedisplay (); break; case 's': /* * Selection will be used to define a set. */ S.selection.purpose = SET; break; case 'z': /* * Selection will be use to zoom. */ S.selection.purpose = ZOOM; break; } return; }