From 524c020956f0ff69fc25d83933e25638498c93fb Mon Sep 17 00:00:00 2001 From: Adi Oanca Date: Wed, 15 Jun 2005 18:47:41 +0000 Subject: [PATCH] Bounds() takes into account previous pushed states git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13157 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/Layer.cpp | 27 +++++++++++++++++++++++++-- src/servers/app/Layer.h | 1 + 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/servers/app/Layer.cpp b/src/servers/app/Layer.cpp index 167d19933b..f4f3da0079 100644 --- a/src/servers/app/Layer.cpp +++ b/src/servers/app/Layer.cpp @@ -1019,8 +1019,31 @@ Layer::ResizeBy(float x, float y) BPoint Layer::BoundsOrigin() const { - // TODO: add origin from previous states - return fLayerData->Origin(); + BPoint origin(0,0); + float scale = Scale(); + + LayerData *ld = fLayerData; + do { + origin += ld->Origin(); + } while ((ld = ld->prevState)); + + origin.x *= scale; + origin.y *= scale; + + return origin; +} + +float +Layer::Scale() const +{ + float scale = 1.0f; + + LayerData *ld = fLayerData; + do { + scale += ld->Scale(); + } while ((ld = ld->prevState)); + + return scale; } //! Converts the passed point to parent coordinates diff --git a/src/servers/app/Layer.h b/src/servers/app/Layer.h index 13d49286ad..e3e1a28bb1 100644 --- a/src/servers/app/Layer.h +++ b/src/servers/app/Layer.h @@ -131,6 +131,7 @@ class Layer { virtual void ResizeBy(float x, float y); BPoint BoundsOrigin() const; // BoundsFrameDiff()? + float Scale() const; BPoint ConvertToParent(BPoint pt); BRect ConvertToParent(BRect rect);