aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-10-03 14:26:37 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-10-03 14:26:37 +0000
commitb86df90147691912d48a1e9a0108cb07c306a6ed (patch)
tree81be731346e06033c04281c8c8fde6265cd23373 /src
parent197b719e4299412ab1b151682b43380435c8ec86 (diff)
Make the cube optional, remove fog option
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@147 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src')
-rw-r--r--src/displaywindow.c114
-rw-r--r--src/displaywindow.h2
2 files changed, 51 insertions, 65 deletions
diff --git a/src/displaywindow.c b/src/displaywindow.c
index 2dddbae..4c7771a 100644
--- a/src/displaywindow.c
+++ b/src/displaywindow.c
@@ -139,24 +139,10 @@ static gint displaywindow_changeview(GtkWidget *widget, GtkRadioAction *action,
}
-static gint displaywindow_changefog(GtkWidget *widget, DisplayWindow *dw) {
+static gint displaywindow_changecube(GtkWidget *widget, DisplayWindow *dw) {
- GdkGLContext *glcontext;
- GdkGLDrawable *gldrawable;
-
- glcontext = gtk_widget_get_gl_context(dw->drawing_area);
- gldrawable = gtk_widget_get_gl_drawable(dw->drawing_area);
-
- dw->fog = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(widget));
- if ( !gdk_gl_drawable_gl_begin(gldrawable, glcontext) ) {
- return 1;
- }
- if ( dw->fog ) {
- glEnable(GL_FOG);
- } else {
- glDisable(GL_FOG);
- }
- gdk_gl_drawable_gl_end(gldrawable);
+ dw->cube = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(widget));
+ displaywindow_update(dw);
return 0;
}
@@ -197,7 +183,7 @@ static void displaywindow_addmenubar(DisplayWindow *dw) {
};
guint n_radios = G_N_ELEMENTS(radios);
GtkToggleActionEntry toggles[] = {
- { "FogAction", NULL, "_Fog", NULL, NULL, G_CALLBACK(displaywindow_changefog), FALSE },
+ { "CubeAction", NULL, "100 nm^-1 _cube", "<Ctrl>C", NULL, G_CALLBACK(displaywindow_changecube), TRUE },
};
guint n_toggles = G_N_ELEMENTS(toggles);
@@ -479,49 +465,51 @@ static void displaywindow_gl_create_list(DisplayWindow *dw) {
glNewList(dw->gl_list_id, GL_COMPILE);
/* Bounding cube: 100 nm^-1 side length */
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue);
- glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, black);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, black);
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0);
- glBegin(GL_LINE_LOOP);
- glNormal3f(50.0, 50.0, 50.0);
- glVertex3f(50.0, 50.0, 50.0);
- glNormal3f(-50.0, 50.0, 50.0);
- glVertex3f(-50.0, 50.0, 50.0);
- glNormal3f(-50.0, -50.0, 50.0);
- glVertex3f(-50.0, -50.0, 50.0);
- glNormal3f(50.0, -50.0, 50.0);
- glVertex3f(50.0, -50.0, 50.0);
-
- glEnd();
- glBegin(GL_LINE_LOOP);
- glNormal3f(50.0, 50.0, -50.0);
- glVertex3f(50.0, 50.0, -50.0);
- glNormal3f(-50.0, 50.0, -50.0);
- glVertex3f(-50.0, 50.0, -50.0);
- glNormal3f(-50.0, -50.0, -50.0);
- glVertex3f(-50.0, -50.0, -50.0);
- glNormal3f(50.0, -50.0, -50.0);
- glVertex3f(50.0, -50.0, -50.0);
- glEnd();
- glBegin(GL_LINES);
- glNormal3f(50.0, 50.0, 50.0);
- glVertex3f(50.0, 50.0, 50.0);
- glNormal3f(50.0, 50.0, -50.0);
- glVertex3f(50.0, 50.0, -50.0);
- glNormal3f(-50.0, 50.0, 50.0);
- glVertex3f(-50.0, 50.0, 50.0);
- glNormal3f(-50.0, 50.0, -50.0);
- glVertex3f(-50.0, 50.0, -50.0);
- glNormal3f(-50.0, -50.0, 50.0);
- glVertex3f(-50.0, -50.0, 50.0);
- glNormal3f(-50.0, -50.0, -50.0);
- glVertex3f(-50.0, -50.0, -50.0);
- glNormal3f(50.0, -50.0, 50.0);
- glVertex3f(50.0, -50.0, 50.0);
- glNormal3f(50.0, -50.0, -50.0);
- glVertex3f(50.0, -50.0, -50.0);
- glEnd();
+ if ( dw->cube ) {
+ glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, blue);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, black);
+ glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, black);
+ glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0);
+ glBegin(GL_LINE_LOOP);
+ glNormal3f(50.0, 50.0, 50.0);
+ glVertex3f(50.0, 50.0, 50.0);
+ glNormal3f(-50.0, 50.0, 50.0);
+ glVertex3f(-50.0, 50.0, 50.0);
+ glNormal3f(-50.0, -50.0, 50.0);
+ glVertex3f(-50.0, -50.0, 50.0);
+ glNormal3f(50.0, -50.0, 50.0);
+ glVertex3f(50.0, -50.0, 50.0);
+
+ glEnd();
+ glBegin(GL_LINE_LOOP);
+ glNormal3f(50.0, 50.0, -50.0);
+ glVertex3f(50.0, 50.0, -50.0);
+ glNormal3f(-50.0, 50.0, -50.0);
+ glVertex3f(-50.0, 50.0, -50.0);
+ glNormal3f(-50.0, -50.0, -50.0);
+ glVertex3f(-50.0, -50.0, -50.0);
+ glNormal3f(50.0, -50.0, -50.0);
+ glVertex3f(50.0, -50.0, -50.0);
+ glEnd();
+ glBegin(GL_LINES);
+ glNormal3f(50.0, 50.0, 50.0);
+ glVertex3f(50.0, 50.0, 50.0);
+ glNormal3f(50.0, 50.0, -50.0);
+ glVertex3f(50.0, 50.0, -50.0);
+ glNormal3f(-50.0, 50.0, 50.0);
+ glVertex3f(-50.0, 50.0, 50.0);
+ glNormal3f(-50.0, 50.0, -50.0);
+ glVertex3f(-50.0, 50.0, -50.0);
+ glNormal3f(-50.0, -50.0, 50.0);
+ glVertex3f(-50.0, -50.0, 50.0);
+ glNormal3f(-50.0, -50.0, -50.0);
+ glVertex3f(-50.0, -50.0, -50.0);
+ glNormal3f(50.0, -50.0, 50.0);
+ glVertex3f(50.0, -50.0, 50.0);
+ glNormal3f(50.0, -50.0, -50.0);
+ glVertex3f(50.0, -50.0, -50.0);
+ glEnd();
+ }
/* x, y, z pointers */
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, black);
@@ -841,8 +829,6 @@ static gboolean displaywindow_gl_configure(GtkWidget *widget, GdkEventConfigure
glViewport(0, 0, w, h);
glEnable(GL_DEPTH_TEST);
- if ( dw->fog ) glEnable(GL_FOG);
- glFogf(GL_FOG_DENSITY, 0.005);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glShadeModel(GL_SMOOTH);
@@ -911,7 +897,7 @@ DisplayWindow *displaywindow_open(ControlContext *ctx) {
dw->view_quat[2] = 0.0;
dw->view_quat[3] = 1.0;
dw->ctx = ctx;
- dw->fog = 0;
+ dw->cube = TRUE;
dw->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(dw->window), title);
diff --git a/src/displaywindow.h b/src/displaywindow.h
index 423fe59..98ec148 100644
--- a/src/displaywindow.h
+++ b/src/displaywindow.h
@@ -39,7 +39,7 @@ typedef struct dw_struct {
float x_start;
float y_start;
float view_quat[4];
- int fog;
+ int cube;
GLuint gl_list_id; /* Display list for "everything else" */
int gl_use_buffers; /* 0=use vertex arrays only, otherwise use VBOs */
GLuint gl_ref_vertex_buffer; /* "Measured reflection" stuff */