[Libreoffice-commits] core.git: desktop/inc desktop/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Feb 22 14:26:52 UTC 2019


 desktop/inc/lib/init.hxx    |   39 ++++++++++++++++
 desktop/source/lib/init.cxx |  103 ++++++++++++++------------------------------
 2 files changed, 74 insertions(+), 68 deletions(-)

New commits:
commit b1a3db96dea8d0c2ec57ed843703f7b93b9dd4fe
Author:     Ashod Nakashian <ashod.nakashian at collabora.co.uk>
AuthorDate: Wed Feb 13 13:51:14 2019 -0500
Commit:     Ashod Nakashian <ashnakash at gmail.com>
CommitDate: Fri Feb 22 15:26:21 2019 +0100

    LOK: Move RectangleAndPart to the header
    
    This is in preparation to cache them.
    
    Change-Id: Ic511caf5a8798750288e9271f6898ab38fe2055f
    Reviewed-on: https://gerrit.libreoffice.org/67889
    Tested-by: Jenkins
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/desktop/inc/lib/init.hxx b/desktop/inc/lib/init.hxx
index cb8afa899b76..d5adb7ac411c 100644
--- a/desktop/inc/lib/init.hxx
+++ b/desktop/inc/lib/init.hxx
@@ -22,6 +22,8 @@
 #include <LibreOfficeKit/LibreOfficeKitEnums.h>
 #include <com/sun/star/beans/PropertyValue.hpp>
 #include <com/sun/star/lang/XComponent.hpp>
+#include <tools/gen.hxx>
+#include <sfx2/lokhelper.hxx>
 
 #include <desktop/dllapi.h>
 
@@ -29,6 +31,43 @@ class LOKInteractionHandler;
 
 namespace desktop {
 
+    /// Represents an invalidated rectangle inside a given document part.
+    struct RectangleAndPart
+    {
+        tools::Rectangle m_aRectangle;
+        int m_nPart;
+
+        RectangleAndPart()
+            : m_nPart(INT_MIN)  // -1 is reserved to mean "all parts".
+        {
+        }
+
+        OString toString() const
+        {
+            std::stringstream ss;
+            ss << m_aRectangle.toString();
+            if (m_nPart >= -1)
+                ss << ", " << m_nPart;
+            return ss.str().c_str();
+        }
+
+        /// Infinite Rectangle is both sides are
+        /// equal or longer than SfxLokHelper::MaxTwips.
+        bool isInfinite() const
+        {
+            return m_aRectangle.GetWidth() >= SfxLokHelper::MaxTwips &&
+                   m_aRectangle.GetHeight() >= SfxLokHelper::MaxTwips;
+        }
+
+        /// Empty Rectangle is when it has zero dimensions.
+        bool isEmpty() const
+        {
+            return m_aRectangle.IsEmpty();
+        }
+
+        static RectangleAndPart Create(const std::string& rPayload);
+    };
+
     class DESKTOP_DLLPUBLIC CallbackFlushHandler : public Idle
     {
     public:
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index a7e1161a1bde..cd1492cb65ae 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -93,7 +93,6 @@
 #include <sfx2/viewfrm.hxx>
 #include <sfx2/msgpool.hxx>
 #include <sfx2/dispatch.hxx>
-#include <sfx2/lokhelper.hxx>
 #include <sfx2/DocumentSigner.hxx>
 #include <svx/dialmgr.hxx>
 #include <svx/dialogs.hrc>
@@ -400,94 +399,62 @@ static boost::property_tree::ptree unoAnyToPropertyTree(const uno::Any& anyItem)
     return aTree;
 }
 
-namespace {
+namespace desktop {
 
-/// Represents an invalidated rectangle inside a given document part.
-struct RectangleAndPart
+RectangleAndPart RectangleAndPart::Create(const std::string& rPayload)
 {
-    tools::Rectangle m_aRectangle;
-    int m_nPart;
-
-    RectangleAndPart()
-        : m_nPart(INT_MIN)  // -1 is reserved to mean "all parts".
+    RectangleAndPart aRet;
+    if (rPayload.compare(0, 5, "EMPTY") == 0) // payload starts with "EMPTY"
     {
-    }
+        aRet.m_aRectangle = tools::Rectangle(0, 0, SfxLokHelper::MaxTwips, SfxLokHelper::MaxTwips);
+        if (comphelper::LibreOfficeKit::isPartInInvalidation())
+            aRet.m_nPart = std::stol(rPayload.substr(6));
 
-    OString toString() const
-    {
-        std::stringstream ss;
-        ss << m_aRectangle.toString();
-        if (m_nPart >= -1)
-            ss << ", " << m_nPart;
-        return ss.str().c_str();
+        return aRet;
     }
 
-    /// Infinite Rectangle is both sides are
-    /// equal or longer than SfxLokHelper::MaxTwips.
-    bool isInfinite() const
+    std::istringstream aStream(rPayload);
+    long nLeft, nTop, nWidth, nHeight;
+    long nPart = INT_MIN;
+    char nComma;
+    if (comphelper::LibreOfficeKit::isPartInInvalidation())
     {
-        return m_aRectangle.GetWidth() >= SfxLokHelper::MaxTwips &&
-               m_aRectangle.GetHeight() >= SfxLokHelper::MaxTwips;
+        aStream >> nLeft >> nComma >> nTop >> nComma >> nWidth >> nComma >> nHeight >> nComma >> nPart;
     }
-
-    /// Empty Rectangle is when it has zero dimensions.
-    bool isEmpty() const
+    else
     {
-        return m_aRectangle.IsEmpty();
+        aStream >> nLeft >> nComma >> nTop >> nComma >> nWidth >> nComma >> nHeight;
     }
 
-    static RectangleAndPart Create(const std::string& rPayload)
+    if (nWidth > 0 && nHeight > 0)
     {
-        RectangleAndPart aRet;
-        if (rPayload.compare(0, 5, "EMPTY") == 0) // payload starts with "EMPTY"
+        // The top-left corner starts at (0, 0).
+        // Anything negative is invalid.
+        if (nLeft < 0)
         {
-            aRet.m_aRectangle = tools::Rectangle(0, 0, SfxLokHelper::MaxTwips, SfxLokHelper::MaxTwips);
-            if (comphelper::LibreOfficeKit::isPartInInvalidation())
-                aRet.m_nPart = std::stol(rPayload.substr(6));
-
-            return aRet;
+            nWidth += nLeft;
+            nLeft = 0;
         }
 
-        std::istringstream aStream(rPayload);
-        long nLeft, nTop, nWidth, nHeight;
-        long nPart = INT_MIN;
-        char nComma;
-        if (comphelper::LibreOfficeKit::isPartInInvalidation())
+        if (nTop < 0)
         {
-            aStream >> nLeft >> nComma >> nTop >> nComma >> nWidth >> nComma >> nHeight >> nComma >> nPart;
-        }
-        else
-        {
-            aStream >> nLeft >> nComma >> nTop >> nComma >> nWidth >> nComma >> nHeight;
+            nHeight += nTop;
+            nTop = 0;
         }
 
         if (nWidth > 0 && nHeight > 0)
         {
-            // The top-left corner starts at (0, 0).
-            // Anything negative is invalid.
-            if (nLeft < 0)
-            {
-                nWidth += nLeft;
-                nLeft = 0;
-            }
-
-            if (nTop < 0)
-            {
-                nHeight += nTop;
-                nTop = 0;
-            }
-
-            if (nWidth > 0 && nHeight > 0)
-            {
-                aRet.m_aRectangle = tools::Rectangle(nLeft, nTop, nLeft + nWidth, nTop + nHeight);
-            }
+            aRet.m_aRectangle = tools::Rectangle(nLeft, nTop, nLeft + nWidth, nTop + nHeight);
         }
-        // else leave empty rect.
-
-        aRet.m_nPart = nPart;
-        return aRet;
     }
-};
+    // else leave empty rect.
+
+    aRet.m_nPart = nPart;
+    return aRet;
+}
+}
+
+namespace {
 
 bool lcl_isViewCallbackType(const int type)
 {
@@ -1045,7 +1012,7 @@ void CallbackFlushHandler::queue(const int type, const char* data)
                         [] (const queue_type::value_type& elem) { return (elem.first == LOK_CALLBACK_INVALIDATE_TILES); });
                 if (pos != m_queue.rend())
                 {
-                    RectangleAndPart rcOld = RectangleAndPart::Create(pos->second);
+                    const RectangleAndPart rcOld = RectangleAndPart::Create(pos->second);
                     if (rcOld.isInfinite() && (rcOld.m_nPart == -1 || rcOld.m_nPart == rcNew.m_nPart))
                     {
                         SAL_INFO("lok", "Skipping queue [" << type << "]: [" << payload << "] since all tiles need to be invalidated.");


More information about the Libreoffice-commits mailing list