Improve plotting
This commit is contained in:
@@ -222,17 +222,16 @@ inline org::openapitools::server::model::Detector_list Convert(const DetectorLis
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline org::openapitools::server::model::Plot Convert(const Plot& input) {
|
||||
org::openapitools::server::model::Plot output;
|
||||
output.setX(input.x);
|
||||
output.setY(input.y);
|
||||
return output;
|
||||
}
|
||||
inline org::openapitools::server::model::Plots Convert(const MultiLinePlot& input) {
|
||||
std::vector<org::openapitools::server::model::Plot> tmp(input.size());
|
||||
for (int i = 0; i < input.size(); i++) {
|
||||
tmp[i].setTitle(input[i].title);
|
||||
tmp[i].setX(input[i].x);
|
||||
tmp[i].setY(input[i].y);
|
||||
}
|
||||
|
||||
inline org::openapitools::server::model::Radial_integration_plots_inner Convert(const RadialIntegrationProfileStruct& input) {
|
||||
org::openapitools::server::model::Radial_integration_plots_inner output;
|
||||
output.setTitle(input.title);
|
||||
output.setPlot(Convert(input.plot));
|
||||
org::openapitools::server::model::Plots output;
|
||||
output.setPlot(tmp);
|
||||
return output;
|
||||
}
|
||||
|
||||
@@ -267,11 +266,58 @@ inline org::openapitools::server::model::Rad_int_settings Convert(const RadialIn
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline std::vector<ROIBox> Convert(const org::openapitools::server::model::Roi_box_list& input) {
|
||||
std::vector<ROIBox> ret;
|
||||
for (const auto &i: input.getRois())
|
||||
ret.emplace_back(ROIBox(i.getName(), i.getMinXPxl(), i.getMaxXPxl(), i.getMinYPxl(), i.getMaxYPxl()));
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline std::vector<ROICircle> Convert(const org::openapitools::server::model::Roi_circle_list& input) {
|
||||
std::vector<ROICircle> ret;
|
||||
for (const auto &i: input.getRois())
|
||||
ret.emplace_back(ROICircle(i.getName(), i.getCenterXPxl(), i.getCenterYPxl(), i.getRadiusPxl()));
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline org::openapitools::server::model::Roi_circle_list Convert(const std::vector<ROICircle> &input) {
|
||||
org::openapitools::server::model::Roi_circle_list ret{};
|
||||
std::vector<org::openapitools::server::model::Roi_circle> tmp;
|
||||
for (const auto &i: input) {
|
||||
org::openapitools::server::model::Roi_circle elem;
|
||||
elem.setName(i.GetName());
|
||||
elem.setCenterXPxl(i.GetX());
|
||||
elem.setCenterYPxl(i.GetY());
|
||||
elem.setRadiusPxl(i.GetRadius_pxl());
|
||||
tmp.emplace_back(elem);
|
||||
}
|
||||
ret.setRois(tmp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
inline org::openapitools::server::model::Roi_box_list Convert(const std::vector<ROIBox> &input) {
|
||||
org::openapitools::server::model::Roi_box_list ret{};
|
||||
std::vector<org::openapitools::server::model::Roi_box> tmp;
|
||||
for (const auto &i: input) {
|
||||
org::openapitools::server::model::Roi_box elem;
|
||||
elem.setName(i.GetName());
|
||||
elem.setMinXPxl(i.GetXMin());
|
||||
elem.setMaxXPxl(i.GetXMax());
|
||||
elem.setMinYPxl(i.GetYMin());
|
||||
elem.setMaxYPxl(i.GetYMax());
|
||||
tmp.emplace_back(elem);
|
||||
}
|
||||
ret.setRois(tmp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
inline PreviewJPEGSettings Convert(const org::openapitools::server::model::Preview_settings& input) {
|
||||
PreviewJPEGSettings ret{};
|
||||
ret.show_spots = input.isShowSpots();
|
||||
ret.jpeg_quality = input.getJpegQuality();
|
||||
ret.saturation_value = input.getSaturation();
|
||||
ret.show_roi = input.isShowRoi();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -280,6 +326,7 @@ inline org::openapitools::server::model::Preview_settings Convert(const PreviewJ
|
||||
ret.setJpegQuality(settings.jpeg_quality);
|
||||
ret.setSaturation(settings.saturation_value);
|
||||
ret.setShowSpots(settings.show_spots);
|
||||
ret.setShowRoi(settings.show_roi);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -358,14 +405,6 @@ inline DatasetSettings Convert(const org::openapitools::server::model::Dataset_s
|
||||
}
|
||||
}
|
||||
|
||||
if (input.roiSumAreaIsSet()) {
|
||||
ret.ROISummation(ROIRectangle{
|
||||
.x_min = static_cast<size_t>(input.getRoiSumArea().getXMin()),
|
||||
.x_max = static_cast<size_t>(input.getRoiSumArea().getXMax()),
|
||||
.y_min = static_cast<size_t>(input.getRoiSumArea().getYMin()),
|
||||
.y_max = static_cast<size_t>(input.getRoiSumArea().getYMax())
|
||||
});
|
||||
}
|
||||
ret.SpaceGroupNumber(input.getSpaceGroupNumber());
|
||||
ret.SampleName(input.getSampleName());
|
||||
ret.HeaderAppendix(input.getHeaderAppendix());
|
||||
@@ -493,15 +532,6 @@ void JFJochBrokerHttp::config_spot_finding_put(
|
||||
response.send(Pistache::Http::Code::Ok);
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::plot_saturated_pixel_post(const org::openapitools::server::model::Plot_request &plotRequest,
|
||||
Pistache::Http::ResponseWriter &response) {
|
||||
PlotRequest req{.type = PlotType::SaturatedPixels, .binning = 0};
|
||||
if (plotRequest.binningIsSet())
|
||||
req.binning = plotRequest.getBinning();
|
||||
auto plot = state_machine.GetPlots(req);
|
||||
ProcessOutput(Convert(plot), response);
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::plot_bkg_estimate_post(const org::openapitools::server::model::Plot_request &plotRequest,
|
||||
Pistache::Http::ResponseWriter &response) {
|
||||
PlotRequest req{.type = PlotType::BkgEstimate, .binning = 0};
|
||||
@@ -534,19 +564,9 @@ void JFJochBrokerHttp::plot_rad_int_get(Pistache::Http::ResponseWriter &response
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::plot_rad_int_per_file_get(Pistache::Http::ResponseWriter &response) {
|
||||
auto rad_int = state_machine.GetRadialIntegrationProfiles();
|
||||
nlohmann::json j;
|
||||
|
||||
for (const auto &i: rad_int.profiles) {
|
||||
auto output = Convert(i);
|
||||
std::stringstream s;
|
||||
assert(output.validate(s));
|
||||
|
||||
nlohmann::json j_elem;
|
||||
to_json(j_elem, output);
|
||||
j.push_back(j_elem);
|
||||
}
|
||||
response.send(Pistache::Http::Code::Ok, j.dump(), MIME(Application, Json));
|
||||
PlotRequest req{.type = PlotType::RadIntPerFile};
|
||||
auto plot = state_machine.GetPlots(req);
|
||||
ProcessOutput(Convert(plot), response);
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::plot_spot_count_post(const org::openapitools::server::model::Plot_request &plotRequest,
|
||||
@@ -735,4 +755,58 @@ void JFJochBrokerHttp::config_internal_generator_image_put(const Pistache::Rest:
|
||||
state_machine.LoadInternalGeneratorImage(request.body().data(), request.body().size(), image_number);
|
||||
logger.Info("Internal generator image #{} loaded", image_number);
|
||||
response.send(Pistache::Http::Code::Ok);
|
||||
}
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::roi_box_get(Pistache::Http::ResponseWriter &response) {
|
||||
ProcessOutput(Convert(state_machine.GetBoxROI()), response);
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::roi_box_put(const org::openapitools::server::model::Roi_box_list &roiBoxList,
|
||||
Pistache::Http::ResponseWriter &response) {
|
||||
state_machine.SetBoxROI(Convert(roiBoxList));
|
||||
response.send(Pistache::Http::Code::Ok);
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::roi_circle_get(Pistache::Http::ResponseWriter &response) {
|
||||
ProcessOutput(Convert(state_machine.GetCircleROI()), response);
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::roi_circle_put(const org::openapitools::server::model::Roi_circle_list &roiCircleList,
|
||||
Pistache::Http::ResponseWriter &response) {
|
||||
state_machine.SetCircleROI(Convert(roiCircleList));
|
||||
response.send(Pistache::Http::Code::Ok);
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::xfel_event_code_get(Pistache::Http::ResponseWriter &response) {
|
||||
auto array = state_machine.GetXFELEventCode();
|
||||
if (array.empty())
|
||||
response.send(Pistache::Http::Code::Not_Found);
|
||||
nlohmann::json j = array;
|
||||
response.send(Pistache::Http::Code::Ok, j.dump(), MIME(Application, Json));
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::xfel_pulse_id_get(Pistache::Http::ResponseWriter &response) {
|
||||
auto array = state_machine.GetXFELPulseID();
|
||||
if (array.empty())
|
||||
response.send(Pistache::Http::Code::Not_Found);
|
||||
nlohmann::json j = array;
|
||||
response.send(Pistache::Http::Code::Ok, j.dump(), MIME(Application, Json));
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::plot_roi_max_count_post(const org::openapitools::server::model::Plot_request &plotRequest,
|
||||
Pistache::Http::ResponseWriter &response) {
|
||||
PlotRequest req{.type = PlotType::ROIMaxCount, .binning = 0};
|
||||
if (plotRequest.binningIsSet())
|
||||
req.binning = plotRequest.getBinning();
|
||||
auto plot = state_machine.GetPlots(req);
|
||||
ProcessOutput(Convert(plot), response);
|
||||
}
|
||||
|
||||
void JFJochBrokerHttp::plot_roi_valid_pixels_post(const org::openapitools::server::model::Plot_request &plotRequest,
|
||||
Pistache::Http::ResponseWriter &response) {
|
||||
PlotRequest req{.type = PlotType::ROIPixels, .binning = 0};
|
||||
if (plotRequest.binningIsSet())
|
||||
req.binning = plotRequest.getBinning();
|
||||
auto plot = state_machine.GetPlots(req);
|
||||
ProcessOutput(Convert(plot), response);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user