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 = 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
|
||||
|
||||
@@ -91,6 +91,34 @@ OpenLayers.Tile.Image = OpenLayers.Class(OpenLayers.Tile, {
|
||||
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
|
||||
* 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.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 );
|
||||
|
||||
var map = new OpenLayers.Map('map');
|
||||
@@ -78,7 +104,7 @@
|
||||
tile.draw();
|
||||
|
||||
}
|
||||
function test_03_Tile_Image_OutsideMaxExtent(t) {
|
||||
function test_04_Tile_Image_OutsideMaxExtent(t) {
|
||||
t.plan( 11 );
|
||||
var position = new OpenLayers.Pixel(20,30);
|
||||
var bounds = new OpenLayers.Bounds(1,2,3,4);
|
||||
@@ -160,7 +186,7 @@
|
||||
"http://labs.metacarta.com/wms/vmap0?" + OpenLayers.Util.getParameterString(tParams),
|
||||
"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);
|
||||
var position = new OpenLayers.Pixel(20,30);
|
||||
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);
|
||||
|
||||
var gutter = 0;
|
||||
|
||||
@@ -31,6 +31,32 @@
|
||||
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) {
|
||||
t.plan( 6 );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user