summaryrefslogtreecommitdiffstats
Side-by-side diff
-rw-r--r--README21
-rw-r--r--TODO3
-rw-r--r--src/Makefile.am27
-rw-r--r--src/controller/actions/pan.c57
-rw-r--r--src/controller/actions/pan.h2
-rw-r--r--src/controller/actions/sel_save.c2
-rw-r--r--src/controller/callbacks/keyboard.c2
-rw-r--r--src/controller/callbacks/mouse.c30
-rw-r--r--src/controller/callbacks/mouse_motion.c19
-rw-r--r--src/controller/callbacks/mouse_motion.h9
-rw-r--r--src/model/base.c417
-rw-r--r--src/model/base.h9
-rw-r--r--src/model/coordinates.h11
-rw-r--r--src/model/data/base.sqc (renamed from src/model/base.sqc)6
-rw-r--r--src/model/selection_info.h37
-rw-r--r--src/model/selection_info_init.c14
-rw-r--r--src/model/selection_info_init.h8
-rw-r--r--src/model/selection_purposes.h17
-rw-r--r--src/model/state/pan_info_init.h8
-rw-r--r--src/model/state/state.h (renamed from src/model/state.h)3
-rw-r--r--src/model/state/zoom_info.h (renamed from src/model/zoom_info.h)0
-rw-r--r--src/model/state/zoom_info_init.c (renamed from src/model/zoom_info_init.c)0
-rw-r--r--src/model/state/zoom_info_init.h (renamed from src/model/zoom_info_init.h)0
-rw-r--r--src/view/geometry.c8
-rw-r--r--src/view/init.c12
-rw-r--r--src/view/state0.h2
-rw-r--r--src/view/view.c4
27 files changed, 179 insertions, 549 deletions
diff --git a/src/model/state/state.h b/src/model/state/state.h
new file mode 100644
index 0000000..ac1e035
--- a/dev/null
+++ b/src/model/state/state.h
@@ -0,0 +1,122 @@
+#ifndef STATE_H
+#define STATE_H
+
+#include "selection_info.h"
+#include "zoom_info.h"
+#include "pan_info.h"
+
+/*
+ * Buffer object identifiers.
+ */
+#define BASE_VERTICES 0
+#define BASE_COLORS 1
+
+#define CLEAR_COLOR 1.0, 1.0, 1.0, 1.0
+#define DRAW_COLOR 0.0, 0.0, 0.0
+
+#define DEFAULT_COLOR_R 0.00
+#define DEFAULT_COLOR_G 0.00
+#define DEFAULT_COLOR_B 0.01
+#define DEFAULT_COLOR_A (1.0 / 7.0)
+
+#define SELECT_COLOR_R 0.00
+#define SELECT_COLOR_G 0.00
+#define SELECT_COLOR_B 0.00
+#define SELECT_COLOR_A 0.75
+
+typedef enum
+{ PROTEIN_GEOMETRY, PROTEIN_SELECTED_GEOMETRY, DENSITY_LEGEND_GEOMETRY,
+ MAP_GEOMETRY
+} LISTS;
+#define NUM_LISTS 2
+
+/*
+ * Maintain state of the model.
+ */
+typedef struct
+{
+ /*
+ * Number of nodes having coordinates assigned.
+ */
+ unsigned int rows;
+
+ /*
+ * Display lists.
+ */
+ unsigned int list_offset;
+
+ /*
+ * Track the bounding box of the points.
+ */
+ struct
+ {
+ float min_x;
+ float max_x;
+ float min_y;
+ float max_y;
+ } bb;
+
+ /*
+ * Minimum coordinate for the orthographic projection.
+ */
+ float ortho_min;
+
+ /*
+ * Maximum coordinate for the orthographic projection.
+ */
+ float ortho_max;
+
+ /*
+ * Orthographic coordinates after aspect preserving scaling.
+ */
+ struct
+ {
+ double min_x;
+ double max_x;
+ double min_y;
+ double max_y;
+ } ortho;
+
+ /*
+ * Viewport size.
+ */
+ struct
+ {
+ int w;
+ int h;
+ } viewport;
+
+ /*
+ * Buffer objects.
+ */
+ unsigned int buffers[1];
+
+ /*
+ * GI Identifiers indexed by row. Storage is [rows][20].
+ */
+ char *gi_data;
+
+ /*
+ * 2D coordinates for each protein. Storage is [rows][2].
+ */
+ float *base_vertices_data;
+
+ /*
+ * RGB color for each protein. Storage is [rows][4].
+ */
+ float *base_colors_data;
+
+ SELECTION_INFO selection;
+
+ ZOOM_INFO zoom;
+
+ PAN_INFO pan;
+
+ /*
+ * Display a legend on the map.
+ */
+ bool legend;
+
+} STATE;
+
+#endif // STATE_H

Valid XHTML 1.0 Strict

Copyright © 2009 Don Pellegrino All Rights Reserved.