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 @@ | |||
1 | #include "keyboard.h" | ||
2 | #include "../actions/clear_selection.h" | ||
3 | #include "../actions/selection_from_db.h" | ||
4 | #include "reshape.h" | ||
5 | #include "../../view/exp004state0.h" | ||
6 | #include <GL/glut.h> | ||
7 | |||
8 | #define S exp004state0 | ||
9 | |||
10 | void | ||
11 | keyboard (unsigned char key, int x, int y) | ||
12 | { | ||
13 | switch (key) | ||
14 | { | ||
15 | case 27: | ||
16 | /* | ||
17 | * ESC Pressed. | ||
18 | */ | ||
19 | clear_selection (); | ||
20 | glutPostRedisplay (); | ||
21 | break; | ||
22 | |||
23 | case 'g': | ||
24 | /* | ||
25 | * g has been pressed. This is used to load a selection from | ||
26 | * the database since it is the convention to use g for | ||
27 | * refreshing a buffer in Emacs. | ||
28 | */ | ||
29 | selection_from_db (); | ||
30 | glutPostRedisplay (); | ||
31 | break; | ||
32 | |||
33 | case 'l': | ||
34 | /* | ||
35 | * Toggle display of the legend. | ||
36 | */ | ||
37 | S.legend = !S.legend; | ||
38 | glutPostRedisplay (); | ||
39 | break; | ||
40 | |||
41 | case 'r': | ||
42 | /* | ||
43 | * Reset the view (unzoom). | ||
44 | */ | ||
45 | S.zoom.active = false; | ||
46 | reshape (S.viewport.w, S.viewport.h); | ||
47 | glutPostRedisplay (); | ||
48 | break; | ||
49 | |||
50 | case 's': | ||
51 | /* | ||
52 | * Selection will be used to define a set. | ||
53 | */ | ||
54 | S.selection.purpose = SET; | ||
55 | break; | ||
56 | |||
57 | case 'z': | ||
58 | /* | ||
59 | * Selection will be use to zoom. | ||
60 | */ | ||
61 | S.selection.purpose = ZOOM; | ||
62 | break; | ||
63 | } | ||
64 | |||
65 | return; | ||
66 | } | ||