From ac3d05421b35f94341686d44a2492ca8612d2150 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sun, 15 Jul 2012 18:54:05 +0200 Subject: [PATCH] Base ol.Extent on ol.Rectangle instead of goog.math.Box --- src/ol/extent.js | 37 +++++++++++++------------------------ src/ol/extent_test.js | 23 ++++++++++++++++++----- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/ol/extent.js b/src/ol/extent.js index 675122050d..7f9639068f 100644 --- a/src/ol/extent.js +++ b/src/ol/extent.js @@ -1,40 +1,29 @@ goog.provide('ol.Extent'); -goog.require('goog.math.Box'); +goog.require('ol.Rectangle'); goog.require('ol.TransformFunction'); /** * @constructor - * @extends {goog.math.Box} - * @param {number} top Top. - * @param {number} right Right. - * @param {number} bottom Bottom. - * @param {number} left Left. + * @extends {ol.Rectangle} + * @param {number} minX Minimum X. + * @param {number} minY Minimum Y. + * @param {number} maxX Maximum X. + * @param {number} maxY Maximum Y. */ -ol.Extent = function(top, right, bottom, left) { - - goog.base(this, top, right, bottom, left); - +ol.Extent = function(minX, minY, maxX, maxY) { + goog.base(this, minX, minY, maxX, maxY); }; -goog.inherits(ol.Extent, goog.math.Box); +goog.inherits(ol.Extent, ol.Rectangle); /** * @return {ol.Extent} Extent. */ ol.Extent.prototype.clone = function() { - return new ol.Extent(this.top, this.right, this.bottom, this.left); -}; - - -/** - * @return {goog.math.Coordinate} Center. - */ -ol.Extent.prototype.getCenter = function() { - return new goog.math.Coordinate( - (this.left + this.right) / 2, (this.top + this.bottom) / 2); + return new ol.Extent(this.minX, this.minY, this.maxX, this.maxY); }; @@ -43,7 +32,7 @@ ol.Extent.prototype.getCenter = function() { * @return {ol.Extent} Extent. */ ol.Extent.prototype.transform = function(transform) { - var topRight = transform(new goog.math.Coordinate(this.right, this.top)); - var bottomLeft = transform(new goog.math.Coordinate(this.left, this.bottom)); - return new ol.Extent(topRight.y, topRight.x, bottomLeft.y, bottomLeft.x); + var min = transform(new goog.math.Coordinate(this.minX, this.minY)); + var max = transform(new goog.math.Coordinate(this.maxX, this.maxY)); + return new ol.Extent(min.x, min.y, max.x, max.y); }; diff --git a/src/ol/extent_test.js b/src/ol/extent_test.js index a1648c2658..45b8997fed 100644 --- a/src/ol/extent_test.js +++ b/src/ol/extent_test.js @@ -1,16 +1,29 @@ +goog.require('goog.math.Coordinate'); goog.require('goog.testing.jsunit'); goog.require('ol.Extent'); goog.require('ol.Projection'); +function testClone() { + var extent = new ol.Extent(1, 2, 3, 4); + var clonedExtent = extent.clone(); + assertTrue(clonedExtent instanceof ol.Extent); + assertFalse(clonedExtent === extent); + assertEquals(extent.minX, clonedExtent.minX); + assertEquals(extent.minY, clonedExtent.minY); + assertEquals(extent.maxX, clonedExtent.maxX); + assertEquals(extent.maxY, clonedExtent.maxY); +} + + function testTransform() { var transform = ol.Projection.getTransformFromCodes('EPSG:4326', 'EPSG:3857'); - var sourceExtent = new ol.Extent(60, 45, -30, -15); + var sourceExtent = new ol.Extent(-15, -30, 45, 60); var destinationExtent = sourceExtent.transform(transform); assertNotNullNorUndefined(destinationExtent); // FIXME check values with third-party tool - assertRoughlyEquals(8399737.889818361, destinationExtent.top, 1e-9); - assertRoughlyEquals(5009377.085697311, destinationExtent.right, 1e-9); - assertRoughlyEquals(-3503549.843504376, destinationExtent.bottom, 1e-9); - assertRoughlyEquals(-1669792.3618991037, destinationExtent.left, 1e-9); + assertRoughlyEquals(-1669792.3618991037, destinationExtent.minX, 1e-9); + assertRoughlyEquals(-3503549.843504376, destinationExtent.minY, 1e-9); + assertRoughlyEquals(5009377.085697311, destinationExtent.maxX, 1e-9); + assertRoughlyEquals(8399737.889818361, destinationExtent.maxY, 1e-9); }