From eefb909c864620e922415a1491e96669527c109d Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Sat, 18 Jan 2014 20:14:19 +0100 Subject: [PATCH] Remove old ol.geom --- old/src/ol/geom.exports | 29 --- old/src/ol/geom.jsdoc | 3 - old/src/ol/geom/abstractcollection.js | 96 --------- old/src/ol/geom/geometry.js | 82 -------- old/src/ol/geom/geometrycollection.js | 57 ----- old/src/ol/geom/linearring.js | 100 --------- old/src/ol/geom/linestring.js | 134 ------------ old/src/ol/geom/multilinestring.js | 81 ------- old/src/ol/geom/multipoint.js | 62 ------ old/src/ol/geom/multipolygon.js | 81 ------- old/src/ol/geom/point.js | 93 -------- old/src/ol/geom/polygon.js | 198 ------------------ old/test/spec/ol/geom/geometry.test.js | 31 --- .../spec/ol/geom/geometrycollection.test.js | 78 ------- old/test/spec/ol/geom/linearring.test.js | 125 ----------- old/test/spec/ol/geom/linestring.test.js | 101 --------- old/test/spec/ol/geom/multilinestring.test.js | 65 ------ old/test/spec/ol/geom/multipoint.test.js | 86 -------- old/test/spec/ol/geom/multipolygon.test.js | 118 ----------- old/test/spec/ol/geom/point.test.js | 91 -------- old/test/spec/ol/geom/polygon.test.js | 179 ---------------- 21 files changed, 1890 deletions(-) delete mode 100644 old/src/ol/geom.exports delete mode 100644 old/src/ol/geom.jsdoc delete mode 100644 old/src/ol/geom/abstractcollection.js delete mode 100644 old/src/ol/geom/geometry.js delete mode 100644 old/src/ol/geom/geometrycollection.js delete mode 100644 old/src/ol/geom/linearring.js delete mode 100644 old/src/ol/geom/linestring.js delete mode 100644 old/src/ol/geom/multilinestring.js delete mode 100644 old/src/ol/geom/multipoint.js delete mode 100644 old/src/ol/geom/multipolygon.js delete mode 100644 old/src/ol/geom/point.js delete mode 100644 old/src/ol/geom/polygon.js delete mode 100644 old/test/spec/ol/geom/geometry.test.js delete mode 100644 old/test/spec/ol/geom/geometrycollection.test.js delete mode 100644 old/test/spec/ol/geom/linearring.test.js delete mode 100644 old/test/spec/ol/geom/linestring.test.js delete mode 100644 old/test/spec/ol/geom/multilinestring.test.js delete mode 100644 old/test/spec/ol/geom/multipoint.test.js delete mode 100644 old/test/spec/ol/geom/multipolygon.test.js delete mode 100644 old/test/spec/ol/geom/point.test.js delete mode 100644 old/test/spec/ol/geom/polygon.test.js diff --git a/old/src/ol/geom.exports b/old/src/ol/geom.exports deleted file mode 100644 index 1af957868f..0000000000 --- a/old/src/ol/geom.exports +++ /dev/null @@ -1,29 +0,0 @@ -@exportSymbol ol.geom.GeometryType -@exportProperty ol.geom.GeometryType.POINT -@exportProperty ol.geom.GeometryType.LINEAR_RING -@exportProperty ol.geom.GeometryType.LINE_STRING -@exportProperty ol.geom.GeometryType.POLYGON -@exportProperty ol.geom.GeometryType.MULTI_POINT -@exportProperty ol.geom.GeometryType.MULTI_LINE_STRING -@exportProperty ol.geom.GeometryType.MULTI_POLYGON -@exportProperty ol.geom.GeometryType.GEOMETRY_COLLECTION - -@exportSymbol ol.geom.Geometry - -@exportSymbol ol.geom.Point -@exportProperty ol.geom.Point.prototype.getCoordinates - -@exportSymbol ol.geom.LineString -@exportProperty ol.geom.LineString.prototype.getCoordinates - -@exportSymbol ol.geom.Polygon -@exportProperty ol.geom.Polygon.prototype.getCoordinates - -@exportSymbol ol.geom.MultiPoint -@exportProperty ol.geom.MultiPoint.prototype.getCoordinates - -@exportSymbol ol.geom.MultiLineString -@exportProperty ol.geom.MultiLineString.prototype.getCoordinates - -@exportSymbol ol.geom.MultiPolygon -@exportProperty ol.geom.MultiPolygon.prototype.getCoordinates diff --git a/old/src/ol/geom.jsdoc b/old/src/ol/geom.jsdoc deleted file mode 100644 index 1a947e51f3..0000000000 --- a/old/src/ol/geom.jsdoc +++ /dev/null @@ -1,3 +0,0 @@ -/** - * @namespace ol.geom - */ diff --git a/old/src/ol/geom/abstractcollection.js b/old/src/ol/geom/abstractcollection.js deleted file mode 100644 index 32552f262a..0000000000 --- a/old/src/ol/geom/abstractcollection.js +++ /dev/null @@ -1,96 +0,0 @@ -goog.provide('ol.geom.AbstractCollection'); - -goog.require('ol.extent'); -goog.require('ol.geom.Geometry'); - - - -/** - * A collection of geometries. This constructor is not to be used directly. - * - * @constructor - * @extends {ol.geom.Geometry} - */ -ol.geom.AbstractCollection = function() { - goog.base(this); - - /** - * @type {Array.} - * @protected - */ - this.components = null; - - /** - * @type {ol.Extent} - * @protected - */ - this.bounds = null; - -}; -goog.inherits(ol.geom.AbstractCollection, ol.geom.Geometry); - - -/** - * @inheritDoc - */ -ol.geom.AbstractCollection.prototype.getBounds = function() { - if (goog.isNull(this.bounds)) { - var bounds = ol.extent.createEmpty(); - var components = this.components; - for (var i = 0, ii = components.length; i < ii; ++i) { - ol.extent.extend(bounds, components[i].getBounds()); - } - this.bounds = bounds; - } - return this.bounds; -}; - - -/** - * @return {Array.} Components. - */ -ol.geom.AbstractCollection.prototype.getComponents = function() { - return this.components; -}; - - -/** - * @inheritDoc - */ -ol.geom.AbstractCollection.prototype.getCoordinates = function() { - var count = this.components.length; - var coordinates = new Array(count); - for (var i = 0; i < count; ++i) { - coordinates[i] = this.components[i].getCoordinates(); - } - return coordinates; -}; - - -/** - * @inheritDoc - */ -ol.geom.AbstractCollection.prototype.getType = goog.abstractMethod; - - -/** - * Listener for component change events. - * @param {goog.events.Event} evt Change event. - * @protected - */ -ol.geom.AbstractCollection.prototype.handleComponentChange = function(evt) { - this.bounds = null; - this.dispatchChangeEvent(); -}; - - -/** - * @inheritDoc - */ -ol.geom.AbstractCollection.prototype.transform = function(transform) { - var components = this.components; - for (var i = 0, ii = components.length; i < ii; ++i) { - components[i].transform(transform); - } - this.bounds = null; -}; diff --git a/old/src/ol/geom/geometry.js b/old/src/ol/geom/geometry.js deleted file mode 100644 index 5b88f8a264..0000000000 --- a/old/src/ol/geom/geometry.js +++ /dev/null @@ -1,82 +0,0 @@ -goog.provide('ol.geom.Geometry'); -goog.provide('ol.geom.GeometryType'); - -goog.require('goog.events.EventType'); -goog.require('goog.object'); -goog.require('ol.Extent'); -goog.require('ol.Observable'); -goog.require('ol.TransformFunction'); - - -/** - * Geometry types. - * - * @enum {string} - * @todo stability stable - */ -ol.geom.GeometryType = { - POINT: 'Point', - LINE_STRING: 'LineString', - LINEAR_RING: 'LinearRing', - POLYGON: 'Polygon', - MULTI_POINT: 'MultiPoint', - MULTI_LINE_STRING: 'MultiLineString', - MULTI_POLYGON: 'MultiPolygon', - GEOMETRY_COLLECTION: 'GeometryCollection' -}; - - - -/** - * @constructor - * @extends {ol.Observable} - * @todo stability experimental - */ -ol.geom.Geometry = function() { - goog.base(this); -}; -goog.inherits(ol.geom.Geometry, ol.Observable); - - -/** - * Create a clone of this geometry. - * @return {ol.geom.Geometry} The cloned geometry. - */ -ol.geom.Geometry.prototype.clone = function() { - return new this.constructor(goog.object.unsafeClone(this.getCoordinates())); -}; - - -/** - * Get the rectangular 2D envelope for this geoemtry. - * @return {ol.Extent} The bounding rectangular envelope. - */ -ol.geom.Geometry.prototype.getBounds = goog.abstractMethod; - - -/** - * @return {Array} The GeoJSON style coordinates array for the geometry. - */ -ol.geom.Geometry.prototype.getCoordinates = goog.abstractMethod; - - -/** - * Get the geometry type. - * @return {ol.geom.GeometryType} The geometry type. - */ -ol.geom.Geometry.prototype.getType = goog.abstractMethod; - - -/** - * Transform a geometry in place. - * @param {ol.TransformFunction} transform Transform function. - */ -ol.geom.Geometry.prototype.transform = goog.abstractMethod; - - -/** - * Dispatch a generic event with type "change." - */ -ol.geom.Geometry.prototype.dispatchChangeEvent = function() { - this.dispatchEvent(goog.events.EventType.CHANGE); -}; diff --git a/old/src/ol/geom/geometrycollection.js b/old/src/ol/geom/geometrycollection.js deleted file mode 100644 index 463150b006..0000000000 --- a/old/src/ol/geom/geometrycollection.js +++ /dev/null @@ -1,57 +0,0 @@ -goog.provide('ol.geom.GeometryCollection'); - -goog.require('goog.asserts'); -goog.require('goog.events'); -goog.require('goog.events.EventType'); -goog.require('ol.geom.AbstractCollection'); -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.GeometryType'); - - - -/** - * A mixed collection of geometries. Used one of the fixed type multi-part - * constructors for collections of the same type. - * - * @constructor - * @extends {ol.geom.AbstractCollection} - * @param {Array.} geometries Array of geometries. - * @todo stability experimental - */ -ol.geom.GeometryCollection = function(geometries) { - goog.base(this); - - for (var i = geometries.length - 1; i >= 0; --i) { - goog.events.listen(geometries[i], goog.events.EventType.CHANGE, - this.handleComponentChange, false, this); - } - - /** - * @type {Array.} - * @protected - */ - this.components = geometries; - -}; -goog.inherits(ol.geom.GeometryCollection, ol.geom.AbstractCollection); - - -/** - * @inheritDoc - */ -ol.geom.GeometryCollection.prototype.clone = function() { - var numComponents = this.components.length; - var components = new Array(numComponents); - for (var i = 0; i < numComponents; ++i) { - components[i] = this.components[i].clone(); - } - return new ol.geom.GeometryCollection(components); -}; - - -/** - * @inheritDoc - */ -ol.geom.GeometryCollection.prototype.getType = function() { - return ol.geom.GeometryType.GEOMETRYCOLLECTION; -}; diff --git a/old/src/ol/geom/linearring.js b/old/src/ol/geom/linearring.js deleted file mode 100644 index f2e0789b9b..0000000000 --- a/old/src/ol/geom/linearring.js +++ /dev/null @@ -1,100 +0,0 @@ -goog.provide('ol.geom.LinearRing'); - -goog.require('ol.CoordinateArray'); -goog.require('ol.geom.GeometryType'); -goog.require('ol.geom.LineString'); - - - -/** - * @constructor - * @extends {ol.geom.LineString} - * @param {ol.CoordinateArray} coordinates Vertex array (e.g. - * `[[x0, y0], [x1, y1]]`). - * @todo stability experimental - */ -ol.geom.LinearRing = function(coordinates) { - goog.base(this, coordinates); - - /** - * We're intentionally not enforcing that rings be closed right now. This - * will allow proper rendering of data from tiled vector sources that leave - * open rings. - */ - -}; -goog.inherits(ol.geom.LinearRing, ol.geom.LineString); - - -/** - * Determine if a vertex array representing a linear ring is in clockwise - * order. - * - * This method comes from Green's Theorem and was mentioned in an answer to a - * a Stack Overflow question (http://tinyurl.com/clockwise-method). - * - * Note that calculating the cross product for each pair of edges could be - * avoided by first finding the lowest, rightmost vertex. See OGR's - * implementation for an example of this. - * https://github.com/OSGeo/gdal/blob/trunk/gdal/ogr/ogrlinearring.cpp - * - * @param {ol.CoordinateArray} coordinates Linear ring coordinates. - * @return {boolean} The coordinates are in clockwise order. - */ -ol.geom.LinearRing.isClockwise = function(coordinates) { - var length = coordinates.length; - var edge = 0; - - var last = coordinates[length - 1]; - var x1 = last[0]; - var y1 = last[1]; - - var x2, y2, coord; - for (var i = 0; i < length; ++i) { - coord = coordinates[i]; - x2 = coord[0]; - y2 = coord[1]; - edge += (x2 - x1) * (y2 + y1); - x1 = x2; - y1 = y2; - } - return edge > 0; -}; - - -/** - * @inheritDoc - */ -ol.geom.LinearRing.prototype.getType = function() { - return ol.geom.GeometryType.LINEARRING; -}; - - -/** - * Check whether a given coordinate is inside this ring. Note that this is a - * fast and simple check - points on an edge or vertex of the ring are either - * classified inside or outside. - * - * @param {ol.Coordinate} coordinate Coordinate. - * @return {boolean} Whether the coordinate is inside the ring. - */ -ol.geom.LinearRing.prototype.containsCoordinate = function(coordinate) { - // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html - var x = coordinate[0], y = coordinate[1]; - var vertices = this.getCoordinates(); - var inside = false; - var xi, yi, xj, yj, intersect; - var numVertices = vertices.length; - for (var i = 0, j = numVertices - 1; i < numVertices; j = i++) { - xi = vertices[i][0]; - yi = vertices[i][1]; - xj = vertices[j][0]; - yj = vertices[j][1]; - intersect = ((yi > y) != (yj > y)) && - (x < (xj - xi) * (y - yi) / (yj - yi) + xi); - if (intersect) { - inside = !inside; - } - } - return inside; -}; diff --git a/old/src/ol/geom/linestring.js b/old/src/ol/geom/linestring.js deleted file mode 100644 index 3eeae4d84e..0000000000 --- a/old/src/ol/geom/linestring.js +++ /dev/null @@ -1,134 +0,0 @@ -goog.provide('ol.geom.LineString'); - -goog.require('goog.asserts'); -goog.require('ol.CoordinateArray'); -goog.require('ol.coordinate'); -goog.require('ol.extent'); -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.GeometryType'); - - - -/** - * @constructor - * @extends {ol.geom.Geometry} - * @param {ol.CoordinateArray} coordinates Array of coordinates (e.g. - * `[[x0, y0], [x1, y1]]`). - * @todo stability experimental - */ -ol.geom.LineString = function(coordinates) { - goog.base(this); - goog.asserts.assert(goog.isArray(coordinates[0])); - - /** - * Array of coordinates. - * @type {ol.CoordinateArray} - * @private - */ - this.coordinates_ = coordinates; - - /** - * @type {ol.Extent} - * @private - */ - this.bounds_ = null; - -}; -goog.inherits(ol.geom.LineString, ol.geom.Geometry); - - -/** - * Get a vertex coordinate value for the given dimension. - * @param {number} index Vertex index. - * @param {number} dim Coordinate dimension. - * @return {number} The vertex coordinate value. - */ -ol.geom.LineString.prototype.get = function(index, dim) { - var coordinates = this.getCoordinates(); - goog.asserts.assert(coordinates.length > index); - return coordinates[index][dim]; -}; - - -/** - * @inheritDoc - * @return {ol.CoordinateArray} Coordinates array. - */ -ol.geom.LineString.prototype.getCoordinates = function() { - return this.coordinates_; -}; - - -/** - * Get the count of vertices in this linestring. - * @return {number} The vertex count. - */ -ol.geom.LineString.prototype.getCount = function() { - return this.getCoordinates().length; -}; - - -/** - * @inheritDoc - */ -ol.geom.LineString.prototype.getBounds = function() { - if (goog.isNull(this.bounds_)) { - var coordinates = this.getCoordinates(); - var extent = ol.extent.createEmpty(); - for (var i = 0, ii = coordinates.length; i < ii; ++i) { - ol.extent.extendCoordinate(extent, coordinates[i]); - } - this.bounds_ = extent; - } - return this.bounds_; -}; - - -/** - * @inheritDoc - */ -ol.geom.LineString.prototype.getType = function() { - return ol.geom.GeometryType.LINE_STRING; -}; - - -/** - * Calculate the distance from a coordinate to this linestring. - * - * @param {ol.Coordinate} coordinate Coordinate. - * @return {number} Distance from the coordinate to this linestring. - */ -ol.geom.LineString.prototype.distanceFromCoordinate = function(coordinate) { - var coordinates = this.getCoordinates(); - var dist2 = Infinity; - for (var i = 0, j = 1, len = coordinates.length; j < len; i = j++) { - dist2 = Math.min(dist2, ol.coordinate.squaredDistanceToSegment(coordinate, - [coordinates[i], coordinates[j]])); - } - return Math.sqrt(dist2); -}; - - -/** - * Update the linestring coordinates. - * @param {ol.CoordinateArray} coordinates Coordinates array. - */ -ol.geom.LineString.prototype.setCoordinates = function(coordinates) { - this.bounds_ = null; - this.coordinates_ = coordinates; - this.dispatchChangeEvent(); -}; - - -/** - * @inheritDoc - */ -ol.geom.LineString.prototype.transform = function(transform) { - var coordinates = this.getCoordinates(); - var coord; - for (var i = 0, ii = coordinates.length; i < ii; ++i) { - coord = coordinates[i]; - transform(coord, coord, coord.length); - } - this.setCoordinates(coordinates); // for invalidating bounds -}; diff --git a/old/src/ol/geom/multilinestring.js b/old/src/ol/geom/multilinestring.js deleted file mode 100644 index 0f5d0f9955..0000000000 --- a/old/src/ol/geom/multilinestring.js +++ /dev/null @@ -1,81 +0,0 @@ -goog.provide('ol.geom.MultiLineString'); - -goog.require('goog.asserts'); -goog.require('goog.events'); -goog.require('goog.events.EventType'); -goog.require('ol.CoordinateArray'); -goog.require('ol.geom.AbstractCollection'); -goog.require('ol.geom.GeometryType'); -goog.require('ol.geom.LineString'); - - - -/** - * @constructor - * @extends {ol.geom.AbstractCollection} - * @param {Array.} coordinates Coordinates array. - * @todo stability experimental - */ -ol.geom.MultiLineString = function(coordinates) { - goog.base(this); - goog.asserts.assert(goog.isArray(coordinates[0][0])); - - var numParts = coordinates.length; - - /** - * @type {Array.} - * @protected - */ - this.components = new Array(numParts); - for (var i = 0; i < numParts; ++i) { - var component = new ol.geom.LineString(coordinates[i]); - this.components[i] = component; - goog.events.listen(component, goog.events.EventType.CHANGE, - this.handleComponentChange, false, this); - } - -}; -goog.inherits(ol.geom.MultiLineString, ol.geom.AbstractCollection); - - -/** - * @inheritDoc - */ -ol.geom.MultiLineString.prototype.getType = function() { - return ol.geom.GeometryType.MULTILINESTRING; -}; - - -/** - * Calculate the distance from a coordinate to this multilinestring. This is - * the closest distance of the coordinate to one of this multilinestring's - * components.< - * - * @param {ol.Coordinate} coordinate Coordinate. - * @return {number} Distance from the coordinate to this multilinestring. - */ -ol.geom.MultiLineString.prototype.distanceFromCoordinate = - function(coordinate) { - var distance = Infinity; - for (var i = 0, ii = this.components.length; i < ii; ++i) { - distance = Math.min(distance, - this.components[i].distanceFromCoordinate(coordinate)); - } - return distance; -}; - - -/** - * Create a multi-linestring geometry from an array of linestring geometries. - * - * @param {Array.} geometries Array of geometries. - * @return {ol.geom.MultiLineString} A new geometry. - */ -ol.geom.MultiLineString.fromParts = function(geometries) { - var count = geometries.length; - var coordinates = new Array(count); - for (var i = 0; i < count; ++i) { - coordinates[i] = geometries[i].getCoordinates(); - } - return new ol.geom.MultiLineString(coordinates); -}; diff --git a/old/src/ol/geom/multipoint.js b/old/src/ol/geom/multipoint.js deleted file mode 100644 index 850367e1fd..0000000000 --- a/old/src/ol/geom/multipoint.js +++ /dev/null @@ -1,62 +0,0 @@ -goog.provide('ol.geom.MultiPoint'); - -goog.require('goog.asserts'); -goog.require('goog.events'); -goog.require('goog.events.EventType'); -goog.require('ol.CoordinateArray'); -goog.require('ol.geom.AbstractCollection'); -goog.require('ol.geom.GeometryType'); -goog.require('ol.geom.Point'); - - - -/** - * @constructor - * @extends {ol.geom.AbstractCollection} - * @param {ol.CoordinateArray} coordinates Coordinates array. - * @todo stability experimental - */ -ol.geom.MultiPoint = function(coordinates) { - goog.base(this); - goog.asserts.assert(goog.isArray(coordinates[0])); - - var numParts = coordinates.length; - - /** - * @type {Array.} - * @protected - */ - this.components = new Array(numParts); - for (var i = 0; i < numParts; ++i) { - var component = new ol.geom.Point(coordinates[i]); - this.components[i] = component; - goog.events.listen(component, goog.events.EventType.CHANGE, - this.handleComponentChange, false, this); - } - -}; -goog.inherits(ol.geom.MultiPoint, ol.geom.AbstractCollection); - - -/** - * @inheritDoc - */ -ol.geom.MultiPoint.prototype.getType = function() { - return ol.geom.GeometryType.MULTIPOINT; -}; - - -/** - * Create a multi-point geometry from an array of point geometries. - * - * @param {Array.} geometries Array of geometries. - * @return {ol.geom.MultiPoint} A new geometry. - */ -ol.geom.MultiPoint.fromParts = function(geometries) { - var count = geometries.length; - var coordinates = new Array(count); - for (var i = 0; i < count; ++i) { - coordinates[i] = geometries[i].getCoordinates(); - } - return new ol.geom.MultiPoint(coordinates); -}; diff --git a/old/src/ol/geom/multipolygon.js b/old/src/ol/geom/multipolygon.js deleted file mode 100644 index d8f8066436..0000000000 --- a/old/src/ol/geom/multipolygon.js +++ /dev/null @@ -1,81 +0,0 @@ -goog.provide('ol.geom.MultiPolygon'); - -goog.require('goog.asserts'); -goog.require('goog.events'); -goog.require('goog.events.EventType'); -goog.require('ol.CoordinateArray'); -goog.require('ol.geom.AbstractCollection'); -goog.require('ol.geom.GeometryType'); -goog.require('ol.geom.Polygon'); - - - -/** - * @constructor - * @extends {ol.geom.AbstractCollection} - * @param {Array.>} coordinates Coordinates - * array. - * @todo stability experimental - */ -ol.geom.MultiPolygon = function(coordinates) { - goog.base(this); - goog.asserts.assert(goog.isArray(coordinates[0][0][0])); - - var numParts = coordinates.length; - - /** - * @type {Array.} - * @protected - */ - this.components = new Array(numParts); - for (var i = 0; i < numParts; ++i) { - var component = new ol.geom.Polygon(coordinates[i]); - this.components[i] = component; - goog.events.listen(component, goog.events.EventType.CHANGE, - this.handleComponentChange, false, this); - } - -}; -goog.inherits(ol.geom.MultiPolygon, ol.geom.AbstractCollection); - - -/** - * @inheritDoc - */ -ol.geom.MultiPolygon.prototype.getType = function() { - return ol.geom.GeometryType.MULTIPOLYGON; -}; - - -/** - * Check whether a given coordinate is inside this multipolygon. - * - * @param {ol.Coordinate} coordinate Coordinate. - * @return {boolean} Whether the coordinate is inside the multipolygon. - */ -ol.geom.MultiPolygon.prototype.containsCoordinate = function(coordinate) { - var containsCoordinate = false; - for (var i = 0, ii = this.components.length; i < ii; ++i) { - if (this.components[i].containsCoordinate(coordinate)) { - containsCoordinate = true; - break; - } - } - return containsCoordinate; -}; - - -/** - * Create a multi-polygon geometry from an array of polygon geometries. - * - * @param {Array.} geometries Array of geometries. - * @return {ol.geom.MultiPolygon} A new geometry. - */ -ol.geom.MultiPolygon.fromParts = function(geometries) { - var count = geometries.length; - var coordinates = new Array(count); - for (var i = 0; i < count; ++i) { - coordinates[i] = geometries[i].getCoordinates(); - } - return new ol.geom.MultiPolygon(coordinates); -}; diff --git a/old/src/ol/geom/point.js b/old/src/ol/geom/point.js deleted file mode 100644 index 713b6f19d9..0000000000 --- a/old/src/ol/geom/point.js +++ /dev/null @@ -1,93 +0,0 @@ -goog.provide('ol.geom.Point'); - -goog.require('goog.asserts'); -goog.require('ol.Coordinate'); -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.GeometryType'); - - - -/** - * @constructor - * @extends {ol.geom.Geometry} - * @param {ol.Coordinate} coordinates Coordinate values (e.g. `[x, y]`). - * @todo stability experimental - */ -ol.geom.Point = function(coordinates) { - goog.base(this); - - /** - * Point coordinate values. - * @type {ol.Coordinate} - * @private - */ - this.coordinates_ = coordinates; - - /** - * @type {ol.Extent} - * @private - */ - this.bounds_ = null; - -}; -goog.inherits(ol.geom.Point, ol.geom.Geometry); - - -/** - * @param {number} dim Coordinate dimension. - * @return {number} The coordinate value. - */ -ol.geom.Point.prototype.get = function(dim) { - return this.getCoordinates()[dim]; -}; - - -/** - * @inheritDoc - */ -ol.geom.Point.prototype.getBounds = function() { - if (goog.isNull(this.bounds_)) { - var x = this.get(0), - y = this.get(1); - this.bounds_ = [x, y, x, y]; - } - return this.bounds_; -}; - - -/** - * @inheritDoc - * @return {ol.Coordinate} Coordinates array. - */ -ol.geom.Point.prototype.getCoordinates = function() { - return this.coordinates_; -}; - - -/** - * @inheritDoc - */ -ol.geom.Point.prototype.getType = function() { - return ol.geom.GeometryType.POINT; -}; - - -/** - * Update the point coordinates. - * @param {ol.Coordinate} coordinates Coordinates array. - */ -ol.geom.Point.prototype.setCoordinates = function(coordinates) { - this.bounds_ = null; - this.coordinates_ = coordinates; - this.dispatchChangeEvent(); -}; - - -/** - * @inheritDoc - */ -ol.geom.Point.prototype.transform = function(transform) { - var coordinates = this.getCoordinates(); - transform(coordinates, coordinates, coordinates.length); - this.setCoordinates(coordinates); // for invalidating bounds -}; diff --git a/old/src/ol/geom/polygon.js b/old/src/ol/geom/polygon.js deleted file mode 100644 index 78eede62f9..0000000000 --- a/old/src/ol/geom/polygon.js +++ /dev/null @@ -1,198 +0,0 @@ -goog.provide('ol.geom.Polygon'); - -goog.require('goog.asserts'); -goog.require('goog.events'); -goog.require('goog.events.EventType'); -goog.require('ol.CoordinateArray'); -goog.require('ol.extent'); -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.GeometryType'); -goog.require('ol.geom.LinearRing'); - - - -/** - * Create a polygon from an array of vertex arrays. Coordinates for the - * exterior ring will be forced to clockwise order. Coordinates for any - * interior rings will be forced to counter-clockwise order. In cases where - * the opposite winding order occurs in the passed vertex arrays, they will - * be modified in place. - * - * @constructor - * @extends {ol.geom.Geometry} - * @param {Array.} coordinates Array of rings. First - * is outer, any remaining are inner. - * @todo stability experimental - */ -ol.geom.Polygon = function(coordinates) { - goog.base(this); - goog.asserts.assert(goog.isArray(coordinates[0][0])); - - /** - * @private - * @type {ol.Coordinate} - */ - this.labelPoint_ = null; - - var numRings = coordinates.length; - - /** - * @type {Array.} - * @private - */ - this.rings_ = new Array(numRings); - var ringCoords, ring; - for (var i = 0; i < numRings; ++i) { - ringCoords = coordinates[i]; - if (i === 0) { - // force exterior ring to be clockwise - if (!ol.geom.LinearRing.isClockwise(ringCoords)) { - ringCoords.reverse(); - } - } else { - // force interior rings to be counter-clockwise - if (ol.geom.LinearRing.isClockwise(ringCoords)) { - ringCoords.reverse(); - } - } - ring = new ol.geom.LinearRing(ringCoords); - goog.events.listen(ring, goog.events.EventType.CHANGE, - this.handleRingChange_, false, this); - this.rings_[i] = ring; - } - -}; -goog.inherits(ol.geom.Polygon, ol.geom.Geometry); - - -/** - * @inheritDoc - */ -ol.geom.Polygon.prototype.getBounds = function() { - return this.rings_[0].getBounds(); -}; - - -/** - * @return {Array.} Coordinates array. - * @todo stability experimental - */ -ol.geom.Polygon.prototype.getCoordinates = function() { - var count = this.rings_.length; - var coordinates = new Array(count); - for (var i = 0; i < count; ++i) { - coordinates[i] = this.rings_[i].getCoordinates(); - } - return coordinates; -}; - - -/** - * @inheritDoc - */ -ol.geom.Polygon.prototype.getType = function() { - return ol.geom.GeometryType.POLYGON; -}; - - -/** - * Get polygon rings. - * @return {Array.} Array of rings. The first ring is the - * exterior and any additional rings are interior. - */ -ol.geom.Polygon.prototype.getRings = function() { - return this.rings_; -}; - - -/** - * Listener for ring change events. - * @param {goog.events.Event} evt Change event. - * @private - */ -ol.geom.Polygon.prototype.handleRingChange_ = function(evt) { - this.dispatchChangeEvent(); -}; - - -/** - * Check whether a given coordinate is inside this polygon. Note that this is a - * fast and simple check - points on an edge or vertex of the polygon or one of - * its inner rings are either classified inside or outside. - * - * @param {ol.Coordinate} coordinate Coordinate. - * @return {boolean} Whether the coordinate is inside the polygon. - */ -ol.geom.Polygon.prototype.containsCoordinate = function(coordinate) { - var rings = this.rings_; - /** @type {boolean} */ - var containsCoordinate; - for (var i = 0, ii = rings.length; i < ii; ++i) { - containsCoordinate = rings[i].containsCoordinate(coordinate); - // if inner ring (i > 0) contains coordinate, polygon does not contain it - if (i > 0) { - containsCoordinate = !containsCoordinate; - } - if (!containsCoordinate) { - break; - } - } - return containsCoordinate; -}; - - -/** - * Calculates a point that is guaranteed to lie in the interior of the polygon. - * Inspired by JTS's com.vividsolutions.jts.geom.Geometry#getInteriorPoint. - * @return {ol.Coordinate} A point which is in the interior of the polygon. - */ -ol.geom.Polygon.prototype.getInteriorPoint = function() { - if (goog.isNull(this.labelPoint_)) { - var center = ol.extent.getCenter(this.getBounds()), - resultY = center[1], - vertices = this.rings_[0].getCoordinates(), - intersections = [], - maxLength = 0, - i, vertex1, vertex2, x, segmentLength, resultX; - - // Calculate intersections with the horizontal bounding box center line - for (i = vertices.length - 1; i >= 1; --i) { - vertex1 = vertices[i]; - vertex2 = vertices[i - 1]; - if ((vertex1[1] >= resultY && vertex2[1] <= resultY) || - (vertex1[1] <= resultY && vertex2[1] >= resultY)) { - x = (resultY - vertex1[1]) / (vertex2[1] - vertex1[1]) * - (vertex2[0] - vertex1[0]) + vertex1[0]; - intersections.push(x); - } - } - - // Find the longest segment of the horizontal bounding box center line that - // has its center point inside the polygon - intersections.sort(); - for (i = intersections.length - 1; i >= 1; --i) { - segmentLength = Math.abs(intersections[i] - intersections[i - 1]); - if (segmentLength > maxLength) { - x = (intersections[i] + intersections[i - 1]) / 2; - if (this.containsCoordinate([x, resultY])) { - maxLength = segmentLength; - resultX = x; - } - } - } - this.labelPoint_ = [resultX, resultY]; - } - - return this.labelPoint_; -}; - - -/** - * @inheritDoc - */ -ol.geom.Polygon.prototype.transform = function(transform) { - var rings = this.rings_; - for (var i = 0, ii = rings.length; i < ii; ++i) { - rings[i].transform(transform); - } -}; diff --git a/old/test/spec/ol/geom/geometry.test.js b/old/test/spec/ol/geom/geometry.test.js deleted file mode 100644 index 298e6564b0..0000000000 --- a/old/test/spec/ol/geom/geometry.test.js +++ /dev/null @@ -1,31 +0,0 @@ -goog.provide('ol.test.geom.Geometry'); - -describe('ol.geom.Geometry', function() { - - describe('constructor', function() { - it('creates a new geometry', function() { - var geom = new ol.geom.Geometry(); - expect(geom).to.be.a(ol.geom.Geometry); - expect(geom).to.be.a(ol.Observable); - }); - }); - - describe('#clone()', function() { - it('clones a geometry', function() { - var line = new ol.geom.LineString([[0, 0], [1, 1]]); - var clone = line.clone(); - expect(clone.getCoordinates().length).to.be(2); - expect(clone.getCoordinates()[0]).to.eql(line.getCoordinates()[0]); - expect(clone.getCoordinates()[0]).to.not.be(line.getCoordinates()[0]); - var coordinates = clone.getCoordinates(); - coordinates[0] = [2, 2]; - clone.setCoordinates(coordinates); - expect(clone.getCoordinates()[0]).to.not.eql(line.getCoordinates()[0]); - }); - }); - -}); - -goog.require('ol.Observable'); -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.LineString'); diff --git a/old/test/spec/ol/geom/geometrycollection.test.js b/old/test/spec/ol/geom/geometrycollection.test.js deleted file mode 100644 index cf122ddb09..0000000000 --- a/old/test/spec/ol/geom/geometrycollection.test.js +++ /dev/null @@ -1,78 +0,0 @@ -goog.provide('ol.test.geom.GeometryCollection'); - -describe('ol.geom.GeometryCollection', function() { - - var outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]], - inner1 = [[1, 1], [2, 1], [2, 2], [1, 2], [1, 1]], - inner2 = [[8, 8], [9, 8], [9, 9], [8, 9], [8, 8]]; - - describe('constructor', function() { - - - it('creates a geometry collection from an array of geometries', function() { - var point = new ol.geom.Point([10, 20]); - var line = new ol.geom.LineString([[10, 20], [30, 40]]); - var poly = new ol.geom.Polygon([outer, inner1, inner2]); - var multi = new ol.geom.GeometryCollection([point, line, poly]); - expect(multi).to.be.a(ol.geom.GeometryCollection); - expect(multi).to.be.a(ol.geom.Geometry); - }); - - }); - - describe('#components', function() { - - it('is an array of geometries', function() { - var point = new ol.geom.Point([10, 20]); - var line = new ol.geom.LineString([[10, 20], [30, 40]]); - var poly = new ol.geom.Polygon([outer, inner1, inner2]); - var multi = new ol.geom.GeometryCollection([point, line, poly]); - - var components = multi.getComponents(); - expect(components.length).to.be(3); - expect(components[0]).to.be.a(ol.geom.Point); - expect(components[1]).to.be.a(ol.geom.LineString); - expect(components[2]).to.be.a(ol.geom.Polygon); - }); - - }); - - describe('#clone()', function() { - - it('has a working clone method', function() { - var point = new ol.geom.Point([10, 20]); - var line = new ol.geom.LineString([[10, 20], [30, 40]]); - var poly = new ol.geom.Polygon([outer, inner1, inner2]); - var multi = new ol.geom.GeometryCollection([point, line, poly]); - var clone = multi.clone(); - expect(clone).to.not.be(multi); - var components = clone.getComponents(); - expect(components[0].getCoordinates()).to.eql([10, 20]); - expect(components[1].getCoordinates()).to.eql([[10, 20], [30, 40]]); - expect(components[2].getCoordinates()).to.eql([outer, inner1, inner2]); - }); - - }); - - describe('#getBounds()', function() { - - it('returns the bounding extent', function() { - var point = new ol.geom.Point([10, 2]); - var line = new ol.geom.LineString([[1, 20], [30, 40]]); - var multi = new ol.geom.GeometryCollection([point, line]); - var bounds = multi.getBounds(); - expect(bounds[0]).to.be(1); - expect(bounds[2]).to.be(30); - expect(bounds[1]).to.be(2); - expect(bounds[3]).to.be(40); - }); - - }); - -}); - -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.GeometryCollection'); -goog.require('ol.geom.LineString'); -goog.require('ol.geom.Point'); -goog.require('ol.geom.Polygon'); diff --git a/old/test/spec/ol/geom/linearring.test.js b/old/test/spec/ol/geom/linearring.test.js deleted file mode 100644 index 42fba0a33f..0000000000 --- a/old/test/spec/ol/geom/linearring.test.js +++ /dev/null @@ -1,125 +0,0 @@ -goog.provide('ol.test.geom.LinearRing'); - -describe('ol.geom.LinearRing', function() { - - describe('constructor', function() { - - it('creates a ring from an array', function() { - var ring = new ol.geom.LinearRing([[10, 20], [30, 40]]); - expect(ring).to.be.a(ol.geom.LinearRing); - }); - - }); - - describe('#getCoordinates()', function() { - - it('is an array', function() { - var ring = new ol.geom.LinearRing([[10, 20], [30, 40]]); - expect(ring.getCoordinates()).to.eql([[10, 20], [30, 40]]); - }); - - }); - - describe('#containsCoordinate()', function() { - - it('knows when a point coordinate is inside a ring', function() { - /** - * The ring: - * edge 3 - * (5, 10) __________ (15, 10) - * / / - * edge 4 / / edge 2 - * / / - * (0, 0) /_________/ (10, 0) - * edge 1 - */ - var ring = new ol.geom.LinearRing( - [[0, 0], [10, 0], [15, 10], [5, 10]]); - - // contains: 1 (touches - not implemented), true (within), false (outside) - var cases = [{ - point: [5, 5], contains: true - }, { - point: [20, 20], contains: false - }, { - point: [15, 15], contains: false - }/*, { - point: [0, 0], contains: 1 // lower left corner - }, { - point: [10, 0], contains: 1 // lower right corner - }, { - point: [15, 10], contains: 1 // upper right corner - }, { - point: [5, 10], contains: 1 // upper left corner - }, { - point: [5, 0], contains: 1 // on edge 1 - }*/, { - point: [5, -0.1], contains: false // below edge 1 - }, { - point: [5, 0.1], contains: true // above edge 1 - }/*, { - point: [12.5, 5], contains: 1 // on edge 2 - }*/, { - point: [12.4, 5], contains: true // left of edge 2 - }, { - point: [12.6, 5], contains: false // right of edge 2 - }/*, { - point: [10, 10], contains: 1 // on edge 3 - }*/, { - point: [10, 9.9], contains: true // below edge 3 - }, { - point: [10, 10.1], contains: false // above edge 3 - }/*, { - point: [2.5, 5], contains: 1 // on edge 4 - }*/, { - point: [2.4, 5], contains: false // left of edge 4 - }, { - point: [2.6, 5], contains: true // right of edge 4 - }]; - - var c; - for (var i = 0, ii = cases.length; i < ii; ++i) { - c = cases[i]; - expect(ring.containsCoordinate(c.point)).to.be(c.contains); - } - }); - }); - -}); - -describe('ol.geom.LinearRing.isClockwise()', function() { - - var isClockwise = ol.geom.LinearRing.isClockwise; - - it('returns true for clockwise coordinates', function() { - var coordinates = [ - [0, 0], [0, 1], [1, 1], [1, 0], [0, 0] - ]; - expect(isClockwise(coordinates)).to.be(true); - }); - - it('returns false for counter-clockwise coordinates', function() { - var coordinates = [ - [0, 0], [1, 0], [1, 1], [0, 1], [0, 0] - ]; - expect(isClockwise(coordinates)).to.be(false); - }); - - it('returns true for mostly clockwise, self-intersecting ring', function() { - var coordinates = [ - [0, 0], [0, 1], [1.5, 1], [1.5, 1.5], [1, 1.5], [1, 0], [0, 0] - ]; - expect(isClockwise(coordinates)).to.be(true); - }); - - it('returns false for mostly counter-clockwise, intersecting', function() { - var coordinates = [ - [0, 0], [1, 0], [1, 1.5], [1.5, 1.5], [1.5, 1], [0, 1], [0, 0] - ]; - expect(isClockwise(coordinates)).to.be(false); - }); - -}); - - -goog.require('ol.geom.LinearRing'); diff --git a/old/test/spec/ol/geom/linestring.test.js b/old/test/spec/ol/geom/linestring.test.js deleted file mode 100644 index a4e4c2275f..0000000000 --- a/old/test/spec/ol/geom/linestring.test.js +++ /dev/null @@ -1,101 +0,0 @@ -goog.provide('ol.test.geom.LineString'); - -describe('ol.geom.LineString', function() { - - describe('constructor', function() { - - it('creates a linestring from an array', function() { - var line = new ol.geom.LineString([[10, 20], [30, 40]]); - expect(line).to.be.a(ol.geom.LineString); - expect(line).to.be.a(ol.geom.Geometry); - }); - - }); - - describe('#getBounds()', function() { - - it('returns the bounding extent', function() { - var line = new ol.geom.LineString([[10, 20], [20, 30], [30, 40]]); - var bounds = line.getBounds(); - expect(bounds[0]).to.be(10); - expect(bounds[2]).to.be(30); - expect(bounds[1]).to.be(20); - expect(bounds[3]).to.be(40); - }); - - }); - - describe('#getCoordinates', function() { - - it('returns an array', function() { - var line = new ol.geom.LineString([[10, 20], [30, 40]]); - expect(line.getCoordinates()).to.eql([[10, 20], [30, 40]]); - }); - - }); - - describe('#setCoordinates()', function() { - - it('updates the coordinates', function() { - var line = new ol.geom.LineString([[10, 20], [30, 40]]); - line.setCoordinates([[30, 40], [50, 60]]); - expect(line.getCoordinates()).to.eql([[30, 40], [50, 60]]); - }); - - it('invalidates bounds', function() { - var line = new ol.geom.LineString([[10, 20], [30, 40]]); - line.setCoordinates([[30, 40], [50, 60]]); - expect(line.getBounds()).to.eql([30, 40, 50, 60]); - }); - - it('triggers a change event', function(done) { - var line = new ol.geom.LineString([[10, 20], [30, 40]]); - expect(line.getBounds()).to.eql([10, 20, 30, 40]); - goog.events.listen(line, 'change', function(evt) { - expect(evt.target).to.equal(line); - expect(evt.target.getBounds()).to.eql([30, 40, 50, 60]); - expect(evt.target.getCoordinates()).to.eql([[30, 40], [50, 60]]); - done(); - }); - line.setCoordinates([[30, 40], [50, 60]]); - }); - - }); - - describe('#transform()', function() { - - var forward = ol.proj.getTransform('EPSG:4326', 'EPSG:3857'); - var inverse = ol.proj.getTransform('EPSG:3857', 'EPSG:4326'); - - it('forward transforms a linestring in place', function() { - var line = new ol.geom.LineString([[10, 20], [20, 30], [30, 40]]); - line.transform(forward); - expect(line.get(0, 0)).to.roughlyEqual(1113195, 1); - expect(line.get(0, 1)).to.roughlyEqual(2273031, 1); - expect(line.get(1, 0)).to.roughlyEqual(2226390, 1); - expect(line.get(1, 1)).to.roughlyEqual(3503550, 1); - expect(line.get(2, 0)).to.roughlyEqual(3339585, 1); - expect(line.get(2, 1)).to.roughlyEqual(4865942, 1); - }); - - it('inverse transforms a linestring in place', function() { - var line = new ol.geom.LineString([ - [1113195, 2273031], [2226390, 3503550], [3339585, 4865942] - ]); - line.transform(inverse); - expect(line.get(0, 0)).to.roughlyEqual(10, 0.001); - expect(line.get(0, 1)).to.roughlyEqual(20, 0.001); - expect(line.get(1, 0)).to.roughlyEqual(20, 0.001); - expect(line.get(1, 1)).to.roughlyEqual(30, 0.001); - expect(line.get(2, 0)).to.roughlyEqual(30, 0.001); - expect(line.get(2, 1)).to.roughlyEqual(40, 0.001); - }); - - }); - -}); - -goog.require('goog.events'); -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.LineString'); -goog.require('ol.proj'); diff --git a/old/test/spec/ol/geom/multilinestring.test.js b/old/test/spec/ol/geom/multilinestring.test.js deleted file mode 100644 index 946ce304a8..0000000000 --- a/old/test/spec/ol/geom/multilinestring.test.js +++ /dev/null @@ -1,65 +0,0 @@ -goog.provide('ol.test.geom.MultiLineString'); - -describe('ol.geom.MultiLineString', function() { - - describe('constructor', function() { - - it('creates a multi-linestring from an array', function() { - var multi = new ol.geom.MultiLineString([ - [[10, 20], [30, 40]], - [[20, 30], [40, 50]]]); - expect(multi).to.be.a(ol.geom.MultiLineString); - expect(multi).to.be.a(ol.geom.Geometry); - }); - - }); - - describe('#components', function() { - - it('is an array of linestrings', function() { - var multi = new ol.geom.MultiLineString([ - [[10, 20], [30, 40]], - [[20, 30], [40, 50]]]); - - var components = multi.getComponents(); - expect(components.length).to.be(2); - expect(components[0]).to.be.a(ol.geom.LineString); - expect(components[1]).to.be.a(ol.geom.LineString); - - }); - - }); - - describe('#getBounds()', function() { - - it('returns the bounding extent', function() { - var multi = new ol.geom.MultiLineString([ - [[10, 20], [30, 40]], - [[20, 30], [40, 50]]]); - var bounds = multi.getBounds(); - expect(bounds[0]).to.be(10); - expect(bounds[2]).to.be(40); - expect(bounds[1]).to.be(20); - expect(bounds[3]).to.be(50); - }); - - }); - - describe('#getCoordinates', function() { - - it('returns an array', function() { - var coordinates = [ - [[10, 20], [30, 40]], - [[20, 30], [40, 50]] - ]; - var multi = new ol.geom.MultiLineString(coordinates); - expect(multi.getCoordinates()).to.eql(coordinates); - }); - - }); - -}); - -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.LineString'); -goog.require('ol.geom.MultiLineString'); diff --git a/old/test/spec/ol/geom/multipoint.test.js b/old/test/spec/ol/geom/multipoint.test.js deleted file mode 100644 index b8dd053958..0000000000 --- a/old/test/spec/ol/geom/multipoint.test.js +++ /dev/null @@ -1,86 +0,0 @@ -goog.provide('ol.test.geom.MultiPoint'); - -describe('ol.geom.MultiPoint', function() { - - describe('constructor', function() { - - it('creates a multi-point from an array', function() { - var multi = new ol.geom.MultiPoint([[10, 20], [30, 40]]); - expect(multi).to.be.a(ol.geom.MultiPoint); - expect(multi).to.be.a(ol.geom.Geometry); - }); - - }); - - describe('#components', function() { - - it('is an array of points', function() { - var multi = new ol.geom.MultiPoint([[10, 20], [30, 40]]); - - var components = multi.getComponents(); - expect(components.length).to.be(2); - expect(components[0]).to.be.a(ol.geom.Point); - expect(components[1]).to.be.a(ol.geom.Point); - - }); - - }); - - describe('#getBounds()', function() { - - it('returns the bounding extent', function() { - var multi = new ol.geom.MultiPoint([[10, 20], [30, 40]]); - var bounds = multi.getBounds(); - expect(bounds[0]).to.be(10); - expect(bounds[2]).to.be(30); - expect(bounds[1]).to.be(20); - expect(bounds[3]).to.be(40); - }); - - }); - - describe('#getCoordinates', function() { - - it('returns an array', function() { - var multi = new ol.geom.MultiPoint([[10, 20], [30, 40]]); - expect(multi.getCoordinates()).to.eql([[10, 20], [30, 40]]); - }); - - }); - - describe('#transform', function() { - - var forward = ol.proj.getTransform('EPSG:4326', 'EPSG:3857'); - var inverse = ol.proj.getTransform('EPSG:3857', 'EPSG:4326'); - - it('forward transforms a multi-point', function() { - var multi = new ol.geom.MultiPoint([[10, 20], [30, 40]]); - multi.transform(forward); - - var components = multi.getComponents(); - expect(components[0].get(0)).to.roughlyEqual(1113195, 1); - expect(components[0].get(1)).to.roughlyEqual(2273031, 1); - expect(components[1].get(0)).to.roughlyEqual(3339584, 1); - expect(components[1].get(1)).to.roughlyEqual(4865942, 1); - }); - - it('inverse transforms a multi-point', function() { - var multi = new ol.geom.MultiPoint( - [[1113195, 2273031], [3339584, 4865942]]); - multi.transform(inverse); - - var components = multi.getComponents(); - expect(components[0].get(0)).to.roughlyEqual(10, 0.001); - expect(components[0].get(1)).to.roughlyEqual(20, 0.001); - expect(components[1].get(0)).to.roughlyEqual(30, 0.001); - expect(components[1].get(1)).to.roughlyEqual(40, 0.001); - }); - - }); - -}); - -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.MultiPoint'); -goog.require('ol.geom.Point'); -goog.require('ol.proj'); diff --git a/old/test/spec/ol/geom/multipolygon.test.js b/old/test/spec/ol/geom/multipolygon.test.js deleted file mode 100644 index a3d444a434..0000000000 --- a/old/test/spec/ol/geom/multipolygon.test.js +++ /dev/null @@ -1,118 +0,0 @@ -goog.provide('ol.test.geom.MultiPolygon'); - -describe('ol.geom.MultiPolygon', function() { - - var outer1 = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]], - inner1a = [[1, 1], [2, 1], [2, 2], [1, 2], [1, 1]], - inner1b = [[8, 8], [9, 8], [9, 9], [8, 9], [8, 8]], - outer2 = [[10, 10], [20, 0], [20, 50], [10, 50], [10, 10]]; - - describe('constructor', function() { - - it('creates a multi-linestring from an array', function() { - var multi = new ol.geom.MultiPolygon([ - [outer1, inner1a, inner1b], - [outer2]]); - expect(multi).to.be.a(ol.geom.MultiPolygon); - expect(multi).to.be.a(ol.geom.Geometry); - }); - - it('throws when given with insufficient dimensions', function() { - expect(function() { - var multi = new ol.geom.MultiPolygon([1]); - multi = multi; // suppress gjslint warning about unused variable - }).to.throwException(); - }); - - }); - - describe('#components', function() { - - it('is an array of polygons', function() { - var multi = new ol.geom.MultiPolygon([ - [outer1, inner1a, inner1b], - [outer2]]); - - var components = multi.getComponents(); - expect(components.length).to.be(2); - expect(components[0]).to.be.a(ol.geom.Polygon); - expect(components[1]).to.be.a(ol.geom.Polygon); - - }); - - }); - - describe('#getBounds()', function() { - - it('returns the bounding extent', function() { - var multi = new ol.geom.MultiPolygon([ - [outer1, inner1a, inner1b], - [outer2]]); - var bounds = multi.getBounds(); - expect(bounds[0]).to.be(0); - expect(bounds[2]).to.be(20); - expect(bounds[1]).to.be(0); - expect(bounds[3]).to.be(50); - }); - - }); - - describe('#getCoordinates', function() { - - it('returns an array', function() { - var coordinates = [ - [outer1, inner1a, inner1b], - [outer2] - ]; - var multi = new ol.geom.MultiPolygon(coordinates); - expect(multi.getCoordinates()).to.eql(coordinates); - }); - - }); - - describe('change event', function() { - - var outer, inner; - beforeEach(function() { - outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]; - inner = [[2, 2], [2, 8], [8, 8], [8, 2], [2, 2]]; - }); - - it('is fired when outer ring is modified', function(done) { - var multi = new ol.geom.MultiPolygon([[outer, inner], [outer, inner]]); - var components = multi.getComponents(); - goog.events.listen(multi, 'change', function(evt) { - expect(evt.target).to.be(multi); - expect(evt.target.getBounds()).to.eql([0, 0, 11, 10]); - done(); - }); - - var outerOne = components[0].getRings()[0]; - var outerCoords = outerOne.getCoordinates(); - outerCoords[1][0] = 11; - outerOne.setCoordinates(outerCoords); - }); - - it('is fired when inner ring is modified', function(done) { - var multi = new ol.geom.MultiPolygon([[outer, inner], [outer, inner]]); - var components = multi.getComponents(); - goog.events.listen(multi, 'change', function(evt) { - expect(evt.target).to.be(multi); - expect(evt.target.getBounds()).to.eql([0, 0, 10, 10]); - done(); - }); - - var innerTwo = components[1].getRings()[1]; - var innerCoords = innerTwo.getCoordinates(); - innerCoords[1][0] = 3; - innerTwo.setCoordinates(innerCoords); - }); - - }); - -}); - -goog.require('goog.events'); -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.MultiPolygon'); -goog.require('ol.geom.Polygon'); diff --git a/old/test/spec/ol/geom/point.test.js b/old/test/spec/ol/geom/point.test.js deleted file mode 100644 index a56e9b0a5b..0000000000 --- a/old/test/spec/ol/geom/point.test.js +++ /dev/null @@ -1,91 +0,0 @@ -goog.provide('ol.test.geom.Point'); - -describe('ol.geom.Point', function() { - - describe('constructor', function() { - - it('creates a point from an array', function() { - var point = new ol.geom.Point([10, 20]); - expect(point).to.be.a(ol.geom.Point); - expect(point).to.be.a(ol.geom.Geometry); - }); - - }); - - describe('#getBounds()', function() { - - it('returns the bounding extent', function() { - var point = new ol.geom.Point([10, 20]); - var bounds = point.getBounds(); - expect(bounds[0]).to.be(10); - expect(bounds[2]).to.be(10); - expect(bounds[1]).to.be(20); - expect(bounds[3]).to.be(20); - }); - - }); - - describe('#getCoordinates()', function() { - - it('returns an array', function() { - var point = new ol.geom.Point([10, 20]); - expect(point.getCoordinates()).to.eql([10, 20]); - }); - - }); - - describe('#setCoordinates()', function() { - - it('updates the coordinates', function() { - var point = new ol.geom.Point([10, 20]); - point.setCoordinates([30, 40]); - expect(point.getCoordinates()).to.eql([30, 40]); - }); - - it('invalidates bounds', function() { - var point = new ol.geom.Point([10, 20]); - point.setCoordinates([30, 40]); - expect(point.getBounds()).to.eql([30, 40, 30, 40]); - }); - - it('triggers a change event', function(done) { - var point = new ol.geom.Point([10, 20]); - expect(point.getBounds()).to.eql([10, 20, 10, 20]); - goog.events.listen(point, 'change', function(evt) { - expect(evt.target).to.equal(point); - expect(evt.target.getBounds()).to.eql([30, 40, 30, 40]); - expect(evt.target.getCoordinates()).to.eql([30, 40]); - done(); - }); - point.setCoordinates([30, 40]); - }); - - }); - - describe('#transform()', function() { - - var forward = ol.proj.getTransform('EPSG:4326', 'EPSG:3857'); - var inverse = ol.proj.getTransform('EPSG:3857', 'EPSG:4326'); - - it('forward transforms a point in place', function() { - var point = new ol.geom.Point([10, 20]); - point.transform(forward); - expect(point.get(0)).to.roughlyEqual(1113195, 1); - expect(point.get(1)).to.roughlyEqual(2273031, 1); - }); - - it('inverse transforms a point in place', function() { - var point = new ol.geom.Point([1113195, 2273031]); - point.transform(inverse); - expect(point.get(0)).to.roughlyEqual(10, 0.001); - expect(point.get(1)).to.roughlyEqual(20, 0.001); - }); - - }); - -}); - -goog.require('goog.events'); -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.Point'); -goog.require('ol.proj'); diff --git a/old/test/spec/ol/geom/polygon.test.js b/old/test/spec/ol/geom/polygon.test.js deleted file mode 100644 index e8b5c9cdfa..0000000000 --- a/old/test/spec/ol/geom/polygon.test.js +++ /dev/null @@ -1,179 +0,0 @@ -goog.provide('ol.test.geom.Polygon'); - -describe('ol.geom.Polygon', function() { - - var outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]], - inner1 = [[1, 1], [2, 1], [2, 2], [1, 2], [1, 1]], - inner2 = [[8, 8], [9, 8], [9, 9], [8, 9], [8, 8]]; - - describe('constructor', function() { - - it('creates a polygon from an array', function() { - var poly = new ol.geom.Polygon([outer, inner1, inner2]); - expect(poly).to.be.a(ol.geom.Polygon); - expect(poly).to.be.a(ol.geom.Geometry); - }); - - }); - - describe('#getRings()', function() { - - it('returns an array of LinearRing', function() { - var poly = new ol.geom.Polygon([outer, inner1, inner2]); - var rings = poly.getRings(); - expect(rings.length).to.be(3); - expect(rings[0]).to.be.a(ol.geom.LinearRing); - expect(rings[1]).to.be.a(ol.geom.LinearRing); - expect(rings[2]).to.be.a(ol.geom.LinearRing); - }); - - var isClockwise = ol.geom.LinearRing.isClockwise; - - it('forces exterior ring to be clockwise', function() { - var outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]; - expect(isClockwise(outer)).to.be(false); - - var poly = new ol.geom.Polygon([outer]); - var ring = poly.getRings()[0]; - expect(isClockwise(ring.getCoordinates())).to.be(true); - }); - - it('forces interior ring to be counter-clockwise', function() { - var outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]; - var inner = [[2, 2], [2, 8], [8, 8], [8, 2], [2, 2]]; - expect(isClockwise(inner)).to.be(true); - - var poly = new ol.geom.Polygon([outer, inner]); - var ring = poly.getRings()[1]; - expect(isClockwise(ring.getCoordinates())).to.be(false); - }); - - - }); - - describe('#getBounds()', function() { - - it('returns the bounding extent', function() { - var poly = new ol.geom.Polygon([outer, inner1, inner2]); - var bounds = poly.getBounds(); - expect(bounds[0]).to.be(0); - expect(bounds[2]).to.be(10); - expect(bounds[1]).to.be(0); - expect(bounds[3]).to.be(10); - }); - - }); - - describe('#getCoordinates()', function() { - - it('returns an array', function() { - var poly = new ol.geom.Polygon([outer, inner1, inner2]); - expect(poly.getCoordinates()).to.eql([outer, inner1, inner2]); - }); - - }); - - describe('#transform()', function() { - - var forward = ol.proj.getTransform('EPSG:4326', 'EPSG:3857'); - var inverse = ol.proj.getTransform('EPSG:3857', 'EPSG:4326'); - - var gg, sm; - beforeEach(function() { - gg = [ - [[0, 0], [0, 10], [10, 10], [10, 0], [0, 0]], - [[1, 1], [2, 1], [2, 2], [1, 2], [1, 1]], - [[8, 8], [9, 8], [9, 9], [8, 9], [8, 8]] - ]; - - sm = [[ - [0, 0], [0, 1118890], [1113195, 1118890], [1113195, 0], [0, 0] - ], [ - [111319, 111325], [222639, 111325], [222639, 222684], - [111319, 222684], [111319, 111325] - ], [ - [890556, 893464], [1001875, 893464], [1001875, 1006021], - [890556, 1006021], [890556, 893464] - ]]; - - }); - - it('forward transforms a polygon in place', function() { - - var poly = new ol.geom.Polygon(gg); - poly.transform(forward); - var coordinates = poly.getCoordinates(); - var ring; - for (var i = 0, ii = coordinates.length; i < ii; ++i) { - var ring = coordinates[i]; - for (var j = 0, jj = ring.length; j < jj; ++j) { - expect(ring[j][0]).to.roughlyEqual(sm[i][j][0], 1); - expect(ring[j][1]).to.roughlyEqual(sm[i][j][1], 1); - } - } - - }); - - it('inverse transforms a polygon in place', function() { - - var poly = new ol.geom.Polygon(sm); - poly.transform(inverse); - var coordinates = poly.getCoordinates(); - var ring; - for (var i = 0, ii = coordinates.length; i < ii; ++i) { - var ring = coordinates[i]; - for (var j = 0, jj = ring.length; j < jj; ++j) { - expect(ring[j][0]).to.roughlyEqual(gg[i][j][0], 0.001); - expect(ring[j][1]).to.roughlyEqual(gg[i][j][1], 0.001); - } - } - - }); - - }); - - describe('change event', function() { - - var outer, inner; - beforeEach(function() { - outer = [[0, 0], [10, 0], [10, 10], [0, 10], [0, 0]]; - inner = [[2, 2], [2, 8], [8, 8], [8, 2], [2, 2]]; - }); - - it('is fired when outer ring is modified', function(done) { - var poly = new ol.geom.Polygon([outer, inner]); - var rings = poly.getRings(); - goog.events.listen(poly, 'change', function(evt) { - expect(evt.target).to.be(poly); - expect(evt.target.getBounds()).to.eql([0, 0, 11, 10]); - done(); - }); - - var outerCoords = rings[0].getCoordinates(); - outerCoords[1][0] = 11; - rings[0].setCoordinates(outerCoords); - }); - - it('is fired when inner ring is modified', function(done) { - var poly = new ol.geom.Polygon([outer, inner]); - var rings = poly.getRings(); - goog.events.listen(poly, 'change', function(evt) { - expect(evt.target).to.be(poly); - expect(evt.target.getBounds()).to.eql([0, 0, 10, 10]); - done(); - }); - - var innerCoords = rings[1].getCoordinates(); - innerCoords[1][0] = 3; - rings[1].setCoordinates(innerCoords); - }); - - }); - -}); - -goog.require('goog.events'); -goog.require('ol.geom.Geometry'); -goog.require('ol.geom.LinearRing'); -goog.require('ol.geom.Polygon'); -goog.require('ol.proj');