v1.0.0-rc.34

This commit is contained in:
2025-04-14 11:52:06 +02:00
parent 708b5fbc4b
commit b0607ab3ca
238 changed files with 4590 additions and 1329 deletions

View File

@@ -245,11 +245,13 @@ inline void CBOR_ENC(CborEncoder &encoder, const char* key, const ROIMessage &va
CborEncoder mapEncoder;
cborErr(cbor_encode_text_stringz(&encoder, key));
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 4));
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 6));
CBOR_ENC(mapEncoder, "sum", val.sum);
CBOR_ENC(mapEncoder, "sum_square", val.sum_square);
CBOR_ENC(mapEncoder, "max_count", val.max_count);
CBOR_ENC(mapEncoder, "pixels", val.pixels);
CBOR_ENC(mapEncoder, "x_weighted_sum", val.x_weighted);
CBOR_ENC(mapEncoder, "y_weighted_sum", val.y_weighted);
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
}
@@ -291,6 +293,36 @@ inline void CBOR_ENC(CborEncoder &encoder, const char* key, const std::vector<Co
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
}
inline nlohmann::json CBOR_ENC_ROI_CONFIG(const std::vector<ROIConfig> &roi) {
nlohmann::json j;
for (const auto &r: roi) {
nlohmann::json jr;
jr["name"] = r.name;
switch (r.type) {
case ROIConfig::ROIType::Box:
jr["type"] = "box";
jr["xmin"] = r.box.xmin;
jr["xmax"] = r.box.xmax;
jr["ymin"] = r.box.ymin;
jr["ymax"] = r.box.ymax;
break;
case ROIConfig::ROIType::Circle:
jr["type"] = "circle";
jr["r"] = r.circle.r;
jr["x"] = r.circle.x;
jr["y"] = r.circle.y;
break;
case ROIConfig::ROIType::Azim:
jr["type"] = "azim";
jr["qmin"] = r.azim.qmin;
jr["qmax"] = r.azim.qmax;
break;
}
j.push_back(jr);
}
return j;
}
inline void CBOR_ENC_START_USER_DATA(CborEncoder& encoder, const char* key,
const StartMessage& message) {
nlohmann::json j;
@@ -309,7 +341,9 @@ inline void CBOR_ENC_START_USER_DATA(CborEncoder& encoder, const char* key,
j["total_flux"] = message.total_flux.value();
j["rotation_axis"] = {message.rotation_axis[0], message.rotation_axis[1], message.rotation_axis[2]};
j["space_group_number"] = message.space_group_number;
j["roi_names"] = message.roi_names;
j["roi"] = CBOR_ENC_ROI_CONFIG(message.rois);
j["gain_file_names"] = message.gain_file_names;
if (message.write_master_file)
j["write_master_file"] = message.write_master_file.value();
@@ -330,7 +364,7 @@ inline void CBOR_ENC_START_USER_DATA(CborEncoder& encoder, const char* key,
if (message.xfel_pulse_id.has_value())
j["xfel_pulse_id"] = message.xfel_pulse_id.value();
if (message.hdf5_format_version.has_value())
j["hdf5_format_version"] = message.hdf5_format_version.value();
j["hdf5_format_version"] = static_cast<int>(message.hdf5_format_version.value());
auto str = j.dump();
CBOR_ENC(encoder, key, str);