From 9e7d609f4281b96cb6875a21cbf2fce104c006ab Mon Sep 17 00:00:00 2001 From: Clemens Vonrhein Date: Fri, 12 Jun 2020 15:57:14 +0100 Subject: [PATCH] allow for image offset via DURIN_IMAGE_NUMBER_OFFSET environment variable --- src/file.c | 6 ++++-- src/file.h | 1 + src/plugin.c | 7 +++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/file.c b/src/file.c index be7b5ee..aa8bb71 100644 --- a/src/file.c +++ b/src/file.c @@ -257,11 +257,12 @@ done: int get_nxs_frame( const struct ds_desc_t *desc, - const int n, + const int nin, void *buffer) { /* detector data are the two inner most indices */ /* TODO: handle ndims > 3 and select appropriately */ int retval = 0; + int n = nin - desc->image_number_offset; hsize_t frame_idx[3] = {n, 0, 0}; hsize_t frame_size[3] = {1, desc->dims[1], desc->dims[2]}; if (n < 0 || n >= desc->dims[0]) { @@ -280,10 +281,11 @@ done: int get_dectris_eiger_frame( const struct ds_desc_t *desc, - int n, + int nin, void *buffer) { int retval = 0; + int n = nin - desc->image_number_offset; int block, frame_count, idx; struct eiger_ds_desc_t *eiger_desc = (struct eiger_ds_desc_t*) desc; char data_name[16] = {0}; diff --git a/src/file.h b/src/file.h index a7e0ae9..23d923b 100644 --- a/src/file.h +++ b/src/file.h @@ -17,6 +17,7 @@ struct ds_desc_t { hid_t data_g_id; hsize_t dims[3]; int data_width; + int image_number_offset; int (*get_pixel_properties)(const struct ds_desc_t*, double*, double*); int (*get_pixel_mask)(const struct ds_desc_t*, int*); int (*get_data_frame)(const struct ds_desc_t*, const int, void*); diff --git a/src/plugin.c b/src/plugin.c index c1c53c4..8bb4118 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -125,6 +125,13 @@ void plugin_open( ERROR_JUMP(-4, done, ""); } + data_desc->image_number_offset = 0; + char *cenv; + cenv = getenv("DURIN_IMAGE_NUMBER_OFFSET"); + if (cenv!=NULL) { + data_desc->image_number_offset = atoi(cenv); + } + mask_buffer = malloc(data_desc->dims[1] * data_desc->dims[2] * sizeof(int)); if (mask_buffer) { retval = data_desc->get_pixel_mask(data_desc, mask_buffer);