Mercurial > hg > orthanc-stone
annotate Framework/Scene2D/Internals/FixedPointAligner.cpp @ 1313:f30905f5d246 broker
Added support for OnGenericSdlEvent to GuiAdapter.
This makes it possible to piggyback app-specific logic
to special events (here, to support the Viewport refresh
events)
author | Benjamin Golinvaux <bgo@osimis.io> |
---|---|
date | Mon, 16 Mar 2020 11:12:39 +0100 |
parents | a5326ce4f24b |
children | ab81ee8fce1f |
rev | line source |
---|---|
596 | 1 /** |
2 * Stone of Orthanc | |
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | |
4 * Department, University Hospital of Liege, Belgium | |
1270
2d8ab34c8c91
upgrade to year 2020
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
818
diff
changeset
|
5 * Copyright (C) 2017-2020 Osimis S.A., Belgium |
596 | 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 | |
736
c0fcb2757b0a
enforce relative includes
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
700
diff
changeset
|
21 #include "../../Scene2DViewport/ViewportController.h" |
596 | 22 #include "FixedPointAligner.h" |
23 | |
24 namespace OrthancStone | |
25 { | |
26 namespace Internals | |
27 { | |
1305
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
28 FixedPointAligner::FixedPointAligner(IViewport& viewport, |
700
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
617
diff
changeset
|
29 const ScenePoint2D& p) |
1305
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
30 : viewport_(viewport) |
700
059e1fd05fd6
Introduced the ViewportController that sits between the application and the
Benjamin Golinvaux <bgo@osimis.io>
parents:
617
diff
changeset
|
31 , canvas_(p) |
596 | 32 { |
1305
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
33 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); |
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
34 pivot_ = canvas_.Apply(lock->GetController().GetCanvasToSceneTransform()); |
596 | 35 } |
36 | |
37 | |
38 void FixedPointAligner::Apply() | |
39 { | |
1305
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
40 std::unique_ptr<IViewport::ILock> lock(viewport_.Lock()); |
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
41 ScenePoint2D p = canvas_.Apply( |
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
42 lock->GetController().GetCanvasToSceneTransform()); |
596 | 43 |
1305
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
44 lock->GetController().SetSceneToCanvasTransform( |
596 | 45 AffineTransform2D::Combine( |
1305
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
46 lock->GetController().GetSceneToCanvasTransform(), |
596 | 47 AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(), |
48 p.GetY() - pivot_.GetY()))); | |
1305
a5326ce4f24b
Trackers and measuring tools now use the viewport instead of ViewportController, so that proper locks can be used
Benjamin Golinvaux <bgo@osimis.io>
parents:
1270
diff
changeset
|
49 lock->Invalidate(); |
596 | 50 } |
51 } | |
52 } |