diff options
author | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-09-06 12:05:22 +0000 |
---|---|---|
committer | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-09-06 12:05:22 +0000 |
commit | 26736a29bfa67118143faf3ac840c7b89ce934e1 (patch) | |
tree | d5c64f9ce054159c62cbb34395ea63d4bd687e5c /src/displaywindow.c | |
parent | 787209d148adb0d7fd2aecfba641d9232bba6f52 (diff) |
Debodge reprojection and ImageDisplay
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@123 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src/displaywindow.c')
-rw-r--r-- | src/displaywindow.c | 113 |
1 files changed, 73 insertions, 40 deletions
diff --git a/src/displaywindow.c b/src/displaywindow.c index 1fef6ce..a1e2a1a 100644 --- a/src/displaywindow.c +++ b/src/displaywindow.c @@ -282,6 +282,46 @@ static gint displaywindow_gl_motion_notify(GtkWidget *widget, GdkEventMotion *ev ADD_VERTEX \ } \ } + +#define DRAW_POINTER \ + glBegin(GL_LINES); \ + glVertex3f(50, 0.0, 0.0); \ + glVertex3f(-50, 0.0, 0.0); \ + glEnd(); \ + glBegin(GL_TRIANGLE_FAN); \ + glVertex3f(50.0, 0.0, 0.0); \ + glNormal3f(1.0, 0.0, 0.0); \ + glVertex3f(50.0-5.0, 1.0, 1.0); \ + glNormal3f(-2.5, 1.0, 1.0); \ + glVertex3f(50.0-5.0, -1.0, 1.0); \ + glNormal3f(-2.5, -1.0, 1.0); \ + glVertex3f(50.0-5.0, -1.0, -1.0); \ + glNormal3f(-2.5, -1.0, -1.0); \ + glVertex3f(50.0-5.0, 1.0, -1.0); \ + glNormal3f(-2.5, 1.0, -1.0); \ + glVertex3f(50.0-5.0, 1.0, 1.0); \ + glNormal3f(-2.5, 1.0, 1.0); \ + glEnd(); + +#define DRAW_SHORT_POINTER \ + glBegin(GL_LINES); \ + glVertex3f(0.0, 0.0, 0.0); \ + glVertex3f(10.0, 0.0, 0.0); \ + glEnd(); \ + glBegin(GL_TRIANGLE_FAN); \ + glVertex3f(10.0, 0.0, 0.0); \ + glNormal3f(1.0, 0.0, 0.0); \ + glVertex3f(10.0-2.0, 0.2, 0.2); \ + glNormal3f(-2.5, 0.2, 0.2); \ + glVertex3f(10.0-2.0, -0.2, 0.2); \ + glNormal3f(-2.5, -0.2, 0.2); \ + glVertex3f(10.0-2.0, -0.2, -0.2); \ + glNormal3f(-2.5, -0.2, -0.2); \ + glVertex3f(10.0-2.0, 0.2, -0.2); \ + glNormal3f(-2.5, 0.2, -0.2); \ + glVertex3f(10.0-2.0, 0.2, 0.2); \ + glNormal3f(-2.5, 0.2, 0.2); \ + glEnd(); static void displaywindow_gl_create_list(DisplayWindow *dw) { @@ -435,19 +475,20 @@ static void displaywindow_gl_create_list(DisplayWindow *dw) { glEnd(); /* x, y, z pointers */ - glBegin(GL_LINES); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, black); - glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, red); - glVertex3f(0.0, 0.0, 0.0); - glVertex3f(5.0, 0.0, 0.0); - glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, green); - glVertex3f(0.0, 0.0, 0.0); - glVertex3f(0.0, 5.0, 0.0); - glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, bblue); - glVertex3f(0.0, 0.0, 0.0); - glVertex3f(0.0, 0.0, 5.0); - glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, black); - glEnd(); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, red); + DRAW_SHORT_POINTER + + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, green); + glPushMatrix(); + glRotatef(90.0, 0.0, 0.0, 1.0); + DRAW_SHORT_POINTER + glPopMatrix(); + + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bblue); + glPushMatrix(); + glRotatef(-90.0, 0.0, 1.0, 0.0); + DRAW_SHORT_POINTER + glPopMatrix(); /* Tilt axis */ glPushMatrix(); @@ -458,30 +499,10 @@ static void displaywindow_gl_create_list(DisplayWindow *dw) { glRotatef(ctx->images[0].omega, 0.0, 0.0, 1.0); glPolygonOffset(1.0, 1.0); glEnable(GL_POLYGON_OFFSET_LINE); - glBegin(GL_LINES); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, yellow); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, black); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0); - glVertex3f(50, 0.0, 0.0); - glVertex3f(-50, 0.0, 0.0); - glEnd(); - glBegin(GL_TRIANGLE_FAN); - glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, yellow); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, black); - glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0); - glVertex3f(50.0, 0.0, 0.0); - glNormal3f(1.0, 0.0, 0.0); - glVertex3f(50.0-5.0, 1.0, 1.0); - glNormal3f(-2.5, 1.0, 1.0); - glVertex3f(50.0-5.0, -1.0, 1.0); - glNormal3f(-2.5, -1.0, 1.0); - glVertex3f(50.0-5.0, -1.0, -1.0); - glNormal3f(-2.5, -1.0, -1.0); - glVertex3f(50.0-5.0, 1.0, -1.0); - glNormal3f(-2.5, 1.0, -1.0); - glVertex3f(50.0-5.0, 1.0, 1.0); - glNormal3f(-2.5, 1.0, 1.0); - glEnd(); + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, yellow); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, black); + glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0); + DRAW_POINTER glDisable(GL_POLYGON_OFFSET_LINE); glPopMatrix(); @@ -509,7 +530,7 @@ static void displaywindow_gl_create_list(DisplayWindow *dw) { glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0); glBegin(GL_LINES); glVertex3f(0.0, 0.0, 0.0); - glVertex3f(reflection->x, reflection->y, reflection->z); + glVertex3f(reflection->x/1e9, reflection->y/1e9, reflection->z/1e9); glEnd(); } @@ -521,7 +542,7 @@ static void displaywindow_gl_create_list(DisplayWindow *dw) { glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0); glBegin(GL_LINES); glVertex3f(0.0, 0.0, 0.0); - glVertex3f(reflection->x, reflection->y, reflection->z); + glVertex3f(reflection->x/1e9, reflection->y/1e9, reflection->z/1e9); glEnd(); } @@ -533,7 +554,19 @@ static void displaywindow_gl_create_list(DisplayWindow *dw) { glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0); glBegin(GL_LINES); glVertex3f(0.0, 0.0, 0.0); - glVertex3f(reflection->x, reflection->y, reflection->z); + glVertex3f(reflection->x/1e9, reflection->y/1e9, reflection->z/1e9); + glEnd(); + + } + + if ( reflection->type == REFLECTION_VECTOR_MARKER_4 ) { + + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, purple); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, black); + glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 0.0); + glBegin(GL_LINES); + glVertex3f(0.0, 0.0, 0.0); + glVertex3f(reflection->x/1e9, reflection->y/1e9, reflection->z/1e9); glEnd(); } |