# HG changeset patch # User Alain Mazy # Date 1558688706 -7200 # Node ID cfb4d39065a43d33a662e4eca1407f5c6eff7f90 # Parent fe938bddb9322dae0ab09123d5ba6b90f63e0a91 fix windowing + save windowing diff -r fe938bddb932 -r cfb4d39065a4 Framework/Radiography/RadiographySceneReader.cpp --- a/Framework/Radiography/RadiographySceneReader.cpp Tue May 21 13:53:11 2019 +0200 +++ b/Framework/Radiography/RadiographySceneReader.cpp Fri May 24 11:05:06 2019 +0200 @@ -60,6 +60,11 @@ if (version != 1) throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); + if (input.isMember("hasWindowing") && input["hasWindowing"].asBool()) + { + scene_.SetWindowing(input["windowCenter"].asFloat(), input["windowWidth"].asFloat()); + } + RadiographyDicomLayer* dicomLayer = NULL; for(size_t layerIndex = 0; layerIndex < input["layers"].size(); layerIndex++) { @@ -143,6 +148,11 @@ if (version != 1) throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); + if (input.isMember("hasWindowing") && input["hasWindowing"].asBool()) + { + scene_.SetWindowing(input["windowCenter"].asFloat(), input["windowWidth"].asFloat()); + } + RadiographyDicomLayer* dicomLayer = NULL; for(size_t layerIndex = 0; layerIndex < input["layers"].size(); layerIndex++) { diff -r fe938bddb932 -r cfb4d39065a4 Framework/Radiography/RadiographySceneWriter.cpp --- a/Framework/Radiography/RadiographySceneWriter.cpp Tue May 21 13:53:11 2019 +0200 +++ b/Framework/Radiography/RadiographySceneWriter.cpp Fri May 24 11:05:06 2019 +0200 @@ -30,6 +30,14 @@ void RadiographySceneWriter::Write(Json::Value& output, const RadiographyScene& scene) { output["version"] = 1; + float windowCenter, windowWidth; + bool hasWindowing = scene.GetWindowing(windowCenter, windowWidth); + output["hasWindowing"] = hasWindowing; + if (hasWindowing) + { + output["windowCenter"] = windowCenter; + output["windowWidth"] = windowWidth; + } output["layers"] = Json::arrayValue; std::vector layersIndexes; diff -r fe938bddb932 -r cfb4d39065a4 Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp --- a/Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp Tue May 21 13:53:11 2019 +0200 +++ b/Framework/Scene2D/Internals/CairoFloatTextureRenderer.cpp Fri May 24 11:05:06 2019 +0200 @@ -37,8 +37,8 @@ float windowCenter, windowWidth; l.GetWindowing(windowCenter, windowWidth); - const float a = windowCenter - windowWidth; - const float slope = 256.0f / (2.0f * windowWidth); + const float a = windowCenter - windowWidth / 2.0f; + const float slope = 256.0f / windowWidth; const Orthanc::ImageAccessor& source = l.GetTexture(); const unsigned int width = source.GetWidth();