[Libreoffice-commits] online.git: loleaflet/src
Marco Cecchetti
marco.cecchetti at collabora.com
Thu Aug 18 08:10:14 UTC 2016
loleaflet/src/layer/tile/CalcTileLayer.js | 2 -
loleaflet/src/layer/tile/TileLayer.js | 60 ++++++++++++++++++++++++++++++
2 files changed, 61 insertions(+), 1 deletion(-)
New commits:
commit 26fa0651d6a93320b4aa95a558cf6283d0822e7e
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date: Thu Aug 18 10:08:26 2016 +0200
loleaflet: initial support for multiple cursor in Calc
diff --git a/loleaflet/src/layer/tile/CalcTileLayer.js b/loleaflet/src/layer/tile/CalcTileLayer.js
index 1a23681..9989aa8 100644
--- a/loleaflet/src/layer/tile/CalcTileLayer.js
+++ b/loleaflet/src/layer/tile/CalcTileLayer.js
@@ -150,7 +150,7 @@ L.CalcTileLayer = L.TileLayer.extend({
this._docType = command.type;
this._parts = command.parts;
this._selectedPart = command.selectedPart;
- this._viewId = command.viewid;
+ this._viewId = parseInt(command.viewid);
var mapSize = this._map.getSize();
var width = this._docWidthTwips / this._tileWidthTwips * this._tileSize;
var height = this._docHeightTwips / this._tileHeightTwips * this._tileSize;
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 2053b11..3ff8e0e 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -99,6 +99,9 @@ L.TileLayer = L.GridLayer.extend({
// Eg: 1: {rectangle: 'x, y, w, h', visible: false}
this._viewCursors = {};
+ // View cell cursors with viewId to 'cursor info' mapping.
+ this._cellViewCursors = {};
+
this._lastValidPart = -1;
// Cursor marker
this._cursorMarker = null;
@@ -360,6 +363,9 @@ L.TileLayer = L.GridLayer.extend({
else if (textMsg.startsWith('viewcursorvisible:')) {
this._onViewCursorVisibleMsg(textMsg);
}
+ else if (textMsg.startsWith('cellviewcursor:')) {
+ this._onCellViewCursorMsg(textMsg);
+ }
else if (textMsg.startsWith('addview:')) {
this._onAddViewMsg(textMsg);
}
@@ -560,6 +566,60 @@ L.TileLayer = L.GridLayer.extend({
this._onUpdateViewCursor(viewId);
},
+ _onCellViewCursorMsg: function (textMsg) {
+ textMsg = textMsg.substring('cellviewcursor:'.length + 1);
+ var obj = JSON.parse(textMsg);
+ var viewId = parseInt(obj.viewId);
+
+ // Ignore if viewid is same as ours
+ if (viewId === this._viewId) {
+ return;
+ }
+
+ this._cellViewCursors[viewId] = this._cellViewCursors[viewId] || {};
+ if (!this._cellViewCursors[viewId].bounds) {
+ this._cellViewCursors[viewId].bounds = L.LatLngBounds.createDefault();
+ }
+ if (obj.rectangle.match('EMPTY')) {
+ this._cellViewCursors[viewId].bounds = L.LatLngBounds.createDefault();
+ }
+ else {
+ var strTwips = obj.rectangle.match(/\d+/g);
+ var topLeftTwips = new L.Point(parseInt(strTwips[0]), parseInt(strTwips[1]));
+ var offset = new L.Point(parseInt(strTwips[2]), parseInt(strTwips[3]));
+ var bottomRightTwips = topLeftTwips.add(offset);
+ this._cellViewCursors[viewId].bounds = new L.LatLngBounds(
+ this._twipsToLatLng(topLeftTwips, this._map.getZoom()),
+ this._twipsToLatLng(bottomRightTwips, this._map.getZoom()));
+ }
+
+ this._onUpdateCellViewCursor(viewId);
+ },
+
+ _onUpdateCellViewCursor: function (viewId) {
+ if (!this._cellViewCursors[viewId] || !this._cellViewCursors[viewId].bounds)
+ return;
+
+ var cellViewCursorsMarker = this._cellViewCursors[viewId].marker;
+ if (!this._isEmptyRectangle(this._cellViewCursors[viewId].bounds)) {
+
+ if (cellViewCursorsMarker) {
+ this._map.removeLayer(cellViewCursorsMarker);
+ }
+ cellViewCursorsMarker = L.rectangle(this._cellViewCursors[viewId].bounds, {fill: false, color: L.LOUtil.getViewIdHexColor(viewId), weight: 2});
+ if (!cellViewCursorsMarker) {
+ this._map.fire('error', {msg: 'Cell View Cursor marker initialization', cmd: 'cellViewCursor', kind: 'failed', id: 1});
+ return;
+ }
+ this._map.addLayer(cellViewCursorsMarker);
+ }
+ else if (cellViewCursorsMarker) {
+ this._map.removeLayer(cellViewCursorsMarker);
+ }
+
+ this._cellViewCursors[viewId].marker = cellViewCursorsMarker;
+ },
+
_onViewCursorVisibleMsg: function(textMsg) {
textMsg = textMsg.substring('viewcursorvisible:'.length + 1);
var obj = JSON.parse(textMsg);
More information about the Libreoffice-commits
mailing list