[Libreoffice-commits] online.git: loleaflet/src

Mihai Varga mihai.varga at collabora.com
Wed Aug 5 07:51:59 PDT 2015


 loleaflet/src/layer/tile/TileLayer.js |   24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

New commits:
commit c36bca17f544b9c8572673e75421780d2cdd984a
Author: Mihai Varga <mihai.varga at collabora.com>
Date:   Wed Aug 5 17:51:30 2015 +0300

    loleaflet: request tiles closer to the cursor first

diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index e77fe32..37413b6 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -275,6 +275,7 @@ L.TileLayer = L.GridLayer.extend({
 			var visibleTopLeft = this._latLngToTwips(this._map.getBounds().getNorthWest());
 			var visibleBottomRight = this._latLngToTwips(this._map.getBounds().getSouthEast());
 			var visibleArea = new L.Bounds(visibleTopLeft, visibleBottomRight);
+			var toRequest = [];
 
 			for (var key in this._tiles) {
 				var coords = this._tiles[key].coords;
@@ -289,14 +290,15 @@ L.TileLayer = L.GridLayer.extend({
 						this._tiles[key]._invalidCount = 1;
 					}
 					if (visibleArea.intersects(bounds)) {
-						this.sendMessage('tile ' +
-										'part=' + coords.part + ' ' +
-										'width=' + this._tileSize + ' ' +
-										'height=' + this._tileSize + ' ' +
-										'tileposx=' + tileTopLeft.x + ' '    +
-										'tileposy=' + tileTopLeft.y + ' ' +
-										'tilewidth=' + this._tileWidthTwips + ' ' +
-										'tileheight=' + this._tileHeightTwips, key);
+						var msg = 'tile ' +
+								'part=' + coords.part + ' ' +
+								'width=' + this._tileSize + ' ' +
+								'height=' + this._tileSize + ' ' +
+								'tileposx=' + tileTopLeft.x + ' '    +
+								'tileposy=' + tileTopLeft.y + ' ' +
+								'tilewidth=' + this._tileWidthTwips + ' ' +
+								'tileheight=' + this._tileHeightTwips;
+						toRequest.push({msg: msg, key: key, coords: coords});
 					}
 					else {
 						// tile outside of the visible area, just remove it
@@ -305,6 +307,12 @@ L.TileLayer = L.GridLayer.extend({
 					}
 				}
 			}
+			var cursorPos = this._map.project(this._visibleCursor.getNorthWest());
+			cursorPos = cursorPos.divideBy(this._tileSize);
+			toRequest.sort(function(x, y) {return x.coords.distanceTo(cursorPos) - y.coords.distanceTo(cursorPos)});
+			for (var i = 0; i < toRequest.length; i++) {
+				this.sendMessage(toRequest[i].msg, toRequest[i].key);
+			}
 			for (key in this._tileCache) {
 				// compute the rectangle that each tile covers in the document based
 				// on the zoom level


More information about the Libreoffice-commits mailing list