[Libreoffice-commits] online.git: kit/Delta.hpp

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Nov 7 08:09:35 UTC 2018


 kit/Delta.hpp |   85 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 file changed, 63 insertions(+), 22 deletions(-)

New commits:
commit 175ddd4c401a636120d43efe1644be47c02f8a02
Author:     Miklos Vajna <vmiklos at collabora.co.uk>
AuthorDate: Wed Nov 7 09:09:01 2018 +0100
Commit:     Miklos Vajna <vmiklos at collabora.co.uk>
CommitDate: Wed Nov 7 09:09:12 2018 +0100

    DeltaData: make members private

diff --git a/kit/Delta.hpp b/kit/Delta.hpp
index 1cc3afbac..7bffb071d 100644
--- a/kit/Delta.hpp
+++ b/kit/Delta.hpp
@@ -34,6 +34,47 @@ class DeltaGenerator {
     };
 
     struct DeltaData {
+        void setWid(TileWireId wid)
+        {
+            _wid = wid;
+        }
+
+        TileWireId getWid() const
+        {
+            return _wid;
+        }
+
+        void setWidth(int width)
+        {
+            _width = width;
+        }
+
+        int getWidth() const
+        {
+            return _width;
+        }
+
+        void setHeight(int height)
+        {
+            _height = height;
+        }
+
+        int getHeight() const
+        {
+            return _height;
+        }
+
+        const std::vector<DeltaBitmapRow>& getRows() const
+        {
+            return _rows;
+        }
+
+        std::vector<DeltaBitmapRow>& getRows()
+        {
+            return _rows;
+        }
+
+    private:
         TileWireId _wid;
         int _width;
         int _height;
@@ -47,36 +88,36 @@ class DeltaGenerator {
         std::vector<char>& output)
     {
         // TODO: should we split and compress alpha separately ?
-        if (prev._width != cur._width || prev._height != cur._height)
+        if (prev.getWidth() != cur.getWidth() || prev.getHeight() != cur.getHeight())
         {
-            LOG_ERR("mis-sized delta: " << prev._width << "x" << prev._height << " vs "
-                    << cur._width << "x" << cur._height);
+            LOG_ERR("mis-sized delta: " << prev.getWidth() << "x" << prev.getHeight() << " vs "
+                    << cur.getWidth() << "x" << cur.getHeight());
             return false;
         }
 
         output.push_back('D');
-        LOG_TRC("building delta of a " << cur._width << "x" << cur._height << " bitmap");
+        LOG_TRC("building delta of a " << cur.getWidth() << "x" << cur.getHeight() << " bitmap");
 
         // row move/copy src/dest is a byte.
-        assert (prev._height <= 256);
+        assert (prev.getHeight() <= 256);
         // column position is a byte.
-        assert (prev._width <= 256);
+        assert (prev.getWidth() <= 256);
 
         // How do the rows look against each other ?
         size_t lastMatchOffset = 0;
         size_t lastCopy = 0;
-        for (int y = 0; y < prev._height; ++y)
+        for (int y = 0; y < prev.getHeight(); ++y)
         {
             // Life is good where rows match:
-            if (prev._rows[y].identical(cur._rows[y]))
+            if (prev.getRows()[y].identical(cur.getRows()[y]))
                 continue;
 
             // Hunt for other rows
             bool matched = false;
-            for (int yn = 0; yn < prev._height && !matched; ++yn)
+            for (int yn = 0; yn < prev.getHeight() && !matched; ++yn)
             {
-                size_t match = (y + lastMatchOffset + yn) % prev._height;
-                if (prev._rows[match].identical(cur._rows[y]))
+                size_t match = (y + lastMatchOffset + yn) % prev.getHeight();
+                if (prev.getRows()[match].identical(cur.getRows()[y]))
                 {
                     // TODO: if offsets are >256 - use 16bits?
                     if (lastCopy > 0)
@@ -106,19 +147,19 @@ class DeltaGenerator {
                 continue;
 
             // Our row is just that different:
-            const DeltaBitmapRow &curRow = cur._rows[y];
-            const DeltaBitmapRow &prevRow = prev._rows[y];
-            for (int x = 0; x < prev._width;)
+            const DeltaBitmapRow &curRow = cur.getRows()[y];
+            const DeltaBitmapRow &prevRow = prev.getRows()[y];
+            for (int x = 0; x < prev.getWidth();)
             {
                 int same;
-                for (same = 0; same + x < prev._width &&
+                for (same = 0; same + x < prev.getWidth() &&
                          prevRow._pixels[x+same] == curRow._pixels[x+same];)
                     ++same;
 
                 x += same;
 
                 int diff;
-                for (diff = 0; diff + x < prev._width &&
+                for (diff = 0; diff + x < prev.getWidth() &&
                          (prevRow._pixels[x+diff] == curRow._pixels[x+diff] || diff < 2) &&
                          diff < 254;)
                     ++diff;
@@ -149,7 +190,7 @@ class DeltaGenerator {
         int bufferWidth, int bufferHeight)
     {
         auto data = std::make_shared<DeltaData>();
-        data->_wid = wid;
+        data->setWid(wid);
 
         assert (startX + width <= (size_t)bufferWidth);
         assert (startY + height <= (size_t)bufferHeight);
@@ -160,12 +201,12 @@ class DeltaGenerator {
                 << (width * height * 4) << " width " << width
                 << " height " << height);
 
-        data->_width = width;
-        data->_height = height;
-        data->_rows.resize(height);
+        data->setWidth(width);
+        data->setHeight(height);
+        data->getRows().resize(height);
         for (int y = 0; y < height; ++y)
         {
-            DeltaBitmapRow &row = data->_rows[y];
+            DeltaBitmapRow &row = data->getRows()[y];
             size_t position = ((startY + y) * bufferWidth * 4) + (startX * 4);
             int32_t *src = reinterpret_cast<int32_t *>(pixmap + position);
 
@@ -209,7 +250,7 @@ class DeltaGenerator {
 
         for (auto &old : _deltaEntries)
         {
-            if (oldWid == old->_wid)
+            if (oldWid == old->getWid())
                 return makeDelta(*old, *update, output);
         }
         return false;


More information about the Libreoffice-commits mailing list