// Copyright (2019-2022) Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-or-later #include "HDF5Writer.h" #include "HDF5NXmx.h" HDF5Writer::HDF5Writer(const StartMessage &request) : files(request.data_file_count) { for (int i = 0; i < request.data_file_count; i++) files[i] = std::make_unique(HDF5Metadata::DataFileName(request.file_prefix, i), request.image_size_x, request.image_size_y, request.pixel_bit_depth / 8, request.pixel_signed, request.compression_algorithm, request.max_spot_count); } void HDF5Writer::Write(const void *data, size_t data_size, const std::vector& spots, int64_t image_number) { if (image_number < 0) throw JFJochException(JFJochExceptionCategory::ArrayOutOfBounds, "No support for negative images"); if (files.empty()) throw JFJochException(JFJochExceptionCategory::ArrayOutOfBounds, "No file to write"); size_t file_number = image_number % files.size(); // Ignore zero size images if (data_size > 0) files[file_number]->Write(data, data_size, spots, image_number / files.size()); }