comparison Framework/Scene2DViewport/MeasureTools.h @ 698:8b6adfb62a2f refactor-viewport-controller

Code is broken -- stashing ongoing work in a branch
author Benjamin Golinvaux <bgo@osimis.io>
date Wed, 15 May 2019 16:56:17 +0200
parents
children 059e1fd05fd6
comparison
equal deleted inserted replaced
660:cb3b76d16234 698:8b6adfb62a2f
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 #pragma once
22
23 #include <Framework/Scene2DViewport/PointerTypes.h>
24
25 #include <Framework/Scene2D/Scene2D.h>
26 #include <Framework/Scene2D/ScenePoint2D.h>
27 #include <Framework/Scene2D/PolylineSceneLayer.h>
28 #include <Framework/Scene2D/TextSceneLayer.h>
29
30 #include <boost/shared_ptr.hpp>
31 #include <boost/weak_ptr.hpp>
32
33 #include <vector>
34 #include <cmath>
35
36 namespace OrthancStone
37 {
38 class MeasureTool : public IObserver
39 {
40 public:
41 virtual ~MeasureTool();
42
43 /**
44 Enabled tools are rendered in the scene.
45 */
46 void Enable();
47
48 /**
49 Disabled tools are not rendered in the scene. This is useful to be able
50 to use them as their own memento in command stacks (when a measure tool
51 creation command has been undone, the measure remains alive in the
52 command object but is disabled so that it can be redone later on easily)
53 */
54 void Disable();
55
56 /**
57 This method is called when the scene transform changes. It allows to
58 recompute the visual elements whose content depend upon the scene transform
59 */
60 void OnSceneTransformChanged(const Scene2D::SceneTransformChanged& message);
61
62 protected:
63 MeasureTool(MessageBroker& broker, Scene2DWPtr sceneW);
64
65 /**
66 This is the meat of the tool: this method must [create (if needed) and]
67 update the layers and their data according to the measure tool kind and
68 current state. This is repeatedly called during user interaction
69 */
70 virtual void RefreshScene() = 0;
71
72 Scene2DPtr GetScene();
73
74 /**
75 enabled_ is not accessible by subclasses because there is a state machine
76 that we do not wanna mess with
77 */
78 bool IsEnabled() const;
79
80 private:
81 Scene2DWPtr scene_;
82 bool enabled_;
83 };
84 }
85
86
87 extern void TrackerSample_SetInfoDisplayMessage(
88 std::string key, std::string value);