-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | TODO | 1 | ||||
-rw-r--r-- | src/controller/actions/sel_save.sqc | 3 | ||||
-rw-r--r-- | src/controller/callbacks/mouse.c | 10 | ||||
-rw-r--r-- | src/model/data/base.sqc | 3 |
5 files changed, 12 insertions, 7 deletions
@@ -5,7 +5,7 @@ used to highlight the selection. | |||
5 | 5 | ||
6 | ESC: Clear selection. | 6 | ESC: Clear selection. |
7 | 7 | ||
8 | Left-click, drag: Pan. | 8 | Right-click, drag: Pan. |
9 | 9 | ||
10 | CTRL + Left-click, drag and release: Add box to selection. | 10 | CTRL + Left-click, drag and release: Add box to selection. |
11 | 11 | ||
@@ -1,7 +1,6 @@ | |||
1 | This is the todo list for the project. | 1 | This is the todo list for the project. |
2 | 2 | ||
3 | * Features to add: | 3 | * Features to add: |
4 | - Preserve the aspect ratio when zooming. | ||
5 | - Handle multiple selections defined by the user. | 4 | - Handle multiple selections defined by the user. |
6 | . Save a selection. | 5 | . Save a selection. |
7 | . Load a selection. | 6 | . Load a selection. |
diff --git a/src/controller/actions/sel_save.sqc b/src/controller/actions/sel_save.sqc index 79fa3de..922071e 100644 --- a/src/controller/actions/sel_save.sqc +++ b/src/controller/actions/sel_save.sqc | |||
@@ -29,7 +29,8 @@ sel_save (void) | |||
29 | { | 29 | { |
30 | if (S.selection.set[i] == true) | 30 | if (S.selection.set[i] == true) |
31 | { | 31 | { |
32 | strncpy (gi, S.gi_data + i + 3, sizeof (gi)); | 32 | char *gi_data_row = S.gi_data + (i*20); |
33 | strncpy (gi, gi_data_row + 3, sizeof (gi)); | ||
33 | EXEC SQL INSERT INTO vis_selection VALUES (:gi); | 34 | EXEC SQL INSERT INTO vis_selection VALUES (:gi); |
34 | } | 35 | } |
35 | } | 36 | } |
diff --git a/src/controller/callbacks/mouse.c b/src/controller/callbacks/mouse.c index 5f5be43..5b1a794 100644 --- a/src/controller/callbacks/mouse.c +++ b/src/controller/callbacks/mouse.c | |||
@@ -20,12 +20,16 @@ | |||
20 | void | 20 | void |
21 | mouse (int button, int state, int x, int y) | 21 | mouse (int button, int state, int x, int y) |
22 | { | 22 | { |
23 | // Release left button. | 23 | // Release right button. |
24 | if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) | 24 | if (button == GLUT_RIGHT_BUTTON && state == GLUT_UP) |
25 | { | 25 | { |
26 | // Deactive a panning event if one was happening. | 26 | // Deactive a panning event if one was happening. |
27 | S.pan.active = false; | 27 | S.pan.active = false; |
28 | } | ||
28 | 29 | ||
30 | // Release left button. | ||
31 | if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) | ||
32 | { | ||
29 | if (S.selection.active && | 33 | if (S.selection.active && |
30 | S.selection.purpose == ZOOM && | 34 | S.selection.purpose == ZOOM && |
31 | glutGetModifiers () == GLUT_ACTIVE_CTRL) | 35 | glutGetModifiers () == GLUT_ACTIVE_CTRL) |
@@ -170,7 +174,7 @@ mouse (int button, int state, int x, int y) | |||
170 | } | 174 | } |
171 | 175 | ||
172 | // Pan. | 176 | // Pan. |
173 | if (button == GLUT_LEFT_BUTTON && | 177 | if (button == GLUT_RIGHT_BUTTON && |
174 | state == GLUT_DOWN && glutGetModifiers () != GLUT_ACTIVE_CTRL) | 178 | state == GLUT_DOWN && glutGetModifiers () != GLUT_ACTIVE_CTRL) |
175 | { | 179 | { |
176 | /* | 180 | /* |
diff --git a/src/model/data/base.sqc b/src/model/data/base.sqc index ad1c395..f15d18b 100644 --- a/src/model/data/base.sqc +++ b/src/model/data/base.sqc | |||
@@ -69,7 +69,8 @@ base (void) | |||
69 | { | 69 | { |
70 | int i = coordinates.coord_id - 1; | 70 | int i = coordinates.coord_id - 1; |
71 | 71 | ||
72 | strncpy (S.gi_data + i, coordinates.gi.data, sizeof (S.gi_data[i])); | 72 | char *gi_data_row = S.gi_data + (i * 20); |
73 | strncpy (gi_data_row, coordinates.gi.data, sizeof (char) * 20); | ||
73 | 74 | ||
74 | float *v = S.base_vertices_data + (i * 2); | 75 | float *v = S.base_vertices_data + (i * 2); |
75 | *v = coordinates.x; | 76 | *v = coordinates.x; |