Add clone methods to Tile and Tile.Image, and add associated tests. r=crschmidt (closes #1296)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@5854 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -119,6 +119,30 @@ OpenLayers.Tile = OpenLayers.Class({
|
|||||||
this.events.destroy();
|
this.events.destroy();
|
||||||
this.events = null;
|
this.events = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: clone
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* obj - {<OpenLayers.Tile>} The tile to be cloned
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* {<OpenLayers.Tile>} An exact clone of this <OpenLayers.Tile>
|
||||||
|
*/
|
||||||
|
clone: function (obj) {
|
||||||
|
if (obj == null) {
|
||||||
|
obj = new OpenLayers.Tile(this.layer,
|
||||||
|
this.position,
|
||||||
|
this.bounds,
|
||||||
|
this.url,
|
||||||
|
this.size);
|
||||||
|
}
|
||||||
|
|
||||||
|
// catch any randomly tagged-on properties
|
||||||
|
OpenLayers.Util.applyDefaults(obj, this);
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method: draw
|
* Method: draw
|
||||||
|
|||||||
@@ -91,6 +91,34 @@ OpenLayers.Tile.Image = OpenLayers.Class(OpenLayers.Tile, {
|
|||||||
OpenLayers.Tile.prototype.destroy.apply(this, arguments);
|
OpenLayers.Tile.prototype.destroy.apply(this, arguments);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method: clone
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* obj - {<OpenLayers.Tile.Image>} The tile to be cloned
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* {<OpenLayers.Tile.Image>} An exact clone of this <OpenLayers.Tile.Image>
|
||||||
|
*/
|
||||||
|
clone: function (obj) {
|
||||||
|
if (obj == null) {
|
||||||
|
obj = new OpenLayers.Tile.Image(this.layer,
|
||||||
|
this.position,
|
||||||
|
this.bounds,
|
||||||
|
this.url,
|
||||||
|
this.size);
|
||||||
|
}
|
||||||
|
|
||||||
|
//pick up properties from superclass
|
||||||
|
obj = OpenLayers.Tile.prototype.clone.apply(this, [obj]);
|
||||||
|
|
||||||
|
//dont want to directly copy the image div
|
||||||
|
obj.imgDiv = null;
|
||||||
|
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method: draw
|
* Method: draw
|
||||||
* Check that a tile should be drawn, and draw it.
|
* Check that a tile should be drawn, and draw it.
|
||||||
|
|||||||
@@ -24,7 +24,33 @@
|
|||||||
t.eq( tile.url, url, "tile.url is set correctly");
|
t.eq( tile.url, url, "tile.url is set correctly");
|
||||||
t.ok( tile.size.equals(size), "tile.size is set correctly");
|
t.ok( tile.size.equals(size), "tile.size is set correctly");
|
||||||
}
|
}
|
||||||
function test_02_Tile_Image_draw (t) {
|
|
||||||
|
function test_02_Tile_Image_clone (t) {
|
||||||
|
t.plan( 9 );
|
||||||
|
|
||||||
|
var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
|
||||||
|
"http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'});
|
||||||
|
|
||||||
|
var position = new OpenLayers.Pixel(20,30);
|
||||||
|
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
||||||
|
var url = "http://www.openlayers.org/dev/tests/tileimage";
|
||||||
|
var size = new OpenLayers.Size(5,6);
|
||||||
|
tile = new OpenLayers.Tile.Image(layer, position, bounds, url, size);
|
||||||
|
tile.imgDiv = {};
|
||||||
|
var clone = tile.clone();
|
||||||
|
|
||||||
|
t.ok( clone instanceof OpenLayers.Tile.Image, "OpenLayers.Tile.clone returns Tile.Image object" );
|
||||||
|
t.ok( clone.layer == layer, "clone.layer is set correctly");
|
||||||
|
t.ok( clone.position.equals(position), "clone.position is set correctly");
|
||||||
|
t.ok( clone.bounds.equals(bounds), "clone.bounds is set correctly");
|
||||||
|
t.eq( clone.url, url, "clone.url is set correctly");
|
||||||
|
t.ok( clone.size.equals(size), "clone.size is set correctly");
|
||||||
|
t.ok( clone.frame, "clone has a frame");
|
||||||
|
t.ok( clone.frame != tile.frame, "clone's frame is a new one");
|
||||||
|
t.ok( clone.imgDiv == null, "clone's imgDiv was not copied");
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_03_Tile_Image_draw (t) {
|
||||||
t.plan( 7 );
|
t.plan( 7 );
|
||||||
|
|
||||||
var map = new OpenLayers.Map('map');
|
var map = new OpenLayers.Map('map');
|
||||||
@@ -78,7 +104,7 @@
|
|||||||
tile.draw();
|
tile.draw();
|
||||||
|
|
||||||
}
|
}
|
||||||
function test_03_Tile_Image_OutsideMaxExtent(t) {
|
function test_04_Tile_Image_OutsideMaxExtent(t) {
|
||||||
t.plan( 11 );
|
t.plan( 11 );
|
||||||
var position = new OpenLayers.Pixel(20,30);
|
var position = new OpenLayers.Pixel(20,30);
|
||||||
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
||||||
@@ -160,7 +186,7 @@
|
|||||||
"http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
|
"http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
|
||||||
"Image covering more than all of extent loads");
|
"Image covering more than all of extent loads");
|
||||||
}
|
}
|
||||||
function test_04_Tile_Image_Display_After_Move(t) {
|
function test_05_Tile_Image_Display_After_Move(t) {
|
||||||
t.plan(2);
|
t.plan(2);
|
||||||
var position = new OpenLayers.Pixel(20,30);
|
var position = new OpenLayers.Pixel(20,30);
|
||||||
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
||||||
@@ -185,7 +211,7 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function test_05_Tile_Image_gutters(t) {
|
function test_06_Tile_Image_gutters(t) {
|
||||||
t.plan(5);
|
t.plan(5);
|
||||||
|
|
||||||
var gutter = 0;
|
var gutter = 0;
|
||||||
|
|||||||
@@ -31,6 +31,32 @@
|
|||||||
t.ok( tile.events != null, "tile's events intitialized");
|
t.ok( tile.events != null, "tile's events intitialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_02_Tile_clone (t) {
|
||||||
|
t.plan( 10 );
|
||||||
|
|
||||||
|
var layer = {}; // bogus layer
|
||||||
|
var position = new OpenLayers.Pixel(10,20);
|
||||||
|
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
||||||
|
var url = "bobob";
|
||||||
|
var size = new OpenLayers.Size(5,6);
|
||||||
|
|
||||||
|
tile = new OpenLayers.Tile(layer, position, bounds, url, size);
|
||||||
|
var clone = tile.clone();
|
||||||
|
|
||||||
|
t.ok( clone instanceof OpenLayers.Tile, "OpenLayers.Tile.clone returns Tile object" );
|
||||||
|
t.eq( clone.layer, layer, "clone.layer set correctly");
|
||||||
|
t.ok( clone.position.equals(position), "clone.position set correctly");
|
||||||
|
t.ok( clone.bounds.equals(bounds), "clone.bounds set correctly");
|
||||||
|
t.eq( clone.url, url, "clone.url set correctly");
|
||||||
|
t.ok( clone.size.equals(size), "clone.size is set correctly" );
|
||||||
|
|
||||||
|
t.ok( clone.id != null, "clone is given an id");
|
||||||
|
t.ok( clone.id != tile.id, "clone is given a new id");
|
||||||
|
t.ok(OpenLayers.String.startsWith(clone.id, "Tile_"),
|
||||||
|
"clone's id starts correctly");
|
||||||
|
t.ok( clone.events != null, "clone's events intitialized");
|
||||||
|
}
|
||||||
|
|
||||||
function test_99_Tile_destroy(t) {
|
function test_99_Tile_destroy(t) {
|
||||||
t.plan( 6 );
|
t.plan( 6 );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user