comparison Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp @ 1694:7226b68e2742

print button
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 26 Nov 2020 13:57:15 +0100
parents eafb10992e73
children a691ab50d416
comparison
equal deleted inserted replaced
1693:eafb10992e73 1694:7226b68e2742
1033 size_t countFrames, 1033 size_t countFrames,
1034 DisplayedFrameQuality quality) = 0; 1034 DisplayedFrameQuality quality) = 0;
1035 1035
1036 virtual void SignalCrosshair(const ViewerViewport& viewport, 1036 virtual void SignalCrosshair(const ViewerViewport& viewport,
1037 const OrthancStone::Vector& click) = 0; 1037 const OrthancStone::Vector& click) = 0;
1038
1039 virtual void SignalSynchronizedBrowsing(const ViewerViewport& viewport,
1040 const OrthancStone::Vector& click,
1041 const OrthancStone::Vector& normal) = 0;
1038 }; 1042 };
1039 1043
1040 private: 1044 private:
1041 static const int LAYER_TEXTURE = 0; 1045 static const int LAYER_TEXTURE = 0;
1042 static const int LAYER_REFERENCE_LINES = 1; 1046 static const int LAYER_REFERENCE_LINES = 1;
1858 const OrthancStone::CoordinateSystem3D previous = 1862 const OrthancStone::CoordinateSystem3D previous =
1859 that.frames_->GetFrameGeometry(previousCursorIndex); 1863 that.frames_->GetFrameGeometry(previousCursorIndex);
1860 that.synchronizationOffset_ += previous.GetOrigin() - current.GetOrigin(); 1864 that.synchronizationOffset_ += previous.GetOrigin() - current.GetOrigin();
1861 } 1865 }
1862 1866
1863 that.observer_->SignalCrosshair(that, current.GetOrigin() + that.synchronizationOffset_); 1867 that.observer_->SignalSynchronizedBrowsing(
1868 that, current.GetOrigin() + that.synchronizationOffset_, current.GetNormal());
1864 } 1869 }
1865 } 1870 }
1866 1871
1867 return true; 1872 return true;
1868 } 1873 }
2533 virtual void SignalCrosshair(const ViewerViewport& viewport, 2538 virtual void SignalCrosshair(const ViewerViewport& viewport,
2534 const OrthancStone::Vector& click) ORTHANC_OVERRIDE 2539 const OrthancStone::Vector& click) ORTHANC_OVERRIDE
2535 { 2540 {
2536 for (Viewports::const_iterator it = allViewports_.begin(); it != allViewports_.end(); ++it) 2541 for (Viewports::const_iterator it = allViewports_.begin(); it != allViewports_.end(); ++it)
2537 { 2542 {
2543 // TODO - One could check the "Frame Of Reference UID" here
2538 assert(it->second.get() != NULL); 2544 assert(it->second.get() != NULL);
2539 if (it->second.get() != &viewport) 2545 if (it->second.get() != &viewport)
2546 {
2547 it->second->FocusOnPoint(click);
2548 }
2549 }
2550 }
2551
2552 virtual void SignalSynchronizedBrowsing(const ViewerViewport& viewport,
2553 const OrthancStone::Vector& click,
2554 const OrthancStone::Vector& normal) ORTHANC_OVERRIDE
2555 {
2556 for (Viewports::const_iterator it = allViewports_.begin(); it != allViewports_.end(); ++it)
2557 {
2558 assert(it->second.get() != NULL);
2559
2560 OrthancStone::CoordinateSystem3D plane;
2561 bool isOpposite;
2562
2563 if (it->second.get() != &viewport &&
2564 it->second->GetCurrentPlane(plane) &&
2565 OrthancStone::GeometryToolbox::IsParallelOrOpposite(isOpposite, plane.GetNormal(), normal))
2540 { 2566 {
2541 it->second->FocusOnPoint(click); 2567 it->second->FocusOnPoint(click);
2542 } 2568 }
2543 } 2569 }
2544 } 2570 }