[Libreoffice-commits] online.git: Branch 'feature/calc-canvas' - loleaflet/src

Michael Meeks (via logerrit) logerrit at kemper.freedesktop.org
Fri Aug 21 15:06:41 UTC 2020


 loleaflet/src/layer/tile/CanvasTileLayer.js |   68 +++++++++++++---------------
 1 file changed, 33 insertions(+), 35 deletions(-)

New commits:
commit a486bd5bfd98c33f093567edbbe6a88160a38050
Author:     Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Fri Aug 21 15:54:50 2020 +0100
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Fri Aug 21 16:06:18 2020 +0100

    calc tiles: share code for building bounds and panes.
    
    Avoid duplication between tileReady and paint.
    
    Change-Id: Ic3d1c22a1dbeffe1abfffd35ea0d7fbcfd5c1ccc

diff --git a/loleaflet/src/layer/tile/CanvasTileLayer.js b/loleaflet/src/layer/tile/CanvasTileLayer.js
index 5881803c8..244dfe1d4 100644
--- a/loleaflet/src/layer/tile/CanvasTileLayer.js
+++ b/loleaflet/src/layer/tile/CanvasTileLayer.js
@@ -140,38 +140,43 @@ L.CanvasTilePainter = L.Class.extend({
 		this._canvasCtx.restore();
 	},
 
-	paint: function (tile, viewBounds, paneBoundsList) {
+	// Details of tile areas to render
+	_paintContext: function() {
+		var tileSize = new L.Point(this._tileSizeCSSPx, this._tileSizeCSSPx);
+
+		var viewBounds = this._map.getPixelBounds();
+		var splitPanesContext = this._layer.getSplitPanesContext();
+		var paneBoundsList = splitPanesContext ?
+		    splitPanesContext.getPxBoundList(viewBounds) :
+		    [viewBounds];
+
+		return { tileSize: tileSize,
+			 viewBounds: viewBounds,
+			 paneBoundsList: paneBoundsList };
+	},
+
+	paint: function (tile, ctx) {
 
-		if (this._tileSizeCSSPx === undefined) {
+		if (this._tileSizeCSSPx === undefined)
 			this._tileSizeCSSPx = this._layer._getTileSize();
-		}
+
+		if (!ctx)
+			ctx = this._paintContext();
 
 		var tileTopLeft = tile.coords.getPos();
-		var tileSize = new L.Point(this._tileSizeCSSPx, this._tileSizeCSSPx);
-		var tileBounds = new L.Bounds(tileTopLeft, tileTopLeft.add(tileSize));
+		var tileBounds = new L.Bounds(tileTopLeft, tileTopLeft.add(ctx.tileSize));
 
-		viewBounds = viewBounds || this._map.getPixelBounds();
-		var splitPanesContext = this._layer.getSplitPanesContext();
-		paneBoundsList = paneBoundsList || (
-			splitPanesContext ?
-			splitPanesContext.getPxBoundList(viewBounds) :
-			[viewBounds]
-		);
+		for (var i = 0; i < ctx.paneBoundsList.length; ++i) {
+			var paneBounds = ctx.paneBoundsList[i];
 
-		for (var i = 0; i < paneBoundsList.length; ++i) {
-			var paneBounds = paneBoundsList[i];
-			if (!paneBounds.intersects(tileBounds)) {
+			if (!paneBounds.intersects(tileBounds))
 				continue;
-			}
 
 			var topLeft = paneBounds.getTopLeft();
-			if (topLeft.x) {
-				topLeft.x = viewBounds.min.x;
-			}
-
-			if (topLeft.y) {
-				topLeft.y = viewBounds.min.y;
-			}
+			if (topLeft.x)
+				topLeft.x = ctx.viewBounds.min.x;
+			if (topLeft.y)
+				topLeft.y = ctx.viewBounds.min.y;
 
 			this._canvasCtx.save();
 			this._canvasCtx.scale(this._dpiScale, this._dpiScale);
@@ -280,24 +285,17 @@ L.CanvasTilePainter = L.Class.extend({
 		var zoom = this._lastZoom || Math.round(this._map.getZoom());
 		var part = this._lastPart || this._layer._selectedPart;
 
-		var viewSize = new L.Point(this._width, this._height);
-		var viewBounds = new L.Bounds(this._topLeft, this._topLeft.add(viewSize));
-
-		var splitPanesContext = this._layer.getSplitPanesContext();
 		// Calculate all this here intead of doing it per tile.
-		var paneBoundsList = splitPanesContext ?
-			splitPanesContext.getPxBoundList(viewBounds) : [viewBounds];
-		var tileRanges = paneBoundsList.map(this._layer._pxBoundsToTileRange, this._layer);
-
-		var tileSize = this._tileSizeCSSPx || this._layer._getTileSize();
+		var ctx = this._paintContext();
+		var tileRanges = ctx.paneBoundsList.map(this._layer._pxBoundsToTileRange, this._layer);
 
 		for (var rangeIdx = 0; rangeIdx < tileRanges.length; ++rangeIdx) {
 			var tileRange = tileRanges[rangeIdx];
 			for (var j = tileRange.min.y; j <= tileRange.max.y; ++j) {
 				for (var i = tileRange.min.x; i <= tileRange.max.x; ++i) {
 					var coords = new L.TileCoordData(
-						i * tileSize,
-						j * tileSize,
+						i * ctx.tileSize,
+						j * ctx.tileSize,
 						zoom,
 						part);
 
@@ -305,7 +303,7 @@ L.CanvasTilePainter = L.Class.extend({
 					var tile = this._layer._tiles[key];
 					var invalid = tile && tile._invalidCount && tile._invalidCount > 0;
 					if (tile && tile.loaded && !invalid) {
-						this.paint(tile, viewBounds, paneBoundsList);
+						this.paint(tile, ctx);
 					}
 				}
 			}


More information about the Libreoffice-commits mailing list