Tile.Image.cloneMarkup renamed Tile.Image.createBackBuffer

This commit is contained in:
Éric Lemoine
2011-10-29 12:22:08 +02:00
parent f3e0ac9425
commit c80746b890
5 changed files with 27 additions and 24 deletions
+1 -1
View File
@@ -473,7 +473,7 @@ OpenLayers.Layer.Grid = OpenLayers.Class(OpenLayers.Layer.HTTPRequest, {
backBuffer.style.height = '100%'; backBuffer.style.height = '100%';
for(var i=0, lenI=this.grid.length; i<lenI; i++) { for(var i=0, lenI=this.grid.length; i<lenI; i++) {
for(var j=0, lenJ=this.grid[i].length; j<lenJ; j++) { for(var j=0, lenJ=this.grid[i].length; j<lenJ; j++) {
var tile = this.grid[i][j].cloneMarkup(); var tile = this.grid[i][j].createBackBuffer();
if(!tile) { if(!tile) {
return; return;
} }
+8 -6
View File
@@ -320,21 +320,23 @@ OpenLayers.Tile.Image = OpenLayers.Class(OpenLayers.Tile, {
}, },
/** /**
* Method: cloneMarkup * Method: createBackBuffer
* Clone this tile's markup. * Create a backbuffer for this tile. A backbuffer isn't exactly a clone
* of the tile's markup, because we want to avoid the reloading of the
* image. So we clone the frame, and steal the image from the tile.
* *
* Returns: * Returns:
* {DOMElement} The markup, or undefined if the tile has no image * {DOMElement} The markup, or undefined if the tile has no image
* or if it's currently loading. * or if it's currently loading.
*/ */
cloneMarkup: function() { createBackBuffer: function() {
if(!this.imgDiv || this.isLoading) { if(!this.imgDiv || this.isLoading) {
return; return;
} }
var clone = this.frame.cloneNode(false); var backBuffer = this.frame.cloneNode(false);
clone.appendChild(this.imgDiv); backBuffer.appendChild(this.imgDiv);
this.imgDiv = null; this.imgDiv = null;
return clone; return backBuffer;
}, },
/** /**
+8 -8
View File
@@ -195,19 +195,19 @@ OpenLayers.Tile.Image.IFrame = {
}, },
/** /**
* Method: cloneMarkup * Method: createBackBuffer
* Override cloneMarkup to not attempt cloning when we use an iframe. * Override createBackBuffer to do nothing when we use an iframe. Moving an
* Moving an iframe from one element to another makes it necessary to * iframe from one element to another makes it necessary to reload the iframe
* reload the iframe because its content is lost. So we just give up. * because its content is lost. So we just give up.
* *
* Returns: * Returns:
* {DOMElement} * {DOMElement}
*/ */
cloneMarkup: function() { createBackBuffer: function() {
var clone; var backBuffer;
if(!this.useIFrame) { if(!this.useIFrame) {
clone = OpenLayers.Tile.Image.prototype.cloneMarkup.call(this); backBuffer = OpenLayers.Tile.Image.prototype.createBackBuffer.call(this);
} }
return clone; return backBuffer;
} }
}; };
+5 -5
View File
@@ -983,18 +983,18 @@
map.addLayer(layer); map.addLayer(layer);
map.zoomToMaxExtent(); map.zoomToMaxExtent();
var cloneMarkup = OpenLayers.Tile.Image.prototype.cloneMarkup; var createBackBuffer = OpenLayers.Tile.Image.prototype.createBackBuffer;
var backBuffer; var backBuffer;
OpenLayers.Tile.Image.prototype.cloneMarkup = function() { OpenLayers.Tile.Image.prototype.createBackBuffer = function() {
return; return;
}; };
backBuffer = layer.createBackBuffer(); backBuffer = layer.createBackBuffer();
t.eq(backBuffer, undefined, t.eq(backBuffer, undefined,
'createBackBuffer returns undefined if cloneMarkup returns undefined'); 'createBackBuffer returns undefined if createBackBuffer returns undefined');
OpenLayers.Tile.Image.prototype.cloneMarkup = function() { OpenLayers.Tile.Image.prototype.createBackBuffer = function() {
return document.createElement('div'); return document.createElement('div');
}; };
backBuffer = layer.createBackBuffer(); backBuffer = layer.createBackBuffer();
@@ -1010,7 +1010,7 @@
'second tile has correct top'); 'second tile has correct top');
map.destroy(); map.destroy();
OpenLayers.Tile.Image.prototype.cloneMarkup = cloneMarkup; OpenLayers.Tile.Image.prototype.createBackBuffer = createBackBuffer;
} }
function test_updateBackBufferData(t) { function test_updateBackBufferData(t) {
+5 -4
View File
@@ -317,7 +317,7 @@
map.destroy(); map.destroy();
} }
function test_cloneMarkup(t) { function test_createBackBuffer(t) {
t.plan(3); t.plan(3);
var map = new OpenLayers.Map('map'); var map = new OpenLayers.Map('map');
@@ -328,9 +328,10 @@
var tile = layer.grid[0][0]; var tile = layer.grid[0][0];
tile.isLoading = false; tile.isLoading = false;
var img = tile.imgDiv; var img = tile.imgDiv;
var clone = tile.cloneMarkup(); var bb = tile.createBackBuffer();
t.eq(clone.style.left, tile.frame.style.left, "clone has same left style as frame"); t.eq(bb.style.left, tile.frame.style.left,
t.ok(clone.firstChild === img, "image appended to clone"); "backbuffer has same left style as frame");
t.ok(bb.firstChild === img, "image appended to bb");
t.ok(tile.imgDiv == null, "image reference removed from tile"); t.ok(tile.imgDiv == null, "image reference removed from tile");
map.destroy(); map.destroy();
} }