[Libreoffice-commits] core.git: include/tools tools/source

Mike Kaganski (via logerrit) logerrit at kemper.freedesktop.org
Thu Aug 12 02:49:23 UTC 2021


 include/tools/gen.hxx        |   93 ++++++-------------------------------------
 tools/source/generic/gen.cxx |   10 ----
 2 files changed, 15 insertions(+), 88 deletions(-)

New commits:
commit 5351e837a11fb9d19759cd1b91ca4b5d43e2f75a
Author:     Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Thu Aug 12 03:43:27 2021 +0200
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Thu Aug 12 04:48:48 2021 +0200

    Unify and simplify tools::Rectangle methods returning Point
    
    Make the methods use Left()/Top()/Right()/Bottom(), allowing to
    avoid explicit checks for emptiness.
    
    Also do not use std::min/max in *Center(), so that e.g. TopCenter
    returns top value the same way as TopLeft and TopRight do.
    
    Change-Id: Ie1edd7a0ab7e32b4f98d0c2fb3917ce2902bdf7b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120353
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/include/tools/gen.hxx b/include/tools/gen.hxx
index 5386de129c56..b8bd6eeb35d4 100644
--- a/include/tools/gen.hxx
+++ b/include/tools/gen.hxx
@@ -474,37 +474,25 @@ public:
 
     static Rectangle    Justify( const Point& rLT, const Point& rRB );
 
-    tools::Long         Left() const    { return nLeft;   }
-    tools::Long         Right() const;
-    tools::Long         Top() const     { return nTop;    }
-    tools::Long         Bottom() const;
+    constexpr tools::Long Left() const { return nLeft; }
+    constexpr tools::Long Right() const { return nRight == RECT_EMPTY ? nLeft : nRight; }
+    constexpr tools::Long Top() const { return nTop; }
+    constexpr tools::Long Bottom() const { return nBottom == RECT_EMPTY ? nTop : nBottom; }
 
     void                SetLeft(tools::Long v)    { nLeft = v;   }
     void                SetRight(tools::Long v)   { nRight = v;  }
     void                SetTop(tools::Long v)     { nTop = v;    }
     void                SetBottom(tools::Long v)  { nBottom = v; }
 
-    constexpr Point TopLeft() const
-    {
-        return Point( nLeft, nTop );
-    }
-    constexpr Point TopRight() const
-    {
-        return Point( (nRight == RECT_EMPTY) ? nLeft : nRight, nTop );
-    }
-    constexpr Point TopCenter() const
-    {
-        if (IsEmpty())
-            return Point(nLeft, nTop);
-        else
-            return Point((nLeft + nRight) / 2, std::min(nTop, nBottom));
-    }
-    inline Point BottomLeft() const;
-    inline Point BottomRight() const;
-    inline Point BottomCenter() const;
-    inline Point LeftCenter() const;
-    inline Point RightCenter() const;
-    inline Point Center() const;
+    constexpr Point TopLeft() const { return { Left(), Top() }; }
+    constexpr Point TopRight() const { return { Right(), Top() }; }
+    constexpr Point TopCenter() const { return { (Left() + Right()) / 2, Top() }; }
+    constexpr Point BottomLeft() const { return { Left(), Bottom() }; }
+    constexpr Point BottomRight() const { return { Right(), Bottom() }; }
+    constexpr Point BottomCenter() const { return { (Left() + Right()) / 2, Bottom() }; }
+    constexpr Point LeftCenter() const { return { Left(), (Top() + Bottom()) / 2 }; }
+    constexpr Point RightCenter() const { return { Right(), (Top() + Bottom()) / 2 }; }
+    constexpr Point Center() const { return { (Left() + Right()) / 2, (Top() + Bottom()) / 2 }; }
 
     /// Move the top and left edges by a delta, preserving width and height
     inline void         Move( tools::Long nHorzMoveDelta, tools::Long nVertMoveDelta );
@@ -516,10 +504,7 @@ public:
     inline void         SetPos( const Point& rPoint );
     void                SetSize( const Size& rSize );
 
-    constexpr Size GetSize() const
-    {
-        return Size(GetWidth(), GetHeight());
-    }
+    constexpr Size GetSize() const { return { GetWidth(), GetHeight() }; }
 
     /// Returns the difference between right and left, assuming the range is inclusive.
     constexpr tools::Long GetWidth() const
@@ -569,7 +554,7 @@ public:
     void                SetEmpty() { nRight = nBottom = RECT_EMPTY; }
     void                SetWidthEmpty() { nRight = RECT_EMPTY; }
     void                SetHeightEmpty() { nBottom = RECT_EMPTY; }
-    constexpr bool IsEmpty() const;
+    constexpr bool IsEmpty() const { return (nRight == RECT_EMPTY) || (nBottom == RECT_EMPTY); }
     bool                IsWidthEmpty() const { return nRight == RECT_EMPTY; }
     bool                IsHeightEmpty() const { return nBottom == RECT_EMPTY; }
 
@@ -655,54 +640,6 @@ constexpr inline tools::Rectangle::Rectangle( const Point& rLT, const Size& rSiz
     , nBottom( rSize.Height() ? nTop+(rSize.Height()-1) : RECT_EMPTY )
 {}
 
-constexpr inline bool tools::Rectangle::IsEmpty() const
-{
-    return (nRight == RECT_EMPTY) || (nBottom == RECT_EMPTY);
-}
-
-inline Point tools::Rectangle::BottomLeft() const
-{
-    return Point( nLeft, (nBottom == RECT_EMPTY) ? nTop : nBottom );
-}
-
-inline Point tools::Rectangle::BottomRight() const
-{
-    return Point( (nRight  == RECT_EMPTY) ? nLeft : nRight,
-                  (nBottom == RECT_EMPTY) ? nTop  : nBottom );
-}
-
-inline Point tools::Rectangle::BottomCenter() const
-{
-    if ( IsEmpty() )
-        return Point( nLeft, nTop );
-    else
-        return Point((nLeft + nRight) / 2, std::max(nTop, nBottom));
-}
-
-inline Point tools::Rectangle::LeftCenter() const
-{
-    if ( IsEmpty() )
-        return Point( nLeft, nTop );
-    else
-        return Point(std::min(nLeft, nRight), (nTop + nBottom) / 2);
-}
-
-inline Point tools::Rectangle::RightCenter() const
-{
-    if ( IsEmpty() )
-        return Point( nLeft, nTop );
-    else
-        return Point(std::max(nLeft, nRight), (nTop + nBottom) / 2);
-}
-
-inline Point tools::Rectangle::Center() const
-{
-    if ( IsEmpty() )
-        return Point( nLeft, nTop );
-    else
-        return Point((nLeft + nRight) / 2, (nTop + nBottom) / 2);
-}
-
 inline void tools::Rectangle::Move( tools::Long nHorzMove, tools::Long nVertMove )
 {
     nLeft += nHorzMove;
diff --git a/tools/source/generic/gen.cxx b/tools/source/generic/gen.cxx
index 1740f4b306f1..2edb63c465d9 100644
--- a/tools/source/generic/gen.cxx
+++ b/tools/source/generic/gen.cxx
@@ -252,16 +252,6 @@ void tools::Rectangle::setY( tools::Long y )
     nTop  = y;
 }
 
-tools::Long tools::Rectangle::Right() const
-{
-    return nRight == RECT_EMPTY ? nLeft : nRight;
-}
-
-tools::Long tools::Rectangle::Bottom() const
-{
-    return nBottom == RECT_EMPTY ? nTop : nBottom;
-}
-
 /// Returns the difference between right and left, assuming the range includes one end, but not the other.
 tools::Long tools::Rectangle::getWidth() const
 {


More information about the Libreoffice-commits mailing list