Files
Jungfraujoch/writer/HDF5Writer.cpp
Filip Leonarski 1757d42182 Initial commit
Signed-off-by: Filip Leonarski <filip.leonarski@psi.ch>
2023-04-06 11:17:59 +02:00

31 lines
1.3 KiB
C++

// 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<HDF5DataFile>(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<SpotToSave>& 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());
}