loleaflet/src/layer/tile/CalcTileLayer.js | 61 ------------------------- loleaflet/src/layer/tile/CanvasTileLayer.js | 66 ++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 61 deletions(-)
New commits: commit 3a93ada13f4030b20601ecd4a345b931bf670c0b Author: Jan Holesovsky <ke...@collabora.com> AuthorDate: Thu Sep 17 17:47:07 2020 +0200 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Thu Sep 17 21:34:10 2020 +0200 grid lines: Setup renderBackground only after _painter exists. This fixes setup of many cypress tests. Change-Id: I4eb626050d2d4202104ab01a6aa0b01248ae4eb5 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/102965 Tested-by: Jan Holesovsky <ke...@collabora.com> Reviewed-by: Jan Holesovsky <ke...@collabora.com> diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js b/loleaflet/src/layer/tile/CalcTileLayer.js index 54abd8731..439f0d8cd 100644 --- a/loleaflet/src/layer/tile/CalcTileLayer.js +++ b/loleaflet/src/layer/tile/CalcTileLayer.js @@ -739,67 +739,6 @@ L.CalcTileLayer = BaseTileLayer.extend({ converter: this._twipsToPixels, context: this }); - var that = this; - this._painter.renderBackground = function(canvas, ctx) - { - if (this._layer._debug) - this._canvasCtx.fillStyle = 'rgba(255, 0, 0, 0.5)'; - else - this._canvasCtx.fillStyle = 'white'; // FIXME: sheet bg color - this._canvasCtx.fillRect(0, 0, ctx.canvasSize.x, ctx.canvasSize.y); - - if (that._debug) - canvas.strokeStyle = 'blue'; - else // now fr some grid-lines ... - canvas.strokeStyle = '#c0c0c0'; - canvas.lineWidth = 1.0; - - canvas.beginPath(); - for (var i = 0; i < ctx.paneBoundsList.length; ++i) { - // FIXME: de-duplicate before firing myself: - - // co-ordinates of this pane in core document pixels - var paneBounds = that._cssBoundsToCore(ctx.paneBoundsList[i]); - // co-ordinates of the main-(bottom right) pane in core document pixels - var viewBounds = that._cssBoundsToCore(ctx.viewBounds); - // into real pixel-land ... - paneBounds.round(); - viewBounds.round(); - - var paneOffset = paneBounds.getTopLeft(); // allocates - // Cute way to detect the in-canvas pixel offset of each pane - paneOffset.x = Math.min(paneOffset.x, viewBounds.min.x); - paneOffset.y = Math.min(paneOffset.y, viewBounds.min.y); - - // when using the pinch to zoom, set additional translation based */ - // on the pinch movement - if (that._map._animatingZoom) { - var centerOffset = this._map._getCenterOffset(this._map._animateToCenter); - paneOffset.x += Math.round(centerOffset.x); - paneOffset.y += Math.round(centerOffset.y); - } - - // URGH -> zooming etc. (!?) ... - if (that.sheetGeometry._columns) - that.sheetGeometry._columns.forEachInCorePixelRange( - paneBounds.min.x, paneBounds.max.x, - function(pos) { - canvas.moveTo(pos - paneOffset.x - 0.5, paneBounds.min.y - paneOffset.y - 0.5); - canvas.lineTo(pos - paneOffset.x - 0.5, paneBounds.max.y - paneOffset.y - 0.5); - canvas.stroke(); - }); - - if (that.sheetGeometry._rows) - that.sheetGeometry._rows.forEachInCorePixelRange( - paneBounds.min.y, paneBounds.max.y, - function(pos) { - canvas.moveTo(paneBounds.min.x - paneOffset.x - 0.5, pos - paneOffset.y - 0.5); - canvas.lineTo(paneBounds.max.x - paneOffset.x - 0.5, pos - paneOffset.y - 0.5); - canvas.stroke(); - }); - } - canvas.closePath(); - }; }, _handleSheetGeometryDataMsg: function (jsonMsgObj) { diff --git a/loleaflet/src/layer/tile/CanvasTileLayer.js b/loleaflet/src/layer/tile/CanvasTileLayer.js index 3149ebb6c..4b0123ba2 100644 --- a/loleaflet/src/layer/tile/CanvasTileLayer.js +++ b/loleaflet/src/layer/tile/CanvasTileLayer.js @@ -376,6 +376,8 @@ L.CanvasTileLayer = L.TileLayer.extend({ this._map.on('resize zoomend', this._painter.update, this._painter); this._map.on('splitposchanged', this._painter.update, this._painter); this._map.on('move', this._syncTilePanePos, this); + + this._map.on('viewrowcolumnheaders', this._updateRenderBackground, this); }, _syncTilePanePos: function () { @@ -386,6 +388,70 @@ L.CanvasTileLayer = L.TileLayer.extend({ } }, + _updateRenderBackground: function() { + var that = this; + this._painter.renderBackground = function(canvas, ctx) + { + if (this._layer._debug) + this._canvasCtx.fillStyle = 'rgba(255, 0, 0, 0.5)'; + else + this._canvasCtx.fillStyle = 'white'; // FIXME: sheet bg color + this._canvasCtx.fillRect(0, 0, ctx.canvasSize.x, ctx.canvasSize.y); + + if (that._debug) + canvas.strokeStyle = 'blue'; + else // now fr some grid-lines ... + canvas.strokeStyle = '#c0c0c0'; + canvas.lineWidth = 1.0; + + canvas.beginPath(); + for (var i = 0; i < ctx.paneBoundsList.length; ++i) { + // FIXME: de-duplicate before firing myself: + + // co-ordinates of this pane in core document pixels + var paneBounds = that._cssBoundsToCore(ctx.paneBoundsList[i]); + // co-ordinates of the main-(bottom right) pane in core document pixels + var viewBounds = that._cssBoundsToCore(ctx.viewBounds); + // into real pixel-land ... + paneBounds.round(); + viewBounds.round(); + + var paneOffset = paneBounds.getTopLeft(); // allocates + // Cute way to detect the in-canvas pixel offset of each pane + paneOffset.x = Math.min(paneOffset.x, viewBounds.min.x); + paneOffset.y = Math.min(paneOffset.y, viewBounds.min.y); + + // when using the pinch to zoom, set additional translation based + // on the pinch movement + if (that._map._animatingZoom) { + var centerOffset = this._map._getCenterOffset(this._map._animateToCenter); + paneOffset.x += Math.round(centerOffset.x); + paneOffset.y += Math.round(centerOffset.y); + } + + // URGH -> zooming etc. (!?) ... + if (that.sheetGeometry._columns) + that.sheetGeometry._columns.forEachInCorePixelRange( + paneBounds.min.x, paneBounds.max.x, + function(pos) { + canvas.moveTo(pos - paneOffset.x - 0.5, paneBounds.min.y - paneOffset.y - 0.5); + canvas.lineTo(pos - paneOffset.x - 0.5, paneBounds.max.y - paneOffset.y - 0.5); + canvas.stroke(); + }); + + if (that.sheetGeometry._rows) + that.sheetGeometry._rows.forEachInCorePixelRange( + paneBounds.min.y, paneBounds.max.y, + function(pos) { + canvas.moveTo(paneBounds.min.x - paneOffset.x - 0.5, pos - paneOffset.y - 0.5); + canvas.lineTo(paneBounds.max.x - paneOffset.x - 0.5, pos - paneOffset.y - 0.5); + canvas.stroke(); + }); + } + canvas.closePath(); + }; + }, + hasSplitPanesSupport: function () { // Only enabled for Calc for now // It may work without this.options.sheetGeometryDataEnabled but not tested. _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits