v1.0.0-rc.34
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user