10e1ba39fSStephan Aßmus /* 2*7f5bbbdcSAxel Dörfler * Copyright 2006-2009, Haiku. 30e1ba39fSStephan Aßmus * Distributed under the terms of the MIT License. 40e1ba39fSStephan Aßmus * 50e1ba39fSStephan Aßmus * Authors: 60e1ba39fSStephan Aßmus * Stephan Aßmus <superstippi@gmx.de> 70e1ba39fSStephan Aßmus */ 80e1ba39fSStephan Aßmus 90e1ba39fSStephan Aßmus #include "CanvasTransformBox.h" 100e1ba39fSStephan Aßmus 110e1ba39fSStephan Aßmus #include "CanvasView.h" 120e1ba39fSStephan Aßmus 13*7f5bbbdcSAxel Dörfler 140e1ba39fSStephan Aßmus // constructor CanvasTransformBox(CanvasView * view)150e1ba39fSStephan AßmusCanvasTransformBox::CanvasTransformBox(CanvasView* view) 16*7f5bbbdcSAxel Dörfler : 17*7f5bbbdcSAxel Dörfler TransformBox(view, BRect(0.0, 0.0, 1.0, 1.0)), 180e1ba39fSStephan Aßmus 190e1ba39fSStephan Aßmus fCanvasView(view), 200e1ba39fSStephan Aßmus fParentTransform() 210e1ba39fSStephan Aßmus { 220e1ba39fSStephan Aßmus } 230e1ba39fSStephan Aßmus 24*7f5bbbdcSAxel Dörfler 250e1ba39fSStephan Aßmus // destructor ~CanvasTransformBox()260e1ba39fSStephan AßmusCanvasTransformBox::~CanvasTransformBox() 270e1ba39fSStephan Aßmus { 280e1ba39fSStephan Aßmus } 290e1ba39fSStephan Aßmus 30*7f5bbbdcSAxel Dörfler 310e1ba39fSStephan Aßmus // TransformFromCanvas 320e1ba39fSStephan Aßmus void TransformFromCanvas(BPoint & point) const330e1ba39fSStephan AßmusCanvasTransformBox::TransformFromCanvas(BPoint& point) const 340e1ba39fSStephan Aßmus { 350e1ba39fSStephan Aßmus fParentTransform.InverseTransform(&point); 360e1ba39fSStephan Aßmus fCanvasView->ConvertFromCanvas(&point); 370e1ba39fSStephan Aßmus } 380e1ba39fSStephan Aßmus 39*7f5bbbdcSAxel Dörfler 400e1ba39fSStephan Aßmus // TransformToCanvas 410e1ba39fSStephan Aßmus void TransformToCanvas(BPoint & point) const420e1ba39fSStephan AßmusCanvasTransformBox::TransformToCanvas(BPoint& point) const 430e1ba39fSStephan Aßmus { 440e1ba39fSStephan Aßmus fCanvasView->ConvertToCanvas(&point); 450e1ba39fSStephan Aßmus fParentTransform.Transform(&point); 460e1ba39fSStephan Aßmus } 470e1ba39fSStephan Aßmus 48*7f5bbbdcSAxel Dörfler 490e1ba39fSStephan Aßmus // ZoomLevel 500e1ba39fSStephan Aßmus float ZoomLevel() const510e1ba39fSStephan AßmusCanvasTransformBox::ZoomLevel() const 520e1ba39fSStephan Aßmus { 530e1ba39fSStephan Aßmus return fCanvasView->ZoomLevel(); 540e1ba39fSStephan Aßmus } 550e1ba39fSStephan Aßmus 56*7f5bbbdcSAxel Dörfler 570e1ba39fSStephan Aßmus // ViewSpaceRotation 580e1ba39fSStephan Aßmus double ViewSpaceRotation() const590e1ba39fSStephan AßmusCanvasTransformBox::ViewSpaceRotation() const 600e1ba39fSStephan Aßmus { 610e1ba39fSStephan Aßmus Transformable t(*this); 620e1ba39fSStephan Aßmus t.Multiply(fParentTransform); 63*7f5bbbdcSAxel Dörfler return t.rotation() * 180.0 / M_PI; 640e1ba39fSStephan Aßmus } 65