loleaflet/dist/leaflet.css                   |   16 ++++++
 loleaflet/src/layer/tile/CalcTileLayer.js    |    7 ++
 loleaflet/src/layer/tile/GridLayer.js        |   11 ++++
 loleaflet/src/layer/tile/ImpressTileLayer.js |    7 ++
 loleaflet/src/layer/tile/TileLayer.js        |   71 +++++++++++++++++++++------
 loleaflet/src/layer/tile/WriterTileLayer.js  |    9 ++-
 6 files changed, 104 insertions(+), 17 deletions(-)

New commits:
commit 68d3693d977e7a0137599eeba7a9de6cae06a2be
Author: László Németh <laszlo.nem...@collabora.com>
Date:   Fri Sep 23 12:19:58 2016 +0200

    loleaflet: extend tile debugging
    
    - show invalidated rectangles with fading effect
    - show last tilecombine message and cancelled tile count
    - show received/requested tile updates
    - fix popup handling
    - custom popup style (transparent, big numbers)
    - clean up

diff --git a/loleaflet/dist/leaflet.css b/loleaflet/dist/leaflet.css
index 047fa0b..2febea3 100644
--- a/loleaflet/dist/leaflet.css
+++ b/loleaflet/dist/leaflet.css
@@ -566,6 +566,22 @@ a.leaflet-control-buttons:hover:first-child {
        pointer-events: none;
        }
 
+.debug .leaflet-popup-content {
+       margin: 1px 1px;
+       font: 28px/24px Tahoma, Verdana, sans-serif;
+       line-height: 1;
+       background: rgba(0, 0, 0, 0);
+       pointer-events: none;
+       }
+
+.debug .leaflet-popup-content-wrapper,
+.debug .leaflet-popup-tip {
+       background: rgba(255, 255, 255, 0);
+       color: #f70;
+       box-shadow: none;
+       pointer-events: none;
+       }
+
 /* div icon */
 
 .leaflet-div-icon {
diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js 
b/loleaflet/src/layer/tile/CalcTileLayer.js
index 1d51cf8..a493c7c 100644
--- a/loleaflet/src/layer/tile/CalcTileLayer.js
+++ b/loleaflet/src/layer/tile/CalcTileLayer.js
@@ -33,6 +33,9 @@ L.CalcTileLayer = L.TileLayer.extend({
                var topLeftTwips = new L.Point(command.x, command.y);
                var offset = new L.Point(command.width, command.height);
                var bottomRightTwips = topLeftTwips.add(offset);
+               if (this._debug) {
+                       this._debugAddInvalidationRectangle(topLeftTwips, 
bottomRightTwips);
+               }
                var invalidBounds = new L.Bounds(topLeftTwips, 
bottomRightTwips);
                var visibleTopLeft = 
this._latLngToTwips(this._map.getBounds().getNorthWest());
                var visibleBottomRight = 
this._latLngToTwips(this._map.getBounds().getSouthEast());
@@ -66,6 +69,7 @@ L.CalcTileLayer = L.TileLayer.extend({
                                        needsNewTiles = true;
                                        if (this._debug && 
this._tiles[key]._debugTile) {
                                                
this._tiles[key]._debugTile.setStyle({fillOpacity: 0.5});
+                                               
this._tiles[key]._debugInvalidateCount++;
                                        }
                                }
                                else {
@@ -88,6 +92,9 @@ L.CalcTileLayer = L.TileLayer.extend({
                                'tileheight=' + this._tileHeightTwips;
 
                        this._map._socket.sendMessage(message, '');
+                       if (this._debug) {
+                               this._debugDataTileCombine.setPrefix(message);
+                       }
                }
 
                for (key in this._tileCache) {
diff --git a/loleaflet/src/layer/tile/GridLayer.js 
b/loleaflet/src/layer/tile/GridLayer.js
index 89b71bd..d48aed9 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -538,6 +538,10 @@ L.GridLayer = L.Layer.extend({
                                        if (!this._tiles[key].loaded) {
                                                
L.DomUtil.remove(this._tiles[key].el);
                                                delete this._tiles[key];
+                                               if (this._debug && 
this._debugDataCancelledTiles) {
+                                                       
this._debugCancelledTiles++;
+                                                       
this._debugDataCancelledTiles.setPrefix('Cancelled tiles: ' + 
this._debugCancelledTiles);
+                                               }
                                        }
                                }
                                this._emptyTilesCount = 0;
@@ -607,6 +611,10 @@ L.GridLayer = L.Layer.extend({
                                        if (!tile.loaded) {
                                                L.DomUtil.remove(tile.el);
                                                delete this._tiles[key];
+                                               if (this._debug && 
this._debugDataCancelledTiles) {
+                                                       
this._debugCancelledTiles++;
+                                                       
this._debugDataCancelledTiles.setPrefix('Cancelled tiles: ' + 
this._debugCancelledTiles);
+                                               }
                                        }
                                }
                                this._emptyTilesCount = 0;
@@ -749,6 +757,9 @@ L.GridLayer = L.Layer.extend({
                        this._emptyTilesCount -= 1;
                }
                L.DomUtil.remove(tile.el);
+               if (this._debug && this._debugInfo && 
this._tiles[key]._debugPopup) {
+                       
this._debugInfo.removeLayer(this._tiles[key]._debugPopup);
+               }
                delete this._tiles[key];
 
                this.fire('tileunload', {
diff --git a/loleaflet/src/layer/tile/ImpressTileLayer.js 
b/loleaflet/src/layer/tile/ImpressTileLayer.js
index 96934d6..e931ef6 100644
--- a/loleaflet/src/layer/tile/ImpressTileLayer.js
+++ b/loleaflet/src/layer/tile/ImpressTileLayer.js
@@ -17,6 +17,9 @@ L.ImpressTileLayer = L.TileLayer.extend({
                var topLeftTwips = new L.Point(command.x, command.y);
                var offset = new L.Point(command.width, command.height);
                var bottomRightTwips = topLeftTwips.add(offset);
+               if (this._debug) {
+                       this._debugAddInvalidationRectangle(topLeftTwips, 
bottomRightTwips);
+               }
                var invalidBounds = new L.Bounds(topLeftTwips, 
bottomRightTwips);
                var visibleTopLeft = 
this._latLngToTwips(this._map.getBounds().getNorthWest());
                var visibleBottomRight = 
this._latLngToTwips(this._map.getBounds().getSouthEast());
@@ -50,6 +53,7 @@ L.ImpressTileLayer = L.TileLayer.extend({
                                        needsNewTiles = true;
                                        if (this._debug && 
this._tiles[key]._debugTile) {
                                                
this._tiles[key]._debugTile.setStyle({fillOpacity: 0.5});
+                                               
this._tiles[key]._debugInvalidateCount++;
                                        }
                                }
                                else {
@@ -72,6 +76,9 @@ L.ImpressTileLayer = L.TileLayer.extend({
                                'tileheight=' + this._tileHeightTwips;
 
                        this._map._socket.sendMessage(message, '');
+                       if (this._debug) {
+                               this._debugDataTileCombine.setPrefix(message);
+                       }
                }
 
                for (key in this._tileCache) {
diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index 122028c..e0197ff 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -151,10 +151,7 @@ L.TileLayer = L.GridLayer.extend({
                map.addLayer(this._viewLayerGroup);
 
                this._debug = map.options.debug;
-               if (this._debug) {
-                       this._debugInfo = new L.LayerGroup();
-                       map.addLayer(this._debugInfo);
-               }
+               this._debugInit();
 
                this._searchResultsLayer = new L.LayerGroup();
                map.addLayer(this._searchResultsLayer);
@@ -382,13 +379,15 @@ L.TileLayer = L.GridLayer.extend({
        toggleTileDebugMode: function() {
                this._invalidateClientVisibleArea();
                this._debug = !this._debug;
-               if (this._debug) {
-                       if (!this._debugInfo) {
-                               this._debugInfo = new L.LayerGroup();
-                               this._map.addLayer(this._debugInfo);
-                       }
-                       this._onMessage('invalidatetiles: EMPTY', null);
+               if (this._debugInfo) {
+                       this._map.removeLayer(this._debugInfo);
                }
+               if (!this._debug) {
+                       this._debugDataCancelledTiles.setPrefix('');
+                       this._debugDataTileCombine.setPrefix('');
+               }
+               this._debugInit();
+               this._onMessage('invalidatetiles: EMPTY', null);
        },
 
        _onCommandValuesMsg: function (textMsg) {
@@ -1004,20 +1003,21 @@ L.TileLayer = L.GridLayer.extend({
                var key = this._tileCoordsToKey(coords);
                var tile = this._tiles[key];
                if (this._debug && tile) {
-                       var tileBound = this._keyToBounds(key);
                        if (tile._debugLoadCount) {
-                               tile._debugLoadCount += 1;
+                               tile._debugLoadCount++;
                        } else {
                                tile._debugLoadCount = 1;
+                               tile._debugInvalidateCount = 1;
                        }
                        if (!tile._debugPopup) {
-                               tile._debugPopup = L.popup({offset: new 
L.Point(0, 0), autoPan: false, closeButton: false, closeOnClick: false})
-                                               .setLatLng(new 
L.LatLng(tileBound.getSouth(), tileBound.getCenter().lng)).setContent('-');
+                               var tileBound = this._keyToBounds(key);
+                               tile._debugPopup = L.popup({className: 'debug', 
offset: new L.Point(0, 0), autoPan: false, closeButton: false, closeOnClick: 
false})
+                                               .setLatLng(new 
L.LatLng(tileBound.getSouth(), tileBound.getWest() + (tileBound.getEast() - 
tileBound.getWest())/4)).setContent('-');
                                this._debugInfo.addLayer(tile._debugPopup);
                                tile._debugTile = L.rectangle(tileBound, 
{color: 'blue', weight: 1, fillOpacity: 0, pointerEvents: 'none'});
                                this._debugInfo.addLayer(tile._debugTile);
                        }
-                       tile._debugPopup.setContent('' + 
this._tiles[key]._debugLoadCount);
+                       tile._debugPopup.setContent('' + 
this._tiles[key]._debugLoadCount + '/' + 
this._tiles[key]._debugInvalidateCount);
                        if (tile._debugTile) {
                                tile._debugTile.setStyle({fillOpacity: 0});
                        }
@@ -1753,7 +1753,48 @@ L.TileLayer = L.GridLayer.extend({
                        }
                }
                this._clientVisibleArea = true;
+       },
+
+       _debugInit: function() {
+               if (this._debug) {
+                       this._debugInfo = new L.LayerGroup();
+                       map.addLayer(this._debugInfo);
+                       this._debugInvalidBounds = {};
+                       this._debugTimeout();
+                       this._debugId = 0;
+                       this._debugCancelledTiles = 0;
+                       if (!this._debugDataCancelledTiles) {
+                               this._debugDataTileCombine = 
L.control.attribution({prefix: '[tilecombine message]'}).addTo(map);
+                               this._debugDataCancelledTiles = 
L.control.attribution({prefix: 'Cancelled tiles: 0'}).addTo(map);
+                       }
+               }
+       },
+
+       _debugAddInvalidationRectangle: function(topLeftTwips, 
bottomRightTwips) {
+               var invalidBoundCoords = new 
L.LatLngBounds(this._twipsToLatLng(topLeftTwips, this._tileZoom),
+                               this._twipsToLatLng(bottomRightTwips, 
this._tileZoom));
+               var rect = L.rectangle(invalidBoundCoords, {color: 'red', 
weight: 1, fillOpacity: 0.5, pointerEvents: 'none'});
+               this._debugInvalidBounds[this._debugId] = rect;
+               this._debugId++;
+               this._debugInfo.addLayer(rect);
+       },
+
+       _debugTimeout: function() {
+               if (this._debug) {
+                       for (var key in this._debugInvalidBounds) {
+                               var rect = this._debugInvalidBounds[key];
+                               var opac = rect.options.fillOpacity;
+                               if (opac < 0.1) {
+                                       this._debugInfo.removeLayer(rect);
+                                       delete this._debugInvalidBounds[key];
+                               } else {
+                                       rect.setStyle({opacity: opac - 0.05, 
fillOpacity: opac - 0.05});
+                               }
+                       }
+                       this._debugTimeoutId = setTimeout(function () { 
map._docLayer._debugTimeout() }, 50);
+               }
        }
+
 });
 
 L.tileLayer = function (url, options) {
diff --git a/loleaflet/src/layer/tile/WriterTileLayer.js 
b/loleaflet/src/layer/tile/WriterTileLayer.js
index d29c3d5..910e9fa 100644
--- a/loleaflet/src/layer/tile/WriterTileLayer.js
+++ b/loleaflet/src/layer/tile/WriterTileLayer.js
@@ -18,15 +18,16 @@ L.WriterTileLayer = L.TileLayer.extend({
                var topLeftTwips = new L.Point(command.x, command.y);
                var offset = new L.Point(command.width, command.height);
                var bottomRightTwips = topLeftTwips.add(offset);
+               if (this._debug) {
+                       this._debugAddInvalidationRectangle(topLeftTwips, 
bottomRightTwips);
+               }
                var invalidBounds = new L.Bounds(topLeftTwips, 
bottomRightTwips);
                var visibleTopLeft = 
this._latLngToTwips(this._map.getBounds().getNorthWest());
                var visibleBottomRight = 
this._latLngToTwips(this._map.getBounds().getSouthEast());
                var visibleArea = new L.Bounds(visibleTopLeft, 
visibleBottomRight);
-
                var tilePositionsX = '';
                var tilePositionsY = '';
                var needsNewTiles = false;
-
                for (var key in this._tiles) {
                        var coords = this._tiles[key].coords;
                        var tileTopLeft = this._coordsToTwips(coords);
@@ -51,6 +52,7 @@ L.WriterTileLayer = L.TileLayer.extend({
                                        needsNewTiles = true;
                                        if (this._debug && 
this._tiles[key]._debugTile) {
                                                
this._tiles[key]._debugTile.setStyle({fillOpacity: 0.5});
+                                               
this._tiles[key]._debugInvalidateCount++;
                                        }
                                }
                                else {
@@ -76,6 +78,9 @@ L.WriterTileLayer = L.TileLayer.extend({
                                'tileheight=' + this._tileHeightTwips;
 
                        this._map._socket.sendMessage(message, '');
+                       if (this._debug) {
+                               this._debugDataTileCombine.setPrefix(message);
+                       }
                }
 
                for (key in this._tileCache) {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to