// Copyright (2019-2022) Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-or-later #ifndef HDF5DATAFILE_H #define HDF5DATAFILE_H #include #include #include #include "HDF5Objects.h" #include "../common/SpotToSave.h" #include "../frame_serialize/ImageMessage.h" class HDF5DataFile { std::string filename; std::string master_filename; std::unique_ptr data_file = nullptr; std::unique_ptr data_set = nullptr; size_t xpixel; size_t ypixel; size_t max_image_number; size_t nimages; HDF5Dcpl dcpl; HDF5DataType data_type; std::string image_units; std::vector spot_x; std::vector spot_y; std::vector spot_intensity; std::vector spot_count; const size_t max_spots; std::vector indexing_result; void CreateFile(); public: HDF5DataFile(const std::string& name, int64_t width, int64_t height, int64_t pixel_depth_byte, bool is_signed, CompressionAlgorithm compression = CompressionAlgorithm::BSHUF_LZ4, size_t max_spots = 0); ~HDF5DataFile(); void Write(const DataMessage& msg, uint64_t image_number); size_t GetMaxImageNumber() const; size_t GetNumImages() const; std::string GetFilename() const; }; #endif //HDF5DATAFILE_H