Mercurial > hg > orthanc-stone
diff Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 2031:a56f7ed0cdf9 deep-learning
integration mainline->deep-learning
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 23 Dec 2022 17:51:07 +0100 |
parents | 04148de691a7 f36de3ba43c8 |
children | 85ab86f10d01 |
line wrap: on
line diff
--- a/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Fri Dec 23 16:58:13 2022 +0100 +++ b/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp Fri Dec 23 17:51:07 2022 +0100 @@ -3127,6 +3127,34 @@ } } + void StretchWindowing() + { + float minValue, maxValue; + + { + std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock()); + + if (!lock->GetController().GetScene().HasLayer(LAYER_TEXTURE) || + lock->GetController().GetScene().GetLayer(LAYER_TEXTURE).GetType() != + OrthancStone::ISceneLayer::Type_FloatTexture) + { + return; + } + + const Orthanc::ImageAccessor& texture = + dynamic_cast<OrthancStone::FloatTextureSceneLayer&>( + lock->GetController().GetScene().GetLayer(LAYER_TEXTURE)).GetTexture(); + if (texture.GetFormat() != Orthanc::PixelFormat_Float32) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError); + } + + Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, texture); + } + + SetWindowing((minValue + maxValue) / 2.0f, maxValue - minValue); + } + void FlipX() { { @@ -4599,6 +4627,17 @@ EMSCRIPTEN_KEEPALIVE + void StretchWindowing(const char* canvas) + { + try + { + GetViewport(canvas)->StretchWindowing(); + } + EXTERN_CATCH_EXCEPTIONS; + } + + + EMSCRIPTEN_KEEPALIVE void InvertContrast(const char* canvas) { try