From f1bf21e061a5aaed0281d8e715cabaa4e58eec6f Mon Sep 17 00:00:00 2001 From: taw27 Date: Thu, 25 Oct 2007 22:46:22 +0000 Subject: Draw partnering lines on ImageDisplay Fix silly mistake in partner selection git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@178 bf6ca9ba-c028-0410-8290-897cf20841d1 --- src/imagedisplay.c | 24 +++++++++++++++++++----- src/imagedisplay.h | 3 ++- src/reproject.c | 8 +++++--- 3 files changed, 26 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/imagedisplay.c b/src/imagedisplay.c index c70d8a8..3877da8 100644 --- a/src/imagedisplay.c +++ b/src/imagedisplay.c @@ -207,16 +207,30 @@ static gboolean imagedisplay_redraw(GtkWidget *drawingarea, GdkEventExpose *even GdkGC *gc; - if ( cur->type == IMAGEDISPLAY_MARK_CIRCLE_2 ) { - gc = imagedisplay->gc_marks_2; - } else { - gc = imagedisplay->gc_marks_1; + switch ( cur->type ) { + case IMAGEDISPLAY_MARK_CIRCLE_1 : gc = imagedisplay->gc_marks_1; break; + case IMAGEDISPLAY_MARK_CIRCLE_2 : gc = imagedisplay->gc_marks_2; break; + case IMAGEDISPLAY_MARK_LINE_1 : gc = imagedisplay->gc_marks_1; break; + default : gc = imagedisplay->gc_marks_1; break; } - gdk_draw_arc(drawingarea->window, gc, FALSE, + if ( (cur->type == IMAGEDISPLAY_MARK_CIRCLE_1) || (cur->type == IMAGEDISPLAY_MARK_CIRCLE_2) ) { + + gdk_draw_arc(drawingarea->window, gc, FALSE, xoffs + cur->x*scale - 5, yoffs + imagedisplay->view_height-1-cur->y*scale - 5, 11, 11, 0, 64*360); + + } else if ( (cur->type == IMAGEDISPLAY_MARK_LINE_1) || (cur->type == IMAGEDISPLAY_MARK_LINE_2) ) { + + gdk_draw_line(drawingarea->window, gc, + xoffs + cur->x*scale, + yoffs + imagedisplay->view_height-1-cur->y*scale, + xoffs + cur->x2*scale, + yoffs + imagedisplay->view_height-1-cur->y2*scale ); + + } + cur = cur->next; } diff --git a/src/imagedisplay.h b/src/imagedisplay.h index 73ef172..3b7192a 100644 --- a/src/imagedisplay.h +++ b/src/imagedisplay.h @@ -31,7 +31,8 @@ typedef enum { typedef enum { IMAGEDISPLAY_MARK_CIRCLE_1, IMAGEDISPLAY_MARK_CIRCLE_2, - IMAGEDISPLAY_MARK_LINE_1 + IMAGEDISPLAY_MARK_LINE_1, + IMAGEDISPLAY_MARK_LINE_2 } ImageDisplayMarkType; typedef struct struct_imagedisplaymark { diff --git a/src/reproject.c b/src/reproject.c index 535dc0e..1726639 100644 --- a/src/reproject.c +++ b/src/reproject.c @@ -189,7 +189,7 @@ static ImageFeature *reproject_find_partner(ImageFeature *feature, ImageRecord * double d; - d = distance(image->features->features[i].x, image->features->features[i].x, feature->x, feature->y); + d = distance(image->features->features[i].x, image->features->features[i].y, feature->x, feature->y); if ( d < dmin ) { dmin = d; @@ -198,7 +198,7 @@ static ImageFeature *reproject_find_partner(ImageFeature *feature, ImageRecord * } - if ( dmin < 20 ) { + if ( dmin <= 70.0 ) { return &image->features->features[closest]; } @@ -242,9 +242,11 @@ static void reproject_mark_peaks(ControlContext *ctx) { /* Now connect partners */ reproject_partner_features(rflist, &ctx->images->images[ctx->reproject_cur_image]); for ( j=0; jn_features; j++ ) { - imagedisplay_add_line(ctx->reproject_id, xc+rflist->features[j].x, yc+rflist->features[j].y, + if ( rflist->features[j].partner ) { + imagedisplay_add_line(ctx->reproject_id, xc+rflist->features[j].x, yc+rflist->features[j].y, xc+rflist->features[j].partner->x, yc+rflist->features[j].partner->y, IMAGEDISPLAY_MARK_LINE_1); + } } image_feature_list_free(rflist); -- cgit v1.2.3