xref: /haiku/src/apps/icon-o-matic/transformable/CanvasTransformBox.cpp (revision 7f5bbbdc56fa18cfc94ea649e9f1337301906e19)
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ßmus CanvasTransformBox::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ßmus CanvasTransformBox::~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ßmus CanvasTransformBox::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ßmus CanvasTransformBox::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ßmus CanvasTransformBox::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ßmus CanvasTransformBox::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