// Copyright (2019-2023) Paul Scherrer Institute #ifndef JUNGFRAUJOCH_FRAMETRANSFORMATION_H #define JUNGFRAUJOCH_FRAMETRANSFORMATION_H #include "DiffractionExperiment.h" #include "../compression/JFJochCompressor.h" #include "../jungfrau/JFConversion.h" #include "ROIFilter.h" class FrameTransformation { const DiffractionExperiment& experiment; JFJochBitShuffleCompressor compressor; std::vector > summation_buffer; std::vector precompression_buffer; std::vector conversion_buffer; std::vector image16bit; const size_t summation; const size_t pixel_depth; std::vector full_image_buffer; bool binning_2x2; void PackSummation(); // transfer summed image to converted coordinates, clear summation buffer, no compression void Generate16BitPreview(); public: FrameTransformation(const DiffractionExperiment &experiment); void ProcessModule(const int16_t *input, uint16_t module_number, int data_stream); void ProcessModule(JFConversion &conv, const int16_t *input, uint16_t module_number, int data_stream); void Pack(); // transfer summed image to converted coordinates, clear summation buffer size_t SaveCompressedImage(void *output); void ApplyROI(const ROIFilter &filter); int16_t *GetPreview16BitImage(); }; #endif //JUNGFRAUJOCH_FRAMETRANSFORMATION_H