Mercurial > hg > orthanc-stone
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 } |