[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