Mercurial > hg > orthanc-stone
annotate Samples/Common/RtViewer.h @ 1383:ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Mon, 27 Apr 2020 10:01:03 +0200 |
parents | |
children | dfb48f0794b1 |
rev | line source |
---|---|
1383
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
1 /** |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
2 * Stone of Orthanc |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
6 * |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
7 * This program is free software: you can redistribute it and/or |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
8 * modify it under the terms of the GNU Affero General Public License |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
9 * as published by the Free Software Foundation, either version 3 of |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
10 * the License, or (at your option) any later version. |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
11 * |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
12 * This program is distributed in the hope that it will be useful, but |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
13 * WITHOUT ANY WARRANTY; without even the implied warranty of |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
15 * Affero General Public License for more details. |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
16 * |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
17 * You should have received a copy of the GNU Affero General Public License |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
19 **/ |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
20 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
21 #include <Framework/Viewport/SdlViewport.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
22 #include <Framework/Loaders/GenericLoadersContext.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
23 #include <Framework/Messages/IObserver.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
24 #include <Framework/Messages/IMessageEmitter.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
25 #include <Framework/Oracle/OracleCommandExceptionMessage.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
26 #include <Framework/Scene2DViewport/ViewportController.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
27 #include <Framework/Volumes/DicomVolumeImage.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
28 #include <Framework/Oracle/ThreadedOracle.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
29 #include <Framework/Loaders/OrthancSeriesVolumeProgressiveLoader.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
30 #include <Framework/Loaders/OrthancMultiframeVolumeLoader.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
31 #include <Framework/Loaders/DicomStructureSetLoader.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
32 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
33 #include <Framework/Messages/ObserverBase.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
34 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
35 #include <boost/enable_shared_from_this.hpp> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
36 #include <boost/thread.hpp> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
37 #include <boost/noncopyable.hpp> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
38 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
39 #include <SDL.h> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
40 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
41 namespace OrthancStone |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
42 { |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
43 class OpenGLCompositor; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
44 class IVolumeSlicer; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
45 class ILayerStyleConfigurator; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
46 class DicomStructureSetLoader; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
47 class IOracle; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
48 class ThreadedOracle; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
49 class VolumeSceneLayerSource; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
50 class SdlOpenGLViewport; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
51 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
52 enum RtViewerGuiTool |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
53 { |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
54 RtViewerGuiTool_Rotate = 0, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
55 RtViewerGuiTool_Pan, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
56 RtViewerGuiTool_Zoom, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
57 RtViewerGuiTool_LineMeasure, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
58 RtViewerGuiTool_CircleMeasure, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
59 RtViewerGuiTool_AngleMeasure, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
60 RtViewerGuiTool_EllipseMeasure, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
61 RtViewerGuiTool_LAST |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
62 }; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
63 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
64 const char* MeasureToolToString(size_t i); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
65 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
66 static const unsigned int FONT_SIZE_0 = 32; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
67 static const unsigned int FONT_SIZE_1 = 24; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
68 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
69 class Scene2D; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
70 class UndoStack; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
71 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
72 /** |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
73 This application subclasses IMessageEmitter to use a mutex before forwarding Oracle messages (that |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
74 can be sent from multiple threads) |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
75 */ |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
76 class RtViewerApp : public ObserverBase<RtViewerApp> |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
77 , public IMessageEmitter |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
78 { |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
79 public: |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
80 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
81 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
82 void PrepareScene(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
83 void Run(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
84 void SetInfoDisplayMessage(std::string key, std::string value); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
85 void DisableTracker(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
86 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
87 void HandleApplicationEvent(const SDL_Event& event); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
88 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
89 /** |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
90 This method is called when the scene transform changes. It allows to |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
91 recompute the visual elements whose content depend upon the scene transform |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
92 */ |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
93 void OnSceneTransformChanged( |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
94 const ViewportController::SceneTransformChanged& message); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
95 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
96 /** |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
97 This method will ask the VolumeSceneLayerSource, that are responsible to |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
98 generated 2D content based on a volume and a cutting plane, to regenerate |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
99 it. This is required if the volume itself changes (during loading) or if |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
100 the cutting plane is changed |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
101 */ |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
102 void UpdateLayers(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
103 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
104 void Refresh(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
105 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
106 virtual void EmitMessage(boost::weak_ptr<IObserver> observer, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
107 const IMessage& message) ORTHANC_OVERRIDE |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
108 { |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
109 try |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
110 { |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
111 boost::unique_lock<boost::shared_mutex> lock(mutex_); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
112 oracleObservable_.EmitMessage(observer, message); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
113 } |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
114 catch (Orthanc::OrthancException& e) |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
115 { |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
116 LOG(ERROR) << "Exception while emitting a message: " << e.What(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
117 throw; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
118 } |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
119 } |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
120 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
121 static boost::shared_ptr<RtViewerApp> Create(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
122 void RegisterMessages(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
123 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
124 protected: |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
125 RtViewerApp(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
126 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
127 private: |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
128 #if 1 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
129 // if threaded (not wasm) |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
130 IObservable oracleObservable_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
131 ThreadedOracle oracle_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
132 boost::shared_mutex mutex_; // to serialize messages from the ThreadedOracle |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
133 #endif |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
134 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
135 void SelectNextTool(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
136 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
137 /** |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
138 This returns a random point in the canvas part of the scene, but in |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
139 scene coordinates |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
140 */ |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
141 ScenePoint2D GetRandomPointInScene() const; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
142 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
143 boost::shared_ptr<IFlexiblePointerTracker> TrackerHitTest(const PointerEvent& e); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
144 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
145 boost::shared_ptr<IFlexiblePointerTracker> CreateSuitableTracker( |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
146 const SDL_Event& event, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
147 const PointerEvent& e); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
148 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
149 void TakeScreenshot( |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
150 const std::string& target, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
151 unsigned int canvasWidth, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
152 unsigned int canvasHeight); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
153 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
154 /** |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
155 This adds the command at the top of the undo stack |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
156 */ |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
157 //void Commit(boost::shared_ptr<TrackerCommand> cmd); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
158 void Undo(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
159 void Redo(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
160 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
161 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
162 void Handle(const DicomVolumeImage::GeometryReadyMessage& message); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
163 void Handle(const OracleCommandExceptionMessage& message); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
164 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
165 // TODO: wire this |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
166 void HandleCTLoaded(const OrthancSeriesVolumeProgressiveLoader::VolumeImageReadyInHighQuality& message); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
167 void HandleCTContentUpdated(const OrthancStone::DicomVolumeImage::ContentUpdatedMessage& message); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
168 void HandleDoseLoaded(const OrthancStone::DicomVolumeImage::ContentUpdatedMessage& message); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
169 void HandleStructuresReady(const OrthancStone::DicomStructureSetLoader::StructuresReady& message); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
170 void HandleStructuresUpdated(const OrthancStone::DicomStructureSetLoader::StructuresUpdated& message); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
171 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
172 void SetCtVolume( |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
173 int depth, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
174 const boost::shared_ptr<IVolumeSlicer>& volume, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
175 ILayerStyleConfigurator* style); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
176 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
177 void SetDoseVolume( |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
178 int depth, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
179 const boost::shared_ptr<IVolumeSlicer>& volume, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
180 ILayerStyleConfigurator* style); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
181 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
182 void SetStructureSet( |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
183 int depth, |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
184 const boost::shared_ptr<DicomStructureSetLoader>& volume); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
185 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
186 private: |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
187 void DisplayFloatingCtrlInfoText(const PointerEvent& e); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
188 void DisplayInfoText(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
189 void HideInfoText(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
190 void RetrieveGeometry(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
191 void FitContent(); |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
192 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
193 private: |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
194 boost::shared_ptr<GenericLoadersContext> loadersContext_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
195 boost::shared_ptr<VolumeSceneLayerSource> ctVolumeLayerSource_, doseVolumeLayerSource_, structLayerSource_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
196 boost::shared_ptr<OrthancStone::IGeometryProvider> geometryProvider_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
197 std::vector<OrthancStone::CoordinateSystem3D> planes_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
198 size_t currentPlane_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
199 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
200 VolumeProjection projection_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
201 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
202 std::map<std::string, std::string> infoTextMap_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
203 boost::shared_ptr<IFlexiblePointerTracker> activeTracker_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
204 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
205 static const int LAYER_POSITION = 150; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
206 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
207 int TEXTURE_2x2_1_ZINDEX; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
208 int TEXTURE_1x1_ZINDEX; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
209 int TEXTURE_2x2_2_ZINDEX; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
210 int LINESET_1_ZINDEX; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
211 int LINESET_2_ZINDEX; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
212 int FLOATING_INFOTEXT_LAYER_ZINDEX; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
213 int FIXED_INFOTEXT_LAYER_ZINDEX; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
214 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
215 RtViewerGuiTool currentTool_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
216 boost::shared_ptr<UndoStack> undoStack_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
217 boost::shared_ptr<SdlOpenGLViewport> viewport_; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
218 }; |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
219 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
220 } |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
221 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
222 |
ab871499ed30
SingleFrameViewer: refactored file locations + names to share files for RtViewer
Benjamin Golinvaux <bgo@osimis.io>
parents:
diff
changeset
|
223 |