comparison OrthancStone/Sources/Scene2D/Internals/FixedPointAligner.cpp @ 1972:9c0adcc8feec

refactoring to simplify OneGesturePointerTracker
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 28 Oct 2022 16:21:28 +0200
parents 7053b8a0aaec
children b31e494e34c5
comparison
equal deleted inserted replaced
1971:e5b31d55206d 1972:9c0adcc8feec
18 * You should have received a copy of the GNU Lesser General Public 18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this program. If not, see 19 * License along with this program. If not, see
20 * <http://www.gnu.org/licenses/>. 20 * <http://www.gnu.org/licenses/>.
21 **/ 21 **/
22 22
23 #include "../../Scene2DViewport/ViewportController.h" 23
24 #include "FixedPointAligner.h" 24 #include "FixedPointAligner.h"
25
26 #include <OrthancException.h>
25 27
26 namespace OrthancStone 28 namespace OrthancStone
27 { 29 {
28 namespace Internals 30 namespace Internals
29 { 31 {
30 FixedPointAligner::FixedPointAligner(boost::weak_ptr<IViewport> viewport, 32 FixedPointAligner::FixedPointAligner(ViewportController& controller,
31 const ScenePoint2D& p) 33 const ScenePoint2D& p) :
32 : viewport_(viewport) 34 canvas_(p)
33 , canvas_(p)
34 { 35 {
35 std::unique_ptr<IViewport::ILock> lock(GetViewportLock()); 36 pivot_ = canvas_.Apply(controller.GetCanvasToSceneTransform());
36 pivot_ = canvas_.Apply(lock->GetController().GetCanvasToSceneTransform());
37 } 37 }
38 38
39 IViewport::ILock* FixedPointAligner::GetViewportLock() 39 void FixedPointAligner::Apply(ViewportController& controller)
40 { 40 {
41 boost::shared_ptr<IViewport> viewport = viewport_.lock(); 41 ScenePoint2D p = canvas_.Apply(controller.GetCanvasToSceneTransform());
42 if (viewport)
43 return viewport->Lock();
44 else
45 return NULL;
46 }
47
48 void FixedPointAligner::Apply()
49 {
50 std::unique_ptr<IViewport::ILock> lock(GetViewportLock());
51 ScenePoint2D p = canvas_.Apply(
52 lock->GetController().GetCanvasToSceneTransform());
53 42
54 lock->GetController().SetSceneToCanvasTransform( 43 controller.SetSceneToCanvasTransform(
55 AffineTransform2D::Combine( 44 AffineTransform2D::Combine(
56 lock->GetController().GetSceneToCanvasTransform(), 45 controller.GetSceneToCanvasTransform(),
57 AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(), 46 AffineTransform2D::CreateOffset(p.GetX() - pivot_.GetX(),
58 p.GetY() - pivot_.GetY()))); 47 p.GetY() - pivot_.GetY())));
59 lock->Invalidate();
60 } 48 }
61 } 49 }
62 } 50 }