summaryrefslogtreecommitdiffstats
Side-by-side diff
-rw-r--r--src/Makefile.am30
-rw-r--r--src/controller/actions/clear_selection.sqc4
-rw-r--r--src/controller/actions/process_hits.c4
-rw-r--r--src/controller/actions/sel_save.c6
-rw-r--r--src/controller/actions/sel_save.sqc4
-rw-r--r--src/controller/actions/selection_from_db.sqc4
-rw-r--r--src/controller/actions/set_ortho.c4
-rw-r--r--src/controller/actions/zoom.c4
-rw-r--r--src/controller/callbacks/display.c4
-rw-r--r--src/controller/callbacks/keyboard.c4
-rw-r--r--src/controller/callbacks/mouse.c8
-rw-r--r--src/controller/callbacks/reshape.c4
-rw-r--r--src/flumap.c (renamed from src/exp004viz.c)4
-rw-r--r--src/model/base.c417
-rw-r--r--src/model/base.h9
-rw-r--r--src/model/base.sqc (renamed from src/model/exp004base.sqc)8
-rw-r--r--src/model/exp004base.h9
-rw-r--r--src/model/geometry/density_legend_geometry.c4
-rw-r--r--src/model/geometry/map_geometry.c4
-rw-r--r--src/model/geometry/protein_geometry.c4
-rw-r--r--src/model/geometry/protein_selected_geometry.c4
-rw-r--r--src/model/state.h (renamed from src/model/exp004state.h)8
-rw-r--r--src/view/exp004geometry.h8
-rw-r--r--src/view/exp004init.h9
-rw-r--r--src/view/exp004state0.h8
-rw-r--r--src/view/exp004view.h6
-rw-r--r--src/view/geometry.c (renamed from src/view/exp004geometry.c)8
-rw-r--r--src/view/geometry.h8
-rw-r--r--src/view/init.c (renamed from src/view/exp004init.c)12
-rw-r--r--src/view/init.h9
-rw-r--r--src/view/state0.h8
-rw-r--r--src/view/view.c (renamed from src/view/exp004view.c)10
-rw-r--r--src/view/view.h6
33 files changed, 530 insertions, 113 deletions
diff --git a/src/model/base.c b/src/model/base.c
new file mode 100644
index 0000000..649fec3
--- a/dev/null
+++ b/src/model/base.c
@@ -0,0 +1,417 @@
+static char sqla_program_id[292] =
+{
+ 172,0,65,69,65,78,65,73,86,65,78,55,78,82,73,90,48,49,49,49,
+ 49,32,50,32,32,32,32,32,32,32,32,32,8,0,68,79,78,32,32,32,
+ 32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,8,0,66,65,83,69,32,32,32,32,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+ 0,0,0,0,0,0,0,0,0,0,0,0
+};
+
+#include "sqladef.h"
+
+static struct sqla_runtime_info sqla_rtinfo =
+{{'S','Q','L','A','R','T','I','N'}, sizeof(wchar_t), 0, {' ',' ',' ',' '}};
+
+
+static const short sqlIsLiteral = SQL_IS_LITERAL;
+static const short sqlIsInputHvar = SQL_IS_INPUT_HVAR;
+
+
+#line 1 "base.sqc"
+/* I seem to need this for glGenBuffers as per
+ http://www.gamedev.net/community/forums/topic.asp?topic_id=422358 */
+#define GL_GLEXT_PROTOTYPES
+
+#include "base.h"
+#include "../view/state0.h"
+#include "../util/check_error.h"
+#include <GL/glut.h>
+#include <string.h>
+#include <stdlib.h>
+#include "sqlca.h"
+extern struct sqlca sqlca;
+
+/*
+ * A simple alias to make the code more readable.
+ */
+#define S state0
+
+void
+base (void)
+{
+ /*
+ * This implementation can be improved by mapping the video memory
+ * directly rather than loading into system memory and then copying
+ * into video memory.
+ */
+
+ /*
+ * db2dclgn -d exp004 -t coordinates
+ */
+
+/*
+EXEC SQL BEGIN DECLARE SECTION;
+*/
+
+#line 31 "base.sqc"
+
+
+/*
+EXEC SQL INCLUDE 'model/coordinates.h';
+*/
+
+#line 1 "/home/don/projects/Research/Experiments/exp005/src/model/coordinates.h"
+struct
+{
+ sqlint32 coord_id;
+ struct
+ {
+ short length;
+ char data[50];
+ } gi;
+ double x;
+ double y;
+} coordinates;
+
+#line 32 "base.sqc"
+
+ sqlint32 rows;
+
+/*
+EXEC SQL END DECLARE SECTION;
+*/
+
+#line 34 "base.sqc"
+
+
+ /* Determine how many nodes have coordinates assigned to them. */
+
+/*
+EXEC SQL SELECT COUNT (*) INTO:rows FROM coordinates;
+*/
+
+{
+#line 37 "base.sqc"
+ sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
+#line 37 "base.sqc"
+ sqlaaloc(3,1,1,0L);
+ {
+ struct sqla_setdata_list sql_setdlist[1];
+#line 37 "base.sqc"
+ sql_setdlist[0].sqltype = 496; sql_setdlist[0].sqllen = 4;
+#line 37 "base.sqc"
+ sql_setdlist[0].sqldata = (void*)&rows;
+#line 37 "base.sqc"
+ sql_setdlist[0].sqlind = 0L;
+#line 37 "base.sqc"
+ sqlasetdata(3,0,1,sql_setdlist,0L,0L);
+ }
+#line 37 "base.sqc"
+ sqlacall((unsigned short)24,1,0,3,0L);
+#line 37 "base.sqc"
+ sqlastop(0L);
+}
+
+#line 37 "base.sqc"
+
+
+ /* Free any existing coordinates and allocate memory to store the
+ new values. */
+ S.rows = rows;
+
+ free (S.selection.set);
+ S.selection.set = calloc (rows, sizeof (bool));
+
+ free (S.gi_data);
+ S.gi_data = calloc (rows, sizeof (char) * 20);
+
+ free (S.base_vertices_data);
+ S.base_vertices_data = calloc (rows, sizeof (float) * 2);
+
+ free (S.base_colors_data);
+ S.base_colors_data = calloc (rows, sizeof (float) * 4);
+
+
+/*
+EXEC SQL DECLARE c2 CURSOR FOR SELECT *FROM coordinates;
+*/
+
+#line 55 "base.sqc"
+
+
+
+/*
+EXEC SQL OPEN c2;
+*/
+
+{
+#line 57 "base.sqc"
+ sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
+#line 57 "base.sqc"
+ sqlacall((unsigned short)26,2,0,0,0L);
+#line 57 "base.sqc"
+ sqlastop(0L);
+}
+
+#line 57 "base.sqc"
+
+
+ /*
+ * Initialize the bounding box of the points.
+ */
+ S.bb.min_x = 0.0;
+ S.bb.max_x = 0.0;
+ S.bb.min_y = 0.0;
+ S.bb.max_y = 0.0;
+
+
+/*
+EXEC SQL FETCH c2 INTO:coordinates;
+*/
+
+{
+#line 67 "base.sqc"
+ sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
+#line 67 "base.sqc"
+ sqlaaloc(3,4,2,0L);
+ {
+ struct sqla_setdata_list sql_setdlist[4];
+#line 67 "base.sqc"
+ sql_setdlist[0].sqltype = 496; sql_setdlist[0].sqllen = 4;
+#line 67 "base.sqc"
+ sql_setdlist[0].sqldata = (void*)&coordinates.coord_id;
+#line 67 "base.sqc"
+ sql_setdlist[0].sqlind = 0L;
+#line 67 "base.sqc"
+ sql_setdlist[1].sqltype = 448; sql_setdlist[1].sqllen = 50;
+#line 67 "base.sqc"
+ sql_setdlist[1].sqldata = (void*)&coordinates.gi;
+#line 67 "base.sqc"
+ sql_setdlist[1].sqlind = 0L;
+#line 67 "base.sqc"
+ sql_setdlist[2].sqltype = 480; sql_setdlist[2].sqllen = 8;
+#line 67 "base.sqc"
+ sql_setdlist[2].sqldata = (void*)&coordinates.x;
+#line 67 "base.sqc"
+ sql_setdlist[2].sqlind = 0L;
+#line 67 "base.sqc"
+ sql_setdlist[3].sqltype = 480; sql_setdlist[3].sqllen = 8;
+#line 67 "base.sqc"
+ sql_setdlist[3].sqldata = (void*)&coordinates.y;
+#line 67 "base.sqc"
+ sql_setdlist[3].sqlind = 0L;
+#line 67 "base.sqc"
+ sqlasetdata(3,0,4,sql_setdlist,0L,0L);
+ }
+#line 67 "base.sqc"
+ sqlacall((unsigned short)25,2,0,3,0L);
+#line 67 "base.sqc"
+ sqlastop(0L);
+}
+
+#line 67 "base.sqc"
+
+ while (sqlca.sqlcode != 100)
+ {
+ int i = coordinates.coord_id - 1;
+
+ strncpy (S.gi_data + i, coordinates.gi.data, sizeof (S.gi_data[i]));
+
+ float *v = S.base_vertices_data + (i * 2);
+ *v = coordinates.x;
+ v++;
+ *v = coordinates.y;
+
+ v = S.base_vertices_data + (i * 2);
+ if (*v < S.bb.min_x)
+ S.bb.min_x = *v;
+ if (*v > S.bb.max_x)
+ S.bb.max_x = *v;
+
+ v++;
+ if (*v < S.bb.min_y)
+ S.bb.min_y = *v;
+ if (*v > S.bb.max_y)
+ S.bb.max_y = *v;
+
+ /*
+ * Deselected by default.
+ */
+ S.selection.set[i] = false;
+
+ float *c = S.base_colors_data + (i * 4);
+ *c = DEFAULT_COLOR_R;
+ c++;
+ *c = DEFAULT_COLOR_G;
+ c++;
+ *c = DEFAULT_COLOR_B;
+ c++;
+ *c = DEFAULT_COLOR_A;
+
+
+/*
+EXEC SQL FETCH c2 INTO:coordinates;
+*/
+
+{
+#line 105 "base.sqc"
+ sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
+#line 105 "base.sqc"
+ sqlaaloc(3,4,3,0L);
+ {
+ struct sqla_setdata_list sql_setdlist[4];
+#line 105 "base.sqc"
+ sql_setdlist[0].sqltype = 496; sql_setdlist[0].sqllen = 4;
+#line 105 "base.sqc"
+ sql_setdlist[0].sqldata = (void*)&coordinates.coord_id;
+#line 105 "base.sqc"
+ sql_setdlist[0].sqlind = 0L;
+#line 105 "base.sqc"
+ sql_setdlist[1].sqltype = 448; sql_setdlist[1].sqllen = 50;
+#line 105 "base.sqc"
+ sql_setdlist[1].sqldata = (void*)&coordinates.gi;
+#line 105 "base.sqc"
+ sql_setdlist[1].sqlind = 0L;
+#line 105 "base.sqc"
+ sql_setdlist[2].sqltype = 480; sql_setdlist[2].sqllen = 8;
+#line 105 "base.sqc"
+ sql_setdlist[2].sqldata = (void*)&coordinates.x;
+#line 105 "base.sqc"
+ sql_setdlist[2].sqlind = 0L;
+#line 105 "base.sqc"
+ sql_setdlist[3].sqltype = 480; sql_setdlist[3].sqllen = 8;
+#line 105 "base.sqc"
+ sql_setdlist[3].sqldata = (void*)&coordinates.y;
+#line 105 "base.sqc"
+ sql_setdlist[3].sqlind = 0L;
+#line 105 "base.sqc"
+ sqlasetdata(3,0,4,sql_setdlist,0L,0L);
+ }
+#line 105 "base.sqc"
+ sqlacall((unsigned short)25,2,0,3,0L);
+#line 105 "base.sqc"
+ sqlastop(0L);
+}
+
+#line 105 "base.sqc"
+
+ }
+
+
+/*
+EXEC SQL CLOSE c2;
+*/
+
+{
+#line 108 "base.sqc"
+ sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
+#line 108 "base.sqc"
+ sqlacall((unsigned short)20,2,0,0,0L);
+#line 108 "base.sqc"
+ sqlastop(0L);
+}
+
+#line 108 "base.sqc"
+
+
+
+/*
+EXEC SQL COMMIT;
+*/
+
+{
+#line 110 "base.sqc"
+ sqlastrt(sqla_program_id, &sqla_rtinfo, &sqlca);
+#line 110 "base.sqc"
+ sqlacall((unsigned short)21,0,0,0,0L);
+#line 110 "base.sqc"
+ sqlastop(0L);
+}
+
+#line 110 "base.sqc"
+
+
+ /*
+ * Find the largest axis and use it to setup the projection. This
+ * is done to preserve the aspect ratio. The aspect ratio should be
+ * preserved since relative distance is a meaningful indicator in
+ * the map.
+ */
+
+ // Min of min x or min y.
+ if (S.bb.min_x <= S.bb.min_y)
+ S.ortho_min = S.bb.min_x;
+ else
+ S.ortho_min = S.bb.min_y;
+ S.ortho_min--;
+
+ // Max of max x or max y.
+ if (S.bb.max_x >= S.bb.max_y)
+ S.ortho_max = S.bb.max_x;
+ else
+ S.ortho_max = S.bb.max_y;
+ S.ortho_max++;
+
+ // Invert the y coordinate to match up with the LGL Java viewer.
+ float *v = S.base_vertices_data;
+ for (int i = 0; i < S.rows; i++)
+ {
+ v++;
+ *v = S.ortho_max - *v;
+ v++;
+ }
+
+ // Move the origin (0,0) to the center of the data.
+ S.ortho_min = 0.0;
+ S.ortho_max = 0.0;
+
+ v = S.base_vertices_data;
+ for (int i = 0; i < S.rows; i++)
+ {
+ *v = *v - (0.5 * (S.bb.max_x - S.bb.min_x));
+
+ if (S.ortho_min > *v)
+ S.ortho_min = *v;
+
+ if (S.ortho_max < *v)
+ S.ortho_max = *v;
+
+ v++;
+
+ *v = *v - (0.5 * (S.bb.max_y - S.bb.min_y));
+
+ if (S.ortho_min > *v)
+ S.ortho_min = *v;
+
+ if (S.ortho_max < *v)
+ S.ortho_max = *v;
+
+ v++;
+ }
+
+ glGenBuffers (2, S.buffers);
+
+ glBindBuffer (GL_ARRAY_BUFFER, S.buffers[BASE_VERTICES]);
+ glVertexPointer (2, GL_FLOAT, 0, 0);
+ glBufferData (GL_ARRAY_BUFFER,
+ sizeof (S.base_vertices_data), S.base_vertices_data,
+ GL_STATIC_DRAW);
+
+ glBindBuffer (GL_ARRAY_BUFFER, S.buffers[BASE_COLORS]);
+ glColorPointer (4, GL_FLOAT, 0, 0);
+ glBufferData (GL_ARRAY_BUFFER,
+ sizeof (S.base_colors_data), S.base_colors_data,
+ GL_STATIC_DRAW);
+
+ return;
+}

Valid XHTML 1.0 Strict

Copyright © 2009 Don Pellegrino All Rights Reserved.