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
  /* 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"
   
  });