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

Michael Meeks (via logerrit) logerrit at kemper.freedesktop.org
Tue Sep 1 15:54:01 UTC 2020


 loleaflet/src/layer/tile/CalcTileLayer.js   |    5 ++---
 loleaflet/src/layer/tile/CanvasTileLayer.js |   22 +++++++++++++++-------
 2 files changed, 17 insertions(+), 10 deletions(-)

New commits:
commit cd1f1293d9a33f77e37397ac7d69a9cb0b765fea
Author:     Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Tue Sep 1 16:53:02 2020 +0100
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Tue Sep 1 16:53:02 2020 +0100

    calc tiles: don't send un-necessary zoom / visible area changes.
    
    Lots of redundant zoom messages seem unhelpful.
    
    Change-Id: I944a3202739adfc89aab81902b467a4e34977202

diff --git a/loleaflet/src/layer/tile/CanvasTileLayer.js b/loleaflet/src/layer/tile/CanvasTileLayer.js
index 8ef3cb886..8643f8bf7 100644
--- a/loleaflet/src/layer/tile/CanvasTileLayer.js
+++ b/loleaflet/src/layer/tile/CanvasTileLayer.js
@@ -697,9 +697,8 @@ L.CanvasTileLayer = L.TileLayer.extend({
 			}
 		}
 
-		this._sendClientVisibleArea(true);
-
-		this._sendClientZoom(true);
+		this._sendClientVisibleArea();
+		this._sendClientZoom();
 
 		if (queue.length !== 0) {
 			if (cancelTiles) {
commit ebacd1a031e41dfe873128a35f1ab6cb1c51b101
Author:     Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Tue Sep 1 16:52:35 2020 +0100
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Tue Sep 1 16:52:35 2020 +0100

    calc tiles: use canvas rendering for mobile too.
    
    This way the row/column headers line up - and it's the future.
    
    Change-Id: I56b2c2527dcc751ed06fc3b30aff22544ec4c269

diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js b/loleaflet/src/layer/tile/CalcTileLayer.js
index 403f2e27e..7bc11901e 100644
--- a/loleaflet/src/layer/tile/CalcTileLayer.js
+++ b/loleaflet/src/layer/tile/CalcTileLayer.js
@@ -4,8 +4,7 @@
  */
 
 /* global */
-var BaseTileLayer = L.Browser.mobile ? L.TileLayer : L.CanvasTileLayer;
-L.CalcTileLayer = BaseTileLayer.extend({
+L.CalcTileLayer = L.CanvasTileLayer.extend({
 	options: {
 		// TODO: sync these automatically from SAL_LOK_OPTIONS
 		sheetGeometryDataEnabled: true,
@@ -82,7 +81,7 @@ L.CalcTileLayer = BaseTileLayer.extend({
 		map.addControl(L.control.tabs());
 		map.addControl(L.control.columnHeader());
 		map.addControl(L.control.rowHeader());
-		BaseTileLayer.prototype.onAdd.call(this, map);
+		L.CanvasTileLayer.prototype.onAdd.call(this, map);
 
 		map.on('resize', function () {
 			if (this.isCursorVisible()) {
commit ee15411f94a9bd90c84facd4cb9b09057fa6a768
Author:     Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Tue Sep 1 16:24:18 2020 +0100
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Tue Sep 1 16:24:18 2020 +0100

    calc canvas: ensure that the fraction width rounds to the pixel width.
    
    Slave CSS geometry from integral canvas pixels, don't attempt the
    reverse.
    
    Change-Id: I369ed1bea3c4a5a199192aa1e84bb4e03dcb2e94

diff --git a/loleaflet/src/layer/tile/CanvasTileLayer.js b/loleaflet/src/layer/tile/CanvasTileLayer.js
index 4983fef2a..8ef3cb886 100644
--- a/loleaflet/src/layer/tile/CanvasTileLayer.js
+++ b/loleaflet/src/layer/tile/CanvasTileLayer.js
@@ -96,11 +96,20 @@ L.CanvasTilePainter = L.Class.extend({
 	},
 
 	_setCanvasSize: function (widthCSSPx, heightCSSPx) {
-		this._canvas.style.width = widthCSSPx + 'px';
-		this._canvas.style.height = heightCSSPx + 'px';
-		this._canvas.width = Math.floor(widthCSSPx * this._dpiScale);
-		this._canvas.height = Math.floor(heightCSSPx * this._dpiScale);
+		var pixWidth = Math.floor(widthCSSPx * this._dpiScale);
+		var pixHeight = Math.floor(heightCSSPx * this._dpiScale);
 
+		// real pixels have to be integral
+		this._canvas.width = pixWidth;
+		this._canvas.height = pixHeight;
+
+		// CSS pixels can be fractional, but need to round to the same real pixels
+		var cssWidth = pixWidth / this._dpiScale; // NB. beware
+		var cssHeight = pixHeight / this._dpiScale;
+		this._canvas.style.width = cssWidth.toFixed(4) + 'px';
+		this._canvas.style.height = cssHeight.toFixed(4) + 'px';
+
+		// FIXME: is this a good idea ? :
 		this._width = parseInt(this._canvas.style.width);
 		this._height = parseInt(this._canvas.style.height);
 		this.clear();


More information about the Libreoffice-commits mailing list