Mercurial > hg > orthanc-stone
diff Framework/Radiography/RadiographySceneReader.cpp @ 481:159a465e27bd am-touch-events
reworked RadiographyScene export to export to an Orthanc::Image too
author | am@osimis.io |
---|---|
date | Thu, 14 Feb 2019 16:23:59 +0100 |
parents | 8f7220433b59 |
children | aede9b042cb7 |
line wrap: on
line diff
--- a/Framework/Radiography/RadiographySceneReader.cpp Thu Feb 14 10:18:02 2019 +0100 +++ b/Framework/Radiography/RadiographySceneReader.cpp Thu Feb 14 16:23:59 2019 +0100 @@ -35,6 +35,7 @@ if (version != 1) throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); + RadiographyDicomLayer* dicomLayer = NULL; for(size_t layerIndex = 0; layerIndex < input["layers"].size(); layerIndex++) { const Json::Value& jsonLayer = input["layers"][(int)layerIndex]; @@ -43,7 +44,26 @@ if (jsonLayer["type"].asString() == "dicom") { ReadLayerGeometry(geometry, jsonLayer); - scene_.LoadDicomFrame(orthancApiClient_, jsonLayer["instanceId"].asString(), jsonLayer["frame"].asUInt(), false, &geometry); + dicomLayer = dynamic_cast<RadiographyDicomLayer*>(&(scene_.LoadDicomFrame(orthancApiClient_, jsonLayer["instanceId"].asString(), jsonLayer["frame"].asUInt(), false, &geometry))); + } + else if (jsonLayer["type"].asString() == "mask") + { + if (dicomLayer == NULL) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); // we always assumed the dicom layer was read before the mask + } + ReadLayerGeometry(geometry, jsonLayer); + + float foreground = jsonLayer["foreground"].asFloat(); + std::vector<MaskPoint> corners; + for (size_t i = 0; i < jsonLayer["corners"].size(); i++) + { + MaskPoint corner(jsonLayer["corners"][(int)i]["x"].asUInt(), + jsonLayer["corners"][(int)i]["y"].asUInt()); + corners.push_back(corner); + } + + scene_.LoadMask(corners, *dicomLayer, foreground, &geometry); } else if (jsonLayer["type"].asString() == "text") {