* Copyright 2006-2009, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Stephan Aßmus <superstippi@gmx.de>
*/
#include "CanvasTransformBox.h"
#include "CanvasView.h"
CanvasTransformBox::CanvasTransformBox(CanvasView* view)
:
TransformBox(view, BRect(0.0, 0.0, 1.0, 1.0)),
fCanvasView(view),
fParentTransform()
{
}
CanvasTransformBox::~CanvasTransformBox()
{
}
void
CanvasTransformBox::TransformFromCanvas(BPoint& point) const
{
fParentTransform.InverseTransform(&point);
fCanvasView->ConvertFromCanvas(&point);
}
void
CanvasTransformBox::TransformToCanvas(BPoint& point) const
{
fCanvasView->ConvertToCanvas(&point);
fParentTransform.Transform(&point);
}
float
CanvasTransformBox::ZoomLevel() const
{
return fCanvasView->ZoomLevel();
}
double
CanvasTransformBox::ViewSpaceRotation() const
{
Transformable t(*this);
t.Multiply(fParentTransform);
return t.rotation() * 180.0 / M_PI;
}