comparison Applications/Samples/CtPetDoseStructFusion/MainWidgetInteractor.cpp @ 540:7428c5dfa5df ct-pet-dose-struct

Initial commit non working app
author Benjamin Golinvaux <bgo@osimis.io>
date Tue, 19 Mar 2019 16:29:07 +0100
parents
children
comparison
equal deleted inserted replaced
538:9d124a81c34a 540:7428c5dfa5df
1 /**
2 * Stone of Orthanc
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics
4 * Department, University Hospital of Liege, Belgium
5 * Copyright (C) 2017-2019 Osimis S.A., Belgium
6 *
7 * This program is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU Affero General Public License
9 * as published by the Free Software Foundation, either version 3 of
10 * the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Affero General Public License for more details.
16 *
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/
20
21 #include "MainWidgetInteractor.h"
22
23 #include "CtPetDoseStructFusionApplication.h"
24
25 namespace CtPetDoseStructFusion {
26
27 IWorldSceneMouseTracker* MainWidgetInteractor::CreateMouseTracker(WorldSceneWidget& widget,
28 const ViewportGeometry& view,
29 MouseButton button,
30 KeyboardModifiers modifiers,
31 int viewportX,
32 int viewportY,
33 double x,
34 double y,
35 IStatusBar* statusBar,
36 const std::vector<Touch>& displayTouches)
37 {
38 if (button == MouseButton_Left)
39 {
40 if (application_.GetCurrentTool() == Tool_LineMeasure)
41 {
42 return new LineMeasureTracker(statusBar, dynamic_cast<SliceViewerWidget&>(widget).GetSlice(),
43 x, y, 255, 0, 0, application_.GetFont());
44 }
45 else if (application_.GetCurrentTool() == Tool_CircleMeasure)
46 {
47 return new CircleMeasureTracker(statusBar, dynamic_cast<SliceViewerWidget&>(widget).GetSlice(),
48 x, y, 255, 0, 0, application_.GetFont());
49 }
50 else if (application_.GetCurrentTool() == Tool_Crop)
51 {
52 // TODO
53 }
54 else if (application_.GetCurrentTool() == Tool_Windowing)
55 {
56 // TODO
57 }
58 else if (application_.GetCurrentTool() == Tool_Zoom)
59 {
60 // TODO
61 }
62 else if (application_.GetCurrentTool() == Tool_Pan)
63 {
64 // TODO
65 }
66 }
67 return NULL;
68 }
69
70 void MainWidgetInteractor::MouseOver(CairoContext& context,
71 WorldSceneWidget& widget,
72 const ViewportGeometry& view,
73 double x,
74 double y,
75 IStatusBar* statusBar)
76 {
77 if (statusBar != NULL)
78 {
79 Vector p = dynamic_cast<SliceViewerWidget&>(widget).GetSlice().MapSliceToWorldCoordinates(x, y);
80
81 char buf[64];
82 sprintf(buf, "X = %.02f Y = %.02f Z = %.02f (in cm)",
83 p[0] / 10.0, p[1] / 10.0, p[2] / 10.0);
84 statusBar->SetMessage(buf);
85 }
86 }
87
88 void MainWidgetInteractor::MouseWheel(WorldSceneWidget& widget,
89 MouseWheelDirection direction,
90 KeyboardModifiers modifiers,
91 IStatusBar* statusBar)
92 {
93 }
94
95 void MainWidgetInteractor::KeyPressed(WorldSceneWidget& widget,
96 KeyboardKeys key,
97 char keyChar,
98 KeyboardModifiers modifiers,
99 IStatusBar* statusBar)
100 {
101 switch (keyChar)
102 {
103 case 's':
104 widget.FitContent();
105 break;
106
107 default:
108 break;
109 }
110 }
111 }