diff options
author | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-11-23 11:32:09 +0000 |
---|---|---|
committer | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-11-23 11:32:09 +0000 |
commit | f5091cd54ab0bbb0c9b5e69e2d02c73495d793b5 (patch) | |
tree | 40b53a54d088c0845a2522d8a332563a8504f501 /src/reproject.c | |
parent | f81316b51a62c4faf02ee829c65d4227647db5f9 (diff) |
Don't recalculate reprojections unnecessarily
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@205 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src/reproject.c')
-rw-r--r-- | src/reproject.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/reproject.c b/src/reproject.c index db471fa..9efe965 100644 --- a/src/reproject.c +++ b/src/reproject.c @@ -18,6 +18,7 @@ #include "imagedisplay.h" #include "displaywindow.h" #include "image.h" +#include "reproject.h" ImageFeatureList *reproject_get_reflections(ImageRecord *image, ReflectionList *reflectionlist) { @@ -174,6 +175,8 @@ ImageFeatureList *reproject_get_reflections(ImageRecord *image, ReflectionList * } while ( reflection ); + reproject_partner_features(flist, image); + return flist; } @@ -202,40 +205,40 @@ void reproject_partner_features(ImageFeatureList *flist, ImageRecord *image) { static void reproject_mark_peaks(ControlContext *ctx) { - ImageFeatureList *rflist; ImageFeatureList *flist; size_t j; + ImageRecord *image; + + image = &ctx->images->images[ctx->reproject_cur_image]; /* Draw the reprojected peaks */ - rflist = reproject_get_reflections(&ctx->images->images[ctx->reproject_cur_image], ctx->cell_lattice); - for ( j=0; j<rflist->n_features; j++ ) { - imagedisplay_add_mark(ctx->reproject_id, rflist->features[j].x, rflist->features[j].y, IMAGEDISPLAY_MARK_CIRCLE_1); + if ( !image->rflist ) { + image->rflist = reproject_get_reflections(image, ctx->cell_lattice); + } + for ( j=0; j<image->rflist->n_features; j++ ) { + imagedisplay_add_mark(ctx->reproject_id, image->rflist->features[j].x, image->rflist->features[j].y, IMAGEDISPLAY_MARK_CIRCLE_1); } /* Now draw the original measured peaks */ - flist = ctx->images->images[ctx->reproject_cur_image].features; + flist = image->features; for ( j=0; j<flist->n_features; j++ ) { imagedisplay_add_mark(ctx->reproject_id, flist->features[j].x, flist->features[j].y, IMAGEDISPLAY_MARK_CIRCLE_2); } /* Now connect partners */ - reproject_partner_features(rflist, &ctx->images->images[ctx->reproject_cur_image]); - for ( j=0; j<rflist->n_features; j++ ) { - if ( rflist->features[j].partner ) { - imagedisplay_add_line(ctx->reproject_id, rflist->features[j].x, rflist->features[j].y, - rflist->features[j].partner->x, rflist->features[j].partner->y, + for ( j=0; j<image->rflist->n_features; j++ ) { + if ( image->rflist->features[j].partner ) { + imagedisplay_add_line(ctx->reproject_id, image->rflist->features[j].x, image->rflist->features[j].y, + image->rflist->features[j].partner->x, image->rflist->features[j].partner->y, IMAGEDISPLAY_MARK_LINE_1); } } - image_feature_list_free(rflist); - } static void reproject_update(ControlContext *ctx) { imagedisplay_clear_marks(ctx->reproject_id); - //reflectionlist_clear_markers(ctx->reflectionlist); reproject_mark_peaks(ctx); |