aboutsummaryrefslogtreecommitdiff
path: root/src/displaywindow.c
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-09-06 12:05:22 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-09-06 12:05:22 +0000
commit26736a29bfa67118143faf3ac840c7b89ce934e1 (patch)
treed5c64f9ce054159c62cbb34395ea63d4bd687e5c /src/displaywindow.c
parent787209d148adb0d7fd2aecfba641d9232bba6f52 (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.c113
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();
}