diff --git a/headers/os/interface/Rect.h b/headers/os/interface/Rect.h index 9ee2bc74c0..ecb83f6a19 100644 --- a/headers/os/interface/Rect.h +++ b/headers/os/interface/Rect.h @@ -11,6 +11,7 @@ #include #include +#include #include @@ -26,6 +27,7 @@ class BRect { BRect(const BRect &r); BRect(float l, float t, float r, float b); BRect(BPoint lt, BPoint rb); + BRect(BPoint leftTop, BSize size); BRect &operator=(const BRect &r); void Set(float l, float t, float r, float b); @@ -72,12 +74,14 @@ class BRect { BRect operator&(BRect r) const; BRect operator|(BRect r) const; - bool Intersects(BRect r) const; bool IsValid() const; float Width() const; int32 IntegerWidth() const; float Height() const; int32 IntegerHeight() const; + BSize Size() const; + + bool Intersects(BRect r) const; bool Contains(BPoint p) const; bool Contains(BRect r) const; }; @@ -151,6 +155,16 @@ BRect::BRect(BPoint leftTop, BPoint rightBottom) } +inline +BRect::BRect(BPoint leftTop, BSize size) + : left(leftTop.x), + top(leftTop.y), + right(leftTop.x + size.width), + bottom(leftTop.y + size.height) +{ +} + + inline BRect & BRect::operator=(const BRect& from) { @@ -206,4 +220,11 @@ BRect::Height() const return bottom - top; } +inline BSize +BRect::Size() const +{ + return BSize(right - left, bottom - top); +} + + #endif // _RECT_H diff --git a/headers/os/interface/Size.h b/headers/os/interface/Size.h index 4558a98859..89c615fe50 100644 --- a/headers/os/interface/Size.h +++ b/headers/os/interface/Size.h @@ -7,7 +7,6 @@ #include -#include #include @@ -25,7 +24,6 @@ public: inline BSize(); inline BSize(const BSize& other); inline BSize(float width, float height); - inline BSize(const BRect& rect); inline float Width() const; inline float Height() const; @@ -73,15 +71,6 @@ BSize::BSize(float width, float height) } -// constructor -inline -BSize::BSize(const BRect& rect) - : width(rect.Width()), - height(rect.Height()) -{ -} - - // Width inline float BSize::Width() const diff --git a/src/kits/interface/CardLayout.cpp b/src/kits/interface/CardLayout.cpp index 574665012a..778db59ef7 100644 --- a/src/kits/interface/CardLayout.cpp +++ b/src/kits/interface/CardLayout.cpp @@ -167,7 +167,7 @@ BCardLayout::LayoutView() { _ValidateMinMax(); - BSize size = BSize(View()->Bounds()); + BSize size = View()->Bounds().Size(); size.width = max_c(size.width, fMin.width); size.height = max_c(size.height, fMin.height); diff --git a/src/kits/interface/SplitLayout.cpp b/src/kits/interface/SplitLayout.cpp index d62d5d23f7..57818c265e 100644 --- a/src/kits/interface/SplitLayout.cpp +++ b/src/kits/interface/SplitLayout.cpp @@ -470,7 +470,7 @@ BSplitLayout::LayoutView() _ValidateMinMax(); // layout the elements - BSize size = _SubtractInsets(BSize(View()->Bounds())); + BSize size = _SubtractInsets(View()->Bounds().Size()); fHorizontalLayouter->Layout(fHorizontalLayoutInfo, size.width); Layouter* verticalLayouter; @@ -562,7 +562,7 @@ BSplitLayout::StartDraggingSplitter(BPoint point) return false; // Things shouldn't be draggable, if we have a >= max layout. - BSize size = _SubtractInsets(BSize(View()->Frame())); + BSize size = _SubtractInsets(View()->Frame().Size()); if (fOrientation == B_HORIZONTAL && size.width >= fMax.width || fOrientation == B_VERTICAL && size.height >= fMax.height) { return false; @@ -757,7 +757,7 @@ BSplitLayout::_LayoutItem(BLayoutItem* item, BRect frame, bool visible) info->max = item->MaxSize(); if (item->HasHeightForWidth()) { - BSize size = _SubtractInsets(BSize(View()->Frame())); + BSize size = _SubtractInsets(View()->Frame().Size()); float minHeight, maxHeight; item->GetHeightForWidth(size.width, &minHeight, &maxHeight, NULL); info->min.height = max_c(info->min.height, minHeight); diff --git a/src/kits/interface/SplitLayout.h b/src/kits/interface/SplitLayout.h index 2cfb61d3ed..17264b1f2f 100644 --- a/src/kits/interface/SplitLayout.h +++ b/src/kits/interface/SplitLayout.h @@ -5,7 +5,10 @@ #ifndef _SPLIT_LAYOUT_H #define _SPLIT_LAYOUT_H + #include +#include + namespace BPrivate { namespace Layout { diff --git a/src/kits/interface/TwoDimensionalLayout.cpp b/src/kits/interface/TwoDimensionalLayout.cpp index f903d6535a..5c8c3a8958 100644 --- a/src/kits/interface/TwoDimensionalLayout.cpp +++ b/src/kits/interface/TwoDimensionalLayout.cpp @@ -341,7 +341,7 @@ BTwoDimensionalLayout::LayoutView() _ValidateMinMax(); // layout the horizontal/vertical elements - BSize size = SubtractInsets(BSize(View()->Frame())); + BSize size = SubtractInsets(View()->Frame().Size()); printf("BTwoDimensionalLayout::LayoutView(%p): size: (%.1f, %.1f)\n", View(), size.width, size.height);