comparison Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 2030:f36de3ba43c8

added button "Stretch to whole range" in the "Change windowing" menu
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 23 Dec 2022 17:30:12 +0100
parents 6099c7925202
children a56f7ed0cdf9 07964689cb0b
comparison
equal deleted inserted replaced
2028:0d8a07e98cb8 2030:f36de3ba43c8
3092 { 3092 {
3093 observer_->SignalWindowingUpdated(*this, windowingCenter, windowingWidth); 3093 observer_->SignalWindowingUpdated(*this, windowingCenter, windowingWidth);
3094 } 3094 }
3095 } 3095 }
3096 3096
3097 void StretchWindowing()
3098 {
3099 float minValue, maxValue;
3100
3101 {
3102 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
3103
3104 if (!lock->GetController().GetScene().HasLayer(LAYER_TEXTURE) ||
3105 lock->GetController().GetScene().GetLayer(LAYER_TEXTURE).GetType() !=
3106 OrthancStone::ISceneLayer::Type_FloatTexture)
3107 {
3108 return;
3109 }
3110
3111 const Orthanc::ImageAccessor& texture =
3112 dynamic_cast<OrthancStone::FloatTextureSceneLayer&>(
3113 lock->GetController().GetScene().GetLayer(LAYER_TEXTURE)).GetTexture();
3114 if (texture.GetFormat() != Orthanc::PixelFormat_Float32)
3115 {
3116 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError);
3117 }
3118
3119 Orthanc::ImageProcessing::GetMinMaxFloatValue(minValue, maxValue, texture);
3120 }
3121
3122 SetWindowing((minValue + maxValue) / 2.0f, maxValue - minValue);
3123 }
3124
3097 void FlipX() 3125 void FlipX()
3098 { 3126 {
3099 { 3127 {
3100 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock()); 3128 std::unique_ptr<OrthancStone::IViewport::ILock> lock(viewport_->Lock());
3101 lock->GetController().GetScene().FlipViewportX( 3129 lock->GetController().GetScene().FlipViewportX(
4269 EXTERN_CATCH_EXCEPTIONS; 4297 EXTERN_CATCH_EXCEPTIONS;
4270 } 4298 }
4271 4299
4272 4300
4273 EMSCRIPTEN_KEEPALIVE 4301 EMSCRIPTEN_KEEPALIVE
4302 void StretchWindowing(const char* canvas)
4303 {
4304 try
4305 {
4306 GetViewport(canvas)->StretchWindowing();
4307 }
4308 EXTERN_CATCH_EXCEPTIONS;
4309 }
4310
4311
4312 EMSCRIPTEN_KEEPALIVE
4274 void InvertContrast(const char* canvas) 4313 void InvertContrast(const char* canvas)
4275 { 4314 {
4276 try 4315 try
4277 { 4316 {
4278 GetViewport(canvas)->Invert(); 4317 GetViewport(canvas)->Invert();