aboutsummaryrefslogtreecommitdiff
path: root/src/reproject.c
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-11-23 11:32:09 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-11-23 11:32:09 +0000
commitf5091cd54ab0bbb0c9b5e69e2d02c73495d793b5 (patch)
tree40b53a54d088c0845a2522d8a332563a8504f501 /src/reproject.c
parentf81316b51a62c4faf02ee829c65d4227647db5f9 (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.c29
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);