comparison Framework/Radiography/RadiographyWindowingTracker.h @ 415:c0589c3173fd

finished reorganization
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 13 Nov 2018 10:36:53 +0100
parents
children b70e9be013e4
comparison
equal deleted inserted replaced
414:f7616c010056 415:c0589c3173fd
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-2018 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
22 #pragma once
23
24 #include "../Toolbox/UndoRedoStack.h"
25 #include "../Widgets/IWorldSceneMouseTracker.h"
26 #include "RadiographyScene.h"
27
28 namespace OrthancStone
29 {
30 class RadiographyWindowingTracker : public IWorldSceneMouseTracker
31 {
32 public:
33 enum Action
34 {
35 Action_IncreaseWidth,
36 Action_DecreaseWidth,
37 Action_IncreaseCenter,
38 Action_DecreaseCenter
39 };
40
41 private:
42 class UndoRedoCommand;
43
44 UndoRedoStack& undoRedoStack_;
45 RadiographyScene& scene_;
46 int clickX_;
47 int clickY_;
48 Action leftAction_;
49 Action rightAction_;
50 Action upAction_;
51 Action downAction_;
52 float strength_;
53 float sourceCenter_;
54 float sourceWidth_;
55
56 static void ComputeAxisEffect(int& deltaCenter,
57 int& deltaWidth,
58 int delta,
59 Action actionNegative,
60 Action actionPositive);
61
62 public:
63 RadiographyWindowingTracker(UndoRedoStack& undoRedoStack,
64 RadiographyScene& scene,
65 int x,
66 int y,
67 Action leftAction,
68 Action rightAction,
69 Action upAction,
70 Action downAction);
71
72 virtual bool HasRender() const
73 {
74 return false;
75 }
76
77 virtual void Render(CairoContext& context,
78 double zoom);
79
80 virtual void MouseUp();
81
82 virtual void MouseMove(int displayX,
83 int displayY,
84 double sceneX,
85 double sceneY);
86 };
87 }