More trip planner testing with colors
[busui.git] / labs / openlayers / lib / OpenLayers / Format / WMSCapabilities / v1_3.js
blob:a/labs/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3.js -> blob:b/labs/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3.js
--- a/labs/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3.js
+++ b/labs/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1_3.js
@@ -1,1 +1,129 @@
+/* Copyright (c) 2006-2010 by OpenLayers Contributors (see authors.txt for 
+ * full list of contributors). Published under the Clear BSD license.  
+ * See http://svn.openlayers.org/trunk/openlayers/license.txt for the
+ * full text of the license. */
 
+/**

+ * @requires OpenLayers/Format/WMSCapabilities/v1.js

+ */

+

+/**

+ * Class: OpenLayers.Format.WMSCapabilities/v1_3

+ * Abstract base class for WMS Capabilities version 1.3.X. 

+ * SLD 1.1.0 adds in the extra operations DescribeLayer and GetLegendGraphic, 

+ * see: http://schemas.opengis.net/sld/1.1.0/sld_capabilities.xsd

+ * 

+ * Inherits from:

+ *  - <OpenLayers.Format.WMSCapabilities.v1>

+ */

+OpenLayers.Format.WMSCapabilities.v1_3 = OpenLayers.Class(

+    OpenLayers.Format.WMSCapabilities.v1, {

+    

+    /**

+     * Property: readers

+     * Contains public functions, grouped by namespace prefix, that will

+     *     be applied when a namespaced node is found matching the function

+     *     name.  The function will be applied in the scope of this parser

+     *     with two arguments: the node being read and a context object passed

+     *     from the parent.

+     */

+    readers: {

+        "wms": OpenLayers.Util.applyDefaults({

+            "WMS_Capabilities": function(node, obj) {

+                this.readChildNodes(node, obj);

+            },

+            "LayerLimit": function(node, obj) {

+                obj.layerLimit = parseInt(this.getChildValue(node));

+            },

+            "MaxWidth": function(node, obj) {

+                obj.maxWidth = parseInt(this.getChildValue(node));

+            },

+            "MaxHeight": function(node, obj) {

+                obj.maxHeight = parseInt(this.getChildValue(node));

+            },

+            "BoundingBox": function(node, obj) {

+                var bbox = OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"].BoundingBox.apply(this, [node, obj]);

+                bbox.srs  = node.getAttribute("CRS");

+                obj.bbox[bbox.srs] = bbox;

+            },

+            "CRS": function(node, obj) {

+                // CRS is the synonym of SRS

+                this.readers.wms.SRS.apply(this, [node, obj]); 

+            },

+            "EX_GeographicBoundingBox": function(node, obj) {

+                // replacement of LatLonBoundingBox

+                obj.llbbox = [];

+                this.readChildNodes(node, obj.llbbox);

+                

+            },

+            "westBoundLongitude": function(node, obj) {

+                obj[0] = this.getChildValue(node);

+            },

+            "eastBoundLongitude": function(node, obj) {

+                obj[2] = this.getChildValue(node);

+            },

+            "southBoundLatitude": function(node, obj) {

+                obj[1] = this.getChildValue(node);

+            },

+            "northBoundLatitude": function(node, obj) {

+                obj[3] = this.getChildValue(node);

+            },

+            "MinScaleDenominator": function(node, obj) {

+                obj.maxScale = parseFloat(this.getChildValue(node)).toPrecision(16);

+            },

+            "MaxScaleDenominator": function(node, obj) {

+                obj.minScale = parseFloat(this.getChildValue(node)).toPrecision(16);

+            },

+            "Dimension": function(node, obj) {

+                // dimension has extra attributes: default, multipleValues, 

+                // nearestValue, current which used to be part of Extent. It now

+                // also contains the values.

+                var name = node.getAttribute("name").toLowerCase();

+                var dim = {

+                    name: name,

+                    units: node.getAttribute("units"),

+                    unitsymbol: node.getAttribute("unitSymbol"),

+                    nearestVal: node.getAttribute("nearestValue") === "1",

+                    multipleVal: node.getAttribute("multipleValues") === "1",

+                    "default": node.getAttribute("default") || "",

+                    current: node.getAttribute("current") === "1",

+                    values: this.getChildValue(node).split(",")

+                    

+                };

+                // Theoretically there can be more dimensions with the same

+                // name, but with a different unit. Until we meet such a case,

+                // let's just keep the same structure as the WMS 1.1 

+                // GetCapabilities parser uses. We will store the last

+                // one encountered.

+                obj.dimensions[dim.name] = dim;

+            },

+            "Keyword": function(node, obj) {

+                // TODO: should we change the structure of keyword in v1.js?

+                // Make it an object with a value instead of a string?

+                var keyword = {value: this.getChildValue(node), 

+                    vocabulary: node.getAttribute("vocabulary")};

+                if (obj.keywords) {

+                    obj.keywords.push(keyword);

+                }

+            }

+        }, OpenLayers.Format.WMSCapabilities.v1.prototype.readers["wms"]),

+        "sld": {

+            "UserDefinedSymbolization": function(node, obj) {

+                this.readers.wms.UserDefinedSymbolization.apply(this, [node, obj]);

+                // add the two extra attributes

+                obj.userSymbols.inlineFeature = parseInt(node.getAttribute("InlineFeature")) == 1;

+                obj.userSymbols.remoteWCS = parseInt(node.getAttribute("RemoteWCS")) == 1;

+            },

+            "DescribeLayer": function(node, obj) {

+                this.readers.wms.DescribeLayer.apply(this, [node, obj]);

+            },

+            "GetLegendGraphic": function(node, obj) {

+                this.readers.wms.GetLegendGraphic.apply(this, [node, obj]);

+            }

+        }

+    },

+    

+    CLASS_NAME: "OpenLayers.Format.WMSCapabilities.v1_3" 

+

+});

+