v1.0.0-rc.72
This commit is contained in:
@@ -410,8 +410,14 @@ namespace {
|
||||
s.ice_ring = GetCBORBool(map_value);
|
||||
else if (key == "indexed")
|
||||
s.indexed = GetCBORBool(map_value);
|
||||
else if (key == "angle")
|
||||
s.angle_from_ewald_sphere = GetCBORFloat(map_value);
|
||||
else if (key == "h")
|
||||
s.h = GetCBORInt(map_value);
|
||||
else if (key == "k")
|
||||
s.k = GetCBORInt(map_value);
|
||||
else if (key == "l")
|
||||
s.l = GetCBORInt(map_value);
|
||||
else if (key == "dist_ewald")
|
||||
s.dist_ewald_sphere = GetCBORFloat(map_value);
|
||||
else
|
||||
cbor_value_advance(&map_value);
|
||||
}
|
||||
@@ -429,6 +435,49 @@ namespace {
|
||||
cborErr(cbor_value_leave_container(&value, &array_value));
|
||||
}
|
||||
|
||||
Reflection GetReflection(CborValue &value) {
|
||||
Reflection r{};
|
||||
CborValue map_value;
|
||||
cborErr(cbor_value_enter_container(&value, &map_value));
|
||||
while (!cbor_value_at_end(&map_value)) {
|
||||
auto key = GetCBORString(map_value);
|
||||
if (key == "h")
|
||||
r.h = GetCBORInt(map_value);
|
||||
else if (key == "k")
|
||||
r.k = GetCBORInt(map_value);
|
||||
else if (key == "l")
|
||||
r.l = GetCBORInt(map_value);
|
||||
else if (key == "center_x_pxl")
|
||||
r.predicted_x = GetCBORFloat(map_value);
|
||||
else if (key == "center_y_pxl")
|
||||
r.predicted_y = GetCBORFloat(map_value);
|
||||
else if (key == "d")
|
||||
r.d = GetCBORFloat(map_value);
|
||||
else if (key == "I")
|
||||
r.I = GetCBORFloat(map_value);
|
||||
else if (key == "bkg")
|
||||
r.bkg = GetCBORFloat(map_value);
|
||||
else if (key == "sigma")
|
||||
r.sigma = GetCBORFloat(map_value);
|
||||
else if (key == "image")
|
||||
r.image_number = GetCBORFloat(map_value);
|
||||
else
|
||||
cbor_value_advance(&map_value);
|
||||
}
|
||||
cborErr(cbor_value_leave_container(&value, &map_value));
|
||||
return r;
|
||||
}
|
||||
|
||||
void GetCBORReflections(DataMessage &message, CborValue &value) {
|
||||
size_t array_len = GetCBORArrayLen(value);
|
||||
CborValue array_value;
|
||||
cborErr(cbor_value_enter_container(&value, &array_value));
|
||||
for (int i = 0; i < array_len; i++)
|
||||
message.reflections.push_back(GetReflection(array_value));
|
||||
|
||||
cborErr(cbor_value_leave_container(&value, &array_value));
|
||||
}
|
||||
|
||||
CBORImageType DecodeType(CborValue &value) {
|
||||
if (cbor_value_at_end(&value))
|
||||
throw JFJochException(JFJochExceptionCategory::CBORError, "Message empty");
|
||||
@@ -528,6 +577,8 @@ namespace {
|
||||
}
|
||||
} else if (key == "spots")
|
||||
GetCBORSpots(message, value);
|
||||
else if (key == "reflections")
|
||||
GetCBORReflections(message, value);
|
||||
else if (key == "spot_count")
|
||||
message.spot_count = GetCBORUInt(value);
|
||||
else if (key == "spot_count_low_res")
|
||||
@@ -548,8 +599,8 @@ namespace {
|
||||
message.indexing_time_s = GetCBORFloat(value);
|
||||
else if (key == "processing_time")
|
||||
message.processing_time_s = GetCBORFloat(value);
|
||||
else if (key == "mosaicity")
|
||||
message.mosaicity = GetCBORFloat(value);
|
||||
else if (key == "profile_radius")
|
||||
message.profile_radius = GetCBORFloat(value);
|
||||
else if (key == "b_factor")
|
||||
message.b_factor = GetCBORFloat(value);
|
||||
else if (key == "indexing_unit_cell")
|
||||
@@ -590,10 +641,10 @@ namespace {
|
||||
message.bkg_estimate = GetCBORFloat(value);
|
||||
else if (key == "adu_histogram")
|
||||
GetCBORUInt64Array(value, message.adu_histogram);
|
||||
else if (key == "beam_center_x")
|
||||
message.beam_center_x = GetCBORFloat(value);
|
||||
else if (key == "beam_center_y")
|
||||
message.beam_center_y = GetCBORFloat(value);
|
||||
else if (key == "beam_corr_x")
|
||||
message.beam_corr_x = GetCBORFloat(value);
|
||||
else if (key == "beam_corr_y")
|
||||
message.beam_corr_y = GetCBORFloat(value);
|
||||
else if (key == "roi_integrals")
|
||||
ProcessROIElementMap(message, value);
|
||||
else {
|
||||
@@ -896,7 +947,7 @@ namespace {
|
||||
if (j["geom_refinement_algorithm"] == "beam_center")
|
||||
message.geom_refinement_algorithm = GeomRefinementAlgorithmEnum::BeamCenter;
|
||||
else if (j["geom_refinement_algorithm"] == "beam_center_tetragonal")
|
||||
message.geom_refinement_algorithm = GeomRefinementAlgorithmEnum::BeamCenterTetragonal;
|
||||
message.geom_refinement_algorithm = GeomRefinementAlgorithmEnum::BeamCenterSymmetry;
|
||||
else
|
||||
message.geom_refinement_algorithm = GeomRefinementAlgorithmEnum::None;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user