diff options
Diffstat (limited to 'libcrystfel/src')
-rw-r--r-- | libcrystfel/src/image-seedee.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libcrystfel/src/image-seedee.c b/libcrystfel/src/image-seedee.c index 60153591..b4ae5179 100644 --- a/libcrystfel/src/image-seedee.c +++ b/libcrystfel/src/image-seedee.c @@ -84,6 +84,34 @@ static int load_seedee_data(struct panel_template *p, } } + } else if ( (array->datatype == 'u') + && (array->itemsize == 4) + && (array->byteorder == '<') ) + { + int fs, ss; + uint32_t *in_data = (uint32_t *)array->data; + + for ( ss=0; ss<PANEL_HEIGHT(p); ss++ ) { + for ( fs=0; fs<PANEL_WIDTH(p); fs++ ) { + size_t idx = fs+p->orig_min_fs + (ss+p->orig_min_ss)*data_size_fs; + data[fs+ss*PANEL_WIDTH(p)] = in_data[idx]; + } + } + + } else if ( (array->datatype == 'f') + && (array->itemsize == 8) + && (array->byteorder == '<') ) + { + int fs, ss; + double *in_data = (double *)array->data; + + for ( ss=0; ss<PANEL_HEIGHT(p); ss++ ) { + for ( fs=0; fs<PANEL_WIDTH(p); fs++ ) { + size_t idx = fs+p->orig_min_fs + (ss+p->orig_min_ss)*data_size_fs; + data[fs+ss*PANEL_WIDTH(p)] = in_data[idx]; + } + } + } else { ERROR("Unrecognised data type %c%i%c\n", array->datatype, array->itemsize, array->byteorder); |