36 files changed, 332 insertions, 176 deletions
diff --git a/src/controller/callbacks/keyboard.c b/src/controller/callbacks/keyboard.c new file mode 100644 index 0000000..1187bce --- a/dev/null +++ b/src/controller/callbacks/keyboard.c @@ -0,0 +1,66 @@ +#include "keyboard.h" +#include "../actions/clear_selection.h" +#include "../actions/selection_from_db.h" +#include "reshape.h" +#include "../../view/exp004state0.h" +#include <GL/glut.h> + +#define S exp004state0 + +void +keyboard (unsigned char key, int x, int y) +{ + switch (key) + { + case 27: + /* + * ESC Pressed. + */ + clear_selection (); + 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). + */ + S.zoom.active = false; + reshape (S.viewport.w, S.viewport.h); + 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; +} |