summaryrefslogtreecommitdiffstats
authorDon Pellegrino <don@drexel.edu>2009-07-01 20:50:36 (GMT)
committer Don Pellegrino <don@drexel.edu>2009-07-01 20:50:36 (GMT)
commit106a2d9c8782be085eafe632b187366cee7f862c (patch) (unidiff)
tree5f26f26f10921bfa399c53b764368b791c5bad39
parente4d02addde594ced73be73a127f006317c37c9e3 (diff)
downloadexp005-106a2d9c8782be085eafe632b187366cee7f862c.zip
exp005-106a2d9c8782be085eafe632b187366cee7f862c.tar.gz
exp005-106a2d9c8782be085eafe632b187366cee7f862c.tar.bz2
Added subdirectory for running r and a script to connect to the DB2
backend and retrieve details of the current selection made with the visualization. Added Make target for running GNU indent. Ran indent on all of the code and headers.
-rw-r--r--Makefile.am10
-rw-r--r--r/connect.R16
-rw-r--r--src/controller/exp004mouse.c51
-rw-r--r--src/controller/exp004processhits.c16
-rw-r--r--src/controller/exp004reshape.c26
-rw-r--r--src/controller/keyboard.c2
-rw-r--r--src/controller/selection_from_db.sqc9
-rw-r--r--src/controller/selsave.sqc4
-rw-r--r--src/controller/set_ortho.c11
-rw-r--r--src/controller/vis_sel_set.h3
-rw-r--r--src/model/coordinates.h3
-rw-r--r--src/model/exp004base.sqc30
-rw-r--r--src/model/exp004state.h30
-rw-r--r--src/model/selection_info.h11
-rw-r--r--src/model/selection_info_init.c2
-rw-r--r--src/model/selection_info_init.h2
-rw-r--r--src/model/selection_purposes.h22
-rw-r--r--src/model/zoom_info.h5
-rw-r--r--src/model/zoom_info_init.c2
-rw-r--r--src/model/zoom_info_init.h2
-rw-r--r--src/util/pick_convert.c7
-rw-r--r--src/util/sqlinfoprint.c2
-rw-r--r--src/util/sqlinfoprint.h7
-rw-r--r--src/view/exp004geometry.c6
-rw-r--r--src/view/exp004view.c7
25 files changed, 140 insertions, 146 deletions
diff --git a/Makefile.am b/Makefile.am
index a6d8603..9ac859b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,2 +1,12 @@
1ACLOCAL_AMFLAGS = -I ax1ACLOCAL_AMFLAGS = -I ax
2SUBDIRS = src2SUBDIRS = src
3
4indent :
5 indent \
6 src/*.c \
7 src/controller/*.c src/controller/*.sqc src/controller/*.h \
8 src/db/*.c src/db/*.sqc src/db/*.h \
9 src/model/*.c src/model/*.sqc src/model/*.h \
10 src/util/*.c src/util/*.h \
11 src/view/*.c src/view/*.h
12
diff --git a/r/connect.R b/r/connect.R
new file mode 100644
index 0000000..b42b8bb
--- a/dev/null
+++ b/r/connect.R
@@ -0,0 +1,16 @@
1require (RJDBC);
2
3drv <- JDBC ("com.ibm.db2.jcc.DB2Driver");
4conn <- dbConnect (drv, "jdbc:db2:exp004");
5
6dbListTables (conn);
7
8dbGetQuery (conn, "SELECT COUNT(*) FROM vis_collect");
9
10d <- dbReadTable (conn, "vis_collect");
11
12hist (d$"N_CITES");
13
14dbDisconnect (conn);
15dbUnloadDriver (drv);
16
diff --git a/src/controller/exp004mouse.c b/src/controller/exp004mouse.c
index fb753d6..9a556ae 100644
--- a/src/controller/exp004mouse.c
+++ b/src/controller/exp004mouse.c
@@ -37,13 +37,13 @@ exp004mouse (int button, int state, int x, int y)
37 GLdouble model[16];37 GLdouble model[16];
38 glGetDoublev (GL_MODELVIEW_MATRIX, model);38 glGetDoublev (GL_MODELVIEW_MATRIX, model);
39 GLdouble projection[16];39 GLdouble projection[16];
40 glGetDoublev (GL_PROJECTION_MATRIX, projection); 40 glGetDoublev (GL_PROJECTION_MATRIX, projection);
41 GLint viewport[4];41 GLint viewport[4];
42 glGetIntegerv (GL_VIEWPORT, viewport);42 glGetIntegerv (GL_VIEWPORT, viewport);
4343
44 check_error (__FILE__, __LINE__);44 check_error (__FILE__, __LINE__);
4545
46 GLdouble start_position[3]; 46 GLdouble start_position[3];
47 gluUnProject (S.selection.x,47 gluUnProject (S.selection.x,
48 viewport[3] - S.selection.y,48 viewport[3] - S.selection.y,
49 0,49 0,
@@ -51,8 +51,7 @@ exp004mouse (int button, int state, int x, int y)
51 projection,51 projection,
52 viewport,52 viewport,
53 &start_position[0],53 &start_position[0],
54 &start_position[1],54 &start_position[1], &start_position[2]);
55 &start_position[2]);
5655
57 check_error (__FILE__, __LINE__);56 check_error (__FILE__, __LINE__);
5857
@@ -63,12 +62,10 @@ exp004mouse (int button, int state, int x, int y)
63 model,62 model,
64 projection,63 projection,
65 viewport,64 viewport,
66 &end_position[0],65 &end_position[0], &end_position[1], &end_position[2]);
67 &end_position[1],66
68 &end_position[2]); 67 check_error (__FILE__, __LINE__);
6968
70 check_error (__FILE__, __LINE__);
71
72 S.zoom.active = true;69 S.zoom.active = true;
73 S.zoom.coords[0] = fmin (start_position[0], end_position[0]);70 S.zoom.coords[0] = fmin (start_position[0], end_position[0]);
74 S.zoom.coords[1] = fmax (start_position[0], end_position[0]);71 S.zoom.coords[1] = fmax (start_position[0], end_position[0]);
@@ -76,7 +73,7 @@ exp004mouse (int button, int state, int x, int y)
76 S.zoom.coords[3] = fmax (start_position[1], end_position[1]);73 S.zoom.coords[3] = fmax (start_position[1], end_position[1]);
7774
78 exp004reshape (S.viewport.w, S.viewport.h);75 exp004reshape (S.viewport.w, S.viewport.h);
79 76
80 glutPostRedisplay ();77 glutPostRedisplay ();
81 }78 }
8279
@@ -85,27 +82,27 @@ exp004mouse (int button, int state, int x, int y)
85 */82 */
86 if (S.selection.active && S.selection.purpose == SET)83 if (S.selection.active && S.selection.purpose == SET)
87 {84 {
88 85
89 /*86 /*
90 * "Specify the array to be used for the returned hit records87 * "Specify the array to be used for the returned hit records
91 * with glSelectBuffer () [Redbook]."88 * with glSelectBuffer () [Redbook]."
92 */89 */
93 GLuint select_buf[ROWS];90 GLuint select_buf[ROWS];
94 glSelectBuffer (ROWS, select_buf);91 glSelectBuffer (ROWS, select_buf);
95 92
96 /*93 /*
97 * "Enter selection mode by specifying GL_SELECT with94 * "Enter selection mode by specifying GL_SELECT with
98 * glRenderMode () [Redbook]."95 * glRenderMode () [Redbook]."
99 */96 */
100 glRenderMode (GL_SELECT);97 glRenderMode (GL_SELECT);
101 98
102 /*99 /*
103 * "Initialize the name stack using glInitNames () and glPush100 * "Initialize the name stack using glInitNames () and glPush
104 * Names () [Redbook]."101 * Names () [Redbook]."
105 */102 */
106 glInitNames ();103 glInitNames ();
107 glPushName (0);104 glPushName (0);
108 105
109 /*106 /*
110 * "Define the viewing volume you want to use for selection.107 * "Define the viewing volume you want to use for selection.
111 * Usually this is different from the viewing volume you108 * Usually this is different from the viewing volume you
@@ -116,10 +113,10 @@ exp004mouse (int button, int state, int x, int y)
116 glMatrixMode (GL_PROJECTION);113 glMatrixMode (GL_PROJECTION);
117 glPushMatrix ();114 glPushMatrix ();
118 glLoadIdentity ();115 glLoadIdentity ();
119 116
120 GLint viewport[4];117 GLint viewport[4];
121 glGetIntegerv (GL_VIEWPORT, viewport);118 glGetIntegerv (GL_VIEWPORT, viewport);
122 119
123 double c_x = 0.0;120 double c_x = 0.0;
124 double c_y = 0.0;121 double c_y = 0.0;
125 double w = 0.0;122 double w = 0.0;
@@ -127,37 +124,33 @@ exp004mouse (int button, int state, int x, int y)
127 pick_convert (S.selection.x, S.selection.y, x, y,124 pick_convert (S.selection.x, S.selection.y, x, y,
128 &c_x, &c_y, &w, &h);125 &c_x, &c_y, &w, &h);
129126
130 gluPickMatrix (c_x,127 gluPickMatrix (c_x, (GLdouble) viewport[3] - c_y, w, h, viewport);
131 (GLdouble)viewport[3] - c_y,
132 w,
133 h,
134 viewport);
135128
136 set_ortho ();129 set_ortho ();
137 130
138 /*131 /*
139 * "Alternately issue primitive drawing commands and commands to132 * "Alternately issue primitive drawing commands and commands to
140 * manipulate the name stack so that each primitive of interest133 * manipulate the name stack so that each primitive of interest
141 * has appropriate names assigned [Redbook]."134 * has appropriate names assigned [Redbook]."
142 */135 */
143 exp004geometry (GL_SELECT);136 exp004geometry (GL_SELECT);
144 137
145 glMatrixMode (GL_PROJECTION); 138 glMatrixMode (GL_PROJECTION);
146 glPopMatrix ();139 glPopMatrix ();
147 glutSwapBuffers ();140 glutSwapBuffers ();
148 141
149 /*142 /*
150 * "Exit selection mode and process the returned selection data143 * "Exit selection mode and process the returned selection data
151 * (the hit records) [Redbook]."144 * (the hit records) [Redbook]."
152 */145 */
153 GLint hits = glRenderMode (GL_RENDER);146 GLint hits = glRenderMode (GL_RENDER);
154 check_error (__FILE__, __LINE__);147 check_error (__FILE__, __LINE__);
155 148
156 /* "process hits from selection mode rendering [Angel,2008]." */149 /* "process hits from selection mode rendering [Angel,2008]." */
157 exp004processhits (hits, select_buf);150 exp004processhits (hits, select_buf);
158 151
159 /* "normal render [Angel,2008]." */ 152 /* "normal render [Angel,2008]." */
160 glutPostRedisplay (); 153 glutPostRedisplay ();
161 }154 }
162155
163 }156 }
diff --git a/src/controller/exp004processhits.c b/src/controller/exp004processhits.c
index 84f8b8d..264bd46 100644
--- a/src/controller/exp004processhits.c
+++ b/src/controller/exp004processhits.c
@@ -1,10 +1,7 @@
1/* I seem to need this for glGenBuffers as per
2 http://www.gamedev.net/community/forums/topic.asp?topic_id=422358 */
3#define GL_GLEXT_PROTOTYPES1#define GL_GLEXT_PROTOTYPES
42#include "../view/exp004state0.h"
5#include "exp004processhits.h"3#include "exp004processhits.h"
6#include "selsave.h"4#include "selsave.h"
7#include "../view/exp004state0.h"
8#include <stdio.h>5#include <stdio.h>
96
10/*7/*
@@ -19,20 +16,13 @@
19void16void
20exp004processhits (GLint hits, GLuint buffer[])17exp004processhits (GLint hits, GLuint buffer[])
21{18{
22 printf ("Hits: %d\n", hits);
23
24 GLuint *hitlist = buffer;19 GLuint *hitlist = buffer;
25 20
26 for (int i = 0; i < hits; i++)21 for (int i = 0; i < hits; i++)
27 {22 {
28 hitlist += 3;23 hitlist += 3;
2924
30 /*25 /*
31 * Report the hit to the terminal.
32 */
33 printf ("Hit %i: %s\n", i + 1, S.gi_data[*hitlist]);
34
35 /*
36 * Add the hits to the selection.26 * Add the hits to the selection.
37 */27 */
38 S.selection.set[*hitlist] = true;28 S.selection.set[*hitlist] = true;
@@ -51,8 +41,6 @@ exp004processhits (GLint hits, GLuint buffer[])
51 glBufferData (GL_ARRAY_BUFFER,41 glBufferData (GL_ARRAY_BUFFER,
52 sizeof (S.base_colors_data), S.base_colors_data,42 sizeof (S.base_colors_data), S.base_colors_data,
53 GL_STATIC_DRAW);43 GL_STATIC_DRAW);
54
55 printf ("\n");
5644
57 return;45 return;
58}46}
diff --git a/src/controller/exp004reshape.c b/src/controller/exp004reshape.c
index 4d46223..82f134d 100644
--- a/src/controller/exp004reshape.c
+++ b/src/controller/exp004reshape.c
@@ -19,26 +19,18 @@ exp004reshape (int w, int h)
19 */19 */
2020
21 if (w <= h)21 if (w <= h)
22 { 22 {
23 S.ortho.min_x = 23 S.ortho.min_x = S.ortho_min;
24 S.ortho_min;24 S.ortho.max_x = S.ortho_max;
25 S.ortho.max_x = 25 S.ortho.min_y = S.ortho_min * (GLfloat) h / (GLfloat) w;
26 S.ortho_max;26 S.ortho.max_y = S.ortho_max * (GLfloat) h / (GLfloat) w;
27 S.ortho.min_y =
28 S.ortho_min * (GLfloat) h / (GLfloat) w;
29 S.ortho.max_y =
30 S.ortho_max * (GLfloat) h / (GLfloat) w;
31 }27 }
32 else28 else
33 {29 {
34 S.ortho.min_x =30 S.ortho.min_x = S.ortho_min * (GLfloat) w / (GLfloat) h;
35 S.ortho_min * (GLfloat) w / (GLfloat) h;31 S.ortho.max_x = S.ortho_max * (GLfloat) w / (GLfloat) h;
36 S.ortho.max_x =32 S.ortho.min_y = S.ortho_min;
37 S.ortho_max * (GLfloat) w / (GLfloat) h;33 S.ortho.max_y = S.ortho_max;
38 S.ortho.min_y =
39 S.ortho_min;
40 S.ortho.max_y =
41 S.ortho_max;
42 }34 }
4335
44 set_ortho ();36 set_ortho ();
diff --git a/src/controller/keyboard.c b/src/controller/keyboard.c
index 6b70af2..d817d7c 100644
--- a/src/controller/keyboard.c
+++ b/src/controller/keyboard.c
@@ -33,7 +33,7 @@ keyboard (unsigned char key, int x, int y)
33 * Reset the view (unzoom).33 * Reset the view (unzoom).
34 */34 */
35 S.zoom.active = false;35 S.zoom.active = false;
36 exp004reshape (S.viewport.w, S.viewport.h); 36 exp004reshape (S.viewport.w, S.viewport.h);
37 glutPostRedisplay ();37 glutPostRedisplay ();
38 break;38 break;
3939
diff --git a/src/controller/selection_from_db.sqc b/src/controller/selection_from_db.sqc
index 8a49510..8c12c79 100644
--- a/src/controller/selection_from_db.sqc
+++ b/src/controller/selection_from_db.sqc
@@ -22,18 +22,17 @@ selection_from_db (void)
22 EXEC SQL END DECLARE SECTION;22 EXEC SQL END DECLARE SECTION;
2323
24 EXEC SQL DECLARE c3 CURSOR FOR24 EXEC SQL DECLARE c3 CURSOR FOR
25 SELECT * FROM vis_sel_set25 SELECT * FROM vis_sel_set ORDER BY title, id DESC;
26 ORDER BY title, id DESC;
2726
28 EXEC SQL OPEN c3;27 EXEC SQL OPEN c3;
29 check_error (__FILE__, __LINE__);28 check_error (__FILE__, __LINE__);
30 29
31 /*30 /*
32 * This loop currently assumes only one set in the table and does31 * This loop currently assumes only one set in the table and does
33 * not use the title assigned to that set. This should be improved32 * not use the title assigned to that set. This should be improved
34 * to allow the user to manage multiple sets by name.33 * to allow the user to manage multiple sets by name.
35 */34 */
36 EXEC SQL FETCH c3 INTO :vis_sel_set;35 EXEC SQL FETCH c3 INTO:vis_sel_set;
37 while (sqlca.sqlcode != 100)36 while (sqlca.sqlcode != 100)
38 {37 {
39 int i = vis_sel_set.id - 1;38 int i = vis_sel_set.id - 1;
@@ -44,7 +43,7 @@ selection_from_db (void)
44 S.base_colors_data[i][2] = vis_sel_set.b;43 S.base_colors_data[i][2] = vis_sel_set.b;
45 S.base_colors_data[i][3] = 0.6;44 S.base_colors_data[i][3] = 0.6;
4645
47 EXEC SQL FETCH c3 INTO :vis_sel_set;46 EXEC SQL FETCH c3 INTO:vis_sel_set;
48 }47 }
4948
50 EXEC SQL CLOSE c3;49 EXEC SQL CLOSE c3;
diff --git a/src/controller/selsave.sqc b/src/controller/selsave.sqc
index 27734ab..2c6005f 100644
--- a/src/controller/selsave.sqc
+++ b/src/controller/selsave.sqc
@@ -24,12 +24,12 @@ selsave (void)
24 */24 */
25 EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL;25 EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL;
26 check_error (__FILE__, __LINE__);26 check_error (__FILE__, __LINE__);
27 27
28 for (unsigned int i = 0; i < ROWS; i++)28 for (unsigned int i = 0; i < ROWS; i++)
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 strncpy (gi, S.gi_data[i] + 3, sizeof (gi));
33 EXEC SQL INSERT INTO vis_selection VALUES (:gi);33 EXEC SQL INSERT INTO vis_selection VALUES (:gi);
34 }34 }
35 }35 }
diff --git a/src/controller/set_ortho.c b/src/controller/set_ortho.c
index 75af6a6..6478d21 100644
--- a/src/controller/set_ortho.c
+++ b/src/controller/set_ortho.c
@@ -10,17 +10,12 @@ set_ortho (void)
10 if (S.zoom.active)10 if (S.zoom.active)
11 {11 {
12 gluOrtho2D (S.zoom.coords[0],12 gluOrtho2D (S.zoom.coords[0],
13 S.zoom.coords[1],13 S.zoom.coords[1], S.zoom.coords[2], S.zoom.coords[3]);
14 S.zoom.coords[2],
15 S.zoom.coords[3]);
16 }14 }
17 else15 else
18 {16 {
19 gluOrtho2D (S.ortho.min_x,17 gluOrtho2D (S.ortho.min_x, S.ortho.max_x, S.ortho.min_y, S.ortho.max_y);
20 S.ortho.max_x,18 }
21 S.ortho.min_y,
22 S.ortho.max_y);
23 }
2419
25 return;20 return;
26}21}
diff --git a/src/controller/vis_sel_set.h b/src/controller/vis_sel_set.h
index 7c66a93..5df08f1 100644
--- a/src/controller/vis_sel_set.h
+++ b/src/controller/vis_sel_set.h
@@ -3,11 +3,10 @@ struct
3 struct3 struct
4 {4 {
5 short length;5 short length;
6 char data[255];6 char data[255];
7 } title;7 } title;
8 sqlint32 id;8 sqlint32 id;
9 double r;9 double r;
10 double g;10 double g;
11 double b;11 double b;
12} vis_sel_set;12} vis_sel_set;
13
diff --git a/src/model/coordinates.h b/src/model/coordinates.h
index 386f839..7620904 100644
--- a/src/model/coordinates.h
+++ b/src/model/coordinates.h
@@ -4,9 +4,8 @@ struct
4 struct4 struct
5 {5 {
6 short length;6 short length;
7 char data[50];7 char data[50];
8 } gi;8 } gi;
9 double x;9 double x;
10 double y;10 double y;
11} coordinates;11} coordinates;
12
diff --git a/src/model/exp004base.sqc b/src/model/exp004base.sqc
index 2742138..a9c94cf 100644
--- a/src/model/exp004base.sqc
+++ b/src/model/exp004base.sqc
@@ -23,17 +23,16 @@ exp004base (void)
23 * This implementation can be improved by mapping the video memory23 * This implementation can be improved by mapping the video memory
24 * directly rather than loading into system memory and then copying24 * directly rather than loading into system memory and then copying
25 * into video memory.25 * into video memory.
26 */26 */
2727
28 /*28 /*
29 * db2dclgn -d exp004 -t coordinates29 * db2dclgn -d exp004 -t coordinates
30 */30 */
31 EXEC SQL BEGIN DECLARE SECTION;31 EXEC SQL BEGIN DECLARE SECTION;
32 EXEC SQL INCLUDE 'model/coordinates.h'; 32 EXEC SQL INCLUDE 'model/coordinates.h';
33 EXEC SQL END DECLARE SECTION;33 EXEC SQL END DECLARE SECTION;
3434
35 EXEC SQL DECLARE c2 CURSOR FOR35 EXEC SQL DECLARE c2 CURSOR FOR SELECT *FROM coordinates;
36 SELECT * FROM coordinates;
3736
38 EXEC SQL OPEN c2;37 EXEC SQL OPEN c2;
3938
@@ -45,14 +44,12 @@ exp004base (void)
45 S.bb.min_y = 0.0;44 S.bb.min_y = 0.0;
46 S.bb.max_y = 0.0;45 S.bb.max_y = 0.0;
4746
48 EXEC SQL FETCH c2 INTO :coordinates;47 EXEC SQL FETCH c2 INTO:coordinates;
49 while (sqlca.sqlcode != 100)48 while (sqlca.sqlcode != 100)
50 {49 {
51 int i = coordinates.coord_id - 1;50 int i = coordinates.coord_id - 1;
5251
53 strncpy(S.gi_data[i], 52 strncpy (S.gi_data[i], coordinates.gi.data, sizeof (S.gi_data[i]));
54 coordinates.gi.data,
55 sizeof (S.gi_data[i]));
5653
57 S.base_vertices_data[i][0] = coordinates.x;54 S.base_vertices_data[i][0] = coordinates.x;
58 S.base_vertices_data[i][1] = coordinates.y;55 S.base_vertices_data[i][1] = coordinates.y;
@@ -76,7 +73,7 @@ exp004base (void)
76 S.base_colors_data[i][2] = DEFAULT_COLOR_B;73 S.base_colors_data[i][2] = DEFAULT_COLOR_B;
77 S.base_colors_data[i][3] = DEFAULT_COLOR_A;74 S.base_colors_data[i][3] = DEFAULT_COLOR_A;
7875
79 EXEC SQL FETCH c2 INTO :coordinates;76 EXEC SQL FETCH c2 INTO:coordinates;
80 }77 }
8178
82 EXEC SQL CLOSE c2;79 EXEC SQL CLOSE c2;
@@ -106,8 +103,7 @@ exp004base (void)
106103
107 // Invert the y coordinate to match up with the LGL Java viewer.104 // Invert the y coordinate to match up with the LGL Java viewer.
108 for (int i = 0; i < ROWS; i++)105 for (int i = 0; i < ROWS; i++)
109 S.base_vertices_data[i][1] = 106 S.base_vertices_data[i][1] = S.ortho_max - S.base_vertices_data[i][1];
110 S.ortho_max - S.base_vertices_data[i][1];
111107
112 // Move the origin (0,0) to the center of the data.108 // Move the origin (0,0) to the center of the data.
113 S.ortho_min = 0.0;109 S.ortho_min = 0.0;
@@ -115,9 +111,8 @@ exp004base (void)
115111
116 for (int i = 0; i < ROWS; i++)112 for (int i = 0; i < ROWS; i++)
117 {113 {
118 S.base_vertices_data[i][0] = 114 S.base_vertices_data[i][0] =
119 S.base_vertices_data[i][0] -115 S.base_vertices_data[i][0] - (0.5 * (S.bb.max_x - S.bb.min_x));
120 (0.5 * (S.bb.max_x - S.bb.min_x));
121116
122 if (S.ortho_min > S.base_vertices_data[i][0])117 if (S.ortho_min > S.base_vertices_data[i][0])
123 S.ortho_min = S.base_vertices_data[i][0];118 S.ortho_min = S.base_vertices_data[i][0];
@@ -125,9 +120,8 @@ exp004base (void)
125 if (S.ortho_max < S.base_vertices_data[i][0])120 if (S.ortho_max < S.base_vertices_data[i][0])
126 S.ortho_max = S.base_vertices_data[i][0];121 S.ortho_max = S.base_vertices_data[i][0];
127122
128 S.base_vertices_data[i][1] = 123 S.base_vertices_data[i][1] =
129 S.base_vertices_data[i][1] -124 S.base_vertices_data[i][1] - (0.5 * (S.bb.max_y - S.bb.min_y));
130 (0.5 * (S.bb.max_y - S.bb.min_y));
131125
132 if (S.ortho_min > S.base_vertices_data[i][1])126 if (S.ortho_min > S.base_vertices_data[i][1])
133 S.ortho_min = S.base_vertices_data[i][1];127 S.ortho_min = S.base_vertices_data[i][1];
@@ -140,7 +134,7 @@ exp004base (void)
140134
141 glBindBuffer (GL_ARRAY_BUFFER, S.buffers[BASE_VERTICES]);135 glBindBuffer (GL_ARRAY_BUFFER, S.buffers[BASE_VERTICES]);
142 glVertexPointer (2, GL_FLOAT, 0, 0);136 glVertexPointer (2, GL_FLOAT, 0, 0);
143 glBufferData (GL_ARRAY_BUFFER, 137 glBufferData (GL_ARRAY_BUFFER,
144 sizeof (S.base_vertices_data), S.base_vertices_data,138 sizeof (S.base_vertices_data), S.base_vertices_data,
145 GL_STATIC_DRAW);139 GL_STATIC_DRAW);
146140
diff --git a/src/model/exp004state.h b/src/model/exp004state.h
index 11e9ebd..d151966 100644
--- a/src/model/exp004state.h
+++ b/src/model/exp004state.h
@@ -10,15 +10,18 @@
10#define BASE_VERTICES 010#define BASE_VERTICES 0
11#define BASE_COLORS 111#define BASE_COLORS 1
1212
13#define DEFAULT_COLOR_R 0.513#define CLEAR_COLOR 1.0, 1.0, 1.0, 1.0
14#define DEFAULT_COLOR_G 0.514#define DRAW_COLOR 0.0, 0.0, 0.0
15#define DEFAULT_COLOR_B 0.5
16#define DEFAULT_COLOR_A 0.5
1715
18#define SELECT_COLOR_R 1.016#define DEFAULT_COLOR_R 0.00
19#define SELECT_COLOR_G 1.017#define DEFAULT_COLOR_G 0.00
20#define SELECT_COLOR_B 1.018#define DEFAULT_COLOR_B 0.01
21#define SELECT_COLOR_A 0.819#define DEFAULT_COLOR_A 0.25
20
21#define SELECT_COLOR_R 0.00
22#define SELECT_COLOR_G 0.00
23#define SELECT_COLOR_B 0.00
24#define SELECT_COLOR_A 0.75
2225
23/*26/*
24 * Maintain state of the model.27 * Maintain state of the model.
@@ -29,7 +32,8 @@ typedef struct
29 /* 32 /*
30 * Track the bounding box of the points.33 * Track the bounding box of the points.
31 */34 */
32 struct {35 struct
36 {
33 float min_x;37 float min_x;
34 float max_x;38 float max_x;
35 float min_y;39 float min_y;
@@ -49,7 +53,8 @@ typedef struct
49 /*53 /*
50 * Orthographic coordinates after aspect preserving scaling.54 * Orthographic coordinates after aspect preserving scaling.
51 */55 */
52 struct {56 struct
57 {
53 float min_x;58 float min_x;
54 float max_x;59 float max_x;
55 float min_y;60 float min_y;
@@ -59,7 +64,8 @@ typedef struct
59 /*64 /*
60 * Viewport size.65 * Viewport size.
61 */66 */
62 struct {67 struct
68 {
63 int w;69 int w;
64 int h;70 int h;
65 } viewport;71 } viewport;
@@ -87,7 +93,7 @@ typedef struct
87 SELECTION_INFO selection;93 SELECTION_INFO selection;
8894
89 ZOOM_INFO zoom;95 ZOOM_INFO zoom;
90 96
91} EXP004STATE;97} EXP004STATE;
9298
93#endif // EXP004STATE_H99#endif // EXP004STATE_H
diff --git a/src/model/selection_info.h b/src/model/selection_info.h
index 970ecec..ccd3f7a 100644
--- a/src/model/selection_info.h
+++ b/src/model/selection_info.h
@@ -9,13 +9,14 @@
9 */9 */
10#define ROWS 8390510#define ROWS 83905
1111
12typedef struct {12typedef struct
13{
1314
14 /*15 /*
15 * Selection list.16 * Selection list.
16 */17 */
17 bool set[ROWS];18 bool set[ROWS];
18 19
19 /*20 /*
20 * A selection is being performed.21 * A selection is being performed.
21 */22 */
@@ -25,17 +26,17 @@ typedef struct {
25 * Indicate if the user is currently defining a selection.26 * Indicate if the user is currently defining a selection.
26 */27 */
27 SELECTION_PURPOSES purpose;28 SELECTION_PURPOSES purpose;
28 29
29 /*30 /*
30 * X coordinate of mouse when selection mode initiated.31 * X coordinate of mouse when selection mode initiated.
31 */32 */
32 int x;33 int x;
33 34
34 /*35 /*
35 * Y coordinate of mouse when selection mode initiated.36 * Y coordinate of mouse when selection mode initiated.
36 */37 */
37 int y;38 int y;
38 39
39} SELECTION_INFO;40} SELECTION_INFO;
4041
41#endif // SELECTION_INFO_H42#endif // SELECTION_INFO_H
diff --git a/src/model/selection_info_init.c b/src/model/selection_info_init.c
index e01b2b8..7a98e74 100644
--- a/src/model/selection_info_init.c
+++ b/src/model/selection_info_init.c
@@ -1,7 +1,7 @@
1#include "selection_info_init.h"1#include "selection_info_init.h"
22
3void3void
4selection_info_init (SELECTION_INFO* s)4selection_info_init (SELECTION_INFO * s)
5{5{
6 s->active = false;6 s->active = false;
7 s->purpose = SET;7 s->purpose = SET;
diff --git a/src/model/selection_info_init.h b/src/model/selection_info_init.h
index 8ce56c5..d38b851 100644
--- a/src/model/selection_info_init.h
+++ b/src/model/selection_info_init.h
@@ -3,6 +3,6 @@
33
4#include "selection_info.h"4#include "selection_info.h"
55
6void selection_info_init (SELECTION_INFO* s);6void selection_info_init (SELECTION_INFO * s);
77
8#endif // SELECTION_INFO_INIT_H8#endif // SELECTION_INFO_INIT_H
diff --git a/src/model/selection_purposes.h b/src/model/selection_purposes.h
index 12d6ec7..6c2e651 100644
--- a/src/model/selection_purposes.h
+++ b/src/model/selection_purposes.h
@@ -1,17 +1,17 @@
1#ifndef SELECTION_PURPOSES_H1#ifndef SELECTION_PURPOSES_H
2#define SELECTION_PURPOSES_H2#define SELECTION_PURPOSES_H
33
4typedef enum 4typedef enum
5 { 5{
6 /*6 /*
7 * The selection will define a new set.7 * The selection will define a new set.
8 */8 */
9 SET,9 SET,
1010
11 /*11 /*
12 * The selection will define a zoom region.12 * The selection will define a zoom region.
13 */13 */
14 ZOOM 14 ZOOM
15 } SELECTION_PURPOSES;15} SELECTION_PURPOSES;
1616
17#endif // SELECTION_PURPOSES_H17#endif // SELECTION_PURPOSES_H
diff --git a/src/model/zoom_info.h b/src/model/zoom_info.h
index 0b935c8..5916b3c 100644
--- a/src/model/zoom_info.h
+++ b/src/model/zoom_info.h
@@ -6,12 +6,13 @@
6/*6/*
7 * Maintain information for zooming.7 * Maintain information for zooming.
8 */8 */
9typedef struct {9typedef struct
10{
10 /*11 /*
11 * A zoomed region has been selection.12 * A zoomed region has been selection.
12 */13 */
13 bool active;14 bool active;
14 15
15 /*16 /*
16 * Left, right, bottom and top of zoom region in world coordinates.17 * Left, right, bottom and top of zoom region in world coordinates.
17 */18 */
diff --git a/src/model/zoom_info_init.c b/src/model/zoom_info_init.c
index c5a3b1d..f49dd59 100644
--- a/src/model/zoom_info_init.c
+++ b/src/model/zoom_info_init.c
@@ -1,7 +1,7 @@
1#include "zoom_info_init.h"1#include "zoom_info_init.h"
22
3void3void
4zoom_info_init (ZOOM_INFO* z)4zoom_info_init (ZOOM_INFO * z)
5{5{
6 z->active = false;6 z->active = false;
77
diff --git a/src/model/zoom_info_init.h b/src/model/zoom_info_init.h
index 262d408..2cf2ac2 100644
--- a/src/model/zoom_info_init.h
+++ b/src/model/zoom_info_init.h
@@ -3,6 +3,6 @@
33
4#include "zoom_info.h"4#include "zoom_info.h"
55
6void zoom_info_init (ZOOM_INFO* z);6void zoom_info_init (ZOOM_INFO * z);
77
8#endif // ZOOM_INFO_INIT_H8#endif // ZOOM_INFO_INIT_H
diff --git a/src/util/pick_convert.c b/src/util/pick_convert.c
index baafcfb..eca819a 100644
--- a/src/util/pick_convert.c
+++ b/src/util/pick_convert.c
@@ -5,8 +5,9 @@
5 */5 */
6#define N 3.06#define N 3.0
77
8void pick_convert (int select_x, int select_y, int x, int y,8void
9 double *c_x, double *c_y, double *w, double *h)9pick_convert (int select_x, int select_y, int x, int y,
10 double *c_x, double *c_y, double *w, double *h)
10{11{
11 /*12 /*
12 * Calculate X and the width.13 * Calculate X and the width.
@@ -14,7 +15,7 @@ void pick_convert (int select_x, int select_y, int x, int y,
14 if (x > select_x)15 if (x > select_x)
15 {16 {
16 *c_x = (x - select_x) / 2.0 + select_x;17 *c_x = (x - select_x) / 2.0 + select_x;
17 *w = x - select_x; 18 *w = x - select_x;
18 }19 }
19 else if (x < select_x)20 else if (x < select_x)
20 {21 {
diff --git a/src/util/sqlinfoprint.c b/src/util/sqlinfoprint.c
index 8e0ae07..071b4c9 100644
--- a/src/util/sqlinfoprint.c
+++ b/src/util/sqlinfoprint.c
@@ -4,7 +4,7 @@
4#include <stdio.h>4#include <stdio.h>
55
6int6int
7sqlinfoprint (char *appMsg, struct sqlca *pSqlca, 7sqlinfoprint (char *appMsg, struct sqlca *pSqlca,
8 const char *file, const unsigned int line)8 const char *file, const unsigned int line)
9{9{
10 int rc = 0;10 int rc = 0;
diff --git a/src/util/sqlinfoprint.h b/src/util/sqlinfoprint.h
index 984694b..7df2a09 100644
--- a/src/util/sqlinfoprint.h
+++ b/src/util/sqlinfoprint.h
@@ -7,9 +7,8 @@
7 * Report SQL error messages. Based on code from:7 * Report SQL error messages. Based on code from:
8 * http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/topic/com.ibm.db2.luw.apdv.embed.doc/doc/c0005779.html8 * http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/topic/com.ibm.db2.luw.apdv.embed.doc/doc/c0005779.html
9 */9 */
10int sqlinfoprint (char *appMsg, 10int sqlinfoprint (char *appMsg,
11 struct sqlca *pSqlca, 11 struct sqlca *pSqlca,
12 const char *file, 12 const char *file, const unsigned int line);
13 const unsigned int line);
1413
15#endif // SQLINFOPRINT_H14#endif // SQLINFOPRINT_H
diff --git a/src/view/exp004geometry.c b/src/view/exp004geometry.c
index 9ff6475..b34d7f3 100644
--- a/src/view/exp004geometry.c
+++ b/src/view/exp004geometry.c
@@ -15,18 +15,18 @@ exp004geometry (GLenum mode)
15 glPointSize (0.1);15 glPointSize (0.1);
16 glColor3f (0.2, 0.2, 0.2);16 glColor3f (0.2, 0.2, 0.2);
1717
18 if (mode == GL_SELECT) 18 if (mode == GL_SELECT)
19 {19 {
20 for (int i = 0; i < ROWS; i++)20 for (int i = 0; i < ROWS; i++)
21 {21 {
22 glLoadName (i);22 glLoadName (i);
23 glDrawArrays (GL_POINTS, i, 1);23 glDrawArrays (GL_POINTS, i, 1);
24 } 24 }
25 }25 }
26 else26 else
27 {27 {
28 glDrawArrays (GL_POINTS, 0, ROWS);28 glDrawArrays (GL_POINTS, 0, ROWS);
29 }29 }
30 30
31 return;31 return;
32}32}
diff --git a/src/view/exp004view.c b/src/view/exp004view.c
index cc27a93..b7e4367 100644
--- a/src/view/exp004view.c
+++ b/src/view/exp004view.c
@@ -5,6 +5,7 @@
5#include "../db/dbconnect.h"5#include "../db/dbconnect.h"
6#include "../model/exp004base.h"6#include "../model/exp004base.h"
7#include "exp004init.h"7#include "exp004init.h"
8#include "exp004state0.h"
8#include "exp004view.h"9#include "exp004view.h"
9#include <GL/glut.h>10#include <GL/glut.h>
1011
@@ -20,8 +21,8 @@ exp004view (void)
20 glutCreateWindow ("Exp004");21 glutCreateWindow ("Exp004");
2122
22 // GL Initialization23 // GL Initialization
23 glClearColor (0.0, 0.0, 0.0, 1.0);24 glClearColor (CLEAR_COLOR);
24 glColor3f (1.0, 1.0, 1.0);25 glColor3f (DRAW_COLOR);
25 glEnable (GL_AUTO_NORMAL);26 glEnable (GL_AUTO_NORMAL);
26 glEnable (GL_DEPTH_TEST);27 glEnable (GL_DEPTH_TEST);
27 glEnable (GL_MAP1_VERTEX_3);28 glEnable (GL_MAP1_VERTEX_3);
@@ -30,7 +31,7 @@ exp004view (void)
30 /* Buffer objects to use. */31 /* Buffer objects to use. */
31 glEnableClientState (GL_COLOR_ARRAY);32 glEnableClientState (GL_COLOR_ARRAY);
32 glEnableClientState (GL_VERTEX_ARRAY);33 glEnableClientState (GL_VERTEX_ARRAY);
33 34
34 /* Enable Antialiasing as described in "Antialiasing"35 /* Enable Antialiasing as described in "Antialiasing"
35 [Shreiner,247]. */36 [Shreiner,247]. */
36 glEnable (GL_LINE_SMOOTH);37 glEnable (GL_LINE_SMOOTH);

Valid XHTML 1.0 Strict

Copyright © 2009 Don Pellegrino All Rights Reserved.