var CLOSURE_NO_DEPS = true; var COMPILED = false; var goog = goog || {}; goog.global = this; goog.global.CLOSURE_DEFINES; goog.exportPath_ = function(name, opt_object, opt_objectToExportTo) { var parts = name.split("."); var cur = opt_objectToExportTo || goog.global; if(!(parts[0] in cur) && cur.execScript) { cur.execScript("var " + parts[0]) } for(var part;parts.length && (part = parts.shift());) { if(!parts.length && opt_object !== undefined) { cur[part] = opt_object }else { if(cur[part]) { cur = cur[part] }else { cur = cur[part] = {} } } } }; goog.define = function(name, defaultValue) { var value = defaultValue; if(!COMPILED) { if(goog.global.CLOSURE_DEFINES && Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES, name)) { value = goog.global.CLOSURE_DEFINES[name] } } goog.exportPath_(name, value) }; goog.DEBUG = true; goog.define("goog.LOCALE", "en"); goog.define("goog.TRUSTED_SITE", true); goog.provide = function(name) { if(!COMPILED) { if(goog.isProvided_(name)) { throw Error('Namespace "' + name + '" already declared.'); } delete goog.implicitNamespaces_[name]; var namespace = name; while(namespace = namespace.substring(0, namespace.lastIndexOf("."))) { if(goog.getObjectByName(namespace)) { break } goog.implicitNamespaces_[namespace] = true } } goog.exportPath_(name) }; goog.setTestOnly = function(opt_message) { if(COMPILED && !goog.DEBUG) { opt_message = opt_message || ""; throw Error("Importing test-only code into non-debug environment" + opt_message ? ": " + opt_message : "."); } }; if(!COMPILED) { goog.isProvided_ = function(name) { return!goog.implicitNamespaces_[name] && !!goog.getObjectByName(name) }; goog.implicitNamespaces_ = {} } goog.getObjectByName = function(name, opt_obj) { var parts = name.split("."); var cur = opt_obj || goog.global; for(var part;part = parts.shift();) { if(goog.isDefAndNotNull(cur[part])) { cur = cur[part] }else { return null } } return cur }; goog.globalize = function(obj, opt_global) { var global = opt_global || goog.global; for(var x in obj) { global[x] = obj[x] } }; goog.addDependency = function(relPath, provides, requires) { if(goog.DEPENDENCIES_ENABLED) { var provide, require; var path = relPath.replace(/\\/g, "/"); var deps = goog.dependencies_; for(var i = 0;provide = provides[i];i++) { deps.nameToPath[provide] = path; if(!(path in deps.pathToNames)) { deps.pathToNames[path] = {} } deps.pathToNames[path][provide] = true } for(var j = 0;require = requires[j];j++) { if(!(path in deps.requires)) { deps.requires[path] = {} } deps.requires[path][require] = true } } }; goog.define("goog.ENABLE_DEBUG_LOADER", true); goog.require = function(name) { if(!COMPILED) { if(goog.isProvided_(name)) { return } if(goog.ENABLE_DEBUG_LOADER) { var path = goog.getPathFromDeps_(name); if(path) { goog.included_[path] = true; goog.writeScripts_(); return } } var errorMessage = "goog.require could not find: " + name; if(goog.global.console) { goog.global.console["error"](errorMessage) } throw Error(errorMessage); } }; goog.basePath = ""; goog.global.CLOSURE_BASE_PATH; goog.global.CLOSURE_NO_DEPS; goog.global.CLOSURE_IMPORT_SCRIPT; goog.nullFunction = function() { }; goog.identityFunction = function(opt_returnValue, var_args) { return opt_returnValue }; goog.abstractMethod = function() { throw Error("unimplemented abstract method"); }; goog.addSingletonGetter = function(ctor) { ctor.getInstance = function() { if(ctor.instance_) { return ctor.instance_ } if(goog.DEBUG) { goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = ctor } return ctor.instance_ = new ctor } }; goog.instantiatedSingletons_ = []; goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER; if(goog.DEPENDENCIES_ENABLED) { goog.included_ = {}; goog.dependencies_ = {pathToNames:{}, nameToPath:{}, requires:{}, visited:{}, written:{}}; goog.inHtmlDocument_ = function() { var doc = goog.global.document; return typeof doc != "undefined" && "write" in doc }; goog.findBasePath_ = function() { if(goog.global.CLOSURE_BASE_PATH) { goog.basePath = goog.global.CLOSURE_BASE_PATH; return }else { if(!goog.inHtmlDocument_()) { return } } var doc = goog.global.document; var scripts = doc.getElementsByTagName("script"); for(var i = scripts.length - 1;i >= 0;--i) { var src = scripts[i].src; var qmark = src.lastIndexOf("?"); var l = qmark == -1 ? src.length : qmark; if(src.substr(l - 7, 7) == "base.js") { goog.basePath = src.substr(0, l - 7); return } } }; goog.importScript_ = function(src) { var importScript = goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_; if(!goog.dependencies_.written[src] && importScript(src)) { goog.dependencies_.written[src] = true } }; goog.writeScriptTag_ = function(src) { if(goog.inHtmlDocument_()) { var doc = goog.global.document; if(doc.readyState == "complete") { var isDeps = /\bdeps.js$/.test(src); if(isDeps) { return false }else { throw Error('Cannot write "' + src + '" after document load'); } } doc.write('\x3cscript type\x3d"text/javascript" src\x3d"' + src + '"\x3e\x3c/' + "script\x3e"); return true }else { return false } }; goog.writeScripts_ = function() { var scripts = []; var seenScript = {}; var deps = goog.dependencies_; function visitNode(path) { if(path in deps.written) { return } if(path in deps.visited) { if(!(path in seenScript)) { seenScript[path] = true; scripts.push(path) } return } deps.visited[path] = true; if(path in deps.requires) { for(var requireName in deps.requires[path]) { if(!goog.isProvided_(requireName)) { if(requireName in deps.nameToPath) { visitNode(deps.nameToPath[requireName]) }else { throw Error("Undefined nameToPath for " + requireName); } } } } if(!(path in seenScript)) { seenScript[path] = true; scripts.push(path) } } for(var path in goog.included_) { if(!deps.written[path]) { visitNode(path) } } for(var i = 0;i < scripts.length;i++) { if(scripts[i]) { goog.importScript_(goog.basePath + scripts[i]) }else { throw Error("Undefined script input"); } } }; goog.getPathFromDeps_ = function(rule) { if(rule in goog.dependencies_.nameToPath) { return goog.dependencies_.nameToPath[rule] }else { return null } }; goog.findBasePath_(); if(!goog.global.CLOSURE_NO_DEPS) { goog.importScript_(goog.basePath + "deps.js") } } goog.typeOf = function(value) { var s = typeof value; if(s == "object") { if(value) { if(value instanceof Array) { return"array" }else { if(value instanceof Object) { return s } } var className = Object.prototype.toString.call((value)); if(className == "[object Window]") { return"object" } if(className == "[object Array]" || typeof value.length == "number" && typeof value.splice != "undefined" && typeof value.propertyIsEnumerable != "undefined" && !value.propertyIsEnumerable("splice")) { return"array" } if(className == "[object Function]" || typeof value.call != "undefined" && typeof value.propertyIsEnumerable != "undefined" && !value.propertyIsEnumerable("call")) { return"function" } }else { return"null" } }else { if(s == "function" && typeof value.call == "undefined") { return"object" } } return s }; goog.isDef = function(val) { return val !== undefined }; goog.isNull = function(val) { return val === null }; goog.isDefAndNotNull = function(val) { return val != null }; goog.isArray = function(val) { return goog.typeOf(val) == "array" }; goog.isArrayLike = function(val) { var type = goog.typeOf(val); return type == "array" || type == "object" && typeof val.length == "number" }; goog.isDateLike = function(val) { return goog.isObject(val) && typeof val.getFullYear == "function" }; goog.isString = function(val) { return typeof val == "string" }; goog.isBoolean = function(val) { return typeof val == "boolean" }; goog.isNumber = function(val) { return typeof val == "number" }; goog.isFunction = function(val) { return goog.typeOf(val) == "function" }; goog.isObject = function(val) { var type = typeof val; return type == "object" && val != null || type == "function" }; goog.getUid = function(obj) { return obj[goog.UID_PROPERTY_] || (obj[goog.UID_PROPERTY_] = ++goog.uidCounter_) }; goog.removeUid = function(obj) { if("removeAttribute" in obj) { obj.removeAttribute(goog.UID_PROPERTY_) } try { delete obj[goog.UID_PROPERTY_] }catch(ex) { } }; goog.UID_PROPERTY_ = "closure_uid_" + (Math.random() * 1E9 >>> 0); goog.uidCounter_ = 0; goog.getHashCode = goog.getUid; goog.removeHashCode = goog.removeUid; goog.cloneObject = function(obj) { var type = goog.typeOf(obj); if(type == "object" || type == "array") { if(obj.clone) { return obj.clone() } var clone = type == "array" ? [] : {}; for(var key in obj) { clone[key] = goog.cloneObject(obj[key]) } return clone } return obj }; goog.bindNative_ = function(fn, selfObj, var_args) { return(fn.call.apply(fn.bind, arguments)) }; goog.bindJs_ = function(fn, selfObj, var_args) { if(!fn) { throw new Error; } if(arguments.length > 2) { var boundArgs = Array.prototype.slice.call(arguments, 2); return function() { var newArgs = Array.prototype.slice.call(arguments); Array.prototype.unshift.apply(newArgs, boundArgs); return fn.apply(selfObj, newArgs) } }else { return function() { return fn.apply(selfObj, arguments) } } }; goog.bind = function(fn, selfObj, var_args) { if(Function.prototype.bind && Function.prototype.bind.toString().indexOf("native code") != -1) { goog.bind = goog.bindNative_ }else { goog.bind = goog.bindJs_ } return goog.bind.apply(null, arguments) }; goog.partial = function(fn, var_args) { var args = Array.prototype.slice.call(arguments, 1); return function() { var newArgs = Array.prototype.slice.call(arguments); newArgs.unshift.apply(newArgs, args); return fn.apply(this, newArgs) } }; goog.mixin = function(target, source) { for(var x in source) { target[x] = source[x] } }; goog.now = goog.TRUSTED_SITE && Date.now || function() { return+new Date }; goog.globalEval = function(script) { if(goog.global.execScript) { goog.global.execScript(script, "JavaScript") }else { if(goog.global.eval) { if(goog.evalWorksForGlobals_ == null) { goog.global.eval("var _et_ \x3d 1;"); if(typeof goog.global["_et_"] != "undefined") { delete goog.global["_et_"]; goog.evalWorksForGlobals_ = true }else { goog.evalWorksForGlobals_ = false } } if(goog.evalWorksForGlobals_) { goog.global.eval(script) }else { var doc = goog.global.document; var scriptElt = doc.createElement("script"); scriptElt.type = "text/javascript"; scriptElt.defer = false; scriptElt.appendChild(doc.createTextNode(script)); doc.body.appendChild(scriptElt); doc.body.removeChild(scriptElt) } }else { throw Error("goog.globalEval not available"); } } }; goog.evalWorksForGlobals_ = null; goog.cssNameMapping_; goog.cssNameMappingStyle_; goog.getCssName = function(className, opt_modifier) { var getMapping = function(cssName) { return goog.cssNameMapping_[cssName] || cssName }; var renameByParts = function(cssName) { var parts = cssName.split("-"); var mapped = []; for(var i = 0;i < parts.length;i++) { mapped.push(getMapping(parts[i])) } return mapped.join("-") }; var rename; if(goog.cssNameMapping_) { rename = goog.cssNameMappingStyle_ == "BY_WHOLE" ? getMapping : renameByParts }else { rename = function(a) { return a } } if(opt_modifier) { return className + "-" + rename(opt_modifier) }else { return rename(className) } }; goog.setCssNameMapping = function(mapping, opt_style) { goog.cssNameMapping_ = mapping; goog.cssNameMappingStyle_ = opt_style }; goog.global.CLOSURE_CSS_NAME_MAPPING; if(!COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING) { goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING } goog.getMsg = function(str, opt_values) { var values = opt_values || {}; for(var key in values) { var value = ("" + values[key]).replace(/\$/g, "$$$$"); str = str.replace(new RegExp("\\{\\$" + key + "\\}", "gi"), value) } return str }; goog.getMsgWithFallback = function(a, b) { return a }; goog.exportSymbol = function(publicPath, object, opt_objectToExportTo) { goog.exportPath_(publicPath, object, opt_objectToExportTo) }; goog.exportProperty = function(object, publicName, symbol) { object[publicName] = symbol }; goog.inherits = function(childCtor, parentCtor) { function tempCtor() { } tempCtor.prototype = parentCtor.prototype; childCtor.superClass_ = parentCtor.prototype; childCtor.prototype = new tempCtor; childCtor.prototype.constructor = childCtor }; goog.base = function(me, opt_methodName, var_args) { var caller = arguments.callee.caller; if(goog.DEBUG) { if(!caller) { throw Error("arguments.caller not defined. goog.base() expects not " + "to be running in strict mode. See " + "http://www.ecma-international.org/ecma-262/5.1/#sec-C"); } } if(caller.superClass_) { return caller.superClass_.constructor.apply(me, Array.prototype.slice.call(arguments, 1)) } var args = Array.prototype.slice.call(arguments, 2); var foundCaller = false; for(var ctor = me.constructor;ctor;ctor = ctor.superClass_ && ctor.superClass_.constructor) { if(ctor.prototype[opt_methodName] === caller) { foundCaller = true }else { if(foundCaller) { return ctor.prototype[opt_methodName].apply(me, args) } } } if(me[opt_methodName] === caller) { return me.constructor.prototype[opt_methodName].apply(me, args) }else { throw Error("goog.base called from a method of one name " + "to a method of a different name"); } }; goog.scope = function(fn) { fn.call(goog.global) }; goog.addDependency("../build/exports.js", [], ["ol", "ol.Attribution", "ol.BrowserFeature", "ol.Collection", "ol.CollectionEvent", "ol.CollectionEventType", "ol.Coordinate", "ol.CoordinateArray", "ol.CoordinateFormatType", "ol.DeviceOrientation", "ol.DeviceOrientationProperty", "ol.DragBoxEvent", "ol.DrawEvent", "ol.Extent", "ol.Feature", "ol.FeatureOverlay", "ol.Geolocation", "ol.GeolocationProperty", "ol.ImageTile", "ol.Kinetic", "ol.Map", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.MapBrowserEventHandler", "ol.MapBrowserPointerEvent", "ol.MapProperty", "ol.Object", "ol.ObjectEvent", "ol.ObjectEventType", "ol.Observable", "ol.Overlay", "ol.OverlayPositioning", "ol.OverlayProperty", "ol.Sphere", "ol.Tile", "ol.TileCoord", "ol.TileState", "ol.View2D", "ol.View2DProperty", "ol.animation", "ol.color", "ol.control", "ol.control.Attribution", "ol.control.Control", "ol.control.FullScreen", "ol.control.Logo", "ol.control.MousePosition", "ol.control.ScaleLine", "ol.control.ScaleLineProperty", "ol.control.ScaleLineUnits", "ol.control.Zoom", "ol.control.ZoomSlider", "ol.control.ZoomToExtent", "ol.coordinate", "ol.dom.Input", "ol.dom.InputProperty", "ol.easing", "ol.events.ConditionType", "ol.events.condition", "ol.extent", "ol.extent.Relationship", "ol.feature", "ol.format.GPX", "ol.format.GPX.V1_1", "ol.format.GeoJSON", "ol.format.IGC", "ol.format.IGCZ", "ol.format.KML", "ol.format.OSMXML", "ol.format.TopoJSON", "ol.format.WFS", "ol.format.WMSCapabilities", "ol.geom.Circle", "ol.geom.Geometry", "ol.geom.GeometryCollection", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.LinearRing", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.geom.SimpleGeometry", "ol.interaction", "ol.interaction.DoubleClickZoom", "ol.interaction.DragAndDrop", "ol.interaction.DragAndDropEvent", "ol.interaction.DragBox", "ol.interaction.DragPan", "ol.interaction.DragRotate", "ol.interaction.DragRotateAndZoom", "ol.interaction.DragZoom", "ol.interaction.Draw", "ol.interaction.KeyboardPan", "ol.interaction.KeyboardZoom", "ol.interaction.Modify", "ol.interaction.MouseWheelZoom", "ol.interaction.PinchRotate", "ol.interaction.PinchZoom", "ol.interaction.Select", "ol.layer.Base", "ol.layer.Group", "ol.layer.Heatmap", "ol.layer.Image", "ol.layer.Layer", "ol.layer.LayerProperty", "ol.layer.LayerState", "ol.layer.Tile", "ol.layer.Vector", "ol.loadingstrategy", "ol.proj", "ol.proj.CH", "ol.proj.EPSG2056", "ol.proj.EPSG21781", "ol.proj.EPSG3857", "ol.proj.EPSG4326", "ol.proj.METERS_PER_UNIT", "ol.proj.Projection", "ol.proj.ProjectionLike", "ol.proj.Units", "ol.proj.common", "ol.render.canvas.Immediate", "ol.source.BingMaps", "ol.source.GPX", "ol.source.GeoJSON", "ol.source.IGC", "ol.source.ImageCanvas", "ol.source.ImageStatic", "ol.source.ImageVector", "ol.source.ImageWMS", "ol.source.KML", "ol.source.MapGuide", "ol.source.MapQuest", "ol.source.OSM", "ol.source.OSMXML", "ol.source.ServerVector", "ol.source.Source", "ol.source.Stamen", "ol.source.State", "ol.source.StaticVector", "ol.source.Tile", "ol.source.TileDebug", "ol.source.TileImage", "ol.source.TileJSON", "ol.source.TileOptions", "ol.source.TileVector", "ol.source.TileWMS", "ol.source.TopoJSON", "ol.source.Vector", "ol.source.VectorEvent", "ol.source.VectorEventType", "ol.source.WMTS", "ol.source.WMTSRequestEncoding", "ol.source.XYZ", "ol.source.Zoomify", "ol.sphere.WGS84", "ol.style.Circle", "ol.style.Fill", "ol.style.Icon", "ol.style.IconAnchorOrigin", "ol.style.IconAnchorUnits", "ol.style.IconImageCache", "ol.style.Image", "ol.style.ImageState", "ol.style.Stroke", "ol.style.Style", "ol.style.Text", "ol.tilegrid.TileGrid", "ol.tilegrid.WMTS", "ol.tilegrid.XYZ", "ol.tilegrid.Zoomify", "ol.tilejson", "ol.webgl.Context"]); goog.addDependency("../src/googx/dom/fullscreen.js", ["googx.dom.fullscreen", "googx.dom.fullscreen.EventType"], ["goog.dom", "goog.userAgent"]); goog.addDependency("../src/libtess.js/dict/Dict.js", ["libtess.Dict"], ["libtess", "libtess.DictNode"]); goog.addDependency("../src/libtess.js/dict/DictNode.js", ["libtess.DictNode"], ["libtess"]); goog.addDependency("../src/libtess.js/geom.js", ["libtess.geom"], ["libtess"]); goog.addDependency("../src/libtess.js/libtess.js", ["libtess"], []); goog.addDependency("../src/libtess.js/libtess/CachedVertex.js", ["libtess.CachedVertex"], ["libtess"]); goog.addDependency("../src/libtess.js/libtess/GluTesselator.js", ["libtess.GluTesselator"], ["libtess", "libtess.CachedVertex", "libtess.GluMesh", "libtess.mesh", "libtess.normal", "libtess.render", "libtess.sweep", "libtess.tessmono"]); goog.addDependency("../src/libtess.js/mesh.js", ["libtess.mesh"], ["libtess", "libtess.GluFace", "libtess.GluHalfEdge", "libtess.GluVertex"]); goog.addDependency("../src/libtess.js/mesh/GluFace.js", ["libtess.GluFace"], ["libtess"]); goog.addDependency("../src/libtess.js/mesh/GluHalfEdge.js", ["libtess.GluHalfEdge"], ["libtess"]); goog.addDependency("../src/libtess.js/mesh/GluMesh.js", ["libtess.GluMesh"], ["libtess", "libtess.GluFace", "libtess.GluHalfEdge", "libtess.GluVertex"]); goog.addDependency("../src/libtess.js/mesh/GluVertex.js", ["libtess.GluVertex"], ["libtess"]); goog.addDependency("../src/libtess.js/normal.js", ["libtess.normal"], ["libtess"]); goog.addDependency("../src/libtess.js/priorityq/PQHandleElem.js", ["libtess.PQHandleElem"], ["libtess"]); goog.addDependency("../src/libtess.js/priorityq/PQNode.js", ["libtess.PQNode"], ["libtess"]); goog.addDependency("../src/libtess.js/priorityq/PriorityQ.js", ["libtess.PriorityQ"], ["libtess", "libtess.PriorityQHeap"]); goog.addDependency("../src/libtess.js/priorityq/PriorityQHeap.js", ["libtess.PriorityQHeap"], ["libtess", "libtess.PQHandleElem", "libtess.PQNode"]); goog.addDependency("../src/libtess.js/render.js", ["libtess.render"], ["libtess", "libtess.FaceCount"]); goog.addDependency("../src/libtess.js/render/FaceCount.js", ["libtess.FaceCount"], ["libtess"]); goog.addDependency("../src/libtess.js/sweep.js", ["libtess.sweep"], ["libtess", "libtess.ActiveRegion", "libtess.Dict", "libtess.GluVertex", "libtess.PriorityQ", "libtess.geom", "libtess.mesh"]); goog.addDependency("../src/libtess.js/sweep/ActiveRegion.js", ["libtess.ActiveRegion"], ["libtess.DictNode"]); goog.addDependency("../src/libtess.js/tessmono.js", ["libtess.tessmono"], ["libtess", "libtess.geom", "libtess.mesh"]); goog.addDependency("../src/ol/animation.js", ["ol.animation"], ["ol.PreRenderFunction", "ol.ViewHint", "ol.coordinate", "ol.easing"]); goog.addDependency("../src/ol/array.js", ["ol.array"], ["goog.array", "goog.asserts"]); goog.addDependency("../src/ol/attribution.js", ["ol.Attribution"], ["ol.TileRange"]); goog.addDependency("../src/ol/binary.js", ["ol.binary.Buffer", "ol.binary.IReader"], ["goog.asserts", "goog.userAgent", "ol.BrowserFeature"]); goog.addDependency("../src/ol/browserfeature.js", ["ol.BrowserFeature"], ["goog.dom", "goog.dom.TagName", "ol", "ol.dom", "ol.webgl"]); goog.addDependency("../src/ol/canvasfunction.js", ["ol.CanvasFunctionType"], []); goog.addDependency("../src/ol/centerconstraint.js", ["ol.CenterConstraint", "ol.CenterConstraintType"], ["goog.math"]); goog.addDependency("../src/ol/collection.js", ["ol.Collection", "ol.CollectionEvent", "ol.CollectionEventType"], ["goog.array", "goog.events.Event", "ol.Object"]); goog.addDependency("../src/ol/color/color.js", ["ol.color"], ["goog.array", "goog.asserts", "goog.color", "goog.color.names", "goog.math", "goog.vec.Mat4", "ol"]); goog.addDependency("../src/ol/color/colormatrix.js", ["ol.color.Matrix"], ["goog.vec.Mat4"]); goog.addDependency("../src/ol/constraints.js", ["ol.Constraints"], ["ol.CenterConstraintType", "ol.ResolutionConstraintType", "ol.RotationConstraintType"]); goog.addDependency("../src/ol/control/attributioncontrol.js", ["ol.control.Attribution"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.object", "goog.style", "ol.Attribution", "ol.control.Control", "ol.css"]); goog.addDependency("../src/ol/control/control.js", ["ol.control.Control"], ["goog.array", "goog.dom", "goog.events", "ol.MapEventType", "ol.Object"]); goog.addDependency("../src/ol/control/controldefaults.js", ["ol.control"], ["ol.Collection", "ol.control.Attribution", "ol.control.Logo", "ol.control.Zoom"]); goog.addDependency("../src/ol/control/fullscreencontrol.js", ["ol.control.FullScreen"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.dom.classes", "goog.events", "goog.events.EventType", "googx.dom.fullscreen", "googx.dom.fullscreen.EventType", "ol.control.Control", "ol.css", "ol.pointer.PointerEventHandler"]); goog.addDependency("../src/ol/control/logocontrol.js", ["ol.control.Logo"], ["goog.dom", "goog.dom.TagName", "goog.object", "goog.style", "ol.control.Control", "ol.css"]); goog.addDependency("../src/ol/control/mousepositioncontrol.js", ["ol.control.MousePosition"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.style", "ol.CoordinateFormatType", "ol.Object", "ol.Pixel", "ol.TransformFunction", "ol.control.Control", "ol.proj", "ol.proj.Projection"]); goog.addDependency("../src/ol/control/scalelinecontrol.js", ["ol.control.ScaleLine", "ol.control.ScaleLineProperty", "ol.control.ScaleLineUnits"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.math", "goog.style", "ol.Object", "ol.TransformFunction", "ol.control.Control", "ol.css", "ol.proj", "ol.proj.Units", "ol.sphere.NORMAL"]); goog.addDependency("../src/ol/control/zoomcontrol.js", ["ol.control.Zoom"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "ol.View2D", "ol.animation", "ol.control.Control", "ol.css", "ol.easing", "ol.pointer.PointerEventHandler"]); goog.addDependency("../src/ol/control/zoomslidercontrol.js", ["ol.control.ZoomSlider"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.Event", "goog.events.EventType", "goog.fx.Dragger", "goog.fx.Dragger.EventType", "goog.math", "goog.math.Rect", "goog.style", "ol", "ol.animation", "ol.control.Control", "ol.css", "ol.easing"]); goog.addDependency("../src/ol/control/zoomtoextentcontrol.js", ["ol.control.ZoomToExtent"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "ol.control.Control", "ol.css", "ol.pointer.PointerEventHandler"]); goog.addDependency("../src/ol/coordinate.js", ["ol.Coordinate", "ol.CoordinateArray", "ol.CoordinateFormatType", "ol.coordinate"], ["goog.math"]); goog.addDependency("../src/ol/css.js", ["ol.css"], []); goog.addDependency("../src/ol/deviceorientation.js", ["ol.DeviceOrientation", "ol.DeviceOrientationProperty"], ["goog.events", "goog.math", "ol.BrowserFeature", "ol.Object"]); goog.addDependency("../src/ol/dom/dom.js", ["ol.dom", "ol.dom.BrowserFeature"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.style", "goog.userAgent", "goog.vec.Mat4", "ol"]); goog.addDependency("../src/ol/dom/input.js", ["ol.dom.Input", "ol.dom.InputProperty"], ["goog.asserts", "goog.events", "goog.events.EventType", "ol.Object"]); goog.addDependency("../src/ol/easing.js", ["ol.easing"], ["goog.fx.easing"]); goog.addDependency("../src/ol/ellipsoid/bessel1841ellipsoid.js", ["ol.ellipsoid.BESSEL1841"], ["ol.Ellipsoid"]); goog.addDependency("../src/ol/ellipsoid/ellipsoid.js", ["ol.Ellipsoid"], ["goog.math", "ol.Coordinate"]); goog.addDependency("../src/ol/ellipsoid/wgs84ellipsoid.js", ["ol.ellipsoid.WGS84"], ["ol.Ellipsoid"]); goog.addDependency("../src/ol/events/condition.js", ["ol.events.ConditionType", "ol.events.condition"], ["goog.asserts", "goog.dom.TagName", "goog.functions", "ol.MapBrowserEvent.EventType", "ol.MapBrowserPointerEvent"]); goog.addDependency("../src/ol/extent.js", ["ol.Extent", "ol.extent", "ol.extent.Relationship"], ["goog.asserts", "goog.vec.Mat4", "ol.Coordinate", "ol.Size", "ol.TransformFunction"]); goog.addDependency("../src/ol/feature.js", ["ol.Feature", "ol.feature"], ["goog.asserts", "goog.events", "goog.events.EventType", "goog.functions", "ol.Object", "ol.geom.Geometry", "ol.geom.GeometryType", "ol.style.Circle", "ol.style.Fill", "ol.style.Stroke", "ol.style.Style"]); goog.addDependency("../src/ol/featureoverlay.js", ["ol.FeatureOverlay"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventType", "goog.object", "ol.Collection", "ol.CollectionEventType", "ol.Feature", "ol.feature", "ol.render.EventType"]); goog.addDependency("../src/ol/format/binaryfeatureformat.js", ["ol.format.BinaryFeature"], ["goog.asserts", "ol.BrowserFeature", "ol.binary.Buffer", "ol.format.Feature", "ol.format.FormatType", "ol.proj"]); goog.addDependency("../src/ol/format/featureformat.js", ["ol.format.Feature"], ["goog.functions"]); goog.addDependency("../src/ol/format/format.js", ["ol.format.FormatType"], []); goog.addDependency("../src/ol/format/geojsonformat.js", ["ol.format.GeoJSON"], ["goog.array", "goog.asserts", "goog.object", "ol.Feature", "ol.format.JSONFeature", "ol.geom.GeometryCollection", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.proj"]); goog.addDependency("../src/ol/format/gmlformat.js", ["ol.format.GML"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.object", "goog.string", "ol.Feature", "ol.array", "ol.extent", "ol.format.XMLFeature", "ol.format.XSD", "ol.geom.Geometry", "ol.geom.LineString", "ol.geom.LinearRing", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.proj", "ol.xml"]); goog.addDependency("../src/ol/format/gpxformat.js", ["ol.format.GPX", "ol.format.GPX.V1_1"], ["goog.array", "goog.asserts", "goog.dom.NodeType", "goog.object", "ol.Feature", "ol.format.XMLFeature", "ol.format.XSD", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.Point", "ol.proj", "ol.xml"]); goog.addDependency("../src/ol/format/igcformat.js", ["ol.format.IGC", "ol.format.IGCZ"], ["goog.asserts", "goog.string", "goog.string.newlines", "ol.Feature", "ol.format.TextFeature", "ol.geom.LineString", "ol.proj"]); goog.addDependency("../src/ol/format/jsonfeatureformat.js", ["ol.format.JSONFeature"], ["goog.asserts", "goog.json", "ol.BrowserFeature", "ol.format.Feature", "ol.format.FormatType"]); goog.addDependency("../src/ol/format/kmlformat.js", ["ol.format.KML"], ["goog.Uri", "goog.array", "goog.asserts", "goog.dom.NodeType", "goog.math", "goog.object", "goog.string", "ol.Feature", "ol.array", "ol.feature", "ol.format.XMLFeature", "ol.format.XSD", "ol.geom.GeometryCollection", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.proj", "ol.style.Fill", "ol.style.Icon", "ol.style.IconAnchorOrigin", "ol.style.IconAnchorUnits", "ol.style.Image", "ol.style.Stroke", "ol.style.Style", "ol.xml"]); goog.addDependency("../src/ol/format/osmxmlformat.js", ["ol.format.OSMXML"], ["goog.array", "goog.asserts", "goog.dom.NodeType", "goog.object", "ol.Feature", "ol.format.XMLFeature", "ol.geom.LineString", "ol.geom.Point", "ol.geom.Polygon", "ol.proj", "ol.xml"]); goog.addDependency("../src/ol/format/owsformat.js", ["ol.format.OWS"], ["goog.asserts", "goog.dom.NodeType", "goog.object", "ol.format.XLink", "ol.format.XML", "ol.format.XSD", "ol.xml"]); goog.addDependency("../src/ol/format/polylineformat.js", ["ol.format.Polyline"], ["goog.asserts", "ol.Feature", "ol.format.TextFeature", "ol.geom.LineString", "ol.geom.flat.inflate", "ol.proj"]); goog.addDependency("../src/ol/format/textfeatureformat.js", ["ol.format.TextFeature"], ["goog.asserts", "ol.format.Feature", "ol.format.FormatType"]); goog.addDependency("../src/ol/format/topojsonformat.js", ["ol.format.TopoJSON"], ["goog.array", "goog.asserts", "goog.object", "ol.Feature", "ol.format.JSONFeature", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.proj"]); goog.addDependency("../src/ol/format/wfsformat.js", ["ol.format.WFS"], ["goog.asserts", "goog.dom.NodeType", "goog.object", "ol.format.GML", "ol.format.XMLFeature", "ol.format.XSD", "ol.geom.Geometry", "ol.proj", "ol.xml"]); goog.addDependency("../src/ol/format/wmscapabilitiesformat.js", ["ol.format.WMSCapabilities"], ["goog.array", "goog.asserts", "goog.dom.NodeType", "goog.object", "goog.string", "ol.format.XLink", "ol.format.XML", "ol.format.XSD", "ol.xml"]); goog.addDependency("../src/ol/format/xlinkformat.js", ["ol.format.XLink"], []); goog.addDependency("../src/ol/format/xmlfeatureformat.js", ["ol.format.XMLFeature"], ["goog.array", "goog.asserts", "goog.dom.NodeType", "ol.format.Feature", "ol.format.FormatType", "ol.xml"]); goog.addDependency("../src/ol/format/xmlformat.js", ["ol.format.XML"], ["goog.asserts", "ol.xml"]); goog.addDependency("../src/ol/format/xsdformat.js", ["ol.format.XSD"], ["goog.asserts", "goog.string", "ol.xml"]); goog.addDependency("../src/ol/framestate.js", ["ol.PostRenderFunction", "ol.PreRenderFunction"], []); goog.addDependency("../src/ol/geolocation.js", ["ol.Geolocation", "ol.GeolocationProperty"], ["goog.asserts", "goog.events", "goog.events.EventType", "goog.math", "ol.BrowserFeature", "ol.Coordinate", "ol.Object", "ol.geom.Geometry", "ol.proj", "ol.sphere.WGS84"]); goog.addDependency("../src/ol/geom/circle.js", ["ol.geom.Circle"], ["goog.asserts", "ol.extent", "ol.geom.GeometryType", "ol.geom.SimpleGeometry", "ol.geom.flat.deflate"]); goog.addDependency("../src/ol/geom/flat/areaflatgeom.js", ["ol.geom.flat.area"], []); goog.addDependency("../src/ol/geom/flat/centerflatgeom.js", ["ol.geom.flat.center"], ["ol.extent"]); goog.addDependency("../src/ol/geom/flat/closestflatgeom.js", ["ol.geom.flat.closest"], ["goog.asserts", "goog.math", "ol.math"]); goog.addDependency("../src/ol/geom/flat/containsflatgeom.js", ["ol.geom.flat.contains"], ["goog.asserts"]); goog.addDependency("../src/ol/geom/flat/deflateflatgeom.js", ["ol.geom.flat.deflate"], ["goog.asserts"]); goog.addDependency("../src/ol/geom/flat/flipflatgeom.js", ["ol.geom.flat.flip"], ["goog.asserts"]); goog.addDependency("../src/ol/geom/flat/inflateflatgeom.js", ["ol.geom.flat.inflate"], []); goog.addDependency("../src/ol/geom/flat/interiorpointflatgeom.js", ["ol.geom.flat.interiorpoint"], ["goog.asserts", "ol.geom.flat.contains"]); goog.addDependency("../src/ol/geom/flat/interpolateflatgeom.js", ["ol.geom.flat.interpolate"], ["goog.array", "goog.asserts", "goog.math"]); goog.addDependency("../src/ol/geom/flat/lengthflatgeom.js", ["ol.geom.flat.length"], []); goog.addDependency("../src/ol/geom/flat/orientflatgeom.js", ["ol.geom.flat.orient"], ["ol.geom.flat.reverse"]); goog.addDependency("../src/ol/geom/flat/reverseflatgeom.js", ["ol.geom.flat.reverse"], []); goog.addDependency("../src/ol/geom/flat/simplifyflatgeom.js", ["ol.geom.flat.simplify"], ["ol.math"]); goog.addDependency("../src/ol/geom/flat/transformflatgeom.js", ["ol.geom.flat.transform"], ["goog.vec.Mat4"]); goog.addDependency("../src/ol/geom/geometry.js", ["ol.geom.Geometry", "ol.geom.GeometryType"], ["goog.asserts", "goog.functions", "ol.Observable"]); goog.addDependency("../src/ol/geom/geometrycollection.js", ["ol.geom.GeometryCollection"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventType", "goog.object", "ol.extent", "ol.geom.Geometry", "ol.geom.GeometryType"]); goog.addDependency("../src/ol/geom/linearring.js", ["ol.geom.LinearRing"], ["ol.extent", "ol.geom.GeometryType", "ol.geom.SimpleGeometry", "ol.geom.flat.area", "ol.geom.flat.closest", "ol.geom.flat.deflate", "ol.geom.flat.inflate", "ol.geom.flat.simplify"]); goog.addDependency("../src/ol/geom/linestring.js", ["ol.geom.LineString"], ["goog.array", "goog.asserts", "ol.array", "ol.extent", "ol.geom.GeometryType", "ol.geom.SimpleGeometry", "ol.geom.flat.closest", "ol.geom.flat.deflate", "ol.geom.flat.inflate", "ol.geom.flat.interpolate", "ol.geom.flat.length", "ol.geom.flat.simplify"]); goog.addDependency("../src/ol/geom/multilinestring.js", ["ol.geom.MultiLineString"], ["goog.array", "goog.asserts", "ol.array", "ol.extent", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.SimpleGeometry", "ol.geom.flat.closest", "ol.geom.flat.deflate", "ol.geom.flat.inflate", "ol.geom.flat.interpolate", "ol.geom.flat.simplify"]); goog.addDependency("../src/ol/geom/multipoint.js", ["ol.geom.MultiPoint"], ["goog.array", "goog.asserts", "ol.array", "ol.extent", "ol.geom.GeometryType", "ol.geom.Point", "ol.geom.SimpleGeometry", "ol.geom.flat.deflate", "ol.geom.flat.inflate", "ol.math"]); goog.addDependency("../src/ol/geom/multipolygon.js", ["ol.geom.MultiPolygon"], ["goog.array", "goog.asserts", "ol.array", "ol.extent", "ol.geom.GeometryType", "ol.geom.MultiPoint", "ol.geom.Polygon", "ol.geom.SimpleGeometry", "ol.geom.flat.area", "ol.geom.flat.center", "ol.geom.flat.closest", "ol.geom.flat.contains", "ol.geom.flat.deflate", "ol.geom.flat.inflate", "ol.geom.flat.interiorpoint", "ol.geom.flat.orient", "ol.geom.flat.simplify"]); goog.addDependency("../src/ol/geom/point.js", ["ol.geom.Point"], ["goog.asserts", "ol.extent", "ol.geom.GeometryType", "ol.geom.SimpleGeometry", "ol.geom.flat.deflate", "ol.math"]); goog.addDependency("../src/ol/geom/polygon.js", ["ol.geom.Polygon"], ["goog.array", "goog.asserts", "ol.array", "ol.extent", "ol.geom.GeometryType", "ol.geom.LinearRing", "ol.geom.Point", "ol.geom.SimpleGeometry", "ol.geom.flat.area", "ol.geom.flat.closest", "ol.geom.flat.contains", "ol.geom.flat.deflate", "ol.geom.flat.inflate", "ol.geom.flat.interiorpoint", "ol.geom.flat.orient", "ol.geom.flat.simplify"]); goog.addDependency("../src/ol/geom/simplegeometry.js", ["ol.geom.SimpleGeometry"], ["goog.asserts", "goog.functions", "goog.object", "ol.extent", "ol.geom.Geometry", "ol.geom.flat.transform"]); goog.addDependency("../src/ol/image.js", ["ol.Image"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventType", "goog.object", "ol.ImageBase", "ol.ImageState"]); goog.addDependency("../src/ol/imagebase.js", ["ol.ImageBase", "ol.ImageState"], ["goog.events.EventTarget", "goog.events.EventType", "ol.Attribution", "ol.Extent"]); goog.addDependency("../src/ol/imagecanvas.js", ["ol.ImageCanvas"], ["ol.ImageBase", "ol.ImageState"]); goog.addDependency("../src/ol/imagetile.js", ["ol.ImageTile"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventType", "goog.object", "ol.Tile", "ol.TileCoord", "ol.TileLoadFunctionType", "ol.TileState"]); goog.addDependency("../src/ol/imageurlfunction.js", ["ol.ImageUrlFunction", "ol.ImageUrlFunctionType"], ["ol.Size"]); goog.addDependency("../src/ol/interaction/doubleclickzoominteraction.js", ["ol.interaction.DoubleClickZoom"], ["goog.asserts", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/interaction/draganddropinteraction.js", ["ol.interaction.DragAndDrop", "ol.interaction.DragAndDropEvent"], ["goog.array", "goog.asserts", "goog.events", "goog.events.Event", "goog.events.FileDropHandler", "goog.events.FileDropHandler.EventType", "goog.fs.FileReader", "goog.functions", "ol.interaction.Interaction", "ol.proj"]); goog.addDependency("../src/ol/interaction/dragboxinteraction.js", ["ol.DragBoxEvent", "ol.interaction.DragBox"], ["goog.asserts", "goog.events.Event", "goog.functions", "ol", "ol.events.ConditionType", "ol.events.condition", "ol.interaction.Pointer", "ol.render.Box"]); goog.addDependency("../src/ol/interaction/dragpaninteraction.js", ["ol.interaction.DragPan"], ["goog.asserts", "ol.Kinetic", "ol.Pixel", "ol.PreRenderFunction", "ol.View2D", "ol.ViewHint", "ol.coordinate", "ol.events.condition", "ol.interaction.Pointer"]); goog.addDependency("../src/ol/interaction/dragrotateandzoominteraction.js", ["ol.interaction.DragRotateAndZoom"], ["goog.asserts", "goog.functions", "goog.math.Vec2", "ol", "ol.ViewHint", "ol.events.ConditionType", "ol.events.condition", "ol.interaction.Interaction", "ol.interaction.Pointer"]); goog.addDependency("../src/ol/interaction/dragrotateinteraction.js", ["ol.interaction.DragRotate"], ["goog.asserts", "ol", "ol.ViewHint", "ol.events.ConditionType", "ol.events.condition", "ol.interaction.Interaction", "ol.interaction.Pointer"]); goog.addDependency("../src/ol/interaction/dragzoominteraction.js", ["ol.interaction.DragZoom"], ["goog.asserts", "ol", "ol.events.condition", "ol.extent", "ol.interaction.DragBox", "ol.interaction.Interaction", "ol.style.Stroke", "ol.style.Style"]); goog.addDependency("../src/ol/interaction/drawinteraction.js", ["ol.DrawEvent", "ol.interaction.Draw"], ["goog.asserts", "goog.events.Event", "ol.Collection", "ol.Coordinate", "ol.Feature", "ol.FeatureOverlay", "ol.Map", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.feature", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.interaction.Pointer", "ol.source.Vector"]); goog.addDependency("../src/ol/interaction/interaction.js", ["ol.interaction.Interaction"], ["goog.asserts", "ol.MapBrowserEvent", "ol.Observable", "ol.View2D", "ol.animation", "ol.easing"]); goog.addDependency("../src/ol/interaction/interactiondefaults.js", ["ol.interaction"], ["ol.Collection", "ol.Kinetic", "ol.interaction.DoubleClickZoom", "ol.interaction.DragPan", "ol.interaction.DragRotate", "ol.interaction.DragZoom", "ol.interaction.KeyboardPan", "ol.interaction.KeyboardZoom", "ol.interaction.MouseWheelZoom", "ol.interaction.PinchRotate", "ol.interaction.PinchZoom"]); goog.addDependency("../src/ol/interaction/keyboardpaninteraction.js", ["ol.interaction.KeyboardPan"], ["goog.asserts", "goog.events.KeyCodes", "goog.events.KeyHandler.EventType", "goog.functions", "ol", "ol.View2D", "ol.coordinate", "ol.events.ConditionType", "ol.events.condition", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/interaction/keyboardzoominteraction.js", ["ol.interaction.KeyboardZoom"], ["goog.asserts", "goog.events.KeyHandler.EventType", "ol.events.ConditionType", "ol.events.condition", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/interaction/modifyinteraction.js", ["ol.interaction.Modify"], ["goog.array", "goog.asserts", "goog.events", "goog.functions", "ol.Collection", "ol.CollectionEventType", "ol.Feature", "ol.FeatureOverlay", "ol.MapBrowserEvent.EventType", "ol.ViewHint", "ol.coordinate", "ol.events.condition", "ol.extent", "ol.feature", "ol.geom.GeometryType", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.interaction.Pointer", "ol.structs.RBush"]); goog.addDependency("../src/ol/interaction/mousewheelzoominteraction.js", ["ol.interaction.MouseWheelZoom"], ["goog.asserts", "goog.events.MouseWheelEvent", "goog.events.MouseWheelHandler.EventType", "goog.math", "ol", "ol.Coordinate", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/interaction/pinchrotateinteraction.js", ["ol.interaction.PinchRotate"], ["goog.asserts", "goog.style", "ol", "ol.Coordinate", "ol.ViewHint", "ol.interaction.Interaction", "ol.interaction.Pointer"]); goog.addDependency("../src/ol/interaction/pinchzoominteraction.js", ["ol.interaction.PinchZoom"], ["goog.asserts", "goog.style", "ol.Coordinate", "ol.ViewHint", "ol.interaction.Interaction", "ol.interaction.Pointer"]); goog.addDependency("../src/ol/interaction/pointerinteraction.js", ["ol.interaction.Pointer"], ["goog.asserts", "goog.functions", "goog.object", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.MapBrowserPointerEvent", "ol.Pixel", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/interaction/selectinteraction.js", ["ol.interaction.Select"], ["goog.array", "goog.asserts", "goog.events", "goog.functions", "ol.CollectionEventType", "ol.Feature", "ol.FeatureOverlay", "ol.events.condition", "ol.feature", "ol.geom.GeometryType", "ol.interaction.Interaction"]); goog.addDependency("../src/ol/iview.js", ["ol.IView"], ["ol.IView2D", "ol.IView3D"]); goog.addDependency("../src/ol/iview2d.js", ["ol.IView2D"], ["ol.Coordinate"]); goog.addDependency("../src/ol/iview3d.js", ["ol.IView3D"], []); goog.addDependency("../src/ol/kinetic.js", ["ol.Kinetic"], ["ol.Coordinate", "ol.PreRenderFunction", "ol.animation"]); goog.addDependency("../src/ol/layer/heatmaplayer.js", ["ol.layer.Heatmap"], ["goog.asserts", "goog.events", "goog.math", "ol.Object", "ol.dom", "ol.layer.Vector", "ol.render.EventType", "ol.style.Icon", "ol.style.Style"]); goog.addDependency("../src/ol/layer/imagelayer.js", ["ol.layer.Image"], ["ol.layer.Layer"]); goog.addDependency("../src/ol/layer/layer.js", ["ol.layer.Layer"], ["goog.asserts", "goog.events", "goog.events.EventType", "goog.object", "ol.layer.Base", "ol.source.Source"]); goog.addDependency("../src/ol/layer/layerbase.js", ["ol.layer.Base", "ol.layer.LayerProperty", "ol.layer.LayerState"], ["goog.events", "goog.math", "goog.object", "ol.Object", "ol.source.State"]); goog.addDependency("../src/ol/layer/layergroup.js", ["ol.layer.Group"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventType", "goog.math", "goog.object", "ol.Collection", "ol.CollectionEvent", "ol.CollectionEventType", "ol.Object", "ol.ObjectEventType", "ol.layer.Base", "ol.source.State"]); goog.addDependency("../src/ol/layer/tilelayer.js", ["ol.layer.Tile"], ["ol.layer.Layer"]); goog.addDependency("../src/ol/layer/vectorlayer.js", ["ol.layer.Vector"], ["goog.array", "goog.object", "ol.feature", "ol.layer.Layer"]); goog.addDependency("../src/ol/loadingstrategy.js", ["ol.loadingstrategy"], ["ol.TileCoord"]); goog.addDependency("../src/ol/map.js", ["ol.Map", "ol.MapProperty"], ["goog.Uri.QueryData", "goog.array", "goog.asserts", "goog.async.AnimationDelay", "goog.async.nextTick", "goog.debug.Console", "goog.dom", "goog.dom.TagName", "goog.dom.ViewportSizeMonitor", "goog.events", "goog.events.BrowserEvent", "goog.events.Event", "goog.events.EventType", "goog.events.KeyHandler", "goog.events.KeyHandler.EventType", "goog.events.MouseWheelHandler", "goog.events.MouseWheelHandler.EventType", "goog.log", "goog.log.Level", "goog.object", "goog.style", "goog.vec.Mat4", "ol.BrowserFeature", "ol.Collection", "ol.CollectionEventType", "ol.IView", "ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.MapBrowserEventHandler", "ol.MapEvent", "ol.MapEventType", "ol.Object", "ol.ObjectEvent", "ol.ObjectEventType", "ol.Pixel", "ol.PostRenderFunction", "ol.PreRenderFunction", "ol.Size", "ol.Tile", "ol.TileQueue", "ol.View", "ol.View2D", "ol.ViewHint", "ol.control", "ol.extent", "ol.interaction", "ol.layer.Base", "ol.layer.Group", "ol.proj", "ol.proj.common", "ol.renderer.Map", "ol.renderer.canvas.Map", "ol.renderer.dom.Map", "ol.renderer.webgl.Map", "ol.structs.PriorityQueue", "ol.vec.Mat4"]); goog.addDependency("../src/ol/mapbrowserevent.js", ["ol.MapBrowserEvent", "ol.MapBrowserEvent.EventType", "ol.MapBrowserEventHandler", "ol.MapBrowserPointerEvent"], ["goog.array", "goog.asserts", "goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.events.EventType", "goog.object", "ol", "ol.Coordinate", "ol.MapEvent", "ol.Pixel", "ol.pointer.PointerEvent", "ol.pointer.PointerEventHandler"]); goog.addDependency("../src/ol/mapevent.js", ["ol.MapEvent", "ol.MapEventType"], ["goog.events.Event"]); goog.addDependency("../src/ol/math.js", ["ol.math"], ["goog.asserts"]); goog.addDependency("../src/ol/object.js", ["ol.Object", "ol.ObjectEvent", "ol.ObjectEventType"], ["goog.array", "goog.events", "goog.events.Event", "goog.functions", "goog.object", "ol.Observable"]); goog.addDependency("../src/ol/observable.js", ["ol.Observable"], ["goog.events", "goog.events.EventTarget", "goog.events.EventType"]); goog.addDependency("../src/ol/ol.js", ["ol"], ["goog.userAgent"]); goog.addDependency("../src/ol/overlay.js", ["ol.Overlay", "ol.OverlayPositioning", "ol.OverlayProperty"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.style", "ol.Coordinate", "ol.Map", "ol.MapEventType", "ol.Object"]); goog.addDependency("../src/ol/pixel.js", ["ol.Pixel"], []); goog.addDependency("../src/ol/pointer/eventsource.js", ["ol.pointer.EventSource"], ["goog.events.BrowserEvent", "goog.object"]); goog.addDependency("../src/ol/pointer/mousesource.js", ["ol.pointer.MouseSource"], ["goog.object", "ol.pointer.EventSource"]); goog.addDependency("../src/ol/pointer/mssource.js", ["ol.pointer.MsSource"], ["goog.object", "ol.pointer.EventSource"]); goog.addDependency("../src/ol/pointer/nativesource.js", ["ol.pointer.NativeSource"], ["goog.object", "ol.pointer.EventSource"]); goog.addDependency("../src/ol/pointer/pointerevent.js", ["ol.pointer.PointerEvent"], ["goog.events", "goog.events.Event", "goog.object"]); goog.addDependency("../src/ol/pointer/pointereventhandler.js", ["ol.pointer.PointerEventHandler"], ["goog.array", "goog.events", "goog.events.BrowserEvent", "goog.events.Event", "goog.events.EventTarget", "ol.BrowserFeature", "ol.pointer.MouseSource", "ol.pointer.MsSource", "ol.pointer.NativeSource", "ol.pointer.PointerEvent", "ol.pointer.TouchSource"]); goog.addDependency("../src/ol/pointer/touchsource.js", ["ol.pointer.TouchSource"], ["goog.array", "goog.object", "ol.pointer.EventSource", "ol.pointer.MouseSource"]); goog.addDependency("../src/ol/proj/chprojection.js", ["ol.proj.CH", "ol.proj.EPSG2056", "ol.proj.EPSG21781"], ["goog.asserts", "goog.math", "ol.ellipsoid.BESSEL1841", "ol.proj", "ol.proj.EPSG4326", "ol.proj.Projection", "ol.proj.Units"]); goog.addDependency("../src/ol/proj/common.js", ["ol.proj.common"], ["ol.proj", "ol.proj.EPSG3857", "ol.proj.EPSG4326"]); goog.addDependency("../src/ol/proj/epsg3857projection.js", ["ol.proj.EPSG3857"], ["goog.array", "goog.asserts", "ol.math", "ol.proj", "ol.proj.Projection", "ol.proj.Units"]); goog.addDependency("../src/ol/proj/epsg4326projection.js", ["ol.proj.EPSG4326"], ["ol.proj", "ol.proj.Projection", "ol.proj.Units"]); goog.addDependency("../src/ol/proj/proj.js", ["ol.proj", "ol.proj.METERS_PER_UNIT", "ol.proj.Projection", "ol.proj.ProjectionLike", "ol.proj.Units"], ["goog.array", "goog.asserts", "goog.object", "ol", "ol.Extent", "ol.TransformFunction", "ol.sphere.NORMAL"]); goog.addDependency("../src/ol/render/box.js", ["ol.render.Box"], ["goog.Disposable", "goog.array", "goog.asserts", "goog.events", "ol.geom.Polygon", "ol.render.EventType"]); goog.addDependency("../src/ol/render/canvas/canvas.js", ["ol.render.canvas"], []); goog.addDependency("../src/ol/render/canvas/canvasimmediate.js", ["ol.render.canvas.Immediate"], ["goog.array", "goog.asserts", "goog.object", "goog.vec.Mat4", "ol.BrowserFeature", "ol.color", "ol.extent", "ol.geom.flat.transform", "ol.render.IVectorContext", "ol.render.canvas", "ol.vec.Mat4"]); goog.addDependency("../src/ol/render/canvas/canvasreplay.js", ["ol.render.canvas.Replay", "ol.render.canvas.ReplayGroup"], ["goog.array", "goog.asserts", "goog.object", "goog.vec.Mat4", "ol.BrowserFeature", "ol.array", "ol.color", "ol.dom", "ol.extent", "ol.extent.Relationship", "ol.geom.flat.simplify", "ol.geom.flat.transform", "ol.render.IReplayGroup", "ol.render.IVectorContext", "ol.render.canvas", "ol.vec.Mat4"]); goog.addDependency("../src/ol/render/ireplay.js", ["ol.render.IReplayGroup"], ["goog.functions", "ol.render.IVectorContext"]); goog.addDependency("../src/ol/render/ivectorcontext.js", ["ol.render.IVectorContext"], []); goog.addDependency("../src/ol/render/renderevent.js", ["ol.render.Event", "ol.render.EventType"], ["goog.events.Event", "ol.render.IVectorContext"]); goog.addDependency("../src/ol/render/vector.js", ["ol.renderer.vector"], ["goog.asserts", "ol.geom.Circle", "ol.geom.GeometryCollection", "ol.geom.LineString", "ol.geom.MultiLineString", "ol.geom.MultiPoint", "ol.geom.MultiPolygon", "ol.geom.Point", "ol.geom.Polygon", "ol.render.IReplayGroup", "ol.style.ImageState", "ol.style.Style"]); goog.addDependency("../src/ol/render/webgl/webglimmediate.js", ["ol.render.webgl.Immediate"], []); goog.addDependency("../src/ol/renderer/canvas/canvasimagelayerrenderer.js", ["ol.renderer.canvas.ImageLayer"], ["goog.asserts", "goog.events", "goog.events.EventType", "goog.vec.Mat4", "ol.ImageBase", "ol.ImageState", "ol.ViewHint", "ol.layer.Image", "ol.renderer.Map", "ol.renderer.canvas.Layer", "ol.source.Image", "ol.vec.Mat4"]); goog.addDependency("../src/ol/renderer/canvas/canvaslayerrenderer.js", ["ol.renderer.canvas.Layer"], ["goog.array", "goog.vec.Mat4", "ol.dom", "ol.layer.Layer", "ol.render.Event", "ol.render.EventType", "ol.render.canvas.Immediate", "ol.renderer.Layer", "ol.vec.Mat4"]); goog.addDependency("../src/ol/renderer/canvas/canvasmaprenderer.js", ["ol.renderer.canvas.Map"], ["goog.asserts", "goog.dom", "goog.style", "goog.vec.Mat4", "ol", "ol.css", "ol.dom", "ol.layer.Image", "ol.layer.Tile", "ol.layer.Vector", "ol.render.Event", "ol.render.EventType", "ol.render.canvas.Immediate", "ol.renderer.Map", "ol.renderer.canvas.ImageLayer", "ol.renderer.canvas.Layer", "ol.renderer.canvas.TileLayer", "ol.renderer.canvas.VectorLayer", "ol.source.State", "ol.vec.Mat4"]); goog.addDependency("../src/ol/renderer/canvas/canvastilelayerrenderer.js", ["ol.renderer.canvas.TileLayer"], ["goog.array", "goog.asserts", "goog.object", "goog.vec.Mat4", "ol.Size", "ol.Tile", "ol.TileCoord", "ol.TileRange", "ol.TileState", "ol.dom", "ol.extent", "ol.layer.Tile", "ol.renderer.Map", "ol.renderer.canvas.Layer", "ol.source.Tile", "ol.vec.Mat4"]); goog.addDependency("../src/ol/renderer/canvas/canvasvectorlayerrenderer.js", ["ol.renderer.canvas.VectorLayer"], ["goog.array", "goog.asserts", "goog.events", "ol.ViewHint", "ol.dom", "ol.extent", "ol.feature", "ol.layer.Vector", "ol.render.EventType", "ol.render.canvas.ReplayGroup", "ol.renderer.canvas.Layer", "ol.renderer.vector", "ol.source.Vector"]); goog.addDependency("../src/ol/renderer/dom/domimagelayerrenderer.js", ["ol.renderer.dom.ImageLayer"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.vec.Mat4", "ol.ImageBase", "ol.ImageState", "ol.ViewHint", "ol.dom", "ol.layer.Image", "ol.renderer.dom.Layer", "ol.source.Image", "ol.vec.Mat4"]); goog.addDependency("../src/ol/renderer/dom/domlayerrenderer.js", ["ol.renderer.dom.Layer"], ["goog.dom", "ol.layer.Layer", "ol.renderer.Layer"]); goog.addDependency("../src/ol/renderer/dom/dommaprenderer.js", ["ol.renderer.dom.Map"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.functions", "goog.style", "ol", "ol.css", "ol.layer.Image", "ol.layer.Tile", "ol.renderer.Map", "ol.renderer.dom.ImageLayer", "ol.renderer.dom.Layer", "ol.renderer.dom.TileLayer", "ol.source.State"]); goog.addDependency("../src/ol/renderer/dom/domtilelayerrenderer.js", ["ol.renderer.dom.TileLayer"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.object", "goog.style", "goog.vec.Mat4", "ol", "ol.Coordinate", "ol.Tile", "ol.TileCoord", "ol.TileRange", "ol.TileState", "ol.ViewHint", "ol.dom", "ol.dom.BrowserFeature", "ol.extent", "ol.layer.Tile", "ol.renderer.dom.Layer", "ol.source.Tile", "ol.tilegrid.TileGrid", "ol.vec.Mat4"]); goog.addDependency("../src/ol/renderer/layerrenderer.js", ["ol.renderer.Layer"], ["goog.Disposable", "ol.Image", "ol.ImageState", "ol.Tile", "ol.TileRange", "ol.TileState", "ol.layer.Layer", "ol.layer.LayerState", "ol.source.Source", "ol.source.State", "ol.source.Tile"]); goog.addDependency("../src/ol/renderer/maprenderer.js", ["ol.renderer.Map"], ["goog.Disposable", "goog.asserts", "goog.dispose", "goog.object", "goog.vec.Mat4", "ol.layer.Layer", "ol.renderer.Layer", "ol.style.IconImageCache", "ol.vec.Mat4"]); goog.addDependency("../src/ol/renderer/webgl/webglimagelayerrenderer.js", ["ol.renderer.webgl.ImageLayer"], ["goog.asserts", "goog.events", "goog.events.EventType", "goog.vec.Mat4", "goog.webgl", "ol.Coordinate", "ol.Extent", "ol.ImageBase", "ol.ImageState", "ol.ViewHint", "ol.layer.Image", "ol.renderer.webgl.Layer", "ol.source.Image"]); goog.addDependency("../src/ol/renderer/webgl/webgllayerrenderer.js", ["ol.renderer.webgl.Layer"], ["goog.vec.Mat4", "goog.webgl", "ol.color.Matrix", "ol.layer.Layer", "ol.render.Event", "ol.render.EventType", "ol.render.webgl.Immediate", "ol.renderer.Layer", "ol.renderer.webgl.map.shader.Color", "ol.renderer.webgl.map.shader.Default", "ol.structs.Buffer"]); goog.addDependency("../src/ol/renderer/webgl/webglmapcolorshader.js", ["ol.renderer.webgl.map.shader.Color"], ["ol.webgl.shader"]); goog.addDependency("../src/ol/renderer/webgl/webglmapdefaultshader.js", ["ol.renderer.webgl.map.shader.Default"], ["ol.webgl.shader"]); goog.addDependency("../src/ol/renderer/webgl/webglmaprenderer.js", ["ol.renderer.webgl.Map"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.Event", "goog.log", "goog.log.Logger", "goog.object", "goog.style", "goog.webgl", "ol", "ol.Tile", "ol.css", "ol.dom", "ol.layer.Image", "ol.layer.Tile", "ol.render.Event", "ol.render.EventType", "ol.render.webgl.Immediate", "ol.renderer.Map", "ol.renderer.webgl.ImageLayer", "ol.renderer.webgl.Layer", "ol.renderer.webgl.TileLayer", "ol.source.State", "ol.structs.LRUCache", "ol.structs.PriorityQueue", "ol.webgl", "ol.webgl.Context", "ol.webgl.WebGLContextEventType"]); goog.addDependency("../src/ol/renderer/webgl/webgltilelayerrenderer.js", ["ol.renderer.webgl.TileLayer"], ["goog.array", "goog.asserts", "goog.object", "goog.vec.Mat4", "goog.vec.Vec4", "goog.webgl", "ol.Tile", "ol.TileRange", "ol.TileState", "ol.extent", "ol.layer.Tile", "ol.math", "ol.renderer.webgl.Layer", "ol.renderer.webgl.tilelayer.shader", "ol.source.Tile", "ol.structs.Buffer"]); goog.addDependency("../src/ol/renderer/webgl/webgltilelayershader.js", ["ol.renderer.webgl.tilelayer.shader"], ["ol.webgl.shader"]); goog.addDependency("../src/ol/resolutionconstraint.js", ["ol.ResolutionConstraint", "ol.ResolutionConstraintType"], ["goog.math", "ol.array"]); goog.addDependency("../src/ol/rotationconstraint.js", ["ol.RotationConstraint", "ol.RotationConstraintType"], ["goog.math"]); goog.addDependency("../src/ol/size.js", ["ol.Size", "ol.size"], []); goog.addDependency("../src/ol/source/bingmapssource.js", ["ol.source.BingMaps"], ["goog.Uri", "goog.array", "goog.asserts", "goog.net.Jsonp", "ol", "ol.Attribution", "ol.TileRange", "ol.TileUrlFunction", "ol.extent", "ol.proj", "ol.source.State", "ol.source.TileImage", "ol.tilegrid.XYZ"]); goog.addDependency("../src/ol/source/debugtilesource.js", ["ol.source.TileDebug"], ["ol.Tile", "ol.TileCache", "ol.TileCoord", "ol.TileState", "ol.dom", "ol.source.Tile", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/source/formatvectorsource.js", ["ol.source.FormatVector"], ["goog.asserts", "goog.dispose", "goog.events", "goog.net.EventType", "goog.net.XhrIo", "goog.net.XhrIo.ResponseType", "goog.userAgent", "ol.BrowserFeature", "ol.format.FormatType", "ol.proj", "ol.source.State", "ol.source.Vector", "ol.xml"]); goog.addDependency("../src/ol/source/geojsonsource.js", ["ol.source.GeoJSON"], ["ol.format.GeoJSON", "ol.source.StaticVector"]); goog.addDependency("../src/ol/source/gpxsource.js", ["ol.source.GPX"], ["ol.format.GPX", "ol.source.StaticVector"]); goog.addDependency("../src/ol/source/igcsource.js", ["ol.source.IGC"], ["ol.format.IGC", "ol.source.StaticVector"]); goog.addDependency("../src/ol/source/imagecanvassource.js", ["ol.source.ImageCanvas"], ["ol.CanvasFunctionType", "ol.ImageCanvas", "ol.extent", "ol.source.Image"]); goog.addDependency("../src/ol/source/imagesource.js", ["ol.source.Image"], ["goog.array", "goog.asserts", "ol.Attribution", "ol.Extent", "ol.Image", "ol.array", "ol.source.Source"]); goog.addDependency("../src/ol/source/imagestaticsource.js", ["ol.source.ImageStatic"], ["ol.Image", "ol.extent", "ol.proj", "ol.source.Image"]); goog.addDependency("../src/ol/source/imagevectorsource.js", ["ol.source.ImageVector"], ["goog.asserts", "goog.events", "goog.events.EventType", "goog.vec.Mat4", "ol.dom", "ol.extent", "ol.feature", "ol.render.canvas.ReplayGroup", "ol.renderer.vector", "ol.source.ImageCanvas", "ol.source.Vector", "ol.vec.Mat4"]); goog.addDependency("../src/ol/source/imagewmssource.js", ["ol.source.ImageWMS"], ["goog.asserts", "goog.object", "goog.string", "goog.uri.utils", "ol", "ol.Image", "ol.extent", "ol.proj", "ol.source.Image", "ol.source.wms", "ol.source.wms.ServerType"]); goog.addDependency("../src/ol/source/kmlsource.js", ["ol.source.KML"], ["ol.format.KML", "ol.source.StaticVector"]); goog.addDependency("../src/ol/source/mapguidesource.js", ["ol.source.MapGuide"], ["goog.object", "goog.uri.utils", "ol.Image", "ol.ImageUrlFunction", "ol.extent", "ol.source.Image"]); goog.addDependency("../src/ol/source/mapquestsource.js", ["ol.source.MapQuest"], ["goog.asserts", "ol", "ol.Attribution", "ol.source.OSM", "ol.source.XYZ"]); goog.addDependency("../src/ol/source/osmsource.js", ["ol.source.OSM"], ["ol", "ol.Attribution", "ol.source.XYZ"]); goog.addDependency("../src/ol/source/osmxmlsource.js", ["ol.source.OSMXML"], ["ol.format.OSMXML", "ol.source.StaticVector"]); goog.addDependency("../src/ol/source/servervectorsource.js", ["ol.source.ServerVector"], ["ol.extent", "ol.loadingstrategy", "ol.source.FormatVector", "ol.structs.RBush"]); goog.addDependency("../src/ol/source/source.js", ["ol.source.Source", "ol.source.State"], ["goog.events.EventType", "ol.Attribution", "ol.Extent", "ol.Observable", "ol.proj"]); goog.addDependency("../src/ol/source/stamensource.js", ["ol.source.Stamen"], ["goog.asserts", "ol", "ol.Attribution", "ol.source.OSM", "ol.source.XYZ"]); goog.addDependency("../src/ol/source/staticvectorsource.js", ["ol.source.StaticVector"], ["ol.source.FormatVector", "ol.source.State"]); goog.addDependency("../src/ol/source/tileimagesource.js", ["ol.source.TileImage"], ["goog.asserts", "ol.ImageTile", "ol.Tile", "ol.TileCache", "ol.TileCoord", "ol.TileLoadFunctionType", "ol.TileState", "ol.TileUrlFunction", "ol.TileUrlFunctionType", "ol.source.Tile"]); goog.addDependency("../src/ol/source/tilejsonsource.js", ["ol.source.TileJSON", "ol.tilejson"], ["goog.asserts", "goog.net.Jsonp", "ol.Attribution", "ol.TileRange", "ol.TileUrlFunction", "ol.extent", "ol.proj", "ol.source.State", "ol.source.TileImage", "ol.tilegrid.XYZ"]); goog.addDependency("../src/ol/source/tilesource.js", ["ol.source.Tile", "ol.source.TileOptions"], ["goog.functions", "ol.Attribution", "ol.Extent", "ol.Tile", "ol.TileCoord", "ol.TileRange", "ol.source.Source", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/source/tilevectorsource.js", ["ol.source.TileVector"], ["goog.array", "goog.object", "ol.TileCoord", "ol.TileUrlFunction", "ol.source.FormatVector", "ol.source.State", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/source/tilewmssource.js", ["ol.source.TileWMS"], ["goog.array", "goog.asserts", "goog.math", "goog.object", "goog.string", "goog.uri.utils", "ol", "ol.TileCoord", "ol.TileUrlFunction", "ol.extent", "ol.source.TileImage", "ol.source.wms", "ol.source.wms.ServerType"]); goog.addDependency("../src/ol/source/topojsonsource.js", ["ol.source.TopoJSON"], ["ol.format.TopoJSON", "ol.source.StaticVector"]); goog.addDependency("../src/ol/source/vectorsource.js", ["ol.source.Vector", "ol.source.VectorEvent", "ol.source.VectorEventType"], ["goog.array", "goog.asserts", "goog.events", "goog.events.Event", "goog.events.EventType", "goog.object", "ol.ObjectEventType", "ol.proj", "ol.source.Source", "ol.structs.RBush"]); goog.addDependency("../src/ol/source/wmssource.js", ["ol.source.wms", "ol.source.wms.ServerType"], []); goog.addDependency("../src/ol/source/wmtssource.js", ["ol.source.WMTS", "ol.source.WMTSRequestEncoding"], ["goog.array", "goog.asserts", "goog.math", "goog.object", "goog.uri.utils", "ol.TileCoord", "ol.TileUrlFunction", "ol.TileUrlFunctionType", "ol.extent", "ol.proj", "ol.source.TileImage", "ol.tilegrid.WMTS"]); goog.addDependency("../src/ol/source/xyzsource.js", ["ol.source.XYZ"], ["ol.Attribution", "ol.TileUrlFunction", "ol.TileUrlFunctionType", "ol.source.TileImage", "ol.tilegrid.XYZ"]); goog.addDependency("../src/ol/source/zoomifysource.js", ["ol.source.Zoomify"], ["goog.array", "goog.asserts", "ol", "ol.ImageTile", "ol.TileCoord", "ol.TileState", "ol.TileUrlFunction", "ol.dom", "ol.proj", "ol.source.TileImage", "ol.tilegrid.Zoomify"]); goog.addDependency("../src/ol/sphere/normal.js", ["ol.sphere.NORMAL"], ["ol.Sphere"]); goog.addDependency("../src/ol/sphere/sphere.js", ["ol.Sphere"], ["goog.array", "goog.math", "ol.geom.Polygon"]); goog.addDependency("../src/ol/sphere/wgs84sphere.js", ["ol.sphere.WGS84"], ["ol.Sphere"]); goog.addDependency("../src/ol/structs/buffer.js", ["ol.structs.Buffer"], ["goog.array", "goog.asserts", "goog.webgl", "ol", "ol.structs.IntegerSet"]); goog.addDependency("../src/ol/structs/integerset.js", ["ol.structs.IntegerSet"], ["goog.asserts"]); goog.addDependency("../src/ol/structs/lrucache.js", ["ol.structs.LRUCache"], ["goog.asserts", "goog.object"]); goog.addDependency("../src/ol/structs/priorityqueue.js", ["ol.structs.PriorityQueue"], ["goog.asserts", "goog.object"]); goog.addDependency("../src/ol/structs/rbush.js", ["ol.structs.RBush"], ["goog.array", "goog.asserts", "goog.object", "ol.extent"]); goog.addDependency("../src/ol/style/circlestyle.js", ["ol.style.Circle"], ["goog.dom", "goog.dom.TagName", "ol.color", "ol.render.canvas", "ol.style.Fill", "ol.style.Image", "ol.style.ImageState", "ol.style.Stroke"]); goog.addDependency("../src/ol/style/fillstyle.js", ["ol.style.Fill"], ["ol.color"]); goog.addDependency("../src/ol/style/iconstyle.js", ["ol.style.Icon", "ol.style.IconAnchorOrigin", "ol.style.IconAnchorUnits", "ol.style.IconImageCache"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "ol.dom", "ol.style.Image", "ol.style.ImageState"]); goog.addDependency("../src/ol/style/imagestyle.js", ["ol.style.Image", "ol.style.ImageState"], ["goog.array"]); goog.addDependency("../src/ol/style/strokestyle.js", ["ol.style.Stroke"], ["ol.color"]); goog.addDependency("../src/ol/style/style.js", ["ol.style.Style"], ["ol.style.Fill", "ol.style.Image"]); goog.addDependency("../src/ol/style/textstyle.js", ["ol.style.Text"], []); goog.addDependency("../src/ol/tile.js", ["ol.Tile", "ol.TileState"], ["goog.events", "goog.events.EventTarget", "goog.events.EventType", "ol.TileCoord"]); goog.addDependency("../src/ol/tilecache.js", ["ol.TileCache"], ["goog.asserts", "ol", "ol.Tile", "ol.TileCoord", "ol.TileRange", "ol.structs.LRUCache"]); goog.addDependency("../src/ol/tilecoord.js", ["ol.TileCoord"], ["goog.array", "goog.asserts"]); goog.addDependency("../src/ol/tilegrid/tilegrid.js", ["ol.tilegrid.TileGrid"], ["goog.array", "goog.asserts", "ol", "ol.Coordinate", "ol.TileCoord", "ol.TileRange", "ol.array", "ol.extent", "ol.proj.METERS_PER_UNIT", "ol.proj.Projection", "ol.proj.Units"]); goog.addDependency("../src/ol/tilegrid/wmtstilegrid.js", ["ol.tilegrid.WMTS"], ["goog.array", "goog.asserts", "ol.proj", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/tilegrid/xyztilegrid.js", ["ol.tilegrid.XYZ"], ["goog.math", "ol", "ol.TileCoord", "ol.TileRange", "ol.proj", "ol.proj.EPSG3857", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/tilegrid/zoomifytilegrid.js", ["ol.tilegrid.Zoomify"], ["goog.math", "ol.TileCoord", "ol.proj", "ol.tilegrid.TileGrid"]); goog.addDependency("../src/ol/tileloadfunction.js", ["ol.TileLoadFunctionType"], []); goog.addDependency("../src/ol/tilequeue.js", ["ol.TilePriorityFunction", "ol.TileQueue"], ["goog.events", "goog.events.EventType", "ol.Coordinate", "ol.Tile", "ol.structs.PriorityQueue"]); goog.addDependency("../src/ol/tilerange.js", ["ol.TileRange"], ["goog.asserts", "ol.Size", "ol.TileCoord"]); goog.addDependency("../src/ol/tileurlfunction.js", ["ol.TileUrlFunction", "ol.TileUrlFunctionType"], ["goog.array", "goog.math", "ol.TileCoord"]); goog.addDependency("../src/ol/transformfunction.js", ["ol.TransformFunction"], []); goog.addDependency("../src/ol/vec/mat4.js", ["ol.vec.Mat4"], ["goog.vec.Mat4"]); goog.addDependency("../src/ol/view.js", ["ol.View", "ol.ViewHint"], ["goog.array", "goog.asserts", "ol.IView", "ol.Object"]); goog.addDependency("../src/ol/view2d.js", ["ol.View2D", "ol.View2DProperty"], ["goog.asserts", "ol", "ol.CenterConstraint", "ol.Constraints", "ol.IView2D", "ol.IView3D", "ol.ResolutionConstraint", "ol.RotationConstraint", "ol.RotationConstraintType", "ol.Size", "ol.View", "ol.coordinate", "ol.extent", "ol.proj", "ol.proj.METERS_PER_UNIT", "ol.proj.Projection", "ol.proj.Units"]); goog.addDependency("../src/ol/webgl/context.js", ["ol.webgl.Context"], ["goog.asserts", "goog.events", "goog.log", "goog.object", "ol.structs.Buffer", "ol.structs.IntegerSet", "ol.webgl.WebGLContextEventType"]); goog.addDependency("../src/ol/webgl/shader.js", ["ol.webgl.shader"], ["goog.functions", "goog.webgl", "ol.webgl"]); goog.addDependency("../src/ol/webgl/webgl.js", ["ol.webgl", "ol.webgl.WebGLContextEventType"], []); goog.addDependency("../src/ol/xml.js", ["ol.xml"], ["goog.array", "goog.asserts", "goog.dom.NodeType", "goog.dom.xml", "goog.object", "goog.userAgent"]); goog.addDependency("/closure/goog/a11y/aria/announcer.js", ["goog.a11y.aria.Announcer"], ["goog.Disposable", "goog.a11y.aria", "goog.a11y.aria.LivePriority", "goog.a11y.aria.State", "goog.dom", "goog.object"]); goog.addDependency("/closure/goog/a11y/aria/aria.js", ["goog.a11y.aria"], ["goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.a11y.aria.datatables", "goog.array", "goog.asserts", "goog.dom", "goog.dom.TagName", "goog.object", "goog.string"]); goog.addDependency("/closure/goog/a11y/aria/attributes.js", ["goog.a11y.aria.AutoCompleteValues", "goog.a11y.aria.CheckedValues", "goog.a11y.aria.DropEffectValues", "goog.a11y.aria.ExpandedValues", "goog.a11y.aria.GrabbedValues", "goog.a11y.aria.InvalidValues", "goog.a11y.aria.LivePriority", "goog.a11y.aria.OrientationValues", "goog.a11y.aria.PressedValues", "goog.a11y.aria.RelevantValues", "goog.a11y.aria.SelectedValues", "goog.a11y.aria.SortValues", "goog.a11y.aria.State"], []); goog.addDependency("/closure/goog/a11y/aria/datatables.js", ["goog.a11y.aria.datatables"], ["goog.a11y.aria.State", "goog.object"]); goog.addDependency("/closure/goog/a11y/aria/roles.js", ["goog.a11y.aria.Role"], []); goog.addDependency("/closure/goog/array/array.js", ["goog.array", "goog.array.ArrayLike"], ["goog.asserts"]); goog.addDependency("/closure/goog/asserts/asserts.js", ["goog.asserts", "goog.asserts.AssertionError"], ["goog.debug.Error", "goog.string"]); goog.addDependency("/closure/goog/async/animationdelay.js", ["goog.async.AnimationDelay"], ["goog.Disposable", "goog.events", "goog.functions"]); goog.addDependency("/closure/goog/async/conditionaldelay.js", ["goog.async.ConditionalDelay"], ["goog.Disposable", "goog.async.Delay"]); goog.addDependency("/closure/goog/async/delay.js", ["goog.Delay", "goog.async.Delay"], ["goog.Disposable", "goog.Timer"]); goog.addDependency("/closure/goog/async/nexttick.js", ["goog.async.nextTick"], ["goog.debug.entryPointRegistry", "goog.functions"]); goog.addDependency("/closure/goog/async/throttle.js", ["goog.Throttle", "goog.async.Throttle"], ["goog.Disposable", "goog.Timer"]); goog.addDependency("/closure/goog/base.js", [], []); goog.addDependency("/closure/goog/bootstrap/nodejs.js", [], []); goog.addDependency("/closure/goog/bootstrap/webworkers.js", [], []); goog.addDependency("/closure/goog/color/alpha.js", ["goog.color.alpha"], ["goog.color"]); goog.addDependency("/closure/goog/color/color.js", ["goog.color"], ["goog.color.names", "goog.math"]); goog.addDependency("/closure/goog/color/names.js", ["goog.color.names"], []); goog.addDependency("/closure/goog/crypt/aes.js", ["goog.crypt.Aes"], ["goog.asserts", "goog.crypt.BlockCipher"]); goog.addDependency("/closure/goog/crypt/arc4.js", ["goog.crypt.Arc4"], ["goog.asserts"]); goog.addDependency("/closure/goog/crypt/base64.js", ["goog.crypt.base64"], ["goog.crypt", "goog.userAgent"]); goog.addDependency("/closure/goog/crypt/basen.js", ["goog.crypt.baseN"], []); goog.addDependency("/closure/goog/crypt/blobhasher.js", ["goog.crypt.BlobHasher", "goog.crypt.BlobHasher.EventType"], ["goog.asserts", "goog.crypt", "goog.crypt.Hash", "goog.events.EventTarget", "goog.fs", "goog.log"]); goog.addDependency("/closure/goog/crypt/blockcipher.js", ["goog.crypt.BlockCipher"], []); goog.addDependency("/closure/goog/crypt/cbc.js", ["goog.crypt.Cbc"], ["goog.array", "goog.crypt"]); goog.addDependency("/closure/goog/crypt/cbc_test.js", ["goog.crypt.CbcTest"], ["goog.crypt", "goog.crypt.Aes", "goog.crypt.Cbc", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/crypt/crypt.js", ["goog.crypt"], ["goog.array"]); goog.addDependency("/closure/goog/crypt/hash.js", ["goog.crypt.Hash"], []); goog.addDependency("/closure/goog/crypt/hash32.js", ["goog.crypt.hash32"], ["goog.crypt"]); goog.addDependency("/closure/goog/crypt/hashtester.js", ["goog.crypt.hashTester"], ["goog.array", "goog.crypt", "goog.testing.PerformanceTable", "goog.testing.PseudoRandom", "goog.testing.asserts"]); goog.addDependency("/closure/goog/crypt/hmac.js", ["goog.crypt.Hmac"], ["goog.asserts", "goog.crypt.Hash"]); goog.addDependency("/closure/goog/crypt/md5.js", ["goog.crypt.Md5"], ["goog.crypt.Hash"]); goog.addDependency("/closure/goog/crypt/pbkdf2.js", ["goog.crypt.pbkdf2"], ["goog.asserts", "goog.crypt", "goog.crypt.Hmac", "goog.crypt.Sha1"]); goog.addDependency("/closure/goog/crypt/sha1.js", ["goog.crypt.Sha1"], ["goog.crypt.Hash"]); goog.addDependency("/closure/goog/crypt/sha2.js", ["goog.crypt.Sha2"], ["goog.array", "goog.asserts", "goog.crypt.Hash"]); goog.addDependency("/closure/goog/crypt/sha224.js", ["goog.crypt.Sha224"], ["goog.crypt.Sha2"]); goog.addDependency("/closure/goog/crypt/sha256.js", ["goog.crypt.Sha256"], ["goog.crypt.Sha2"]); goog.addDependency("/closure/goog/cssom/cssom.js", ["goog.cssom", "goog.cssom.CssRuleType"], ["goog.array", "goog.dom"]); goog.addDependency("/closure/goog/cssom/iframe/style.js", ["goog.cssom.iframe.style"], ["goog.cssom", "goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.string", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/datasource/datamanager.js", ["goog.ds.DataManager"], ["goog.ds.BasicNodeList", "goog.ds.DataNode", "goog.ds.Expr", "goog.string", "goog.structs", "goog.structs.Map"]); goog.addDependency("/closure/goog/datasource/datasource.js", ["goog.ds.BaseDataNode", "goog.ds.BasicNodeList", "goog.ds.DataNode", "goog.ds.DataNodeList", "goog.ds.EmptyNodeList", "goog.ds.LoadState", "goog.ds.SortedNodeList", "goog.ds.Util", "goog.ds.logger"], ["goog.array", "goog.log"]); goog.addDependency("/closure/goog/datasource/expr.js", ["goog.ds.Expr"], ["goog.ds.BasicNodeList", "goog.ds.EmptyNodeList", "goog.string"]); goog.addDependency("/closure/goog/datasource/fastdatanode.js", ["goog.ds.AbstractFastDataNode", "goog.ds.FastDataNode", "goog.ds.FastListNode", "goog.ds.PrimitiveFastDataNode"], ["goog.ds.DataManager", "goog.ds.EmptyNodeList", "goog.string"]); goog.addDependency("/closure/goog/datasource/jsdatasource.js", ["goog.ds.JsDataSource", "goog.ds.JsPropertyDataSource"], ["goog.ds.BaseDataNode", "goog.ds.BasicNodeList", "goog.ds.DataManager", "goog.ds.EmptyNodeList", "goog.ds.LoadState"]); goog.addDependency("/closure/goog/datasource/jsondatasource.js", ["goog.ds.JsonDataSource"], ["goog.Uri", "goog.dom", "goog.ds.DataManager", "goog.ds.JsDataSource", "goog.ds.LoadState", "goog.ds.logger"]); goog.addDependency("/closure/goog/datasource/jsxmlhttpdatasource.js", ["goog.ds.JsXmlHttpDataSource"], ["goog.Uri", "goog.ds.DataManager", "goog.ds.FastDataNode", "goog.ds.LoadState", "goog.ds.logger", "goog.events", "goog.log", "goog.net.EventType", "goog.net.XhrIo"]); goog.addDependency("/closure/goog/datasource/xmldatasource.js", ["goog.ds.XmlDataSource", "goog.ds.XmlHttpDataSource"], ["goog.Uri", "goog.dom.NodeType", "goog.dom.xml", "goog.ds.BasicNodeList", "goog.ds.DataManager", "goog.ds.LoadState", "goog.ds.logger", "goog.net.XhrIo", "goog.string"]); goog.addDependency("/closure/goog/date/date.js", ["goog.date", "goog.date.Date", "goog.date.DateTime", "goog.date.Interval", "goog.date.month", "goog.date.weekDay"], ["goog.asserts", "goog.date.DateLike", "goog.i18n.DateTimeSymbols", "goog.string"]); goog.addDependency("/closure/goog/date/datelike.js", ["goog.date.DateLike"], []); goog.addDependency("/closure/goog/date/daterange.js", ["goog.date.DateRange", "goog.date.DateRange.Iterator", "goog.date.DateRange.StandardDateRangeKeys"], ["goog.date.Date", "goog.date.Interval", "goog.iter.Iterator", "goog.iter.StopIteration"]); goog.addDependency("/closure/goog/date/relative.js", ["goog.date.relative"], ["goog.i18n.DateTimeFormat"]); goog.addDependency("/closure/goog/date/utcdatetime.js", ["goog.date.UtcDateTime"], ["goog.date", "goog.date.Date", "goog.date.DateTime", "goog.date.Interval"]); goog.addDependency("/closure/goog/db/cursor.js", ["goog.db.Cursor"], ["goog.async.Deferred", "goog.db.Error", "goog.debug", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/db/db.js", ["goog.db"], ["goog.async.Deferred", "goog.db.Error", "goog.db.IndexedDb", "goog.db.Transaction"]); goog.addDependency("/closure/goog/db/error.js", ["goog.db.Error", "goog.db.Error.ErrorCode", "goog.db.Error.ErrorName", "goog.db.Error.VersionChangeBlockedError"], ["goog.debug.Error"]); goog.addDependency("/closure/goog/db/index.js", ["goog.db.Index"], ["goog.async.Deferred", "goog.db.Cursor", "goog.db.Error", "goog.debug"]); goog.addDependency("/closure/goog/db/indexeddb.js", ["goog.db.IndexedDb"], ["goog.async.Deferred", "goog.db.Error", "goog.db.Error.VersionChangeBlockedError", "goog.db.ObjectStore", "goog.db.Transaction", "goog.db.Transaction.TransactionMode", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/db/keyrange.js", ["goog.db.KeyRange"], []); goog.addDependency("/closure/goog/db/objectstore.js", ["goog.db.ObjectStore"], ["goog.async.Deferred", "goog.db.Cursor", "goog.db.Error", "goog.db.Index", "goog.debug", "goog.events"]); goog.addDependency("/closure/goog/db/transaction.js", ["goog.db.Transaction", "goog.db.Transaction.TransactionMode"], ["goog.async.Deferred", "goog.db.Error", "goog.db.ObjectStore", "goog.events.EventHandler", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/debug/console.js", ["goog.debug.Console"], ["goog.debug.LogManager", "goog.debug.Logger.Level", "goog.debug.TextFormatter"]); goog.addDependency("/closure/goog/debug/debug.js", ["goog.debug"], ["goog.array", "goog.string", "goog.structs.Set", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/debugwindow.js", ["goog.debug.DebugWindow"], ["goog.debug.HtmlFormatter", "goog.debug.LogManager", "goog.debug.Logger", "goog.structs.CircularBuffer", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/devcss/devcss.js", ["goog.debug.DevCss", "goog.debug.DevCss.UserAgent"], ["goog.cssom", "goog.dom.classes", "goog.events", "goog.events.EventType", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/devcss/devcssrunner.js", ["goog.debug.devCssRunner"], ["goog.debug.DevCss"]); goog.addDependency("/closure/goog/debug/divconsole.js", ["goog.debug.DivConsole"], ["goog.debug.HtmlFormatter", "goog.debug.LogManager", "goog.style"]); goog.addDependency("/closure/goog/debug/entrypointregistry.js", ["goog.debug.EntryPointMonitor", "goog.debug.entryPointRegistry"], ["goog.asserts"]); goog.addDependency("/closure/goog/debug/error.js", ["goog.debug.Error"], []); goog.addDependency("/closure/goog/debug/errorhandler.js", ["goog.debug.ErrorHandler", "goog.debug.ErrorHandler.ProtectedFunctionError"], ["goog.asserts", "goog.debug", "goog.debug.EntryPointMonitor", "goog.debug.Trace"]); goog.addDependency("/closure/goog/debug/errorhandlerweakdep.js", ["goog.debug.errorHandlerWeakDep"], []); goog.addDependency("/closure/goog/debug/errorreporter.js", ["goog.debug.ErrorReporter", "goog.debug.ErrorReporter.ExceptionEvent"], ["goog.asserts", "goog.debug", "goog.debug.ErrorHandler", "goog.debug.entryPointRegistry", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.log", "goog.net.XhrIo", "goog.object", "goog.string", "goog.uri.utils", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/fancywindow.js", ["goog.debug.FancyWindow"], ["goog.debug.DebugWindow", "goog.debug.LogManager", "goog.debug.Logger", "goog.dom.DomHelper", "goog.object", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/formatter.js", ["goog.debug.Formatter", "goog.debug.HtmlFormatter", "goog.debug.TextFormatter"], ["goog.debug.RelativeTimeProvider", "goog.string"]); goog.addDependency("/closure/goog/debug/fpsdisplay.js", ["goog.debug.FpsDisplay"], ["goog.asserts", "goog.async.AnimationDelay", "goog.ui.Component"]); goog.addDependency("/closure/goog/debug/gcdiagnostics.js", ["goog.debug.GcDiagnostics"], ["goog.debug.Trace", "goog.log", "goog.userAgent"]); goog.addDependency("/closure/goog/debug/logbuffer.js", ["goog.debug.LogBuffer"], ["goog.asserts", "goog.debug.LogRecord"]); goog.addDependency("/closure/goog/debug/logger.js", ["goog.debug.LogManager", "goog.debug.Logger", "goog.debug.Logger.Level"], ["goog.array", "goog.asserts", "goog.debug", "goog.debug.LogBuffer", "goog.debug.LogRecord"]); goog.addDependency("/closure/goog/debug/logrecord.js", ["goog.debug.LogRecord"], []); goog.addDependency("/closure/goog/debug/logrecordserializer.js", ["goog.debug.logRecordSerializer"], ["goog.debug.LogRecord", "goog.debug.Logger.Level", "goog.json", "goog.object"]); goog.addDependency("/closure/goog/debug/reflect.js", ["goog.debug.reflect"], []); goog.addDependency("/closure/goog/debug/relativetimeprovider.js", ["goog.debug.RelativeTimeProvider"], []); goog.addDependency("/closure/goog/debug/tracer.js", ["goog.debug.Trace"], ["goog.array", "goog.iter", "goog.log", "goog.structs.Map", "goog.structs.SimplePool"]); goog.addDependency("/closure/goog/demos/autocompleteremotedata.js", [], []); goog.addDependency("/closure/goog/demos/autocompleterichremotedata.js", [], []); goog.addDependency("/closure/goog/demos/editor/equationeditor.js", ["goog.demos.editor.EquationEditor"], ["goog.ui.equation.EquationEditorDialog"]); goog.addDependency("/closure/goog/demos/editor/helloworld.js", ["goog.demos.editor.HelloWorld"], ["goog.dom", "goog.dom.TagName", "goog.editor.Plugin"]); goog.addDependency("/closure/goog/demos/editor/helloworlddialog.js", ["goog.demos.editor.HelloWorldDialog", "goog.demos.editor.HelloWorldDialog.OkEvent"], ["goog.dom.TagName", "goog.events.Event", "goog.string", "goog.ui.editor.AbstractDialog"]); goog.addDependency("/closure/goog/demos/editor/helloworlddialogplugin.js", ["goog.demos.editor.HelloWorldDialogPlugin", "goog.demos.editor.HelloWorldDialogPlugin.Command"], ["goog.demos.editor.HelloWorldDialog", "goog.dom.TagName", "goog.editor.plugins.AbstractDialogPlugin", "goog.editor.range", "goog.functions", "goog.ui.editor.AbstractDialog"]); goog.addDependency("/closure/goog/demos/graphics/tigerdata.js", [], []); goog.addDependency("/closure/goog/demos/samplecomponent.js", ["goog.demos.SampleComponent"], ["goog.dom", "goog.dom.classes", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.ui.Component"]); goog.addDependency("/closure/goog/demos/tree/testdata.js", [], []); goog.addDependency("/closure/goog/demos/xpc/xpcdemo.js", [], ["goog.Uri", "goog.dom", "goog.events", "goog.events.EventType", "goog.json", "goog.log", "goog.net.xpc.CfgFields", "goog.net.xpc.CrossPageChannel"]); goog.addDependency("/closure/goog/disposable/disposable.js", ["goog.Disposable", "goog.dispose"], ["goog.disposable.IDisposable"]); goog.addDependency("/closure/goog/disposable/idisposable.js", ["goog.disposable.IDisposable"], []); goog.addDependency("/closure/goog/dom/a11y.js", ["goog.dom.a11y", "goog.dom.a11y.Announcer", "goog.dom.a11y.LivePriority", "goog.dom.a11y.Role", "goog.dom.a11y.State"], ["goog.a11y.aria", "goog.a11y.aria.Announcer", "goog.a11y.aria.LivePriority", "goog.a11y.aria.Role", "goog.a11y.aria.State"]); goog.addDependency("/closure/goog/dom/abstractmultirange.js", ["goog.dom.AbstractMultiRange"], ["goog.array", "goog.dom", "goog.dom.AbstractRange"]); goog.addDependency("/closure/goog/dom/abstractrange.js", ["goog.dom.AbstractRange", "goog.dom.RangeIterator", "goog.dom.RangeType"], ["goog.dom", "goog.dom.NodeType", "goog.dom.SavedCaretRange", "goog.dom.TagIterator", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/annotate.js", ["goog.dom.annotate"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.string"]); goog.addDependency("/closure/goog/dom/browserfeature.js", ["goog.dom.BrowserFeature"], ["goog.userAgent"]); goog.addDependency("/closure/goog/dom/browserrange/abstractrange.js", ["goog.dom.browserrange.AbstractRange"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.RangeEndpoint", "goog.dom.TagName", "goog.dom.TextRangeIterator", "goog.iter", "goog.math.Coordinate", "goog.string", "goog.string.StringBuffer", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/browserrange/browserrange.js", ["goog.dom.browserrange", "goog.dom.browserrange.Error"], ["goog.dom", "goog.dom.NodeType", "goog.dom.browserrange.GeckoRange", "goog.dom.browserrange.IeRange", "goog.dom.browserrange.OperaRange", "goog.dom.browserrange.W3cRange", "goog.dom.browserrange.WebKitRange", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/browserrange/geckorange.js", ["goog.dom.browserrange.GeckoRange"], ["goog.dom.browserrange.W3cRange"]); goog.addDependency("/closure/goog/dom/browserrange/ierange.js", ["goog.dom.browserrange.IeRange"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.dom.RangeEndpoint", "goog.dom.TagName", "goog.dom.browserrange.AbstractRange", "goog.log", "goog.string"]); goog.addDependency("/closure/goog/dom/browserrange/operarange.js", ["goog.dom.browserrange.OperaRange"], ["goog.dom.browserrange.W3cRange"]); goog.addDependency("/closure/goog/dom/browserrange/w3crange.js", ["goog.dom.browserrange.W3cRange"], ["goog.dom", "goog.dom.NodeType", "goog.dom.RangeEndpoint", "goog.dom.browserrange.AbstractRange", "goog.string"]); goog.addDependency("/closure/goog/dom/browserrange/webkitrange.js", ["goog.dom.browserrange.WebKitRange"], ["goog.dom.RangeEndpoint", "goog.dom.browserrange.W3cRange", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/bufferedviewportsizemonitor.js", ["goog.dom.BufferedViewportSizeMonitor"], ["goog.asserts", "goog.async.Delay", "goog.events", "goog.events.EventTarget", "goog.events.EventType"]); goog.addDependency("/closure/goog/dom/bufferedviewportsizemonitor_test.js", ["goog.dom.BufferedViewportSizeMonitorTest"], ["goog.dom.BufferedViewportSizeMonitor", "goog.dom.ViewportSizeMonitor", "goog.events", "goog.events.EventType", "goog.math.Size", "goog.testing.MockClock", "goog.testing.events", "goog.testing.events.Event", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/dom/classes.js", ["goog.dom.classes"], ["goog.array"]); goog.addDependency("/closure/goog/dom/classes_test.js", ["goog.dom.classes_test"], ["goog.dom", "goog.dom.classes", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/dom/classlist.js", ["goog.dom.classlist"], ["goog.array", "goog.asserts"]); goog.addDependency("/closure/goog/dom/classlist_test.js", ["goog.dom.classlist_test"], ["goog.dom", "goog.dom.classlist", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/dom/controlrange.js", ["goog.dom.ControlRange", "goog.dom.ControlRangeIterator"], ["goog.array", "goog.dom", "goog.dom.AbstractMultiRange", "goog.dom.AbstractRange", "goog.dom.RangeIterator", "goog.dom.RangeType", "goog.dom.SavedRange", "goog.dom.TagWalkType", "goog.dom.TextRange", "goog.iter.StopIteration", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/dataset.js", ["goog.dom.dataset"], ["goog.string"]); goog.addDependency("/closure/goog/dom/dom.js", ["goog.dom", "goog.dom.Appendable", "goog.dom.DomHelper", "goog.dom.NodeType"], ["goog.array", "goog.dom.BrowserFeature", "goog.dom.TagName", "goog.dom.classes", "goog.math.Coordinate", "goog.math.Size", "goog.object", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/dom_test.js", ["goog.dom.dom_test"], ["goog.dom", "goog.dom.BrowserFeature", "goog.dom.DomHelper", "goog.dom.NodeType", "goog.dom.TagName", "goog.object", "goog.string.Unicode", "goog.testing.asserts", "goog.userAgent", "goog.userAgent.product", "goog.userAgent.product.isVersion"]); goog.addDependency("/closure/goog/dom/fontsizemonitor.js", ["goog.dom.FontSizeMonitor", "goog.dom.FontSizeMonitor.EventType"], ["goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/forms.js", ["goog.dom.forms"], ["goog.structs.Map"]); goog.addDependency("/closure/goog/dom/fullscreen.js", ["goog.dom.fullscreen", "goog.dom.fullscreen.EventType"], ["goog.dom", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/dom/iframe.js", ["goog.dom.iframe"], ["goog.dom", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/iter.js", ["goog.dom.iter.AncestorIterator", "goog.dom.iter.ChildIterator", "goog.dom.iter.SiblingIterator"], ["goog.iter.Iterator", "goog.iter.StopIteration"]); goog.addDependency("/closure/goog/dom/multirange.js", ["goog.dom.MultiRange", "goog.dom.MultiRangeIterator"], ["goog.array", "goog.dom.AbstractMultiRange", "goog.dom.AbstractRange", "goog.dom.RangeIterator", "goog.dom.RangeType", "goog.dom.SavedRange", "goog.dom.TextRange", "goog.iter.StopIteration", "goog.log"]); goog.addDependency("/closure/goog/dom/nodeiterator.js", ["goog.dom.NodeIterator"], ["goog.dom.TagIterator"]); goog.addDependency("/closure/goog/dom/nodeoffset.js", ["goog.dom.NodeOffset"], ["goog.Disposable", "goog.dom.TagName"]); goog.addDependency("/closure/goog/dom/pattern/abstractpattern.js", ["goog.dom.pattern.AbstractPattern"], ["goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/allchildren.js", ["goog.dom.pattern.AllChildren"], ["goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/callback/callback.js", ["goog.dom.pattern.callback"], ["goog.dom", "goog.dom.TagWalkType", "goog.iter"]); goog.addDependency("/closure/goog/dom/pattern/callback/counter.js", ["goog.dom.pattern.callback.Counter"], []); goog.addDependency("/closure/goog/dom/pattern/callback/test.js", ["goog.dom.pattern.callback.Test"], ["goog.iter.StopIteration"]); goog.addDependency("/closure/goog/dom/pattern/childmatches.js", ["goog.dom.pattern.ChildMatches"], ["goog.dom.pattern.AllChildren", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/endtag.js", ["goog.dom.pattern.EndTag"], ["goog.dom.TagWalkType", "goog.dom.pattern.Tag"]); goog.addDependency("/closure/goog/dom/pattern/fulltag.js", ["goog.dom.pattern.FullTag"], ["goog.dom.pattern.MatchType", "goog.dom.pattern.StartTag", "goog.dom.pattern.Tag"]); goog.addDependency("/closure/goog/dom/pattern/matcher.js", ["goog.dom.pattern.Matcher"], ["goog.dom.TagIterator", "goog.dom.pattern.MatchType", "goog.iter"]); goog.addDependency("/closure/goog/dom/pattern/nodetype.js", ["goog.dom.pattern.NodeType"], ["goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/pattern.js", ["goog.dom.pattern", "goog.dom.pattern.MatchType"], []); goog.addDependency("/closure/goog/dom/pattern/repeat.js", ["goog.dom.pattern.Repeat"], ["goog.dom.NodeType", "goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/sequence.js", ["goog.dom.pattern.Sequence"], ["goog.dom.NodeType", "goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/pattern/starttag.js", ["goog.dom.pattern.StartTag"], ["goog.dom.TagWalkType", "goog.dom.pattern.Tag"]); goog.addDependency("/closure/goog/dom/pattern/tag.js", ["goog.dom.pattern.Tag"], ["goog.dom.pattern", "goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType", "goog.object"]); goog.addDependency("/closure/goog/dom/pattern/text.js", ["goog.dom.pattern.Text"], ["goog.dom.NodeType", "goog.dom.pattern", "goog.dom.pattern.AbstractPattern", "goog.dom.pattern.MatchType"]); goog.addDependency("/closure/goog/dom/range.js", ["goog.dom.Range"], ["goog.dom", "goog.dom.AbstractRange", "goog.dom.ControlRange", "goog.dom.MultiRange", "goog.dom.NodeType", "goog.dom.TextRange", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/rangeendpoint.js", ["goog.dom.RangeEndpoint"], []); goog.addDependency("/closure/goog/dom/savedcaretrange.js", ["goog.dom.SavedCaretRange"], ["goog.array", "goog.dom", "goog.dom.SavedRange", "goog.dom.TagName", "goog.string"]); goog.addDependency("/closure/goog/dom/savedrange.js", ["goog.dom.SavedRange"], ["goog.Disposable", "goog.log"]); goog.addDependency("/closure/goog/dom/selection.js", ["goog.dom.selection"], ["goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/tagiterator.js", ["goog.dom.TagIterator", "goog.dom.TagWalkType"], ["goog.dom.NodeType", "goog.iter.Iterator", "goog.iter.StopIteration"]); goog.addDependency("/closure/goog/dom/tagname.js", ["goog.dom.TagName"], []); goog.addDependency("/closure/goog/dom/textrange.js", ["goog.dom.TextRange"], ["goog.array", "goog.dom", "goog.dom.AbstractRange", "goog.dom.RangeType", "goog.dom.SavedRange", "goog.dom.TagName", "goog.dom.TextRangeIterator", "goog.dom.browserrange", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/dom/textrangeiterator.js", ["goog.dom.TextRangeIterator"], ["goog.array", "goog.dom.NodeType", "goog.dom.RangeIterator", "goog.dom.TagName", "goog.iter.StopIteration"]); goog.addDependency("/closure/goog/dom/vendor.js", ["goog.dom.vendor"], ["goog.userAgent"]); goog.addDependency("/closure/goog/dom/viewportsizemonitor.js", ["goog.dom.ViewportSizeMonitor"], ["goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.math.Size"]); goog.addDependency("/closure/goog/dom/xml.js", ["goog.dom.xml"], ["goog.dom", "goog.dom.NodeType"]); goog.addDependency("/closure/goog/editor/browserfeature.js", ["goog.editor.BrowserFeature"], ["goog.editor.defines", "goog.userAgent", "goog.userAgent.product", "goog.userAgent.product.isVersion"]); goog.addDependency("/closure/goog/editor/clicktoeditwrapper.js", ["goog.editor.ClickToEditWrapper"], ["goog.Disposable", "goog.asserts", "goog.dom", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Field.EventType", "goog.editor.range", "goog.events.BrowserEvent.MouseButton", "goog.events.EventHandler", "goog.events.EventType", "goog.log"]); goog.addDependency("/closure/goog/editor/command.js", ["goog.editor.Command"], []); goog.addDependency("/closure/goog/editor/contenteditablefield.js", ["goog.editor.ContentEditableField"], ["goog.asserts", "goog.editor.Field", "goog.log"]); goog.addDependency("/closure/goog/editor/defines.js", ["goog.editor.defines"], []); goog.addDependency("/closure/goog/editor/field.js", ["goog.editor.Field", "goog.editor.Field.EventType"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.array", "goog.asserts", "goog.async.Delay", "goog.dom", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Plugin", "goog.editor.icontent", "goog.editor.icontent.FieldFormatInfo", "goog.editor.icontent.FieldStyleInfo", "goog.editor.node", "goog.editor.range", "goog.events", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.functions", "goog.log", "goog.string", "goog.string.Unicode", "goog.style", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/editor/field_test.js", ["goog.editor.field_test"], ["goog.dom", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.Field", "goog.editor.Plugin", "goog.editor.range", "goog.events", "goog.events.BrowserEvent", "goog.events.KeyCodes", "goog.functions", "goog.testing.LooseMock", "goog.testing.MockClock", "goog.testing.dom", "goog.testing.events", "goog.testing.events.Event", "goog.testing.recordFunction", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/focus.js", ["goog.editor.focus"], ["goog.dom.selection"]); goog.addDependency("/closure/goog/editor/icontent.js", ["goog.editor.icontent", "goog.editor.icontent.FieldFormatInfo", "goog.editor.icontent.FieldStyleInfo"], ["goog.editor.BrowserFeature", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/link.js", ["goog.editor.Link"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.node", "goog.editor.range", "goog.string", "goog.string.Unicode", "goog.uri.utils", "goog.uri.utils.ComponentIndex"]); goog.addDependency("/closure/goog/editor/node.js", ["goog.editor.node"], ["goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.iter.ChildIterator", "goog.dom.iter.SiblingIterator", "goog.iter", "goog.object", "goog.string", "goog.string.Unicode", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugin.js", ["goog.editor.Plugin"], ["goog.editor.Command", "goog.events.EventTarget", "goog.functions", "goog.log", "goog.object", "goog.reflect"]); goog.addDependency("/closure/goog/editor/plugins/abstractbubbleplugin.js", ["goog.editor.plugins.AbstractBubblePlugin"], ["goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.Plugin", "goog.editor.style", "goog.events", "goog.events.EventHandler", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.actionEventWrapper", "goog.functions", "goog.string.Unicode", "goog.ui.Component.EventType", "goog.ui.editor.Bubble", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/abstractdialogplugin.js", ["goog.editor.plugins.AbstractDialogPlugin", "goog.editor.plugins.AbstractDialogPlugin.EventType"], ["goog.dom", "goog.dom.Range", "goog.editor.Field.EventType", "goog.editor.Plugin", "goog.editor.range", "goog.events", "goog.ui.editor.AbstractDialog.EventType"]); goog.addDependency("/closure/goog/editor/plugins/abstracttabhandler.js", ["goog.editor.plugins.AbstractTabHandler"], ["goog.editor.Plugin", "goog.events.KeyCodes"]); goog.addDependency("/closure/goog/editor/plugins/basictextformatter.js", ["goog.editor.plugins.BasicTextFormatter", "goog.editor.plugins.BasicTextFormatter.COMMAND"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Link", "goog.editor.Plugin", "goog.editor.node", "goog.editor.range", "goog.editor.style", "goog.iter", "goog.iter.StopIteration", "goog.log", "goog.object", "goog.string", "goog.string.Unicode", "goog.style", "goog.ui.editor.messages", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/blockquote.js", ["goog.editor.plugins.Blockquote"], ["goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Plugin", "goog.editor.node", "goog.functions", "goog.log"]); goog.addDependency("/closure/goog/editor/plugins/emoticons.js", ["goog.editor.plugins.Emoticons"], ["goog.dom.TagName", "goog.editor.Plugin", "goog.editor.range", "goog.functions", "goog.ui.emoji.Emoji", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/enterhandler.js", ["goog.editor.plugins.EnterHandler"], ["goog.dom", "goog.dom.NodeOffset", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Plugin", "goog.editor.node", "goog.editor.plugins.Blockquote", "goog.editor.range", "goog.editor.style", "goog.events.KeyCodes", "goog.functions", "goog.object", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/equationeditorbubble.js", ["goog.editor.plugins.equation.EquationBubble"], ["goog.dom", "goog.dom.TagName", "goog.editor.Command", "goog.editor.plugins.AbstractBubblePlugin", "goog.string.Unicode", "goog.ui.editor.Bubble", "goog.ui.equation.ImageRenderer"]); goog.addDependency("/closure/goog/editor/plugins/equationeditorplugin.js", ["goog.editor.plugins.EquationEditorPlugin"], ["goog.dom", "goog.editor.Command", "goog.editor.plugins.AbstractDialogPlugin", "goog.editor.range", "goog.events", "goog.events.EventType", "goog.functions", "goog.log", "goog.ui.editor.AbstractDialog", "goog.ui.editor.EquationEditorDialog", "goog.ui.equation.ImageRenderer", "goog.ui.equation.PaletteManager"]); goog.addDependency("/closure/goog/editor/plugins/firststrong.js", ["goog.editor.plugins.FirstStrong"], ["goog.dom.NodeType", "goog.dom.TagIterator", "goog.dom.TagName", "goog.editor.Command", "goog.editor.Plugin", "goog.editor.node", "goog.editor.range", "goog.i18n.bidi", "goog.i18n.uChar", "goog.iter", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/headerformatter.js", ["goog.editor.plugins.HeaderFormatter"], ["goog.editor.Command", "goog.editor.Plugin", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/linkbubble.js", ["goog.editor.plugins.LinkBubble", "goog.editor.plugins.LinkBubble.Action"], ["goog.array", "goog.dom", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Link", "goog.editor.plugins.AbstractBubblePlugin", "goog.editor.range", "goog.string", "goog.style", "goog.ui.editor.messages", "goog.uri.utils", "goog.window"]); goog.addDependency("/closure/goog/editor/plugins/linkdialogplugin.js", ["goog.editor.plugins.LinkDialogPlugin"], ["goog.array", "goog.dom", "goog.editor.Command", "goog.editor.plugins.AbstractDialogPlugin", "goog.events.EventHandler", "goog.functions", "goog.ui.editor.AbstractDialog.EventType", "goog.ui.editor.LinkDialog", "goog.ui.editor.LinkDialog.EventType", "goog.ui.editor.LinkDialog.OkEvent", "goog.uri.utils"]); goog.addDependency("/closure/goog/editor/plugins/linkshortcutplugin.js", ["goog.editor.plugins.LinkShortcutPlugin"], ["goog.editor.Command", "goog.editor.Link", "goog.editor.Plugin", "goog.string"]); goog.addDependency("/closure/goog/editor/plugins/listtabhandler.js", ["goog.editor.plugins.ListTabHandler"], ["goog.dom.TagName", "goog.editor.Command", "goog.editor.plugins.AbstractTabHandler"]); goog.addDependency("/closure/goog/editor/plugins/loremipsum.js", ["goog.editor.plugins.LoremIpsum"], ["goog.asserts", "goog.dom", "goog.editor.Command", "goog.editor.Plugin", "goog.editor.node", "goog.functions"]); goog.addDependency("/closure/goog/editor/plugins/removeformatting.js", ["goog.editor.plugins.RemoveFormatting"], ["goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Plugin", "goog.editor.node", "goog.editor.range", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/spacestabhandler.js", ["goog.editor.plugins.SpacesTabHandler"], ["goog.dom", "goog.dom.TagName", "goog.editor.plugins.AbstractTabHandler", "goog.editor.range"]); goog.addDependency("/closure/goog/editor/plugins/tableeditor.js", ["goog.editor.plugins.TableEditor"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.editor.Plugin", "goog.editor.Table", "goog.editor.node", "goog.editor.range", "goog.object"]); goog.addDependency("/closure/goog/editor/plugins/tagonenterhandler.js", ["goog.editor.plugins.TagOnEnterHandler"], ["goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.TagName", "goog.editor.Command", "goog.editor.node", "goog.editor.plugins.EnterHandler", "goog.editor.range", "goog.editor.style", "goog.events.KeyCodes", "goog.string", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/plugins/undoredo.js", ["goog.editor.plugins.UndoRedo"], ["goog.dom", "goog.dom.NodeOffset", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.Command", "goog.editor.Field.EventType", "goog.editor.Plugin", "goog.editor.node", "goog.editor.plugins.UndoRedoManager", "goog.editor.plugins.UndoRedoState", "goog.events", "goog.events.EventHandler", "goog.log"]); goog.addDependency("/closure/goog/editor/plugins/undoredomanager.js", ["goog.editor.plugins.UndoRedoManager", "goog.editor.plugins.UndoRedoManager.EventType"], ["goog.editor.plugins.UndoRedoState", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/editor/plugins/undoredostate.js", ["goog.editor.plugins.UndoRedoState"], ["goog.events.EventTarget"]); goog.addDependency("/closure/goog/editor/range.js", ["goog.editor.range", "goog.editor.range.Point"], ["goog.array", "goog.dom", "goog.dom.NodeType", "goog.dom.Range", "goog.dom.RangeEndpoint", "goog.dom.SavedCaretRange", "goog.editor.node", "goog.editor.style", "goog.iter", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/seamlessfield.js", ["goog.editor.SeamlessField"], ["goog.cssom.iframe.style", "goog.dom", "goog.dom.Range", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Field", "goog.editor.icontent", "goog.editor.icontent.FieldFormatInfo", "goog.editor.icontent.FieldStyleInfo", "goog.editor.node", "goog.events", "goog.events.EventType", "goog.log", "goog.style"]); goog.addDependency("/closure/goog/editor/seamlessfield_test.js", ["goog.editor.seamlessfield_test"], ["goog.dom", "goog.dom.DomHelper", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.Field", "goog.editor.SeamlessField", "goog.events", "goog.functions", "goog.style", "goog.testing.MockClock", "goog.testing.MockRange", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/editor/style.js", ["goog.editor.style"], ["goog.dom", "goog.dom.NodeType", "goog.editor.BrowserFeature", "goog.events.EventType", "goog.object", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/editor/table.js", ["goog.editor.Table", "goog.editor.TableCell", "goog.editor.TableRow"], ["goog.dom", "goog.dom.DomHelper", "goog.dom.NodeType", "goog.dom.TagName", "goog.log", "goog.string.Unicode", "goog.style"]); goog.addDependency("/closure/goog/events/actioneventwrapper.js", ["goog.events.actionEventWrapper"], ["goog.events", "goog.events.EventHandler", "goog.events.EventType", "goog.events.EventWrapper", "goog.events.KeyCodes"]); goog.addDependency("/closure/goog/events/actionhandler.js", ["goog.events.ActionEvent", "goog.events.ActionHandler", "goog.events.ActionHandler.EventType", "goog.events.BeforeActionEvent"], ["goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.userAgent"]); goog.addDependency("/closure/goog/events/browserevent.js", ["goog.events.BrowserEvent", "goog.events.BrowserEvent.MouseButton"], ["goog.events.BrowserFeature", "goog.events.Event", "goog.events.EventType", "goog.reflect", "goog.userAgent"]); goog.addDependency("/closure/goog/events/browserfeature.js", ["goog.events.BrowserFeature"], ["goog.userAgent"]); goog.addDependency("/closure/goog/events/event.js", ["goog.events.Event", "goog.events.EventLike"], ["goog.Disposable"]); goog.addDependency("/closure/goog/events/eventhandler.js", ["goog.events.EventHandler"], ["goog.Disposable", "goog.events", "goog.object"]); goog.addDependency("/closure/goog/events/events.js", ["goog.events", "goog.events.Key", "goog.events.ListenableType"], ["goog.array", "goog.asserts", "goog.debug.entryPointRegistry", "goog.events.BrowserEvent", "goog.events.BrowserFeature", "goog.events.Listenable", "goog.events.Listener", "goog.object"]); goog.addDependency("/closure/goog/events/eventtarget.js", ["goog.events.EventTarget"], ["goog.Disposable", "goog.array", "goog.asserts", "goog.events", "goog.events.Event", "goog.events.Listenable", "goog.events.ListenerMap", "goog.object"]); goog.addDependency("/closure/goog/events/eventtargettester.js", ["goog.events.eventTargetTester", "goog.events.eventTargetTester.KeyType", "goog.events.eventTargetTester.UnlistenReturnType"], ["goog.array", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.testing.asserts", "goog.testing.recordFunction"]); goog.addDependency("/closure/goog/events/eventtype.js", ["goog.events.EventType"], ["goog.userAgent"]); goog.addDependency("/closure/goog/events/eventwrapper.js", ["goog.events.EventWrapper"], []); goog.addDependency("/closure/goog/events/filedrophandler.js", ["goog.events.FileDropHandler", "goog.events.FileDropHandler.EventType"], ["goog.array", "goog.dom", "goog.events", "goog.events.BrowserEvent", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.log"]); goog.addDependency("/closure/goog/events/focushandler.js", ["goog.events.FocusHandler", "goog.events.FocusHandler.EventType"], ["goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.userAgent"]); goog.addDependency("/closure/goog/events/imehandler.js", ["goog.events.ImeHandler", "goog.events.ImeHandler.Event", "goog.events.ImeHandler.EventType"], ["goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.userAgent"]); goog.addDependency("/closure/goog/events/inputhandler.js", ["goog.events.InputHandler", "goog.events.InputHandler.EventType"], ["goog.Timer", "goog.dom", "goog.events.BrowserEvent", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.KeyCodes", "goog.userAgent"]); goog.addDependency("/closure/goog/events/keycodes.js", ["goog.events.KeyCodes"], ["goog.userAgent"]); goog.addDependency("/closure/goog/events/keyhandler.js", ["goog.events.KeyEvent", "goog.events.KeyHandler", "goog.events.KeyHandler.EventType"], ["goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.userAgent"]); goog.addDependency("/closure/goog/events/keynames.js", ["goog.events.KeyNames"], []); goog.addDependency("/closure/goog/events/listenable.js", ["goog.events.Listenable", "goog.events.ListenableKey"], []); goog.addDependency("/closure/goog/events/listener.js", ["goog.events.Listener"], ["goog.events.ListenableKey"]); goog.addDependency("/closure/goog/events/listenermap.js", ["goog.events.ListenerMap"], ["goog.array", "goog.events.Listener", "goog.object"]); goog.addDependency("/closure/goog/events/listenermap_test.js", ["goog.events.ListenerMapTest"], ["goog.dispose", "goog.events.EventTarget", "goog.events.ListenerMap", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/events/mousewheelhandler.js", ["goog.events.MouseWheelEvent", "goog.events.MouseWheelHandler", "goog.events.MouseWheelHandler.EventType"], ["goog.dom", "goog.events", "goog.events.BrowserEvent", "goog.events.EventTarget", "goog.math", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/events/onlinehandler.js", ["goog.events.OnlineHandler", "goog.events.OnlineHandler.EventType"], ["goog.Timer", "goog.events.BrowserFeature", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.net.NetworkStatusMonitor", "goog.userAgent"]); goog.addDependency("/closure/goog/events/pastehandler.js", ["goog.events.PasteHandler", "goog.events.PasteHandler.EventType", "goog.events.PasteHandler.State"], ["goog.Timer", "goog.async.ConditionalDelay", "goog.events.BrowserEvent", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.log", "goog.userAgent"]); goog.addDependency("/closure/goog/format/emailaddress.js", ["goog.format.EmailAddress"], ["goog.string"]); goog.addDependency("/closure/goog/format/format.js", ["goog.format"], ["goog.i18n.GraphemeBreak", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/format/htmlprettyprinter.js", ["goog.format.HtmlPrettyPrinter", "goog.format.HtmlPrettyPrinter.Buffer"], ["goog.object", "goog.string.StringBuffer"]); goog.addDependency("/closure/goog/format/jsonprettyprinter.js", ["goog.format.JsonPrettyPrinter", "goog.format.JsonPrettyPrinter.HtmlDelimiters", "goog.format.JsonPrettyPrinter.TextDelimiters"], ["goog.json", "goog.json.Serializer", "goog.string", "goog.string.StringBuffer", "goog.string.format"]); goog.addDependency("/closure/goog/fs/entry.js", ["goog.fs.DirectoryEntry", "goog.fs.DirectoryEntry.Behavior", "goog.fs.Entry", "goog.fs.FileEntry"], []); goog.addDependency("/closure/goog/fs/entryimpl.js", ["goog.fs.DirectoryEntryImpl", "goog.fs.EntryImpl", "goog.fs.FileEntryImpl"], ["goog.array", "goog.async.Deferred", "goog.fs.DirectoryEntry", "goog.fs.Entry", "goog.fs.Error", "goog.fs.FileEntry", "goog.fs.FileWriter", "goog.functions", "goog.string"]); goog.addDependency("/closure/goog/fs/error.js", ["goog.fs.Error", "goog.fs.Error.ErrorCode"], ["goog.debug.Error", "goog.string"]); goog.addDependency("/closure/goog/fs/filereader.js", ["goog.fs.FileReader", "goog.fs.FileReader.EventType", "goog.fs.FileReader.ReadyState"], ["goog.async.Deferred", "goog.events.Event", "goog.events.EventTarget", "goog.fs.Error", "goog.fs.ProgressEvent"]); goog.addDependency("/closure/goog/fs/filesaver.js", ["goog.fs.FileSaver", "goog.fs.FileSaver.EventType", "goog.fs.FileSaver.ProgressEvent", "goog.fs.FileSaver.ReadyState"], ["goog.events.Event", "goog.events.EventTarget", "goog.fs.Error", "goog.fs.ProgressEvent"]); goog.addDependency("/closure/goog/fs/filesystem.js", ["goog.fs.FileSystem"], []); goog.addDependency("/closure/goog/fs/filesystemimpl.js", ["goog.fs.FileSystemImpl"], ["goog.fs.DirectoryEntryImpl", "goog.fs.FileSystem"]); goog.addDependency("/closure/goog/fs/filewriter.js", ["goog.fs.FileWriter"], ["goog.fs.Error", "goog.fs.FileSaver"]); goog.addDependency("/closure/goog/fs/fs.js", ["goog.fs"], ["goog.array", "goog.async.Deferred", "goog.fs.Error", "goog.fs.FileReader", "goog.fs.FileSystemImpl", "goog.userAgent"]); goog.addDependency("/closure/goog/fs/progressevent.js", ["goog.fs.ProgressEvent"], ["goog.events.Event"]); goog.addDependency("/closure/goog/functions/functions.js", ["goog.functions"], []); goog.addDependency("/closure/goog/fx/abstractdragdrop.js", ["goog.fx.AbstractDragDrop", "goog.fx.AbstractDragDrop.EventType", "goog.fx.DragDropEvent", "goog.fx.DragDropItem"], ["goog.dom", "goog.dom.classes", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.fx.Dragger", "goog.fx.Dragger.EventType", "goog.math.Box", "goog.math.Coordinate", "goog.style"]); goog.addDependency("/closure/goog/fx/anim/anim.js", ["goog.fx.anim", "goog.fx.anim.Animated"], ["goog.async.AnimationDelay", "goog.async.Delay", "goog.object"]); goog.addDependency("/closure/goog/fx/animation.js", ["goog.fx.Animation", "goog.fx.Animation.EventType", "goog.fx.Animation.State", "goog.fx.AnimationEvent"], ["goog.array", "goog.events.Event", "goog.fx.Transition", "goog.fx.Transition.EventType", "goog.fx.TransitionBase.State", "goog.fx.anim", "goog.fx.anim.Animated"]); goog.addDependency("/closure/goog/fx/animationqueue.js", ["goog.fx.AnimationParallelQueue", "goog.fx.AnimationQueue", "goog.fx.AnimationSerialQueue"], ["goog.array", "goog.asserts", "goog.events.EventHandler", "goog.fx.Transition.EventType", "goog.fx.TransitionBase", "goog.fx.TransitionBase.State"]); goog.addDependency("/closure/goog/fx/css3/fx.js", ["goog.fx.css3"], ["goog.fx.css3.Transition"]); goog.addDependency("/closure/goog/fx/css3/transition.js", ["goog.fx.css3.Transition"], ["goog.Timer", "goog.fx.TransitionBase", "goog.style", "goog.style.transition"]); goog.addDependency("/closure/goog/fx/cssspriteanimation.js", ["goog.fx.CssSpriteAnimation"], ["goog.fx.Animation"]); goog.addDependency("/closure/goog/fx/dom.js", ["goog.fx.dom", "goog.fx.dom.BgColorTransform", "goog.fx.dom.ColorTransform", "goog.fx.dom.Fade", "goog.fx.dom.FadeIn", "goog.fx.dom.FadeInAndShow", "goog.fx.dom.FadeOut", "goog.fx.dom.FadeOutAndHide", "goog.fx.dom.PredefinedEffect", "goog.fx.dom.Resize", "goog.fx.dom.ResizeHeight", "goog.fx.dom.ResizeWidth", "goog.fx.dom.Scroll", "goog.fx.dom.Slide", "goog.fx.dom.SlideFrom", "goog.fx.dom.Swipe"], ["goog.color", "goog.events", "goog.fx.Animation", "goog.fx.Transition.EventType", "goog.style", "goog.style.bidi"]); goog.addDependency("/closure/goog/fx/dragdrop.js", ["goog.fx.DragDrop"], ["goog.fx.AbstractDragDrop", "goog.fx.DragDropItem"]); goog.addDependency("/closure/goog/fx/dragdropgroup.js", ["goog.fx.DragDropGroup"], ["goog.dom", "goog.fx.AbstractDragDrop", "goog.fx.DragDropItem"]); goog.addDependency("/closure/goog/fx/dragger.js", ["goog.fx.DragEvent", "goog.fx.Dragger", "goog.fx.Dragger.EventType"], ["goog.dom", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.math.Coordinate", "goog.math.Rect", "goog.style", "goog.style.bidi", "goog.userAgent"]); goog.addDependency("/closure/goog/fx/draglistgroup.js", ["goog.fx.DragListDirection", "goog.fx.DragListGroup", "goog.fx.DragListGroup.EventType", "goog.fx.DragListGroupEvent"], ["goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.fx.Dragger", "goog.fx.Dragger.EventType", "goog.math.Coordinate", "goog.style"]); goog.addDependency("/closure/goog/fx/dragscrollsupport.js", ["goog.fx.DragScrollSupport"], ["goog.Disposable", "goog.Timer", "goog.dom", "goog.events.EventHandler", "goog.events.EventType", "goog.math.Coordinate", "goog.style"]); goog.addDependency("/closure/goog/fx/easing.js", ["goog.fx.easing"], []); goog.addDependency("/closure/goog/fx/fx.js", ["goog.fx"], ["goog.asserts", "goog.fx.Animation", "goog.fx.Animation.EventType", "goog.fx.Animation.State", "goog.fx.AnimationEvent", "goog.fx.Transition.EventType", "goog.fx.easing"]); goog.addDependency("/closure/goog/fx/transition.js", ["goog.fx.Transition", "goog.fx.Transition.EventType"], []); goog.addDependency("/closure/goog/fx/transitionbase.js", ["goog.fx.TransitionBase", "goog.fx.TransitionBase.State"], ["goog.events.EventTarget", "goog.fx.Transition", "goog.fx.Transition.EventType"]); goog.addDependency("/closure/goog/gears/basestore.js", ["goog.gears.BaseStore", "goog.gears.BaseStore.SchemaType"], ["goog.Disposable"]); goog.addDependency("/closure/goog/gears/database.js", ["goog.gears.Database", "goog.gears.Database.EventType", "goog.gears.Database.TransactionEvent"], ["goog.array", "goog.debug", "goog.events.Event", "goog.events.EventTarget", "goog.gears", "goog.json", "goog.log"]); goog.addDependency("/closure/goog/gears/gears.js", ["goog.gears"], ["goog.string"]); goog.addDependency("/closure/goog/gears/httprequest.js", ["goog.gears.HttpRequest"], ["goog.Timer", "goog.gears", "goog.net.WrapperXmlHttpFactory", "goog.net.XmlHttp"]); goog.addDependency("/closure/goog/gears/loggerclient.js", ["goog.gears.LoggerClient"], ["goog.Disposable", "goog.debug", "goog.debug.Logger"]); goog.addDependency("/closure/goog/gears/loggerserver.js", ["goog.gears.LoggerServer"], ["goog.Disposable", "goog.gears.Worker.EventType", "goog.log", "goog.log.Level"]); goog.addDependency("/closure/goog/gears/logstore.js", ["goog.gears.LogStore", "goog.gears.LogStore.Query"], ["goog.async.Delay", "goog.debug.LogManager", "goog.gears.BaseStore", "goog.gears.BaseStore.SchemaType", "goog.json", "goog.log", "goog.log.Level", "goog.log.LogRecord"]); goog.addDependency("/closure/goog/gears/managedresourcestore.js", ["goog.gears.ManagedResourceStore", "goog.gears.ManagedResourceStore.EventType", "goog.gears.ManagedResourceStore.UpdateStatus", "goog.gears.ManagedResourceStoreEvent"], ["goog.events.Event", "goog.events.EventTarget", "goog.gears", "goog.log", "goog.string"]); goog.addDependency("/closure/goog/gears/multipartformdata.js", ["goog.gears.MultipartFormData"], ["goog.asserts", "goog.gears", "goog.string"]); goog.addDependency("/closure/goog/gears/statustype.js", ["goog.gears.StatusType"], []); goog.addDependency("/closure/goog/gears/urlcapture.js", ["goog.gears.UrlCapture", "goog.gears.UrlCapture.Event", "goog.gears.UrlCapture.EventType"], ["goog.Uri", "goog.events.Event", "goog.events.EventTarget", "goog.gears", "goog.log"]); goog.addDependency("/closure/goog/gears/worker.js", ["goog.gears.Worker", "goog.gears.Worker.EventType", "goog.gears.WorkerEvent"], ["goog.events.Event", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/gears/workerchannel.js", ["goog.gears.WorkerChannel"], ["goog.Disposable", "goog.debug", "goog.events", "goog.gears.Worker", "goog.gears.Worker.EventType", "goog.gears.WorkerEvent", "goog.json", "goog.log", "goog.messaging.AbstractChannel"]); goog.addDependency("/closure/goog/gears/workerpool.js", ["goog.gears.WorkerPool", "goog.gears.WorkerPool.Event", "goog.gears.WorkerPool.EventType"], ["goog.events.Event", "goog.events.EventTarget", "goog.gears", "goog.gears.Worker"]); goog.addDependency("/closure/goog/graphics/abstractgraphics.js", ["goog.graphics.AbstractGraphics"], ["goog.dom", "goog.graphics.Path", "goog.math.Coordinate", "goog.math.Size", "goog.style", "goog.ui.Component"]); goog.addDependency("/closure/goog/graphics/affinetransform.js", ["goog.graphics.AffineTransform"], ["goog.math"]); goog.addDependency("/closure/goog/graphics/canvaselement.js", ["goog.graphics.CanvasEllipseElement", "goog.graphics.CanvasGroupElement", "goog.graphics.CanvasImageElement", "goog.graphics.CanvasPathElement", "goog.graphics.CanvasRectElement", "goog.graphics.CanvasTextElement"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.graphics.EllipseElement", "goog.graphics.GroupElement", "goog.graphics.ImageElement", "goog.graphics.Path", "goog.graphics.PathElement", "goog.graphics.RectElement", "goog.graphics.TextElement", "goog.math", "goog.string"]); goog.addDependency("/closure/goog/graphics/canvasgraphics.js", ["goog.graphics.CanvasGraphics"], ["goog.events.EventType", "goog.graphics.AbstractGraphics", "goog.graphics.CanvasEllipseElement", "goog.graphics.CanvasGroupElement", "goog.graphics.CanvasImageElement", "goog.graphics.CanvasPathElement", "goog.graphics.CanvasRectElement", "goog.graphics.CanvasTextElement", "goog.graphics.SolidFill", "goog.math.Size", "goog.style"]); goog.addDependency("/closure/goog/graphics/element.js", ["goog.graphics.Element"], ["goog.events", "goog.events.EventTarget", "goog.events.Listenable", "goog.graphics.AffineTransform", "goog.math"]); goog.addDependency("/closure/goog/graphics/ellipseelement.js", ["goog.graphics.EllipseElement"], ["goog.graphics.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/ext/coordinates.js", ["goog.graphics.ext.coordinates"], ["goog.string"]); goog.addDependency("/closure/goog/graphics/ext/element.js", ["goog.graphics.ext.Element"], ["goog.events", "goog.events.EventTarget", "goog.functions", "goog.graphics", "goog.graphics.ext.coordinates"]); goog.addDependency("/closure/goog/graphics/ext/ellipse.js", ["goog.graphics.ext.Ellipse"], ["goog.graphics.ext.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/ext/ext.js", ["goog.graphics.ext"], ["goog.graphics.ext.Ellipse", "goog.graphics.ext.Graphics", "goog.graphics.ext.Group", "goog.graphics.ext.Image", "goog.graphics.ext.Rectangle", "goog.graphics.ext.Shape", "goog.graphics.ext.coordinates"]); goog.addDependency("/closure/goog/graphics/ext/graphics.js", ["goog.graphics.ext.Graphics"], ["goog.events.EventType", "goog.graphics.ext.Group"]); goog.addDependency("/closure/goog/graphics/ext/group.js", ["goog.graphics.ext.Group"], ["goog.graphics.ext.Element"]); goog.addDependency("/closure/goog/graphics/ext/image.js", ["goog.graphics.ext.Image"], ["goog.graphics.ext.Element"]); goog.addDependency("/closure/goog/graphics/ext/path.js", ["goog.graphics.ext.Path"], ["goog.graphics.AffineTransform", "goog.graphics.Path", "goog.math", "goog.math.Rect"]); goog.addDependency("/closure/goog/graphics/ext/rectangle.js", ["goog.graphics.ext.Rectangle"], ["goog.graphics.ext.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/ext/shape.js", ["goog.graphics.ext.Shape"], ["goog.graphics.ext.Path", "goog.graphics.ext.StrokeAndFillElement", "goog.math.Rect"]); goog.addDependency("/closure/goog/graphics/ext/strokeandfillelement.js", ["goog.graphics.ext.StrokeAndFillElement"], ["goog.graphics.ext.Element"]); goog.addDependency("/closure/goog/graphics/fill.js", ["goog.graphics.Fill"], []); goog.addDependency("/closure/goog/graphics/font.js", ["goog.graphics.Font"], []); goog.addDependency("/closure/goog/graphics/graphics.js", ["goog.graphics"], ["goog.graphics.CanvasGraphics", "goog.graphics.SvgGraphics", "goog.graphics.VmlGraphics", "goog.userAgent"]); goog.addDependency("/closure/goog/graphics/groupelement.js", ["goog.graphics.GroupElement"], ["goog.graphics.Element"]); goog.addDependency("/closure/goog/graphics/imageelement.js", ["goog.graphics.ImageElement"], ["goog.graphics.Element"]); goog.addDependency("/closure/goog/graphics/lineargradient.js", ["goog.graphics.LinearGradient"], ["goog.asserts", "goog.graphics.Fill"]); goog.addDependency("/closure/goog/graphics/path.js", ["goog.graphics.Path", "goog.graphics.Path.Segment"], ["goog.array", "goog.math"]); goog.addDependency("/closure/goog/graphics/pathelement.js", ["goog.graphics.PathElement"], ["goog.graphics.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/paths.js", ["goog.graphics.paths"], ["goog.graphics.Path", "goog.math.Coordinate"]); goog.addDependency("/closure/goog/graphics/rectelement.js", ["goog.graphics.RectElement"], ["goog.graphics.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/solidfill.js", ["goog.graphics.SolidFill"], ["goog.graphics.Fill"]); goog.addDependency("/closure/goog/graphics/stroke.js", ["goog.graphics.Stroke"], []); goog.addDependency("/closure/goog/graphics/strokeandfillelement.js", ["goog.graphics.StrokeAndFillElement"], ["goog.graphics.Element"]); goog.addDependency("/closure/goog/graphics/svgelement.js", ["goog.graphics.SvgEllipseElement", "goog.graphics.SvgGroupElement", "goog.graphics.SvgImageElement", "goog.graphics.SvgPathElement", "goog.graphics.SvgRectElement", "goog.graphics.SvgTextElement"], ["goog.dom", "goog.graphics.EllipseElement", "goog.graphics.GroupElement", "goog.graphics.ImageElement", "goog.graphics.PathElement", "goog.graphics.RectElement", "goog.graphics.TextElement"]); goog.addDependency("/closure/goog/graphics/svggraphics.js", ["goog.graphics.SvgGraphics"], ["goog.Timer", "goog.dom", "goog.events.EventHandler", "goog.events.EventType", "goog.graphics.AbstractGraphics", "goog.graphics.LinearGradient", "goog.graphics.Path", "goog.graphics.SolidFill", "goog.graphics.Stroke", "goog.graphics.SvgEllipseElement", "goog.graphics.SvgGroupElement", "goog.graphics.SvgImageElement", "goog.graphics.SvgPathElement", "goog.graphics.SvgRectElement", "goog.graphics.SvgTextElement", "goog.math", "goog.math.Size", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/graphics/textelement.js", ["goog.graphics.TextElement"], ["goog.graphics.StrokeAndFillElement"]); goog.addDependency("/closure/goog/graphics/vmlelement.js", ["goog.graphics.VmlEllipseElement", "goog.graphics.VmlGroupElement", "goog.graphics.VmlImageElement", "goog.graphics.VmlPathElement", "goog.graphics.VmlRectElement", "goog.graphics.VmlTextElement"], ["goog.dom", "goog.graphics.EllipseElement", "goog.graphics.GroupElement", "goog.graphics.ImageElement", "goog.graphics.PathElement", "goog.graphics.RectElement", "goog.graphics.TextElement"]); goog.addDependency("/closure/goog/graphics/vmlgraphics.js", ["goog.graphics.VmlGraphics"], ["goog.array", "goog.events", "goog.events.EventHandler", "goog.events.EventType", "goog.graphics.AbstractGraphics", "goog.graphics.LinearGradient", "goog.graphics.Path", "goog.graphics.SolidFill", "goog.graphics.VmlEllipseElement", "goog.graphics.VmlGroupElement", "goog.graphics.VmlImageElement", "goog.graphics.VmlPathElement", "goog.graphics.VmlRectElement", "goog.graphics.VmlTextElement", "goog.math", "goog.math.Size", "goog.string", "goog.style"]); goog.addDependency("/closure/goog/history/event.js", ["goog.history.Event"], ["goog.events.Event", "goog.history.EventType"]); goog.addDependency("/closure/goog/history/eventtype.js", ["goog.history.EventType"], []); goog.addDependency("/closure/goog/history/history.js", ["goog.History", "goog.History.Event", "goog.History.EventType"], ["goog.Timer", "goog.dom", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.history.Event", "goog.history.EventType", "goog.memoize", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/history/history_test.js", ["goog.HistoryTest"], ["goog.History", "goog.testing.jsunit", "goog.userAgent"]); goog.addDependency("/closure/goog/history/html5history.js", ["goog.history.Html5History", "goog.history.Html5History.TokenTransformer"], ["goog.asserts", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.history.Event", "goog.history.EventType"]); goog.addDependency("/closure/goog/i18n/bidi.js", ["goog.i18n.bidi"], []); goog.addDependency("/closure/goog/i18n/bidiformatter.js", ["goog.i18n.BidiFormatter"], ["goog.i18n.bidi", "goog.string"]); goog.addDependency("/closure/goog/i18n/charlistdecompressor.js", ["goog.i18n.CharListDecompressor"], ["goog.array", "goog.i18n.uChar"]); goog.addDependency("/closure/goog/i18n/charpickerdata.js", ["goog.i18n.CharPickerData"], []); goog.addDependency("/closure/goog/i18n/collation.js", ["goog.i18n.collation"], []); goog.addDependency("/closure/goog/i18n/compactnumberformatsymbols.js", ["goog.i18n.CompactNumberFormatSymbols", "goog.i18n.CompactNumberFormatSymbols_af", "goog.i18n.CompactNumberFormatSymbols_af_ZA", "goog.i18n.CompactNumberFormatSymbols_am", "goog.i18n.CompactNumberFormatSymbols_am_ET", "goog.i18n.CompactNumberFormatSymbols_ar", "goog.i18n.CompactNumberFormatSymbols_ar_001", "goog.i18n.CompactNumberFormatSymbols_ar_EG", "goog.i18n.CompactNumberFormatSymbols_bg", "goog.i18n.CompactNumberFormatSymbols_bg_BG", "goog.i18n.CompactNumberFormatSymbols_bn", "goog.i18n.CompactNumberFormatSymbols_bn_BD", "goog.i18n.CompactNumberFormatSymbols_br", "goog.i18n.CompactNumberFormatSymbols_br_FR", "goog.i18n.CompactNumberFormatSymbols_ca", "goog.i18n.CompactNumberFormatSymbols_ca_AD", "goog.i18n.CompactNumberFormatSymbols_ca_ES", "goog.i18n.CompactNumberFormatSymbols_chr", "goog.i18n.CompactNumberFormatSymbols_chr_US", "goog.i18n.CompactNumberFormatSymbols_cs", "goog.i18n.CompactNumberFormatSymbols_cs_CZ", "goog.i18n.CompactNumberFormatSymbols_cy", "goog.i18n.CompactNumberFormatSymbols_cy_GB", "goog.i18n.CompactNumberFormatSymbols_da", "goog.i18n.CompactNumberFormatSymbols_da_DK", "goog.i18n.CompactNumberFormatSymbols_de", "goog.i18n.CompactNumberFormatSymbols_de_AT", "goog.i18n.CompactNumberFormatSymbols_de_BE", "goog.i18n.CompactNumberFormatSymbols_de_CH", "goog.i18n.CompactNumberFormatSymbols_de_DE", "goog.i18n.CompactNumberFormatSymbols_de_LU", "goog.i18n.CompactNumberFormatSymbols_el", "goog.i18n.CompactNumberFormatSymbols_el_GR", "goog.i18n.CompactNumberFormatSymbols_en", "goog.i18n.CompactNumberFormatSymbols_en_AS", "goog.i18n.CompactNumberFormatSymbols_en_AU", "goog.i18n.CompactNumberFormatSymbols_en_Dsrt_US", "goog.i18n.CompactNumberFormatSymbols_en_FM", "goog.i18n.CompactNumberFormatSymbols_en_GB", "goog.i18n.CompactNumberFormatSymbols_en_GU", "goog.i18n.CompactNumberFormatSymbols_en_IE", "goog.i18n.CompactNumberFormatSymbols_en_IN", "goog.i18n.CompactNumberFormatSymbols_en_MH", "goog.i18n.CompactNumberFormatSymbols_en_MP", "goog.i18n.CompactNumberFormatSymbols_en_PR", "goog.i18n.CompactNumberFormatSymbols_en_PW", "goog.i18n.CompactNumberFormatSymbols_en_SG", "goog.i18n.CompactNumberFormatSymbols_en_TC", "goog.i18n.CompactNumberFormatSymbols_en_UM", "goog.i18n.CompactNumberFormatSymbols_en_US", "goog.i18n.CompactNumberFormatSymbols_en_VG", "goog.i18n.CompactNumberFormatSymbols_en_VI", "goog.i18n.CompactNumberFormatSymbols_en_ZA", "goog.i18n.CompactNumberFormatSymbols_es", "goog.i18n.CompactNumberFormatSymbols_es_419", "goog.i18n.CompactNumberFormatSymbols_es_EA", "goog.i18n.CompactNumberFormatSymbols_es_ES", "goog.i18n.CompactNumberFormatSymbols_es_IC", "goog.i18n.CompactNumberFormatSymbols_et", "goog.i18n.CompactNumberFormatSymbols_et_EE", "goog.i18n.CompactNumberFormatSymbols_eu", "goog.i18n.CompactNumberFormatSymbols_eu_ES", "goog.i18n.CompactNumberFormatSymbols_fa", "goog.i18n.CompactNumberFormatSymbols_fa_IR", "goog.i18n.CompactNumberFormatSymbols_fi", "goog.i18n.CompactNumberFormatSymbols_fi_FI", "goog.i18n.CompactNumberFormatSymbols_fil", "goog.i18n.CompactNumberFormatSymbols_fil_PH", "goog.i18n.CompactNumberFormatSymbols_fr", "goog.i18n.CompactNumberFormatSymbols_fr_BL", "goog.i18n.CompactNumberFormatSymbols_fr_CA", "goog.i18n.CompactNumberFormatSymbols_fr_FR", "goog.i18n.CompactNumberFormatSymbols_fr_GF", "goog.i18n.CompactNumberFormatSymbols_fr_GP", "goog.i18n.CompactNumberFormatSymbols_fr_MC", "goog.i18n.CompactNumberFormatSymbols_fr_MF", "goog.i18n.CompactNumberFormatSymbols_fr_MQ", "goog.i18n.CompactNumberFormatSymbols_fr_RE", "goog.i18n.CompactNumberFormatSymbols_fr_YT", "goog.i18n.CompactNumberFormatSymbols_gl", "goog.i18n.CompactNumberFormatSymbols_gl_ES", "goog.i18n.CompactNumberFormatSymbols_gsw", "goog.i18n.CompactNumberFormatSymbols_gsw_CH", "goog.i18n.CompactNumberFormatSymbols_gu", "goog.i18n.CompactNumberFormatSymbols_gu_IN", "goog.i18n.CompactNumberFormatSymbols_haw", "goog.i18n.CompactNumberFormatSymbols_haw_US", "goog.i18n.CompactNumberFormatSymbols_he", "goog.i18n.CompactNumberFormatSymbols_he_IL", "goog.i18n.CompactNumberFormatSymbols_hi", "goog.i18n.CompactNumberFormatSymbols_hi_IN", "goog.i18n.CompactNumberFormatSymbols_hr", "goog.i18n.CompactNumberFormatSymbols_hr_HR", "goog.i18n.CompactNumberFormatSymbols_hu", "goog.i18n.CompactNumberFormatSymbols_hu_HU", "goog.i18n.CompactNumberFormatSymbols_id", "goog.i18n.CompactNumberFormatSymbols_id_ID", "goog.i18n.CompactNumberFormatSymbols_in", "goog.i18n.CompactNumberFormatSymbols_is", "goog.i18n.CompactNumberFormatSymbols_is_IS", "goog.i18n.CompactNumberFormatSymbols_it", "goog.i18n.CompactNumberFormatSymbols_it_IT", "goog.i18n.CompactNumberFormatSymbols_it_SM", "goog.i18n.CompactNumberFormatSymbols_iw", "goog.i18n.CompactNumberFormatSymbols_ja", "goog.i18n.CompactNumberFormatSymbols_ja_JP", "goog.i18n.CompactNumberFormatSymbols_kn", "goog.i18n.CompactNumberFormatSymbols_kn_IN", "goog.i18n.CompactNumberFormatSymbols_ko", "goog.i18n.CompactNumberFormatSymbols_ko_KR", "goog.i18n.CompactNumberFormatSymbols_ln", "goog.i18n.CompactNumberFormatSymbols_ln_CD", "goog.i18n.CompactNumberFormatSymbols_lt", "goog.i18n.CompactNumberFormatSymbols_lt_LT", "goog.i18n.CompactNumberFormatSymbols_lv", "goog.i18n.CompactNumberFormatSymbols_lv_LV", "goog.i18n.CompactNumberFormatSymbols_ml", "goog.i18n.CompactNumberFormatSymbols_ml_IN", "goog.i18n.CompactNumberFormatSymbols_mr", "goog.i18n.CompactNumberFormatSymbols_mr_IN", "goog.i18n.CompactNumberFormatSymbols_ms", "goog.i18n.CompactNumberFormatSymbols_ms_Latn_MY", "goog.i18n.CompactNumberFormatSymbols_mt", "goog.i18n.CompactNumberFormatSymbols_mt_MT", "goog.i18n.CompactNumberFormatSymbols_nb", "goog.i18n.CompactNumberFormatSymbols_nb_NO", "goog.i18n.CompactNumberFormatSymbols_nl", "goog.i18n.CompactNumberFormatSymbols_nl_NL", "goog.i18n.CompactNumberFormatSymbols_no", "goog.i18n.CompactNumberFormatSymbols_or", "goog.i18n.CompactNumberFormatSymbols_or_IN", "goog.i18n.CompactNumberFormatSymbols_pl", "goog.i18n.CompactNumberFormatSymbols_pl_PL", "goog.i18n.CompactNumberFormatSymbols_pt", "goog.i18n.CompactNumberFormatSymbols_pt_BR", "goog.i18n.CompactNumberFormatSymbols_pt_PT", "goog.i18n.CompactNumberFormatSymbols_ro", "goog.i18n.CompactNumberFormatSymbols_ro_RO", "goog.i18n.CompactNumberFormatSymbols_ru", "goog.i18n.CompactNumberFormatSymbols_ru_RU", "goog.i18n.CompactNumberFormatSymbols_sk", "goog.i18n.CompactNumberFormatSymbols_sk_SK", "goog.i18n.CompactNumberFormatSymbols_sl", "goog.i18n.CompactNumberFormatSymbols_sl_SI", "goog.i18n.CompactNumberFormatSymbols_sq", "goog.i18n.CompactNumberFormatSymbols_sq_AL", "goog.i18n.CompactNumberFormatSymbols_sr", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_RS", "goog.i18n.CompactNumberFormatSymbols_sv", "goog.i18n.CompactNumberFormatSymbols_sv_SE", "goog.i18n.CompactNumberFormatSymbols_sw", "goog.i18n.CompactNumberFormatSymbols_sw_TZ", "goog.i18n.CompactNumberFormatSymbols_ta", "goog.i18n.CompactNumberFormatSymbols_ta_IN", "goog.i18n.CompactNumberFormatSymbols_te", "goog.i18n.CompactNumberFormatSymbols_te_IN", "goog.i18n.CompactNumberFormatSymbols_th", "goog.i18n.CompactNumberFormatSymbols_th_TH", "goog.i18n.CompactNumberFormatSymbols_tl", "goog.i18n.CompactNumberFormatSymbols_tr", "goog.i18n.CompactNumberFormatSymbols_tr_TR", "goog.i18n.CompactNumberFormatSymbols_uk", "goog.i18n.CompactNumberFormatSymbols_uk_UA", "goog.i18n.CompactNumberFormatSymbols_ur", "goog.i18n.CompactNumberFormatSymbols_ur_PK", "goog.i18n.CompactNumberFormatSymbols_vi", "goog.i18n.CompactNumberFormatSymbols_vi_VN", "goog.i18n.CompactNumberFormatSymbols_zh", "goog.i18n.CompactNumberFormatSymbols_zh_CN", "goog.i18n.CompactNumberFormatSymbols_zh_HK", "goog.i18n.CompactNumberFormatSymbols_zh_Hans_CN", "goog.i18n.CompactNumberFormatSymbols_zh_TW", "goog.i18n.CompactNumberFormatSymbols_zu", "goog.i18n.CompactNumberFormatSymbols_zu_ZA"], []); goog.addDependency("/closure/goog/i18n/compactnumberformatsymbols_ext.js", ["goog.i18n.CompactNumberFormatSymbolsExt", "goog.i18n.CompactNumberFormatSymbols_aa", "goog.i18n.CompactNumberFormatSymbols_aa_DJ", "goog.i18n.CompactNumberFormatSymbols_aa_ER", "goog.i18n.CompactNumberFormatSymbols_aa_ET", "goog.i18n.CompactNumberFormatSymbols_af_NA", "goog.i18n.CompactNumberFormatSymbols_agq", "goog.i18n.CompactNumberFormatSymbols_agq_CM", "goog.i18n.CompactNumberFormatSymbols_ak", "goog.i18n.CompactNumberFormatSymbols_ak_GH", "goog.i18n.CompactNumberFormatSymbols_ar_AE", "goog.i18n.CompactNumberFormatSymbols_ar_BH", "goog.i18n.CompactNumberFormatSymbols_ar_DJ", "goog.i18n.CompactNumberFormatSymbols_ar_DZ", "goog.i18n.CompactNumberFormatSymbols_ar_EH", "goog.i18n.CompactNumberFormatSymbols_ar_ER", "goog.i18n.CompactNumberFormatSymbols_ar_IL", "goog.i18n.CompactNumberFormatSymbols_ar_IQ", "goog.i18n.CompactNumberFormatSymbols_ar_JO", "goog.i18n.CompactNumberFormatSymbols_ar_KM", "goog.i18n.CompactNumberFormatSymbols_ar_KW", "goog.i18n.CompactNumberFormatSymbols_ar_LB", "goog.i18n.CompactNumberFormatSymbols_ar_LY", "goog.i18n.CompactNumberFormatSymbols_ar_MA", "goog.i18n.CompactNumberFormatSymbols_ar_MR", "goog.i18n.CompactNumberFormatSymbols_ar_OM", "goog.i18n.CompactNumberFormatSymbols_ar_PS", "goog.i18n.CompactNumberFormatSymbols_ar_QA", "goog.i18n.CompactNumberFormatSymbols_ar_SA", "goog.i18n.CompactNumberFormatSymbols_ar_SD", "goog.i18n.CompactNumberFormatSymbols_ar_SO", "goog.i18n.CompactNumberFormatSymbols_ar_SY", "goog.i18n.CompactNumberFormatSymbols_ar_TD", "goog.i18n.CompactNumberFormatSymbols_ar_TN", "goog.i18n.CompactNumberFormatSymbols_ar_YE", "goog.i18n.CompactNumberFormatSymbols_as", "goog.i18n.CompactNumberFormatSymbols_as_IN", "goog.i18n.CompactNumberFormatSymbols_asa", "goog.i18n.CompactNumberFormatSymbols_asa_TZ", "goog.i18n.CompactNumberFormatSymbols_ast", "goog.i18n.CompactNumberFormatSymbols_ast_ES", "goog.i18n.CompactNumberFormatSymbols_az", "goog.i18n.CompactNumberFormatSymbols_az_Cyrl", "goog.i18n.CompactNumberFormatSymbols_az_Cyrl_AZ", "goog.i18n.CompactNumberFormatSymbols_az_Latn", "goog.i18n.CompactNumberFormatSymbols_az_Latn_AZ", "goog.i18n.CompactNumberFormatSymbols_bas", "goog.i18n.CompactNumberFormatSymbols_bas_CM", "goog.i18n.CompactNumberFormatSymbols_be", "goog.i18n.CompactNumberFormatSymbols_be_BY", "goog.i18n.CompactNumberFormatSymbols_bem", "goog.i18n.CompactNumberFormatSymbols_bem_ZM", "goog.i18n.CompactNumberFormatSymbols_bez", "goog.i18n.CompactNumberFormatSymbols_bez_TZ", "goog.i18n.CompactNumberFormatSymbols_bm", "goog.i18n.CompactNumberFormatSymbols_bm_ML", "goog.i18n.CompactNumberFormatSymbols_bn_IN", "goog.i18n.CompactNumberFormatSymbols_bo", "goog.i18n.CompactNumberFormatSymbols_bo_CN", "goog.i18n.CompactNumberFormatSymbols_bo_IN", "goog.i18n.CompactNumberFormatSymbols_brx", "goog.i18n.CompactNumberFormatSymbols_brx_IN", "goog.i18n.CompactNumberFormatSymbols_bs", "goog.i18n.CompactNumberFormatSymbols_bs_Cyrl", "goog.i18n.CompactNumberFormatSymbols_bs_Cyrl_BA", "goog.i18n.CompactNumberFormatSymbols_bs_Latn", "goog.i18n.CompactNumberFormatSymbols_bs_Latn_BA", "goog.i18n.CompactNumberFormatSymbols_byn", "goog.i18n.CompactNumberFormatSymbols_byn_ER", "goog.i18n.CompactNumberFormatSymbols_cgg", "goog.i18n.CompactNumberFormatSymbols_cgg_UG", "goog.i18n.CompactNumberFormatSymbols_ckb", "goog.i18n.CompactNumberFormatSymbols_ckb_Arab", "goog.i18n.CompactNumberFormatSymbols_ckb_Arab_IQ", "goog.i18n.CompactNumberFormatSymbols_ckb_Arab_IR", "goog.i18n.CompactNumberFormatSymbols_ckb_IQ", "goog.i18n.CompactNumberFormatSymbols_ckb_IR", "goog.i18n.CompactNumberFormatSymbols_ckb_Latn", "goog.i18n.CompactNumberFormatSymbols_ckb_Latn_IQ", "goog.i18n.CompactNumberFormatSymbols_dav", "goog.i18n.CompactNumberFormatSymbols_dav_KE", "goog.i18n.CompactNumberFormatSymbols_de_LI", "goog.i18n.CompactNumberFormatSymbols_dje", "goog.i18n.CompactNumberFormatSymbols_dje_NE", "goog.i18n.CompactNumberFormatSymbols_dua", "goog.i18n.CompactNumberFormatSymbols_dua_CM", "goog.i18n.CompactNumberFormatSymbols_dyo", "goog.i18n.CompactNumberFormatSymbols_dyo_SN", "goog.i18n.CompactNumberFormatSymbols_dz", "goog.i18n.CompactNumberFormatSymbols_dz_BT", "goog.i18n.CompactNumberFormatSymbols_ebu", "goog.i18n.CompactNumberFormatSymbols_ebu_KE", "goog.i18n.CompactNumberFormatSymbols_ee", "goog.i18n.CompactNumberFormatSymbols_ee_GH", "goog.i18n.CompactNumberFormatSymbols_ee_TG", "goog.i18n.CompactNumberFormatSymbols_el_CY", "goog.i18n.CompactNumberFormatSymbols_en_150", "goog.i18n.CompactNumberFormatSymbols_en_AG", "goog.i18n.CompactNumberFormatSymbols_en_BB", "goog.i18n.CompactNumberFormatSymbols_en_BE", "goog.i18n.CompactNumberFormatSymbols_en_BM", "goog.i18n.CompactNumberFormatSymbols_en_BS", "goog.i18n.CompactNumberFormatSymbols_en_BW", "goog.i18n.CompactNumberFormatSymbols_en_BZ", "goog.i18n.CompactNumberFormatSymbols_en_CA", "goog.i18n.CompactNumberFormatSymbols_en_CM", "goog.i18n.CompactNumberFormatSymbols_en_DM", "goog.i18n.CompactNumberFormatSymbols_en_Dsrt", "goog.i18n.CompactNumberFormatSymbols_en_FJ", "goog.i18n.CompactNumberFormatSymbols_en_GD", "goog.i18n.CompactNumberFormatSymbols_en_GG", "goog.i18n.CompactNumberFormatSymbols_en_GH", "goog.i18n.CompactNumberFormatSymbols_en_GI", "goog.i18n.CompactNumberFormatSymbols_en_GM", "goog.i18n.CompactNumberFormatSymbols_en_GY", "goog.i18n.CompactNumberFormatSymbols_en_HK", "goog.i18n.CompactNumberFormatSymbols_en_IM", "goog.i18n.CompactNumberFormatSymbols_en_JE", "goog.i18n.CompactNumberFormatSymbols_en_JM", "goog.i18n.CompactNumberFormatSymbols_en_KE", "goog.i18n.CompactNumberFormatSymbols_en_KI", "goog.i18n.CompactNumberFormatSymbols_en_KN", "goog.i18n.CompactNumberFormatSymbols_en_KY", "goog.i18n.CompactNumberFormatSymbols_en_LC", "goog.i18n.CompactNumberFormatSymbols_en_LR", "goog.i18n.CompactNumberFormatSymbols_en_LS", "goog.i18n.CompactNumberFormatSymbols_en_MG", "goog.i18n.CompactNumberFormatSymbols_en_MT", "goog.i18n.CompactNumberFormatSymbols_en_MU", "goog.i18n.CompactNumberFormatSymbols_en_MW", "goog.i18n.CompactNumberFormatSymbols_en_NA", "goog.i18n.CompactNumberFormatSymbols_en_NG", "goog.i18n.CompactNumberFormatSymbols_en_NZ", "goog.i18n.CompactNumberFormatSymbols_en_PG", "goog.i18n.CompactNumberFormatSymbols_en_PH", "goog.i18n.CompactNumberFormatSymbols_en_PK", "goog.i18n.CompactNumberFormatSymbols_en_SB", "goog.i18n.CompactNumberFormatSymbols_en_SC", "goog.i18n.CompactNumberFormatSymbols_en_SL", "goog.i18n.CompactNumberFormatSymbols_en_SS", "goog.i18n.CompactNumberFormatSymbols_en_SZ", "goog.i18n.CompactNumberFormatSymbols_en_TO", "goog.i18n.CompactNumberFormatSymbols_en_TT", "goog.i18n.CompactNumberFormatSymbols_en_TZ", "goog.i18n.CompactNumberFormatSymbols_en_UG", "goog.i18n.CompactNumberFormatSymbols_en_VC", "goog.i18n.CompactNumberFormatSymbols_en_VU", "goog.i18n.CompactNumberFormatSymbols_en_WS", "goog.i18n.CompactNumberFormatSymbols_en_ZM", "goog.i18n.CompactNumberFormatSymbols_en_ZW", "goog.i18n.CompactNumberFormatSymbols_eo", "goog.i18n.CompactNumberFormatSymbols_es_AR", "goog.i18n.CompactNumberFormatSymbols_es_BO", "goog.i18n.CompactNumberFormatSymbols_es_CL", "goog.i18n.CompactNumberFormatSymbols_es_CO", "goog.i18n.CompactNumberFormatSymbols_es_CR", "goog.i18n.CompactNumberFormatSymbols_es_CU", "goog.i18n.CompactNumberFormatSymbols_es_DO", "goog.i18n.CompactNumberFormatSymbols_es_EC", "goog.i18n.CompactNumberFormatSymbols_es_GQ", "goog.i18n.CompactNumberFormatSymbols_es_GT", "goog.i18n.CompactNumberFormatSymbols_es_HN", "goog.i18n.CompactNumberFormatSymbols_es_MX", "goog.i18n.CompactNumberFormatSymbols_es_NI", "goog.i18n.CompactNumberFormatSymbols_es_PA", "goog.i18n.CompactNumberFormatSymbols_es_PE", "goog.i18n.CompactNumberFormatSymbols_es_PH", "goog.i18n.CompactNumberFormatSymbols_es_PR", "goog.i18n.CompactNumberFormatSymbols_es_PY", "goog.i18n.CompactNumberFormatSymbols_es_SV", "goog.i18n.CompactNumberFormatSymbols_es_US", "goog.i18n.CompactNumberFormatSymbols_es_UY", "goog.i18n.CompactNumberFormatSymbols_es_VE", "goog.i18n.CompactNumberFormatSymbols_ewo", "goog.i18n.CompactNumberFormatSymbols_ewo_CM", "goog.i18n.CompactNumberFormatSymbols_fa_AF", "goog.i18n.CompactNumberFormatSymbols_ff", "goog.i18n.CompactNumberFormatSymbols_ff_SN", "goog.i18n.CompactNumberFormatSymbols_fo", "goog.i18n.CompactNumberFormatSymbols_fo_FO", "goog.i18n.CompactNumberFormatSymbols_fr_BE", "goog.i18n.CompactNumberFormatSymbols_fr_BF", "goog.i18n.CompactNumberFormatSymbols_fr_BI", "goog.i18n.CompactNumberFormatSymbols_fr_BJ", "goog.i18n.CompactNumberFormatSymbols_fr_CD", "goog.i18n.CompactNumberFormatSymbols_fr_CF", "goog.i18n.CompactNumberFormatSymbols_fr_CG", "goog.i18n.CompactNumberFormatSymbols_fr_CH", "goog.i18n.CompactNumberFormatSymbols_fr_CI", "goog.i18n.CompactNumberFormatSymbols_fr_CM", "goog.i18n.CompactNumberFormatSymbols_fr_DJ", "goog.i18n.CompactNumberFormatSymbols_fr_DZ", "goog.i18n.CompactNumberFormatSymbols_fr_GA", "goog.i18n.CompactNumberFormatSymbols_fr_GN", "goog.i18n.CompactNumberFormatSymbols_fr_GQ", "goog.i18n.CompactNumberFormatSymbols_fr_HT", "goog.i18n.CompactNumberFormatSymbols_fr_KM", "goog.i18n.CompactNumberFormatSymbols_fr_LU", "goog.i18n.CompactNumberFormatSymbols_fr_MA", "goog.i18n.CompactNumberFormatSymbols_fr_MG", "goog.i18n.CompactNumberFormatSymbols_fr_ML", "goog.i18n.CompactNumberFormatSymbols_fr_MR", "goog.i18n.CompactNumberFormatSymbols_fr_MU", "goog.i18n.CompactNumberFormatSymbols_fr_NC", "goog.i18n.CompactNumberFormatSymbols_fr_NE", "goog.i18n.CompactNumberFormatSymbols_fr_PF", "goog.i18n.CompactNumberFormatSymbols_fr_RW", "goog.i18n.CompactNumberFormatSymbols_fr_SC", "goog.i18n.CompactNumberFormatSymbols_fr_SN", "goog.i18n.CompactNumberFormatSymbols_fr_SY", "goog.i18n.CompactNumberFormatSymbols_fr_TD", "goog.i18n.CompactNumberFormatSymbols_fr_TG", "goog.i18n.CompactNumberFormatSymbols_fr_TN", "goog.i18n.CompactNumberFormatSymbols_fr_VU", "goog.i18n.CompactNumberFormatSymbols_fur", "goog.i18n.CompactNumberFormatSymbols_fur_IT", "goog.i18n.CompactNumberFormatSymbols_ga", "goog.i18n.CompactNumberFormatSymbols_ga_IE", "goog.i18n.CompactNumberFormatSymbols_gd", "goog.i18n.CompactNumberFormatSymbols_gd_GB", "goog.i18n.CompactNumberFormatSymbols_guz", "goog.i18n.CompactNumberFormatSymbols_guz_KE", "goog.i18n.CompactNumberFormatSymbols_gv", "goog.i18n.CompactNumberFormatSymbols_gv_GB", "goog.i18n.CompactNumberFormatSymbols_ha", "goog.i18n.CompactNumberFormatSymbols_ha_Latn", "goog.i18n.CompactNumberFormatSymbols_ha_Latn_GH", "goog.i18n.CompactNumberFormatSymbols_ha_Latn_NE", "goog.i18n.CompactNumberFormatSymbols_ha_Latn_NG", "goog.i18n.CompactNumberFormatSymbols_hr_BA", "goog.i18n.CompactNumberFormatSymbols_hy", "goog.i18n.CompactNumberFormatSymbols_hy_AM", "goog.i18n.CompactNumberFormatSymbols_ia", "goog.i18n.CompactNumberFormatSymbols_ia_FR", "goog.i18n.CompactNumberFormatSymbols_ig", "goog.i18n.CompactNumberFormatSymbols_ig_NG", "goog.i18n.CompactNumberFormatSymbols_ii", "goog.i18n.CompactNumberFormatSymbols_ii_CN", "goog.i18n.CompactNumberFormatSymbols_it_CH", "goog.i18n.CompactNumberFormatSymbols_jgo", "goog.i18n.CompactNumberFormatSymbols_jgo_CM", "goog.i18n.CompactNumberFormatSymbols_jmc", "goog.i18n.CompactNumberFormatSymbols_jmc_TZ", "goog.i18n.CompactNumberFormatSymbols_ka", "goog.i18n.CompactNumberFormatSymbols_ka_GE", "goog.i18n.CompactNumberFormatSymbols_kab", "goog.i18n.CompactNumberFormatSymbols_kab_DZ", "goog.i18n.CompactNumberFormatSymbols_kam", "goog.i18n.CompactNumberFormatSymbols_kam_KE", "goog.i18n.CompactNumberFormatSymbols_kde", "goog.i18n.CompactNumberFormatSymbols_kde_TZ", "goog.i18n.CompactNumberFormatSymbols_kea", "goog.i18n.CompactNumberFormatSymbols_kea_CV", "goog.i18n.CompactNumberFormatSymbols_khq", "goog.i18n.CompactNumberFormatSymbols_khq_ML", "goog.i18n.CompactNumberFormatSymbols_ki", "goog.i18n.CompactNumberFormatSymbols_ki_KE", "goog.i18n.CompactNumberFormatSymbols_kk", "goog.i18n.CompactNumberFormatSymbols_kk_Cyrl", "goog.i18n.CompactNumberFormatSymbols_kk_Cyrl_KZ", "goog.i18n.CompactNumberFormatSymbols_kkj", "goog.i18n.CompactNumberFormatSymbols_kkj_CM", "goog.i18n.CompactNumberFormatSymbols_kl", "goog.i18n.CompactNumberFormatSymbols_kl_GL", "goog.i18n.CompactNumberFormatSymbols_kln", "goog.i18n.CompactNumberFormatSymbols_kln_KE", "goog.i18n.CompactNumberFormatSymbols_km", "goog.i18n.CompactNumberFormatSymbols_km_KH", "goog.i18n.CompactNumberFormatSymbols_ko_KP", "goog.i18n.CompactNumberFormatSymbols_kok", "goog.i18n.CompactNumberFormatSymbols_kok_IN", "goog.i18n.CompactNumberFormatSymbols_ks", "goog.i18n.CompactNumberFormatSymbols_ks_Arab", "goog.i18n.CompactNumberFormatSymbols_ks_Arab_IN", "goog.i18n.CompactNumberFormatSymbols_ksb", "goog.i18n.CompactNumberFormatSymbols_ksb_TZ", "goog.i18n.CompactNumberFormatSymbols_ksf", "goog.i18n.CompactNumberFormatSymbols_ksf_CM", "goog.i18n.CompactNumberFormatSymbols_ksh", "goog.i18n.CompactNumberFormatSymbols_ksh_DE", "goog.i18n.CompactNumberFormatSymbols_kw", "goog.i18n.CompactNumberFormatSymbols_kw_GB", "goog.i18n.CompactNumberFormatSymbols_ky", "goog.i18n.CompactNumberFormatSymbols_ky_KG", "goog.i18n.CompactNumberFormatSymbols_lag", "goog.i18n.CompactNumberFormatSymbols_lag_TZ", "goog.i18n.CompactNumberFormatSymbols_lg", "goog.i18n.CompactNumberFormatSymbols_lg_UG", "goog.i18n.CompactNumberFormatSymbols_ln_AO", "goog.i18n.CompactNumberFormatSymbols_ln_CF", "goog.i18n.CompactNumberFormatSymbols_ln_CG", "goog.i18n.CompactNumberFormatSymbols_lo", "goog.i18n.CompactNumberFormatSymbols_lo_LA", "goog.i18n.CompactNumberFormatSymbols_lu", "goog.i18n.CompactNumberFormatSymbols_lu_CD", "goog.i18n.CompactNumberFormatSymbols_luo", "goog.i18n.CompactNumberFormatSymbols_luo_KE", "goog.i18n.CompactNumberFormatSymbols_luy", "goog.i18n.CompactNumberFormatSymbols_luy_KE", "goog.i18n.CompactNumberFormatSymbols_mas", "goog.i18n.CompactNumberFormatSymbols_mas_KE", "goog.i18n.CompactNumberFormatSymbols_mas_TZ", "goog.i18n.CompactNumberFormatSymbols_mer", "goog.i18n.CompactNumberFormatSymbols_mer_KE", "goog.i18n.CompactNumberFormatSymbols_mfe", "goog.i18n.CompactNumberFormatSymbols_mfe_MU", "goog.i18n.CompactNumberFormatSymbols_mg", "goog.i18n.CompactNumberFormatSymbols_mg_MG", "goog.i18n.CompactNumberFormatSymbols_mgh", "goog.i18n.CompactNumberFormatSymbols_mgh_MZ", "goog.i18n.CompactNumberFormatSymbols_mgo", "goog.i18n.CompactNumberFormatSymbols_mgo_CM", "goog.i18n.CompactNumberFormatSymbols_mk", "goog.i18n.CompactNumberFormatSymbols_mk_MK", "goog.i18n.CompactNumberFormatSymbols_mn", "goog.i18n.CompactNumberFormatSymbols_mn_Cyrl", "goog.i18n.CompactNumberFormatSymbols_mn_Cyrl_MN", "goog.i18n.CompactNumberFormatSymbols_ms_Latn", "goog.i18n.CompactNumberFormatSymbols_ms_Latn_BN", "goog.i18n.CompactNumberFormatSymbols_ms_Latn_SG", "goog.i18n.CompactNumberFormatSymbols_mua", "goog.i18n.CompactNumberFormatSymbols_mua_CM", "goog.i18n.CompactNumberFormatSymbols_my", "goog.i18n.CompactNumberFormatSymbols_my_MM", "goog.i18n.CompactNumberFormatSymbols_naq", "goog.i18n.CompactNumberFormatSymbols_naq_NA", "goog.i18n.CompactNumberFormatSymbols_nd", "goog.i18n.CompactNumberFormatSymbols_nd_ZW", "goog.i18n.CompactNumberFormatSymbols_ne", "goog.i18n.CompactNumberFormatSymbols_ne_IN", "goog.i18n.CompactNumberFormatSymbols_ne_NP", "goog.i18n.CompactNumberFormatSymbols_nl_AW", "goog.i18n.CompactNumberFormatSymbols_nl_BE", "goog.i18n.CompactNumberFormatSymbols_nl_CW", "goog.i18n.CompactNumberFormatSymbols_nl_SR", "goog.i18n.CompactNumberFormatSymbols_nl_SX", "goog.i18n.CompactNumberFormatSymbols_nmg", "goog.i18n.CompactNumberFormatSymbols_nmg_CM", "goog.i18n.CompactNumberFormatSymbols_nn", "goog.i18n.CompactNumberFormatSymbols_nn_NO", "goog.i18n.CompactNumberFormatSymbols_nnh", "goog.i18n.CompactNumberFormatSymbols_nnh_CM", "goog.i18n.CompactNumberFormatSymbols_nr", "goog.i18n.CompactNumberFormatSymbols_nr_ZA", "goog.i18n.CompactNumberFormatSymbols_nso", "goog.i18n.CompactNumberFormatSymbols_nso_ZA", "goog.i18n.CompactNumberFormatSymbols_nus", "goog.i18n.CompactNumberFormatSymbols_nus_SD", "goog.i18n.CompactNumberFormatSymbols_nyn", "goog.i18n.CompactNumberFormatSymbols_nyn_UG", "goog.i18n.CompactNumberFormatSymbols_om", "goog.i18n.CompactNumberFormatSymbols_om_ET", "goog.i18n.CompactNumberFormatSymbols_om_KE", "goog.i18n.CompactNumberFormatSymbols_os", "goog.i18n.CompactNumberFormatSymbols_os_GE", "goog.i18n.CompactNumberFormatSymbols_os_RU", "goog.i18n.CompactNumberFormatSymbols_pa", "goog.i18n.CompactNumberFormatSymbols_pa_Arab", "goog.i18n.CompactNumberFormatSymbols_pa_Arab_PK", "goog.i18n.CompactNumberFormatSymbols_pa_Guru", "goog.i18n.CompactNumberFormatSymbols_pa_Guru_IN", "goog.i18n.CompactNumberFormatSymbols_ps", "goog.i18n.CompactNumberFormatSymbols_ps_AF", "goog.i18n.CompactNumberFormatSymbols_pt_AO", "goog.i18n.CompactNumberFormatSymbols_pt_CV", "goog.i18n.CompactNumberFormatSymbols_pt_GW", "goog.i18n.CompactNumberFormatSymbols_pt_MO", "goog.i18n.CompactNumberFormatSymbols_pt_MZ", "goog.i18n.CompactNumberFormatSymbols_pt_ST", "goog.i18n.CompactNumberFormatSymbols_pt_TL", "goog.i18n.CompactNumberFormatSymbols_rm", "goog.i18n.CompactNumberFormatSymbols_rm_CH", "goog.i18n.CompactNumberFormatSymbols_rn", "goog.i18n.CompactNumberFormatSymbols_rn_BI", "goog.i18n.CompactNumberFormatSymbols_ro_MD", "goog.i18n.CompactNumberFormatSymbols_rof", "goog.i18n.CompactNumberFormatSymbols_rof_TZ", "goog.i18n.CompactNumberFormatSymbols_ru_BY", "goog.i18n.CompactNumberFormatSymbols_ru_KG", "goog.i18n.CompactNumberFormatSymbols_ru_KZ", "goog.i18n.CompactNumberFormatSymbols_ru_MD", "goog.i18n.CompactNumberFormatSymbols_ru_UA", "goog.i18n.CompactNumberFormatSymbols_rw", "goog.i18n.CompactNumberFormatSymbols_rw_RW", "goog.i18n.CompactNumberFormatSymbols_rwk", "goog.i18n.CompactNumberFormatSymbols_rwk_TZ", "goog.i18n.CompactNumberFormatSymbols_sah", "goog.i18n.CompactNumberFormatSymbols_sah_RU", "goog.i18n.CompactNumberFormatSymbols_saq", "goog.i18n.CompactNumberFormatSymbols_saq_KE", "goog.i18n.CompactNumberFormatSymbols_sbp", "goog.i18n.CompactNumberFormatSymbols_sbp_TZ", "goog.i18n.CompactNumberFormatSymbols_se", "goog.i18n.CompactNumberFormatSymbols_se_FI", "goog.i18n.CompactNumberFormatSymbols_se_NO", "goog.i18n.CompactNumberFormatSymbols_seh", "goog.i18n.CompactNumberFormatSymbols_seh_MZ", "goog.i18n.CompactNumberFormatSymbols_ses", "goog.i18n.CompactNumberFormatSymbols_ses_ML", "goog.i18n.CompactNumberFormatSymbols_sg", "goog.i18n.CompactNumberFormatSymbols_sg_CF", "goog.i18n.CompactNumberFormatSymbols_shi", "goog.i18n.CompactNumberFormatSymbols_shi_Latn", "goog.i18n.CompactNumberFormatSymbols_shi_Latn_MA", "goog.i18n.CompactNumberFormatSymbols_shi_Tfng", "goog.i18n.CompactNumberFormatSymbols_shi_Tfng_MA", "goog.i18n.CompactNumberFormatSymbols_si", "goog.i18n.CompactNumberFormatSymbols_si_LK", "goog.i18n.CompactNumberFormatSymbols_sn", "goog.i18n.CompactNumberFormatSymbols_sn_ZW", "goog.i18n.CompactNumberFormatSymbols_so", "goog.i18n.CompactNumberFormatSymbols_so_DJ", "goog.i18n.CompactNumberFormatSymbols_so_ET", "goog.i18n.CompactNumberFormatSymbols_so_KE", "goog.i18n.CompactNumberFormatSymbols_so_SO", "goog.i18n.CompactNumberFormatSymbols_sq_MK", "goog.i18n.CompactNumberFormatSymbols_sq_XK", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_BA", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_ME", "goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_XK", "goog.i18n.CompactNumberFormatSymbols_sr_Latn", "goog.i18n.CompactNumberFormatSymbols_sr_Latn_BA", "goog.i18n.CompactNumberFormatSymbols_sr_Latn_ME", "goog.i18n.CompactNumberFormatSymbols_sr_Latn_RS", "goog.i18n.CompactNumberFormatSymbols_sr_Latn_XK", "goog.i18n.CompactNumberFormatSymbols_ss", "goog.i18n.CompactNumberFormatSymbols_ss_SZ", "goog.i18n.CompactNumberFormatSymbols_ss_ZA", "goog.i18n.CompactNumberFormatSymbols_ssy", "goog.i18n.CompactNumberFormatSymbols_ssy_ER", "goog.i18n.CompactNumberFormatSymbols_st", "goog.i18n.CompactNumberFormatSymbols_st_LS", "goog.i18n.CompactNumberFormatSymbols_st_ZA", "goog.i18n.CompactNumberFormatSymbols_sv_AX", "goog.i18n.CompactNumberFormatSymbols_sv_FI", "goog.i18n.CompactNumberFormatSymbols_sw_KE", "goog.i18n.CompactNumberFormatSymbols_sw_UG", "goog.i18n.CompactNumberFormatSymbols_swc", "goog.i18n.CompactNumberFormatSymbols_swc_CD", "goog.i18n.CompactNumberFormatSymbols_ta_LK", "goog.i18n.CompactNumberFormatSymbols_ta_MY", "goog.i18n.CompactNumberFormatSymbols_ta_SG", "goog.i18n.CompactNumberFormatSymbols_teo", "goog.i18n.CompactNumberFormatSymbols_teo_KE", "goog.i18n.CompactNumberFormatSymbols_teo_UG", "goog.i18n.CompactNumberFormatSymbols_tg", "goog.i18n.CompactNumberFormatSymbols_tg_Cyrl", "goog.i18n.CompactNumberFormatSymbols_tg_Cyrl_TJ", "goog.i18n.CompactNumberFormatSymbols_ti", "goog.i18n.CompactNumberFormatSymbols_ti_ER", "goog.i18n.CompactNumberFormatSymbols_ti_ET", "goog.i18n.CompactNumberFormatSymbols_tig", "goog.i18n.CompactNumberFormatSymbols_tig_ER", "goog.i18n.CompactNumberFormatSymbols_tn", "goog.i18n.CompactNumberFormatSymbols_tn_BW", "goog.i18n.CompactNumberFormatSymbols_tn_ZA", "goog.i18n.CompactNumberFormatSymbols_to", "goog.i18n.CompactNumberFormatSymbols_to_TO", "goog.i18n.CompactNumberFormatSymbols_tr_CY", "goog.i18n.CompactNumberFormatSymbols_ts", "goog.i18n.CompactNumberFormatSymbols_ts_ZA", "goog.i18n.CompactNumberFormatSymbols_twq", "goog.i18n.CompactNumberFormatSymbols_twq_NE", "goog.i18n.CompactNumberFormatSymbols_tzm", "goog.i18n.CompactNumberFormatSymbols_tzm_Latn", "goog.i18n.CompactNumberFormatSymbols_tzm_Latn_MA", "goog.i18n.CompactNumberFormatSymbols_ur_IN", "goog.i18n.CompactNumberFormatSymbols_uz", "goog.i18n.CompactNumberFormatSymbols_uz_Arab", "goog.i18n.CompactNumberFormatSymbols_uz_Arab_AF", "goog.i18n.CompactNumberFormatSymbols_uz_Cyrl", "goog.i18n.CompactNumberFormatSymbols_uz_Cyrl_UZ", "goog.i18n.CompactNumberFormatSymbols_uz_Latn", "goog.i18n.CompactNumberFormatSymbols_uz_Latn_UZ", "goog.i18n.CompactNumberFormatSymbols_vai", "goog.i18n.CompactNumberFormatSymbols_vai_Latn", "goog.i18n.CompactNumberFormatSymbols_vai_Latn_LR", "goog.i18n.CompactNumberFormatSymbols_vai_Vaii", "goog.i18n.CompactNumberFormatSymbols_vai_Vaii_LR", "goog.i18n.CompactNumberFormatSymbols_ve", "goog.i18n.CompactNumberFormatSymbols_ve_ZA", "goog.i18n.CompactNumberFormatSymbols_vo", "goog.i18n.CompactNumberFormatSymbols_vun", "goog.i18n.CompactNumberFormatSymbols_vun_TZ", "goog.i18n.CompactNumberFormatSymbols_wae", "goog.i18n.CompactNumberFormatSymbols_wae_CH", "goog.i18n.CompactNumberFormatSymbols_wal", "goog.i18n.CompactNumberFormatSymbols_wal_ET", "goog.i18n.CompactNumberFormatSymbols_xh", "goog.i18n.CompactNumberFormatSymbols_xh_ZA", "goog.i18n.CompactNumberFormatSymbols_xog", "goog.i18n.CompactNumberFormatSymbols_xog_UG", "goog.i18n.CompactNumberFormatSymbols_yav", "goog.i18n.CompactNumberFormatSymbols_yav_CM", "goog.i18n.CompactNumberFormatSymbols_yo", "goog.i18n.CompactNumberFormatSymbols_yo_NG", "goog.i18n.CompactNumberFormatSymbols_zh_Hans", "goog.i18n.CompactNumberFormatSymbols_zh_Hans_HK", "goog.i18n.CompactNumberFormatSymbols_zh_Hans_MO", "goog.i18n.CompactNumberFormatSymbols_zh_Hans_SG", "goog.i18n.CompactNumberFormatSymbols_zh_Hant", "goog.i18n.CompactNumberFormatSymbols_zh_Hant_HK", "goog.i18n.CompactNumberFormatSymbols_zh_Hant_MO", "goog.i18n.CompactNumberFormatSymbols_zh_Hant_TW"], []); goog.addDependency("/closure/goog/i18n/currency.js", ["goog.i18n.currency", "goog.i18n.currency.CurrencyInfo", "goog.i18n.currency.CurrencyInfoTier2"], []); goog.addDependency("/closure/goog/i18n/currencycodemap.js", ["goog.i18n.currencyCodeMap", "goog.i18n.currencyCodeMapTier2"], []); goog.addDependency("/closure/goog/i18n/datetimeformat.js", ["goog.i18n.DateTimeFormat", "goog.i18n.DateTimeFormat.Format"], ["goog.asserts", "goog.i18n.DateTimeSymbols", "goog.i18n.TimeZone", "goog.string"]); goog.addDependency("/closure/goog/i18n/datetimeparse.js", ["goog.i18n.DateTimeParse"], ["goog.i18n.DateTimeFormat", "goog.i18n.DateTimeSymbols"]); goog.addDependency("/closure/goog/i18n/datetimepatterns.js", ["goog.i18n.DateTimePatterns", "goog.i18n.DateTimePatterns_af", "goog.i18n.DateTimePatterns_am", "goog.i18n.DateTimePatterns_ar", "goog.i18n.DateTimePatterns_bg", "goog.i18n.DateTimePatterns_bn", "goog.i18n.DateTimePatterns_br", "goog.i18n.DateTimePatterns_ca", "goog.i18n.DateTimePatterns_chr", "goog.i18n.DateTimePatterns_cs", "goog.i18n.DateTimePatterns_cy", "goog.i18n.DateTimePatterns_da", "goog.i18n.DateTimePatterns_de", "goog.i18n.DateTimePatterns_de_AT", "goog.i18n.DateTimePatterns_de_CH", "goog.i18n.DateTimePatterns_el", "goog.i18n.DateTimePatterns_en", "goog.i18n.DateTimePatterns_en_AU", "goog.i18n.DateTimePatterns_en_GB", "goog.i18n.DateTimePatterns_en_IE", "goog.i18n.DateTimePatterns_en_IN", "goog.i18n.DateTimePatterns_en_SG", "goog.i18n.DateTimePatterns_en_US", "goog.i18n.DateTimePatterns_en_ZA", "goog.i18n.DateTimePatterns_es", "goog.i18n.DateTimePatterns_es_419", "goog.i18n.DateTimePatterns_es_ES", "goog.i18n.DateTimePatterns_et", "goog.i18n.DateTimePatterns_eu", "goog.i18n.DateTimePatterns_fa", "goog.i18n.DateTimePatterns_fi", "goog.i18n.DateTimePatterns_fil", "goog.i18n.DateTimePatterns_fr", "goog.i18n.DateTimePatterns_fr_CA", "goog.i18n.DateTimePatterns_gl", "goog.i18n.DateTimePatterns_gsw", "goog.i18n.DateTimePatterns_gu", "goog.i18n.DateTimePatterns_haw", "goog.i18n.DateTimePatterns_he", "goog.i18n.DateTimePatterns_hi", "goog.i18n.DateTimePatterns_hr", "goog.i18n.DateTimePatterns_hu", "goog.i18n.DateTimePatterns_id", "goog.i18n.DateTimePatterns_in", "goog.i18n.DateTimePatterns_is", "goog.i18n.DateTimePatterns_it", "goog.i18n.DateTimePatterns_iw", "goog.i18n.DateTimePatterns_ja", "goog.i18n.DateTimePatterns_kn", "goog.i18n.DateTimePatterns_ko", "goog.i18n.DateTimePatterns_ln", "goog.i18n.DateTimePatterns_lt", "goog.i18n.DateTimePatterns_lv", "goog.i18n.DateTimePatterns_ml", "goog.i18n.DateTimePatterns_mo", "goog.i18n.DateTimePatterns_mr", "goog.i18n.DateTimePatterns_ms", "goog.i18n.DateTimePatterns_mt", "goog.i18n.DateTimePatterns_nb", "goog.i18n.DateTimePatterns_nl", "goog.i18n.DateTimePatterns_no", "goog.i18n.DateTimePatterns_or", "goog.i18n.DateTimePatterns_pl", "goog.i18n.DateTimePatterns_pt", "goog.i18n.DateTimePatterns_pt_BR", "goog.i18n.DateTimePatterns_pt_PT", "goog.i18n.DateTimePatterns_ro", "goog.i18n.DateTimePatterns_ru", "goog.i18n.DateTimePatterns_sk", "goog.i18n.DateTimePatterns_sl", "goog.i18n.DateTimePatterns_sq", "goog.i18n.DateTimePatterns_sr", "goog.i18n.DateTimePatterns_sv", "goog.i18n.DateTimePatterns_sw", "goog.i18n.DateTimePatterns_ta", "goog.i18n.DateTimePatterns_te", "goog.i18n.DateTimePatterns_th", "goog.i18n.DateTimePatterns_tl", "goog.i18n.DateTimePatterns_tr", "goog.i18n.DateTimePatterns_uk", "goog.i18n.DateTimePatterns_ur", "goog.i18n.DateTimePatterns_vi", "goog.i18n.DateTimePatterns_zh", "goog.i18n.DateTimePatterns_zh_CN", "goog.i18n.DateTimePatterns_zh_HK", "goog.i18n.DateTimePatterns_zh_TW", "goog.i18n.DateTimePatterns_zu"], []); goog.addDependency("/closure/goog/i18n/datetimepatternsext.js", ["goog.i18n.DateTimePatternsExt", "goog.i18n.DateTimePatterns_af_NA", "goog.i18n.DateTimePatterns_af_ZA", "goog.i18n.DateTimePatterns_agq", "goog.i18n.DateTimePatterns_agq_CM", "goog.i18n.DateTimePatterns_ak", "goog.i18n.DateTimePatterns_ak_GH", "goog.i18n.DateTimePatterns_am_ET", "goog.i18n.DateTimePatterns_ar_001", "goog.i18n.DateTimePatterns_ar_AE", "goog.i18n.DateTimePatterns_ar_BH", "goog.i18n.DateTimePatterns_ar_DJ", "goog.i18n.DateTimePatterns_ar_DZ", "goog.i18n.DateTimePatterns_ar_EG", "goog.i18n.DateTimePatterns_ar_EH", "goog.i18n.DateTimePatterns_ar_ER", "goog.i18n.DateTimePatterns_ar_IL", "goog.i18n.DateTimePatterns_ar_IQ", "goog.i18n.DateTimePatterns_ar_JO", "goog.i18n.DateTimePatterns_ar_KM", "goog.i18n.DateTimePatterns_ar_KW", "goog.i18n.DateTimePatterns_ar_LB", "goog.i18n.DateTimePatterns_ar_LY", "goog.i18n.DateTimePatterns_ar_MA", "goog.i18n.DateTimePatterns_ar_MR", "goog.i18n.DateTimePatterns_ar_OM", "goog.i18n.DateTimePatterns_ar_PS", "goog.i18n.DateTimePatterns_ar_QA", "goog.i18n.DateTimePatterns_ar_SA", "goog.i18n.DateTimePatterns_ar_SD", "goog.i18n.DateTimePatterns_ar_SO", "goog.i18n.DateTimePatterns_ar_SY", "goog.i18n.DateTimePatterns_ar_TD", "goog.i18n.DateTimePatterns_ar_TN", "goog.i18n.DateTimePatterns_ar_YE", "goog.i18n.DateTimePatterns_as", "goog.i18n.DateTimePatterns_as_IN", "goog.i18n.DateTimePatterns_asa", "goog.i18n.DateTimePatterns_asa_TZ", "goog.i18n.DateTimePatterns_az", "goog.i18n.DateTimePatterns_az_Cyrl", "goog.i18n.DateTimePatterns_az_Cyrl_AZ", "goog.i18n.DateTimePatterns_az_Latn", "goog.i18n.DateTimePatterns_az_Latn_AZ", "goog.i18n.DateTimePatterns_bas", "goog.i18n.DateTimePatterns_bas_CM", "goog.i18n.DateTimePatterns_be", "goog.i18n.DateTimePatterns_be_BY", "goog.i18n.DateTimePatterns_bem", "goog.i18n.DateTimePatterns_bem_ZM", "goog.i18n.DateTimePatterns_bez", "goog.i18n.DateTimePatterns_bez_TZ", "goog.i18n.DateTimePatterns_bg_BG", "goog.i18n.DateTimePatterns_bm", "goog.i18n.DateTimePatterns_bm_ML", "goog.i18n.DateTimePatterns_bn_BD", "goog.i18n.DateTimePatterns_bn_IN", "goog.i18n.DateTimePatterns_bo", "goog.i18n.DateTimePatterns_bo_CN", "goog.i18n.DateTimePatterns_bo_IN", "goog.i18n.DateTimePatterns_br_FR", "goog.i18n.DateTimePatterns_brx", "goog.i18n.DateTimePatterns_brx_IN", "goog.i18n.DateTimePatterns_bs", "goog.i18n.DateTimePatterns_bs_Cyrl", "goog.i18n.DateTimePatterns_bs_Cyrl_BA", "goog.i18n.DateTimePatterns_bs_Latn", "goog.i18n.DateTimePatterns_bs_Latn_BA", "goog.i18n.DateTimePatterns_ca_AD", "goog.i18n.DateTimePatterns_ca_ES", "goog.i18n.DateTimePatterns_cgg", "goog.i18n.DateTimePatterns_cgg_UG", "goog.i18n.DateTimePatterns_chr_US", "goog.i18n.DateTimePatterns_cs_CZ", "goog.i18n.DateTimePatterns_cy_GB", "goog.i18n.DateTimePatterns_da_DK", "goog.i18n.DateTimePatterns_dav", "goog.i18n.DateTimePatterns_dav_KE", "goog.i18n.DateTimePatterns_de_BE", "goog.i18n.DateTimePatterns_de_DE", "goog.i18n.DateTimePatterns_de_LI", "goog.i18n.DateTimePatterns_de_LU", "goog.i18n.DateTimePatterns_dje", "goog.i18n.DateTimePatterns_dje_NE", "goog.i18n.DateTimePatterns_dua", "goog.i18n.DateTimePatterns_dua_CM", "goog.i18n.DateTimePatterns_dyo", "goog.i18n.DateTimePatterns_dyo_SN", "goog.i18n.DateTimePatterns_dz", "goog.i18n.DateTimePatterns_dz_BT", "goog.i18n.DateTimePatterns_ebu", "goog.i18n.DateTimePatterns_ebu_KE", "goog.i18n.DateTimePatterns_ee", "goog.i18n.DateTimePatterns_ee_GH", "goog.i18n.DateTimePatterns_ee_TG", "goog.i18n.DateTimePatterns_el_CY", "goog.i18n.DateTimePatterns_el_GR", "goog.i18n.DateTimePatterns_en_150", "goog.i18n.DateTimePatterns_en_AG", "goog.i18n.DateTimePatterns_en_AS", "goog.i18n.DateTimePatterns_en_BB", "goog.i18n.DateTimePatterns_en_BE", "goog.i18n.DateTimePatterns_en_BM", "goog.i18n.DateTimePatterns_en_BS", "goog.i18n.DateTimePatterns_en_BW", "goog.i18n.DateTimePatterns_en_BZ", "goog.i18n.DateTimePatterns_en_CA", "goog.i18n.DateTimePatterns_en_CM", "goog.i18n.DateTimePatterns_en_DM", "goog.i18n.DateTimePatterns_en_FJ", "goog.i18n.DateTimePatterns_en_FM", "goog.i18n.DateTimePatterns_en_GD", "goog.i18n.DateTimePatterns_en_GG", "goog.i18n.DateTimePatterns_en_GH", "goog.i18n.DateTimePatterns_en_GI", "goog.i18n.DateTimePatterns_en_GM", "goog.i18n.DateTimePatterns_en_GU", "goog.i18n.DateTimePatterns_en_GY", "goog.i18n.DateTimePatterns_en_HK", "goog.i18n.DateTimePatterns_en_IM", "goog.i18n.DateTimePatterns_en_JE", "goog.i18n.DateTimePatterns_en_JM", "goog.i18n.DateTimePatterns_en_KE", "goog.i18n.DateTimePatterns_en_KI", "goog.i18n.DateTimePatterns_en_KN", "goog.i18n.DateTimePatterns_en_KY", "goog.i18n.DateTimePatterns_en_LC", "goog.i18n.DateTimePatterns_en_LR", "goog.i18n.DateTimePatterns_en_LS", "goog.i18n.DateTimePatterns_en_MG", "goog.i18n.DateTimePatterns_en_MH", "goog.i18n.DateTimePatterns_en_MP", "goog.i18n.DateTimePatterns_en_MT", "goog.i18n.DateTimePatterns_en_MU", "goog.i18n.DateTimePatterns_en_MW", "goog.i18n.DateTimePatterns_en_NA", "goog.i18n.DateTimePatterns_en_NG", "goog.i18n.DateTimePatterns_en_NZ", "goog.i18n.DateTimePatterns_en_PG", "goog.i18n.DateTimePatterns_en_PH", "goog.i18n.DateTimePatterns_en_PK", "goog.i18n.DateTimePatterns_en_PR", "goog.i18n.DateTimePatterns_en_PW", "goog.i18n.DateTimePatterns_en_SB", "goog.i18n.DateTimePatterns_en_SC", "goog.i18n.DateTimePatterns_en_SL", "goog.i18n.DateTimePatterns_en_SS", "goog.i18n.DateTimePatterns_en_SZ", "goog.i18n.DateTimePatterns_en_TC", "goog.i18n.DateTimePatterns_en_TO", "goog.i18n.DateTimePatterns_en_TT", "goog.i18n.DateTimePatterns_en_TZ", "goog.i18n.DateTimePatterns_en_UG", "goog.i18n.DateTimePatterns_en_UM", "goog.i18n.DateTimePatterns_en_US_POSIX", "goog.i18n.DateTimePatterns_en_VC", "goog.i18n.DateTimePatterns_en_VG", "goog.i18n.DateTimePatterns_en_VI", "goog.i18n.DateTimePatterns_en_VU", "goog.i18n.DateTimePatterns_en_WS", "goog.i18n.DateTimePatterns_en_ZM", "goog.i18n.DateTimePatterns_en_ZW", "goog.i18n.DateTimePatterns_eo", "goog.i18n.DateTimePatterns_es_AR", "goog.i18n.DateTimePatterns_es_BO", "goog.i18n.DateTimePatterns_es_CL", "goog.i18n.DateTimePatterns_es_CO", "goog.i18n.DateTimePatterns_es_CR", "goog.i18n.DateTimePatterns_es_CU", "goog.i18n.DateTimePatterns_es_DO", "goog.i18n.DateTimePatterns_es_EA", "goog.i18n.DateTimePatterns_es_EC", "goog.i18n.DateTimePatterns_es_GQ", "goog.i18n.DateTimePatterns_es_GT", "goog.i18n.DateTimePatterns_es_HN", "goog.i18n.DateTimePatterns_es_IC", "goog.i18n.DateTimePatterns_es_MX", "goog.i18n.DateTimePatterns_es_NI", "goog.i18n.DateTimePatterns_es_PA", "goog.i18n.DateTimePatterns_es_PE", "goog.i18n.DateTimePatterns_es_PH", "goog.i18n.DateTimePatterns_es_PR", "goog.i18n.DateTimePatterns_es_PY", "goog.i18n.DateTimePatterns_es_SV", "goog.i18n.DateTimePatterns_es_US", "goog.i18n.DateTimePatterns_es_UY", "goog.i18n.DateTimePatterns_es_VE", "goog.i18n.DateTimePatterns_et_EE", "goog.i18n.DateTimePatterns_eu_ES", "goog.i18n.DateTimePatterns_ewo", "goog.i18n.DateTimePatterns_ewo_CM", "goog.i18n.DateTimePatterns_fa_AF", "goog.i18n.DateTimePatterns_fa_IR", "goog.i18n.DateTimePatterns_ff", "goog.i18n.DateTimePatterns_ff_SN", "goog.i18n.DateTimePatterns_fi_FI", "goog.i18n.DateTimePatterns_fil_PH", "goog.i18n.DateTimePatterns_fo", "goog.i18n.DateTimePatterns_fo_FO", "goog.i18n.DateTimePatterns_fr_BE", "goog.i18n.DateTimePatterns_fr_BF", "goog.i18n.DateTimePatterns_fr_BI", "goog.i18n.DateTimePatterns_fr_BJ", "goog.i18n.DateTimePatterns_fr_BL", "goog.i18n.DateTimePatterns_fr_CD", "goog.i18n.DateTimePatterns_fr_CF", "goog.i18n.DateTimePatterns_fr_CG", "goog.i18n.DateTimePatterns_fr_CH", "goog.i18n.DateTimePatterns_fr_CI", "goog.i18n.DateTimePatterns_fr_CM", "goog.i18n.DateTimePatterns_fr_DJ", "goog.i18n.DateTimePatterns_fr_DZ", "goog.i18n.DateTimePatterns_fr_FR", "goog.i18n.DateTimePatterns_fr_GA", "goog.i18n.DateTimePatterns_fr_GF", "goog.i18n.DateTimePatterns_fr_GN", "goog.i18n.DateTimePatterns_fr_GP", "goog.i18n.DateTimePatterns_fr_GQ", "goog.i18n.DateTimePatterns_fr_HT", "goog.i18n.DateTimePatterns_fr_KM", "goog.i18n.DateTimePatterns_fr_LU", "goog.i18n.DateTimePatterns_fr_MA", "goog.i18n.DateTimePatterns_fr_MC", "goog.i18n.DateTimePatterns_fr_MF", "goog.i18n.DateTimePatterns_fr_MG", "goog.i18n.DateTimePatterns_fr_ML", "goog.i18n.DateTimePatterns_fr_MQ", "goog.i18n.DateTimePatterns_fr_MR", "goog.i18n.DateTimePatterns_fr_MU", "goog.i18n.DateTimePatterns_fr_NC", "goog.i18n.DateTimePatterns_fr_NE", "goog.i18n.DateTimePatterns_fr_PF", "goog.i18n.DateTimePatterns_fr_RE", "goog.i18n.DateTimePatterns_fr_RW", "goog.i18n.DateTimePatterns_fr_SC", "goog.i18n.DateTimePatterns_fr_SN", "goog.i18n.DateTimePatterns_fr_SY", "goog.i18n.DateTimePatterns_fr_TD", "goog.i18n.DateTimePatterns_fr_TG", "goog.i18n.DateTimePatterns_fr_TN", "goog.i18n.DateTimePatterns_fr_VU", "goog.i18n.DateTimePatterns_fr_YT", "goog.i18n.DateTimePatterns_ga", "goog.i18n.DateTimePatterns_ga_IE", "goog.i18n.DateTimePatterns_gl_ES", "goog.i18n.DateTimePatterns_gsw_CH", "goog.i18n.DateTimePatterns_gu_IN", "goog.i18n.DateTimePatterns_guz", "goog.i18n.DateTimePatterns_guz_KE", "goog.i18n.DateTimePatterns_gv", "goog.i18n.DateTimePatterns_gv_GB", "goog.i18n.DateTimePatterns_ha", "goog.i18n.DateTimePatterns_ha_Latn", "goog.i18n.DateTimePatterns_ha_Latn_GH", "goog.i18n.DateTimePatterns_ha_Latn_NE", "goog.i18n.DateTimePatterns_ha_Latn_NG", "goog.i18n.DateTimePatterns_haw_US", "goog.i18n.DateTimePatterns_he_IL", "goog.i18n.DateTimePatterns_hi_IN", "goog.i18n.DateTimePatterns_hr_BA", "goog.i18n.DateTimePatterns_hr_HR", "goog.i18n.DateTimePatterns_hu_HU", "goog.i18n.DateTimePatterns_hy", "goog.i18n.DateTimePatterns_hy_AM", "goog.i18n.DateTimePatterns_id_ID", "goog.i18n.DateTimePatterns_ig", "goog.i18n.DateTimePatterns_ig_NG", "goog.i18n.DateTimePatterns_ii", "goog.i18n.DateTimePatterns_ii_CN", "goog.i18n.DateTimePatterns_is_IS", "goog.i18n.DateTimePatterns_it_CH", "goog.i18n.DateTimePatterns_it_IT", "goog.i18n.DateTimePatterns_it_SM", "goog.i18n.DateTimePatterns_ja_JP", "goog.i18n.DateTimePatterns_jgo", "goog.i18n.DateTimePatterns_jgo_CM", "goog.i18n.DateTimePatterns_jmc", "goog.i18n.DateTimePatterns_jmc_TZ", "goog.i18n.DateTimePatterns_ka", "goog.i18n.DateTimePatterns_ka_GE", "goog.i18n.DateTimePatterns_kab", "goog.i18n.DateTimePatterns_kab_DZ", "goog.i18n.DateTimePatterns_kam", "goog.i18n.DateTimePatterns_kam_KE", "goog.i18n.DateTimePatterns_kde", "goog.i18n.DateTimePatterns_kde_TZ", "goog.i18n.DateTimePatterns_kea", "goog.i18n.DateTimePatterns_kea_CV", "goog.i18n.DateTimePatterns_khq", "goog.i18n.DateTimePatterns_khq_ML", "goog.i18n.DateTimePatterns_ki", "goog.i18n.DateTimePatterns_ki_KE", "goog.i18n.DateTimePatterns_kk", "goog.i18n.DateTimePatterns_kk_Cyrl", "goog.i18n.DateTimePatterns_kk_Cyrl_KZ", "goog.i18n.DateTimePatterns_kl", "goog.i18n.DateTimePatterns_kl_GL", "goog.i18n.DateTimePatterns_kln", "goog.i18n.DateTimePatterns_kln_KE", "goog.i18n.DateTimePatterns_km", "goog.i18n.DateTimePatterns_km_KH", "goog.i18n.DateTimePatterns_kn_IN", "goog.i18n.DateTimePatterns_ko_KP", "goog.i18n.DateTimePatterns_ko_KR", "goog.i18n.DateTimePatterns_kok", "goog.i18n.DateTimePatterns_kok_IN", "goog.i18n.DateTimePatterns_ks", "goog.i18n.DateTimePatterns_ks_Arab", "goog.i18n.DateTimePatterns_ks_Arab_IN", "goog.i18n.DateTimePatterns_ksb", "goog.i18n.DateTimePatterns_ksb_TZ", "goog.i18n.DateTimePatterns_ksf", "goog.i18n.DateTimePatterns_ksf_CM", "goog.i18n.DateTimePatterns_kw", "goog.i18n.DateTimePatterns_kw_GB", "goog.i18n.DateTimePatterns_lag", "goog.i18n.DateTimePatterns_lag_TZ", "goog.i18n.DateTimePatterns_lg", "goog.i18n.DateTimePatterns_lg_UG", "goog.i18n.DateTimePatterns_ln_AO", "goog.i18n.DateTimePatterns_ln_CD", "goog.i18n.DateTimePatterns_ln_CF", "goog.i18n.DateTimePatterns_ln_CG", "goog.i18n.DateTimePatterns_lo", "goog.i18n.DateTimePatterns_lo_LA", "goog.i18n.DateTimePatterns_lt_LT", "goog.i18n.DateTimePatterns_lu", "goog.i18n.DateTimePatterns_lu_CD", "goog.i18n.DateTimePatterns_luo", "goog.i18n.DateTimePatterns_luo_KE", "goog.i18n.DateTimePatterns_luy", "goog.i18n.DateTimePatterns_luy_KE", "goog.i18n.DateTimePatterns_lv_LV", "goog.i18n.DateTimePatterns_mas", "goog.i18n.DateTimePatterns_mas_KE", "goog.i18n.DateTimePatterns_mas_TZ", "goog.i18n.DateTimePatterns_mer", "goog.i18n.DateTimePatterns_mer_KE", "goog.i18n.DateTimePatterns_mfe", "goog.i18n.DateTimePatterns_mfe_MU", "goog.i18n.DateTimePatterns_mg", "goog.i18n.DateTimePatterns_mg_MG", "goog.i18n.DateTimePatterns_mgh", "goog.i18n.DateTimePatterns_mgh_MZ", "goog.i18n.DateTimePatterns_mgo", "goog.i18n.DateTimePatterns_mgo_CM", "goog.i18n.DateTimePatterns_mk", "goog.i18n.DateTimePatterns_mk_MK", "goog.i18n.DateTimePatterns_ml_IN", "goog.i18n.DateTimePatterns_mn", "goog.i18n.DateTimePatterns_mn_Cyrl", "goog.i18n.DateTimePatterns_mn_Cyrl_MN", "goog.i18n.DateTimePatterns_mr_IN", "goog.i18n.DateTimePatterns_ms_Latn", "goog.i18n.DateTimePatterns_ms_Latn_BN", "goog.i18n.DateTimePatterns_ms_Latn_MY", "goog.i18n.DateTimePatterns_ms_Latn_SG", "goog.i18n.DateTimePatterns_mt_MT", "goog.i18n.DateTimePatterns_mua", "goog.i18n.DateTimePatterns_mua_CM", "goog.i18n.DateTimePatterns_my", "goog.i18n.DateTimePatterns_my_MM", "goog.i18n.DateTimePatterns_naq", "goog.i18n.DateTimePatterns_naq_NA", "goog.i18n.DateTimePatterns_nb_NO", "goog.i18n.DateTimePatterns_nd", "goog.i18n.DateTimePatterns_nd_ZW", "goog.i18n.DateTimePatterns_ne", "goog.i18n.DateTimePatterns_ne_IN", "goog.i18n.DateTimePatterns_ne_NP", "goog.i18n.DateTimePatterns_nl_AW", "goog.i18n.DateTimePatterns_nl_BE", "goog.i18n.DateTimePatterns_nl_CW", "goog.i18n.DateTimePatterns_nl_NL", "goog.i18n.DateTimePatterns_nl_SR", "goog.i18n.DateTimePatterns_nl_SX", "goog.i18n.DateTimePatterns_nmg", "goog.i18n.DateTimePatterns_nmg_CM", "goog.i18n.DateTimePatterns_nn", "goog.i18n.DateTimePatterns_nn_NO", "goog.i18n.DateTimePatterns_nus", "goog.i18n.DateTimePatterns_nus_SD", "goog.i18n.DateTimePatterns_nyn", "goog.i18n.DateTimePatterns_nyn_UG", "goog.i18n.DateTimePatterns_om", "goog.i18n.DateTimePatterns_om_ET", "goog.i18n.DateTimePatterns_om_KE", "goog.i18n.DateTimePatterns_or_IN", "goog.i18n.DateTimePatterns_pa", "goog.i18n.DateTimePatterns_pa_Arab", "goog.i18n.DateTimePatterns_pa_Arab_PK", "goog.i18n.DateTimePatterns_pa_Guru", "goog.i18n.DateTimePatterns_pa_Guru_IN", "goog.i18n.DateTimePatterns_pl_PL", "goog.i18n.DateTimePatterns_ps", "goog.i18n.DateTimePatterns_ps_AF", "goog.i18n.DateTimePatterns_pt_AO", "goog.i18n.DateTimePatterns_pt_CV", "goog.i18n.DateTimePatterns_pt_GW", "goog.i18n.DateTimePatterns_pt_MO", "goog.i18n.DateTimePatterns_pt_MZ", "goog.i18n.DateTimePatterns_pt_ST", "goog.i18n.DateTimePatterns_pt_TL", "goog.i18n.DateTimePatterns_rm", "goog.i18n.DateTimePatterns_rm_CH", "goog.i18n.DateTimePatterns_rn", "goog.i18n.DateTimePatterns_rn_BI", "goog.i18n.DateTimePatterns_ro_MD", "goog.i18n.DateTimePatterns_ro_RO", "goog.i18n.DateTimePatterns_rof", "goog.i18n.DateTimePatterns_rof_TZ", "goog.i18n.DateTimePatterns_ru_BY", "goog.i18n.DateTimePatterns_ru_KG", "goog.i18n.DateTimePatterns_ru_KZ", "goog.i18n.DateTimePatterns_ru_MD", "goog.i18n.DateTimePatterns_ru_RU", "goog.i18n.DateTimePatterns_ru_UA", "goog.i18n.DateTimePatterns_rw", "goog.i18n.DateTimePatterns_rw_RW", "goog.i18n.DateTimePatterns_rwk", "goog.i18n.DateTimePatterns_rwk_TZ", "goog.i18n.DateTimePatterns_saq", "goog.i18n.DateTimePatterns_saq_KE", "goog.i18n.DateTimePatterns_sbp", "goog.i18n.DateTimePatterns_sbp_TZ", "goog.i18n.DateTimePatterns_seh", "goog.i18n.DateTimePatterns_seh_MZ", "goog.i18n.DateTimePatterns_ses", "goog.i18n.DateTimePatterns_ses_ML", "goog.i18n.DateTimePatterns_sg", "goog.i18n.DateTimePatterns_sg_CF", "goog.i18n.DateTimePatterns_shi", "goog.i18n.DateTimePatterns_shi_Latn", "goog.i18n.DateTimePatterns_shi_Latn_MA", "goog.i18n.DateTimePatterns_shi_Tfng", "goog.i18n.DateTimePatterns_shi_Tfng_MA", "goog.i18n.DateTimePatterns_si", "goog.i18n.DateTimePatterns_si_LK", "goog.i18n.DateTimePatterns_sk_SK", "goog.i18n.DateTimePatterns_sl_SI", "goog.i18n.DateTimePatterns_sn", "goog.i18n.DateTimePatterns_sn_ZW", "goog.i18n.DateTimePatterns_so", "goog.i18n.DateTimePatterns_so_DJ", "goog.i18n.DateTimePatterns_so_ET", "goog.i18n.DateTimePatterns_so_KE", "goog.i18n.DateTimePatterns_so_SO", "goog.i18n.DateTimePatterns_sq_AL", "goog.i18n.DateTimePatterns_sq_MK", "goog.i18n.DateTimePatterns_sr_Cyrl", "goog.i18n.DateTimePatterns_sr_Cyrl_BA", "goog.i18n.DateTimePatterns_sr_Cyrl_ME", "goog.i18n.DateTimePatterns_sr_Cyrl_RS", "goog.i18n.DateTimePatterns_sr_Latn", "goog.i18n.DateTimePatterns_sr_Latn_BA", "goog.i18n.DateTimePatterns_sr_Latn_ME", "goog.i18n.DateTimePatterns_sr_Latn_RS", "goog.i18n.DateTimePatterns_sv_AX", "goog.i18n.DateTimePatterns_sv_FI", "goog.i18n.DateTimePatterns_sv_SE", "goog.i18n.DateTimePatterns_sw_KE", "goog.i18n.DateTimePatterns_sw_TZ", "goog.i18n.DateTimePatterns_sw_UG", "goog.i18n.DateTimePatterns_swc", "goog.i18n.DateTimePatterns_swc_CD", "goog.i18n.DateTimePatterns_ta_IN", "goog.i18n.DateTimePatterns_ta_LK", "goog.i18n.DateTimePatterns_ta_MY", "goog.i18n.DateTimePatterns_ta_SG", "goog.i18n.DateTimePatterns_te_IN", "goog.i18n.DateTimePatterns_teo", "goog.i18n.DateTimePatterns_teo_KE", "goog.i18n.DateTimePatterns_teo_UG", "goog.i18n.DateTimePatterns_th_TH", "goog.i18n.DateTimePatterns_ti", "goog.i18n.DateTimePatterns_ti_ER", "goog.i18n.DateTimePatterns_ti_ET", "goog.i18n.DateTimePatterns_to", "goog.i18n.DateTimePatterns_to_TO", "goog.i18n.DateTimePatterns_tr_CY", "goog.i18n.DateTimePatterns_tr_TR", "goog.i18n.DateTimePatterns_twq", "goog.i18n.DateTimePatterns_twq_NE", "goog.i18n.DateTimePatterns_tzm", "goog.i18n.DateTimePatterns_tzm_Latn", "goog.i18n.DateTimePatterns_tzm_Latn_MA", "goog.i18n.DateTimePatterns_uk_UA", "goog.i18n.DateTimePatterns_ur_IN", "goog.i18n.DateTimePatterns_ur_PK", "goog.i18n.DateTimePatterns_uz", "goog.i18n.DateTimePatterns_uz_Arab", "goog.i18n.DateTimePatterns_uz_Arab_AF", "goog.i18n.DateTimePatterns_uz_Cyrl", "goog.i18n.DateTimePatterns_uz_Cyrl_UZ", "goog.i18n.DateTimePatterns_uz_Latn", "goog.i18n.DateTimePatterns_uz_Latn_UZ", "goog.i18n.DateTimePatterns_vai", "goog.i18n.DateTimePatterns_vai_Latn", "goog.i18n.DateTimePatterns_vai_Latn_LR", "goog.i18n.DateTimePatterns_vai_Vaii", "goog.i18n.DateTimePatterns_vai_Vaii_LR", "goog.i18n.DateTimePatterns_vi_VN", "goog.i18n.DateTimePatterns_vun", "goog.i18n.DateTimePatterns_vun_TZ", "goog.i18n.DateTimePatterns_xog", "goog.i18n.DateTimePatterns_xog_UG", "goog.i18n.DateTimePatterns_yav", "goog.i18n.DateTimePatterns_yav_CM", "goog.i18n.DateTimePatterns_yo", "goog.i18n.DateTimePatterns_yo_NG", "goog.i18n.DateTimePatterns_zh_Hans", "goog.i18n.DateTimePatterns_zh_Hans_CN", "goog.i18n.DateTimePatterns_zh_Hans_HK", "goog.i18n.DateTimePatterns_zh_Hans_MO", "goog.i18n.DateTimePatterns_zh_Hans_SG", "goog.i18n.DateTimePatterns_zh_Hant", "goog.i18n.DateTimePatterns_zh_Hant_HK", "goog.i18n.DateTimePatterns_zh_Hant_MO", "goog.i18n.DateTimePatterns_zh_Hant_TW", "goog.i18n.DateTimePatterns_zu_ZA"], ["goog.i18n.DateTimePatterns"]); goog.addDependency("/closure/goog/i18n/datetimesymbols.js", ["goog.i18n.DateTimeSymbols", "goog.i18n.DateTimeSymbols_af", "goog.i18n.DateTimeSymbols_am", "goog.i18n.DateTimeSymbols_ar", "goog.i18n.DateTimeSymbols_bg", "goog.i18n.DateTimeSymbols_bn", "goog.i18n.DateTimeSymbols_br", "goog.i18n.DateTimeSymbols_ca", "goog.i18n.DateTimeSymbols_chr", "goog.i18n.DateTimeSymbols_cs", "goog.i18n.DateTimeSymbols_cy", "goog.i18n.DateTimeSymbols_da", "goog.i18n.DateTimeSymbols_de", "goog.i18n.DateTimeSymbols_de_AT", "goog.i18n.DateTimeSymbols_de_CH", "goog.i18n.DateTimeSymbols_el", "goog.i18n.DateTimeSymbols_en", "goog.i18n.DateTimeSymbols_en_AU", "goog.i18n.DateTimeSymbols_en_GB", "goog.i18n.DateTimeSymbols_en_IE", "goog.i18n.DateTimeSymbols_en_IN", "goog.i18n.DateTimeSymbols_en_ISO", "goog.i18n.DateTimeSymbols_en_SG", "goog.i18n.DateTimeSymbols_en_US", "goog.i18n.DateTimeSymbols_en_ZA", "goog.i18n.DateTimeSymbols_es", "goog.i18n.DateTimeSymbols_es_419", "goog.i18n.DateTimeSymbols_es_ES", "goog.i18n.DateTimeSymbols_et", "goog.i18n.DateTimeSymbols_eu", "goog.i18n.DateTimeSymbols_fa", "goog.i18n.DateTimeSymbols_fi", "goog.i18n.DateTimeSymbols_fil", "goog.i18n.DateTimeSymbols_fr", "goog.i18n.DateTimeSymbols_fr_CA", "goog.i18n.DateTimeSymbols_gl", "goog.i18n.DateTimeSymbols_gsw", "goog.i18n.DateTimeSymbols_gu", "goog.i18n.DateTimeSymbols_haw", "goog.i18n.DateTimeSymbols_he", "goog.i18n.DateTimeSymbols_hi", "goog.i18n.DateTimeSymbols_hr", "goog.i18n.DateTimeSymbols_hu", "goog.i18n.DateTimeSymbols_id", "goog.i18n.DateTimeSymbols_in", "goog.i18n.DateTimeSymbols_is", "goog.i18n.DateTimeSymbols_it", "goog.i18n.DateTimeSymbols_iw", "goog.i18n.DateTimeSymbols_ja", "goog.i18n.DateTimeSymbols_kn", "goog.i18n.DateTimeSymbols_ko", "goog.i18n.DateTimeSymbols_ln", "goog.i18n.DateTimeSymbols_lt", "goog.i18n.DateTimeSymbols_lv", "goog.i18n.DateTimeSymbols_ml", "goog.i18n.DateTimeSymbols_mr", "goog.i18n.DateTimeSymbols_ms", "goog.i18n.DateTimeSymbols_mt", "goog.i18n.DateTimeSymbols_nb", "goog.i18n.DateTimeSymbols_nl", "goog.i18n.DateTimeSymbols_no", "goog.i18n.DateTimeSymbols_or", "goog.i18n.DateTimeSymbols_pl", "goog.i18n.DateTimeSymbols_pt", "goog.i18n.DateTimeSymbols_pt_BR", "goog.i18n.DateTimeSymbols_pt_PT", "goog.i18n.DateTimeSymbols_ro", "goog.i18n.DateTimeSymbols_ru", "goog.i18n.DateTimeSymbols_sk", "goog.i18n.DateTimeSymbols_sl", "goog.i18n.DateTimeSymbols_sq", "goog.i18n.DateTimeSymbols_sr", "goog.i18n.DateTimeSymbols_sv", "goog.i18n.DateTimeSymbols_sw", "goog.i18n.DateTimeSymbols_ta", "goog.i18n.DateTimeSymbols_te", "goog.i18n.DateTimeSymbols_th", "goog.i18n.DateTimeSymbols_tl", "goog.i18n.DateTimeSymbols_tr", "goog.i18n.DateTimeSymbols_uk", "goog.i18n.DateTimeSymbols_ur", "goog.i18n.DateTimeSymbols_vi", "goog.i18n.DateTimeSymbols_zh", "goog.i18n.DateTimeSymbols_zh_CN", "goog.i18n.DateTimeSymbols_zh_HK", "goog.i18n.DateTimeSymbols_zh_TW", "goog.i18n.DateTimeSymbols_zu"], []); goog.addDependency("/closure/goog/i18n/datetimesymbolsext.js", ["goog.i18n.DateTimeSymbolsExt", "goog.i18n.DateTimeSymbols_aa", "goog.i18n.DateTimeSymbols_aa_DJ", "goog.i18n.DateTimeSymbols_aa_ER", "goog.i18n.DateTimeSymbols_aa_ET", "goog.i18n.DateTimeSymbols_af_NA", "goog.i18n.DateTimeSymbols_af_ZA", "goog.i18n.DateTimeSymbols_agq", "goog.i18n.DateTimeSymbols_agq_CM", "goog.i18n.DateTimeSymbols_ak", "goog.i18n.DateTimeSymbols_ak_GH", "goog.i18n.DateTimeSymbols_am_ET", "goog.i18n.DateTimeSymbols_ar_001", "goog.i18n.DateTimeSymbols_ar_AE", "goog.i18n.DateTimeSymbols_ar_BH", "goog.i18n.DateTimeSymbols_ar_DJ", "goog.i18n.DateTimeSymbols_ar_DZ", "goog.i18n.DateTimeSymbols_ar_EG", "goog.i18n.DateTimeSymbols_ar_EH", "goog.i18n.DateTimeSymbols_ar_ER", "goog.i18n.DateTimeSymbols_ar_IL", "goog.i18n.DateTimeSymbols_ar_IQ", "goog.i18n.DateTimeSymbols_ar_JO", "goog.i18n.DateTimeSymbols_ar_KM", "goog.i18n.DateTimeSymbols_ar_KW", "goog.i18n.DateTimeSymbols_ar_LB", "goog.i18n.DateTimeSymbols_ar_LY", "goog.i18n.DateTimeSymbols_ar_MA", "goog.i18n.DateTimeSymbols_ar_MR", "goog.i18n.DateTimeSymbols_ar_OM", "goog.i18n.DateTimeSymbols_ar_PS", "goog.i18n.DateTimeSymbols_ar_QA", "goog.i18n.DateTimeSymbols_ar_SA", "goog.i18n.DateTimeSymbols_ar_SD", "goog.i18n.DateTimeSymbols_ar_SO", "goog.i18n.DateTimeSymbols_ar_SY", "goog.i18n.DateTimeSymbols_ar_TD", "goog.i18n.DateTimeSymbols_ar_TN", "goog.i18n.DateTimeSymbols_ar_YE", "goog.i18n.DateTimeSymbols_as", "goog.i18n.DateTimeSymbols_as_IN", "goog.i18n.DateTimeSymbols_asa", "goog.i18n.DateTimeSymbols_asa_TZ", "goog.i18n.DateTimeSymbols_ast", "goog.i18n.DateTimeSymbols_ast_ES", "goog.i18n.DateTimeSymbols_az", "goog.i18n.DateTimeSymbols_az_Cyrl", "goog.i18n.DateTimeSymbols_az_Cyrl_AZ", "goog.i18n.DateTimeSymbols_az_Latn", "goog.i18n.DateTimeSymbols_az_Latn_AZ", "goog.i18n.DateTimeSymbols_bas", "goog.i18n.DateTimeSymbols_bas_CM", "goog.i18n.DateTimeSymbols_be", "goog.i18n.DateTimeSymbols_be_BY", "goog.i18n.DateTimeSymbols_bem", "goog.i18n.DateTimeSymbols_bem_ZM", "goog.i18n.DateTimeSymbols_bez", "goog.i18n.DateTimeSymbols_bez_TZ", "goog.i18n.DateTimeSymbols_bg_BG", "goog.i18n.DateTimeSymbols_bm", "goog.i18n.DateTimeSymbols_bm_ML", "goog.i18n.DateTimeSymbols_bn_BD", "goog.i18n.DateTimeSymbols_bn_IN", "goog.i18n.DateTimeSymbols_bo", "goog.i18n.DateTimeSymbols_bo_CN", "goog.i18n.DateTimeSymbols_bo_IN", "goog.i18n.DateTimeSymbols_br_FR", "goog.i18n.DateTimeSymbols_brx", "goog.i18n.DateTimeSymbols_brx_IN", "goog.i18n.DateTimeSymbols_bs", "goog.i18n.DateTimeSymbols_bs_Cyrl", "goog.i18n.DateTimeSymbols_bs_Cyrl_BA", "goog.i18n.DateTimeSymbols_bs_Latn", "goog.i18n.DateTimeSymbols_bs_Latn_BA", "goog.i18n.DateTimeSymbols_byn", "goog.i18n.DateTimeSymbols_byn_ER", "goog.i18n.DateTimeSymbols_ca_AD", "goog.i18n.DateTimeSymbols_ca_ES", "goog.i18n.DateTimeSymbols_cgg", "goog.i18n.DateTimeSymbols_cgg_UG", "goog.i18n.DateTimeSymbols_chr_US", "goog.i18n.DateTimeSymbols_ckb", "goog.i18n.DateTimeSymbols_ckb_Arab", "goog.i18n.DateTimeSymbols_ckb_Arab_IQ", "goog.i18n.DateTimeSymbols_ckb_Arab_IR", "goog.i18n.DateTimeSymbols_ckb_IQ", "goog.i18n.DateTimeSymbols_ckb_IR", "goog.i18n.DateTimeSymbols_ckb_Latn", "goog.i18n.DateTimeSymbols_ckb_Latn_IQ", "goog.i18n.DateTimeSymbols_cs_CZ", "goog.i18n.DateTimeSymbols_cy_GB", "goog.i18n.DateTimeSymbols_da_DK", "goog.i18n.DateTimeSymbols_dav", "goog.i18n.DateTimeSymbols_dav_KE", "goog.i18n.DateTimeSymbols_de_BE", "goog.i18n.DateTimeSymbols_de_DE", "goog.i18n.DateTimeSymbols_de_LI", "goog.i18n.DateTimeSymbols_de_LU", "goog.i18n.DateTimeSymbols_dje", "goog.i18n.DateTimeSymbols_dje_NE", "goog.i18n.DateTimeSymbols_dua", "goog.i18n.DateTimeSymbols_dua_CM", "goog.i18n.DateTimeSymbols_dyo", "goog.i18n.DateTimeSymbols_dyo_SN", "goog.i18n.DateTimeSymbols_dz", "goog.i18n.DateTimeSymbols_dz_BT", "goog.i18n.DateTimeSymbols_ebu", "goog.i18n.DateTimeSymbols_ebu_KE", "goog.i18n.DateTimeSymbols_ee", "goog.i18n.DateTimeSymbols_ee_GH", "goog.i18n.DateTimeSymbols_ee_TG", "goog.i18n.DateTimeSymbols_el_CY", "goog.i18n.DateTimeSymbols_el_GR", "goog.i18n.DateTimeSymbols_en_150", "goog.i18n.DateTimeSymbols_en_AG", "goog.i18n.DateTimeSymbols_en_AS", "goog.i18n.DateTimeSymbols_en_BB", "goog.i18n.DateTimeSymbols_en_BE", "goog.i18n.DateTimeSymbols_en_BM", "goog.i18n.DateTimeSymbols_en_BS", "goog.i18n.DateTimeSymbols_en_BW", "goog.i18n.DateTimeSymbols_en_BZ", "goog.i18n.DateTimeSymbols_en_CA", "goog.i18n.DateTimeSymbols_en_CM", "goog.i18n.DateTimeSymbols_en_DM", "goog.i18n.DateTimeSymbols_en_Dsrt", "goog.i18n.DateTimeSymbols_en_Dsrt_US", "goog.i18n.DateTimeSymbols_en_FJ", "goog.i18n.DateTimeSymbols_en_FM", "goog.i18n.DateTimeSymbols_en_GD", "goog.i18n.DateTimeSymbols_en_GG", "goog.i18n.DateTimeSymbols_en_GH", "goog.i18n.DateTimeSymbols_en_GI", "goog.i18n.DateTimeSymbols_en_GM", "goog.i18n.DateTimeSymbols_en_GU", "goog.i18n.DateTimeSymbols_en_GY", "goog.i18n.DateTimeSymbols_en_HK", "goog.i18n.DateTimeSymbols_en_IM", "goog.i18n.DateTimeSymbols_en_JE", "goog.i18n.DateTimeSymbols_en_JM", "goog.i18n.DateTimeSymbols_en_KE", "goog.i18n.DateTimeSymbols_en_KI", "goog.i18n.DateTimeSymbols_en_KN", "goog.i18n.DateTimeSymbols_en_KY", "goog.i18n.DateTimeSymbols_en_LC", "goog.i18n.DateTimeSymbols_en_LR", "goog.i18n.DateTimeSymbols_en_LS", "goog.i18n.DateTimeSymbols_en_MG", "goog.i18n.DateTimeSymbols_en_MH", "goog.i18n.DateTimeSymbols_en_MP", "goog.i18n.DateTimeSymbols_en_MT", "goog.i18n.DateTimeSymbols_en_MU", "goog.i18n.DateTimeSymbols_en_MW", "goog.i18n.DateTimeSymbols_en_NA", "goog.i18n.DateTimeSymbols_en_NG", "goog.i18n.DateTimeSymbols_en_NZ", "goog.i18n.DateTimeSymbols_en_PG", "goog.i18n.DateTimeSymbols_en_PH", "goog.i18n.DateTimeSymbols_en_PK", "goog.i18n.DateTimeSymbols_en_PR", "goog.i18n.DateTimeSymbols_en_PW", "goog.i18n.DateTimeSymbols_en_SB", "goog.i18n.DateTimeSymbols_en_SC", "goog.i18n.DateTimeSymbols_en_SL", "goog.i18n.DateTimeSymbols_en_SS", "goog.i18n.DateTimeSymbols_en_SZ", "goog.i18n.DateTimeSymbols_en_TC", "goog.i18n.DateTimeSymbols_en_TO", "goog.i18n.DateTimeSymbols_en_TT", "goog.i18n.DateTimeSymbols_en_TZ", "goog.i18n.DateTimeSymbols_en_UG", "goog.i18n.DateTimeSymbols_en_UM", "goog.i18n.DateTimeSymbols_en_VC", "goog.i18n.DateTimeSymbols_en_VG", "goog.i18n.DateTimeSymbols_en_VI", "goog.i18n.DateTimeSymbols_en_VU", "goog.i18n.DateTimeSymbols_en_WS", "goog.i18n.DateTimeSymbols_en_ZM", "goog.i18n.DateTimeSymbols_en_ZW", "goog.i18n.DateTimeSymbols_eo", "goog.i18n.DateTimeSymbols_es_AR", "goog.i18n.DateTimeSymbols_es_BO", "goog.i18n.DateTimeSymbols_es_CL", "goog.i18n.DateTimeSymbols_es_CO", "goog.i18n.DateTimeSymbols_es_CR", "goog.i18n.DateTimeSymbols_es_CU", "goog.i18n.DateTimeSymbols_es_DO", "goog.i18n.DateTimeSymbols_es_EA", "goog.i18n.DateTimeSymbols_es_EC", "goog.i18n.DateTimeSymbols_es_GQ", "goog.i18n.DateTimeSymbols_es_GT", "goog.i18n.DateTimeSymbols_es_HN", "goog.i18n.DateTimeSymbols_es_IC", "goog.i18n.DateTimeSymbols_es_MX", "goog.i18n.DateTimeSymbols_es_NI", "goog.i18n.DateTimeSymbols_es_PA", "goog.i18n.DateTimeSymbols_es_PE", "goog.i18n.DateTimeSymbols_es_PH", "goog.i18n.DateTimeSymbols_es_PR", "goog.i18n.DateTimeSymbols_es_PY", "goog.i18n.DateTimeSymbols_es_SV", "goog.i18n.DateTimeSymbols_es_US", "goog.i18n.DateTimeSymbols_es_UY", "goog.i18n.DateTimeSymbols_es_VE", "goog.i18n.DateTimeSymbols_et_EE", "goog.i18n.DateTimeSymbols_eu_ES", "goog.i18n.DateTimeSymbols_ewo", "goog.i18n.DateTimeSymbols_ewo_CM", "goog.i18n.DateTimeSymbols_fa_AF", "goog.i18n.DateTimeSymbols_fa_IR", "goog.i18n.DateTimeSymbols_ff", "goog.i18n.DateTimeSymbols_ff_SN", "goog.i18n.DateTimeSymbols_fi_FI", "goog.i18n.DateTimeSymbols_fil_PH", "goog.i18n.DateTimeSymbols_fo", "goog.i18n.DateTimeSymbols_fo_FO", "goog.i18n.DateTimeSymbols_fr_BE", "goog.i18n.DateTimeSymbols_fr_BF", "goog.i18n.DateTimeSymbols_fr_BI", "goog.i18n.DateTimeSymbols_fr_BJ", "goog.i18n.DateTimeSymbols_fr_BL", "goog.i18n.DateTimeSymbols_fr_CD", "goog.i18n.DateTimeSymbols_fr_CF", "goog.i18n.DateTimeSymbols_fr_CG", "goog.i18n.DateTimeSymbols_fr_CH", "goog.i18n.DateTimeSymbols_fr_CI", "goog.i18n.DateTimeSymbols_fr_CM", "goog.i18n.DateTimeSymbols_fr_DJ", "goog.i18n.DateTimeSymbols_fr_DZ", "goog.i18n.DateTimeSymbols_fr_FR", "goog.i18n.DateTimeSymbols_fr_GA", "goog.i18n.DateTimeSymbols_fr_GF", "goog.i18n.DateTimeSymbols_fr_GN", "goog.i18n.DateTimeSymbols_fr_GP", "goog.i18n.DateTimeSymbols_fr_GQ", "goog.i18n.DateTimeSymbols_fr_HT", "goog.i18n.DateTimeSymbols_fr_KM", "goog.i18n.DateTimeSymbols_fr_LU", "goog.i18n.DateTimeSymbols_fr_MA", "goog.i18n.DateTimeSymbols_fr_MC", "goog.i18n.DateTimeSymbols_fr_MF", "goog.i18n.DateTimeSymbols_fr_MG", "goog.i18n.DateTimeSymbols_fr_ML", "goog.i18n.DateTimeSymbols_fr_MQ", "goog.i18n.DateTimeSymbols_fr_MR", "goog.i18n.DateTimeSymbols_fr_MU", "goog.i18n.DateTimeSymbols_fr_NC", "goog.i18n.DateTimeSymbols_fr_NE", "goog.i18n.DateTimeSymbols_fr_PF", "goog.i18n.DateTimeSymbols_fr_RE", "goog.i18n.DateTimeSymbols_fr_RW", "goog.i18n.DateTimeSymbols_fr_SC", "goog.i18n.DateTimeSymbols_fr_SN", "goog.i18n.DateTimeSymbols_fr_SY", "goog.i18n.DateTimeSymbols_fr_TD", "goog.i18n.DateTimeSymbols_fr_TG", "goog.i18n.DateTimeSymbols_fr_TN", "goog.i18n.DateTimeSymbols_fr_VU", "goog.i18n.DateTimeSymbols_fr_YT", "goog.i18n.DateTimeSymbols_fur", "goog.i18n.DateTimeSymbols_fur_IT", "goog.i18n.DateTimeSymbols_ga", "goog.i18n.DateTimeSymbols_ga_IE", "goog.i18n.DateTimeSymbols_gd", "goog.i18n.DateTimeSymbols_gd_GB", "goog.i18n.DateTimeSymbols_gl_ES", "goog.i18n.DateTimeSymbols_gsw_CH", "goog.i18n.DateTimeSymbols_gu_IN", "goog.i18n.DateTimeSymbols_guz", "goog.i18n.DateTimeSymbols_guz_KE", "goog.i18n.DateTimeSymbols_gv", "goog.i18n.DateTimeSymbols_gv_GB", "goog.i18n.DateTimeSymbols_ha", "goog.i18n.DateTimeSymbols_ha_Latn", "goog.i18n.DateTimeSymbols_ha_Latn_GH", "goog.i18n.DateTimeSymbols_ha_Latn_NE", "goog.i18n.DateTimeSymbols_ha_Latn_NG", "goog.i18n.DateTimeSymbols_haw_US", "goog.i18n.DateTimeSymbols_he_IL", "goog.i18n.DateTimeSymbols_hi_IN", "goog.i18n.DateTimeSymbols_hr_BA", "goog.i18n.DateTimeSymbols_hr_HR", "goog.i18n.DateTimeSymbols_hu_HU", "goog.i18n.DateTimeSymbols_hy", "goog.i18n.DateTimeSymbols_hy_AM", "goog.i18n.DateTimeSymbols_ia", "goog.i18n.DateTimeSymbols_ia_FR", "goog.i18n.DateTimeSymbols_id_ID", "goog.i18n.DateTimeSymbols_ig", "goog.i18n.DateTimeSymbols_ig_NG", "goog.i18n.DateTimeSymbols_ii", "goog.i18n.DateTimeSymbols_ii_CN", "goog.i18n.DateTimeSymbols_is_IS", "goog.i18n.DateTimeSymbols_it_CH", "goog.i18n.DateTimeSymbols_it_IT", "goog.i18n.DateTimeSymbols_it_SM", "goog.i18n.DateTimeSymbols_ja_JP", "goog.i18n.DateTimeSymbols_jgo", "goog.i18n.DateTimeSymbols_jgo_CM", "goog.i18n.DateTimeSymbols_jmc", "goog.i18n.DateTimeSymbols_jmc_TZ", "goog.i18n.DateTimeSymbols_ka", "goog.i18n.DateTimeSymbols_ka_GE", "goog.i18n.DateTimeSymbols_kab", "goog.i18n.DateTimeSymbols_kab_DZ", "goog.i18n.DateTimeSymbols_kam", "goog.i18n.DateTimeSymbols_kam_KE", "goog.i18n.DateTimeSymbols_kde", "goog.i18n.DateTimeSymbols_kde_TZ", "goog.i18n.DateTimeSymbols_kea", "goog.i18n.DateTimeSymbols_kea_CV", "goog.i18n.DateTimeSymbols_khq", "goog.i18n.DateTimeSymbols_khq_ML", "goog.i18n.DateTimeSymbols_ki", "goog.i18n.DateTimeSymbols_ki_KE", "goog.i18n.DateTimeSymbols_kk", "goog.i18n.DateTimeSymbols_kk_Cyrl", "goog.i18n.DateTimeSymbols_kk_Cyrl_KZ", "goog.i18n.DateTimeSymbols_kkj", "goog.i18n.DateTimeSymbols_kkj_CM", "goog.i18n.DateTimeSymbols_kl", "goog.i18n.DateTimeSymbols_kl_GL", "goog.i18n.DateTimeSymbols_kln", "goog.i18n.DateTimeSymbols_kln_KE", "goog.i18n.DateTimeSymbols_km", "goog.i18n.DateTimeSymbols_km_KH", "goog.i18n.DateTimeSymbols_kn_IN", "goog.i18n.DateTimeSymbols_ko_KP", "goog.i18n.DateTimeSymbols_ko_KR", "goog.i18n.DateTimeSymbols_kok", "goog.i18n.DateTimeSymbols_kok_IN", "goog.i18n.DateTimeSymbols_ks", "goog.i18n.DateTimeSymbols_ks_Arab", "goog.i18n.DateTimeSymbols_ks_Arab_IN", "goog.i18n.DateTimeSymbols_ksb", "goog.i18n.DateTimeSymbols_ksb_TZ", "goog.i18n.DateTimeSymbols_ksf", "goog.i18n.DateTimeSymbols_ksf_CM", "goog.i18n.DateTimeSymbols_ksh", "goog.i18n.DateTimeSymbols_ksh_DE", "goog.i18n.DateTimeSymbols_kw", "goog.i18n.DateTimeSymbols_kw_GB", "goog.i18n.DateTimeSymbols_ky", "goog.i18n.DateTimeSymbols_ky_KG", "goog.i18n.DateTimeSymbols_lag", "goog.i18n.DateTimeSymbols_lag_TZ", "goog.i18n.DateTimeSymbols_lg", "goog.i18n.DateTimeSymbols_lg_UG", "goog.i18n.DateTimeSymbols_ln_AO", "goog.i18n.DateTimeSymbols_ln_CD", "goog.i18n.DateTimeSymbols_ln_CF", "goog.i18n.DateTimeSymbols_ln_CG", "goog.i18n.DateTimeSymbols_lo", "goog.i18n.DateTimeSymbols_lo_LA", "goog.i18n.DateTimeSymbols_lt_LT", "goog.i18n.DateTimeSymbols_lu", "goog.i18n.DateTimeSymbols_lu_CD", "goog.i18n.DateTimeSymbols_luo", "goog.i18n.DateTimeSymbols_luo_KE", "goog.i18n.DateTimeSymbols_luy", "goog.i18n.DateTimeSymbols_luy_KE", "goog.i18n.DateTimeSymbols_lv_LV", "goog.i18n.DateTimeSymbols_mas", "goog.i18n.DateTimeSymbols_mas_KE", "goog.i18n.DateTimeSymbols_mas_TZ", "goog.i18n.DateTimeSymbols_mer", "goog.i18n.DateTimeSymbols_mer_KE", "goog.i18n.DateTimeSymbols_mfe", "goog.i18n.DateTimeSymbols_mfe_MU", "goog.i18n.DateTimeSymbols_mg", "goog.i18n.DateTimeSymbols_mg_MG", "goog.i18n.DateTimeSymbols_mgh", "goog.i18n.DateTimeSymbols_mgh_MZ", "goog.i18n.DateTimeSymbols_mgo", "goog.i18n.DateTimeSymbols_mgo_CM", "goog.i18n.DateTimeSymbols_mk", "goog.i18n.DateTimeSymbols_mk_MK", "goog.i18n.DateTimeSymbols_ml_IN", "goog.i18n.DateTimeSymbols_mn", "goog.i18n.DateTimeSymbols_mn_Cyrl", "goog.i18n.DateTimeSymbols_mn_Cyrl_MN", "goog.i18n.DateTimeSymbols_mr_IN", "goog.i18n.DateTimeSymbols_ms_Latn", "goog.i18n.DateTimeSymbols_ms_Latn_BN", "goog.i18n.DateTimeSymbols_ms_Latn_MY", "goog.i18n.DateTimeSymbols_ms_Latn_SG", "goog.i18n.DateTimeSymbols_mt_MT", "goog.i18n.DateTimeSymbols_mua", "goog.i18n.DateTimeSymbols_mua_CM", "goog.i18n.DateTimeSymbols_my", "goog.i18n.DateTimeSymbols_my_MM", "goog.i18n.DateTimeSymbols_naq", "goog.i18n.DateTimeSymbols_naq_NA", "goog.i18n.DateTimeSymbols_nb_NO", "goog.i18n.DateTimeSymbols_nd", "goog.i18n.DateTimeSymbols_nd_ZW", "goog.i18n.DateTimeSymbols_ne", "goog.i18n.DateTimeSymbols_ne_IN", "goog.i18n.DateTimeSymbols_ne_NP", "goog.i18n.DateTimeSymbols_nl_AW", "goog.i18n.DateTimeSymbols_nl_BE", "goog.i18n.DateTimeSymbols_nl_CW", "goog.i18n.DateTimeSymbols_nl_NL", "goog.i18n.DateTimeSymbols_nl_SR", "goog.i18n.DateTimeSymbols_nl_SX", "goog.i18n.DateTimeSymbols_nmg", "goog.i18n.DateTimeSymbols_nmg_CM", "goog.i18n.DateTimeSymbols_nn", "goog.i18n.DateTimeSymbols_nn_NO", "goog.i18n.DateTimeSymbols_nnh", "goog.i18n.DateTimeSymbols_nnh_CM", "goog.i18n.DateTimeSymbols_nr", "goog.i18n.DateTimeSymbols_nr_ZA", "goog.i18n.DateTimeSymbols_nso", "goog.i18n.DateTimeSymbols_nso_ZA", "goog.i18n.DateTimeSymbols_nus", "goog.i18n.DateTimeSymbols_nus_SD", "goog.i18n.DateTimeSymbols_nyn", "goog.i18n.DateTimeSymbols_nyn_UG", "goog.i18n.DateTimeSymbols_om", "goog.i18n.DateTimeSymbols_om_ET", "goog.i18n.DateTimeSymbols_om_KE", "goog.i18n.DateTimeSymbols_or_IN", "goog.i18n.DateTimeSymbols_os", "goog.i18n.DateTimeSymbols_os_GE", "goog.i18n.DateTimeSymbols_os_RU", "goog.i18n.DateTimeSymbols_pa", "goog.i18n.DateTimeSymbols_pa_Arab", "goog.i18n.DateTimeSymbols_pa_Arab_PK", "goog.i18n.DateTimeSymbols_pa_Guru", "goog.i18n.DateTimeSymbols_pa_Guru_IN", "goog.i18n.DateTimeSymbols_pl_PL", "goog.i18n.DateTimeSymbols_ps", "goog.i18n.DateTimeSymbols_ps_AF", "goog.i18n.DateTimeSymbols_pt_AO", "goog.i18n.DateTimeSymbols_pt_CV", "goog.i18n.DateTimeSymbols_pt_GW", "goog.i18n.DateTimeSymbols_pt_MO", "goog.i18n.DateTimeSymbols_pt_MZ", "goog.i18n.DateTimeSymbols_pt_ST", "goog.i18n.DateTimeSymbols_pt_TL", "goog.i18n.DateTimeSymbols_rm", "goog.i18n.DateTimeSymbols_rm_CH", "goog.i18n.DateTimeSymbols_rn", "goog.i18n.DateTimeSymbols_rn_BI", "goog.i18n.DateTimeSymbols_ro_MD", "goog.i18n.DateTimeSymbols_ro_RO", "goog.i18n.DateTimeSymbols_rof", "goog.i18n.DateTimeSymbols_rof_TZ", "goog.i18n.DateTimeSymbols_ru_BY", "goog.i18n.DateTimeSymbols_ru_KG", "goog.i18n.DateTimeSymbols_ru_KZ", "goog.i18n.DateTimeSymbols_ru_MD", "goog.i18n.DateTimeSymbols_ru_RU", "goog.i18n.DateTimeSymbols_ru_UA", "goog.i18n.DateTimeSymbols_rw", "goog.i18n.DateTimeSymbols_rw_RW", "goog.i18n.DateTimeSymbols_rwk", "goog.i18n.DateTimeSymbols_rwk_TZ", "goog.i18n.DateTimeSymbols_sah", "goog.i18n.DateTimeSymbols_sah_RU", "goog.i18n.DateTimeSymbols_saq", "goog.i18n.DateTimeSymbols_saq_KE", "goog.i18n.DateTimeSymbols_sbp", "goog.i18n.DateTimeSymbols_sbp_TZ", "goog.i18n.DateTimeSymbols_se", "goog.i18n.DateTimeSymbols_se_FI", "goog.i18n.DateTimeSymbols_se_NO", "goog.i18n.DateTimeSymbols_seh", "goog.i18n.DateTimeSymbols_seh_MZ", "goog.i18n.DateTimeSymbols_ses", "goog.i18n.DateTimeSymbols_ses_ML", "goog.i18n.DateTimeSymbols_sg", "goog.i18n.DateTimeSymbols_sg_CF", "goog.i18n.DateTimeSymbols_shi", "goog.i18n.DateTimeSymbols_shi_Latn", "goog.i18n.DateTimeSymbols_shi_Latn_MA", "goog.i18n.DateTimeSymbols_shi_Tfng", "goog.i18n.DateTimeSymbols_shi_Tfng_MA", "goog.i18n.DateTimeSymbols_si", "goog.i18n.DateTimeSymbols_si_LK", "goog.i18n.DateTimeSymbols_sk_SK", "goog.i18n.DateTimeSymbols_sl_SI", "goog.i18n.DateTimeSymbols_sn", "goog.i18n.DateTimeSymbols_sn_ZW", "goog.i18n.DateTimeSymbols_so", "goog.i18n.DateTimeSymbols_so_DJ", "goog.i18n.DateTimeSymbols_so_ET", "goog.i18n.DateTimeSymbols_so_KE", "goog.i18n.DateTimeSymbols_so_SO", "goog.i18n.DateTimeSymbols_sq_AL", "goog.i18n.DateTimeSymbols_sq_MK", "goog.i18n.DateTimeSymbols_sq_XK", "goog.i18n.DateTimeSymbols_sr_Cyrl", "goog.i18n.DateTimeSymbols_sr_Cyrl_BA", "goog.i18n.DateTimeSymbols_sr_Cyrl_ME", "goog.i18n.DateTimeSymbols_sr_Cyrl_RS", "goog.i18n.DateTimeSymbols_sr_Cyrl_XK", "goog.i18n.DateTimeSymbols_sr_Latn", "goog.i18n.DateTimeSymbols_sr_Latn_BA", "goog.i18n.DateTimeSymbols_sr_Latn_ME", "goog.i18n.DateTimeSymbols_sr_Latn_RS", "goog.i18n.DateTimeSymbols_sr_Latn_XK", "goog.i18n.DateTimeSymbols_ss", "goog.i18n.DateTimeSymbols_ss_SZ", "goog.i18n.DateTimeSymbols_ss_ZA", "goog.i18n.DateTimeSymbols_ssy", "goog.i18n.DateTimeSymbols_ssy_ER", "goog.i18n.DateTimeSymbols_st", "goog.i18n.DateTimeSymbols_st_LS", "goog.i18n.DateTimeSymbols_st_ZA", "goog.i18n.DateTimeSymbols_sv_AX", "goog.i18n.DateTimeSymbols_sv_FI", "goog.i18n.DateTimeSymbols_sv_SE", "goog.i18n.DateTimeSymbols_sw_KE", "goog.i18n.DateTimeSymbols_sw_TZ", "goog.i18n.DateTimeSymbols_sw_UG", "goog.i18n.DateTimeSymbols_swc", "goog.i18n.DateTimeSymbols_swc_CD", "goog.i18n.DateTimeSymbols_ta_IN", "goog.i18n.DateTimeSymbols_ta_LK", "goog.i18n.DateTimeSymbols_ta_MY", "goog.i18n.DateTimeSymbols_ta_SG", "goog.i18n.DateTimeSymbols_te_IN", "goog.i18n.DateTimeSymbols_teo", "goog.i18n.DateTimeSymbols_teo_KE", "goog.i18n.DateTimeSymbols_teo_UG", "goog.i18n.DateTimeSymbols_tg", "goog.i18n.DateTimeSymbols_tg_Cyrl", "goog.i18n.DateTimeSymbols_tg_Cyrl_TJ", "goog.i18n.DateTimeSymbols_th_TH", "goog.i18n.DateTimeSymbols_ti", "goog.i18n.DateTimeSymbols_ti_ER", "goog.i18n.DateTimeSymbols_ti_ET", "goog.i18n.DateTimeSymbols_tig", "goog.i18n.DateTimeSymbols_tig_ER", "goog.i18n.DateTimeSymbols_tn", "goog.i18n.DateTimeSymbols_tn_BW", "goog.i18n.DateTimeSymbols_tn_ZA", "goog.i18n.DateTimeSymbols_to", "goog.i18n.DateTimeSymbols_to_TO", "goog.i18n.DateTimeSymbols_tr_CY", "goog.i18n.DateTimeSymbols_tr_TR", "goog.i18n.DateTimeSymbols_ts", "goog.i18n.DateTimeSymbols_ts_ZA", "goog.i18n.DateTimeSymbols_twq", "goog.i18n.DateTimeSymbols_twq_NE", "goog.i18n.DateTimeSymbols_tzm", "goog.i18n.DateTimeSymbols_tzm_Latn", "goog.i18n.DateTimeSymbols_tzm_Latn_MA", "goog.i18n.DateTimeSymbols_uk_UA", "goog.i18n.DateTimeSymbols_ur_IN", "goog.i18n.DateTimeSymbols_ur_PK", "goog.i18n.DateTimeSymbols_uz", "goog.i18n.DateTimeSymbols_uz_Arab", "goog.i18n.DateTimeSymbols_uz_Arab_AF", "goog.i18n.DateTimeSymbols_uz_Cyrl", "goog.i18n.DateTimeSymbols_uz_Cyrl_UZ", "goog.i18n.DateTimeSymbols_uz_Latn", "goog.i18n.DateTimeSymbols_uz_Latn_UZ", "goog.i18n.DateTimeSymbols_vai", "goog.i18n.DateTimeSymbols_vai_Latn", "goog.i18n.DateTimeSymbols_vai_Latn_LR", "goog.i18n.DateTimeSymbols_vai_Vaii", "goog.i18n.DateTimeSymbols_vai_Vaii_LR", "goog.i18n.DateTimeSymbols_ve", "goog.i18n.DateTimeSymbols_ve_ZA", "goog.i18n.DateTimeSymbols_vi_VN", "goog.i18n.DateTimeSymbols_vo", "goog.i18n.DateTimeSymbols_vun", "goog.i18n.DateTimeSymbols_vun_TZ", "goog.i18n.DateTimeSymbols_wae", "goog.i18n.DateTimeSymbols_wae_CH", "goog.i18n.DateTimeSymbols_wal", "goog.i18n.DateTimeSymbols_wal_ET", "goog.i18n.DateTimeSymbols_xh", "goog.i18n.DateTimeSymbols_xh_ZA", "goog.i18n.DateTimeSymbols_xog", "goog.i18n.DateTimeSymbols_xog_UG", "goog.i18n.DateTimeSymbols_yav", "goog.i18n.DateTimeSymbols_yav_CM", "goog.i18n.DateTimeSymbols_yo", "goog.i18n.DateTimeSymbols_yo_NG", "goog.i18n.DateTimeSymbols_zh_Hans", "goog.i18n.DateTimeSymbols_zh_Hans_CN", "goog.i18n.DateTimeSymbols_zh_Hans_HK", "goog.i18n.DateTimeSymbols_zh_Hans_MO", "goog.i18n.DateTimeSymbols_zh_Hans_SG", "goog.i18n.DateTimeSymbols_zh_Hant", "goog.i18n.DateTimeSymbols_zh_Hant_HK", "goog.i18n.DateTimeSymbols_zh_Hant_MO", "goog.i18n.DateTimeSymbols_zh_Hant_TW", "goog.i18n.DateTimeSymbols_zu_ZA"], ["goog.i18n.DateTimeSymbols"]); goog.addDependency("/closure/goog/i18n/graphemebreak.js", ["goog.i18n.GraphemeBreak"], ["goog.structs.InversionMap"]); goog.addDependency("/closure/goog/i18n/messageformat.js", ["goog.i18n.MessageFormat"], ["goog.asserts", "goog.i18n.NumberFormat", "goog.i18n.ordinalRules", "goog.i18n.pluralRules"]); goog.addDependency("/closure/goog/i18n/mime.js", ["goog.i18n.mime", "goog.i18n.mime.encode"], ["goog.array"]); goog.addDependency("/closure/goog/i18n/numberformat.js", ["goog.i18n.NumberFormat", "goog.i18n.NumberFormat.CurrencyStyle", "goog.i18n.NumberFormat.Format"], ["goog.asserts", "goog.i18n.CompactNumberFormatSymbols", "goog.i18n.NumberFormatSymbols", "goog.i18n.currency", "goog.math"]); goog.addDependency("/closure/goog/i18n/numberformatsymbols.js", ["goog.i18n.NumberFormatSymbols", "goog.i18n.NumberFormatSymbols_af", "goog.i18n.NumberFormatSymbols_af_ZA", "goog.i18n.NumberFormatSymbols_am", "goog.i18n.NumberFormatSymbols_am_ET", "goog.i18n.NumberFormatSymbols_ar", "goog.i18n.NumberFormatSymbols_ar_001", "goog.i18n.NumberFormatSymbols_ar_EG", "goog.i18n.NumberFormatSymbols_bg", "goog.i18n.NumberFormatSymbols_bg_BG", "goog.i18n.NumberFormatSymbols_bn", "goog.i18n.NumberFormatSymbols_bn_BD", "goog.i18n.NumberFormatSymbols_br", "goog.i18n.NumberFormatSymbols_br_FR", "goog.i18n.NumberFormatSymbols_ca", "goog.i18n.NumberFormatSymbols_ca_AD", "goog.i18n.NumberFormatSymbols_ca_ES", "goog.i18n.NumberFormatSymbols_chr", "goog.i18n.NumberFormatSymbols_chr_US", "goog.i18n.NumberFormatSymbols_cs", "goog.i18n.NumberFormatSymbols_cs_CZ", "goog.i18n.NumberFormatSymbols_cy", "goog.i18n.NumberFormatSymbols_cy_GB", "goog.i18n.NumberFormatSymbols_da", "goog.i18n.NumberFormatSymbols_da_DK", "goog.i18n.NumberFormatSymbols_de", "goog.i18n.NumberFormatSymbols_de_AT", "goog.i18n.NumberFormatSymbols_de_BE", "goog.i18n.NumberFormatSymbols_de_CH", "goog.i18n.NumberFormatSymbols_de_DE", "goog.i18n.NumberFormatSymbols_de_LU", "goog.i18n.NumberFormatSymbols_el", "goog.i18n.NumberFormatSymbols_el_GR", "goog.i18n.NumberFormatSymbols_en", "goog.i18n.NumberFormatSymbols_en_AS", "goog.i18n.NumberFormatSymbols_en_AU", "goog.i18n.NumberFormatSymbols_en_Dsrt_US", "goog.i18n.NumberFormatSymbols_en_FM", "goog.i18n.NumberFormatSymbols_en_GB", "goog.i18n.NumberFormatSymbols_en_GU", "goog.i18n.NumberFormatSymbols_en_IE", "goog.i18n.NumberFormatSymbols_en_IN", "goog.i18n.NumberFormatSymbols_en_MH", "goog.i18n.NumberFormatSymbols_en_MP", "goog.i18n.NumberFormatSymbols_en_PR", "goog.i18n.NumberFormatSymbols_en_PW", "goog.i18n.NumberFormatSymbols_en_SG", "goog.i18n.NumberFormatSymbols_en_TC", "goog.i18n.NumberFormatSymbols_en_UM", "goog.i18n.NumberFormatSymbols_en_US", "goog.i18n.NumberFormatSymbols_en_VG", "goog.i18n.NumberFormatSymbols_en_VI", "goog.i18n.NumberFormatSymbols_en_ZA", "goog.i18n.NumberFormatSymbols_es", "goog.i18n.NumberFormatSymbols_es_419", "goog.i18n.NumberFormatSymbols_es_EA", "goog.i18n.NumberFormatSymbols_es_ES", "goog.i18n.NumberFormatSymbols_es_IC", "goog.i18n.NumberFormatSymbols_et", "goog.i18n.NumberFormatSymbols_et_EE", "goog.i18n.NumberFormatSymbols_eu", "goog.i18n.NumberFormatSymbols_eu_ES", "goog.i18n.NumberFormatSymbols_fa", "goog.i18n.NumberFormatSymbols_fa_IR", "goog.i18n.NumberFormatSymbols_fi", "goog.i18n.NumberFormatSymbols_fi_FI", "goog.i18n.NumberFormatSymbols_fil", "goog.i18n.NumberFormatSymbols_fil_PH", "goog.i18n.NumberFormatSymbols_fr", "goog.i18n.NumberFormatSymbols_fr_BL", "goog.i18n.NumberFormatSymbols_fr_CA", "goog.i18n.NumberFormatSymbols_fr_FR", "goog.i18n.NumberFormatSymbols_fr_GF", "goog.i18n.NumberFormatSymbols_fr_GP", "goog.i18n.NumberFormatSymbols_fr_MC", "goog.i18n.NumberFormatSymbols_fr_MF", "goog.i18n.NumberFormatSymbols_fr_MQ", "goog.i18n.NumberFormatSymbols_fr_RE", "goog.i18n.NumberFormatSymbols_fr_YT", "goog.i18n.NumberFormatSymbols_gl", "goog.i18n.NumberFormatSymbols_gl_ES", "goog.i18n.NumberFormatSymbols_gsw", "goog.i18n.NumberFormatSymbols_gsw_CH", "goog.i18n.NumberFormatSymbols_gu", "goog.i18n.NumberFormatSymbols_gu_IN", "goog.i18n.NumberFormatSymbols_haw", "goog.i18n.NumberFormatSymbols_haw_US", "goog.i18n.NumberFormatSymbols_he", "goog.i18n.NumberFormatSymbols_he_IL", "goog.i18n.NumberFormatSymbols_hi", "goog.i18n.NumberFormatSymbols_hi_IN", "goog.i18n.NumberFormatSymbols_hr", "goog.i18n.NumberFormatSymbols_hr_HR", "goog.i18n.NumberFormatSymbols_hu", "goog.i18n.NumberFormatSymbols_hu_HU", "goog.i18n.NumberFormatSymbols_id", "goog.i18n.NumberFormatSymbols_id_ID", "goog.i18n.NumberFormatSymbols_in", "goog.i18n.NumberFormatSymbols_is", "goog.i18n.NumberFormatSymbols_is_IS", "goog.i18n.NumberFormatSymbols_it", "goog.i18n.NumberFormatSymbols_it_IT", "goog.i18n.NumberFormatSymbols_it_SM", "goog.i18n.NumberFormatSymbols_iw", "goog.i18n.NumberFormatSymbols_ja", "goog.i18n.NumberFormatSymbols_ja_JP", "goog.i18n.NumberFormatSymbols_kn", "goog.i18n.NumberFormatSymbols_kn_IN", "goog.i18n.NumberFormatSymbols_ko", "goog.i18n.NumberFormatSymbols_ko_KR", "goog.i18n.NumberFormatSymbols_ln", "goog.i18n.NumberFormatSymbols_ln_CD", "goog.i18n.NumberFormatSymbols_lt", "goog.i18n.NumberFormatSymbols_lt_LT", "goog.i18n.NumberFormatSymbols_lv", "goog.i18n.NumberFormatSymbols_lv_LV", "goog.i18n.NumberFormatSymbols_ml", "goog.i18n.NumberFormatSymbols_ml_IN", "goog.i18n.NumberFormatSymbols_mr", "goog.i18n.NumberFormatSymbols_mr_IN", "goog.i18n.NumberFormatSymbols_ms", "goog.i18n.NumberFormatSymbols_ms_Latn_MY", "goog.i18n.NumberFormatSymbols_mt", "goog.i18n.NumberFormatSymbols_mt_MT", "goog.i18n.NumberFormatSymbols_nb", "goog.i18n.NumberFormatSymbols_nb_NO", "goog.i18n.NumberFormatSymbols_nl", "goog.i18n.NumberFormatSymbols_nl_NL", "goog.i18n.NumberFormatSymbols_no", "goog.i18n.NumberFormatSymbols_or", "goog.i18n.NumberFormatSymbols_or_IN", "goog.i18n.NumberFormatSymbols_pl", "goog.i18n.NumberFormatSymbols_pl_PL", "goog.i18n.NumberFormatSymbols_pt", "goog.i18n.NumberFormatSymbols_pt_BR", "goog.i18n.NumberFormatSymbols_pt_PT", "goog.i18n.NumberFormatSymbols_ro", "goog.i18n.NumberFormatSymbols_ro_RO", "goog.i18n.NumberFormatSymbols_ru", "goog.i18n.NumberFormatSymbols_ru_RU", "goog.i18n.NumberFormatSymbols_sk", "goog.i18n.NumberFormatSymbols_sk_SK", "goog.i18n.NumberFormatSymbols_sl", "goog.i18n.NumberFormatSymbols_sl_SI", "goog.i18n.NumberFormatSymbols_sq", "goog.i18n.NumberFormatSymbols_sq_AL", "goog.i18n.NumberFormatSymbols_sr", "goog.i18n.NumberFormatSymbols_sr_Cyrl_RS", "goog.i18n.NumberFormatSymbols_sv", "goog.i18n.NumberFormatSymbols_sv_SE", "goog.i18n.NumberFormatSymbols_sw", "goog.i18n.NumberFormatSymbols_sw_TZ", "goog.i18n.NumberFormatSymbols_ta", "goog.i18n.NumberFormatSymbols_ta_IN", "goog.i18n.NumberFormatSymbols_te", "goog.i18n.NumberFormatSymbols_te_IN", "goog.i18n.NumberFormatSymbols_th", "goog.i18n.NumberFormatSymbols_th_TH", "goog.i18n.NumberFormatSymbols_tl", "goog.i18n.NumberFormatSymbols_tr", "goog.i18n.NumberFormatSymbols_tr_TR", "goog.i18n.NumberFormatSymbols_uk", "goog.i18n.NumberFormatSymbols_uk_UA", "goog.i18n.NumberFormatSymbols_ur", "goog.i18n.NumberFormatSymbols_ur_PK", "goog.i18n.NumberFormatSymbols_vi", "goog.i18n.NumberFormatSymbols_vi_VN", "goog.i18n.NumberFormatSymbols_zh", "goog.i18n.NumberFormatSymbols_zh_CN", "goog.i18n.NumberFormatSymbols_zh_HK", "goog.i18n.NumberFormatSymbols_zh_Hans_CN", "goog.i18n.NumberFormatSymbols_zh_TW", "goog.i18n.NumberFormatSymbols_zu", "goog.i18n.NumberFormatSymbols_zu_ZA"], []); goog.addDependency("/closure/goog/i18n/numberformatsymbolsext.js", ["goog.i18n.NumberFormatSymbolsExt", "goog.i18n.NumberFormatSymbols_aa", "goog.i18n.NumberFormatSymbols_aa_DJ", "goog.i18n.NumberFormatSymbols_aa_ER", "goog.i18n.NumberFormatSymbols_aa_ET", "goog.i18n.NumberFormatSymbols_af_NA", "goog.i18n.NumberFormatSymbols_agq", "goog.i18n.NumberFormatSymbols_agq_CM", "goog.i18n.NumberFormatSymbols_ak", "goog.i18n.NumberFormatSymbols_ak_GH", "goog.i18n.NumberFormatSymbols_ar_AE", "goog.i18n.NumberFormatSymbols_ar_BH", "goog.i18n.NumberFormatSymbols_ar_DJ", "goog.i18n.NumberFormatSymbols_ar_DZ", "goog.i18n.NumberFormatSymbols_ar_EH", "goog.i18n.NumberFormatSymbols_ar_ER", "goog.i18n.NumberFormatSymbols_ar_IL", "goog.i18n.NumberFormatSymbols_ar_IQ", "goog.i18n.NumberFormatSymbols_ar_JO", "goog.i18n.NumberFormatSymbols_ar_KM", "goog.i18n.NumberFormatSymbols_ar_KW", "goog.i18n.NumberFormatSymbols_ar_LB", "goog.i18n.NumberFormatSymbols_ar_LY", "goog.i18n.NumberFormatSymbols_ar_MA", "goog.i18n.NumberFormatSymbols_ar_MR", "goog.i18n.NumberFormatSymbols_ar_OM", "goog.i18n.NumberFormatSymbols_ar_PS", "goog.i18n.NumberFormatSymbols_ar_QA", "goog.i18n.NumberFormatSymbols_ar_SA", "goog.i18n.NumberFormatSymbols_ar_SD", "goog.i18n.NumberFormatSymbols_ar_SO", "goog.i18n.NumberFormatSymbols_ar_SY", "goog.i18n.NumberFormatSymbols_ar_TD", "goog.i18n.NumberFormatSymbols_ar_TN", "goog.i18n.NumberFormatSymbols_ar_YE", "goog.i18n.NumberFormatSymbols_as", "goog.i18n.NumberFormatSymbols_as_IN", "goog.i18n.NumberFormatSymbols_asa", "goog.i18n.NumberFormatSymbols_asa_TZ", "goog.i18n.NumberFormatSymbols_ast", "goog.i18n.NumberFormatSymbols_ast_ES", "goog.i18n.NumberFormatSymbols_az", "goog.i18n.NumberFormatSymbols_az_Cyrl", "goog.i18n.NumberFormatSymbols_az_Cyrl_AZ", "goog.i18n.NumberFormatSymbols_az_Latn", "goog.i18n.NumberFormatSymbols_az_Latn_AZ", "goog.i18n.NumberFormatSymbols_bas", "goog.i18n.NumberFormatSymbols_bas_CM", "goog.i18n.NumberFormatSymbols_be", "goog.i18n.NumberFormatSymbols_be_BY", "goog.i18n.NumberFormatSymbols_bem", "goog.i18n.NumberFormatSymbols_bem_ZM", "goog.i18n.NumberFormatSymbols_bez", "goog.i18n.NumberFormatSymbols_bez_TZ", "goog.i18n.NumberFormatSymbols_bm", "goog.i18n.NumberFormatSymbols_bm_ML", "goog.i18n.NumberFormatSymbols_bn_IN", "goog.i18n.NumberFormatSymbols_bo", "goog.i18n.NumberFormatSymbols_bo_CN", "goog.i18n.NumberFormatSymbols_bo_IN", "goog.i18n.NumberFormatSymbols_brx", "goog.i18n.NumberFormatSymbols_brx_IN", "goog.i18n.NumberFormatSymbols_bs", "goog.i18n.NumberFormatSymbols_bs_Cyrl", "goog.i18n.NumberFormatSymbols_bs_Cyrl_BA", "goog.i18n.NumberFormatSymbols_bs_Latn", "goog.i18n.NumberFormatSymbols_bs_Latn_BA", "goog.i18n.NumberFormatSymbols_byn", "goog.i18n.NumberFormatSymbols_byn_ER", "goog.i18n.NumberFormatSymbols_cgg", "goog.i18n.NumberFormatSymbols_cgg_UG", "goog.i18n.NumberFormatSymbols_ckb", "goog.i18n.NumberFormatSymbols_ckb_Arab", "goog.i18n.NumberFormatSymbols_ckb_Arab_IQ", "goog.i18n.NumberFormatSymbols_ckb_Arab_IR", "goog.i18n.NumberFormatSymbols_ckb_IQ", "goog.i18n.NumberFormatSymbols_ckb_IR", "goog.i18n.NumberFormatSymbols_ckb_Latn", "goog.i18n.NumberFormatSymbols_ckb_Latn_IQ", "goog.i18n.NumberFormatSymbols_dav", "goog.i18n.NumberFormatSymbols_dav_KE", "goog.i18n.NumberFormatSymbols_de_LI", "goog.i18n.NumberFormatSymbols_dje", "goog.i18n.NumberFormatSymbols_dje_NE", "goog.i18n.NumberFormatSymbols_dua", "goog.i18n.NumberFormatSymbols_dua_CM", "goog.i18n.NumberFormatSymbols_dyo", "goog.i18n.NumberFormatSymbols_dyo_SN", "goog.i18n.NumberFormatSymbols_dz", "goog.i18n.NumberFormatSymbols_dz_BT", "goog.i18n.NumberFormatSymbols_ebu", "goog.i18n.NumberFormatSymbols_ebu_KE", "goog.i18n.NumberFormatSymbols_ee", "goog.i18n.NumberFormatSymbols_ee_GH", "goog.i18n.NumberFormatSymbols_ee_TG", "goog.i18n.NumberFormatSymbols_el_CY", "goog.i18n.NumberFormatSymbols_en_150", "goog.i18n.NumberFormatSymbols_en_AG", "goog.i18n.NumberFormatSymbols_en_BB", "goog.i18n.NumberFormatSymbols_en_BE", "goog.i18n.NumberFormatSymbols_en_BM", "goog.i18n.NumberFormatSymbols_en_BS", "goog.i18n.NumberFormatSymbols_en_BW", "goog.i18n.NumberFormatSymbols_en_BZ", "goog.i18n.NumberFormatSymbols_en_CA", "goog.i18n.NumberFormatSymbols_en_CM", "goog.i18n.NumberFormatSymbols_en_DM", "goog.i18n.NumberFormatSymbols_en_Dsrt", "goog.i18n.NumberFormatSymbols_en_FJ", "goog.i18n.NumberFormatSymbols_en_GD", "goog.i18n.NumberFormatSymbols_en_GG", "goog.i18n.NumberFormatSymbols_en_GH", "goog.i18n.NumberFormatSymbols_en_GI", "goog.i18n.NumberFormatSymbols_en_GM", "goog.i18n.NumberFormatSymbols_en_GY", "goog.i18n.NumberFormatSymbols_en_HK", "goog.i18n.NumberFormatSymbols_en_IM", "goog.i18n.NumberFormatSymbols_en_JE", "goog.i18n.NumberFormatSymbols_en_JM", "goog.i18n.NumberFormatSymbols_en_KE", "goog.i18n.NumberFormatSymbols_en_KI", "goog.i18n.NumberFormatSymbols_en_KN", "goog.i18n.NumberFormatSymbols_en_KY", "goog.i18n.NumberFormatSymbols_en_LC", "goog.i18n.NumberFormatSymbols_en_LR", "goog.i18n.NumberFormatSymbols_en_LS", "goog.i18n.NumberFormatSymbols_en_MG", "goog.i18n.NumberFormatSymbols_en_MT", "goog.i18n.NumberFormatSymbols_en_MU", "goog.i18n.NumberFormatSymbols_en_MW", "goog.i18n.NumberFormatSymbols_en_NA", "goog.i18n.NumberFormatSymbols_en_NG", "goog.i18n.NumberFormatSymbols_en_NZ", "goog.i18n.NumberFormatSymbols_en_PG", "goog.i18n.NumberFormatSymbols_en_PH", "goog.i18n.NumberFormatSymbols_en_PK", "goog.i18n.NumberFormatSymbols_en_SB", "goog.i18n.NumberFormatSymbols_en_SC", "goog.i18n.NumberFormatSymbols_en_SL", "goog.i18n.NumberFormatSymbols_en_SS", "goog.i18n.NumberFormatSymbols_en_SZ", "goog.i18n.NumberFormatSymbols_en_TO", "goog.i18n.NumberFormatSymbols_en_TT", "goog.i18n.NumberFormatSymbols_en_TZ", "goog.i18n.NumberFormatSymbols_en_UG", "goog.i18n.NumberFormatSymbols_en_VC", "goog.i18n.NumberFormatSymbols_en_VU", "goog.i18n.NumberFormatSymbols_en_WS", "goog.i18n.NumberFormatSymbols_en_ZM", "goog.i18n.NumberFormatSymbols_en_ZW", "goog.i18n.NumberFormatSymbols_eo", "goog.i18n.NumberFormatSymbols_es_AR", "goog.i18n.NumberFormatSymbols_es_BO", "goog.i18n.NumberFormatSymbols_es_CL", "goog.i18n.NumberFormatSymbols_es_CO", "goog.i18n.NumberFormatSymbols_es_CR", "goog.i18n.NumberFormatSymbols_es_CU", "goog.i18n.NumberFormatSymbols_es_DO", "goog.i18n.NumberFormatSymbols_es_EC", "goog.i18n.NumberFormatSymbols_es_GQ", "goog.i18n.NumberFormatSymbols_es_GT", "goog.i18n.NumberFormatSymbols_es_HN", "goog.i18n.NumberFormatSymbols_es_MX", "goog.i18n.NumberFormatSymbols_es_NI", "goog.i18n.NumberFormatSymbols_es_PA", "goog.i18n.NumberFormatSymbols_es_PE", "goog.i18n.NumberFormatSymbols_es_PH", "goog.i18n.NumberFormatSymbols_es_PR", "goog.i18n.NumberFormatSymbols_es_PY", "goog.i18n.NumberFormatSymbols_es_SV", "goog.i18n.NumberFormatSymbols_es_US", "goog.i18n.NumberFormatSymbols_es_UY", "goog.i18n.NumberFormatSymbols_es_VE", "goog.i18n.NumberFormatSymbols_ewo", "goog.i18n.NumberFormatSymbols_ewo_CM", "goog.i18n.NumberFormatSymbols_fa_AF", "goog.i18n.NumberFormatSymbols_ff", "goog.i18n.NumberFormatSymbols_ff_SN", "goog.i18n.NumberFormatSymbols_fo", "goog.i18n.NumberFormatSymbols_fo_FO", "goog.i18n.NumberFormatSymbols_fr_BE", "goog.i18n.NumberFormatSymbols_fr_BF", "goog.i18n.NumberFormatSymbols_fr_BI", "goog.i18n.NumberFormatSymbols_fr_BJ", "goog.i18n.NumberFormatSymbols_fr_CD", "goog.i18n.NumberFormatSymbols_fr_CF", "goog.i18n.NumberFormatSymbols_fr_CG", "goog.i18n.NumberFormatSymbols_fr_CH", "goog.i18n.NumberFormatSymbols_fr_CI", "goog.i18n.NumberFormatSymbols_fr_CM", "goog.i18n.NumberFormatSymbols_fr_DJ", "goog.i18n.NumberFormatSymbols_fr_DZ", "goog.i18n.NumberFormatSymbols_fr_GA", "goog.i18n.NumberFormatSymbols_fr_GN", "goog.i18n.NumberFormatSymbols_fr_GQ", "goog.i18n.NumberFormatSymbols_fr_HT", "goog.i18n.NumberFormatSymbols_fr_KM", "goog.i18n.NumberFormatSymbols_fr_LU", "goog.i18n.NumberFormatSymbols_fr_MA", "goog.i18n.NumberFormatSymbols_fr_MG", "goog.i18n.NumberFormatSymbols_fr_ML", "goog.i18n.NumberFormatSymbols_fr_MR", "goog.i18n.NumberFormatSymbols_fr_MU", "goog.i18n.NumberFormatSymbols_fr_NC", "goog.i18n.NumberFormatSymbols_fr_NE", "goog.i18n.NumberFormatSymbols_fr_PF", "goog.i18n.NumberFormatSymbols_fr_RW", "goog.i18n.NumberFormatSymbols_fr_SC", "goog.i18n.NumberFormatSymbols_fr_SN", "goog.i18n.NumberFormatSymbols_fr_SY", "goog.i18n.NumberFormatSymbols_fr_TD", "goog.i18n.NumberFormatSymbols_fr_TG", "goog.i18n.NumberFormatSymbols_fr_TN", "goog.i18n.NumberFormatSymbols_fr_VU", "goog.i18n.NumberFormatSymbols_fur", "goog.i18n.NumberFormatSymbols_fur_IT", "goog.i18n.NumberFormatSymbols_ga", "goog.i18n.NumberFormatSymbols_ga_IE", "goog.i18n.NumberFormatSymbols_gd", "goog.i18n.NumberFormatSymbols_gd_GB", "goog.i18n.NumberFormatSymbols_guz", "goog.i18n.NumberFormatSymbols_guz_KE", "goog.i18n.NumberFormatSymbols_gv", "goog.i18n.NumberFormatSymbols_gv_GB", "goog.i18n.NumberFormatSymbols_ha", "goog.i18n.NumberFormatSymbols_ha_Latn", "goog.i18n.NumberFormatSymbols_ha_Latn_GH", "goog.i18n.NumberFormatSymbols_ha_Latn_NE", "goog.i18n.NumberFormatSymbols_ha_Latn_NG", "goog.i18n.NumberFormatSymbols_hr_BA", "goog.i18n.NumberFormatSymbols_hy", "goog.i18n.NumberFormatSymbols_hy_AM", "goog.i18n.NumberFormatSymbols_ia", "goog.i18n.NumberFormatSymbols_ia_FR", "goog.i18n.NumberFormatSymbols_ig", "goog.i18n.NumberFormatSymbols_ig_NG", "goog.i18n.NumberFormatSymbols_ii", "goog.i18n.NumberFormatSymbols_ii_CN", "goog.i18n.NumberFormatSymbols_it_CH", "goog.i18n.NumberFormatSymbols_jgo", "goog.i18n.NumberFormatSymbols_jgo_CM", "goog.i18n.NumberFormatSymbols_jmc", "goog.i18n.NumberFormatSymbols_jmc_TZ", "goog.i18n.NumberFormatSymbols_ka", "goog.i18n.NumberFormatSymbols_ka_GE", "goog.i18n.NumberFormatSymbols_kab", "goog.i18n.NumberFormatSymbols_kab_DZ", "goog.i18n.NumberFormatSymbols_kam", "goog.i18n.NumberFormatSymbols_kam_KE", "goog.i18n.NumberFormatSymbols_kde", "goog.i18n.NumberFormatSymbols_kde_TZ", "goog.i18n.NumberFormatSymbols_kea", "goog.i18n.NumberFormatSymbols_kea_CV", "goog.i18n.NumberFormatSymbols_khq", "goog.i18n.NumberFormatSymbols_khq_ML", "goog.i18n.NumberFormatSymbols_ki", "goog.i18n.NumberFormatSymbols_ki_KE", "goog.i18n.NumberFormatSymbols_kk", "goog.i18n.NumberFormatSymbols_kk_Cyrl", "goog.i18n.NumberFormatSymbols_kk_Cyrl_KZ", "goog.i18n.NumberFormatSymbols_kkj", "goog.i18n.NumberFormatSymbols_kkj_CM", "goog.i18n.NumberFormatSymbols_kl", "goog.i18n.NumberFormatSymbols_kl_GL", "goog.i18n.NumberFormatSymbols_kln", "goog.i18n.NumberFormatSymbols_kln_KE", "goog.i18n.NumberFormatSymbols_km", "goog.i18n.NumberFormatSymbols_km_KH", "goog.i18n.NumberFormatSymbols_ko_KP", "goog.i18n.NumberFormatSymbols_kok", "goog.i18n.NumberFormatSymbols_kok_IN", "goog.i18n.NumberFormatSymbols_ks", "goog.i18n.NumberFormatSymbols_ks_Arab", "goog.i18n.NumberFormatSymbols_ks_Arab_IN", "goog.i18n.NumberFormatSymbols_ksb", "goog.i18n.NumberFormatSymbols_ksb_TZ", "goog.i18n.NumberFormatSymbols_ksf", "goog.i18n.NumberFormatSymbols_ksf_CM", "goog.i18n.NumberFormatSymbols_ksh", "goog.i18n.NumberFormatSymbols_ksh_DE", "goog.i18n.NumberFormatSymbols_kw", "goog.i18n.NumberFormatSymbols_kw_GB", "goog.i18n.NumberFormatSymbols_ky", "goog.i18n.NumberFormatSymbols_ky_KG", "goog.i18n.NumberFormatSymbols_lag", "goog.i18n.NumberFormatSymbols_lag_TZ", "goog.i18n.NumberFormatSymbols_lg", "goog.i18n.NumberFormatSymbols_lg_UG", "goog.i18n.NumberFormatSymbols_ln_AO", "goog.i18n.NumberFormatSymbols_ln_CF", "goog.i18n.NumberFormatSymbols_ln_CG", "goog.i18n.NumberFormatSymbols_lo", "goog.i18n.NumberFormatSymbols_lo_LA", "goog.i18n.NumberFormatSymbols_lu", "goog.i18n.NumberFormatSymbols_lu_CD", "goog.i18n.NumberFormatSymbols_luo", "goog.i18n.NumberFormatSymbols_luo_KE", "goog.i18n.NumberFormatSymbols_luy", "goog.i18n.NumberFormatSymbols_luy_KE", "goog.i18n.NumberFormatSymbols_mas", "goog.i18n.NumberFormatSymbols_mas_KE", "goog.i18n.NumberFormatSymbols_mas_TZ", "goog.i18n.NumberFormatSymbols_mer", "goog.i18n.NumberFormatSymbols_mer_KE", "goog.i18n.NumberFormatSymbols_mfe", "goog.i18n.NumberFormatSymbols_mfe_MU", "goog.i18n.NumberFormatSymbols_mg", "goog.i18n.NumberFormatSymbols_mg_MG", "goog.i18n.NumberFormatSymbols_mgh", "goog.i18n.NumberFormatSymbols_mgh_MZ", "goog.i18n.NumberFormatSymbols_mgo", "goog.i18n.NumberFormatSymbols_mgo_CM", "goog.i18n.NumberFormatSymbols_mk", "goog.i18n.NumberFormatSymbols_mk_MK", "goog.i18n.NumberFormatSymbols_mn", "goog.i18n.NumberFormatSymbols_mn_Cyrl", "goog.i18n.NumberFormatSymbols_mn_Cyrl_MN", "goog.i18n.NumberFormatSymbols_ms_Latn", "goog.i18n.NumberFormatSymbols_ms_Latn_BN", "goog.i18n.NumberFormatSymbols_ms_Latn_SG", "goog.i18n.NumberFormatSymbols_mua", "goog.i18n.NumberFormatSymbols_mua_CM", "goog.i18n.NumberFormatSymbols_my", "goog.i18n.NumberFormatSymbols_my_MM", "goog.i18n.NumberFormatSymbols_naq", "goog.i18n.NumberFormatSymbols_naq_NA", "goog.i18n.NumberFormatSymbols_nd", "goog.i18n.NumberFormatSymbols_nd_ZW", "goog.i18n.NumberFormatSymbols_ne", "goog.i18n.NumberFormatSymbols_ne_IN", "goog.i18n.NumberFormatSymbols_ne_NP", "goog.i18n.NumberFormatSymbols_nl_AW", "goog.i18n.NumberFormatSymbols_nl_BE", "goog.i18n.NumberFormatSymbols_nl_CW", "goog.i18n.NumberFormatSymbols_nl_SR", "goog.i18n.NumberFormatSymbols_nl_SX", "goog.i18n.NumberFormatSymbols_nmg", "goog.i18n.NumberFormatSymbols_nmg_CM", "goog.i18n.NumberFormatSymbols_nn", "goog.i18n.NumberFormatSymbols_nn_NO", "goog.i18n.NumberFormatSymbols_nnh", "goog.i18n.NumberFormatSymbols_nnh_CM", "goog.i18n.NumberFormatSymbols_nr", "goog.i18n.NumberFormatSymbols_nr_ZA", "goog.i18n.NumberFormatSymbols_nso", "goog.i18n.NumberFormatSymbols_nso_ZA", "goog.i18n.NumberFormatSymbols_nus", "goog.i18n.NumberFormatSymbols_nus_SD", "goog.i18n.NumberFormatSymbols_nyn", "goog.i18n.NumberFormatSymbols_nyn_UG", "goog.i18n.NumberFormatSymbols_om", "goog.i18n.NumberFormatSymbols_om_ET", "goog.i18n.NumberFormatSymbols_om_KE", "goog.i18n.NumberFormatSymbols_os", "goog.i18n.NumberFormatSymbols_os_GE", "goog.i18n.NumberFormatSymbols_os_RU", "goog.i18n.NumberFormatSymbols_pa", "goog.i18n.NumberFormatSymbols_pa_Arab", "goog.i18n.NumberFormatSymbols_pa_Arab_PK", "goog.i18n.NumberFormatSymbols_pa_Guru", "goog.i18n.NumberFormatSymbols_pa_Guru_IN", "goog.i18n.NumberFormatSymbols_ps", "goog.i18n.NumberFormatSymbols_ps_AF", "goog.i18n.NumberFormatSymbols_pt_AO", "goog.i18n.NumberFormatSymbols_pt_CV", "goog.i18n.NumberFormatSymbols_pt_GW", "goog.i18n.NumberFormatSymbols_pt_MO", "goog.i18n.NumberFormatSymbols_pt_MZ", "goog.i18n.NumberFormatSymbols_pt_ST", "goog.i18n.NumberFormatSymbols_pt_TL", "goog.i18n.NumberFormatSymbols_rm", "goog.i18n.NumberFormatSymbols_rm_CH", "goog.i18n.NumberFormatSymbols_rn", "goog.i18n.NumberFormatSymbols_rn_BI", "goog.i18n.NumberFormatSymbols_ro_MD", "goog.i18n.NumberFormatSymbols_rof", "goog.i18n.NumberFormatSymbols_rof_TZ", "goog.i18n.NumberFormatSymbols_ru_BY", "goog.i18n.NumberFormatSymbols_ru_KG", "goog.i18n.NumberFormatSymbols_ru_KZ", "goog.i18n.NumberFormatSymbols_ru_MD", "goog.i18n.NumberFormatSymbols_ru_UA", "goog.i18n.NumberFormatSymbols_rw", "goog.i18n.NumberFormatSymbols_rw_RW", "goog.i18n.NumberFormatSymbols_rwk", "goog.i18n.NumberFormatSymbols_rwk_TZ", "goog.i18n.NumberFormatSymbols_sah", "goog.i18n.NumberFormatSymbols_sah_RU", "goog.i18n.NumberFormatSymbols_saq", "goog.i18n.NumberFormatSymbols_saq_KE", "goog.i18n.NumberFormatSymbols_sbp", "goog.i18n.NumberFormatSymbols_sbp_TZ", "goog.i18n.NumberFormatSymbols_se", "goog.i18n.NumberFormatSymbols_se_FI", "goog.i18n.NumberFormatSymbols_se_NO", "goog.i18n.NumberFormatSymbols_seh", "goog.i18n.NumberFormatSymbols_seh_MZ", "goog.i18n.NumberFormatSymbols_ses", "goog.i18n.NumberFormatSymbols_ses_ML", "goog.i18n.NumberFormatSymbols_sg", "goog.i18n.NumberFormatSymbols_sg_CF", "goog.i18n.NumberFormatSymbols_shi", "goog.i18n.NumberFormatSymbols_shi_Latn", "goog.i18n.NumberFormatSymbols_shi_Latn_MA", "goog.i18n.NumberFormatSymbols_shi_Tfng", "goog.i18n.NumberFormatSymbols_shi_Tfng_MA", "goog.i18n.NumberFormatSymbols_si", "goog.i18n.NumberFormatSymbols_si_LK", "goog.i18n.NumberFormatSymbols_sn", "goog.i18n.NumberFormatSymbols_sn_ZW", "goog.i18n.NumberFormatSymbols_so", "goog.i18n.NumberFormatSymbols_so_DJ", "goog.i18n.NumberFormatSymbols_so_ET", "goog.i18n.NumberFormatSymbols_so_KE", "goog.i18n.NumberFormatSymbols_so_SO", "goog.i18n.NumberFormatSymbols_sq_MK", "goog.i18n.NumberFormatSymbols_sq_XK", "goog.i18n.NumberFormatSymbols_sr_Cyrl", "goog.i18n.NumberFormatSymbols_sr_Cyrl_BA", "goog.i18n.NumberFormatSymbols_sr_Cyrl_ME", "goog.i18n.NumberFormatSymbols_sr_Cyrl_XK", "goog.i18n.NumberFormatSymbols_sr_Latn", "goog.i18n.NumberFormatSymbols_sr_Latn_BA", "goog.i18n.NumberFormatSymbols_sr_Latn_ME", "goog.i18n.NumberFormatSymbols_sr_Latn_RS", "goog.i18n.NumberFormatSymbols_sr_Latn_XK", "goog.i18n.NumberFormatSymbols_ss", "goog.i18n.NumberFormatSymbols_ss_SZ", "goog.i18n.NumberFormatSymbols_ss_ZA", "goog.i18n.NumberFormatSymbols_ssy", "goog.i18n.NumberFormatSymbols_ssy_ER", "goog.i18n.NumberFormatSymbols_st", "goog.i18n.NumberFormatSymbols_st_LS", "goog.i18n.NumberFormatSymbols_st_ZA", "goog.i18n.NumberFormatSymbols_sv_AX", "goog.i18n.NumberFormatSymbols_sv_FI", "goog.i18n.NumberFormatSymbols_sw_KE", "goog.i18n.NumberFormatSymbols_sw_UG", "goog.i18n.NumberFormatSymbols_swc", "goog.i18n.NumberFormatSymbols_swc_CD", "goog.i18n.NumberFormatSymbols_ta_LK", "goog.i18n.NumberFormatSymbols_ta_MY", "goog.i18n.NumberFormatSymbols_ta_SG", "goog.i18n.NumberFormatSymbols_teo", "goog.i18n.NumberFormatSymbols_teo_KE", "goog.i18n.NumberFormatSymbols_teo_UG", "goog.i18n.NumberFormatSymbols_tg", "goog.i18n.NumberFormatSymbols_tg_Cyrl", "goog.i18n.NumberFormatSymbols_tg_Cyrl_TJ", "goog.i18n.NumberFormatSymbols_ti", "goog.i18n.NumberFormatSymbols_ti_ER", "goog.i18n.NumberFormatSymbols_ti_ET", "goog.i18n.NumberFormatSymbols_tig", "goog.i18n.NumberFormatSymbols_tig_ER", "goog.i18n.NumberFormatSymbols_tn", "goog.i18n.NumberFormatSymbols_tn_BW", "goog.i18n.NumberFormatSymbols_tn_ZA", "goog.i18n.NumberFormatSymbols_to", "goog.i18n.NumberFormatSymbols_to_TO", "goog.i18n.NumberFormatSymbols_tr_CY", "goog.i18n.NumberFormatSymbols_ts", "goog.i18n.NumberFormatSymbols_ts_ZA", "goog.i18n.NumberFormatSymbols_twq", "goog.i18n.NumberFormatSymbols_twq_NE", "goog.i18n.NumberFormatSymbols_tzm", "goog.i18n.NumberFormatSymbols_tzm_Latn", "goog.i18n.NumberFormatSymbols_tzm_Latn_MA", "goog.i18n.NumberFormatSymbols_ur_IN", "goog.i18n.NumberFormatSymbols_uz", "goog.i18n.NumberFormatSymbols_uz_Arab", "goog.i18n.NumberFormatSymbols_uz_Arab_AF", "goog.i18n.NumberFormatSymbols_uz_Cyrl", "goog.i18n.NumberFormatSymbols_uz_Cyrl_UZ", "goog.i18n.NumberFormatSymbols_uz_Latn", "goog.i18n.NumberFormatSymbols_uz_Latn_UZ", "goog.i18n.NumberFormatSymbols_vai", "goog.i18n.NumberFormatSymbols_vai_Latn", "goog.i18n.NumberFormatSymbols_vai_Latn_LR", "goog.i18n.NumberFormatSymbols_vai_Vaii", "goog.i18n.NumberFormatSymbols_vai_Vaii_LR", "goog.i18n.NumberFormatSymbols_ve", "goog.i18n.NumberFormatSymbols_ve_ZA", "goog.i18n.NumberFormatSymbols_vo", "goog.i18n.NumberFormatSymbols_vun", "goog.i18n.NumberFormatSymbols_vun_TZ", "goog.i18n.NumberFormatSymbols_wae", "goog.i18n.NumberFormatSymbols_wae_CH", "goog.i18n.NumberFormatSymbols_wal", "goog.i18n.NumberFormatSymbols_wal_ET", "goog.i18n.NumberFormatSymbols_xh", "goog.i18n.NumberFormatSymbols_xh_ZA", "goog.i18n.NumberFormatSymbols_xog", "goog.i18n.NumberFormatSymbols_xog_UG", "goog.i18n.NumberFormatSymbols_yav", "goog.i18n.NumberFormatSymbols_yav_CM", "goog.i18n.NumberFormatSymbols_yo", "goog.i18n.NumberFormatSymbols_yo_NG", "goog.i18n.NumberFormatSymbols_zh_Hans", "goog.i18n.NumberFormatSymbols_zh_Hans_HK", "goog.i18n.NumberFormatSymbols_zh_Hans_MO", "goog.i18n.NumberFormatSymbols_zh_Hans_SG", "goog.i18n.NumberFormatSymbols_zh_Hant", "goog.i18n.NumberFormatSymbols_zh_Hant_HK", "goog.i18n.NumberFormatSymbols_zh_Hant_MO", "goog.i18n.NumberFormatSymbols_zh_Hant_TW"], ["goog.i18n.NumberFormatSymbols"]); goog.addDependency("/closure/goog/i18n/ordinalrules.js", ["goog.i18n.ordinalRules"], []); goog.addDependency("/closure/goog/i18n/pluralrules.js", ["goog.i18n.pluralRules"], []); goog.addDependency("/closure/goog/i18n/timezone.js", ["goog.i18n.TimeZone"], ["goog.array", "goog.date.DateLike", "goog.string"]); goog.addDependency("/closure/goog/i18n/uchar.js", ["goog.i18n.uChar"], []); goog.addDependency("/closure/goog/i18n/uchar/localnamefetcher.js", ["goog.i18n.uChar.LocalNameFetcher"], ["goog.i18n.uChar", "goog.i18n.uChar.NameFetcher", "goog.log"]); goog.addDependency("/closure/goog/i18n/uchar/namefetcher.js", ["goog.i18n.uChar.NameFetcher"], []); goog.addDependency("/closure/goog/i18n/uchar/remotenamefetcher.js", ["goog.i18n.uChar.RemoteNameFetcher"], ["goog.Disposable", "goog.Uri", "goog.i18n.uChar", "goog.i18n.uChar.NameFetcher", "goog.log", "goog.net.XhrIo", "goog.structs.Map"]); goog.addDependency("/closure/goog/iter/iter.js", ["goog.iter", "goog.iter.Iterator", "goog.iter.StopIteration"], ["goog.array", "goog.asserts"]); goog.addDependency("/closure/goog/json/evaljsonprocessor.js", ["goog.json.EvalJsonProcessor"], ["goog.json", "goog.json.Processor", "goog.json.Serializer"]); goog.addDependency("/closure/goog/json/json.js", ["goog.json", "goog.json.Serializer"], []); goog.addDependency("/closure/goog/json/nativejsonprocessor.js", ["goog.json.NativeJsonProcessor"], ["goog.asserts", "goog.json", "goog.json.Processor"]); goog.addDependency("/closure/goog/json/processor.js", ["goog.json.Processor"], ["goog.string.Parser", "goog.string.Stringifier"]); goog.addDependency("/closure/goog/labs/classdef/classdef.js", ["goog.labs.classdef"], []); goog.addDependency("/closure/goog/labs/events/touch.js", ["goog.labs.events.touch", "goog.labs.events.touch.TouchData"], ["goog.array", "goog.asserts", "goog.events.EventType", "goog.string"]); goog.addDependency("/closure/goog/labs/events/touch_test.js", ["goog.labs.events.touchTest"], ["goog.labs.events.touch", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/format/csv.js", ["goog.labs.format.csv", "goog.labs.format.csv.ParseError", "goog.labs.format.csv.Token"], ["goog.array", "goog.asserts", "goog.debug.Error", "goog.object", "goog.string", "goog.string.newlines"]); goog.addDependency("/closure/goog/labs/format/csv_test.js", ["goog.labs.format.csvTest"], ["goog.labs.format.csv", "goog.labs.format.csv.ParseError", "goog.object", "goog.testing.asserts", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/mock/mock.js", ["goog.labs.mock"], ["goog.array", "goog.debug", "goog.debug.Error", "goog.functions", "goog.json"]); goog.addDependency("/closure/goog/labs/net/image.js", ["goog.labs.net.image"], ["goog.events.EventHandler", "goog.events.EventType", "goog.net.EventType", "goog.result.SimpleResult", "goog.userAgent"]); goog.addDependency("/closure/goog/labs/net/image_test.js", ["goog.labs.net.imageTest"], ["goog.events", "goog.labs.net.image", "goog.result", "goog.result.Result", "goog.string", "goog.testing.AsyncTestCase", "goog.testing.jsunit", "goog.testing.recordFunction"]); goog.addDependency("/closure/goog/labs/net/webchannel.js", ["goog.net.WebChannel"], ["goog.events", "goog.events.Event"]); goog.addDependency("/closure/goog/labs/net/webchannel/basetestchannel.js", ["goog.labs.net.webChannel.BaseTestChannel"], ["goog.json.EvalJsonProcessor", "goog.labs.net.webChannel.Channel", "goog.labs.net.webChannel.WebChannelRequest", "goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.ServerReachability", "goog.labs.net.webChannel.requestStats.Stat", "goog.net.tmpnetwork"]); goog.addDependency("/closure/goog/labs/net/webchannel/channel.js", ["goog.labs.net.webChannel.Channel"], []); goog.addDependency("/closure/goog/labs/net/webchannel/requeststats.js", ["goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.Event", "goog.labs.net.webChannel.requestStats.ServerReachability", "goog.labs.net.webChannel.requestStats.ServerReachabilityEvent", "goog.labs.net.webChannel.requestStats.Stat", "goog.labs.net.webChannel.requestStats.StatEvent", "goog.labs.net.webChannel.requestStats.TimingEvent"], ["goog.events.Event", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchannelbase.js", ["goog.labs.net.webChannel.WebChannelBase"], ["goog.Uri", "goog.array", "goog.asserts", "goog.debug.TextFormatter", "goog.json", "goog.json.EvalJsonProcessor", "goog.labs.net.webChannel.BaseTestChannel", "goog.labs.net.webChannel.Channel", "goog.labs.net.webChannel.WebChannelDebug", "goog.labs.net.webChannel.WebChannelRequest", "goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.Stat", "goog.log", "goog.net.XhrIo", "goog.net.tmpnetwork", "goog.string", "goog.structs", "goog.structs.CircularBuffer"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchannelbase_test.js", ["goog.labs.net.webChannel.webChannelBaseTest"], ["goog.Timer", "goog.array", "goog.dom", "goog.functions", "goog.json", "goog.labs.net.webChannel.WebChannelBase", "goog.labs.net.webChannel.WebChannelDebug", "goog.labs.net.webChannel.WebChannelRequest", "goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.Stat", "goog.net.tmpnetwork", "goog.structs.Map", "goog.testing.MockClock", "goog.testing.PropertyReplacer", "goog.testing.asserts", "goog.testing.jsunit", "goog.testing.recordFunction"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchannelbasetransport.js", ["goog.labs.net.webChannel.WebChannelBaseTransport"], ["goog.asserts", "goog.events.EventTarget", "goog.labs.net.webChannel.WebChannelBase", "goog.log", "goog.net.WebChannel", "goog.net.WebChannelTransport", "goog.string.path"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchanneldebug.js", ["goog.labs.net.webChannel.WebChannelDebug"], ["goog.json", "goog.log"]); goog.addDependency("/closure/goog/labs/net/webchannel/webchannelrequest.js", ["goog.labs.net.webChannel.WebChannelRequest"], ["goog.Timer", "goog.async.Throttle", "goog.events.EventHandler", "goog.labs.net.webChannel.requestStats", "goog.labs.net.webChannel.requestStats.ServerReachability", "goog.labs.net.webChannel.requestStats.Stat", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.XmlHttp", "goog.object", "goog.userAgent"]); goog.addDependency("/closure/goog/labs/net/webchanneltransport.js", ["goog.net.WebChannelTransport"], []); goog.addDependency("/closure/goog/labs/net/webchanneltransportfactory.js", ["goog.net.createWebChannelTransport"], ["goog.functions", "goog.labs.net.webChannel.WebChannelBaseTransport"]); goog.addDependency("/closure/goog/labs/net/xhr.js", ["goog.labs.net.xhr", "goog.labs.net.xhr.Error", "goog.labs.net.xhr.HttpError", "goog.labs.net.xhr.TimeoutError"], ["goog.debug.Error", "goog.json", "goog.net.HttpStatus", "goog.net.XmlHttp", "goog.result", "goog.result.SimpleResult", "goog.string", "goog.uri.utils"]); goog.addDependency("/closure/goog/labs/object/object.js", ["goog.labs.object"], []); goog.addDependency("/closure/goog/labs/observe/notice.js", ["goog.labs.observe.Notice"], []); goog.addDependency("/closure/goog/labs/observe/observable.js", ["goog.labs.observe.Observable"], ["goog.disposable.IDisposable"]); goog.addDependency("/closure/goog/labs/observe/observableset.js", ["goog.labs.observe.ObservableSet"], ["goog.array", "goog.labs.observe.Observer"]); goog.addDependency("/closure/goog/labs/observe/observationset.js", ["goog.labs.observe.ObservationSet"], ["goog.array", "goog.labs.observe.Observer"]); goog.addDependency("/closure/goog/labs/observe/observer.js", ["goog.labs.observe.Observer"], []); goog.addDependency("/closure/goog/labs/observe/simpleobservable.js", ["goog.labs.observe.SimpleObservable"], ["goog.Disposable", "goog.array", "goog.asserts", "goog.labs.observe.Notice", "goog.labs.observe.Observable", "goog.labs.observe.Observer", "goog.object"]); goog.addDependency("/closure/goog/labs/structs/map.js", ["goog.labs.structs.Map"], ["goog.array", "goog.asserts", "goog.labs.object", "goog.object"]); goog.addDependency("/closure/goog/labs/structs/map_perf.js", ["goog.labs.structs.mapPerf"], ["goog.dom", "goog.labs.structs.Map", "goog.structs.Map", "goog.testing.PerformanceTable", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/structs/multimap.js", ["goog.labs.structs.Multimap"], ["goog.array", "goog.labs.object", "goog.labs.structs.Map"]); goog.addDependency("/closure/goog/labs/style/pixeldensitymonitor.js", ["goog.labs.style.PixelDensityMonitor", "goog.labs.style.PixelDensityMonitor.Density", "goog.labs.style.PixelDensityMonitor.EventType"], ["goog.events", "goog.events.EventTarget"]); goog.addDependency("/closure/goog/labs/style/pixeldensitymonitor_test.js", ["goog.labs.style.PixelDensityMonitorTest"], ["goog.array", "goog.dom.DomHelper", "goog.events", "goog.labs.style.PixelDensityMonitor", "goog.testing.MockControl", "goog.testing.jsunit", "goog.testing.recordFunction"]); goog.addDependency("/closure/goog/labs/testing/assertthat.js", ["goog.labs.testing.MatcherError", "goog.labs.testing.assertThat"], ["goog.asserts", "goog.debug.Error", "goog.labs.testing.Matcher"]); goog.addDependency("/closure/goog/labs/testing/decoratormatcher.js", ["goog.labs.testing.AnythingMatcher"], ["goog.labs.testing.Matcher"]); goog.addDependency("/closure/goog/labs/testing/dictionarymatcher.js", ["goog.labs.testing.HasEntriesMatcher", "goog.labs.testing.HasEntryMatcher", "goog.labs.testing.HasKeyMatcher", "goog.labs.testing.HasValueMatcher"], ["goog.array", "goog.asserts", "goog.labs.testing.Matcher", "goog.string"]); goog.addDependency("/closure/goog/labs/testing/logicmatcher.js", ["goog.labs.testing.AllOfMatcher", "goog.labs.testing.AnyOfMatcher", "goog.labs.testing.IsNotMatcher"], ["goog.array", "goog.labs.testing.Matcher"]); goog.addDependency("/closure/goog/labs/testing/matcher.js", ["goog.labs.testing.Matcher"], []); goog.addDependency("/closure/goog/labs/testing/numbermatcher.js", ["goog.labs.testing.CloseToMatcher", "goog.labs.testing.EqualToMatcher", "goog.labs.testing.GreaterThanEqualToMatcher", "goog.labs.testing.GreaterThanMatcher", "goog.labs.testing.LessThanEqualToMatcher", "goog.labs.testing.LessThanMatcher"], ["goog.asserts", "goog.labs.testing.Matcher"]); goog.addDependency("/closure/goog/labs/testing/objectmatcher.js", ["goog.labs.testing.HasPropertyMatcher", "goog.labs.testing.InstanceOfMatcher", "goog.labs.testing.IsNullMatcher", "goog.labs.testing.IsNullOrUndefinedMatcher", "goog.labs.testing.IsUndefinedMatcher", "goog.labs.testing.ObjectEqualsMatcher"], ["goog.labs.testing.Matcher", "goog.string"]); goog.addDependency("/closure/goog/labs/testing/stringmatcher.js", ["goog.labs.testing.ContainsStringMatcher", "goog.labs.testing.EndsWithMatcher", "goog.labs.testing.EqualToIgnoringCaseMatcher", "goog.labs.testing.EqualToIgnoringWhitespaceMatcher", "goog.labs.testing.EqualsMatcher", "goog.labs.testing.RegexMatcher", "goog.labs.testing.StartsWithMatcher", "goog.labs.testing.StringContainsInOrderMatcher"], ["goog.asserts", "goog.labs.testing.Matcher", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/browser.js", ["goog.labs.userAgent.browser"], ["goog.asserts", "goog.labs.userAgent.util", "goog.memoize", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/browser_test.js", ["goog.labs.userAgent.browserTest"], ["goog.labs.userAgent.browser", "goog.labs.userAgent.testAgents", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/useragent/device.js", ["goog.labs.userAgent.device"], ["goog.labs.userAgent.util"]); goog.addDependency("/closure/goog/labs/useragent/device_test.js", ["goog.labs.userAgent.deviceTest"], ["goog.labs.userAgent.device", "goog.labs.userAgent.testAgents", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/useragent/engine.js", ["goog.labs.userAgent.engine"], ["goog.array", "goog.labs.userAgent.util", "goog.memoize", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/engine_test.js", ["goog.labs.userAgent.engineTest"], ["goog.labs.userAgent.engine", "goog.labs.userAgent.testAgents", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/useragent/platform.js", ["goog.labs.userAgent.platform"], ["goog.labs.userAgent.util", "goog.memoize", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/platform_test.js", ["goog.labs.userAgent.platformTest"], ["goog.labs.userAgent.platform", "goog.labs.userAgent.testAgents", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/labs/useragent/test_agents.js", ["goog.labs.userAgent.testAgents"], []); goog.addDependency("/closure/goog/labs/useragent/util.js", ["goog.labs.userAgent.util"], ["goog.memoize", "goog.string"]); goog.addDependency("/closure/goog/labs/useragent/util_test.js", ["goog.labs.userAgent.utilTest"], ["goog.labs.userAgent.testAgents", "goog.labs.userAgent.util", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/locale/countries.js", ["goog.locale.countries"], []); goog.addDependency("/closure/goog/locale/defaultlocalenameconstants.js", ["goog.locale.defaultLocaleNameConstants"], []); goog.addDependency("/closure/goog/locale/genericfontnames.js", ["goog.locale.genericFontNames"], []); goog.addDependency("/closure/goog/locale/genericfontnamesdata.js", ["goog.locale.genericFontNamesData"], []); goog.addDependency("/closure/goog/locale/locale.js", ["goog.locale"], ["goog.locale.nativeNameConstants"]); goog.addDependency("/closure/goog/locale/nativenameconstants.js", ["goog.locale.nativeNameConstants"], []); goog.addDependency("/closure/goog/locale/scriptToLanguages.js", ["goog.locale.scriptToLanguages"], ["goog.locale"]); goog.addDependency("/closure/goog/locale/timezonedetection.js", ["goog.locale.timeZoneDetection"], ["goog.locale", "goog.locale.TimeZoneFingerprint"]); goog.addDependency("/closure/goog/locale/timezonefingerprint.js", ["goog.locale.TimeZoneFingerprint"], []); goog.addDependency("/closure/goog/locale/timezonelist.js", ["goog.locale.TimeZoneList"], ["goog.locale"]); goog.addDependency("/closure/goog/log/log.js", ["goog.log", "goog.log.Level", "goog.log.LogRecord", "goog.log.Logger"], ["goog.debug", "goog.debug.LogRecord", "goog.debug.Logger"]); goog.addDependency("/closure/goog/log/log_test.js", ["goog.logTest"], ["goog.debug.LogManager", "goog.log", "goog.log.Level", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/math/bezier.js", ["goog.math.Bezier"], ["goog.math", "goog.math.Coordinate"]); goog.addDependency("/closure/goog/math/box.js", ["goog.math.Box"], ["goog.math.Coordinate"]); goog.addDependency("/closure/goog/math/coordinate.js", ["goog.math.Coordinate"], ["goog.math"]); goog.addDependency("/closure/goog/math/coordinate3.js", ["goog.math.Coordinate3"], []); goog.addDependency("/closure/goog/math/exponentialbackoff.js", ["goog.math.ExponentialBackoff"], ["goog.asserts"]); goog.addDependency("/closure/goog/math/integer.js", ["goog.math.Integer"], []); goog.addDependency("/closure/goog/math/interpolator/interpolator1.js", ["goog.math.interpolator.Interpolator1"], []); goog.addDependency("/closure/goog/math/interpolator/linear1.js", ["goog.math.interpolator.Linear1"], ["goog.array", "goog.math", "goog.math.interpolator.Interpolator1"]); goog.addDependency("/closure/goog/math/interpolator/pchip1.js", ["goog.math.interpolator.Pchip1"], ["goog.math", "goog.math.interpolator.Spline1"]); goog.addDependency("/closure/goog/math/interpolator/spline1.js", ["goog.math.interpolator.Spline1"], ["goog.array", "goog.math", "goog.math.interpolator.Interpolator1", "goog.math.tdma"]); goog.addDependency("/closure/goog/math/line.js", ["goog.math.Line"], ["goog.math", "goog.math.Coordinate"]); goog.addDependency("/closure/goog/math/long.js", ["goog.math.Long"], []); goog.addDependency("/closure/goog/math/math.js", ["goog.math"], ["goog.array", "goog.asserts"]); goog.addDependency("/closure/goog/math/matrix.js", ["goog.math.Matrix"], ["goog.array", "goog.math", "goog.math.Size", "goog.string"]); goog.addDependency("/closure/goog/math/range.js", ["goog.math.Range"], []); goog.addDependency("/closure/goog/math/rangeset.js", ["goog.math.RangeSet"], ["goog.array", "goog.iter.Iterator", "goog.iter.StopIteration", "goog.math.Range"]); goog.addDependency("/closure/goog/math/rect.js", ["goog.math.Rect"], ["goog.math.Box", "goog.math.Coordinate", "goog.math.Size"]); goog.addDependency("/closure/goog/math/size.js", ["goog.math.Size"], []); goog.addDependency("/closure/goog/math/tdma.js", ["goog.math.tdma"], []); goog.addDependency("/closure/goog/math/vec2.js", ["goog.math.Vec2"], ["goog.math", "goog.math.Coordinate"]); goog.addDependency("/closure/goog/math/vec3.js", ["goog.math.Vec3"], ["goog.math", "goog.math.Coordinate3"]); goog.addDependency("/closure/goog/memoize/memoize.js", ["goog.memoize"], []); goog.addDependency("/closure/goog/messaging/abstractchannel.js", ["goog.messaging.AbstractChannel"], ["goog.Disposable", "goog.debug", "goog.json", "goog.log", "goog.messaging.MessageChannel"]); goog.addDependency("/closure/goog/messaging/bufferedchannel.js", ["goog.messaging.BufferedChannel"], ["goog.Timer", "goog.Uri", "goog.debug.Error", "goog.events", "goog.log", "goog.messaging.MessageChannel", "goog.messaging.MultiChannel"]); goog.addDependency("/closure/goog/messaging/deferredchannel.js", ["goog.messaging.DeferredChannel"], ["goog.Disposable", "goog.async.Deferred", "goog.messaging.MessageChannel"]); goog.addDependency("/closure/goog/messaging/loggerclient.js", ["goog.messaging.LoggerClient"], ["goog.Disposable", "goog.debug", "goog.debug.LogManager", "goog.debug.Logger"]); goog.addDependency("/closure/goog/messaging/loggerserver.js", ["goog.messaging.LoggerServer"], ["goog.Disposable", "goog.log"]); goog.addDependency("/closure/goog/messaging/messagechannel.js", ["goog.messaging.MessageChannel"], []); goog.addDependency("/closure/goog/messaging/messaging.js", ["goog.messaging"], ["goog.messaging.MessageChannel"]); goog.addDependency("/closure/goog/messaging/multichannel.js", ["goog.messaging.MultiChannel", "goog.messaging.MultiChannel.VirtualChannel"], ["goog.Disposable", "goog.events.EventHandler", "goog.log", "goog.messaging.MessageChannel", "goog.object"]); goog.addDependency("/closure/goog/messaging/portcaller.js", ["goog.messaging.PortCaller"], ["goog.Disposable", "goog.async.Deferred", "goog.messaging.DeferredChannel", "goog.messaging.PortChannel", "goog.messaging.PortNetwork", "goog.object"]); goog.addDependency("/closure/goog/messaging/portchannel.js", ["goog.messaging.PortChannel"], ["goog.Timer", "goog.array", "goog.async.Deferred", "goog.debug", "goog.dom", "goog.dom.DomHelper", "goog.events", "goog.events.EventType", "goog.json", "goog.log", "goog.messaging.AbstractChannel", "goog.messaging.DeferredChannel", "goog.object", "goog.string"]); goog.addDependency("/closure/goog/messaging/portnetwork.js", ["goog.messaging.PortNetwork"], []); goog.addDependency("/closure/goog/messaging/portoperator.js", ["goog.messaging.PortOperator"], ["goog.Disposable", "goog.asserts", "goog.log", "goog.messaging.PortChannel", "goog.messaging.PortNetwork", "goog.object"]); goog.addDependency("/closure/goog/messaging/respondingchannel.js", ["goog.messaging.RespondingChannel"], ["goog.Disposable", "goog.log", "goog.messaging.MessageChannel", "goog.messaging.MultiChannel", "goog.messaging.MultiChannel.VirtualChannel"]); goog.addDependency("/closure/goog/messaging/testdata/portchannel_worker.js", ["goog.messaging.testdata.portchannel_worker"], ["goog.messaging.PortChannel"]); goog.addDependency("/closure/goog/messaging/testdata/portnetwork_worker1.js", ["goog.messaging.testdata.portnetwork_worker1"], ["goog.messaging.PortCaller", "goog.messaging.PortChannel"]); goog.addDependency("/closure/goog/messaging/testdata/portnetwork_worker2.js", ["goog.messaging.testdata.portnetwork_worker2"], ["goog.messaging.PortCaller", "goog.messaging.PortChannel"]); goog.addDependency("/closure/goog/module/abstractmoduleloader.js", ["goog.module.AbstractModuleLoader"], []); goog.addDependency("/closure/goog/module/basemodule.js", ["goog.module.BaseModule"], ["goog.Disposable"]); goog.addDependency("/closure/goog/module/loader.js", ["goog.module.Loader"], ["goog.Timer", "goog.array", "goog.dom", "goog.object"]); goog.addDependency("/closure/goog/module/module.js", ["goog.module"], ["goog.array", "goog.module.Loader"]); goog.addDependency("/closure/goog/module/moduleinfo.js", ["goog.module.ModuleInfo"], ["goog.Disposable", "goog.functions", "goog.module.BaseModule", "goog.module.ModuleLoadCallback"]); goog.addDependency("/closure/goog/module/moduleloadcallback.js", ["goog.module.ModuleLoadCallback"], ["goog.debug.entryPointRegistry", "goog.debug.errorHandlerWeakDep"]); goog.addDependency("/closure/goog/module/moduleloader.js", ["goog.module.ModuleLoader"], ["goog.Timer", "goog.array", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.log", "goog.module.AbstractModuleLoader", "goog.net.BulkLoader", "goog.net.EventType", "goog.net.jsloader", "goog.userAgent.product"]); goog.addDependency("/closure/goog/module/moduleloader_test.js", ["goog.module.ModuleLoaderTest"], ["goog.array", "goog.dom", "goog.functions", "goog.module.ModuleLoader", "goog.module.ModuleManager", "goog.module.ModuleManager.CallbackType", "goog.object", "goog.testing.AsyncTestCase", "goog.testing.PropertyReplacer", "goog.testing.events.EventObserver", "goog.testing.jsunit", "goog.testing.recordFunction", "goog.userAgent.product"]); goog.addDependency("/closure/goog/module/modulemanager.js", ["goog.module.ModuleManager", "goog.module.ModuleManager.CallbackType", "goog.module.ModuleManager.FailureType"], ["goog.Disposable", "goog.array", "goog.asserts", "goog.async.Deferred", "goog.debug.Trace", "goog.dispose", "goog.log", "goog.module.ModuleInfo", "goog.module.ModuleLoadCallback", "goog.object"]); goog.addDependency("/closure/goog/module/testdata/modA_1.js", ["goog.module.testdata.modA_1"], []); goog.addDependency("/closure/goog/module/testdata/modA_2.js", ["goog.module.testdata.modA_2"], ["goog.module.ModuleManager"]); goog.addDependency("/closure/goog/module/testdata/modB_1.js", ["goog.module.testdata.modB_1"], ["goog.module.ModuleManager"]); goog.addDependency("/closure/goog/net/browserchannel.js", ["goog.net.BrowserChannel", "goog.net.BrowserChannel.Error", "goog.net.BrowserChannel.Event", "goog.net.BrowserChannel.Handler", "goog.net.BrowserChannel.LogSaver", "goog.net.BrowserChannel.QueuedMap", "goog.net.BrowserChannel.ServerReachability", "goog.net.BrowserChannel.ServerReachabilityEvent", "goog.net.BrowserChannel.Stat", "goog.net.BrowserChannel.StatEvent", "goog.net.BrowserChannel.State", "goog.net.BrowserChannel.TimingEvent"], ["goog.Uri", "goog.array", "goog.asserts", "goog.debug.TextFormatter", "goog.events.Event", "goog.events.EventTarget", "goog.json", "goog.json.EvalJsonProcessor", "goog.log", "goog.net.BrowserTestChannel", "goog.net.ChannelDebug", "goog.net.ChannelRequest", "goog.net.XhrIo", "goog.net.tmpnetwork", "goog.string", "goog.structs", "goog.structs.CircularBuffer"]); goog.addDependency("/closure/goog/net/browsertestchannel.js", ["goog.net.BrowserTestChannel"], ["goog.json.EvalJsonProcessor", "goog.net.ChannelRequest", "goog.net.ChannelRequest.Error", "goog.net.tmpnetwork", "goog.string.Parser", "goog.userAgent"]); goog.addDependency("/closure/goog/net/bulkloader.js", ["goog.net.BulkLoader"], ["goog.events.EventHandler", "goog.events.EventTarget", "goog.log", "goog.net.BulkLoaderHelper", "goog.net.EventType", "goog.net.XhrIo"]); goog.addDependency("/closure/goog/net/bulkloaderhelper.js", ["goog.net.BulkLoaderHelper"], ["goog.Disposable", "goog.log"]); goog.addDependency("/closure/goog/net/channeldebug.js", ["goog.net.ChannelDebug"], ["goog.json", "goog.log"]); goog.addDependency("/closure/goog/net/channelrequest.js", ["goog.net.ChannelRequest", "goog.net.ChannelRequest.Error"], ["goog.Timer", "goog.async.Throttle", "goog.events.EventHandler", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.XmlHttp", "goog.object", "goog.userAgent"]); goog.addDependency("/closure/goog/net/cookies.js", ["goog.net.Cookies", "goog.net.cookies"], []); goog.addDependency("/closure/goog/net/crossdomainrpc.js", ["goog.net.CrossDomainRpc"], ["goog.Uri", "goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.json", "goog.log", "goog.net.EventType", "goog.net.HttpStatus", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/net/errorcode.js", ["goog.net.ErrorCode"], []); goog.addDependency("/closure/goog/net/eventtype.js", ["goog.net.EventType"], []); goog.addDependency("/closure/goog/net/filedownloader.js", ["goog.net.FileDownloader", "goog.net.FileDownloader.Error"], ["goog.Disposable", "goog.asserts", "goog.async.Deferred", "goog.crypt.hash32", "goog.debug.Error", "goog.events", "goog.events.EventHandler", "goog.fs", "goog.fs.DirectoryEntry", "goog.fs.Error", "goog.fs.FileSaver", "goog.net.EventType", "goog.net.XhrIo", "goog.net.XhrIoPool", "goog.object"]); goog.addDependency("/closure/goog/net/httpstatus.js", ["goog.net.HttpStatus"], []); goog.addDependency("/closure/goog/net/iframeio.js", ["goog.net.IframeIo", "goog.net.IframeIo.IncrementalDataEvent"], ["goog.Timer", "goog.Uri", "goog.debug", "goog.dom", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.events.EventType", "goog.json", "goog.log", "goog.net.ErrorCode", "goog.net.EventType", "goog.reflect", "goog.string", "goog.structs", "goog.userAgent"]); goog.addDependency("/closure/goog/net/iframeloadmonitor.js", ["goog.net.IframeLoadMonitor"], ["goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.userAgent"]); goog.addDependency("/closure/goog/net/imageloader.js", ["goog.net.ImageLoader"], ["goog.array", "goog.dom", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.net.EventType", "goog.object", "goog.userAgent"]); goog.addDependency("/closure/goog/net/ipaddress.js", ["goog.net.IpAddress", "goog.net.Ipv4Address", "goog.net.Ipv6Address"], ["goog.array", "goog.math.Integer", "goog.object", "goog.string"]); goog.addDependency("/closure/goog/net/jsloader.js", ["goog.net.jsloader", "goog.net.jsloader.Error", "goog.net.jsloader.ErrorCode", "goog.net.jsloader.Options"], ["goog.array", "goog.async.Deferred", "goog.debug.Error", "goog.dom", "goog.dom.TagName"]); goog.addDependency("/closure/goog/net/jsonp.js", ["goog.net.Jsonp"], ["goog.Uri", "goog.net.jsloader"]); goog.addDependency("/closure/goog/net/mockiframeio.js", ["goog.net.MockIFrameIo"], ["goog.events.EventTarget", "goog.json", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.IframeIo"]); goog.addDependency("/closure/goog/net/multiiframeloadmonitor.js", ["goog.net.MultiIframeLoadMonitor"], ["goog.events", "goog.net.IframeLoadMonitor"]); goog.addDependency("/closure/goog/net/networkstatusmonitor.js", ["goog.net.NetworkStatusMonitor"], ["goog.events.Listenable"]); goog.addDependency("/closure/goog/net/networktester.js", ["goog.net.NetworkTester"], ["goog.Timer", "goog.Uri", "goog.log"]); goog.addDependency("/closure/goog/net/testdata/jsloader_test1.js", ["goog.net.testdata.jsloader_test1"], []); goog.addDependency("/closure/goog/net/testdata/jsloader_test2.js", ["goog.net.testdata.jsloader_test2"], []); goog.addDependency("/closure/goog/net/testdata/jsloader_test3.js", ["goog.net.testdata.jsloader_test3"], []); goog.addDependency("/closure/goog/net/testdata/jsloader_test4.js", ["goog.net.testdata.jsloader_test4"], []); goog.addDependency("/closure/goog/net/tmpnetwork.js", ["goog.net.tmpnetwork"], ["goog.Uri", "goog.net.ChannelDebug"]); goog.addDependency("/closure/goog/net/websocket.js", ["goog.net.WebSocket", "goog.net.WebSocket.ErrorEvent", "goog.net.WebSocket.EventType", "goog.net.WebSocket.MessageEvent"], ["goog.Timer", "goog.asserts", "goog.debug.entryPointRegistry", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.log"]); goog.addDependency("/closure/goog/net/wrapperxmlhttpfactory.js", ["goog.net.WrapperXmlHttpFactory"], ["goog.net.XmlHttpFactory"]); goog.addDependency("/closure/goog/net/xhrio.js", ["goog.net.XhrIo", "goog.net.XhrIo.ResponseType"], ["goog.Timer", "goog.array", "goog.debug.entryPointRegistry", "goog.events.EventTarget", "goog.json", "goog.log", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.HttpStatus", "goog.net.XmlHttp", "goog.object", "goog.string", "goog.structs", "goog.structs.Map", "goog.uri.utils", "goog.userAgent"]); goog.addDependency("/closure/goog/net/xhriopool.js", ["goog.net.XhrIoPool"], ["goog.net.XhrIo", "goog.structs", "goog.structs.PriorityPool"]); goog.addDependency("/closure/goog/net/xhrmanager.js", ["goog.net.XhrManager", "goog.net.XhrManager.Event", "goog.net.XhrManager.Request"], ["goog.Disposable", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.XhrIo", "goog.net.XhrIoPool", "goog.structs", "goog.structs.Map"]); goog.addDependency("/closure/goog/net/xmlhttp.js", ["goog.net.DefaultXmlHttpFactory", "goog.net.XmlHttp", "goog.net.XmlHttp.OptionType", "goog.net.XmlHttp.ReadyState"], ["goog.net.WrapperXmlHttpFactory", "goog.net.XmlHttpFactory"]); goog.addDependency("/closure/goog/net/xmlhttpfactory.js", ["goog.net.XmlHttpFactory"], []); goog.addDependency("/closure/goog/net/xpc/crosspagechannel.js", ["goog.net.xpc.CrossPageChannel"], ["goog.Disposable", "goog.Uri", "goog.async.Deferred", "goog.async.Delay", "goog.dom", "goog.events", "goog.events.EventHandler", "goog.json", "goog.messaging.AbstractChannel", "goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.FrameElementMethodTransport", "goog.net.xpc.IframePollingTransport", "goog.net.xpc.IframeRelayTransport", "goog.net.xpc.NativeMessagingTransport", "goog.net.xpc.NixTransport", "goog.net.xpc.Transport", "goog.userAgent"]); goog.addDependency("/closure/goog/net/xpc/crosspagechannelrole.js", ["goog.net.xpc.CrossPageChannelRole"], []); goog.addDependency("/closure/goog/net/xpc/frameelementmethodtransport.js", ["goog.net.xpc.FrameElementMethodTransport"], ["goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.Transport"]); goog.addDependency("/closure/goog/net/xpc/iframepollingtransport.js", ["goog.net.xpc.IframePollingTransport", "goog.net.xpc.IframePollingTransport.Receiver", "goog.net.xpc.IframePollingTransport.Sender"], ["goog.array", "goog.dom", "goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.Transport", "goog.userAgent"]); goog.addDependency("/closure/goog/net/xpc/iframerelaytransport.js", ["goog.net.xpc.IframeRelayTransport"], ["goog.dom", "goog.events", "goog.net.xpc", "goog.net.xpc.Transport", "goog.userAgent"]); goog.addDependency("/closure/goog/net/xpc/nativemessagingtransport.js", ["goog.net.xpc.NativeMessagingTransport"], ["goog.Timer", "goog.asserts", "goog.async.Deferred", "goog.events", "goog.events.EventHandler", "goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.Transport"]); goog.addDependency("/closure/goog/net/xpc/nixtransport.js", ["goog.net.xpc.NixTransport"], ["goog.net.xpc", "goog.net.xpc.CrossPageChannelRole", "goog.net.xpc.Transport", "goog.reflect"]); goog.addDependency("/closure/goog/net/xpc/relay.js", ["goog.net.xpc.relay"], []); goog.addDependency("/closure/goog/net/xpc/transport.js", ["goog.net.xpc.Transport"], ["goog.Disposable", "goog.dom", "goog.net.xpc"]); goog.addDependency("/closure/goog/net/xpc/xpc.js", ["goog.net.xpc", "goog.net.xpc.CfgFields", "goog.net.xpc.ChannelStates", "goog.net.xpc.TransportNames", "goog.net.xpc.TransportTypes", "goog.net.xpc.UriCfgFields"], ["goog.log"]); goog.addDependency("/closure/goog/object/object.js", ["goog.object"], []); goog.addDependency("/closure/goog/positioning/absoluteposition.js", ["goog.positioning.AbsolutePosition"], ["goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.positioning", "goog.positioning.AbstractPosition"]); goog.addDependency("/closure/goog/positioning/abstractposition.js", ["goog.positioning.AbstractPosition"], ["goog.math.Box", "goog.math.Size", "goog.positioning.Corner"]); goog.addDependency("/closure/goog/positioning/anchoredposition.js", ["goog.positioning.AnchoredPosition"], ["goog.math.Box", "goog.positioning", "goog.positioning.AbstractPosition"]); goog.addDependency("/closure/goog/positioning/anchoredviewportposition.js", ["goog.positioning.AnchoredViewportPosition"], ["goog.math.Box", "goog.positioning", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.OverflowStatus"]); goog.addDependency("/closure/goog/positioning/clientposition.js", ["goog.positioning.ClientPosition"], ["goog.asserts", "goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.positioning", "goog.positioning.AbstractPosition", "goog.style"]); goog.addDependency("/closure/goog/positioning/clientposition_test.js", ["goog.positioning.clientPositionTest"], ["goog.dom", "goog.positioning.ClientPosition", "goog.style", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/positioning/menuanchoredposition.js", ["goog.positioning.MenuAnchoredPosition"], ["goog.math.Box", "goog.math.Size", "goog.positioning", "goog.positioning.AnchoredViewportPosition", "goog.positioning.Corner", "goog.positioning.Overflow"]); goog.addDependency("/closure/goog/positioning/positioning.js", ["goog.positioning", "goog.positioning.Corner", "goog.positioning.CornerBit", "goog.positioning.Overflow", "goog.positioning.OverflowStatus"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.style", "goog.style.bidi"]); goog.addDependency("/closure/goog/positioning/positioning_test.js", ["goog.positioningTest"], ["goog.dom", "goog.dom.DomHelper", "goog.math.Box", "goog.math.Coordinate", "goog.math.Rect", "goog.math.Size", "goog.positioning", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.OverflowStatus", "goog.style", "goog.testing.ExpectedFailures", "goog.testing.jsunit", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/positioning/viewportclientposition.js", ["goog.positioning.ViewportClientPosition"], ["goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.positioning.ClientPosition"]); goog.addDependency("/closure/goog/positioning/viewportposition.js", ["goog.positioning.ViewportPosition"], ["goog.math.Box", "goog.math.Coordinate", "goog.math.Size", "goog.positioning.AbstractPosition"]); goog.addDependency("/closure/goog/proto/proto.js", ["goog.proto"], ["goog.proto.Serializer"]); goog.addDependency("/closure/goog/proto/serializer.js", ["goog.proto.Serializer"], ["goog.json.Serializer", "goog.string"]); goog.addDependency("/closure/goog/proto2/descriptor.js", ["goog.proto2.Descriptor", "goog.proto2.Metadata"], ["goog.array", "goog.object", "goog.proto2.Util"]); goog.addDependency("/closure/goog/proto2/fielddescriptor.js", ["goog.proto2.FieldDescriptor"], ["goog.proto2.Util", "goog.string"]); goog.addDependency("/closure/goog/proto2/lazydeserializer.js", ["goog.proto2.LazyDeserializer"], ["goog.proto2.Message", "goog.proto2.Serializer", "goog.proto2.Util"]); goog.addDependency("/closure/goog/proto2/message.js", ["goog.proto2.Message"], ["goog.proto2.Descriptor", "goog.proto2.FieldDescriptor", "goog.proto2.Util", "goog.string"]); goog.addDependency("/closure/goog/proto2/objectserializer.js", ["goog.proto2.ObjectSerializer"], ["goog.proto2.Serializer", "goog.proto2.Util", "goog.string"]); goog.addDependency("/closure/goog/proto2/package_test.pb.js", ["someprotopackage.TestPackageTypes"], ["goog.proto2.Message", "proto2.TestAllTypes"]); goog.addDependency("/closure/goog/proto2/pbliteserializer.js", ["goog.proto2.PbLiteSerializer"], ["goog.proto2.LazyDeserializer", "goog.proto2.Util"]); goog.addDependency("/closure/goog/proto2/serializer.js", ["goog.proto2.Serializer"], ["goog.proto2.Descriptor", "goog.proto2.FieldDescriptor", "goog.proto2.Message", "goog.proto2.Util"]); goog.addDependency("/closure/goog/proto2/test.pb.js", ["proto2.TestAllTypes", "proto2.TestAllTypes.NestedEnum", "proto2.TestAllTypes.NestedMessage", "proto2.TestAllTypes.OptionalGroup", "proto2.TestAllTypes.RepeatedGroup"], ["goog.proto2.Message"]); goog.addDependency("/closure/goog/proto2/textformatserializer.js", ["goog.proto2.TextFormatSerializer", "goog.proto2.TextFormatSerializer.Parser"], ["goog.array", "goog.asserts", "goog.json", "goog.proto2.Serializer", "goog.proto2.Util", "goog.string"]); goog.addDependency("/closure/goog/proto2/textformatserializer_test.js", ["goog.proto2.TextFormatSerializerTest"], ["goog.proto2.TextFormatSerializer", "goog.testing.jsunit", "proto2.TestAllTypes"]); goog.addDependency("/closure/goog/proto2/util.js", ["goog.proto2.Util"], ["goog.asserts"]); goog.addDependency("/closure/goog/pubsub/pubsub.js", ["goog.pubsub.PubSub"], ["goog.Disposable", "goog.array"]); goog.addDependency("/closure/goog/reflect/reflect.js", ["goog.reflect"], []); goog.addDependency("/closure/goog/result/deferredadaptor.js", ["goog.result.DeferredAdaptor"], ["goog.async.Deferred", "goog.result", "goog.result.Result"]); goog.addDependency("/closure/goog/result/dependentresult.js", ["goog.result.DependentResult"], ["goog.result.Result"]); goog.addDependency("/closure/goog/result/result_interface.js", ["goog.result.Result"], []); goog.addDependency("/closure/goog/result/resultutil.js", ["goog.result"], ["goog.array", "goog.result.DependentResult", "goog.result.Result", "goog.result.SimpleResult"]); goog.addDependency("/closure/goog/result/simpleresult.js", ["goog.result.SimpleResult", "goog.result.SimpleResult.StateError"], ["goog.debug.Error", "goog.result.Result"]); goog.addDependency("/closure/goog/soy/data.js", ["goog.soy.data", "goog.soy.data.SanitizedContent", "goog.soy.data.SanitizedContentKind"], []); goog.addDependency("/closure/goog/soy/renderer.js", ["goog.soy.InjectedDataSupplier", "goog.soy.Renderer"], ["goog.asserts", "goog.dom", "goog.soy", "goog.soy.data.SanitizedContent", "goog.soy.data.SanitizedContentKind"]); goog.addDependency("/closure/goog/soy/soy.js", ["goog.soy"], ["goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.soy.data", "goog.string"]); goog.addDependency("/closure/goog/soy/soy_test.js", ["goog.soy.testHelper"], ["goog.dom", "goog.soy.data.SanitizedContent", "goog.soy.data.SanitizedContentKind", "goog.string", "goog.userAgent", "goog.dom.TagName"]); goog.addDependency("/closure/goog/spell/spellcheck.js", ["goog.spell.SpellCheck", "goog.spell.SpellCheck.WordChangedEvent"], ["goog.Timer", "goog.events.EventTarget", "goog.structs.Set"]); goog.addDependency("/closure/goog/stats/basicstat.js", ["goog.stats.BasicStat"], ["goog.array", "goog.iter", "goog.log", "goog.object", "goog.string.format", "goog.structs.CircularBuffer"]); goog.addDependency("/closure/goog/storage/collectablestorage.js", ["goog.storage.CollectableStorage"], ["goog.array", "goog.asserts", "goog.iter", "goog.storage.ErrorCode", "goog.storage.ExpiringStorage", "goog.storage.RichStorage.Wrapper", "goog.storage.mechanism.IterableMechanism"]); goog.addDependency("/closure/goog/storage/encryptedstorage.js", ["goog.storage.EncryptedStorage"], ["goog.crypt", "goog.crypt.Arc4", "goog.crypt.Sha1", "goog.crypt.base64", "goog.json", "goog.json.Serializer", "goog.storage.CollectableStorage", "goog.storage.ErrorCode", "goog.storage.RichStorage", "goog.storage.RichStorage.Wrapper", "goog.storage.mechanism.IterableMechanism"]); goog.addDependency("/closure/goog/storage/errorcode.js", ["goog.storage.ErrorCode"], []); goog.addDependency("/closure/goog/storage/expiringstorage.js", ["goog.storage.ExpiringStorage"], ["goog.storage.RichStorage", "goog.storage.RichStorage.Wrapper", "goog.storage.mechanism.Mechanism"]); goog.addDependency("/closure/goog/storage/mechanism/errorcode.js", ["goog.storage.mechanism.ErrorCode"], []); goog.addDependency("/closure/goog/storage/mechanism/errorhandlingmechanism.js", ["goog.storage.mechanism.ErrorHandlingMechanism"], ["goog.storage.mechanism.Mechanism"]); goog.addDependency("/closure/goog/storage/mechanism/html5localstorage.js", ["goog.storage.mechanism.HTML5LocalStorage"], ["goog.storage.mechanism.HTML5WebStorage"]); goog.addDependency("/closure/goog/storage/mechanism/html5sessionstorage.js", ["goog.storage.mechanism.HTML5SessionStorage"], ["goog.storage.mechanism.HTML5WebStorage"]); goog.addDependency("/closure/goog/storage/mechanism/html5webstorage.js", ["goog.storage.mechanism.HTML5WebStorage"], ["goog.asserts", "goog.iter.Iterator", "goog.iter.StopIteration", "goog.storage.mechanism.ErrorCode", "goog.storage.mechanism.IterableMechanism"]); goog.addDependency("/closure/goog/storage/mechanism/ieuserdata.js", ["goog.storage.mechanism.IEUserData"], ["goog.asserts", "goog.iter.Iterator", "goog.iter.StopIteration", "goog.storage.mechanism.ErrorCode", "goog.storage.mechanism.IterableMechanism", "goog.structs.Map", "goog.userAgent"]); goog.addDependency("/closure/goog/storage/mechanism/iterablemechanism.js", ["goog.storage.mechanism.IterableMechanism"], ["goog.array", "goog.asserts", "goog.iter", "goog.iter.Iterator", "goog.storage.mechanism.Mechanism"]); goog.addDependency("/closure/goog/storage/mechanism/iterablemechanismtester.js", ["goog.storage.mechanism.iterableMechanismTester"], ["goog.iter.Iterator", "goog.storage.mechanism.IterableMechanism", "goog.testing.asserts"]); goog.addDependency("/closure/goog/storage/mechanism/mechanism.js", ["goog.storage.mechanism.Mechanism"], []); goog.addDependency("/closure/goog/storage/mechanism/mechanismfactory.js", ["goog.storage.mechanism.mechanismfactory"], ["goog.storage.mechanism.HTML5LocalStorage", "goog.storage.mechanism.HTML5SessionStorage", "goog.storage.mechanism.IEUserData", "goog.storage.mechanism.IterableMechanism", "goog.storage.mechanism.PrefixedMechanism"]); goog.addDependency("/closure/goog/storage/mechanism/mechanismseparationtester.js", ["goog.storage.mechanism.mechanismSeparationTester"], ["goog.iter.Iterator", "goog.storage.mechanism.IterableMechanism", "goog.testing.asserts"]); goog.addDependency("/closure/goog/storage/mechanism/mechanismsharingtester.js", ["goog.storage.mechanism.mechanismSharingTester"], ["goog.iter.Iterator", "goog.storage.mechanism.IterableMechanism", "goog.testing.asserts"]); goog.addDependency("/closure/goog/storage/mechanism/mechanismtester.js", ["goog.storage.mechanism.mechanismTester"], ["goog.storage.mechanism.ErrorCode", "goog.storage.mechanism.HTML5LocalStorage", "goog.storage.mechanism.Mechanism", "goog.testing.asserts", "goog.userAgent.product", "goog.userAgent.product.isVersion"]); goog.addDependency("/closure/goog/storage/mechanism/prefixedmechanism.js", ["goog.storage.mechanism.PrefixedMechanism"], ["goog.iter.Iterator", "goog.storage.mechanism.IterableMechanism"]); goog.addDependency("/closure/goog/storage/richstorage.js", ["goog.storage.RichStorage", "goog.storage.RichStorage.Wrapper"], ["goog.storage.ErrorCode", "goog.storage.Storage", "goog.storage.mechanism.Mechanism"]); goog.addDependency("/closure/goog/storage/storage.js", ["goog.storage.Storage"], ["goog.json", "goog.json.Serializer", "goog.storage.ErrorCode"]); goog.addDependency("/closure/goog/storage/storage_test.js", ["goog.storage.storage_test"], ["goog.storage.Storage", "goog.structs.Map", "goog.testing.asserts"]); goog.addDependency("/closure/goog/string/linkify.js", ["goog.string.linkify"], ["goog.string"]); goog.addDependency("/closure/goog/string/newlines.js", ["goog.string.newlines", "goog.string.newlines.Line"], ["goog.array"]); goog.addDependency("/closure/goog/string/newlines_test.js", ["goog.string.newlinesTest"], ["goog.string.newlines", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/string/parser.js", ["goog.string.Parser"], []); goog.addDependency("/closure/goog/string/path.js", ["goog.string.path"], ["goog.array", "goog.string"]); goog.addDependency("/closure/goog/string/string.js", ["goog.string", "goog.string.Unicode"], []); goog.addDependency("/closure/goog/string/string_test.js", ["goog.stringTest"], ["goog.functions", "goog.object", "goog.string", "goog.testing.PropertyReplacer", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/string/stringbuffer.js", ["goog.string.StringBuffer"], []); goog.addDependency("/closure/goog/string/stringformat.js", ["goog.string.format"], ["goog.string"]); goog.addDependency("/closure/goog/string/stringifier.js", ["goog.string.Stringifier"], []); goog.addDependency("/closure/goog/structs/avltree.js", ["goog.structs.AvlTree", "goog.structs.AvlTree.Node"], ["goog.structs.Collection"]); goog.addDependency("/closure/goog/structs/circularbuffer.js", ["goog.structs.CircularBuffer"], []); goog.addDependency("/closure/goog/structs/collection.js", ["goog.structs.Collection"], []); goog.addDependency("/closure/goog/structs/heap.js", ["goog.structs.Heap"], ["goog.array", "goog.object", "goog.structs.Node"]); goog.addDependency("/closure/goog/structs/inversionmap.js", ["goog.structs.InversionMap"], ["goog.array"]); goog.addDependency("/closure/goog/structs/linkedmap.js", ["goog.structs.LinkedMap"], ["goog.structs.Map"]); goog.addDependency("/closure/goog/structs/map.js", ["goog.structs.Map"], ["goog.iter.Iterator", "goog.iter.StopIteration", "goog.object"]); goog.addDependency("/closure/goog/structs/node.js", ["goog.structs.Node"], []); goog.addDependency("/closure/goog/structs/pool.js", ["goog.structs.Pool"], ["goog.Disposable", "goog.structs.Queue", "goog.structs.Set"]); goog.addDependency("/closure/goog/structs/prioritypool.js", ["goog.structs.PriorityPool"], ["goog.structs.Pool", "goog.structs.PriorityQueue"]); goog.addDependency("/closure/goog/structs/priorityqueue.js", ["goog.structs.PriorityQueue"], ["goog.structs.Heap"]); goog.addDependency("/closure/goog/structs/quadtree.js", ["goog.structs.QuadTree", "goog.structs.QuadTree.Node", "goog.structs.QuadTree.Point"], ["goog.math.Coordinate"]); goog.addDependency("/closure/goog/structs/queue.js", ["goog.structs.Queue"], ["goog.array"]); goog.addDependency("/closure/goog/structs/set.js", ["goog.structs.Set"], ["goog.structs", "goog.structs.Collection", "goog.structs.Map"]); goog.addDependency("/closure/goog/structs/simplepool.js", ["goog.structs.SimplePool"], ["goog.Disposable"]); goog.addDependency("/closure/goog/structs/stringset.js", ["goog.structs.StringSet"], ["goog.asserts", "goog.iter"]); goog.addDependency("/closure/goog/structs/structs.js", ["goog.structs"], ["goog.array", "goog.object"]); goog.addDependency("/closure/goog/structs/treenode.js", ["goog.structs.TreeNode"], ["goog.array", "goog.asserts", "goog.structs.Node"]); goog.addDependency("/closure/goog/structs/trie.js", ["goog.structs.Trie"], ["goog.object", "goog.structs"]); goog.addDependency("/closure/goog/style/bidi.js", ["goog.style.bidi"], ["goog.dom", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/style/cursor.js", ["goog.style.cursor"], ["goog.userAgent"]); goog.addDependency("/closure/goog/style/style.js", ["goog.style"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.vendor", "goog.math.Box", "goog.math.Coordinate", "goog.math.Rect", "goog.math.Size", "goog.object", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/style/style_test.js", ["goog.style_test"], ["goog.array", "goog.color", "goog.dom", "goog.events.BrowserEvent", "goog.math.Box", "goog.math.Coordinate", "goog.math.Rect", "goog.math.Size", "goog.object", "goog.string", "goog.style", "goog.testing.ExpectedFailures", "goog.testing.PropertyReplacer", "goog.testing.asserts", "goog.testing.jsunit", "goog.userAgent", "goog.userAgent.product", "goog.userAgent.product.isVersion"]); goog.addDependency("/closure/goog/style/stylescrollbartester.js", ["goog.styleScrollbarTester"], ["goog.dom", "goog.style", "goog.testing.asserts"]); goog.addDependency("/closure/goog/style/transition.js", ["goog.style.transition", "goog.style.transition.Css3Property"], ["goog.array", "goog.asserts", "goog.dom.vendor", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/testing/asserts.js", ["goog.testing.JsUnitException", "goog.testing.asserts"], ["goog.testing.stacktrace"]); goog.addDependency("/closure/goog/testing/async/mockcontrol.js", ["goog.testing.async.MockControl"], ["goog.asserts", "goog.async.Deferred", "goog.debug", "goog.testing.asserts", "goog.testing.mockmatchers.IgnoreArgument"]); goog.addDependency("/closure/goog/testing/asynctestcase.js", ["goog.testing.AsyncTestCase", "goog.testing.AsyncTestCase.ControlBreakingException"], ["goog.testing.TestCase", "goog.testing.TestCase.Test", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/benchmark.js", ["goog.testing.benchmark"], ["goog.dom", "goog.dom.TagName", "goog.testing.PerformanceTable", "goog.testing.PerformanceTimer", "goog.testing.TestCase"]); goog.addDependency("/closure/goog/testing/continuationtestcase.js", ["goog.testing.ContinuationTestCase", "goog.testing.ContinuationTestCase.Step", "goog.testing.ContinuationTestCase.Test"], ["goog.array", "goog.events.EventHandler", "goog.testing.TestCase", "goog.testing.TestCase.Test", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/deferredtestcase.js", ["goog.testing.DeferredTestCase"], ["goog.async.Deferred", "goog.testing.AsyncTestCase", "goog.testing.TestCase"]); goog.addDependency("/closure/goog/testing/dom.js", ["goog.testing.dom"], ["goog.dom", "goog.dom.NodeIterator", "goog.dom.NodeType", "goog.dom.TagIterator", "goog.dom.TagName", "goog.dom.classes", "goog.iter", "goog.object", "goog.string", "goog.style", "goog.testing.asserts", "goog.userAgent"]); goog.addDependency("/closure/goog/testing/editor/dom.js", ["goog.testing.editor.dom"], ["goog.dom.NodeType", "goog.dom.TagIterator", "goog.dom.TagWalkType", "goog.iter", "goog.string", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/editor/fieldmock.js", ["goog.testing.editor.FieldMock"], ["goog.dom", "goog.dom.Range", "goog.editor.Field", "goog.testing.LooseMock", "goog.testing.mockmatchers"]); goog.addDependency("/closure/goog/testing/editor/testhelper.js", ["goog.testing.editor.TestHelper"], ["goog.Disposable", "goog.dom", "goog.dom.Range", "goog.editor.BrowserFeature", "goog.editor.node", "goog.editor.plugins.AbstractBubblePlugin", "goog.testing.dom"]); goog.addDependency("/closure/goog/testing/events/eventobserver.js", ["goog.testing.events.EventObserver"], ["goog.array"]); goog.addDependency("/closure/goog/testing/events/events.js", ["goog.testing.events", "goog.testing.events.Event"], ["goog.Disposable", "goog.asserts", "goog.dom.NodeType", "goog.events", "goog.events.BrowserEvent", "goog.events.BrowserFeature", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.object", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/testing/events/matchers.js", ["goog.testing.events.EventMatcher"], ["goog.events.Event", "goog.testing.mockmatchers.ArgumentMatcher"]); goog.addDependency("/closure/goog/testing/events/onlinehandler.js", ["goog.testing.events.OnlineHandler"], ["goog.events.EventTarget", "goog.net.NetworkStatusMonitor"]); goog.addDependency("/closure/goog/testing/expectedfailures.js", ["goog.testing.ExpectedFailures"], ["goog.debug.DivConsole", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.log", "goog.style", "goog.testing.JsUnitException", "goog.testing.TestCase", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/fs/blob.js", ["goog.testing.fs.Blob"], ["goog.crypt.base64"]); goog.addDependency("/closure/goog/testing/fs/entry.js", ["goog.testing.fs.DirectoryEntry", "goog.testing.fs.Entry", "goog.testing.fs.FileEntry"], ["goog.Timer", "goog.array", "goog.asserts", "goog.async.Deferred", "goog.fs.DirectoryEntry", "goog.fs.DirectoryEntryImpl", "goog.fs.Entry", "goog.fs.Error", "goog.fs.FileEntry", "goog.functions", "goog.object", "goog.string", "goog.testing.fs.File", "goog.testing.fs.FileWriter"]); goog.addDependency("/closure/goog/testing/fs/file.js", ["goog.testing.fs.File"], ["goog.testing.fs.Blob"]); goog.addDependency("/closure/goog/testing/fs/filereader.js", ["goog.testing.fs.FileReader"], ["goog.Timer", "goog.events.EventTarget", "goog.fs.Error", "goog.fs.FileReader.EventType", "goog.fs.FileReader.ReadyState", "goog.testing.fs.File", "goog.testing.fs.ProgressEvent"]); goog.addDependency("/closure/goog/testing/fs/filesystem.js", ["goog.testing.fs.FileSystem"], ["goog.fs.FileSystem", "goog.testing.fs.DirectoryEntry"]); goog.addDependency("/closure/goog/testing/fs/filewriter.js", ["goog.testing.fs.FileWriter"], ["goog.Timer", "goog.events.Event", "goog.events.EventTarget", "goog.fs.Error", "goog.fs.FileSaver.EventType", "goog.fs.FileSaver.ReadyState", "goog.string", "goog.testing.fs.File", "goog.testing.fs.ProgressEvent"]); goog.addDependency("/closure/goog/testing/fs/fs.js", ["goog.testing.fs"], ["goog.Timer", "goog.array", "goog.async.Deferred", "goog.fs", "goog.testing.fs.Blob", "goog.testing.fs.FileSystem"]); goog.addDependency("/closure/goog/testing/fs/progressevent.js", ["goog.testing.fs.ProgressEvent"], ["goog.events.Event"]); goog.addDependency("/closure/goog/testing/functionmock.js", ["goog.testing", "goog.testing.FunctionMock", "goog.testing.GlobalFunctionMock", "goog.testing.MethodMock"], ["goog.object", "goog.testing.LooseMock", "goog.testing.Mock", "goog.testing.MockInterface", "goog.testing.PropertyReplacer", "goog.testing.StrictMock"]); goog.addDependency("/closure/goog/testing/graphics.js", ["goog.testing.graphics"], ["goog.graphics.Path.Segment", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/i18n/asserts.js", ["goog.testing.i18n.asserts"], ["goog.testing.jsunit"]); goog.addDependency("/closure/goog/testing/i18n/asserts_test.js", ["goog.testing.i18n.assertsTest"], ["goog.testing.i18n.asserts", "goog.testing.ExpectedFailures"]); goog.addDependency("/closure/goog/testing/jsunit.js", ["goog.testing.jsunit"], ["goog.testing.TestCase", "goog.testing.TestRunner"]); goog.addDependency("/closure/goog/testing/loosemock.js", ["goog.testing.LooseExpectationCollection", "goog.testing.LooseMock"], ["goog.array", "goog.structs.Map", "goog.testing.Mock"]); goog.addDependency("/closure/goog/testing/messaging/mockmessagechannel.js", ["goog.testing.messaging.MockMessageChannel"], ["goog.messaging.AbstractChannel", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/messaging/mockmessageevent.js", ["goog.testing.messaging.MockMessageEvent"], ["goog.events.BrowserEvent", "goog.events.EventType", "goog.testing.events"]); goog.addDependency("/closure/goog/testing/messaging/mockmessageport.js", ["goog.testing.messaging.MockMessagePort"], ["goog.events.EventTarget"]); goog.addDependency("/closure/goog/testing/messaging/mockportnetwork.js", ["goog.testing.messaging.MockPortNetwork"], ["goog.messaging.PortNetwork", "goog.testing.messaging.MockMessageChannel"]); goog.addDependency("/closure/goog/testing/mock.js", ["goog.testing.Mock", "goog.testing.MockExpectation"], ["goog.array", "goog.object", "goog.testing.JsUnitException", "goog.testing.MockInterface", "goog.testing.mockmatchers"]); goog.addDependency("/closure/goog/testing/mockclassfactory.js", ["goog.testing.MockClassFactory", "goog.testing.MockClassRecord"], ["goog.array", "goog.object", "goog.testing.LooseMock", "goog.testing.StrictMock", "goog.testing.TestCase", "goog.testing.mockmatchers"]); goog.addDependency("/closure/goog/testing/mockclock.js", ["goog.testing.MockClock"], ["goog.Disposable", "goog.testing.PropertyReplacer", "goog.testing.events", "goog.testing.events.Event"]); goog.addDependency("/closure/goog/testing/mockcontrol.js", ["goog.testing.MockControl"], ["goog.array", "goog.testing", "goog.testing.LooseMock", "goog.testing.MockInterface", "goog.testing.StrictMock"]); goog.addDependency("/closure/goog/testing/mockinterface.js", ["goog.testing.MockInterface"], []); goog.addDependency("/closure/goog/testing/mockmatchers.js", ["goog.testing.mockmatchers", "goog.testing.mockmatchers.ArgumentMatcher", "goog.testing.mockmatchers.IgnoreArgument", "goog.testing.mockmatchers.InstanceOf", "goog.testing.mockmatchers.ObjectEquals", "goog.testing.mockmatchers.RegexpMatch", "goog.testing.mockmatchers.SaveArgument", "goog.testing.mockmatchers.TypeOf"], ["goog.array", "goog.dom", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/mockrandom.js", ["goog.testing.MockRandom"], ["goog.Disposable"]); goog.addDependency("/closure/goog/testing/mockrange.js", ["goog.testing.MockRange"], ["goog.dom.AbstractRange", "goog.testing.LooseMock"]); goog.addDependency("/closure/goog/testing/mockstorage.js", ["goog.testing.MockStorage"], ["goog.structs.Map"]); goog.addDependency("/closure/goog/testing/mockuseragent.js", ["goog.testing.MockUserAgent"], ["goog.Disposable", "goog.userAgent"]); goog.addDependency("/closure/goog/testing/multitestrunner.js", ["goog.testing.MultiTestRunner", "goog.testing.MultiTestRunner.TestFrame"], ["goog.Timer", "goog.array", "goog.dom", "goog.dom.classes", "goog.events.EventHandler", "goog.functions", "goog.string", "goog.ui.Component", "goog.ui.ServerChart", "goog.ui.TableSorter"]); goog.addDependency("/closure/goog/testing/net/xhrio.js", ["goog.testing.net.XhrIo"], ["goog.array", "goog.dom.xml", "goog.events", "goog.events.EventTarget", "goog.json", "goog.net.ErrorCode", "goog.net.EventType", "goog.net.HttpStatus", "goog.net.XhrIo", "goog.net.XmlHttp", "goog.object", "goog.structs.Map"]); goog.addDependency("/closure/goog/testing/net/xhriopool.js", ["goog.testing.net.XhrIoPool"], ["goog.net.XhrIoPool", "goog.testing.net.XhrIo"]); goog.addDependency("/closure/goog/testing/objectpropertystring.js", ["goog.testing.ObjectPropertyString"], []); goog.addDependency("/closure/goog/testing/performancetable.js", ["goog.testing.PerformanceTable"], ["goog.dom", "goog.testing.PerformanceTimer"]); goog.addDependency("/closure/goog/testing/performancetimer.js", ["goog.testing.PerformanceTimer", "goog.testing.PerformanceTimer.Task"], ["goog.array", "goog.async.Deferred", "goog.math"]); goog.addDependency("/closure/goog/testing/propertyreplacer.js", ["goog.testing.PropertyReplacer"], ["goog.userAgent"]); goog.addDependency("/closure/goog/testing/proto2/proto2.js", ["goog.testing.proto2"], ["goog.proto2.Message", "goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/pseudorandom.js", ["goog.testing.PseudoRandom"], ["goog.Disposable"]); goog.addDependency("/closure/goog/testing/recordfunction.js", ["goog.testing.FunctionCall", "goog.testing.recordConstructor", "goog.testing.recordFunction"], []); goog.addDependency("/closure/goog/testing/shardingtestcase.js", ["goog.testing.ShardingTestCase"], ["goog.asserts", "goog.testing.TestCase"]); goog.addDependency("/closure/goog/testing/singleton.js", ["goog.testing.singleton"], []); goog.addDependency("/closure/goog/testing/stacktrace.js", ["goog.testing.stacktrace", "goog.testing.stacktrace.Frame"], []); goog.addDependency("/closure/goog/testing/storage/fakemechanism.js", ["goog.testing.storage.FakeMechanism"], ["goog.storage.mechanism.IterableMechanism", "goog.structs.Map"]); goog.addDependency("/closure/goog/testing/strictmock.js", ["goog.testing.StrictMock"], ["goog.array", "goog.testing.Mock"]); goog.addDependency("/closure/goog/testing/style/layoutasserts.js", ["goog.testing.style.layoutasserts"], ["goog.style", "goog.testing.asserts", "goog.testing.style"]); goog.addDependency("/closure/goog/testing/style/style.js", ["goog.testing.style"], ["goog.dom", "goog.math.Rect", "goog.style"]); goog.addDependency("/closure/goog/testing/testcase.js", ["goog.testing.TestCase", "goog.testing.TestCase.Error", "goog.testing.TestCase.Order", "goog.testing.TestCase.Result", "goog.testing.TestCase.Test"], ["goog.object", "goog.testing.asserts", "goog.testing.stacktrace"]); goog.addDependency("/closure/goog/testing/testqueue.js", ["goog.testing.TestQueue"], []); goog.addDependency("/closure/goog/testing/testrunner.js", ["goog.testing.TestRunner"], ["goog.testing.TestCase"]); goog.addDependency("/closure/goog/testing/ui/rendererasserts.js", ["goog.testing.ui.rendererasserts"], ["goog.testing.asserts"]); goog.addDependency("/closure/goog/testing/ui/rendererharness.js", ["goog.testing.ui.RendererHarness"], ["goog.Disposable", "goog.dom.NodeType", "goog.testing.asserts", "goog.testing.dom"]); goog.addDependency("/closure/goog/testing/ui/style.js", ["goog.testing.ui.style"], ["goog.array", "goog.dom", "goog.dom.classes", "goog.testing.asserts"]); goog.addDependency("/closure/goog/timer/timer.js", ["goog.Timer"], ["goog.events.EventTarget"]); goog.addDependency("/closure/goog/tweak/entries.js", ["goog.tweak.BaseEntry", "goog.tweak.BasePrimitiveSetting", "goog.tweak.BaseSetting", "goog.tweak.BooleanGroup", "goog.tweak.BooleanInGroupSetting", "goog.tweak.BooleanSetting", "goog.tweak.ButtonAction", "goog.tweak.NumericSetting", "goog.tweak.StringSetting"], ["goog.array", "goog.asserts", "goog.log", "goog.object"]); goog.addDependency("/closure/goog/tweak/registry.js", ["goog.tweak.Registry"], ["goog.asserts", "goog.log", "goog.object", "goog.string", "goog.tweak.BaseEntry", "goog.uri.utils"]); goog.addDependency("/closure/goog/tweak/testhelpers.js", ["goog.tweak.testhelpers"], ["goog.tweak", "goog.tweak.BooleanGroup", "goog.tweak.BooleanInGroupSetting", "goog.tweak.BooleanSetting", "goog.tweak.ButtonAction", "goog.tweak.NumericSetting", "goog.tweak.Registry", "goog.tweak.StringSetting"]); goog.addDependency("/closure/goog/tweak/tweak.js", ["goog.tweak", "goog.tweak.ConfigParams"], ["goog.asserts", "goog.tweak.BaseSetting", "goog.tweak.BooleanGroup", "goog.tweak.BooleanInGroupSetting", "goog.tweak.BooleanSetting", "goog.tweak.ButtonAction", "goog.tweak.NumericSetting", "goog.tweak.Registry", "goog.tweak.StringSetting"]); goog.addDependency("/closure/goog/tweak/tweakui.js", ["goog.tweak.EntriesPanel", "goog.tweak.TweakUi"], ["goog.array", "goog.asserts", "goog.dom.DomHelper", "goog.object", "goog.style", "goog.tweak", "goog.ui.Zippy", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/abstractspellchecker.js", ["goog.ui.AbstractSpellChecker", "goog.ui.AbstractSpellChecker.AsyncResult"], ["goog.a11y.aria", "goog.array", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.dom.selection", "goog.events", "goog.events.Event", "goog.events.EventType", "goog.math.Coordinate", "goog.spell.SpellCheck", "goog.structs.Set", "goog.style", "goog.ui.Component", "goog.ui.MenuItem", "goog.ui.MenuSeparator", "goog.ui.PopupMenu"]); goog.addDependency("/closure/goog/ui/ac/ac.js", ["goog.ui.ac"], ["goog.ui.ac.ArrayMatcher", "goog.ui.ac.AutoComplete", "goog.ui.ac.InputHandler", "goog.ui.ac.Renderer"]); goog.addDependency("/closure/goog/ui/ac/arraymatcher.js", ["goog.ui.ac.ArrayMatcher"], ["goog.string"]); goog.addDependency("/closure/goog/ui/ac/autocomplete.js", ["goog.ui.ac.AutoComplete", "goog.ui.ac.AutoComplete.EventType"], ["goog.array", "goog.asserts", "goog.events", "goog.events.EventTarget", "goog.object"]); goog.addDependency("/closure/goog/ui/ac/inputhandler.js", ["goog.ui.ac.InputHandler"], ["goog.Disposable", "goog.Timer", "goog.a11y.aria", "goog.dom", "goog.dom.selection", "goog.events.EventHandler", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.string", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/ui/ac/remote.js", ["goog.ui.ac.Remote"], ["goog.ui.ac.AutoComplete", "goog.ui.ac.InputHandler", "goog.ui.ac.RemoteArrayMatcher", "goog.ui.ac.Renderer"]); goog.addDependency("/closure/goog/ui/ac/remotearraymatcher.js", ["goog.ui.ac.RemoteArrayMatcher"], ["goog.Disposable", "goog.Uri", "goog.events", "goog.json", "goog.net.EventType", "goog.net.XhrIo"]); goog.addDependency("/closure/goog/ui/ac/renderer.js", ["goog.ui.ac.Renderer", "goog.ui.ac.Renderer.CustomRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.array", "goog.dispose", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.events", "goog.events.EventTarget", "goog.events.EventType", "goog.fx.dom.FadeInAndShow", "goog.fx.dom.FadeOutAndHide", "goog.positioning", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.string", "goog.style", "goog.ui.IdGenerator", "goog.ui.ac.AutoComplete"]); goog.addDependency("/closure/goog/ui/ac/renderoptions.js", ["goog.ui.ac.RenderOptions"], []); goog.addDependency("/closure/goog/ui/ac/richinputhandler.js", ["goog.ui.ac.RichInputHandler"], ["goog.ui.ac.InputHandler"]); goog.addDependency("/closure/goog/ui/ac/richremote.js", ["goog.ui.ac.RichRemote"], ["goog.ui.ac.AutoComplete", "goog.ui.ac.Remote", "goog.ui.ac.Renderer", "goog.ui.ac.RichInputHandler", "goog.ui.ac.RichRemoteArrayMatcher"]); goog.addDependency("/closure/goog/ui/ac/richremotearraymatcher.js", ["goog.ui.ac.RichRemoteArrayMatcher"], ["goog.json", "goog.ui.ac.RemoteArrayMatcher"]); goog.addDependency("/closure/goog/ui/activitymonitor.js", ["goog.ui.ActivityMonitor"], ["goog.array", "goog.asserts", "goog.dom", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType"]); goog.addDependency("/closure/goog/ui/advancedtooltip.js", ["goog.ui.AdvancedTooltip"], ["goog.events", "goog.events.EventType", "goog.math.Box", "goog.math.Coordinate", "goog.style", "goog.ui.Tooltip", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/animatedzippy.js", ["goog.ui.AnimatedZippy"], ["goog.dom", "goog.events", "goog.fx.Animation", "goog.fx.Transition", "goog.fx.easing", "goog.ui.Zippy", "goog.ui.ZippyEvent"]); goog.addDependency("/closure/goog/ui/attachablemenu.js", ["goog.ui.AttachableMenu"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.events.Event", "goog.events.KeyCodes", "goog.string", "goog.style", "goog.ui.ItemEvent", "goog.ui.MenuBase", "goog.ui.PopupBase", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/bidiinput.js", ["goog.ui.BidiInput"], ["goog.dom", "goog.events", "goog.events.InputHandler", "goog.i18n.bidi", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/bubble.js", ["goog.ui.Bubble"], ["goog.Timer", "goog.events", "goog.events.EventType", "goog.math.Box", "goog.positioning", "goog.positioning.AbsolutePosition", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.positioning.CornerBit", "goog.style", "goog.ui.Component", "goog.ui.Popup"]); goog.addDependency("/closure/goog/ui/button.js", ["goog.ui.Button", "goog.ui.Button.Side"], ["goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.ui.ButtonRenderer", "goog.ui.ButtonSide", "goog.ui.Component", "goog.ui.Control", "goog.ui.NativeButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/buttonrenderer.js", ["goog.ui.ButtonRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.asserts", "goog.ui.ButtonSide", "goog.ui.Component", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/buttonside.js", ["goog.ui.ButtonSide"], []); goog.addDependency("/closure/goog/ui/charcounter.js", ["goog.ui.CharCounter", "goog.ui.CharCounter.Display"], ["goog.dom", "goog.events", "goog.events.EventTarget", "goog.events.InputHandler"]); goog.addDependency("/closure/goog/ui/charpicker.js", ["goog.ui.CharPicker"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom.classes", "goog.events", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventType", "goog.events.InputHandler", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.i18n.CharListDecompressor", "goog.i18n.uChar", "goog.structs.Set", "goog.style", "goog.ui.Button", "goog.ui.Component", "goog.ui.ContainerScroller", "goog.ui.FlatButtonRenderer", "goog.ui.HoverCard", "goog.ui.LabelInput", "goog.ui.Menu", "goog.ui.MenuButton", "goog.ui.MenuItem", "goog.ui.Tooltip"]); goog.addDependency("/closure/goog/ui/checkbox.js", ["goog.ui.Checkbox", "goog.ui.Checkbox.State"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.events.EventType", "goog.events.KeyCodes", "goog.ui.CheckboxRenderer", "goog.ui.Component.EventType", "goog.ui.Component.State", "goog.ui.Control", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/checkboxmenuitem.js", ["goog.ui.CheckBoxMenuItem"], ["goog.ui.MenuItem", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/checkboxrenderer.js", ["goog.ui.CheckboxRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom.classes", "goog.object", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/colorbutton.js", ["goog.ui.ColorButton"], ["goog.ui.Button", "goog.ui.ColorButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/colorbuttonrenderer.js", ["goog.ui.ColorButtonRenderer"], ["goog.dom.classes", "goog.functions", "goog.ui.ColorMenuButtonRenderer"]); goog.addDependency("/closure/goog/ui/colormenubutton.js", ["goog.ui.ColorMenuButton"], ["goog.array", "goog.object", "goog.ui.ColorMenuButtonRenderer", "goog.ui.ColorPalette", "goog.ui.Component", "goog.ui.Menu", "goog.ui.MenuButton", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/colormenubuttonrenderer.js", ["goog.ui.ColorMenuButtonRenderer"], ["goog.color", "goog.dom.classes", "goog.ui.MenuButtonRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/colorpalette.js", ["goog.ui.ColorPalette"], ["goog.array", "goog.color", "goog.style", "goog.ui.Palette", "goog.ui.PaletteRenderer"]); goog.addDependency("/closure/goog/ui/colorpicker.js", ["goog.ui.ColorPicker", "goog.ui.ColorPicker.EventType"], ["goog.ui.ColorPalette", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/colorsplitbehavior.js", ["goog.ui.ColorSplitBehavior"], ["goog.ui.ColorMenuButton", "goog.ui.SplitBehavior"]); goog.addDependency("/closure/goog/ui/combobox.js", ["goog.ui.ComboBox", "goog.ui.ComboBoxItem"], ["goog.Timer", "goog.dom", "goog.dom.classlist", "goog.events.EventType", "goog.events.InputHandler", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.log", "goog.positioning.Corner", "goog.positioning.MenuAnchoredPosition", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.ItemEvent", "goog.ui.LabelInput", "goog.ui.Menu", "goog.ui.MenuItem", "goog.ui.MenuSeparator", "goog.ui.registry", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/component.js", ["goog.ui.Component", "goog.ui.Component.Error", "goog.ui.Component.EventType", "goog.ui.Component.State"], ["goog.array", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.events.EventHandler", "goog.events.EventTarget", "goog.object", "goog.style", "goog.ui.IdGenerator"]); goog.addDependency("/closure/goog/ui/container.js", ["goog.ui.Container", "goog.ui.Container.EventType", "goog.ui.Container.Orientation"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.object", "goog.style", "goog.ui.Component", "goog.ui.ContainerRenderer", "goog.ui.Control"]); goog.addDependency("/closure/goog/ui/containerrenderer.js", ["goog.ui.ContainerRenderer"], ["goog.a11y.aria", "goog.array", "goog.asserts", "goog.dom.NodeType", "goog.dom.classes", "goog.string", "goog.style", "goog.ui.registry", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/containerscroller.js", ["goog.ui.ContainerScroller"], ["goog.Disposable", "goog.Timer", "goog.events.EventHandler", "goog.style", "goog.ui.Component", "goog.ui.Container"]); goog.addDependency("/closure/goog/ui/control.js", ["goog.ui.Control"], ["goog.array", "goog.dom", "goog.events.Event", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.string", "goog.ui.Component", "goog.ui.ControlContent", "goog.ui.ControlRenderer", "goog.ui.decorate", "goog.ui.registry", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/controlcontent.js", ["goog.ui.ControlContent"], []); goog.addDependency("/closure/goog/ui/controlrenderer.js", ["goog.ui.ControlRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.object", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/cookieeditor.js", ["goog.ui.CookieEditor"], ["goog.asserts", "goog.dom", "goog.dom.TagName", "goog.events.EventType", "goog.net.cookies", "goog.string", "goog.style", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/css3buttonrenderer.js", ["goog.ui.Css3ButtonRenderer"], ["goog.dom.TagName", "goog.dom.classes", "goog.ui.Button", "goog.ui.ButtonRenderer", "goog.ui.Component", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/css3menubuttonrenderer.js", ["goog.ui.Css3MenuButtonRenderer"], ["goog.dom", "goog.dom.TagName", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.MenuButton", "goog.ui.MenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/cssnames.js", ["goog.ui.INLINE_BLOCK_CLASSNAME"], []); goog.addDependency("/closure/goog/ui/custombutton.js", ["goog.ui.CustomButton"], ["goog.ui.Button", "goog.ui.CustomButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/custombuttonrenderer.js", ["goog.ui.CustomButtonRenderer"], ["goog.a11y.aria.Role", "goog.dom.NodeType", "goog.dom.classes", "goog.string", "goog.ui.ButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME"]); goog.addDependency("/closure/goog/ui/customcolorpalette.js", ["goog.ui.CustomColorPalette"], ["goog.color", "goog.dom", "goog.dom.classes", "goog.ui.ColorPalette", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/datepicker.js", ["goog.ui.DatePicker", "goog.ui.DatePicker.Events", "goog.ui.DatePickerEvent"], ["goog.a11y.aria", "goog.asserts", "goog.date", "goog.date.Date", "goog.date.Interval", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.events.Event", "goog.events.EventType", "goog.events.KeyHandler", "goog.i18n.DateTimeFormat", "goog.i18n.DateTimeSymbols", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.DefaultDatePickerRenderer", "goog.ui.IdGenerator"]); goog.addDependency("/closure/goog/ui/datepickerrenderer.js", ["goog.ui.DatePickerRenderer"], []); goog.addDependency("/closure/goog/ui/decorate.js", ["goog.ui.decorate"], ["goog.ui.registry"]); goog.addDependency("/closure/goog/ui/defaultdatepickerrenderer.js", ["goog.ui.DefaultDatePickerRenderer"], ["goog.dom", "goog.dom.TagName", "goog.ui.DatePickerRenderer"]); goog.addDependency("/closure/goog/ui/dialog.js", ["goog.ui.Dialog", "goog.ui.Dialog.ButtonSet", "goog.ui.Dialog.ButtonSet.DefaultButtons", "goog.ui.Dialog.DefaultButtonCaptions", "goog.ui.Dialog.DefaultButtonKeys", "goog.ui.Dialog.Event", "goog.ui.Dialog.EventType"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.events", "goog.events.Event", "goog.events.EventType", "goog.events.KeyCodes", "goog.fx.Dragger", "goog.math.Rect", "goog.structs", "goog.structs.Map", "goog.style", "goog.ui.ModalPopup", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/dimensionpicker.js", ["goog.ui.DimensionPicker"], ["goog.events.EventType", "goog.events.KeyCodes", "goog.math.Size", "goog.ui.Component", "goog.ui.Control", "goog.ui.DimensionPickerRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/dimensionpickerrenderer.js", ["goog.ui.DimensionPickerRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.dom", "goog.dom.TagName", "goog.i18n.bidi", "goog.style", "goog.ui.ControlRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/dragdropdetector.js", ["goog.ui.DragDropDetector", "goog.ui.DragDropDetector.EventType", "goog.ui.DragDropDetector.ImageDropEvent", "goog.ui.DragDropDetector.LinkDropEvent"], ["goog.dom", "goog.dom.TagName", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.math.Coordinate", "goog.string", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/drilldownrow.js", ["goog.ui.DrilldownRow"], ["goog.dom", "goog.dom.classes", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/editor/abstractdialog.js", ["goog.ui.editor.AbstractDialog", "goog.ui.editor.AbstractDialog.Builder", "goog.ui.editor.AbstractDialog.EventType"], ["goog.dom", "goog.dom.classes", "goog.events.EventTarget", "goog.string", "goog.ui.Dialog"]); goog.addDependency("/closure/goog/ui/editor/bubble.js", ["goog.ui.editor.Bubble"], ["goog.dom", "goog.dom.TagName", "goog.dom.ViewportSizeMonitor", "goog.dom.classes", "goog.editor.style", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.log", "goog.math.Box", "goog.object", "goog.positioning", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.OverflowStatus", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.PopupBase", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/editor/defaulttoolbar.js", ["goog.ui.editor.ButtonDescriptor", "goog.ui.editor.DefaultToolbar"], ["goog.dom", "goog.dom.TagName", "goog.dom.classes", "goog.editor.Command", "goog.style", "goog.ui.editor.ToolbarFactory", "goog.ui.editor.messages", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/editor/equationeditordialog.js", ["goog.ui.editor.EquationEditorDialog"], ["goog.editor.Command", "goog.ui.Dialog", "goog.ui.editor.AbstractDialog", "goog.ui.editor.EquationEditorOkEvent", "goog.ui.equation.TexEditor"]); goog.addDependency("/closure/goog/ui/editor/equationeditorokevent.js", ["goog.ui.editor.EquationEditorOkEvent"], ["goog.events.Event", "goog.ui.editor.AbstractDialog"]); goog.addDependency("/closure/goog/ui/editor/linkdialog.js", ["goog.ui.editor.LinkDialog", "goog.ui.editor.LinkDialog.BeforeTestLinkEvent", "goog.ui.editor.LinkDialog.EventType", "goog.ui.editor.LinkDialog.OkEvent"], ["goog.dom", "goog.dom.TagName", "goog.editor.BrowserFeature", "goog.editor.Link", "goog.editor.focus", "goog.editor.node", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventType", "goog.events.InputHandler", "goog.string", "goog.style", "goog.ui.Button", "goog.ui.Component", "goog.ui.LinkButtonRenderer", "goog.ui.editor.AbstractDialog", "goog.ui.editor.TabPane", "goog.ui.editor.messages", "goog.userAgent", "goog.window"]); goog.addDependency("/closure/goog/ui/editor/messages.js", ["goog.ui.editor.messages"], []); goog.addDependency("/closure/goog/ui/editor/tabpane.js", ["goog.ui.editor.TabPane"], ["goog.dom.TagName", "goog.dom.classes", "goog.events.EventHandler", "goog.events.EventType", "goog.style", "goog.ui.Component", "goog.ui.Control", "goog.ui.Tab", "goog.ui.TabBar"]); goog.addDependency("/closure/goog/ui/editor/toolbarcontroller.js", ["goog.ui.editor.ToolbarController"], ["goog.editor.Field", "goog.events.EventHandler", "goog.events.EventTarget", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/editor/toolbarfactory.js", ["goog.ui.editor.ToolbarFactory"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.string", "goog.string.Unicode", "goog.style", "goog.ui.Component", "goog.ui.Container", "goog.ui.Option", "goog.ui.Toolbar", "goog.ui.ToolbarButton", "goog.ui.ToolbarColorMenuButton", "goog.ui.ToolbarMenuButton", "goog.ui.ToolbarRenderer", "goog.ui.ToolbarSelect", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/emoji/emoji.js", ["goog.ui.emoji.Emoji"], []); goog.addDependency("/closure/goog/ui/emoji/emojipalette.js", ["goog.ui.emoji.EmojiPalette"], ["goog.events.EventType", "goog.net.ImageLoader", "goog.ui.Palette", "goog.ui.emoji.Emoji", "goog.ui.emoji.EmojiPaletteRenderer"]); goog.addDependency("/closure/goog/ui/emoji/emojipaletterenderer.js", ["goog.ui.emoji.EmojiPaletteRenderer"], ["goog.a11y.aria", "goog.dom.NodeType", "goog.dom.classes", "goog.style", "goog.ui.PaletteRenderer", "goog.ui.emoji.Emoji"]); goog.addDependency("/closure/goog/ui/emoji/emojipicker.js", ["goog.ui.emoji.EmojiPicker"], ["goog.log", "goog.style", "goog.ui.Component", "goog.ui.TabPane", "goog.ui.emoji.Emoji", "goog.ui.emoji.EmojiPalette", "goog.ui.emoji.EmojiPaletteRenderer", "goog.ui.emoji.ProgressiveEmojiPaletteRenderer"]); goog.addDependency("/closure/goog/ui/emoji/popupemojipicker.js", ["goog.ui.emoji.PopupEmojiPicker"], ["goog.events.EventType", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.ui.Component", "goog.ui.Popup", "goog.ui.emoji.EmojiPicker"]); goog.addDependency("/closure/goog/ui/emoji/progressiveemojipaletterenderer.js", ["goog.ui.emoji.ProgressiveEmojiPaletteRenderer"], ["goog.style", "goog.ui.emoji.EmojiPaletteRenderer"]); goog.addDependency("/closure/goog/ui/emoji/spriteinfo.js", ["goog.ui.emoji.SpriteInfo"], []); goog.addDependency("/closure/goog/ui/equation/arrowpalette.js", ["goog.ui.equation.ArrowPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/changeevent.js", ["goog.ui.equation.ChangeEvent"], ["goog.events.Event"]); goog.addDependency("/closure/goog/ui/equation/comparisonpalette.js", ["goog.ui.equation.ComparisonPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/editorpane.js", ["goog.ui.equation.EditorPane"], ["goog.style", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/equation/equationeditor.js", ["goog.ui.equation.EquationEditor"], ["goog.events", "goog.ui.Component", "goog.ui.TabBar", "goog.ui.equation.ImageRenderer", "goog.ui.equation.TexPane"]); goog.addDependency("/closure/goog/ui/equation/equationeditordialog.js", ["goog.ui.equation.EquationEditorDialog"], ["goog.dom", "goog.dom.classes", "goog.ui.Dialog", "goog.ui.equation.EquationEditor", "goog.ui.equation.PaletteManager", "goog.ui.equation.TexEditor"]); goog.addDependency("/closure/goog/ui/equation/greekpalette.js", ["goog.ui.equation.GreekPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/imagerenderer.js", ["goog.ui.equation.ImageRenderer"], ["goog.dom.TagName", "goog.dom.classes", "goog.string", "goog.uri.utils"]); goog.addDependency("/closure/goog/ui/equation/mathpalette.js", ["goog.ui.equation.MathPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/menupalette.js", ["goog.ui.equation.MenuPalette", "goog.ui.equation.MenuPaletteRenderer"], ["goog.math.Size", "goog.ui.PaletteRenderer", "goog.ui.equation.Palette", "goog.ui.equation.PaletteRenderer"]); goog.addDependency("/closure/goog/ui/equation/palette.js", ["goog.ui.equation.Palette", "goog.ui.equation.PaletteEvent", "goog.ui.equation.PaletteRenderer"], ["goog.dom", "goog.dom.TagName", "goog.events.Event", "goog.ui.Palette", "goog.ui.PaletteRenderer"]); goog.addDependency("/closure/goog/ui/equation/palettemanager.js", ["goog.ui.equation.PaletteManager"], ["goog.Timer", "goog.events.EventHandler", "goog.events.EventTarget", "goog.ui.equation.ArrowPalette", "goog.ui.equation.ComparisonPalette", "goog.ui.equation.GreekPalette", "goog.ui.equation.MathPalette", "goog.ui.equation.MenuPalette", "goog.ui.equation.Palette", "goog.ui.equation.SymbolPalette"]); goog.addDependency("/closure/goog/ui/equation/symbolpalette.js", ["goog.ui.equation.SymbolPalette"], ["goog.math.Size", "goog.ui.equation.Palette"]); goog.addDependency("/closure/goog/ui/equation/texeditor.js", ["goog.ui.equation.TexEditor"], ["goog.ui.Component", "goog.ui.equation.ImageRenderer", "goog.ui.equation.TexPane"]); goog.addDependency("/closure/goog/ui/equation/texpane.js", ["goog.ui.equation.TexPane"], ["goog.Timer", "goog.dom", "goog.dom.TagName", "goog.dom.selection", "goog.events", "goog.events.EventType", "goog.events.InputHandler", "goog.style", "goog.ui.equation.ChangeEvent", "goog.ui.equation.EditorPane", "goog.ui.equation.ImageRenderer", "goog.ui.equation.Palette", "goog.ui.equation.PaletteEvent"]); goog.addDependency("/closure/goog/ui/filteredmenu.js", ["goog.ui.FilteredMenu"], ["goog.dom", "goog.events", "goog.events.EventType", "goog.events.InputHandler", "goog.events.KeyCodes", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.FilterObservingMenuItem", "goog.ui.Menu", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/filterobservingmenuitem.js", ["goog.ui.FilterObservingMenuItem"], ["goog.ui.FilterObservingMenuItemRenderer", "goog.ui.MenuItem", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/filterobservingmenuitemrenderer.js", ["goog.ui.FilterObservingMenuItemRenderer"], ["goog.ui.MenuItemRenderer"]); goog.addDependency("/closure/goog/ui/flatbuttonrenderer.js", ["goog.ui.FlatButtonRenderer"], ["goog.a11y.aria.Role", "goog.dom.classes", "goog.ui.Button", "goog.ui.ButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/flatmenubuttonrenderer.js", ["goog.ui.FlatMenuButtonRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.FlatButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.Menu", "goog.ui.MenuButton", "goog.ui.MenuRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/formpost.js", ["goog.ui.FormPost"], ["goog.array", "goog.dom.TagName", "goog.string", "goog.string.StringBuffer", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/gauge.js", ["goog.ui.Gauge", "goog.ui.GaugeColoredRange"], ["goog.a11y.aria", "goog.asserts", "goog.events", "goog.fx.Animation", "goog.fx.Transition", "goog.fx.easing", "goog.graphics", "goog.graphics.Font", "goog.graphics.Path", "goog.graphics.SolidFill", "goog.math", "goog.ui.Component", "goog.ui.GaugeTheme"]); goog.addDependency("/closure/goog/ui/gaugetheme.js", ["goog.ui.GaugeTheme"], ["goog.graphics.LinearGradient", "goog.graphics.SolidFill", "goog.graphics.Stroke"]); goog.addDependency("/closure/goog/ui/hovercard.js", ["goog.ui.HoverCard", "goog.ui.HoverCard.EventType", "goog.ui.HoverCard.TriggerEvent"], ["goog.array", "goog.dom", "goog.events", "goog.events.Event", "goog.events.EventType", "goog.ui.AdvancedTooltip", "goog.ui.PopupBase", "goog.ui.Tooltip"]); goog.addDependency("/closure/goog/ui/hsvapalette.js", ["goog.ui.HsvaPalette"], ["goog.array", "goog.color.alpha", "goog.dom", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.style", "goog.ui.Component", "goog.ui.HsvPalette"]); goog.addDependency("/closure/goog/ui/hsvpalette.js", ["goog.ui.HsvPalette"], ["goog.color", "goog.dom.TagName", "goog.events", "goog.events.EventType", "goog.events.InputHandler", "goog.style", "goog.style.bidi", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/idgenerator.js", ["goog.ui.IdGenerator"], []); goog.addDependency("/closure/goog/ui/idletimer.js", ["goog.ui.IdleTimer"], ["goog.Timer", "goog.events", "goog.events.EventTarget", "goog.structs.Set", "goog.ui.ActivityMonitor"]); goog.addDependency("/closure/goog/ui/iframemask.js", ["goog.ui.IframeMask"], ["goog.Disposable", "goog.Timer", "goog.dom", "goog.dom.iframe", "goog.events.EventHandler", "goog.style"]); goog.addDependency("/closure/goog/ui/imagelessbuttonrenderer.js", ["goog.ui.ImagelessButtonRenderer"], ["goog.dom.classes", "goog.ui.Button", "goog.ui.Component", "goog.ui.CustomButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/imagelessmenubuttonrenderer.js", ["goog.ui.ImagelessMenuButtonRenderer"], ["goog.dom", "goog.dom.TagName", "goog.dom.classes", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.MenuButton", "goog.ui.MenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/inputdatepicker.js", ["goog.ui.InputDatePicker"], ["goog.date.DateTime", "goog.dom", "goog.string", "goog.ui.Component", "goog.ui.DatePicker", "goog.ui.PopupBase", "goog.ui.PopupDatePicker"]); goog.addDependency("/closure/goog/ui/itemevent.js", ["goog.ui.ItemEvent"], ["goog.events.Event"]); goog.addDependency("/closure/goog/ui/keyboardshortcuthandler.js", ["goog.ui.KeyboardShortcutEvent", "goog.ui.KeyboardShortcutHandler", "goog.ui.KeyboardShortcutHandler.EventType"], ["goog.Timer", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyNames", "goog.object", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/labelinput.js", ["goog.ui.LabelInput"], ["goog.Timer", "goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.dom.classlist", "goog.events.EventHandler", "goog.events.EventType", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/linkbuttonrenderer.js", ["goog.ui.LinkButtonRenderer"], ["goog.ui.Button", "goog.ui.FlatButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/media/flashobject.js", ["goog.ui.media.FlashObject", "goog.ui.media.FlashObject.ScriptAccessLevel", "goog.ui.media.FlashObject.Wmodes"], ["goog.asserts", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventType", "goog.log", "goog.object", "goog.string", "goog.structs.Map", "goog.style", "goog.ui.Component", "goog.userAgent", "goog.userAgent.flash"]); goog.addDependency("/closure/goog/ui/media/flickr.js", ["goog.ui.media.FlickrSet", "goog.ui.media.FlickrSetModel"], ["goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/googlevideo.js", ["goog.ui.media.GoogleVideo", "goog.ui.media.GoogleVideoModel"], ["goog.string", "goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/media.js", ["goog.ui.media.Media", "goog.ui.media.MediaRenderer"], ["goog.style", "goog.ui.Component", "goog.ui.Control", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/media/mediamodel.js", ["goog.ui.media.MediaModel", "goog.ui.media.MediaModel.Category", "goog.ui.media.MediaModel.Credit", "goog.ui.media.MediaModel.Credit.Role", "goog.ui.media.MediaModel.Credit.Scheme", "goog.ui.media.MediaModel.Medium", "goog.ui.media.MediaModel.MimeType", "goog.ui.media.MediaModel.Player", "goog.ui.media.MediaModel.SubTitle", "goog.ui.media.MediaModel.Thumbnail"], ["goog.array"]); goog.addDependency("/closure/goog/ui/media/mp3.js", ["goog.ui.media.Mp3"], ["goog.string", "goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/photo.js", ["goog.ui.media.Photo"], ["goog.ui.media.Media", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/picasa.js", ["goog.ui.media.PicasaAlbum", "goog.ui.media.PicasaAlbumModel"], ["goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/vimeo.js", ["goog.ui.media.Vimeo", "goog.ui.media.VimeoModel"], ["goog.string", "goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/media/youtube.js", ["goog.ui.media.Youtube", "goog.ui.media.YoutubeModel"], ["goog.string", "goog.ui.Component", "goog.ui.media.FlashObject", "goog.ui.media.Media", "goog.ui.media.MediaModel", "goog.ui.media.MediaRenderer"]); goog.addDependency("/closure/goog/ui/menu.js", ["goog.ui.Menu", "goog.ui.Menu.EventType"], ["goog.math.Coordinate", "goog.string", "goog.style", "goog.ui.Component.EventType", "goog.ui.Component.State", "goog.ui.Container", "goog.ui.Container.Orientation", "goog.ui.MenuHeader", "goog.ui.MenuItem", "goog.ui.MenuRenderer", "goog.ui.MenuSeparator"]); goog.addDependency("/closure/goog/ui/menubar.js", ["goog.ui.menuBar"], ["goog.ui.Container", "goog.ui.MenuBarRenderer"]); goog.addDependency("/closure/goog/ui/menubardecorator.js", ["goog.ui.menuBarDecorator"], ["goog.ui.MenuBarRenderer", "goog.ui.menuBar", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/menubarrenderer.js", ["goog.ui.MenuBarRenderer"], ["goog.a11y.aria.Role", "goog.ui.Container", "goog.ui.ContainerRenderer"]); goog.addDependency("/closure/goog/ui/menubase.js", ["goog.ui.MenuBase"], ["goog.events.EventHandler", "goog.events.EventType", "goog.events.KeyHandler", "goog.ui.Popup"]); goog.addDependency("/closure/goog/ui/menubutton.js", ["goog.ui.MenuButton"], ["goog.Timer", "goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.math.Box", "goog.math.Rect", "goog.positioning", "goog.positioning.Corner", "goog.positioning.MenuAnchoredPosition", "goog.positioning.Overflow", "goog.style", "goog.ui.Button", "goog.ui.Component", "goog.ui.Menu", "goog.ui.MenuButtonRenderer", "goog.ui.registry", "goog.userAgent", "goog.userAgent.product"]); goog.addDependency("/closure/goog/ui/menubuttonrenderer.js", ["goog.ui.MenuButtonRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.string", "goog.style", "goog.ui.Component", "goog.ui.CustomButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.Menu", "goog.ui.MenuRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/menuheader.js", ["goog.ui.MenuHeader"], ["goog.ui.Component", "goog.ui.Control", "goog.ui.MenuHeaderRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/menuheaderrenderer.js", ["goog.ui.MenuHeaderRenderer"], ["goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/menuitem.js", ["goog.ui.MenuItem"], ["goog.array", "goog.dom", "goog.dom.classes", "goog.math.Coordinate", "goog.string", "goog.ui.Component", "goog.ui.Control", "goog.ui.MenuItemRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/menuitemrenderer.js", ["goog.ui.MenuItemRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.dom", "goog.dom.classes", "goog.ui.Component", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/menurenderer.js", ["goog.ui.MenuRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.ui.ContainerRenderer", "goog.ui.Separator"]); goog.addDependency("/closure/goog/ui/menuseparator.js", ["goog.ui.MenuSeparator"], ["goog.ui.MenuSeparatorRenderer", "goog.ui.Separator", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/menuseparatorrenderer.js", ["goog.ui.MenuSeparatorRenderer"], ["goog.dom", "goog.dom.classes", "goog.ui.ControlContent", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/mockactivitymonitor.js", ["goog.ui.MockActivityMonitor"], ["goog.events.EventType", "goog.ui.ActivityMonitor"]); goog.addDependency("/closure/goog/ui/mockactivitymonitor_test.js", ["goog.ui.MockActivityMonitorTest"], ["goog.events", "goog.functions", "goog.testing.jsunit", "goog.testing.recordFunction", "goog.ui.ActivityMonitor", "goog.ui.MockActivityMonitor"]); goog.addDependency("/closure/goog/ui/modalpopup.js", ["goog.ui.ModalPopup"], ["goog.Timer", "goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.dom.iframe", "goog.events", "goog.events.EventType", "goog.events.FocusHandler", "goog.fx.Transition", "goog.style", "goog.ui.Component", "goog.ui.PopupBase", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/nativebuttonrenderer.js", ["goog.ui.NativeButtonRenderer"], ["goog.dom.classes", "goog.events.EventType", "goog.ui.ButtonRenderer", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/offlineinstalldialog.js", ["goog.ui.OfflineInstallDialog", "goog.ui.OfflineInstallDialog.ButtonKeyType", "goog.ui.OfflineInstallDialog.EnableScreen", "goog.ui.OfflineInstallDialog.InstallScreen", "goog.ui.OfflineInstallDialog.InstallingGearsScreen", "goog.ui.OfflineInstallDialog.ScreenType", "goog.ui.OfflineInstallDialog.UpgradeScreen", "goog.ui.OfflineInstallDialogScreen"], ["goog.Disposable", "goog.dom.classes", "goog.gears", "goog.string", "goog.string.StringBuffer", "goog.ui.Dialog", "goog.window"]); goog.addDependency("/closure/goog/ui/offlinestatuscard.js", ["goog.ui.OfflineStatusCard", "goog.ui.OfflineStatusCard.EventType"], ["goog.dom", "goog.events.EventType", "goog.gears.StatusType", "goog.structs.Map", "goog.style", "goog.ui.Component", "goog.ui.ProgressBar"]); goog.addDependency("/closure/goog/ui/offlinestatuscomponent.js", ["goog.ui.OfflineStatusComponent", "goog.ui.OfflineStatusComponent.StatusClassNames"], ["goog.dom.classes", "goog.events.EventType", "goog.gears.StatusType", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.ui.Component", "goog.ui.OfflineStatusCard", "goog.ui.Popup"]); goog.addDependency("/closure/goog/ui/option.js", ["goog.ui.Option"], ["goog.ui.Component", "goog.ui.MenuItem", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/palette.js", ["goog.ui.Palette"], ["goog.array", "goog.dom", "goog.events", "goog.events.EventType", "goog.events.KeyCodes", "goog.math.Size", "goog.ui.Component", "goog.ui.Control", "goog.ui.PaletteRenderer", "goog.ui.SelectionModel"]); goog.addDependency("/closure/goog/ui/paletterenderer.js", ["goog.ui.PaletteRenderer"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.array", "goog.dom", "goog.dom.NodeIterator", "goog.dom.NodeType", "goog.dom.TagName", "goog.dom.classes", "goog.iter", "goog.style", "goog.ui.ControlRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/plaintextspellchecker.js", ["goog.ui.PlainTextSpellChecker"], ["goog.Timer", "goog.a11y.aria", "goog.asserts", "goog.dom", "goog.events.EventHandler", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.spell.SpellCheck", "goog.style", "goog.ui.AbstractSpellChecker", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/popup.js", ["goog.ui.Popup", "goog.ui.Popup.AbsolutePosition", "goog.ui.Popup.AnchoredPosition", "goog.ui.Popup.AnchoredViewPortPosition", "goog.ui.Popup.ClientPosition", "goog.ui.Popup.Corner", "goog.ui.Popup.Overflow", "goog.ui.Popup.ViewPortClientPosition", "goog.ui.Popup.ViewPortPosition"], ["goog.math.Box", "goog.positioning.AbsolutePosition", "goog.positioning.AnchoredPosition", "goog.positioning.AnchoredViewportPosition", "goog.positioning.ClientPosition", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.ViewportClientPosition", "goog.positioning.ViewportPosition", "goog.style", "goog.ui.PopupBase"]); goog.addDependency("/closure/goog/ui/popupbase.js", ["goog.ui.PopupBase", "goog.ui.PopupBase.EventType", "goog.ui.PopupBase.Type"], ["goog.Timer", "goog.dom", "goog.events", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.fx.Transition", "goog.style", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/popupcolorpicker.js", ["goog.ui.PopupColorPicker"], ["goog.dom.classes", "goog.events.EventType", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.ui.ColorPicker", "goog.ui.Component", "goog.ui.Popup"]); goog.addDependency("/closure/goog/ui/popupdatepicker.js", ["goog.ui.PopupDatePicker"], ["goog.events.EventType", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.style", "goog.ui.Component", "goog.ui.DatePicker", "goog.ui.Popup", "goog.ui.PopupBase"]); goog.addDependency("/closure/goog/ui/popupmenu.js", ["goog.ui.PopupMenu"], ["goog.events.EventType", "goog.positioning.AnchoredViewportPosition", "goog.positioning.Corner", "goog.positioning.MenuAnchoredPosition", "goog.positioning.ViewportClientPosition", "goog.structs", "goog.structs.Map", "goog.style", "goog.ui.Component.EventType", "goog.ui.Menu", "goog.ui.PopupBase", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/progressbar.js", ["goog.ui.ProgressBar", "goog.ui.ProgressBar.Orientation"], ["goog.a11y.aria", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.events", "goog.events.EventType", "goog.ui.Component", "goog.ui.RangeModel", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/prompt.js", ["goog.ui.Prompt"], ["goog.Timer", "goog.dom", "goog.events", "goog.events.EventType", "goog.functions", "goog.ui.Component", "goog.ui.Dialog", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/rangemodel.js", ["goog.ui.RangeModel"], ["goog.events.EventTarget", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/ratings.js", ["goog.ui.Ratings", "goog.ui.Ratings.EventType"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.asserts", "goog.dom.classes", "goog.events.EventType", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/registry.js", ["goog.ui.registry"], ["goog.dom.classes"]); goog.addDependency("/closure/goog/ui/richtextspellchecker.js", ["goog.ui.RichTextSpellChecker"], ["goog.Timer", "goog.dom", "goog.dom.NodeType", "goog.events", "goog.events.EventType", "goog.spell.SpellCheck", "goog.string.StringBuffer", "goog.ui.AbstractSpellChecker"]); goog.addDependency("/closure/goog/ui/roundedpanel.js", ["goog.ui.BaseRoundedPanel", "goog.ui.CssRoundedPanel", "goog.ui.GraphicsRoundedPanel", "goog.ui.RoundedPanel", "goog.ui.RoundedPanel.Corner"], ["goog.dom", "goog.dom.classes", "goog.graphics", "goog.graphics.Path", "goog.graphics.SolidFill", "goog.graphics.Stroke", "goog.math", "goog.math.Coordinate", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/roundedtabrenderer.js", ["goog.ui.RoundedTabRenderer"], ["goog.dom", "goog.ui.Tab", "goog.ui.TabBar", "goog.ui.TabRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/scrollfloater.js", ["goog.ui.ScrollFloater", "goog.ui.ScrollFloater.EventType"], ["goog.array", "goog.dom", "goog.dom.classes", "goog.events.EventType", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/select.js", ["goog.ui.Select"], ["goog.a11y.aria.Role", "goog.events.EventType", "goog.ui.Component", "goog.ui.MenuButton", "goog.ui.MenuItem", "goog.ui.SelectionModel", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/selectionmenubutton.js", ["goog.ui.SelectionMenuButton", "goog.ui.SelectionMenuButton.SelectionState"], ["goog.events.EventType", "goog.style", "goog.ui.Component", "goog.ui.MenuButton", "goog.ui.MenuItem", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/selectionmodel.js", ["goog.ui.SelectionModel"], ["goog.array", "goog.events.EventTarget", "goog.events.EventType"]); goog.addDependency("/closure/goog/ui/separator.js", ["goog.ui.Separator"], ["goog.a11y.aria", "goog.asserts", "goog.ui.Component", "goog.ui.Control", "goog.ui.MenuSeparatorRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/serverchart.js", ["goog.ui.ServerChart", "goog.ui.ServerChart.AxisDisplayType", "goog.ui.ServerChart.ChartType", "goog.ui.ServerChart.EncodingType", "goog.ui.ServerChart.Event", "goog.ui.ServerChart.LegendPosition", "goog.ui.ServerChart.MaximumValue", "goog.ui.ServerChart.MultiAxisAlignment", "goog.ui.ServerChart.MultiAxisType", "goog.ui.ServerChart.UriParam", "goog.ui.ServerChart.UriTooLongEvent"], ["goog.Uri", "goog.array", "goog.asserts", "goog.events.Event", "goog.string", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/slider.js", ["goog.ui.Slider", "goog.ui.Slider.Orientation"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.dom", "goog.ui.SliderBase"]); goog.addDependency("/closure/goog/ui/sliderbase.js", ["goog.ui.SliderBase", "goog.ui.SliderBase.AnimationFactory", "goog.ui.SliderBase.Orientation"], ["goog.Timer", "goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.array", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.events", "goog.events.EventType", "goog.events.KeyCodes", "goog.events.KeyHandler", "goog.events.MouseWheelHandler", "goog.fx.AnimationParallelQueue", "goog.fx.Dragger", "goog.fx.Transition", "goog.fx.dom.ResizeHeight", "goog.fx.dom.ResizeWidth", "goog.fx.dom.Slide", "goog.math", "goog.math.Coordinate", "goog.style", "goog.style.bidi", "goog.ui.Component", "goog.ui.RangeModel"]); goog.addDependency("/closure/goog/ui/splitbehavior.js", ["goog.ui.SplitBehavior", "goog.ui.SplitBehavior.DefaultHandlers"], ["goog.Disposable", "goog.dispose", "goog.dom", "goog.dom.NodeType", "goog.dom.classes", "goog.events.EventHandler", "goog.ui.ButtonSide", "goog.ui.Component", "goog.ui.decorate", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/splitpane.js", ["goog.ui.SplitPane", "goog.ui.SplitPane.Orientation"], ["goog.dom", "goog.dom.classes", "goog.events.EventType", "goog.fx.Dragger", "goog.math.Rect", "goog.math.Size", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/style/app/buttonrenderer.js", ["goog.ui.style.app.ButtonRenderer"], ["goog.dom.classes", "goog.ui.Button", "goog.ui.CustomButtonRenderer", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/style/app/menubuttonrenderer.js", ["goog.ui.style.app.MenuButtonRenderer"], ["goog.a11y.aria.Role", "goog.array", "goog.dom", "goog.style", "goog.ui.Menu", "goog.ui.MenuRenderer", "goog.ui.style.app.ButtonRenderer"]); goog.addDependency("/closure/goog/ui/style/app/primaryactionbuttonrenderer.js", ["goog.ui.style.app.PrimaryActionButtonRenderer"], ["goog.ui.Button", "goog.ui.registry", "goog.ui.style.app.ButtonRenderer"]); goog.addDependency("/closure/goog/ui/submenu.js", ["goog.ui.SubMenu"], ["goog.Timer", "goog.dom", "goog.dom.classes", "goog.events.KeyCodes", "goog.positioning.AnchoredViewportPosition", "goog.positioning.Corner", "goog.style", "goog.ui.Component", "goog.ui.Menu", "goog.ui.MenuItem", "goog.ui.SubMenuRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/submenurenderer.js", ["goog.ui.SubMenuRenderer"], ["goog.a11y.aria", "goog.a11y.aria.State", "goog.asserts", "goog.dom", "goog.dom.classes", "goog.style", "goog.ui.Menu", "goog.ui.MenuItemRenderer"]); goog.addDependency("/closure/goog/ui/tab.js", ["goog.ui.Tab"], ["goog.ui.Component", "goog.ui.Control", "goog.ui.TabRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/tabbar.js", ["goog.ui.TabBar", "goog.ui.TabBar.Location"], ["goog.ui.Component.EventType", "goog.ui.Container", "goog.ui.Container.Orientation", "goog.ui.Tab", "goog.ui.TabBarRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/tabbarrenderer.js", ["goog.ui.TabBarRenderer"], ["goog.a11y.aria.Role", "goog.object", "goog.ui.ContainerRenderer"]); goog.addDependency("/closure/goog/ui/tablesorter.js", ["goog.ui.TableSorter", "goog.ui.TableSorter.EventType"], ["goog.array", "goog.dom", "goog.dom.TagName", "goog.dom.classes", "goog.events.EventType", "goog.functions", "goog.ui.Component"]); goog.addDependency("/closure/goog/ui/tabpane.js", ["goog.ui.TabPane", "goog.ui.TabPane.Events", "goog.ui.TabPane.TabLocation", "goog.ui.TabPane.TabPage", "goog.ui.TabPaneEvent"], ["goog.dom", "goog.dom.classes", "goog.events", "goog.events.Event", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.style"]); goog.addDependency("/closure/goog/ui/tabrenderer.js", ["goog.ui.TabRenderer"], ["goog.a11y.aria.Role", "goog.ui.Component", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/textarea.js", ["goog.ui.Textarea", "goog.ui.Textarea.EventType"], ["goog.dom", "goog.events.EventType", "goog.style", "goog.ui.Control", "goog.ui.TextareaRenderer", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/textarearenderer.js", ["goog.ui.TextareaRenderer"], ["goog.dom.TagName", "goog.ui.Component", "goog.ui.ControlRenderer"]); goog.addDependency("/closure/goog/ui/togglebutton.js", ["goog.ui.ToggleButton"], ["goog.ui.Button", "goog.ui.Component", "goog.ui.CustomButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbar.js", ["goog.ui.Toolbar"], ["goog.ui.Container", "goog.ui.ToolbarRenderer"]); goog.addDependency("/closure/goog/ui/toolbarbutton.js", ["goog.ui.ToolbarButton"], ["goog.ui.Button", "goog.ui.ToolbarButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarbuttonrenderer.js", ["goog.ui.ToolbarButtonRenderer"], ["goog.ui.CustomButtonRenderer"]); goog.addDependency("/closure/goog/ui/toolbarcolormenubutton.js", ["goog.ui.ToolbarColorMenuButton"], ["goog.ui.ColorMenuButton", "goog.ui.ToolbarColorMenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarcolormenubuttonrenderer.js", ["goog.ui.ToolbarColorMenuButtonRenderer"], ["goog.dom.classes", "goog.ui.ColorMenuButtonRenderer", "goog.ui.MenuButtonRenderer", "goog.ui.ToolbarMenuButtonRenderer"]); goog.addDependency("/closure/goog/ui/toolbarmenubutton.js", ["goog.ui.ToolbarMenuButton"], ["goog.ui.MenuButton", "goog.ui.ToolbarMenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarmenubuttonrenderer.js", ["goog.ui.ToolbarMenuButtonRenderer"], ["goog.ui.MenuButtonRenderer"]); goog.addDependency("/closure/goog/ui/toolbarrenderer.js", ["goog.ui.ToolbarRenderer"], ["goog.a11y.aria.Role", "goog.ui.Container", "goog.ui.ContainerRenderer", "goog.ui.Separator", "goog.ui.ToolbarSeparatorRenderer"]); goog.addDependency("/closure/goog/ui/toolbarselect.js", ["goog.ui.ToolbarSelect"], ["goog.ui.Select", "goog.ui.ToolbarMenuButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarseparator.js", ["goog.ui.ToolbarSeparator"], ["goog.ui.Separator", "goog.ui.ToolbarSeparatorRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/toolbarseparatorrenderer.js", ["goog.ui.ToolbarSeparatorRenderer"], ["goog.dom.classes", "goog.ui.INLINE_BLOCK_CLASSNAME", "goog.ui.MenuSeparatorRenderer"]); goog.addDependency("/closure/goog/ui/toolbartogglebutton.js", ["goog.ui.ToolbarToggleButton"], ["goog.ui.ToggleButton", "goog.ui.ToolbarButtonRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/tooltip.js", ["goog.ui.Tooltip", "goog.ui.Tooltip.CursorTooltipPosition", "goog.ui.Tooltip.ElementTooltipPosition", "goog.ui.Tooltip.State"], ["goog.Timer", "goog.array", "goog.dom", "goog.events", "goog.events.EventType", "goog.math.Box", "goog.math.Coordinate", "goog.positioning", "goog.positioning.AnchoredPosition", "goog.positioning.Corner", "goog.positioning.Overflow", "goog.positioning.OverflowStatus", "goog.positioning.ViewportPosition", "goog.structs.Set", "goog.style", "goog.ui.Popup", "goog.ui.PopupBase"]); goog.addDependency("/closure/goog/ui/tree/basenode.js", ["goog.ui.tree.BaseNode", "goog.ui.tree.BaseNode.EventType"], ["goog.Timer", "goog.a11y.aria", "goog.asserts", "goog.events.KeyCodes", "goog.string", "goog.string.StringBuffer", "goog.style", "goog.ui.Component", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/tree/treecontrol.js", ["goog.ui.tree.TreeControl"], ["goog.a11y.aria", "goog.asserts", "goog.dom.classes", "goog.events.EventType", "goog.events.FocusHandler", "goog.events.KeyHandler", "goog.log", "goog.ui.tree.BaseNode", "goog.ui.tree.TreeNode", "goog.ui.tree.TypeAhead", "goog.userAgent"]); goog.addDependency("/closure/goog/ui/tree/treenode.js", ["goog.ui.tree.TreeNode"], ["goog.ui.tree.BaseNode"]); goog.addDependency("/closure/goog/ui/tree/typeahead.js", ["goog.ui.tree.TypeAhead", "goog.ui.tree.TypeAhead.Offset"], ["goog.array", "goog.events.KeyCodes", "goog.string", "goog.structs.Trie"]); goog.addDependency("/closure/goog/ui/tristatemenuitem.js", ["goog.ui.TriStateMenuItem", "goog.ui.TriStateMenuItem.State"], ["goog.dom.classes", "goog.ui.Component", "goog.ui.MenuItem", "goog.ui.TriStateMenuItemRenderer", "goog.ui.registry"]); goog.addDependency("/closure/goog/ui/tristatemenuitemrenderer.js", ["goog.ui.TriStateMenuItemRenderer"], ["goog.dom.classes", "goog.ui.MenuItemRenderer"]); goog.addDependency("/closure/goog/ui/twothumbslider.js", ["goog.ui.TwoThumbSlider"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.dom", "goog.ui.SliderBase"]); goog.addDependency("/closure/goog/ui/zippy.js", ["goog.ui.Zippy", "goog.ui.Zippy.Events", "goog.ui.ZippyEvent"], ["goog.a11y.aria", "goog.a11y.aria.Role", "goog.a11y.aria.State", "goog.dom", "goog.dom.classes", "goog.events.Event", "goog.events.EventHandler", "goog.events.EventTarget", "goog.events.EventType", "goog.events.KeyCodes", "goog.style"]); goog.addDependency("/closure/goog/uri/uri.js", ["goog.Uri", "goog.Uri.QueryData"], ["goog.array", "goog.string", "goog.structs", "goog.structs.Map", "goog.uri.utils", "goog.uri.utils.ComponentIndex", "goog.uri.utils.StandardQueryParam"]); goog.addDependency("/closure/goog/uri/uri_test.js", ["goog.UriTest"], ["goog.Uri", "goog.testing.jsunit"]); goog.addDependency("/closure/goog/uri/utils.js", ["goog.uri.utils", "goog.uri.utils.ComponentIndex", "goog.uri.utils.QueryArray", "goog.uri.utils.QueryValue", "goog.uri.utils.StandardQueryParam"], ["goog.asserts", "goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/useragent/adobereader.js", ["goog.userAgent.adobeReader"], ["goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/useragent/flash.js", ["goog.userAgent.flash"], ["goog.string"]); goog.addDependency("/closure/goog/useragent/iphoto.js", ["goog.userAgent.iphoto"], ["goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/useragent/jscript.js", ["goog.userAgent.jscript"], ["goog.string"]); goog.addDependency("/closure/goog/useragent/picasa.js", ["goog.userAgent.picasa"], ["goog.string", "goog.userAgent"]); goog.addDependency("/closure/goog/useragent/platform.js", ["goog.userAgent.platform"], ["goog.userAgent"]); goog.addDependency("/closure/goog/useragent/product.js", ["goog.userAgent.product"], ["goog.userAgent"]); goog.addDependency("/closure/goog/useragent/product_isversion.js", ["goog.userAgent.product.isVersion"], ["goog.userAgent.product"]); goog.addDependency("/closure/goog/useragent/useragent.js", ["goog.userAgent"], ["goog.string"]); goog.addDependency("/closure/goog/vec/float32array.js", ["goog.vec.Float32Array"], []); goog.addDependency("/closure/goog/vec/float64array.js", ["goog.vec.Float64Array"], []); goog.addDependency("/closure/goog/vec/mat3.js", ["goog.vec.Mat3"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/mat3d.js", ["goog.vec.mat3d", "goog.vec.mat3d.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/mat3f.js", ["goog.vec.mat3f", "goog.vec.mat3f.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/mat4.js", ["goog.vec.Mat4"], ["goog.vec", "goog.vec.Vec3", "goog.vec.Vec4"]); goog.addDependency("/closure/goog/vec/mat4d.js", ["goog.vec.mat4d", "goog.vec.mat4d.Type"], ["goog.vec", "goog.vec.vec3d", "goog.vec.vec4d"]); goog.addDependency("/closure/goog/vec/mat4f.js", ["goog.vec.mat4f", "goog.vec.mat4f.Type"], ["goog.vec", "goog.vec.vec3f", "goog.vec.vec4f"]); goog.addDependency("/closure/goog/vec/matrix3.js", ["goog.vec.Matrix3"], []); goog.addDependency("/closure/goog/vec/matrix4.js", ["goog.vec.Matrix4"], ["goog.vec", "goog.vec.Vec3", "goog.vec.Vec4"]); goog.addDependency("/closure/goog/vec/quaternion.js", ["goog.vec.Quaternion"], ["goog.vec", "goog.vec.Vec3", "goog.vec.Vec4"]); goog.addDependency("/closure/goog/vec/ray.js", ["goog.vec.Ray"], ["goog.vec.Vec3"]); goog.addDependency("/closure/goog/vec/vec.js", ["goog.vec", "goog.vec.AnyType", "goog.vec.ArrayType", "goog.vec.Float32", "goog.vec.Float64", "goog.vec.Number"], ["goog.vec.Float32Array", "goog.vec.Float64Array"]); goog.addDependency("/closure/goog/vec/vec2.js", ["goog.vec.Vec2"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec2d.js", ["goog.vec.vec2d", "goog.vec.vec2d.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec2f.js", ["goog.vec.vec2f", "goog.vec.vec2f.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec3.js", ["goog.vec.Vec3"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec3d.js", ["goog.vec.vec3d", "goog.vec.vec3d.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec3f.js", ["goog.vec.vec3f", "goog.vec.vec3f.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec4.js", ["goog.vec.Vec4"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec4d.js", ["goog.vec.vec4d", "goog.vec.vec4d.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/vec/vec4f.js", ["goog.vec.vec4f", "goog.vec.vec4f.Type"], ["goog.vec"]); goog.addDependency("/closure/goog/webgl/webgl.js", ["goog.webgl"], []); goog.addDependency("/closure/goog/window/window.js", ["goog.window"], ["goog.string", "goog.userAgent"]); goog.addDependency("/soy/soyutils.js", [], []); goog.addDependency("/soy/soyutils_usegoog.js", ["soy", "soy.StringBuilder", "soy.esc", "soydata", "soydata.SanitizedHtml", "soydata.SanitizedHtmlAttribute", "soydata.SanitizedJs", "soydata.SanitizedJsStrChars", "soydata.SanitizedUri", "soydata.VERY_UNSAFE"], ["goog.asserts", "goog.dom.DomHelper", "goog.format", "goog.i18n.BidiFormatter", "goog.i18n.bidi", "goog.soy", "goog.soy.data.SanitizedContentKind", "goog.string", "goog.string.StringBuffer"]); goog.addDependency("/third_party/closure/goog/base.js", [], []); goog.addDependency("/third_party/closure/goog/caja/string/html/htmlparser.js", ["goog.string.html.HtmlParser", "goog.string.html.HtmlParser.EFlags", "goog.string.html.HtmlParser.Elements", "goog.string.html.HtmlParser.Entities", "goog.string.html.HtmlSaxHandler"], []); goog.addDependency("/third_party/closure/goog/caja/string/html/htmlsanitizer.js", ["goog.string.html.HtmlSanitizer", "goog.string.html.HtmlSanitizer.AttributeType", "goog.string.html.HtmlSanitizer.Attributes", "goog.string.html.htmlSanitize"], ["goog.string.StringBuffer", "goog.string.html.HtmlParser", "goog.string.html.HtmlParser.EFlags", "goog.string.html.HtmlParser.Elements", "goog.string.html.HtmlSaxHandler"]); goog.addDependency("/third_party/closure/goog/dojo/dom/query.js", ["goog.dom.query"], ["goog.array", "goog.dom", "goog.functions", "goog.string", "goog.userAgent"]); goog.addDependency("/third_party/closure/goog/dojo/dom/query_test.js", [], []); goog.addDependency("/third_party/closure/goog/jpeg_encoder/jpeg_encoder_basic.js", ["goog.crypt.JpegEncoder"], ["goog.crypt.base64"]); goog.addDependency("/third_party/closure/goog/loremipsum/text/loremipsum.js", ["goog.text.LoremIpsum"], ["goog.array", "goog.math", "goog.string", "goog.structs.Map", "goog.structs.Set"]); goog.addDependency("/third_party/closure/goog/mochikit/async/deferred.js", ["goog.async.Deferred", "goog.async.Deferred.AlreadyCalledError", "goog.async.Deferred.CanceledError"], ["goog.array", "goog.asserts", "goog.debug.Error", "goog.functions"]); goog.addDependency("/third_party/closure/goog/mochikit/async/deferredlist.js", ["goog.async.DeferredList"], ["goog.async.Deferred"]); goog.addDependency("/third_party/closure/goog/osapi/osapi.js", ["goog.osapi"], []); goog.provide("goog.string"); goog.provide("goog.string.Unicode"); goog.string.Unicode = {NBSP:"\u00a0"}; goog.string.startsWith = function(str, prefix) { return str.lastIndexOf(prefix, 0) == 0 }; goog.string.endsWith = function(str, suffix) { var l = str.length - suffix.length; return l >= 0 && str.indexOf(suffix, l) == l }; goog.string.caseInsensitiveStartsWith = function(str, prefix) { return goog.string.caseInsensitiveCompare(prefix, str.substr(0, prefix.length)) == 0 }; goog.string.caseInsensitiveEndsWith = function(str, suffix) { return goog.string.caseInsensitiveCompare(suffix, str.substr(str.length - suffix.length, suffix.length)) == 0 }; goog.string.caseInsensitiveEquals = function(str1, str2) { return str1.toLowerCase() == str2.toLowerCase() }; goog.string.subs = function(str, var_args) { var splitParts = str.split("%s"); var returnString = ""; var subsArguments = Array.prototype.slice.call(arguments, 1); while(subsArguments.length && splitParts.length > 1) { returnString += splitParts.shift() + subsArguments.shift() } return returnString + splitParts.join("%s") }; goog.string.collapseWhitespace = function(str) { return str.replace(/[\s\xa0]+/g, " ").replace(/^\s+|\s+$/g, "") }; goog.string.isEmpty = function(str) { return/^[\s\xa0]*$/.test(str) }; goog.string.isEmptySafe = function(str) { return goog.string.isEmpty(goog.string.makeSafe(str)) }; goog.string.isBreakingWhitespace = function(str) { return!/[^\t\n\r ]/.test(str) }; goog.string.isAlpha = function(str) { return!/[^a-zA-Z]/.test(str) }; goog.string.isNumeric = function(str) { return!/[^0-9]/.test(str) }; goog.string.isAlphaNumeric = function(str) { return!/[^a-zA-Z0-9]/.test(str) }; goog.string.isSpace = function(ch) { return ch == " " }; goog.string.isUnicodeChar = function(ch) { return ch.length == 1 && ch >= " " && ch <= "~" || ch >= "\u0080" && ch <= "\ufffd" }; goog.string.stripNewlines = function(str) { return str.replace(/(\r\n|\r|\n)+/g, " ") }; goog.string.canonicalizeNewlines = function(str) { return str.replace(/(\r\n|\r|\n)/g, "\n") }; goog.string.normalizeWhitespace = function(str) { return str.replace(/\xa0|\s/g, " ") }; goog.string.normalizeSpaces = function(str) { return str.replace(/\xa0|[ \t]+/g, " ") }; goog.string.collapseBreakingSpaces = function(str) { return str.replace(/[\t\r\n ]+/g, " ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g, "") }; goog.string.trim = function(str) { return str.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "") }; goog.string.trimLeft = function(str) { return str.replace(/^[\s\xa0]+/, "") }; goog.string.trimRight = function(str) { return str.replace(/[\s\xa0]+$/, "") }; goog.string.caseInsensitiveCompare = function(str1, str2) { var test1 = String(str1).toLowerCase(); var test2 = String(str2).toLowerCase(); if(test1 < test2) { return-1 }else { if(test1 == test2) { return 0 }else { return 1 } } }; goog.string.numerateCompareRegExp_ = /(\.\d+)|(\d+)|(\D+)/g; goog.string.numerateCompare = function(str1, str2) { if(str1 == str2) { return 0 } if(!str1) { return-1 } if(!str2) { return 1 } var tokens1 = str1.toLowerCase().match(goog.string.numerateCompareRegExp_); var tokens2 = str2.toLowerCase().match(goog.string.numerateCompareRegExp_); var count = Math.min(tokens1.length, tokens2.length); for(var i = 0;i < count;i++) { var a = tokens1[i]; var b = tokens2[i]; if(a != b) { var num1 = parseInt(a, 10); if(!isNaN(num1)) { var num2 = parseInt(b, 10); if(!isNaN(num2) && num1 - num2) { return num1 - num2 } } return a < b ? -1 : 1 } } if(tokens1.length != tokens2.length) { return tokens1.length - tokens2.length } return str1 < str2 ? -1 : 1 }; goog.string.urlEncode = function(str) { return encodeURIComponent(String(str)) }; goog.string.urlDecode = function(str) { return decodeURIComponent(str.replace(/\+/g, " ")) }; goog.string.newLineToBr = function(str, opt_xml) { return str.replace(/(\r\n|\r|\n)/g, opt_xml ? "\x3cbr /\x3e" : "\x3cbr\x3e") }; goog.string.htmlEscape = function(str, opt_isLikelyToContainHtmlChars) { if(opt_isLikelyToContainHtmlChars) { return str.replace(goog.string.amperRe_, "\x26amp;").replace(goog.string.ltRe_, "\x26lt;").replace(goog.string.gtRe_, "\x26gt;").replace(goog.string.quotRe_, "\x26quot;") }else { if(!goog.string.allRe_.test(str)) { return str } if(str.indexOf("\x26") != -1) { str = str.replace(goog.string.amperRe_, "\x26amp;") } if(str.indexOf("\x3c") != -1) { str = str.replace(goog.string.ltRe_, "\x26lt;") } if(str.indexOf("\x3e") != -1) { str = str.replace(goog.string.gtRe_, "\x26gt;") } if(str.indexOf('"') != -1) { str = str.replace(goog.string.quotRe_, "\x26quot;") } return str } }; goog.string.amperRe_ = /&/g; goog.string.ltRe_ = //g; goog.string.quotRe_ = /\"/g; goog.string.allRe_ = /[&<>\"]/; goog.string.unescapeEntities = function(str) { if(goog.string.contains(str, "\x26")) { if("document" in goog.global) { return goog.string.unescapeEntitiesUsingDom_(str) }else { return goog.string.unescapePureXmlEntities_(str) } } return str }; goog.string.unescapeEntitiesUsingDom_ = function(str) { var seen = {"\x26amp;":"\x26", "\x26lt;":"\x3c", "\x26gt;":"\x3e", "\x26quot;":'"'}; var div = document.createElement("div"); return str.replace(goog.string.HTML_ENTITY_PATTERN_, function(s, entity) { var value = seen[s]; if(value) { return value } if(entity.charAt(0) == "#") { var n = Number("0" + entity.substr(1)); if(!isNaN(n)) { value = String.fromCharCode(n) } } if(!value) { div.innerHTML = s + " "; value = div.firstChild.nodeValue.slice(0, -1) } return seen[s] = value }) }; goog.string.unescapePureXmlEntities_ = function(str) { return str.replace(/&([^;]+);/g, function(s, entity) { switch(entity) { case "amp": return"\x26"; case "lt": return"\x3c"; case "gt": return"\x3e"; case "quot": return'"'; default: if(entity.charAt(0) == "#") { var n = Number("0" + entity.substr(1)); if(!isNaN(n)) { return String.fromCharCode(n) } } return s } }) }; goog.string.HTML_ENTITY_PATTERN_ = /&([^;\s<&]+);?/g; goog.string.whitespaceEscape = function(str, opt_xml) { return goog.string.newLineToBr(str.replace(/ /g, " \x26#160;"), opt_xml) }; goog.string.stripQuotes = function(str, quoteChars) { var length = quoteChars.length; for(var i = 0;i < length;i++) { var quoteChar = length == 1 ? quoteChars : quoteChars.charAt(i); if(str.charAt(0) == quoteChar && str.charAt(str.length - 1) == quoteChar) { return str.substring(1, str.length - 1) } } return str }; goog.string.truncate = function(str, chars, opt_protectEscapedCharacters) { if(opt_protectEscapedCharacters) { str = goog.string.unescapeEntities(str) } if(str.length > chars) { str = str.substring(0, chars - 3) + "..." } if(opt_protectEscapedCharacters) { str = goog.string.htmlEscape(str) } return str }; goog.string.truncateMiddle = function(str, chars, opt_protectEscapedCharacters, opt_trailingChars) { if(opt_protectEscapedCharacters) { str = goog.string.unescapeEntities(str) } if(opt_trailingChars && str.length > chars) { if(opt_trailingChars > chars) { opt_trailingChars = chars } var endPoint = str.length - opt_trailingChars; var startPoint = chars - opt_trailingChars; str = str.substring(0, startPoint) + "..." + str.substring(endPoint) }else { if(str.length > chars) { var half = Math.floor(chars / 2); var endPos = str.length - half; half += chars % 2; str = str.substring(0, half) + "..." + str.substring(endPos) } } if(opt_protectEscapedCharacters) { str = goog.string.htmlEscape(str) } return str }; goog.string.specialEscapeChars_ = {"\x00":"\\0", "\b":"\\b", "\f":"\\f", "\n":"\\n", "\r":"\\r", "\t":"\\t", "\x0B":"\\x0B", '"':'\\"', "\\":"\\\\"}; goog.string.jsEscapeCache_ = {"'":"\\'"}; goog.string.quote = function(s) { s = String(s); if(s.quote) { return s.quote() }else { var sb = ['"']; for(var i = 0;i < s.length;i++) { var ch = s.charAt(i); var cc = ch.charCodeAt(0); sb[i + 1] = goog.string.specialEscapeChars_[ch] || (cc > 31 && cc < 127 ? ch : goog.string.escapeChar(ch)) } sb.push('"'); return sb.join("") } }; goog.string.escapeString = function(str) { var sb = []; for(var i = 0;i < str.length;i++) { sb[i] = goog.string.escapeChar(str.charAt(i)) } return sb.join("") }; goog.string.escapeChar = function(c) { if(c in goog.string.jsEscapeCache_) { return goog.string.jsEscapeCache_[c] } if(c in goog.string.specialEscapeChars_) { return goog.string.jsEscapeCache_[c] = goog.string.specialEscapeChars_[c] } var rv = c; var cc = c.charCodeAt(0); if(cc > 31 && cc < 127) { rv = c }else { if(cc < 256) { rv = "\\x"; if(cc < 16 || cc > 256) { rv += "0" } }else { rv = "\\u"; if(cc < 4096) { rv += "0" } } rv += cc.toString(16).toUpperCase() } return goog.string.jsEscapeCache_[c] = rv }; goog.string.toMap = function(s) { var rv = {}; for(var i = 0;i < s.length;i++) { rv[s.charAt(i)] = true } return rv }; goog.string.contains = function(s, ss) { return s.indexOf(ss) != -1 }; goog.string.countOf = function(s, ss) { return s && ss ? s.split(ss).length - 1 : 0 }; goog.string.removeAt = function(s, index, stringLength) { var resultStr = s; if(index >= 0 && index < s.length && stringLength > 0) { resultStr = s.substr(0, index) + s.substr(index + stringLength, s.length - index - stringLength) } return resultStr }; goog.string.remove = function(s, ss) { var re = new RegExp(goog.string.regExpEscape(ss), ""); return s.replace(re, "") }; goog.string.removeAll = function(s, ss) { var re = new RegExp(goog.string.regExpEscape(ss), "g"); return s.replace(re, "") }; goog.string.regExpEscape = function(s) { return String(s).replace(/([-()\[\]{}+?*.$\^|,:# right) { return 1 } } return 0 }; goog.string.HASHCODE_MAX_ = 4294967296; goog.string.hashCode = function(str) { var result = 0; for(var i = 0;i < str.length;++i) { result = 31 * result + str.charCodeAt(i); result %= goog.string.HASHCODE_MAX_ } return result }; goog.string.uniqueStringCounter_ = Math.random() * 2147483648 | 0; goog.string.createUniqueString = function() { return"goog_" + goog.string.uniqueStringCounter_++ }; goog.string.toNumber = function(str) { var num = Number(str); if(num == 0 && goog.string.isEmpty(str)) { return NaN } return num }; goog.string.isLowerCamelCase = function(str) { return/^[a-z]+([A-Z][a-z]*)*$/.test(str) }; goog.string.isUpperCamelCase = function(str) { return/^([A-Z][a-z]*)+$/.test(str) }; goog.string.toCamelCase = function(str) { return String(str).replace(/\-([a-z])/g, function(all, match) { return match.toUpperCase() }) }; goog.string.toSelectorCase = function(str) { return String(str).replace(/([A-Z])/g, "-$1").toLowerCase() }; goog.string.toTitleCase = function(str, opt_delimiters) { var delimiters = goog.isString(opt_delimiters) ? goog.string.regExpEscape(opt_delimiters) : "\\s"; delimiters = delimiters ? "|[" + delimiters + "]+" : ""; var regexp = new RegExp("(^" + delimiters + ")([a-z])", "g"); return str.replace(regexp, function(all, p1, p2) { return p1 + p2.toUpperCase() }) }; goog.string.parseInt = function(value) { if(isFinite(value)) { value = String(value) } if(goog.isString(value)) { return/^\s*-?0x/i.test(value) ? parseInt(value, 16) : parseInt(value, 10) } return NaN }; goog.string.splitLimit = function(str, separator, limit) { var parts = str.split(separator); var returnVal = []; while(limit > 0 && parts.length) { returnVal.push(parts.shift()); limit-- } if(parts.length) { returnVal.push(parts.join(separator)) } return returnVal }; goog.provide("goog.userAgent"); goog.require("goog.string"); goog.define("goog.userAgent.ASSUME_IE", false); goog.define("goog.userAgent.ASSUME_GECKO", false); goog.define("goog.userAgent.ASSUME_WEBKIT", false); goog.define("goog.userAgent.ASSUME_MOBILE_WEBKIT", false); goog.define("goog.userAgent.ASSUME_OPERA", false); goog.define("goog.userAgent.ASSUME_ANY_VERSION", false); goog.userAgent.BROWSER_KNOWN_ = goog.userAgent.ASSUME_IE || goog.userAgent.ASSUME_GECKO || goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_OPERA; goog.userAgent.getUserAgentString = function() { return goog.global["navigator"] ? goog.global["navigator"].userAgent : null }; goog.userAgent.getNavigator = function() { return goog.global["navigator"] }; goog.userAgent.init_ = function() { goog.userAgent.detectedOpera_ = false; goog.userAgent.detectedIe_ = false; goog.userAgent.detectedWebkit_ = false; goog.userAgent.detectedMobile_ = false; goog.userAgent.detectedGecko_ = false; var ua; if(!goog.userAgent.BROWSER_KNOWN_ && (ua = goog.userAgent.getUserAgentString())) { var navigator = goog.userAgent.getNavigator(); goog.userAgent.detectedOpera_ = goog.string.startsWith(ua, "Opera"); goog.userAgent.detectedIe_ = !goog.userAgent.detectedOpera_ && (goog.string.contains(ua, "MSIE") || goog.string.contains(ua, "Trident")); goog.userAgent.detectedWebkit_ = !goog.userAgent.detectedOpera_ && goog.string.contains(ua, "WebKit"); goog.userAgent.detectedMobile_ = goog.userAgent.detectedWebkit_ && goog.string.contains(ua, "Mobile"); goog.userAgent.detectedGecko_ = !goog.userAgent.detectedOpera_ && !goog.userAgent.detectedWebkit_ && !goog.userAgent.detectedIe_ && navigator.product == "Gecko" } }; if(!goog.userAgent.BROWSER_KNOWN_) { goog.userAgent.init_() } goog.userAgent.OPERA = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_OPERA : goog.userAgent.detectedOpera_; goog.userAgent.IE = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_IE : goog.userAgent.detectedIe_; goog.userAgent.GECKO = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_GECKO : goog.userAgent.detectedGecko_; goog.userAgent.WEBKIT = goog.userAgent.BROWSER_KNOWN_ ? goog.userAgent.ASSUME_WEBKIT || goog.userAgent.ASSUME_MOBILE_WEBKIT : goog.userAgent.detectedWebkit_; goog.userAgent.MOBILE = goog.userAgent.ASSUME_MOBILE_WEBKIT || goog.userAgent.detectedMobile_; goog.userAgent.SAFARI = goog.userAgent.WEBKIT; goog.userAgent.determinePlatform_ = function() { var navigator = goog.userAgent.getNavigator(); return navigator && navigator.platform || "" }; goog.userAgent.PLATFORM = goog.userAgent.determinePlatform_(); goog.define("goog.userAgent.ASSUME_MAC", false); goog.define("goog.userAgent.ASSUME_WINDOWS", false); goog.define("goog.userAgent.ASSUME_LINUX", false); goog.define("goog.userAgent.ASSUME_X11", false); goog.define("goog.userAgent.ASSUME_ANDROID", false); goog.define("goog.userAgent.ASSUME_IPHONE", false); goog.define("goog.userAgent.ASSUME_IPAD", false); goog.userAgent.PLATFORM_KNOWN_ = goog.userAgent.ASSUME_MAC || goog.userAgent.ASSUME_WINDOWS || goog.userAgent.ASSUME_LINUX || goog.userAgent.ASSUME_X11 || goog.userAgent.ASSUME_ANDROID || goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD; goog.userAgent.initPlatform_ = function() { goog.userAgent.detectedMac_ = goog.string.contains(goog.userAgent.PLATFORM, "Mac"); goog.userAgent.detectedWindows_ = goog.string.contains(goog.userAgent.PLATFORM, "Win"); goog.userAgent.detectedLinux_ = goog.string.contains(goog.userAgent.PLATFORM, "Linux"); goog.userAgent.detectedX11_ = !!goog.userAgent.getNavigator() && goog.string.contains(goog.userAgent.getNavigator()["appVersion"] || "", "X11"); var ua = goog.userAgent.getUserAgentString(); goog.userAgent.detectedAndroid_ = !!ua && goog.string.contains(ua, "Android"); goog.userAgent.detectedIPhone_ = !!ua && goog.string.contains(ua, "iPhone"); goog.userAgent.detectedIPad_ = !!ua && goog.string.contains(ua, "iPad") }; if(!goog.userAgent.PLATFORM_KNOWN_) { goog.userAgent.initPlatform_() } goog.userAgent.MAC = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_MAC : goog.userAgent.detectedMac_; goog.userAgent.WINDOWS = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_WINDOWS : goog.userAgent.detectedWindows_; goog.userAgent.LINUX = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_LINUX : goog.userAgent.detectedLinux_; goog.userAgent.X11 = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_X11 : goog.userAgent.detectedX11_; goog.userAgent.ANDROID = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_ANDROID : goog.userAgent.detectedAndroid_; goog.userAgent.IPHONE = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPHONE : goog.userAgent.detectedIPhone_; goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ? goog.userAgent.ASSUME_IPAD : goog.userAgent.detectedIPad_; goog.userAgent.determineVersion_ = function() { var version = "", re; if(goog.userAgent.OPERA && goog.global["opera"]) { var operaVersion = goog.global["opera"].version; version = typeof operaVersion == "function" ? operaVersion() : operaVersion }else { if(goog.userAgent.GECKO) { re = /rv\:([^\);]+)(\)|;)/ }else { if(goog.userAgent.IE) { re = /\b(?:MSIE|rv)\s+([^\);]+)(\)|;)/ }else { if(goog.userAgent.WEBKIT) { re = /WebKit\/(\S+)/ } } } if(re) { var arr = re.exec(goog.userAgent.getUserAgentString()); version = arr ? arr[1] : "" } } if(goog.userAgent.IE) { var docMode = goog.userAgent.getDocumentMode_(); if(docMode > parseFloat(version)) { return String(docMode) } } return version }; goog.userAgent.getDocumentMode_ = function() { var doc = goog.global["document"]; return doc ? doc["documentMode"] : undefined }; goog.userAgent.VERSION = goog.userAgent.determineVersion_(); goog.userAgent.compare = function(v1, v2) { return goog.string.compareVersions(v1, v2) }; goog.userAgent.isVersionOrHigherCache_ = {}; goog.userAgent.isVersionOrHigher = function(version) { return goog.userAgent.ASSUME_ANY_VERSION || goog.userAgent.isVersionOrHigherCache_[version] || (goog.userAgent.isVersionOrHigherCache_[version] = goog.string.compareVersions(goog.userAgent.VERSION, version) >= 0) }; goog.userAgent.isVersion = goog.userAgent.isVersionOrHigher; goog.userAgent.isDocumentModeOrHigher = function(documentMode) { return goog.userAgent.IE && goog.userAgent.DOCUMENT_MODE >= documentMode }; goog.userAgent.isDocumentMode = goog.userAgent.isDocumentModeOrHigher; goog.userAgent.DOCUMENT_MODE = function() { var doc = goog.global["document"]; if(!doc || !goog.userAgent.IE) { return undefined } var mode = goog.userAgent.getDocumentMode_(); return mode || (doc["compatMode"] == "CSS1Compat" ? parseInt(goog.userAgent.VERSION, 10) : 5) }(); goog.require("goog.userAgent"); goog.provide("ol"); ol.ASSUME_TOUCH = false; ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS = goog.DEBUG; ol.DEFAULT_MAX_ZOOM = 42; ol.DEFAULT_TILE_CACHE_HIGH_WATER_MARK = 2048; ol.DEFAULT_TILE_SIZE = 256; ol.DEFAULT_WMS_VERSION = "1.3.0"; ol.DRAGROTATEANDZOOM_ANIMATION_DURATION = 400; ol.DRAGROTATE_ANIMATION_DURATION = 250; ol.DRAGZOOM_ANIMATION_DURATION = 200; ol.DRAG_BOX_HYSTERESIS_PIXELS = 8; ol.ENABLE_CANVAS = true; ol.ENABLE_DOM = true; ol.ENABLE_IMAGE = true; ol.ENABLE_NAMED_COLORS = true; ol.ENABLE_PROJ4JS = true; ol.ENABLE_TILE = true; ol.ENABLE_VECTOR = true; ol.ENABLE_WEBGL = true; ol.LEGACY_IE_SUPPORT = false; ol.IS_HTTPS = goog.global.location.protocol === "https:"; ol.IS_LEGACY_IE = goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9.0") && goog.userAgent.VERSION !== ""; ol.KEYBOARD_PAN_DURATION = 100; ol.MOUSEWHEELZOOM_MAXDELTA = 1; ol.MOUSEWHEELZOOM_TIMEOUT_DURATION = 80; ol.ROTATE_ANIMATION_DURATION = 250; ol.WEBGL_TEXTURE_CACHE_HIGH_WATER_MARK = 1024; ol.ZOOMSLIDER_ANIMATION_DURATION = 200; ol.inherits = goog.inherits; goog.provide("goog.debug.Error"); goog.debug.Error = function(opt_msg) { if(Error.captureStackTrace) { Error.captureStackTrace(this, goog.debug.Error) }else { this.stack = (new Error).stack || "" } if(opt_msg) { this.message = String(opt_msg) } }; goog.inherits(goog.debug.Error, Error); goog.debug.Error.prototype.name = "CustomError"; goog.provide("goog.asserts"); goog.provide("goog.asserts.AssertionError"); goog.require("goog.debug.Error"); goog.require("goog.string"); goog.define("goog.asserts.ENABLE_ASSERTS", goog.DEBUG); goog.asserts.AssertionError = function(messagePattern, messageArgs) { messageArgs.unshift(messagePattern); goog.debug.Error.call(this, goog.string.subs.apply(null, messageArgs)); messageArgs.shift(); this.messagePattern = messagePattern }; goog.inherits(goog.asserts.AssertionError, goog.debug.Error); goog.asserts.AssertionError.prototype.name = "AssertionError"; goog.asserts.doAssertFailure_ = function(defaultMessage, defaultArgs, givenMessage, givenArgs) { var message = "Assertion failed"; if(givenMessage) { message += ": " + givenMessage; var args = givenArgs }else { if(defaultMessage) { message += ": " + defaultMessage; args = defaultArgs } } throw new goog.asserts.AssertionError("" + message, args || []); }; goog.asserts.assert = function(condition, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !condition) { goog.asserts.doAssertFailure_("", null, opt_message, Array.prototype.slice.call(arguments, 2)) } return condition }; goog.asserts.fail = function(opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS) { throw new goog.asserts.AssertionError("Failure" + (opt_message ? ": " + opt_message : ""), Array.prototype.slice.call(arguments, 1)); } }; goog.asserts.assertNumber = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isNumber(value)) { goog.asserts.doAssertFailure_("Expected number but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertString = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isString(value)) { goog.asserts.doAssertFailure_("Expected string but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertFunction = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isFunction(value)) { goog.asserts.doAssertFailure_("Expected function but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertObject = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isObject(value)) { goog.asserts.doAssertFailure_("Expected object but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertArray = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isArray(value)) { goog.asserts.doAssertFailure_("Expected array but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertBoolean = function(value, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !goog.isBoolean(value)) { goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.", [goog.typeOf(value), value], opt_message, Array.prototype.slice.call(arguments, 2)) } return(value) }; goog.asserts.assertInstanceof = function(value, type, opt_message, var_args) { if(goog.asserts.ENABLE_ASSERTS && !(value instanceof type)) { goog.asserts.doAssertFailure_("instanceof check failed.", null, opt_message, Array.prototype.slice.call(arguments, 3)) } return value }; goog.asserts.assertObjectPrototypeIsIntact = function() { for(var key in Object.prototype) { goog.asserts.fail(key + " should not be enumerable in Object.prototype.") } }; goog.provide("ol.Size"); goog.provide("ol.size"); ol.Size; ol.size.equals = function(a, b) { return a[0] == b[0] && a[1] == b[1] }; goog.provide("goog.array"); goog.provide("goog.array.ArrayLike"); goog.require("goog.asserts"); goog.define("goog.NATIVE_ARRAY_PROTOTYPES", goog.TRUSTED_SITE); goog.array.ArrayLike; goog.array.peek = function(array) { return array[array.length - 1] }; goog.array.ARRAY_PROTOTYPE_ = Array.prototype; goog.array.indexOf = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.indexOf ? function(arr, obj, opt_fromIndex) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.indexOf.call(arr, obj, opt_fromIndex) } : function(arr, obj, opt_fromIndex) { var fromIndex = opt_fromIndex == null ? 0 : opt_fromIndex < 0 ? Math.max(0, arr.length + opt_fromIndex) : opt_fromIndex; if(goog.isString(arr)) { if(!goog.isString(obj) || obj.length != 1) { return-1 } return arr.indexOf(obj, fromIndex) } for(var i = fromIndex;i < arr.length;i++) { if(i in arr && arr[i] === obj) { return i } } return-1 }; goog.array.lastIndexOf = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.lastIndexOf ? function(arr, obj, opt_fromIndex) { goog.asserts.assert(arr.length != null); var fromIndex = opt_fromIndex == null ? arr.length - 1 : opt_fromIndex; return goog.array.ARRAY_PROTOTYPE_.lastIndexOf.call(arr, obj, fromIndex) } : function(arr, obj, opt_fromIndex) { var fromIndex = opt_fromIndex == null ? arr.length - 1 : opt_fromIndex; if(fromIndex < 0) { fromIndex = Math.max(0, arr.length + fromIndex) } if(goog.isString(arr)) { if(!goog.isString(obj) || obj.length != 1) { return-1 } return arr.lastIndexOf(obj, fromIndex) } for(var i = fromIndex;i >= 0;i--) { if(i in arr && arr[i] === obj) { return i } } return-1 }; goog.array.forEach = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.forEach ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); goog.array.ARRAY_PROTOTYPE_.forEach.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2) { f.call(opt_obj, arr2[i], i, arr) } } }; goog.array.forEachRight = function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = l - 1;i >= 0;--i) { if(i in arr2) { f.call(opt_obj, arr2[i], i, arr) } } }; goog.array.filter = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.filter ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.filter.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var res = []; var resLength = 0; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2) { var val = arr2[i]; if(f.call(opt_obj, val, i, arr)) { res[resLength++] = val } } } return res }; goog.array.map = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.map ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.map.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var res = new Array(l); var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2) { res[i] = f.call(opt_obj, arr2[i], i, arr) } } return res }; goog.array.reduce = function(arr, f, val, opt_obj) { if(arr.reduce) { if(opt_obj) { return arr.reduce(goog.bind(f, opt_obj), val) }else { return arr.reduce(f, val) } } var rval = val; goog.array.forEach(arr, function(val, index) { rval = f.call(opt_obj, rval, val, index, arr) }); return rval }; goog.array.reduceRight = function(arr, f, val, opt_obj) { if(arr.reduceRight) { if(opt_obj) { return arr.reduceRight(goog.bind(f, opt_obj), val) }else { return arr.reduceRight(f, val) } } var rval = val; goog.array.forEachRight(arr, function(val, index) { rval = f.call(opt_obj, rval, val, index, arr) }); return rval }; goog.array.some = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.some ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.some.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2 && f.call(opt_obj, arr2[i], i, arr)) { return true } } return false }; goog.array.every = goog.NATIVE_ARRAY_PROTOTYPES && goog.array.ARRAY_PROTOTYPE_.every ? function(arr, f, opt_obj) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.every.call(arr, f, opt_obj) } : function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2 && !f.call(opt_obj, arr2[i], i, arr)) { return false } } return true }; goog.array.count = function(arr, f, opt_obj) { var count = 0; goog.array.forEach(arr, function(element, index, arr) { if(f.call(opt_obj, element, index, arr)) { ++count } }, opt_obj); return count }; goog.array.find = function(arr, f, opt_obj) { var i = goog.array.findIndex(arr, f, opt_obj); return i < 0 ? null : goog.isString(arr) ? arr.charAt(i) : arr[i] }; goog.array.findIndex = function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = 0;i < l;i++) { if(i in arr2 && f.call(opt_obj, arr2[i], i, arr)) { return i } } return-1 }; goog.array.findRight = function(arr, f, opt_obj) { var i = goog.array.findIndexRight(arr, f, opt_obj); return i < 0 ? null : goog.isString(arr) ? arr.charAt(i) : arr[i] }; goog.array.findIndexRight = function(arr, f, opt_obj) { var l = arr.length; var arr2 = goog.isString(arr) ? arr.split("") : arr; for(var i = l - 1;i >= 0;i--) { if(i in arr2 && f.call(opt_obj, arr2[i], i, arr)) { return i } } return-1 }; goog.array.contains = function(arr, obj) { return goog.array.indexOf(arr, obj) >= 0 }; goog.array.isEmpty = function(arr) { return arr.length == 0 }; goog.array.clear = function(arr) { if(!goog.isArray(arr)) { for(var i = arr.length - 1;i >= 0;i--) { delete arr[i] } } arr.length = 0 }; goog.array.insert = function(arr, obj) { if(!goog.array.contains(arr, obj)) { arr.push(obj) } }; goog.array.insertAt = function(arr, obj, opt_i) { goog.array.splice(arr, opt_i, 0, obj) }; goog.array.insertArrayAt = function(arr, elementsToAdd, opt_i) { goog.partial(goog.array.splice, arr, opt_i, 0).apply(null, elementsToAdd) }; goog.array.insertBefore = function(arr, obj, opt_obj2) { var i; if(arguments.length == 2 || (i = goog.array.indexOf(arr, opt_obj2)) < 0) { arr.push(obj) }else { goog.array.insertAt(arr, obj, i) } }; goog.array.remove = function(arr, obj) { var i = goog.array.indexOf(arr, obj); var rv; if(rv = i >= 0) { goog.array.removeAt(arr, i) } return rv }; goog.array.removeAt = function(arr, i) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.splice.call(arr, i, 1).length == 1 }; goog.array.removeIf = function(arr, f, opt_obj) { var i = goog.array.findIndex(arr, f, opt_obj); if(i >= 0) { goog.array.removeAt(arr, i); return true } return false }; goog.array.concat = function(var_args) { return goog.array.ARRAY_PROTOTYPE_.concat.apply(goog.array.ARRAY_PROTOTYPE_, arguments) }; goog.array.toArray = function(object) { var length = object.length; if(length > 0) { var rv = new Array(length); for(var i = 0;i < length;i++) { rv[i] = object[i] } return rv } return[] }; goog.array.clone = goog.array.toArray; goog.array.extend = function(arr1, var_args) { for(var i = 1;i < arguments.length;i++) { var arr2 = arguments[i]; var isArrayLike; if(goog.isArray(arr2) || (isArrayLike = goog.isArrayLike(arr2)) && Object.prototype.hasOwnProperty.call(arr2, "callee")) { arr1.push.apply(arr1, arr2) }else { if(isArrayLike) { var len1 = arr1.length; var len2 = arr2.length; for(var j = 0;j < len2;j++) { arr1[len1 + j] = arr2[j] } }else { arr1.push(arr2) } } } }; goog.array.splice = function(arr, index, howMany, var_args) { goog.asserts.assert(arr.length != null); return goog.array.ARRAY_PROTOTYPE_.splice.apply(arr, goog.array.slice(arguments, 1)) }; goog.array.slice = function(arr, start, opt_end) { goog.asserts.assert(arr.length != null); if(arguments.length <= 2) { return goog.array.ARRAY_PROTOTYPE_.slice.call(arr, start) }else { return goog.array.ARRAY_PROTOTYPE_.slice.call(arr, start, opt_end) } }; goog.array.removeDuplicates = function(arr, opt_rv) { var returnArray = opt_rv || arr; var seen = {}, cursorInsert = 0, cursorRead = 0; while(cursorRead < arr.length) { var current = arr[cursorRead++]; var key = goog.isObject(current) ? "o" + goog.getUid(current) : (typeof current).charAt(0) + current; if(!Object.prototype.hasOwnProperty.call(seen, key)) { seen[key] = true; returnArray[cursorInsert++] = current } } returnArray.length = cursorInsert }; goog.array.binarySearch = function(arr, target, opt_compareFn) { return goog.array.binarySearch_(arr, opt_compareFn || goog.array.defaultCompare, false, target) }; goog.array.binarySelect = function(arr, evaluator, opt_obj) { return goog.array.binarySearch_(arr, evaluator, true, undefined, opt_obj) }; goog.array.binarySearch_ = function(arr, compareFn, isEvaluator, opt_target, opt_selfObj) { var left = 0; var right = arr.length; var found; while(left < right) { var middle = left + right >> 1; var compareResult; if(isEvaluator) { compareResult = compareFn.call(opt_selfObj, arr[middle], middle, arr) }else { compareResult = compareFn(opt_target, arr[middle]) } if(compareResult > 0) { left = middle + 1 }else { right = middle; found = !compareResult } } return found ? left : ~left }; goog.array.sort = function(arr, opt_compareFn) { goog.asserts.assert(arr.length != null); goog.array.ARRAY_PROTOTYPE_.sort.call(arr, opt_compareFn || goog.array.defaultCompare) }; goog.array.stableSort = function(arr, opt_compareFn) { for(var i = 0;i < arr.length;i++) { arr[i] = {index:i, value:arr[i]} } var valueCompareFn = opt_compareFn || goog.array.defaultCompare; function stableCompareFn(obj1, obj2) { return valueCompareFn(obj1.value, obj2.value) || obj1.index - obj2.index } goog.array.sort(arr, stableCompareFn); for(var i = 0;i < arr.length;i++) { arr[i] = arr[i].value } }; goog.array.sortObjectsByKey = function(arr, key, opt_compareFn) { var compare = opt_compareFn || goog.array.defaultCompare; goog.array.sort(arr, function(a, b) { return compare(a[key], b[key]) }) }; goog.array.isSorted = function(arr, opt_compareFn, opt_strict) { var compare = opt_compareFn || goog.array.defaultCompare; for(var i = 1;i < arr.length;i++) { var compareResult = compare(arr[i - 1], arr[i]); if(compareResult > 0 || compareResult == 0 && opt_strict) { return false } } return true }; goog.array.equals = function(arr1, arr2, opt_equalsFn) { if(!goog.isArrayLike(arr1) || !goog.isArrayLike(arr2) || arr1.length != arr2.length) { return false } var l = arr1.length; var equalsFn = opt_equalsFn || goog.array.defaultCompareEquality; for(var i = 0;i < l;i++) { if(!equalsFn(arr1[i], arr2[i])) { return false } } return true }; goog.array.compare = function(arr1, arr2, opt_equalsFn) { return goog.array.equals(arr1, arr2, opt_equalsFn) }; goog.array.compare3 = function(arr1, arr2, opt_compareFn) { var compare = opt_compareFn || goog.array.defaultCompare; var l = Math.min(arr1.length, arr2.length); for(var i = 0;i < l;i++) { var result = compare(arr1[i], arr2[i]); if(result != 0) { return result } } return goog.array.defaultCompare(arr1.length, arr2.length) }; goog.array.defaultCompare = function(a, b) { return a > b ? 1 : a < b ? -1 : 0 }; goog.array.defaultCompareEquality = function(a, b) { return a === b }; goog.array.binaryInsert = function(array, value, opt_compareFn) { var index = goog.array.binarySearch(array, value, opt_compareFn); if(index < 0) { goog.array.insertAt(array, value, -(index + 1)); return true } return false }; goog.array.binaryRemove = function(array, value, opt_compareFn) { var index = goog.array.binarySearch(array, value, opt_compareFn); return index >= 0 ? goog.array.removeAt(array, index) : false }; goog.array.bucket = function(array, sorter, opt_obj) { var buckets = {}; for(var i = 0;i < array.length;i++) { var value = array[i]; var key = sorter.call(opt_obj, value, i, array); if(goog.isDef(key)) { var bucket = buckets[key] || (buckets[key] = []); bucket.push(value) } } return buckets }; goog.array.toObject = function(arr, keyFunc, opt_obj) { var ret = {}; goog.array.forEach(arr, function(element, index) { ret[keyFunc.call(opt_obj, element, index, arr)] = element }); return ret }; goog.array.range = function(startOrEnd, opt_end, opt_step) { var array = []; var start = 0; var end = startOrEnd; var step = opt_step || 1; if(opt_end !== undefined) { start = startOrEnd; end = opt_end } if(step * (end - start) < 0) { return[] } if(step > 0) { for(var i = start;i < end;i += step) { array.push(i) } }else { for(var i = start;i > end;i += step) { array.push(i) } } return array }; goog.array.repeat = function(value, n) { var array = []; for(var i = 0;i < n;i++) { array[i] = value } return array }; goog.array.flatten = function(var_args) { var result = []; for(var i = 0;i < arguments.length;i++) { var element = arguments[i]; if(goog.isArray(element)) { result.push.apply(result, goog.array.flatten.apply(null, element)) }else { result.push(element) } } return result }; goog.array.rotate = function(array, n) { goog.asserts.assert(array.length != null); if(array.length) { n %= array.length; if(n > 0) { goog.array.ARRAY_PROTOTYPE_.unshift.apply(array, array.splice(-n, n)) }else { if(n < 0) { goog.array.ARRAY_PROTOTYPE_.push.apply(array, array.splice(0, -n)) } } } return array }; goog.array.moveItem = function(arr, fromIndex, toIndex) { goog.asserts.assert(fromIndex >= 0 && fromIndex < arr.length); goog.asserts.assert(toIndex >= 0 && toIndex < arr.length); var removedItems = goog.array.ARRAY_PROTOTYPE_.splice.call(arr, fromIndex, 1); goog.array.ARRAY_PROTOTYPE_.splice.call(arr, toIndex, 0, removedItems[0]) }; goog.array.zip = function(var_args) { if(!arguments.length) { return[] } var result = []; for(var i = 0;true;i++) { var value = []; for(var j = 0;j < arguments.length;j++) { var arr = arguments[j]; if(i >= arr.length) { return result } value.push(arr[i]) } result.push(value) } }; goog.array.shuffle = function(arr, opt_randFn) { var randFn = opt_randFn || Math.random; for(var i = arr.length - 1;i > 0;i--) { var j = Math.floor(randFn() * (i + 1)); var tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp } }; goog.provide("ol.TileCoord"); goog.require("goog.array"); goog.require("goog.asserts"); ol.QuadKeyCharCode = {ZERO:"0".charCodeAt(0), ONE:"1".charCodeAt(0), TWO:"2".charCodeAt(0), THREE:"3".charCodeAt(0)}; ol.TileCoord = function(z, x, y) { this.z = z; this.x = x; this.y = y }; ol.TileCoord.createFromQuadKey = function(quadKey) { var z = quadKey.length, x = 0, y = 0; var mask = 1 << z - 1; var i; for(i = 0;i < z;++i) { switch(quadKey.charCodeAt(i)) { case ol.QuadKeyCharCode.ONE: x += mask; break; case ol.QuadKeyCharCode.TWO: y += mask; break; case ol.QuadKeyCharCode.THREE: x += mask; y += mask; break } mask >>= 1 } return new ol.TileCoord(z, x, y) }; ol.TileCoord.createFromString = function(str) { var v = str.split("/"); v = goog.array.map(v, function(e, i, a) { return parseInt(e, 10) }); return new ol.TileCoord(v[0], v[1], v[2]) }; ol.TileCoord.createOrUpdate = function(z, x, y, tileCoord) { if(goog.isDef(tileCoord)) { tileCoord.z = z; tileCoord.x = x; tileCoord.y = y; return tileCoord }else { return new ol.TileCoord(z, x, y) } }; ol.TileCoord.getKeyZXY = function(z, x, y) { return z + "/" + x + "/" + y }; ol.TileCoord.prototype.getZXY = function(opt_result) { if(goog.isDef(opt_result)) { goog.asserts.assert(opt_result.length == 3); opt_result[0] = this.z; opt_result[1] = this.x; opt_result[2] = this.y; return opt_result }else { return[this.z, this.x, this.y] } }; ol.TileCoord.prototype.hash = function() { return(this.x << this.z) + this.y }; ol.TileCoord.prototype.quadKey = function() { var digits = new Array(this.z); var mask = 1 << this.z - 1; var i, charCode; for(i = 0;i < this.z;++i) { charCode = ol.QuadKeyCharCode.ZERO; if(this.x & mask) { charCode += 1 } if(this.y & mask) { charCode += 2 } digits[i] = String.fromCharCode(charCode); mask >>= 1 } return digits.join("") }; ol.TileCoord.prototype.toString = function() { return ol.TileCoord.getKeyZXY(this.z, this.x, this.y) }; goog.provide("ol.TileRange"); goog.require("goog.asserts"); goog.require("ol.Size"); goog.require("ol.TileCoord"); ol.TileRange = function(minX, maxX, minY, maxY) { this.minX = minX; this.maxX = maxX; this.minY = minY; this.maxY = maxY }; ol.TileRange.boundingTileRange = function(var_args) { var tileCoord0 = (arguments[0]); var tileRange = new ol.TileRange(tileCoord0.x, tileCoord0.x, tileCoord0.y, tileCoord0.y); var i, ii, tileCoord; for(i = 1, ii = arguments.length;i < ii;++i) { tileCoord = (arguments[i]); goog.asserts.assert(tileCoord.z == tileCoord0.z); tileRange.minX = Math.min(tileRange.minX, tileCoord.x); tileRange.maxX = Math.max(tileRange.maxX, tileCoord.x); tileRange.minY = Math.min(tileRange.minY, tileCoord.y); tileRange.maxY = Math.max(tileRange.maxY, tileCoord.y) } return tileRange }; ol.TileRange.createOrUpdate = function(minX, maxX, minY, maxY, tileRange) { if(goog.isDef(tileRange)) { tileRange.minX = minX; tileRange.maxX = maxX; tileRange.minY = minY; tileRange.maxY = maxY; return tileRange }else { return new ol.TileRange(minX, maxX, minY, maxY) } }; ol.TileRange.prototype.contains = function(tileCoord) { return this.minX <= tileCoord.x && tileCoord.x <= this.maxX && this.minY <= tileCoord.y && tileCoord.y <= this.maxY }; ol.TileRange.prototype.containsTileRange = function(tileRange) { return this.minX <= tileRange.minX && tileRange.maxX <= this.maxX && this.minY <= tileRange.minY && tileRange.maxY <= this.maxY }; ol.TileRange.prototype.equals = function(tileRange) { return this.minX == tileRange.minX && this.minY == tileRange.minY && this.maxX == tileRange.maxX && this.maxY == tileRange.maxY }; ol.TileRange.prototype.extend = function(tileRange) { if(tileRange.minX < this.minX) { this.minX = tileRange.minX } if(tileRange.maxX > this.maxX) { this.maxX = tileRange.maxX } if(tileRange.minY < this.minY) { this.minY = tileRange.minY } if(tileRange.maxY > this.maxY) { this.maxY = tileRange.maxY } }; ol.TileRange.prototype.getHeight = function() { return this.maxY - this.minY + 1 }; ol.TileRange.prototype.getSize = function() { return[this.getWidth(), this.getHeight()] }; ol.TileRange.prototype.getWidth = function() { return this.maxX - this.minX + 1 }; ol.TileRange.prototype.intersects = function(tileRange) { return this.minX <= tileRange.maxX && this.maxX >= tileRange.minX && this.minY <= tileRange.maxY && this.maxY >= tileRange.minY }; goog.provide("ol.Attribution"); goog.require("ol.TileRange"); ol.Attribution = function(options) { this.html_ = options.html; this.tileRanges_ = goog.isDef(options.tileRanges) ? options.tileRanges : null }; ol.Attribution.prototype.getHTML = function() { return this.html_ }; ol.Attribution.prototype.intersectsAnyTileRange = function(tileRanges) { if(goog.isNull(this.tileRanges_)) { return true } var i, ii, tileRange, z; for(z in tileRanges) { if(!(z in this.tileRanges_)) { continue } tileRange = tileRanges[z]; for(i = 0, ii = this.tileRanges_[z].length;i < ii;++i) { if(this.tileRanges_[z][i].intersects(tileRange)) { return true } } } return false }; goog.provide("goog.dom.BrowserFeature"); goog.require("goog.userAgent"); goog.dom.BrowserFeature = {CAN_ADD_NAME_OR_TYPE_ATTRIBUTES:!goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9), CAN_USE_CHILDREN_ATTRIBUTE:!goog.userAgent.GECKO && !goog.userAgent.IE || goog.userAgent.IE && goog.userAgent.isDocumentModeOrHigher(9) || goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher("1.9.1"), CAN_USE_INNER_TEXT:goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9"), CAN_USE_PARENT_ELEMENT_PROPERTY:goog.userAgent.IE || goog.userAgent.OPERA || goog.userAgent.WEBKIT, INNER_HTML_NEEDS_SCOPED_ELEMENT:goog.userAgent.IE}; goog.provide("goog.dom.TagName"); goog.dom.TagName = {A:"A", ABBR:"ABBR", ACRONYM:"ACRONYM", ADDRESS:"ADDRESS", APPLET:"APPLET", AREA:"AREA", ARTICLE:"ARTICLE", ASIDE:"ASIDE", AUDIO:"AUDIO", B:"B", BASE:"BASE", BASEFONT:"BASEFONT", BDI:"BDI", BDO:"BDO", BIG:"BIG", BLOCKQUOTE:"BLOCKQUOTE", BODY:"BODY", BR:"BR", BUTTON:"BUTTON", CANVAS:"CANVAS", CAPTION:"CAPTION", CENTER:"CENTER", CITE:"CITE", CODE:"CODE", COL:"COL", COLGROUP:"COLGROUP", COMMAND:"COMMAND", DATA:"DATA", DATALIST:"DATALIST", DD:"DD", DEL:"DEL", DETAILS:"DETAILS", DFN:"DFN", DIALOG:"DIALOG", DIR:"DIR", DIV:"DIV", DL:"DL", DT:"DT", EM:"EM", EMBED:"EMBED", FIELDSET:"FIELDSET", FIGCAPTION:"FIGCAPTION", FIGURE:"FIGURE", FONT:"FONT", FOOTER:"FOOTER", FORM:"FORM", FRAME:"FRAME", FRAMESET:"FRAMESET", H1:"H1", H2:"H2", H3:"H3", H4:"H4", H5:"H5", H6:"H6", HEAD:"HEAD", HEADER:"HEADER", HGROUP:"HGROUP", HR:"HR", HTML:"HTML", I:"I", IFRAME:"IFRAME", IMG:"IMG", INPUT:"INPUT", INS:"INS", ISINDEX:"ISINDEX", KBD:"KBD", KEYGEN:"KEYGEN", LABEL:"LABEL", LEGEND:"LEGEND", LI:"LI", LINK:"LINK", MAP:"MAP", MARK:"MARK", MATH:"MATH", MENU:"MENU", META:"META", METER:"METER", NAV:"NAV", NOFRAMES:"NOFRAMES", NOSCRIPT:"NOSCRIPT", OBJECT:"OBJECT", OL:"OL", OPTGROUP:"OPTGROUP", OPTION:"OPTION", OUTPUT:"OUTPUT", P:"P", PARAM:"PARAM", PRE:"PRE", PROGRESS:"PROGRESS", Q:"Q", RP:"RP", RT:"RT", RUBY:"RUBY", S:"S", SAMP:"SAMP", SCRIPT:"SCRIPT", SECTION:"SECTION", SELECT:"SELECT", SMALL:"SMALL", SOURCE:"SOURCE", SPAN:"SPAN", STRIKE:"STRIKE", STRONG:"STRONG", STYLE:"STYLE", SUB:"SUB", SUMMARY:"SUMMARY", SUP:"SUP", SVG:"SVG", TABLE:"TABLE", TBODY:"TBODY", TD:"TD", TEXTAREA:"TEXTAREA", TFOOT:"TFOOT", TH:"TH", THEAD:"THEAD", TIME:"TIME", TITLE:"TITLE", TR:"TR", TRACK:"TRACK", TT:"TT", U:"U", UL:"UL", VAR:"VAR", VIDEO:"VIDEO", WBR:"WBR"}; goog.provide("goog.dom.classes"); goog.require("goog.array"); goog.dom.classes.set = function(element, className) { element.className = className }; goog.dom.classes.get = function(element) { var className = element.className; return goog.isString(className) && className.match(/\S+/g) || [] }; goog.dom.classes.add = function(element, var_args) { var classes = goog.dom.classes.get(element); var args = goog.array.slice(arguments, 1); var expectedCount = classes.length + args.length; goog.dom.classes.add_(classes, args); goog.dom.classes.set(element, classes.join(" ")); return classes.length == expectedCount }; goog.dom.classes.remove = function(element, var_args) { var classes = goog.dom.classes.get(element); var args = goog.array.slice(arguments, 1); var newClasses = goog.dom.classes.getDifference_(classes, args); goog.dom.classes.set(element, newClasses.join(" ")); return newClasses.length == classes.length - args.length }; goog.dom.classes.add_ = function(classes, args) { for(var i = 0;i < args.length;i++) { if(!goog.array.contains(classes, args[i])) { classes.push(args[i]) } } }; goog.dom.classes.getDifference_ = function(arr1, arr2) { return goog.array.filter(arr1, function(item) { return!goog.array.contains(arr2, item) }) }; goog.dom.classes.swap = function(element, fromClass, toClass) { var classes = goog.dom.classes.get(element); var removed = false; for(var i = 0;i < classes.length;i++) { if(classes[i] == fromClass) { goog.array.splice(classes, i--, 1); removed = true } } if(removed) { classes.push(toClass); goog.dom.classes.set(element, classes.join(" ")) } return removed }; goog.dom.classes.addRemove = function(element, classesToRemove, classesToAdd) { var classes = goog.dom.classes.get(element); if(goog.isString(classesToRemove)) { goog.array.remove(classes, classesToRemove) }else { if(goog.isArray(classesToRemove)) { classes = goog.dom.classes.getDifference_(classes, classesToRemove) } } if(goog.isString(classesToAdd) && !goog.array.contains(classes, classesToAdd)) { classes.push(classesToAdd) }else { if(goog.isArray(classesToAdd)) { goog.dom.classes.add_(classes, classesToAdd) } } goog.dom.classes.set(element, classes.join(" ")) }; goog.dom.classes.has = function(element, className) { return goog.array.contains(goog.dom.classes.get(element), className) }; goog.dom.classes.enable = function(element, className, enabled) { if(enabled) { goog.dom.classes.add(element, className) }else { goog.dom.classes.remove(element, className) } }; goog.dom.classes.toggle = function(element, className) { var add = !goog.dom.classes.has(element, className); goog.dom.classes.enable(element, className, add); return add }; goog.provide("goog.math"); goog.require("goog.array"); goog.require("goog.asserts"); goog.math.randomInt = function(a) { return Math.floor(Math.random() * a) }; goog.math.uniformRandom = function(a, b) { return a + Math.random() * (b - a) }; goog.math.clamp = function(value, min, max) { return Math.min(Math.max(value, min), max) }; goog.math.modulo = function(a, b) { var r = a % b; return r * b < 0 ? r + b : r }; goog.math.lerp = function(a, b, x) { return a + x * (b - a) }; goog.math.nearlyEquals = function(a, b, opt_tolerance) { return Math.abs(a - b) <= (opt_tolerance || 1E-6) }; goog.math.standardAngle = function(angle) { return goog.math.modulo(angle, 360) }; goog.math.toRadians = function(angleDegrees) { return angleDegrees * Math.PI / 180 }; goog.math.toDegrees = function(angleRadians) { return angleRadians * 180 / Math.PI }; goog.math.angleDx = function(degrees, radius) { return radius * Math.cos(goog.math.toRadians(degrees)) }; goog.math.angleDy = function(degrees, radius) { return radius * Math.sin(goog.math.toRadians(degrees)) }; goog.math.angle = function(x1, y1, x2, y2) { return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(y2 - y1, x2 - x1))) }; goog.math.angleDifference = function(startAngle, endAngle) { var d = goog.math.standardAngle(endAngle) - goog.math.standardAngle(startAngle); if(d > 180) { d = d - 360 }else { if(d <= -180) { d = 360 + d } } return d }; goog.math.sign = function(x) { return x == 0 ? 0 : x < 0 ? -1 : 1 }; goog.math.longestCommonSubsequence = function(array1, array2, opt_compareFn, opt_collectorFn) { var compare = opt_compareFn || function(a, b) { return a == b }; var collect = opt_collectorFn || function(i1, i2) { return array1[i1] }; var length1 = array1.length; var length2 = array2.length; var arr = []; for(var i = 0;i < length1 + 1;i++) { arr[i] = []; arr[i][0] = 0 } for(var j = 0;j < length2 + 1;j++) { arr[0][j] = 0 } for(i = 1;i <= length1;i++) { for(j = 1;j <= length2;j++) { if(compare(array1[i - 1], array2[j - 1])) { arr[i][j] = arr[i - 1][j - 1] + 1 }else { arr[i][j] = Math.max(arr[i - 1][j], arr[i][j - 1]) } } } var result = []; var i = length1, j = length2; while(i > 0 && j > 0) { if(compare(array1[i - 1], array2[j - 1])) { result.unshift(collect(i - 1, j - 1)); i--; j-- }else { if(arr[i - 1][j] > arr[i][j - 1]) { i-- }else { j-- } } } return result }; goog.math.sum = function(var_args) { return(goog.array.reduce(arguments, function(sum, value) { return sum + value }, 0)) }; goog.math.average = function(var_args) { return goog.math.sum.apply(null, arguments) / arguments.length }; goog.math.standardDeviation = function(var_args) { var sampleSize = arguments.length; if(sampleSize < 2) { return 0 } var mean = goog.math.average.apply(null, arguments); var variance = goog.math.sum.apply(null, goog.array.map(arguments, function(val) { return Math.pow(val - mean, 2) })) / (sampleSize - 1); return Math.sqrt(variance) }; goog.math.isInt = function(num) { return isFinite(num) && num % 1 == 0 }; goog.math.isFiniteNumber = function(num) { return isFinite(num) && !isNaN(num) }; goog.math.safeFloor = function(num, opt_epsilon) { goog.asserts.assert(!goog.isDef(opt_epsilon) || opt_epsilon > 0); return Math.floor(num + (opt_epsilon || 2E-15)) }; goog.math.safeCeil = function(num, opt_epsilon) { goog.asserts.assert(!goog.isDef(opt_epsilon) || opt_epsilon > 0); return Math.ceil(num - (opt_epsilon || 2E-15)) }; goog.provide("goog.math.Coordinate"); goog.require("goog.math"); goog.math.Coordinate = function(opt_x, opt_y) { this.x = goog.isDef(opt_x) ? opt_x : 0; this.y = goog.isDef(opt_y) ? opt_y : 0 }; goog.math.Coordinate.prototype.clone = function() { return new goog.math.Coordinate(this.x, this.y) }; if(goog.DEBUG) { goog.math.Coordinate.prototype.toString = function() { return"(" + this.x + ", " + this.y + ")" } } goog.math.Coordinate.equals = function(a, b) { if(a == b) { return true } if(!a || !b) { return false } return a.x == b.x && a.y == b.y }; goog.math.Coordinate.distance = function(a, b) { var dx = a.x - b.x; var dy = a.y - b.y; return Math.sqrt(dx * dx + dy * dy) }; goog.math.Coordinate.magnitude = function(a) { return Math.sqrt(a.x * a.x + a.y * a.y) }; goog.math.Coordinate.azimuth = function(a) { return goog.math.angle(0, 0, a.x, a.y) }; goog.math.Coordinate.squaredDistance = function(a, b) { var dx = a.x - b.x; var dy = a.y - b.y; return dx * dx + dy * dy }; goog.math.Coordinate.difference = function(a, b) { return new goog.math.Coordinate(a.x - b.x, a.y - b.y) }; goog.math.Coordinate.sum = function(a, b) { return new goog.math.Coordinate(a.x + b.x, a.y + b.y) }; goog.math.Coordinate.prototype.ceil = function() { this.x = Math.ceil(this.x); this.y = Math.ceil(this.y); return this }; goog.math.Coordinate.prototype.floor = function() { this.x = Math.floor(this.x); this.y = Math.floor(this.y); return this }; goog.math.Coordinate.prototype.round = function() { this.x = Math.round(this.x); this.y = Math.round(this.y); return this }; goog.math.Coordinate.prototype.translate = function(tx, opt_ty) { if(tx instanceof goog.math.Coordinate) { this.x += tx.x; this.y += tx.y }else { this.x += tx; if(goog.isNumber(opt_ty)) { this.y += opt_ty } } return this }; goog.math.Coordinate.prototype.scale = function(sx, opt_sy) { var sy = goog.isNumber(opt_sy) ? opt_sy : sx; this.x *= sx; this.y *= sy; return this }; goog.provide("goog.math.Size"); goog.math.Size = function(width, height) { this.width = width; this.height = height }; goog.math.Size.equals = function(a, b) { if(a == b) { return true } if(!a || !b) { return false } return a.width == b.width && a.height == b.height }; goog.math.Size.prototype.clone = function() { return new goog.math.Size(this.width, this.height) }; if(goog.DEBUG) { goog.math.Size.prototype.toString = function() { return"(" + this.width + " x " + this.height + ")" } } goog.math.Size.prototype.getLongest = function() { return Math.max(this.width, this.height) }; goog.math.Size.prototype.getShortest = function() { return Math.min(this.width, this.height) }; goog.math.Size.prototype.area = function() { return this.width * this.height }; goog.math.Size.prototype.perimeter = function() { return(this.width + this.height) * 2 }; goog.math.Size.prototype.aspectRatio = function() { return this.width / this.height }; goog.math.Size.prototype.isEmpty = function() { return!this.area() }; goog.math.Size.prototype.ceil = function() { this.width = Math.ceil(this.width); this.height = Math.ceil(this.height); return this }; goog.math.Size.prototype.fitsInside = function(target) { return this.width <= target.width && this.height <= target.height }; goog.math.Size.prototype.floor = function() { this.width = Math.floor(this.width); this.height = Math.floor(this.height); return this }; goog.math.Size.prototype.round = function() { this.width = Math.round(this.width); this.height = Math.round(this.height); return this }; goog.math.Size.prototype.scale = function(sx, opt_sy) { var sy = goog.isNumber(opt_sy) ? opt_sy : sx; this.width *= sx; this.height *= sy; return this }; goog.math.Size.prototype.scaleToFit = function(target) { var s = this.aspectRatio() > target.aspectRatio() ? target.width / this.width : target.height / this.height; return this.scale(s) }; goog.provide("goog.object"); goog.object.forEach = function(obj, f, opt_obj) { for(var key in obj) { f.call(opt_obj, obj[key], key, obj) } }; goog.object.filter = function(obj, f, opt_obj) { var res = {}; for(var key in obj) { if(f.call(opt_obj, obj[key], key, obj)) { res[key] = obj[key] } } return res }; goog.object.map = function(obj, f, opt_obj) { var res = {}; for(var key in obj) { res[key] = f.call(opt_obj, obj[key], key, obj) } return res }; goog.object.some = function(obj, f, opt_obj) { for(var key in obj) { if(f.call(opt_obj, obj[key], key, obj)) { return true } } return false }; goog.object.every = function(obj, f, opt_obj) { for(var key in obj) { if(!f.call(opt_obj, obj[key], key, obj)) { return false } } return true }; goog.object.getCount = function(obj) { var rv = 0; for(var key in obj) { rv++ } return rv }; goog.object.getAnyKey = function(obj) { for(var key in obj) { return key } }; goog.object.getAnyValue = function(obj) { for(var key in obj) { return obj[key] } }; goog.object.contains = function(obj, val) { return goog.object.containsValue(obj, val) }; goog.object.getValues = function(obj) { var res = []; var i = 0; for(var key in obj) { res[i++] = obj[key] } return res }; goog.object.getKeys = function(obj) { var res = []; var i = 0; for(var key in obj) { res[i++] = key } return res }; goog.object.getValueByKeys = function(obj, var_args) { var isArrayLike = goog.isArrayLike(var_args); var keys = isArrayLike ? var_args : arguments; for(var i = isArrayLike ? 0 : 1;i < keys.length;i++) { obj = obj[keys[i]]; if(!goog.isDef(obj)) { break } } return obj }; goog.object.containsKey = function(obj, key) { return key in obj }; goog.object.containsValue = function(obj, val) { for(var key in obj) { if(obj[key] == val) { return true } } return false }; goog.object.findKey = function(obj, f, opt_this) { for(var key in obj) { if(f.call(opt_this, obj[key], key, obj)) { return key } } return undefined }; goog.object.findValue = function(obj, f, opt_this) { var key = goog.object.findKey(obj, f, opt_this); return key && obj[key] }; goog.object.isEmpty = function(obj) { for(var key in obj) { return false } return true }; goog.object.clear = function(obj) { for(var i in obj) { delete obj[i] } }; goog.object.remove = function(obj, key) { var rv; if(rv = key in obj) { delete obj[key] } return rv }; goog.object.add = function(obj, key, val) { if(key in obj) { throw Error('The object already contains the key "' + key + '"'); } goog.object.set(obj, key, val) }; goog.object.get = function(obj, key, opt_val) { if(key in obj) { return obj[key] } return opt_val }; goog.object.set = function(obj, key, value) { obj[key] = value }; goog.object.setIfUndefined = function(obj, key, value) { return key in obj ? obj[key] : obj[key] = value }; goog.object.clone = function(obj) { var res = {}; for(var key in obj) { res[key] = obj[key] } return res }; goog.object.unsafeClone = function(obj) { var type = goog.typeOf(obj); if(type == "object" || type == "array") { if(obj.clone) { return obj.clone() } var clone = type == "array" ? [] : {}; for(var key in obj) { clone[key] = goog.object.unsafeClone(obj[key]) } return clone } return obj }; goog.object.transpose = function(obj) { var transposed = {}; for(var key in obj) { transposed[obj[key]] = key } return transposed }; goog.object.PROTOTYPE_FIELDS_ = ["constructor", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"]; goog.object.extend = function(target, var_args) { var key, source; for(var i = 1;i < arguments.length;i++) { source = arguments[i]; for(key in source) { target[key] = source[key] } for(var j = 0;j < goog.object.PROTOTYPE_FIELDS_.length;j++) { key = goog.object.PROTOTYPE_FIELDS_[j]; if(Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key] } } } }; goog.object.create = function(var_args) { var argLength = arguments.length; if(argLength == 1 && goog.isArray(arguments[0])) { return goog.object.create.apply(null, arguments[0]) } if(argLength % 2) { throw Error("Uneven number of arguments"); } var rv = {}; for(var i = 0;i < argLength;i += 2) { rv[arguments[i]] = arguments[i + 1] } return rv }; goog.object.createSet = function(var_args) { var argLength = arguments.length; if(argLength == 1 && goog.isArray(arguments[0])) { return goog.object.createSet.apply(null, arguments[0]) } var rv = {}; for(var i = 0;i < argLength;i++) { rv[arguments[i]] = true } return rv }; goog.object.createImmutableView = function(obj) { var result = obj; if(Object.isFrozen && !Object.isFrozen(obj)) { result = Object.create(obj); Object.freeze(result) } return result }; goog.object.isImmutableView = function(obj) { return!!Object.isFrozen && Object.isFrozen(obj) }; goog.provide("goog.dom"); goog.provide("goog.dom.Appendable"); goog.provide("goog.dom.DomHelper"); goog.provide("goog.dom.NodeType"); goog.require("goog.array"); goog.require("goog.dom.BrowserFeature"); goog.require("goog.dom.TagName"); goog.require("goog.dom.classes"); goog.require("goog.math.Coordinate"); goog.require("goog.math.Size"); goog.require("goog.object"); goog.require("goog.string"); goog.require("goog.userAgent"); goog.define("goog.dom.ASSUME_QUIRKS_MODE", false); goog.define("goog.dom.ASSUME_STANDARDS_MODE", false); goog.dom.COMPAT_MODE_KNOWN_ = goog.dom.ASSUME_QUIRKS_MODE || goog.dom.ASSUME_STANDARDS_MODE; goog.dom.NodeType = {ELEMENT:1, ATTRIBUTE:2, TEXT:3, CDATA_SECTION:4, ENTITY_REFERENCE:5, ENTITY:6, PROCESSING_INSTRUCTION:7, COMMENT:8, DOCUMENT:9, DOCUMENT_TYPE:10, DOCUMENT_FRAGMENT:11, NOTATION:12}; goog.dom.getDomHelper = function(opt_element) { return opt_element ? new goog.dom.DomHelper(goog.dom.getOwnerDocument(opt_element)) : goog.dom.defaultDomHelper_ || (goog.dom.defaultDomHelper_ = new goog.dom.DomHelper) }; goog.dom.defaultDomHelper_; goog.dom.getDocument = function() { return document }; goog.dom.getElement = function(element) { return goog.isString(element) ? document.getElementById(element) : element }; goog.dom.$ = goog.dom.getElement; goog.dom.getElementsByTagNameAndClass = function(opt_tag, opt_class, opt_el) { return goog.dom.getElementsByTagNameAndClass_(document, opt_tag, opt_class, opt_el) }; goog.dom.getElementsByClass = function(className, opt_el) { var parent = opt_el || document; if(goog.dom.canUseQuerySelector_(parent)) { return parent.querySelectorAll("." + className) }else { if(parent.getElementsByClassName) { return parent.getElementsByClassName(className) } } return goog.dom.getElementsByTagNameAndClass_(document, "*", className, opt_el) }; goog.dom.getElementByClass = function(className, opt_el) { var parent = opt_el || document; var retVal = null; if(goog.dom.canUseQuerySelector_(parent)) { retVal = parent.querySelector("." + className) }else { retVal = goog.dom.getElementsByClass(className, opt_el)[0] } return retVal || null }; goog.dom.canUseQuerySelector_ = function(parent) { return!!(parent.querySelectorAll && parent.querySelector) }; goog.dom.getElementsByTagNameAndClass_ = function(doc, opt_tag, opt_class, opt_el) { var parent = opt_el || doc; var tagName = opt_tag && opt_tag != "*" ? opt_tag.toUpperCase() : ""; if(goog.dom.canUseQuerySelector_(parent) && (tagName || opt_class)) { var query = tagName + (opt_class ? "." + opt_class : ""); return parent.querySelectorAll(query) } if(opt_class && parent.getElementsByClassName) { var els = parent.getElementsByClassName(opt_class); if(tagName) { var arrayLike = {}; var len = 0; for(var i = 0, el;el = els[i];i++) { if(tagName == el.nodeName) { arrayLike[len++] = el } } arrayLike.length = len; return arrayLike }else { return els } } var els = parent.getElementsByTagName(tagName || "*"); if(opt_class) { var arrayLike = {}; var len = 0; for(var i = 0, el;el = els[i];i++) { var className = el.className; if(typeof className.split == "function" && goog.array.contains(className.split(/\s+/), opt_class)) { arrayLike[len++] = el } } arrayLike.length = len; return arrayLike }else { return els } }; goog.dom.$$ = goog.dom.getElementsByTagNameAndClass; goog.dom.setProperties = function(element, properties) { goog.object.forEach(properties, function(val, key) { if(key == "style") { element.style.cssText = val }else { if(key == "class") { element.className = val }else { if(key == "for") { element.htmlFor = val }else { if(key in goog.dom.DIRECT_ATTRIBUTE_MAP_) { element.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[key], val) }else { if(goog.string.startsWith(key, "aria-") || goog.string.startsWith(key, "data-")) { element.setAttribute(key, val) }else { element[key] = val } } } } } }) }; goog.dom.DIRECT_ATTRIBUTE_MAP_ = {"cellpadding":"cellPadding", "cellspacing":"cellSpacing", "colspan":"colSpan", "frameborder":"frameBorder", "height":"height", "maxlength":"maxLength", "role":"role", "rowspan":"rowSpan", "type":"type", "usemap":"useMap", "valign":"vAlign", "width":"width"}; goog.dom.getViewportSize = function(opt_window) { return goog.dom.getViewportSize_(opt_window || window) }; goog.dom.getViewportSize_ = function(win) { var doc = win.document; var el = goog.dom.isCss1CompatMode_(doc) ? doc.documentElement : doc.body; return new goog.math.Size(el.clientWidth, el.clientHeight) }; goog.dom.getDocumentHeight = function() { return goog.dom.getDocumentHeight_(window) }; goog.dom.getDocumentHeight_ = function(win) { var doc = win.document; var height = 0; if(doc) { var vh = goog.dom.getViewportSize_(win).height; var body = doc.body; var docEl = doc.documentElement; if(goog.dom.isCss1CompatMode_(doc) && docEl.scrollHeight) { height = docEl.scrollHeight != vh ? docEl.scrollHeight : docEl.offsetHeight }else { var sh = docEl.scrollHeight; var oh = docEl.offsetHeight; if(docEl.clientHeight != oh) { sh = body.scrollHeight; oh = body.offsetHeight } if(sh > vh) { height = sh > oh ? sh : oh }else { height = sh < oh ? sh : oh } } } return height }; goog.dom.getPageScroll = function(opt_window) { var win = opt_window || goog.global || window; return goog.dom.getDomHelper(win.document).getDocumentScroll() }; goog.dom.getDocumentScroll = function() { return goog.dom.getDocumentScroll_(document) }; goog.dom.getDocumentScroll_ = function(doc) { var el = goog.dom.getDocumentScrollElement_(doc); var win = goog.dom.getWindow_(doc); if(goog.userAgent.IE && goog.userAgent.isVersionOrHigher("10") && win.pageYOffset != el.scrollTop) { return new goog.math.Coordinate(el.scrollLeft, el.scrollTop) } return new goog.math.Coordinate(win.pageXOffset || el.scrollLeft, win.pageYOffset || el.scrollTop) }; goog.dom.getDocumentScrollElement = function() { return goog.dom.getDocumentScrollElement_(document) }; goog.dom.getDocumentScrollElement_ = function(doc) { return!goog.userAgent.WEBKIT && goog.dom.isCss1CompatMode_(doc) ? doc.documentElement : doc.body }; goog.dom.getWindow = function(opt_doc) { return opt_doc ? goog.dom.getWindow_(opt_doc) : window }; goog.dom.getWindow_ = function(doc) { return doc.parentWindow || doc.defaultView }; goog.dom.createDom = function(tagName, opt_attributes, var_args) { return goog.dom.createDom_(document, arguments) }; goog.dom.createDom_ = function(doc, args) { var tagName = args[0]; var attributes = args[1]; if(!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES && attributes && (attributes.name || attributes.type)) { var tagNameArr = ["\x3c", tagName]; if(attributes.name) { tagNameArr.push(' name\x3d"', goog.string.htmlEscape(attributes.name), '"') } if(attributes.type) { tagNameArr.push(' type\x3d"', goog.string.htmlEscape(attributes.type), '"'); var clone = {}; goog.object.extend(clone, attributes); delete clone["type"]; attributes = clone } tagNameArr.push("\x3e"); tagName = tagNameArr.join("") } var element = doc.createElement(tagName); if(attributes) { if(goog.isString(attributes)) { element.className = attributes }else { if(goog.isArray(attributes)) { goog.dom.classes.add.apply(null, [element].concat(attributes)) }else { goog.dom.setProperties(element, attributes) } } } if(args.length > 2) { goog.dom.append_(doc, element, args, 2) } return element }; goog.dom.append_ = function(doc, parent, args, startIndex) { function childHandler(child) { if(child) { parent.appendChild(goog.isString(child) ? doc.createTextNode(child) : child) } } for(var i = startIndex;i < args.length;i++) { var arg = args[i]; if(goog.isArrayLike(arg) && !goog.dom.isNodeLike(arg)) { goog.array.forEach(goog.dom.isNodeList(arg) ? goog.array.toArray(arg) : arg, childHandler) }else { childHandler(arg) } } }; goog.dom.$dom = goog.dom.createDom; goog.dom.createElement = function(name) { return document.createElement(name) }; goog.dom.createTextNode = function(content) { return document.createTextNode(String(content)) }; goog.dom.createTable = function(rows, columns, opt_fillWithNbsp) { return goog.dom.createTable_(document, rows, columns, !!opt_fillWithNbsp) }; goog.dom.createTable_ = function(doc, rows, columns, fillWithNbsp) { var rowHtml = ["\x3ctr\x3e"]; for(var i = 0;i < columns;i++) { rowHtml.push(fillWithNbsp ? "\x3ctd\x3e\x26nbsp;\x3c/td\x3e" : "\x3ctd\x3e\x3c/td\x3e") } rowHtml.push("\x3c/tr\x3e"); rowHtml = rowHtml.join(""); var totalHtml = ["\x3ctable\x3e"]; for(i = 0;i < rows;i++) { totalHtml.push(rowHtml) } totalHtml.push("\x3c/table\x3e"); var elem = doc.createElement(goog.dom.TagName.DIV); elem.innerHTML = totalHtml.join(""); return(elem.removeChild(elem.firstChild)) }; goog.dom.htmlToDocumentFragment = function(htmlString) { return goog.dom.htmlToDocumentFragment_(document, htmlString) }; goog.dom.htmlToDocumentFragment_ = function(doc, htmlString) { var tempDiv = doc.createElement("div"); if(goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT) { tempDiv.innerHTML = "\x3cbr\x3e" + htmlString; tempDiv.removeChild(tempDiv.firstChild) }else { tempDiv.innerHTML = htmlString } if(tempDiv.childNodes.length == 1) { return(tempDiv.removeChild(tempDiv.firstChild)) }else { var fragment = doc.createDocumentFragment(); while(tempDiv.firstChild) { fragment.appendChild(tempDiv.firstChild) } return fragment } }; goog.dom.getCompatMode = function() { return goog.dom.isCss1CompatMode() ? "CSS1Compat" : "BackCompat" }; goog.dom.isCss1CompatMode = function() { return goog.dom.isCss1CompatMode_(document) }; goog.dom.isCss1CompatMode_ = function(doc) { if(goog.dom.COMPAT_MODE_KNOWN_) { return goog.dom.ASSUME_STANDARDS_MODE } return doc.compatMode == "CSS1Compat" }; goog.dom.canHaveChildren = function(node) { if(node.nodeType != goog.dom.NodeType.ELEMENT) { return false } switch(node.tagName) { case goog.dom.TagName.APPLET: ; case goog.dom.TagName.AREA: ; case goog.dom.TagName.BASE: ; case goog.dom.TagName.BR: ; case goog.dom.TagName.COL: ; case goog.dom.TagName.COMMAND: ; case goog.dom.TagName.EMBED: ; case goog.dom.TagName.FRAME: ; case goog.dom.TagName.HR: ; case goog.dom.TagName.IMG: ; case goog.dom.TagName.INPUT: ; case goog.dom.TagName.IFRAME: ; case goog.dom.TagName.ISINDEX: ; case goog.dom.TagName.KEYGEN: ; case goog.dom.TagName.LINK: ; case goog.dom.TagName.NOFRAMES: ; case goog.dom.TagName.NOSCRIPT: ; case goog.dom.TagName.META: ; case goog.dom.TagName.OBJECT: ; case goog.dom.TagName.PARAM: ; case goog.dom.TagName.SCRIPT: ; case goog.dom.TagName.SOURCE: ; case goog.dom.TagName.STYLE: ; case goog.dom.TagName.TRACK: ; case goog.dom.TagName.WBR: return false } return true }; goog.dom.appendChild = function(parent, child) { parent.appendChild(child) }; goog.dom.append = function(parent, var_args) { goog.dom.append_(goog.dom.getOwnerDocument(parent), parent, arguments, 1) }; goog.dom.removeChildren = function(node) { var child; while(child = node.firstChild) { node.removeChild(child) } }; goog.dom.insertSiblingBefore = function(newNode, refNode) { if(refNode.parentNode) { refNode.parentNode.insertBefore(newNode, refNode) } }; goog.dom.insertSiblingAfter = function(newNode, refNode) { if(refNode.parentNode) { refNode.parentNode.insertBefore(newNode, refNode.nextSibling) } }; goog.dom.insertChildAt = function(parent, child, index) { parent.insertBefore(child, parent.childNodes[index] || null) }; goog.dom.removeNode = function(node) { return node && node.parentNode ? node.parentNode.removeChild(node) : null }; goog.dom.replaceNode = function(newNode, oldNode) { var parent = oldNode.parentNode; if(parent) { parent.replaceChild(newNode, oldNode) } }; goog.dom.flattenElement = function(element) { var child, parent = element.parentNode; if(parent && parent.nodeType != goog.dom.NodeType.DOCUMENT_FRAGMENT) { if(element.removeNode) { return(element.removeNode(false)) }else { while(child = element.firstChild) { parent.insertBefore(child, element) } return(goog.dom.removeNode(element)) } } }; goog.dom.getChildren = function(element) { if(goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE && element.children != undefined) { return element.children } return goog.array.filter(element.childNodes, function(node) { return node.nodeType == goog.dom.NodeType.ELEMENT }) }; goog.dom.getFirstElementChild = function(node) { if(node.firstElementChild != undefined) { return(node).firstElementChild } return goog.dom.getNextElementNode_(node.firstChild, true) }; goog.dom.getLastElementChild = function(node) { if(node.lastElementChild != undefined) { return(node).lastElementChild } return goog.dom.getNextElementNode_(node.lastChild, false) }; goog.dom.getNextElementSibling = function(node) { if(node.nextElementSibling != undefined) { return(node).nextElementSibling } return goog.dom.getNextElementNode_(node.nextSibling, true) }; goog.dom.getPreviousElementSibling = function(node) { if(node.previousElementSibling != undefined) { return(node).previousElementSibling } return goog.dom.getNextElementNode_(node.previousSibling, false) }; goog.dom.getNextElementNode_ = function(node, forward) { while(node && node.nodeType != goog.dom.NodeType.ELEMENT) { node = forward ? node.nextSibling : node.previousSibling } return(node) }; goog.dom.getNextNode = function(node) { if(!node) { return null } if(node.firstChild) { return node.firstChild } while(node && !node.nextSibling) { node = node.parentNode } return node ? node.nextSibling : null }; goog.dom.getPreviousNode = function(node) { if(!node) { return null } if(!node.previousSibling) { return node.parentNode } node = node.previousSibling; while(node && node.lastChild) { node = node.lastChild } return node }; goog.dom.isNodeLike = function(obj) { return goog.isObject(obj) && obj.nodeType > 0 }; goog.dom.isElement = function(obj) { return goog.isObject(obj) && obj.nodeType == goog.dom.NodeType.ELEMENT }; goog.dom.isWindow = function(obj) { return goog.isObject(obj) && obj["window"] == obj }; goog.dom.getParentElement = function(element) { if(goog.dom.BrowserFeature.CAN_USE_PARENT_ELEMENT_PROPERTY) { var isIe9 = goog.userAgent.IE && goog.userAgent.isVersionOrHigher("9") && !goog.userAgent.isVersionOrHigher("10"); if(!(isIe9 && goog.global["SVGElement"] && element instanceof goog.global["SVGElement"])) { return element.parentElement } } var parent = element.parentNode; return goog.dom.isElement(parent) ? (parent) : null }; goog.dom.contains = function(parent, descendant) { if(parent.contains && descendant.nodeType == goog.dom.NodeType.ELEMENT) { return parent == descendant || parent.contains(descendant) } if(typeof parent.compareDocumentPosition != "undefined") { return parent == descendant || Boolean(parent.compareDocumentPosition(descendant) & 16) } while(descendant && parent != descendant) { descendant = descendant.parentNode } return descendant == parent }; goog.dom.compareNodeOrder = function(node1, node2) { if(node1 == node2) { return 0 } if(node1.compareDocumentPosition) { return node1.compareDocumentPosition(node2) & 2 ? 1 : -1 } if(goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)) { if(node1.nodeType == goog.dom.NodeType.DOCUMENT) { return-1 } if(node2.nodeType == goog.dom.NodeType.DOCUMENT) { return 1 } } if("sourceIndex" in node1 || node1.parentNode && "sourceIndex" in node1.parentNode) { var isElement1 = node1.nodeType == goog.dom.NodeType.ELEMENT; var isElement2 = node2.nodeType == goog.dom.NodeType.ELEMENT; if(isElement1 && isElement2) { return node1.sourceIndex - node2.sourceIndex }else { var parent1 = node1.parentNode; var parent2 = node2.parentNode; if(parent1 == parent2) { return goog.dom.compareSiblingOrder_(node1, node2) } if(!isElement1 && goog.dom.contains(parent1, node2)) { return-1 * goog.dom.compareParentsDescendantNodeIe_(node1, node2) } if(!isElement2 && goog.dom.contains(parent2, node1)) { return goog.dom.compareParentsDescendantNodeIe_(node2, node1) } return(isElement1 ? node1.sourceIndex : parent1.sourceIndex) - (isElement2 ? node2.sourceIndex : parent2.sourceIndex) } } var doc = goog.dom.getOwnerDocument(node1); var range1, range2; range1 = doc.createRange(); range1.selectNode(node1); range1.collapse(true); range2 = doc.createRange(); range2.selectNode(node2); range2.collapse(true); return range1.compareBoundaryPoints(goog.global["Range"].START_TO_END, range2) }; goog.dom.compareParentsDescendantNodeIe_ = function(textNode, node) { var parent = textNode.parentNode; if(parent == node) { return-1 } var sibling = node; while(sibling.parentNode != parent) { sibling = sibling.parentNode } return goog.dom.compareSiblingOrder_(sibling, textNode) }; goog.dom.compareSiblingOrder_ = function(node1, node2) { var s = node2; while(s = s.previousSibling) { if(s == node1) { return-1 } } return 1 }; goog.dom.findCommonAncestor = function(var_args) { var i, count = arguments.length; if(!count) { return null }else { if(count == 1) { return arguments[0] } } var paths = []; var minLength = Infinity; for(i = 0;i < count;i++) { var ancestors = []; var node = arguments[i]; while(node) { ancestors.unshift(node); node = node.parentNode } paths.push(ancestors); minLength = Math.min(minLength, ancestors.length) } var output = null; for(i = 0;i < minLength;i++) { var first = paths[0][i]; for(var j = 1;j < count;j++) { if(first != paths[j][i]) { return output } } output = first } return output }; goog.dom.getOwnerDocument = function(node) { return(node.nodeType == goog.dom.NodeType.DOCUMENT ? node : node.ownerDocument || node.document) }; goog.dom.getFrameContentDocument = function(frame) { var doc = frame.contentDocument || frame.contentWindow.document; return doc }; goog.dom.getFrameContentWindow = function(frame) { return frame.contentWindow || goog.dom.getWindow_(goog.dom.getFrameContentDocument(frame)) }; goog.dom.setTextContent = function(element, text) { if("textContent" in element) { element.textContent = text }else { if(element.firstChild && element.firstChild.nodeType == goog.dom.NodeType.TEXT) { while(element.lastChild != element.firstChild) { element.removeChild(element.lastChild) } element.firstChild.data = text }else { goog.dom.removeChildren(element); var doc = goog.dom.getOwnerDocument(element); element.appendChild(doc.createTextNode(String(text))) } } }; goog.dom.getOuterHtml = function(element) { if("outerHTML" in element) { return element.outerHTML }else { var doc = goog.dom.getOwnerDocument(element); var div = doc.createElement("div"); div.appendChild(element.cloneNode(true)); return div.innerHTML } }; goog.dom.findNode = function(root, p) { var rv = []; var found = goog.dom.findNodes_(root, p, rv, true); return found ? rv[0] : undefined }; goog.dom.findNodes = function(root, p) { var rv = []; goog.dom.findNodes_(root, p, rv, false); return rv }; goog.dom.findNodes_ = function(root, p, rv, findOne) { if(root != null) { var child = root.firstChild; while(child) { if(p(child)) { rv.push(child); if(findOne) { return true } } if(goog.dom.findNodes_(child, p, rv, findOne)) { return true } child = child.nextSibling } } return false }; goog.dom.TAGS_TO_IGNORE_ = {"SCRIPT":1, "STYLE":1, "HEAD":1, "IFRAME":1, "OBJECT":1}; goog.dom.PREDEFINED_TAG_VALUES_ = {"IMG":" ", "BR":"\n"}; goog.dom.isFocusableTabIndex = function(element) { var attrNode = element.getAttributeNode("tabindex"); if(attrNode && attrNode.specified) { var index = element.tabIndex; return goog.isNumber(index) && index >= 0 && index < 32768 } return false }; goog.dom.setFocusableTabIndex = function(element, enable) { if(enable) { element.tabIndex = 0 }else { element.tabIndex = -1; element.removeAttribute("tabIndex") } }; goog.dom.getTextContent = function(node) { var textContent; if(goog.dom.BrowserFeature.CAN_USE_INNER_TEXT && "innerText" in node) { textContent = goog.string.canonicalizeNewlines(node.innerText) }else { var buf = []; goog.dom.getTextContent_(node, buf, true); textContent = buf.join("") } textContent = textContent.replace(/ \xAD /g, " ").replace(/\xAD/g, ""); textContent = textContent.replace(/\u200B/g, ""); if(!goog.dom.BrowserFeature.CAN_USE_INNER_TEXT) { textContent = textContent.replace(/ +/g, " ") } if(textContent != " ") { textContent = textContent.replace(/^\s*/, "") } return textContent }; goog.dom.getRawTextContent = function(node) { var buf = []; goog.dom.getTextContent_(node, buf, false); return buf.join("") }; goog.dom.getTextContent_ = function(node, buf, normalizeWhitespace) { if(node.nodeName in goog.dom.TAGS_TO_IGNORE_) { }else { if(node.nodeType == goog.dom.NodeType.TEXT) { if(normalizeWhitespace) { buf.push(String(node.nodeValue).replace(/(\r\n|\r|\n)/g, "")) }else { buf.push(node.nodeValue) } }else { if(node.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) { buf.push(goog.dom.PREDEFINED_TAG_VALUES_[node.nodeName]) }else { var child = node.firstChild; while(child) { goog.dom.getTextContent_(child, buf, normalizeWhitespace); child = child.nextSibling } } } } }; goog.dom.getNodeTextLength = function(node) { return goog.dom.getTextContent(node).length }; goog.dom.getNodeTextOffset = function(node, opt_offsetParent) { var root = opt_offsetParent || goog.dom.getOwnerDocument(node).body; var buf = []; while(node && node != root) { var cur = node; while(cur = cur.previousSibling) { buf.unshift(goog.dom.getTextContent(cur)) } node = node.parentNode } return goog.string.trimLeft(buf.join("")).replace(/ +/g, " ").length }; goog.dom.getNodeAtOffset = function(parent, offset, opt_result) { var stack = [parent], pos = 0, cur = null; while(stack.length > 0 && pos < offset) { cur = stack.pop(); if(cur.nodeName in goog.dom.TAGS_TO_IGNORE_) { }else { if(cur.nodeType == goog.dom.NodeType.TEXT) { var text = cur.nodeValue.replace(/(\r\n|\r|\n)/g, "").replace(/ +/g, " "); pos += text.length }else { if(cur.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) { pos += goog.dom.PREDEFINED_TAG_VALUES_[cur.nodeName].length }else { for(var i = cur.childNodes.length - 1;i >= 0;i--) { stack.push(cur.childNodes[i]) } } } } } if(goog.isObject(opt_result)) { opt_result.remainder = cur ? cur.nodeValue.length + offset - pos - 1 : 0; opt_result.node = cur } return cur }; goog.dom.isNodeList = function(val) { if(val && typeof val.length == "number") { if(goog.isObject(val)) { return typeof val.item == "function" || typeof val.item == "string" }else { if(goog.isFunction(val)) { return typeof val.item == "function" } } } return false }; goog.dom.getAncestorByTagNameAndClass = function(element, opt_tag, opt_class) { if(!opt_tag && !opt_class) { return null } var tagName = opt_tag ? opt_tag.toUpperCase() : null; return(goog.dom.getAncestor(element, function(node) { return(!tagName || node.nodeName == tagName) && (!opt_class || goog.dom.classes.has(node, opt_class)) }, true)) }; goog.dom.getAncestorByClass = function(element, className) { return goog.dom.getAncestorByTagNameAndClass(element, null, className) }; goog.dom.getAncestor = function(element, matcher, opt_includeNode, opt_maxSearchSteps) { if(!opt_includeNode) { element = element.parentNode } var ignoreSearchSteps = opt_maxSearchSteps == null; var steps = 0; while(element && (ignoreSearchSteps || steps <= opt_maxSearchSteps)) { if(matcher(element)) { return element } element = element.parentNode; steps++ } return null }; goog.dom.getActiveElement = function(doc) { try { return doc && doc.activeElement }catch(e) { } return null }; goog.dom.DomHelper = function(opt_document) { this.document_ = opt_document || goog.global.document || document }; goog.dom.DomHelper.prototype.getDomHelper = goog.dom.getDomHelper; goog.dom.DomHelper.prototype.setDocument = function(document) { this.document_ = document }; goog.dom.DomHelper.prototype.getDocument = function() { return this.document_ }; goog.dom.DomHelper.prototype.getElement = function(element) { if(goog.isString(element)) { return this.document_.getElementById(element) }else { return element } }; goog.dom.DomHelper.prototype.$ = goog.dom.DomHelper.prototype.getElement; goog.dom.DomHelper.prototype.getElementsByTagNameAndClass = function(opt_tag, opt_class, opt_el) { return goog.dom.getElementsByTagNameAndClass_(this.document_, opt_tag, opt_class, opt_el) }; goog.dom.DomHelper.prototype.getElementsByClass = function(className, opt_el) { var doc = opt_el || this.document_; return goog.dom.getElementsByClass(className, doc) }; goog.dom.DomHelper.prototype.getElementByClass = function(className, opt_el) { var doc = opt_el || this.document_; return goog.dom.getElementByClass(className, doc) }; goog.dom.DomHelper.prototype.$$ = goog.dom.DomHelper.prototype.getElementsByTagNameAndClass; goog.dom.DomHelper.prototype.setProperties = goog.dom.setProperties; goog.dom.DomHelper.prototype.getViewportSize = function(opt_window) { return goog.dom.getViewportSize(opt_window || this.getWindow()) }; goog.dom.DomHelper.prototype.getDocumentHeight = function() { return goog.dom.getDocumentHeight_(this.getWindow()) }; goog.dom.Appendable; goog.dom.DomHelper.prototype.createDom = function(tagName, opt_attributes, var_args) { return goog.dom.createDom_(this.document_, arguments) }; goog.dom.DomHelper.prototype.$dom = goog.dom.DomHelper.prototype.createDom; goog.dom.DomHelper.prototype.createElement = function(name) { return this.document_.createElement(name) }; goog.dom.DomHelper.prototype.createTextNode = function(content) { return this.document_.createTextNode(String(content)) }; goog.dom.DomHelper.prototype.createTable = function(rows, columns, opt_fillWithNbsp) { return goog.dom.createTable_(this.document_, rows, columns, !!opt_fillWithNbsp) }; goog.dom.DomHelper.prototype.htmlToDocumentFragment = function(htmlString) { return goog.dom.htmlToDocumentFragment_(this.document_, htmlString) }; goog.dom.DomHelper.prototype.getCompatMode = function() { return this.isCss1CompatMode() ? "CSS1Compat" : "BackCompat" }; goog.dom.DomHelper.prototype.isCss1CompatMode = function() { return goog.dom.isCss1CompatMode_(this.document_) }; goog.dom.DomHelper.prototype.getWindow = function() { return goog.dom.getWindow_(this.document_) }; goog.dom.DomHelper.prototype.getDocumentScrollElement = function() { return goog.dom.getDocumentScrollElement_(this.document_) }; goog.dom.DomHelper.prototype.getDocumentScroll = function() { return goog.dom.getDocumentScroll_(this.document_) }; goog.dom.DomHelper.prototype.getActiveElement = function(opt_doc) { return goog.dom.getActiveElement(opt_doc || this.document_) }; goog.dom.DomHelper.prototype.appendChild = goog.dom.appendChild; goog.dom.DomHelper.prototype.append = goog.dom.append; goog.dom.DomHelper.prototype.canHaveChildren = goog.dom.canHaveChildren; goog.dom.DomHelper.prototype.removeChildren = goog.dom.removeChildren; goog.dom.DomHelper.prototype.insertSiblingBefore = goog.dom.insertSiblingBefore; goog.dom.DomHelper.prototype.insertSiblingAfter = goog.dom.insertSiblingAfter; goog.dom.DomHelper.prototype.insertChildAt = goog.dom.insertChildAt; goog.dom.DomHelper.prototype.removeNode = goog.dom.removeNode; goog.dom.DomHelper.prototype.replaceNode = goog.dom.replaceNode; goog.dom.DomHelper.prototype.flattenElement = goog.dom.flattenElement; goog.dom.DomHelper.prototype.getChildren = goog.dom.getChildren; goog.dom.DomHelper.prototype.getFirstElementChild = goog.dom.getFirstElementChild; goog.dom.DomHelper.prototype.getLastElementChild = goog.dom.getLastElementChild; goog.dom.DomHelper.prototype.getNextElementSibling = goog.dom.getNextElementSibling; goog.dom.DomHelper.prototype.getPreviousElementSibling = goog.dom.getPreviousElementSibling; goog.dom.DomHelper.prototype.getNextNode = goog.dom.getNextNode; goog.dom.DomHelper.prototype.getPreviousNode = goog.dom.getPreviousNode; goog.dom.DomHelper.prototype.isNodeLike = goog.dom.isNodeLike; goog.dom.DomHelper.prototype.isElement = goog.dom.isElement; goog.dom.DomHelper.prototype.isWindow = goog.dom.isWindow; goog.dom.DomHelper.prototype.getParentElement = goog.dom.getParentElement; goog.dom.DomHelper.prototype.contains = goog.dom.contains; goog.dom.DomHelper.prototype.compareNodeOrder = goog.dom.compareNodeOrder; goog.dom.DomHelper.prototype.findCommonAncestor = goog.dom.findCommonAncestor; goog.dom.DomHelper.prototype.getOwnerDocument = goog.dom.getOwnerDocument; goog.dom.DomHelper.prototype.getFrameContentDocument = goog.dom.getFrameContentDocument; goog.dom.DomHelper.prototype.getFrameContentWindow = goog.dom.getFrameContentWindow; goog.dom.DomHelper.prototype.setTextContent = goog.dom.setTextContent; goog.dom.DomHelper.prototype.getOuterHtml = goog.dom.getOuterHtml; goog.dom.DomHelper.prototype.findNode = goog.dom.findNode; goog.dom.DomHelper.prototype.findNodes = goog.dom.findNodes; goog.dom.DomHelper.prototype.isFocusableTabIndex = goog.dom.isFocusableTabIndex; goog.dom.DomHelper.prototype.setFocusableTabIndex = goog.dom.setFocusableTabIndex; goog.dom.DomHelper.prototype.getTextContent = goog.dom.getTextContent; goog.dom.DomHelper.prototype.getNodeTextLength = goog.dom.getNodeTextLength; goog.dom.DomHelper.prototype.getNodeTextOffset = goog.dom.getNodeTextOffset; goog.dom.DomHelper.prototype.getNodeAtOffset = goog.dom.getNodeAtOffset; goog.dom.DomHelper.prototype.isNodeList = goog.dom.isNodeList; goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass = goog.dom.getAncestorByTagNameAndClass; goog.dom.DomHelper.prototype.getAncestorByClass = goog.dom.getAncestorByClass; goog.dom.DomHelper.prototype.getAncestor = goog.dom.getAncestor; goog.provide("goog.dom.vendor"); goog.require("goog.userAgent"); goog.dom.vendor.getVendorJsPrefix = function() { if(goog.userAgent.WEBKIT) { return"Webkit" }else { if(goog.userAgent.GECKO) { return"Moz" }else { if(goog.userAgent.IE) { return"ms" }else { if(goog.userAgent.OPERA) { return"O" } } } } return null }; goog.dom.vendor.getVendorPrefix = function() { if(goog.userAgent.WEBKIT) { return"-webkit" }else { if(goog.userAgent.GECKO) { return"-moz" }else { if(goog.userAgent.IE) { return"-ms" }else { if(goog.userAgent.OPERA) { return"-o" } } } } return null }; goog.provide("goog.math.Box"); goog.require("goog.math.Coordinate"); goog.math.Box = function(top, right, bottom, left) { this.top = top; this.right = right; this.bottom = bottom; this.left = left }; goog.math.Box.boundingBox = function(var_args) { var box = new goog.math.Box(arguments[0].y, arguments[0].x, arguments[0].y, arguments[0].x); for(var i = 1;i < arguments.length;i++) { var coord = arguments[i]; box.top = Math.min(box.top, coord.y); box.right = Math.max(box.right, coord.x); box.bottom = Math.max(box.bottom, coord.y); box.left = Math.min(box.left, coord.x) } return box }; goog.math.Box.prototype.clone = function() { return new goog.math.Box(this.top, this.right, this.bottom, this.left) }; if(goog.DEBUG) { goog.math.Box.prototype.toString = function() { return"(" + this.top + "t, " + this.right + "r, " + this.bottom + "b, " + this.left + "l)" } } goog.math.Box.prototype.contains = function(other) { return goog.math.Box.contains(this, other) }; goog.math.Box.prototype.expand = function(top, opt_right, opt_bottom, opt_left) { if(goog.isObject(top)) { this.top -= top.top; this.right += top.right; this.bottom += top.bottom; this.left -= top.left }else { this.top -= top; this.right += opt_right; this.bottom += opt_bottom; this.left -= opt_left } return this }; goog.math.Box.prototype.expandToInclude = function(box) { this.left = Math.min(this.left, box.left); this.top = Math.min(this.top, box.top); this.right = Math.max(this.right, box.right); this.bottom = Math.max(this.bottom, box.bottom) }; goog.math.Box.equals = function(a, b) { if(a == b) { return true } if(!a || !b) { return false } return a.top == b.top && a.right == b.right && a.bottom == b.bottom && a.left == b.left }; goog.math.Box.contains = function(box, other) { if(!box || !other) { return false } if(other instanceof goog.math.Box) { return other.left >= box.left && other.right <= box.right && other.top >= box.top && other.bottom <= box.bottom } return other.x >= box.left && other.x <= box.right && other.y >= box.top && other.y <= box.bottom }; goog.math.Box.relativePositionX = function(box, coord) { if(coord.x < box.left) { return coord.x - box.left }else { if(coord.x > box.right) { return coord.x - box.right } } return 0 }; goog.math.Box.relativePositionY = function(box, coord) { if(coord.y < box.top) { return coord.y - box.top }else { if(coord.y > box.bottom) { return coord.y - box.bottom } } return 0 }; goog.math.Box.distance = function(box, coord) { var x = goog.math.Box.relativePositionX(box, coord); var y = goog.math.Box.relativePositionY(box, coord); return Math.sqrt(x * x + y * y) }; goog.math.Box.intersects = function(a, b) { return a.left <= b.right && b.left <= a.right && a.top <= b.bottom && b.top <= a.bottom }; goog.math.Box.intersectsWithPadding = function(a, b, padding) { return a.left <= b.right + padding && b.left <= a.right + padding && a.top <= b.bottom + padding && b.top <= a.bottom + padding }; goog.math.Box.prototype.ceil = function() { this.top = Math.ceil(this.top); this.right = Math.ceil(this.right); this.bottom = Math.ceil(this.bottom); this.left = Math.ceil(this.left); return this }; goog.math.Box.prototype.floor = function() { this.top = Math.floor(this.top); this.right = Math.floor(this.right); this.bottom = Math.floor(this.bottom); this.left = Math.floor(this.left); return this }; goog.math.Box.prototype.round = function() { this.top = Math.round(this.top); this.right = Math.round(this.right); this.bottom = Math.round(this.bottom); this.left = Math.round(this.left); return this }; goog.math.Box.prototype.translate = function(tx, opt_ty) { if(tx instanceof goog.math.Coordinate) { this.left += tx.x; this.right += tx.x; this.top += tx.y; this.bottom += tx.y }else { this.left += tx; this.right += tx; if(goog.isNumber(opt_ty)) { this.top += opt_ty; this.bottom += opt_ty } } return this }; goog.math.Box.prototype.scale = function(sx, opt_sy) { var sy = goog.isNumber(opt_sy) ? opt_sy : sx; this.left *= sx; this.right *= sx; this.top *= sy; this.bottom *= sy; return this }; goog.provide("goog.math.Rect"); goog.require("goog.math.Box"); goog.require("goog.math.Coordinate"); goog.require("goog.math.Size"); goog.math.Rect = function(x, y, w, h) { this.left = x; this.top = y; this.width = w; this.height = h }; goog.math.Rect.prototype.clone = function() { return new goog.math.Rect(this.left, this.top, this.width, this.height) }; goog.math.Rect.prototype.toBox = function() { var right = this.left + this.width; var bottom = this.top + this.height; return new goog.math.Box(this.top, right, bottom, this.left) }; goog.math.Rect.createFromBox = function(box) { return new goog.math.Rect(box.left, box.top, box.right - box.left, box.bottom - box.top) }; if(goog.DEBUG) { goog.math.Rect.prototype.toString = function() { return"(" + this.left + ", " + this.top + " - " + this.width + "w x " + this.height + "h)" } } goog.math.Rect.equals = function(a, b) { if(a == b) { return true } if(!a || !b) { return false } return a.left == b.left && a.width == b.width && a.top == b.top && a.height == b.height }; goog.math.Rect.prototype.intersection = function(rect) { var x0 = Math.max(this.left, rect.left); var x1 = Math.min(this.left + this.width, rect.left + rect.width); if(x0 <= x1) { var y0 = Math.max(this.top, rect.top); var y1 = Math.min(this.top + this.height, rect.top + rect.height); if(y0 <= y1) { this.left = x0; this.top = y0; this.width = x1 - x0; this.height = y1 - y0; return true } } return false }; goog.math.Rect.intersection = function(a, b) { var x0 = Math.max(a.left, b.left); var x1 = Math.min(a.left + a.width, b.left + b.width); if(x0 <= x1) { var y0 = Math.max(a.top, b.top); var y1 = Math.min(a.top + a.height, b.top + b.height); if(y0 <= y1) { return new goog.math.Rect(x0, y0, x1 - x0, y1 - y0) } } return null }; goog.math.Rect.intersects = function(a, b) { return a.left <= b.left + b.width && b.left <= a.left + a.width && a.top <= b.top + b.height && b.top <= a.top + a.height }; goog.math.Rect.prototype.intersects = function(rect) { return goog.math.Rect.intersects(this, rect) }; goog.math.Rect.difference = function(a, b) { var intersection = goog.math.Rect.intersection(a, b); if(!intersection || !intersection.height || !intersection.width) { return[a.clone()] } var result = []; var top = a.top; var height = a.height; var ar = a.left + a.width; var ab = a.top + a.height; var br = b.left + b.width; var bb = b.top + b.height; if(b.top > a.top) { result.push(new goog.math.Rect(a.left, a.top, a.width, b.top - a.top)); top = b.top; height -= b.top - a.top } if(bb < ab) { result.push(new goog.math.Rect(a.left, bb, a.width, ab - bb)); height = bb - top } if(b.left > a.left) { result.push(new goog.math.Rect(a.left, top, b.left - a.left, height)) } if(br < ar) { result.push(new goog.math.Rect(br, top, ar - br, height)) } return result }; goog.math.Rect.prototype.difference = function(rect) { return goog.math.Rect.difference(this, rect) }; goog.math.Rect.prototype.boundingRect = function(rect) { var right = Math.max(this.left + this.width, rect.left + rect.width); var bottom = Math.max(this.top + this.height, rect.top + rect.height); this.left = Math.min(this.left, rect.left); this.top = Math.min(this.top, rect.top); this.width = right - this.left; this.height = bottom - this.top }; goog.math.Rect.boundingRect = function(a, b) { if(!a || !b) { return null } var clone = a.clone(); clone.boundingRect(b); return clone }; goog.math.Rect.prototype.contains = function(another) { if(another instanceof goog.math.Rect) { return this.left <= another.left && this.left + this.width >= another.left + another.width && this.top <= another.top && this.top + this.height >= another.top + another.height }else { return another.x >= this.left && another.x <= this.left + this.width && another.y >= this.top && another.y <= this.top + this.height } }; goog.math.Rect.prototype.squaredDistance = function(point) { var dx = point.x < this.left ? this.left - point.x : Math.max(point.x - (this.left + this.width), 0); var dy = point.y < this.top ? this.top - point.y : Math.max(point.y - (this.top + this.height), 0); return dx * dx + dy * dy }; goog.math.Rect.prototype.distance = function(point) { return Math.sqrt(this.squaredDistance(point)) }; goog.math.Rect.prototype.getSize = function() { return new goog.math.Size(this.width, this.height) }; goog.math.Rect.prototype.getTopLeft = function() { return new goog.math.Coordinate(this.left, this.top) }; goog.math.Rect.prototype.getCenter = function() { return new goog.math.Coordinate(this.left + this.width / 2, this.top + this.height / 2) }; goog.math.Rect.prototype.getBottomRight = function() { return new goog.math.Coordinate(this.left + this.width, this.top + this.height) }; goog.math.Rect.prototype.ceil = function() { this.left = Math.ceil(this.left); this.top = Math.ceil(this.top); this.width = Math.ceil(this.width); this.height = Math.ceil(this.height); return this }; goog.math.Rect.prototype.floor = function() { this.left = Math.floor(this.left); this.top = Math.floor(this.top); this.width = Math.floor(this.width); this.height = Math.floor(this.height); return this }; goog.math.Rect.prototype.round = function() { this.left = Math.round(this.left); this.top = Math.round(this.top); this.width = Math.round(this.width); this.height = Math.round(this.height); return this }; goog.math.Rect.prototype.translate = function(tx, opt_ty) { if(tx instanceof goog.math.Coordinate) { this.left += tx.x; this.top += tx.y }else { this.left += tx; if(goog.isNumber(opt_ty)) { this.top += opt_ty } } return this }; goog.math.Rect.prototype.scale = function(sx, opt_sy) { var sy = goog.isNumber(opt_sy) ? opt_sy : sx; this.left *= sx; this.width *= sx; this.top *= sy; this.height *= sy; return this }; goog.provide("goog.style"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.NodeType"); goog.require("goog.dom.vendor"); goog.require("goog.math.Box"); goog.require("goog.math.Coordinate"); goog.require("goog.math.Rect"); goog.require("goog.math.Size"); goog.require("goog.object"); goog.require("goog.string"); goog.require("goog.userAgent"); goog.define("goog.style.GET_BOUNDING_CLIENT_RECT_ALWAYS_EXISTS", false); goog.style.setStyle = function(element, style, opt_value) { if(goog.isString(style)) { goog.style.setStyle_(element, opt_value, style) }else { goog.object.forEach(style, goog.partial(goog.style.setStyle_, element)) } }; goog.style.setStyle_ = function(element, value, style) { var propertyName = goog.style.getVendorJsStyleName_(element, style); if(propertyName) { element.style[propertyName] = value } }; goog.style.getVendorJsStyleName_ = function(element, style) { var camelStyle = goog.string.toCamelCase(style); if(element.style[camelStyle] === undefined) { var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() + goog.string.toTitleCase(style); if(element.style[prefixedStyle] !== undefined) { return prefixedStyle } } return camelStyle }; goog.style.getVendorStyleName_ = function(element, style) { var camelStyle = goog.string.toCamelCase(style); if(element.style[camelStyle] === undefined) { var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() + goog.string.toTitleCase(style); if(element.style[prefixedStyle] !== undefined) { return goog.dom.vendor.getVendorPrefix() + "-" + style } } return style }; goog.style.getStyle = function(element, property) { var styleValue = element.style[goog.string.toCamelCase(property)]; if(typeof styleValue !== "undefined") { return styleValue } return element.style[goog.style.getVendorJsStyleName_(element, property)] || "" }; goog.style.getComputedStyle = function(element, property) { var doc = goog.dom.getOwnerDocument(element); if(doc.defaultView && doc.defaultView.getComputedStyle) { var styles = doc.defaultView.getComputedStyle(element, null); if(styles) { return styles[property] || styles.getPropertyValue(property) || "" } } return"" }; goog.style.getCascadedStyle = function(element, style) { return element.currentStyle ? element.currentStyle[style] : null }; goog.style.getStyle_ = function(element, style) { return goog.style.getComputedStyle(element, style) || goog.style.getCascadedStyle(element, style) || element.style && element.style[style] }; goog.style.getComputedPosition = function(element) { return goog.style.getStyle_(element, "position") }; goog.style.getBackgroundColor = function(element) { return goog.style.getStyle_(element, "backgroundColor") }; goog.style.getComputedOverflowX = function(element) { return goog.style.getStyle_(element, "overflowX") }; goog.style.getComputedOverflowY = function(element) { return goog.style.getStyle_(element, "overflowY") }; goog.style.getComputedZIndex = function(element) { return goog.style.getStyle_(element, "zIndex") }; goog.style.getComputedTextAlign = function(element) { return goog.style.getStyle_(element, "textAlign") }; goog.style.getComputedCursor = function(element) { return goog.style.getStyle_(element, "cursor") }; goog.style.setPosition = function(el, arg1, opt_arg2) { var x, y; var buggyGeckoSubPixelPos = goog.userAgent.GECKO && (goog.userAgent.MAC || goog.userAgent.X11) && goog.userAgent.isVersionOrHigher("1.9"); if(arg1 instanceof goog.math.Coordinate) { x = arg1.x; y = arg1.y }else { x = arg1; y = opt_arg2 } el.style.left = goog.style.getPixelStyleValue_((x), buggyGeckoSubPixelPos); el.style.top = goog.style.getPixelStyleValue_((y), buggyGeckoSubPixelPos) }; goog.style.getPosition = function(element) { return new goog.math.Coordinate(element.offsetLeft, element.offsetTop) }; goog.style.getClientViewportElement = function(opt_node) { var doc; if(opt_node) { doc = goog.dom.getOwnerDocument(opt_node) }else { doc = goog.dom.getDocument() } if(goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9) && !goog.dom.getDomHelper(doc).isCss1CompatMode()) { return doc.body } return doc.documentElement }; goog.style.getViewportPageOffset = function(doc) { var body = doc.body; var documentElement = doc.documentElement; var scrollLeft = body.scrollLeft || documentElement.scrollLeft; var scrollTop = body.scrollTop || documentElement.scrollTop; return new goog.math.Coordinate(scrollLeft, scrollTop) }; goog.style.getBoundingClientRect_ = function(el) { var rect; try { rect = el.getBoundingClientRect() }catch(e) { return{"left":0, "top":0, "right":0, "bottom":0} } if(goog.userAgent.IE) { var doc = el.ownerDocument; rect.left -= doc.documentElement.clientLeft + doc.body.clientLeft; rect.top -= doc.documentElement.clientTop + doc.body.clientTop } return(rect) }; goog.style.getOffsetParent = function(element) { if(goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(8)) { return element.offsetParent } var doc = goog.dom.getOwnerDocument(element); var positionStyle = goog.style.getStyle_(element, "position"); var skipStatic = positionStyle == "fixed" || positionStyle == "absolute"; for(var parent = element.parentNode;parent && parent != doc;parent = parent.parentNode) { positionStyle = goog.style.getStyle_((parent), "position"); skipStatic = skipStatic && positionStyle == "static" && parent != doc.documentElement && parent != doc.body; if(!skipStatic && (parent.scrollWidth > parent.clientWidth || parent.scrollHeight > parent.clientHeight || positionStyle == "fixed" || positionStyle == "absolute" || positionStyle == "relative")) { return(parent) } } return null }; goog.style.getVisibleRectForElement = function(element) { var visibleRect = new goog.math.Box(0, Infinity, Infinity, 0); var dom = goog.dom.getDomHelper(element); var body = dom.getDocument().body; var documentElement = dom.getDocument().documentElement; var scrollEl = dom.getDocumentScrollElement(); for(var el = element;el = goog.style.getOffsetParent(el);) { if((!goog.userAgent.IE || el.clientWidth != 0) && (!goog.userAgent.WEBKIT || el.clientHeight != 0 || el != body) && el != body && el != documentElement && goog.style.getStyle_(el, "overflow") != "visible") { var pos = goog.style.getPageOffset(el); var client = goog.style.getClientLeftTop(el); pos.x += client.x; pos.y += client.y; visibleRect.top = Math.max(visibleRect.top, pos.y); visibleRect.right = Math.min(visibleRect.right, pos.x + el.clientWidth); visibleRect.bottom = Math.min(visibleRect.bottom, pos.y + el.clientHeight); visibleRect.left = Math.max(visibleRect.left, pos.x) } } var scrollX = scrollEl.scrollLeft, scrollY = scrollEl.scrollTop; visibleRect.left = Math.max(visibleRect.left, scrollX); visibleRect.top = Math.max(visibleRect.top, scrollY); var winSize = dom.getViewportSize(); visibleRect.right = Math.min(visibleRect.right, scrollX + winSize.width); visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + winSize.height); return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null }; goog.style.getContainerOffsetToScrollInto = function(element, container, opt_center) { var elementPos = goog.style.getPageOffset(element); var containerPos = goog.style.getPageOffset(container); var containerBorder = goog.style.getBorderBox(container); var relX = elementPos.x - containerPos.x - containerBorder.left; var relY = elementPos.y - containerPos.y - containerBorder.top; var spaceX = container.clientWidth - element.offsetWidth; var spaceY = container.clientHeight - element.offsetHeight; var scrollLeft = container.scrollLeft; var scrollTop = container.scrollTop; if(opt_center) { scrollLeft += relX - spaceX / 2; scrollTop += relY - spaceY / 2 }else { scrollLeft += Math.min(relX, Math.max(relX - spaceX, 0)); scrollTop += Math.min(relY, Math.max(relY - spaceY, 0)) } return new goog.math.Coordinate(scrollLeft, scrollTop) }; goog.style.scrollIntoContainerView = function(element, container, opt_center) { var offset = goog.style.getContainerOffsetToScrollInto(element, container, opt_center); container.scrollLeft = offset.x; container.scrollTop = offset.y }; goog.style.getClientLeftTop = function(el) { if(goog.userAgent.GECKO && !goog.userAgent.isVersionOrHigher("1.9")) { var left = parseFloat(goog.style.getComputedStyle(el, "borderLeftWidth")); if(goog.style.isRightToLeft(el)) { var scrollbarWidth = el.offsetWidth - el.clientWidth - left - parseFloat(goog.style.getComputedStyle(el, "borderRightWidth")); left += scrollbarWidth } return new goog.math.Coordinate(left, parseFloat(goog.style.getComputedStyle(el, "borderTopWidth"))) } return new goog.math.Coordinate(el.clientLeft, el.clientTop) }; goog.style.getPageOffset = function(el) { var box, doc = goog.dom.getOwnerDocument(el); var positionStyle = goog.style.getStyle_(el, "position"); goog.asserts.assertObject(el, "Parameter is required"); var BUGGY_GECKO_BOX_OBJECT = !goog.style.GET_BOUNDING_CLIENT_RECT_ALWAYS_EXISTS && goog.userAgent.GECKO && doc.getBoxObjectFor && !el.getBoundingClientRect && positionStyle == "absolute" && (box = doc.getBoxObjectFor(el)) && (box.screenX < 0 || box.screenY < 0); var pos = new goog.math.Coordinate(0, 0); var viewportElement = goog.style.getClientViewportElement(doc); if(el == viewportElement) { return pos } if(goog.style.GET_BOUNDING_CLIENT_RECT_ALWAYS_EXISTS || el.getBoundingClientRect) { box = goog.style.getBoundingClientRect_(el); var scrollCoord = goog.dom.getDomHelper(doc).getDocumentScroll(); pos.x = box.left + scrollCoord.x; pos.y = box.top + scrollCoord.y }else { if(doc.getBoxObjectFor && !BUGGY_GECKO_BOX_OBJECT) { box = doc.getBoxObjectFor(el); var vpBox = doc.getBoxObjectFor(viewportElement); pos.x = box.screenX - vpBox.screenX; pos.y = box.screenY - vpBox.screenY }else { var parent = el; do { pos.x += parent.offsetLeft; pos.y += parent.offsetTop; if(parent != el) { pos.x += parent.clientLeft || 0; pos.y += parent.clientTop || 0 } if(goog.userAgent.WEBKIT && goog.style.getComputedPosition(parent) == "fixed") { pos.x += doc.body.scrollLeft; pos.y += doc.body.scrollTop; break } parent = parent.offsetParent }while(parent && parent != el); if(goog.userAgent.OPERA || goog.userAgent.WEBKIT && positionStyle == "absolute") { pos.y -= doc.body.offsetTop } for(parent = el;(parent = goog.style.getOffsetParent(parent)) && parent != doc.body && parent != viewportElement;) { pos.x -= parent.scrollLeft; if(!goog.userAgent.OPERA || parent.tagName != "TR") { pos.y -= parent.scrollTop } } } } return pos }; goog.style.getPageOffsetLeft = function(el) { return goog.style.getPageOffset(el).x }; goog.style.getPageOffsetTop = function(el) { return goog.style.getPageOffset(el).y }; goog.style.getFramedPageOffset = function(el, relativeWin) { var position = new goog.math.Coordinate(0, 0); var currentWin = goog.dom.getWindow(goog.dom.getOwnerDocument(el)); var currentEl = el; do { var offset = currentWin == relativeWin ? goog.style.getPageOffset(currentEl) : goog.style.getClientPositionForElement_(goog.asserts.assert(currentEl)); position.x += offset.x; position.y += offset.y }while(currentWin && currentWin != relativeWin && (currentEl = currentWin.frameElement) && (currentWin = currentWin.parent)); return position }; goog.style.translateRectForAnotherFrame = function(rect, origBase, newBase) { if(origBase.getDocument() != newBase.getDocument()) { var body = origBase.getDocument().body; var pos = goog.style.getFramedPageOffset(body, newBase.getWindow()); pos = goog.math.Coordinate.difference(pos, goog.style.getPageOffset(body)); if(goog.userAgent.IE && !origBase.isCss1CompatMode()) { pos = goog.math.Coordinate.difference(pos, origBase.getDocumentScroll()) } rect.left += pos.x; rect.top += pos.y } }; goog.style.getRelativePosition = function(a, b) { var ap = goog.style.getClientPosition(a); var bp = goog.style.getClientPosition(b); return new goog.math.Coordinate(ap.x - bp.x, ap.y - bp.y) }; goog.style.getClientPositionForElement_ = function(el) { var pos; if(goog.style.GET_BOUNDING_CLIENT_RECT_ALWAYS_EXISTS || el.getBoundingClientRect) { var box = goog.style.getBoundingClientRect_(el); pos = new goog.math.Coordinate(box.left, box.top) }else { var scrollCoord = goog.dom.getDomHelper(el).getDocumentScroll(); var pageCoord = goog.style.getPageOffset(el); pos = new goog.math.Coordinate(pageCoord.x - scrollCoord.x, pageCoord.y - scrollCoord.y) } if(goog.userAgent.GECKO && !goog.userAgent.isVersionOrHigher(12)) { return goog.math.Coordinate.sum(pos, goog.style.getCssTranslation(el)) }else { return pos } }; goog.style.getClientPosition = function(el) { goog.asserts.assert(el); if(el.nodeType == goog.dom.NodeType.ELEMENT) { return goog.style.getClientPositionForElement_((el)) }else { var isAbstractedEvent = goog.isFunction(el.getBrowserEvent); var targetEvent = el; if(el.targetTouches) { targetEvent = el.targetTouches[0] }else { if(isAbstractedEvent && el.getBrowserEvent().targetTouches) { targetEvent = el.getBrowserEvent().targetTouches[0] } } return new goog.math.Coordinate(targetEvent.clientX, targetEvent.clientY) } }; goog.style.setPageOffset = function(el, x, opt_y) { var cur = goog.style.getPageOffset(el); if(x instanceof goog.math.Coordinate) { opt_y = x.y; x = x.x } var dx = x - cur.x; var dy = opt_y - cur.y; goog.style.setPosition(el, el.offsetLeft + dx, el.offsetTop + dy) }; goog.style.setSize = function(element, w, opt_h) { var h; if(w instanceof goog.math.Size) { h = w.height; w = w.width }else { if(opt_h == undefined) { throw Error("missing height argument"); } h = opt_h } goog.style.setWidth(element, (w)); goog.style.setHeight(element, (h)) }; goog.style.getPixelStyleValue_ = function(value, round) { if(typeof value == "number") { value = (round ? Math.round(value) : value) + "px" } return value }; goog.style.setHeight = function(element, height) { element.style.height = goog.style.getPixelStyleValue_(height, true) }; goog.style.setWidth = function(element, width) { element.style.width = goog.style.getPixelStyleValue_(width, true) }; goog.style.getSize = function(element) { return goog.style.evaluateWithTemporaryDisplay_(goog.style.getSizeWithDisplay_, (element)) }; goog.style.evaluateWithTemporaryDisplay_ = function(fn, element) { if(goog.style.getStyle_(element, "display") != "none") { return fn(element) } var style = element.style; var originalDisplay = style.display; var originalVisibility = style.visibility; var originalPosition = style.position; style.visibility = "hidden"; style.position = "absolute"; style.display = "inline"; var retVal = fn(element); style.display = originalDisplay; style.position = originalPosition; style.visibility = originalVisibility; return retVal }; goog.style.getSizeWithDisplay_ = function(element) { var offsetWidth = element.offsetWidth; var offsetHeight = element.offsetHeight; var webkitOffsetsZero = goog.userAgent.WEBKIT && !offsetWidth && !offsetHeight; if((!goog.isDef(offsetWidth) || webkitOffsetsZero) && element.getBoundingClientRect) { var clientRect = goog.style.getBoundingClientRect_(element); return new goog.math.Size(clientRect.right - clientRect.left, clientRect.bottom - clientRect.top) } return new goog.math.Size(offsetWidth, offsetHeight) }; goog.style.getTransformedSize = function(element) { if(!element.getBoundingClientRect) { return null } var clientRect = goog.style.evaluateWithTemporaryDisplay_(goog.style.getBoundingClientRect_, element); return new goog.math.Size(clientRect.right - clientRect.left, clientRect.bottom - clientRect.top) }; goog.style.getBounds = function(element) { var o = goog.style.getPageOffset(element); var s = goog.style.getSize(element); return new goog.math.Rect(o.x, o.y, s.width, s.height) }; goog.style.toCamelCase = function(selector) { return goog.string.toCamelCase(String(selector)) }; goog.style.toSelectorCase = function(selector) { return goog.string.toSelectorCase(selector) }; goog.style.getOpacity = function(el) { var style = el.style; var result = ""; if("opacity" in style) { result = style.opacity }else { if("MozOpacity" in style) { result = style.MozOpacity }else { if("filter" in style) { var match = style.filter.match(/alpha\(opacity=([\d.]+)\)/); if(match) { result = String(match[1] / 100) } } } } return result == "" ? result : Number(result) }; goog.style.setOpacity = function(el, alpha) { var style = el.style; if("opacity" in style) { style.opacity = alpha }else { if("MozOpacity" in style) { style.MozOpacity = alpha }else { if("filter" in style) { if(alpha === "") { style.filter = "" }else { style.filter = "alpha(opacity\x3d" + alpha * 100 + ")" } } } } }; goog.style.setTransparentBackgroundImage = function(el, src) { var style = el.style; if(goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("8")) { style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(" + 'src\x3d"' + src + '", sizingMethod\x3d"crop")' }else { style.backgroundImage = "url(" + src + ")"; style.backgroundPosition = "top left"; style.backgroundRepeat = "no-repeat" } }; goog.style.clearTransparentBackgroundImage = function(el) { var style = el.style; if("filter" in style) { style.filter = "" }else { style.backgroundImage = "none" } }; goog.style.showElement = function(el, display) { goog.style.setElementShown(el, display) }; goog.style.setElementShown = function(el, isShown) { el.style.display = isShown ? "" : "none" }; goog.style.isElementShown = function(el) { return el.style.display != "none" }; goog.style.installStyles = function(stylesString, opt_node) { var dh = goog.dom.getDomHelper(opt_node); var styleSheet = null; if(goog.userAgent.IE) { styleSheet = dh.getDocument().createStyleSheet(); goog.style.setStyles(styleSheet, stylesString) }else { var head = dh.getElementsByTagNameAndClass("head")[0]; if(!head) { var body = dh.getElementsByTagNameAndClass("body")[0]; head = dh.createDom("head"); body.parentNode.insertBefore(head, body) } styleSheet = dh.createDom("style"); goog.style.setStyles(styleSheet, stylesString); dh.appendChild(head, styleSheet) } return styleSheet }; goog.style.uninstallStyles = function(styleSheet) { var node = styleSheet.ownerNode || styleSheet.owningElement || (styleSheet); goog.dom.removeNode(node) }; goog.style.setStyles = function(element, stylesString) { if(goog.userAgent.IE) { element.cssText = stylesString }else { element.innerHTML = stylesString } }; goog.style.setPreWrap = function(el) { var style = el.style; if(goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("8")) { style.whiteSpace = "pre"; style.wordWrap = "break-word" }else { if(goog.userAgent.GECKO) { style.whiteSpace = "-moz-pre-wrap" }else { style.whiteSpace = "pre-wrap" } } }; goog.style.setInlineBlock = function(el) { var style = el.style; style.position = "relative"; if(goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("8")) { style.zoom = "1"; style.display = "inline" }else { if(goog.userAgent.GECKO) { style.display = goog.userAgent.isVersionOrHigher("1.9a") ? "inline-block" : "-moz-inline-box" }else { style.display = "inline-block" } } }; goog.style.isRightToLeft = function(el) { return"rtl" == goog.style.getStyle_(el, "direction") }; goog.style.unselectableStyle_ = goog.userAgent.GECKO ? "MozUserSelect" : goog.userAgent.WEBKIT ? "WebkitUserSelect" : null; goog.style.isUnselectable = function(el) { if(goog.style.unselectableStyle_) { return el.style[goog.style.unselectableStyle_].toLowerCase() == "none" }else { if(goog.userAgent.IE || goog.userAgent.OPERA) { return el.getAttribute("unselectable") == "on" } } return false }; goog.style.setUnselectable = function(el, unselectable, opt_noRecurse) { var descendants = !opt_noRecurse ? el.getElementsByTagName("*") : null; var name = goog.style.unselectableStyle_; if(name) { var value = unselectable ? "none" : ""; el.style[name] = value; if(descendants) { for(var i = 0, descendant;descendant = descendants[i];i++) { descendant.style[name] = value } } }else { if(goog.userAgent.IE || goog.userAgent.OPERA) { var value = unselectable ? "on" : ""; el.setAttribute("unselectable", value); if(descendants) { for(var i = 0, descendant;descendant = descendants[i];i++) { descendant.setAttribute("unselectable", value) } } } } }; goog.style.getBorderBoxSize = function(element) { return new goog.math.Size(element.offsetWidth, element.offsetHeight) }; goog.style.setBorderBoxSize = function(element, size) { var doc = goog.dom.getOwnerDocument(element); var isCss1CompatMode = goog.dom.getDomHelper(doc).isCss1CompatMode(); if(goog.userAgent.IE && (!isCss1CompatMode || !goog.userAgent.isVersionOrHigher("8"))) { var style = element.style; if(isCss1CompatMode) { var paddingBox = goog.style.getPaddingBox(element); var borderBox = goog.style.getBorderBox(element); style.pixelWidth = size.width - borderBox.left - paddingBox.left - paddingBox.right - borderBox.right; style.pixelHeight = size.height - borderBox.top - paddingBox.top - paddingBox.bottom - borderBox.bottom }else { style.pixelWidth = size.width; style.pixelHeight = size.height } }else { goog.style.setBoxSizingSize_(element, size, "border-box") } }; goog.style.getContentBoxSize = function(element) { var doc = goog.dom.getOwnerDocument(element); var ieCurrentStyle = goog.userAgent.IE && element.currentStyle; if(ieCurrentStyle && goog.dom.getDomHelper(doc).isCss1CompatMode() && ieCurrentStyle.width != "auto" && ieCurrentStyle.height != "auto" && !ieCurrentStyle.boxSizing) { var width = goog.style.getIePixelValue_(element, ieCurrentStyle.width, "width", "pixelWidth"); var height = goog.style.getIePixelValue_(element, ieCurrentStyle.height, "height", "pixelHeight"); return new goog.math.Size(width, height) }else { var borderBoxSize = goog.style.getBorderBoxSize(element); var paddingBox = goog.style.getPaddingBox(element); var borderBox = goog.style.getBorderBox(element); return new goog.math.Size(borderBoxSize.width - borderBox.left - paddingBox.left - paddingBox.right - borderBox.right, borderBoxSize.height - borderBox.top - paddingBox.top - paddingBox.bottom - borderBox.bottom) } }; goog.style.setContentBoxSize = function(element, size) { var doc = goog.dom.getOwnerDocument(element); var isCss1CompatMode = goog.dom.getDomHelper(doc).isCss1CompatMode(); if(goog.userAgent.IE && (!isCss1CompatMode || !goog.userAgent.isVersionOrHigher("8"))) { var style = element.style; if(isCss1CompatMode) { style.pixelWidth = size.width; style.pixelHeight = size.height }else { var paddingBox = goog.style.getPaddingBox(element); var borderBox = goog.style.getBorderBox(element); style.pixelWidth = size.width + borderBox.left + paddingBox.left + paddingBox.right + borderBox.right; style.pixelHeight = size.height + borderBox.top + paddingBox.top + paddingBox.bottom + borderBox.bottom } }else { goog.style.setBoxSizingSize_(element, size, "content-box") } }; goog.style.setBoxSizingSize_ = function(element, size, boxSizing) { var style = element.style; if(goog.userAgent.GECKO) { style.MozBoxSizing = boxSizing }else { if(goog.userAgent.WEBKIT) { style.WebkitBoxSizing = boxSizing }else { style.boxSizing = boxSizing } } style.width = Math.max(size.width, 0) + "px"; style.height = Math.max(size.height, 0) + "px" }; goog.style.getIePixelValue_ = function(element, value, name, pixelName) { if(/^\d+px?$/.test(value)) { return parseInt(value, 10) }else { var oldStyleValue = element.style[name]; var oldRuntimeValue = element.runtimeStyle[name]; element.runtimeStyle[name] = element.currentStyle[name]; element.style[name] = value; var pixelValue = element.style[pixelName]; element.style[name] = oldStyleValue; element.runtimeStyle[name] = oldRuntimeValue; return pixelValue } }; goog.style.getIePixelDistance_ = function(element, propName) { var value = goog.style.getCascadedStyle(element, propName); return value ? goog.style.getIePixelValue_(element, value, "left", "pixelLeft") : 0 }; goog.style.getBox_ = function(element, stylePrefix) { if(goog.userAgent.IE) { var left = goog.style.getIePixelDistance_(element, stylePrefix + "Left"); var right = goog.style.getIePixelDistance_(element, stylePrefix + "Right"); var top = goog.style.getIePixelDistance_(element, stylePrefix + "Top"); var bottom = goog.style.getIePixelDistance_(element, stylePrefix + "Bottom"); return new goog.math.Box(top, right, bottom, left) }else { var left = (goog.style.getComputedStyle(element, stylePrefix + "Left")); var right = (goog.style.getComputedStyle(element, stylePrefix + "Right")); var top = (goog.style.getComputedStyle(element, stylePrefix + "Top")); var bottom = (goog.style.getComputedStyle(element, stylePrefix + "Bottom")); return new goog.math.Box(parseFloat(top), parseFloat(right), parseFloat(bottom), parseFloat(left)) } }; goog.style.getPaddingBox = function(element) { return goog.style.getBox_(element, "padding") }; goog.style.getMarginBox = function(element) { return goog.style.getBox_(element, "margin") }; goog.style.ieBorderWidthKeywords_ = {"thin":2, "medium":4, "thick":6}; goog.style.getIePixelBorder_ = function(element, prop) { if(goog.style.getCascadedStyle(element, prop + "Style") == "none") { return 0 } var width = goog.style.getCascadedStyle(element, prop + "Width"); if(width in goog.style.ieBorderWidthKeywords_) { return goog.style.ieBorderWidthKeywords_[width] } return goog.style.getIePixelValue_(element, width, "left", "pixelLeft") }; goog.style.getBorderBox = function(element) { if(goog.userAgent.IE) { var left = goog.style.getIePixelBorder_(element, "borderLeft"); var right = goog.style.getIePixelBorder_(element, "borderRight"); var top = goog.style.getIePixelBorder_(element, "borderTop"); var bottom = goog.style.getIePixelBorder_(element, "borderBottom"); return new goog.math.Box(top, right, bottom, left) }else { var left = (goog.style.getComputedStyle(element, "borderLeftWidth")); var right = (goog.style.getComputedStyle(element, "borderRightWidth")); var top = (goog.style.getComputedStyle(element, "borderTopWidth")); var bottom = (goog.style.getComputedStyle(element, "borderBottomWidth")); return new goog.math.Box(parseFloat(top), parseFloat(right), parseFloat(bottom), parseFloat(left)) } }; goog.style.getFontFamily = function(el) { var doc = goog.dom.getOwnerDocument(el); var font = ""; if(doc.body.createTextRange) { var range = doc.body.createTextRange(); range.moveToElementText(el); try { font = range.queryCommandValue("FontName") }catch(e) { font = "" } } if(!font) { font = goog.style.getStyle_(el, "fontFamily") } var fontsArray = font.split(","); if(fontsArray.length > 1) { font = fontsArray[0] } return goog.string.stripQuotes(font, "\"'") }; goog.style.lengthUnitRegex_ = /[^\d]+$/; goog.style.getLengthUnits = function(value) { var units = value.match(goog.style.lengthUnitRegex_); return units && units[0] || null }; goog.style.ABSOLUTE_CSS_LENGTH_UNITS_ = {"cm":1, "in":1, "mm":1, "pc":1, "pt":1}; goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_ = {"em":1, "ex":1}; goog.style.getFontSize = function(el) { var fontSize = goog.style.getStyle_(el, "fontSize"); var sizeUnits = goog.style.getLengthUnits(fontSize); if(fontSize && "px" == sizeUnits) { return parseInt(fontSize, 10) } if(goog.userAgent.IE) { if(sizeUnits in goog.style.ABSOLUTE_CSS_LENGTH_UNITS_) { return goog.style.getIePixelValue_(el, fontSize, "left", "pixelLeft") }else { if(el.parentNode && el.parentNode.nodeType == goog.dom.NodeType.ELEMENT && sizeUnits in goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_) { var parentElement = (el.parentNode); var parentSize = goog.style.getStyle_(parentElement, "fontSize"); return goog.style.getIePixelValue_(parentElement, fontSize == parentSize ? "1em" : fontSize, "left", "pixelLeft") } } } var sizeElement = goog.dom.createDom("span", {"style":"visibility:hidden;position:absolute;" + "line-height:0;padding:0;margin:0;border:0;height:1em;"}); goog.dom.appendChild(el, sizeElement); fontSize = sizeElement.offsetHeight; goog.dom.removeNode(sizeElement); return fontSize }; goog.style.parseStyleAttribute = function(value) { var result = {}; goog.array.forEach(value.split(/\s*;\s*/), function(pair) { var keyValue = pair.split(/\s*:\s*/); if(keyValue.length == 2) { result[goog.string.toCamelCase(keyValue[0].toLowerCase())] = keyValue[1] } }); return result }; goog.style.toStyleAttribute = function(obj) { var buffer = []; goog.object.forEach(obj, function(value, key) { buffer.push(goog.string.toSelectorCase(key), ":", value, ";") }); return buffer.join("") }; goog.style.setFloat = function(el, value) { el.style[goog.userAgent.IE ? "styleFloat" : "cssFloat"] = value }; goog.style.getFloat = function(el) { return el.style[goog.userAgent.IE ? "styleFloat" : "cssFloat"] || "" }; goog.style.getScrollbarWidth = function(opt_className) { var outerDiv = goog.dom.createElement("div"); if(opt_className) { outerDiv.className = opt_className } outerDiv.style.cssText = "overflow:auto;" + "position:absolute;top:0;width:100px;height:100px"; var innerDiv = goog.dom.createElement("div"); goog.style.setSize(innerDiv, "200px", "200px"); outerDiv.appendChild(innerDiv); goog.dom.appendChild(goog.dom.getDocument().body, outerDiv); var width = outerDiv.offsetWidth - outerDiv.clientWidth; goog.dom.removeNode(outerDiv); return width }; goog.style.MATRIX_TRANSLATION_REGEX_ = new RegExp("matrix\\([0-9\\.\\-]+, [0-9\\.\\-]+, " + "[0-9\\.\\-]+, [0-9\\.\\-]+, " + "([0-9\\.\\-]+)p?x?, ([0-9\\.\\-]+)p?x?\\)"); goog.style.getCssTranslation = function(element) { var property; if(goog.userAgent.IE) { property = "-ms-transform" }else { if(goog.userAgent.WEBKIT) { property = "-webkit-transform" }else { if(goog.userAgent.OPERA) { property = "-o-transform" }else { if(goog.userAgent.GECKO) { property = "-moz-transform" } } } } var transform; if(property) { transform = goog.style.getStyle_(element, property) } if(!transform) { transform = goog.style.getStyle_(element, "transform") } if(!transform) { return new goog.math.Coordinate(0, 0) } var matches = transform.match(goog.style.MATRIX_TRANSLATION_REGEX_); if(!matches) { return new goog.math.Coordinate(0, 0) } return new goog.math.Coordinate(parseFloat(matches[1]), parseFloat(matches[2])) }; goog.provide("goog.vec.Float32Array"); goog.vec.Float32Array = function(p0) { this.length = (p0.length || p0); for(var i = 0;i < this.length;i++) { this[i] = p0[i] || 0 } }; goog.vec.Float32Array.BYTES_PER_ELEMENT = 4; goog.vec.Float32Array.prototype.BYTES_PER_ELEMENT = 4; goog.vec.Float32Array.prototype.set = function(values, opt_offset) { opt_offset = opt_offset || 0; for(var i = 0;i < values.length && opt_offset + i < this.length;i++) { this[opt_offset + i] = values[i] } }; goog.vec.Float32Array.prototype.toString = Array.prototype.join; if(typeof Float32Array == "undefined") { goog.exportProperty(goog.vec.Float32Array, "BYTES_PER_ELEMENT", goog.vec.Float32Array.BYTES_PER_ELEMENT); goog.exportProperty(goog.vec.Float32Array.prototype, "BYTES_PER_ELEMENT", goog.vec.Float32Array.prototype.BYTES_PER_ELEMENT); goog.exportProperty(goog.vec.Float32Array.prototype, "set", goog.vec.Float32Array.prototype.set); goog.exportProperty(goog.vec.Float32Array.prototype, "toString", goog.vec.Float32Array.prototype.toString); goog.exportSymbol("Float32Array", goog.vec.Float32Array) } ;goog.provide("goog.vec.Float64Array"); goog.vec.Float64Array = function(p0) { this.length = (p0.length || p0); for(var i = 0;i < this.length;i++) { this[i] = p0[i] || 0 } }; goog.vec.Float64Array.BYTES_PER_ELEMENT = 8; goog.vec.Float64Array.prototype.BYTES_PER_ELEMENT = 8; goog.vec.Float64Array.prototype.set = function(values, opt_offset) { opt_offset = opt_offset || 0; for(var i = 0;i < values.length && opt_offset + i < this.length;i++) { this[opt_offset + i] = values[i] } }; goog.vec.Float64Array.prototype.toString = Array.prototype.join; if(typeof Float64Array == "undefined") { try { goog.exportProperty(goog.vec.Float64Array, "BYTES_PER_ELEMENT", goog.vec.Float64Array.BYTES_PER_ELEMENT) }catch(float64ArrayError) { } goog.exportProperty(goog.vec.Float64Array.prototype, "BYTES_PER_ELEMENT", goog.vec.Float64Array.prototype.BYTES_PER_ELEMENT); goog.exportProperty(goog.vec.Float64Array.prototype, "set", goog.vec.Float64Array.prototype.set); goog.exportProperty(goog.vec.Float64Array.prototype, "toString", goog.vec.Float64Array.prototype.toString); goog.exportSymbol("Float64Array", goog.vec.Float64Array) } ;goog.provide("goog.vec"); goog.provide("goog.vec.AnyType"); goog.provide("goog.vec.ArrayType"); goog.provide("goog.vec.Float32"); goog.provide("goog.vec.Float64"); goog.provide("goog.vec.Number"); goog.require("goog.vec.Float32Array"); goog.require("goog.vec.Float64Array"); goog.vec.Float32; goog.vec.Float64; goog.vec.Number; goog.vec.AnyType; goog.vec.ArrayType; goog.vec.EPSILON = 1E-6; goog.provide("goog.vec.Vec3"); goog.require("goog.vec"); goog.vec.Vec3.Float32; goog.vec.Vec3.Float64; goog.vec.Vec3.Number; goog.vec.Vec3.AnyType; goog.vec.Vec3.Type; goog.vec.Vec3.Vec3Like; goog.vec.Vec3.createFloat32 = function() { return new Float32Array(3) }; goog.vec.Vec3.createFloat64 = function() { return new Float64Array(3) }; goog.vec.Vec3.createNumber = function() { var a = new Array(3); goog.vec.Vec3.setFromValues(a, 0, 0, 0); return a }; goog.vec.Vec3.create = function() { return new Float32Array(3) }; goog.vec.Vec3.createFloat32FromArray = function(vec) { var newVec = goog.vec.Vec3.createFloat32(); goog.vec.Vec3.setFromArray(newVec, vec); return newVec }; goog.vec.Vec3.createFloat32FromValues = function(v0, v1, v2) { var a = goog.vec.Vec3.createFloat32(); goog.vec.Vec3.setFromValues(a, v0, v1, v2); return a }; goog.vec.Vec3.cloneFloat32 = goog.vec.Vec3.createFloat32FromArray; goog.vec.Vec3.createFloat64FromArray = function(vec) { var newVec = goog.vec.Vec3.createFloat64(); goog.vec.Vec3.setFromArray(newVec, vec); return newVec }; goog.vec.Vec3.createFloat64FromValues = function(v0, v1, v2) { var vec = goog.vec.Vec3.createFloat64(); goog.vec.Vec3.setFromValues(vec, v0, v1, v2); return vec }; goog.vec.Vec3.cloneFloat64 = goog.vec.Vec3.createFloat64FromArray; goog.vec.Vec3.createFromArray = function(vec) { var newVec = goog.vec.Vec3.create(); goog.vec.Vec3.setFromArray(newVec, vec); return newVec }; goog.vec.Vec3.createFromValues = function(v0, v1, v2) { var vec = goog.vec.Vec3.create(); goog.vec.Vec3.setFromValues(vec, v0, v1, v2); return vec }; goog.vec.Vec3.clone = function(vec) { var newVec = goog.vec.Vec3.create(); goog.vec.Vec3.setFromArray(newVec, vec); return newVec }; goog.vec.Vec3.setFromValues = function(vec, v0, v1, v2) { vec[0] = v0; vec[1] = v1; vec[2] = v2; return vec }; goog.vec.Vec3.setFromArray = function(vec, values) { vec[0] = values[0]; vec[1] = values[1]; vec[2] = values[2]; return vec }; goog.vec.Vec3.add = function(vec0, vec1, resultVec) { resultVec[0] = vec0[0] + vec1[0]; resultVec[1] = vec0[1] + vec1[1]; resultVec[2] = vec0[2] + vec1[2]; return resultVec }; goog.vec.Vec3.subtract = function(vec0, vec1, resultVec) { resultVec[0] = vec0[0] - vec1[0]; resultVec[1] = vec0[1] - vec1[1]; resultVec[2] = vec0[2] - vec1[2]; return resultVec }; goog.vec.Vec3.negate = function(vec0, resultVec) { resultVec[0] = -vec0[0]; resultVec[1] = -vec0[1]; resultVec[2] = -vec0[2]; return resultVec }; goog.vec.Vec3.scale = function(vec0, scalar, resultVec) { resultVec[0] = vec0[0] * scalar; resultVec[1] = vec0[1] * scalar; resultVec[2] = vec0[2] * scalar; return resultVec }; goog.vec.Vec3.magnitudeSquared = function(vec0) { var x = vec0[0], y = vec0[1], z = vec0[2]; return x * x + y * y + z * z }; goog.vec.Vec3.magnitude = function(vec0) { var x = vec0[0], y = vec0[1], z = vec0[2]; return Math.sqrt(x * x + y * y + z * z) }; goog.vec.Vec3.normalize = function(vec0, resultVec) { var ilen = 1 / goog.vec.Vec3.magnitude(vec0); resultVec[0] = vec0[0] * ilen; resultVec[1] = vec0[1] * ilen; resultVec[2] = vec0[2] * ilen; return resultVec }; goog.vec.Vec3.dot = function(v0, v1) { return v0[0] * v1[0] + v0[1] * v1[1] + v0[2] * v1[2] }; goog.vec.Vec3.cross = function(v0, v1, resultVec) { var x0 = v0[0], y0 = v0[1], z0 = v0[2]; var x1 = v1[0], y1 = v1[1], z1 = v1[2]; resultVec[0] = y0 * z1 - z0 * y1; resultVec[1] = z0 * x1 - x0 * z1; resultVec[2] = x0 * y1 - y0 * x1; return resultVec }; goog.vec.Vec3.distanceSquared = function(vec0, vec1) { var x = vec0[0] - vec1[0]; var y = vec0[1] - vec1[1]; var z = vec0[2] - vec1[2]; return x * x + y * y + z * z }; goog.vec.Vec3.distance = function(vec0, vec1) { return Math.sqrt(goog.vec.Vec3.distanceSquared(vec0, vec1)) }; goog.vec.Vec3.direction = function(vec0, vec1, resultVec) { var x = vec1[0] - vec0[0]; var y = vec1[1] - vec0[1]; var z = vec1[2] - vec0[2]; var d = Math.sqrt(x * x + y * y + z * z); if(d) { d = 1 / d; resultVec[0] = x * d; resultVec[1] = y * d; resultVec[2] = z * d }else { resultVec[0] = resultVec[1] = resultVec[2] = 0 } return resultVec }; goog.vec.Vec3.lerp = function(v0, v1, f, resultVec) { var x = v0[0], y = v0[1], z = v0[2]; resultVec[0] = (v1[0] - x) * f + x; resultVec[1] = (v1[1] - y) * f + y; resultVec[2] = (v1[2] - z) * f + z; return resultVec }; goog.vec.Vec3.equals = function(v0, v1) { return v0.length == v1.length && v0[0] == v1[0] && v0[1] == v1[1] && v0[2] == v1[2] }; goog.provide("goog.vec.Vec4"); goog.require("goog.vec"); goog.vec.Vec4.Float32; goog.vec.Vec4.Float64; goog.vec.Vec4.Number; goog.vec.Vec4.AnyType; goog.vec.Vec4.Type; goog.vec.Vec4.Vec4Like; goog.vec.Vec4.createFloat32 = function() { return new Float32Array(4) }; goog.vec.Vec4.createFloat64 = function() { return new Float64Array(4) }; goog.vec.Vec4.createNumber = function() { var v = new Array(4); goog.vec.Vec4.setFromValues(v, 0, 0, 0, 0); return v }; goog.vec.Vec4.create = function() { return new Float32Array(4) }; goog.vec.Vec4.createFromArray = function(vec) { var newVec = goog.vec.Vec4.create(); goog.vec.Vec4.setFromArray(newVec, vec); return newVec }; goog.vec.Vec4.createFloat32FromArray = function(vec) { var newVec = goog.vec.Vec4.createFloat32(); goog.vec.Vec4.setFromArray(newVec, vec); return newVec }; goog.vec.Vec4.createFloat32FromValues = function(v0, v1, v2, v3) { var vec = goog.vec.Vec4.createFloat32(); goog.vec.Vec4.setFromValues(vec, v0, v1, v2, v3); return vec }; goog.vec.Vec4.cloneFloat32 = goog.vec.Vec4.createFloat32FromArray; goog.vec.Vec4.createFloat64FromArray = function(vec) { var newVec = goog.vec.Vec4.createFloat64(); goog.vec.Vec4.setFromArray(newVec, vec); return newVec }; goog.vec.Vec4.createFloat64FromValues = function(v0, v1, v2, v3) { var vec = goog.vec.Vec4.createFloat64(); goog.vec.Vec4.setFromValues(vec, v0, v1, v2, v3); return vec }; goog.vec.Vec4.cloneFloat64 = goog.vec.Vec4.createFloat64FromArray; goog.vec.Vec4.createFromValues = function(v0, v1, v2, v3) { var vec = goog.vec.Vec4.create(); goog.vec.Vec4.setFromValues(vec, v0, v1, v2, v3); return vec }; goog.vec.Vec4.clone = goog.vec.Vec4.createFromArray; goog.vec.Vec4.setFromValues = function(vec, v0, v1, v2, v3) { vec[0] = v0; vec[1] = v1; vec[2] = v2; vec[3] = v3; return vec }; goog.vec.Vec4.setFromArray = function(vec, values) { vec[0] = values[0]; vec[1] = values[1]; vec[2] = values[2]; vec[3] = values[3]; return vec }; goog.vec.Vec4.add = function(vec0, vec1, resultVec) { resultVec[0] = vec0[0] + vec1[0]; resultVec[1] = vec0[1] + vec1[1]; resultVec[2] = vec0[2] + vec1[2]; resultVec[3] = vec0[3] + vec1[3]; return resultVec }; goog.vec.Vec4.subtract = function(vec0, vec1, resultVec) { resultVec[0] = vec0[0] - vec1[0]; resultVec[1] = vec0[1] - vec1[1]; resultVec[2] = vec0[2] - vec1[2]; resultVec[3] = vec0[3] - vec1[3]; return resultVec }; goog.vec.Vec4.negate = function(vec0, resultVec) { resultVec[0] = -vec0[0]; resultVec[1] = -vec0[1]; resultVec[2] = -vec0[2]; resultVec[3] = -vec0[3]; return resultVec }; goog.vec.Vec4.scale = function(vec0, scalar, resultVec) { resultVec[0] = vec0[0] * scalar; resultVec[1] = vec0[1] * scalar; resultVec[2] = vec0[2] * scalar; resultVec[3] = vec0[3] * scalar; return resultVec }; goog.vec.Vec4.magnitudeSquared = function(vec0) { var x = vec0[0], y = vec0[1], z = vec0[2], w = vec0[3]; return x * x + y * y + z * z + w * w }; goog.vec.Vec4.magnitude = function(vec0) { var x = vec0[0], y = vec0[1], z = vec0[2], w = vec0[3]; return Math.sqrt(x * x + y * y + z * z + w * w) }; goog.vec.Vec4.normalize = function(vec0, resultVec) { var ilen = 1 / goog.vec.Vec4.magnitude(vec0); resultVec[0] = vec0[0] * ilen; resultVec[1] = vec0[1] * ilen; resultVec[2] = vec0[2] * ilen; resultVec[3] = vec0[3] * ilen; return resultVec }; goog.vec.Vec4.dot = function(v0, v1) { return v0[0] * v1[0] + v0[1] * v1[1] + v0[2] * v1[2] + v0[3] * v1[3] }; goog.vec.Vec4.lerp = function(v0, v1, f, resultVec) { var x = v0[0], y = v0[1], z = v0[2], w = v0[3]; resultVec[0] = (v1[0] - x) * f + x; resultVec[1] = (v1[1] - y) * f + y; resultVec[2] = (v1[2] - z) * f + z; resultVec[3] = (v1[3] - w) * f + w; return resultVec }; goog.vec.Vec4.equals = function(v0, v1) { return v0.length == v1.length && v0[0] == v1[0] && v0[1] == v1[1] && v0[2] == v1[2] && v0[3] == v1[3] }; goog.provide("goog.vec.Mat4"); goog.require("goog.vec"); goog.require("goog.vec.Vec3"); goog.require("goog.vec.Vec4"); goog.vec.Mat4.Float32; goog.vec.Mat4.Float64; goog.vec.Mat4.Number; goog.vec.Mat4.AnyType; goog.vec.Mat4.Type; goog.vec.Mat4.Mat4Like; goog.vec.Mat4.createFloat32 = function() { return new Float32Array(16) }; goog.vec.Mat4.createFloat64 = function() { return new Float64Array(16) }; goog.vec.Mat4.createNumber = function() { var a = new Array(16); goog.vec.Mat4.setFromValues(a, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return a }; goog.vec.Mat4.create = function() { return goog.vec.Mat4.createFloat32() }; goog.vec.Mat4.createFloat32Identity = function() { var mat = goog.vec.Mat4.createFloat32(); mat[0] = mat[5] = mat[10] = mat[15] = 1; return mat }; goog.vec.Mat4.createFloat64Identity = function() { var mat = goog.vec.Mat4.createFloat64(); mat[0] = mat[5] = mat[10] = mat[15] = 1; return mat }; goog.vec.Mat4.createNumberIdentity = function() { var a = new Array(16); goog.vec.Mat4.setFromValues(a, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); return a }; goog.vec.Mat4.createIdentity = function() { return goog.vec.Mat4.createFloat32Identity() }; goog.vec.Mat4.createFloat32FromArray = function(matrix) { var newMatrix = goog.vec.Mat4.createFloat32(); goog.vec.Mat4.setFromArray(newMatrix, matrix); return newMatrix }; goog.vec.Mat4.createFloat32FromValues = function(v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) { var newMatrix = goog.vec.Mat4.createFloat32(); goog.vec.Mat4.setFromValues(newMatrix, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33); return newMatrix }; goog.vec.Mat4.cloneFloat32 = goog.vec.Mat4.createFloat32FromArray; goog.vec.Mat4.createFloat64FromArray = function(matrix) { var newMatrix = goog.vec.Mat4.createFloat64(); goog.vec.Mat4.setFromArray(newMatrix, matrix); return newMatrix }; goog.vec.Mat4.createFloat64FromValues = function(v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) { var newMatrix = goog.vec.Mat4.createFloat64(); goog.vec.Mat4.setFromValues(newMatrix, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33); return newMatrix }; goog.vec.Mat4.cloneFloat64 = goog.vec.Mat4.createFloat64FromArray; goog.vec.Mat4.createFromArray = function(matrix) { var newMatrix = goog.vec.Mat4.createFloat32(); goog.vec.Mat4.setFromArray(newMatrix, matrix); return newMatrix }; goog.vec.Mat4.createFromValues = function(v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) { return goog.vec.Mat4.createFloat32FromValues(v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) }; goog.vec.Mat4.clone = goog.vec.Mat4.createFromArray; goog.vec.Mat4.getElement = function(mat, row, column) { return mat[row + column * 4] }; goog.vec.Mat4.setElement = function(mat, row, column, value) { mat[row + column * 4] = value; return mat }; goog.vec.Mat4.setFromValues = function(mat, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33) { mat[0] = v00; mat[1] = v10; mat[2] = v20; mat[3] = v30; mat[4] = v01; mat[5] = v11; mat[6] = v21; mat[7] = v31; mat[8] = v02; mat[9] = v12; mat[10] = v22; mat[11] = v32; mat[12] = v03; mat[13] = v13; mat[14] = v23; mat[15] = v33; return mat }; goog.vec.Mat4.setFromArray = function(mat, values) { mat[0] = values[0]; mat[1] = values[1]; mat[2] = values[2]; mat[3] = values[3]; mat[4] = values[4]; mat[5] = values[5]; mat[6] = values[6]; mat[7] = values[7]; mat[8] = values[8]; mat[9] = values[9]; mat[10] = values[10]; mat[11] = values[11]; mat[12] = values[12]; mat[13] = values[13]; mat[14] = values[14]; mat[15] = values[15]; return mat }; goog.vec.Mat4.setFromRowMajorArray = function(mat, values) { mat[0] = values[0]; mat[1] = values[4]; mat[2] = values[8]; mat[3] = values[12]; mat[4] = values[1]; mat[5] = values[5]; mat[6] = values[9]; mat[7] = values[13]; mat[8] = values[2]; mat[9] = values[6]; mat[10] = values[10]; mat[11] = values[14]; mat[12] = values[3]; mat[13] = values[7]; mat[14] = values[11]; mat[15] = values[15]; return mat }; goog.vec.Mat4.setDiagonalValues = function(mat, v00, v11, v22, v33) { mat[0] = v00; mat[5] = v11; mat[10] = v22; mat[15] = v33; return mat }; goog.vec.Mat4.setDiagonal = function(mat, vec) { mat[0] = vec[0]; mat[5] = vec[1]; mat[10] = vec[2]; mat[15] = vec[3]; return mat }; goog.vec.Mat4.getDiagonal = function(mat, vec, opt_diagonal) { if(!opt_diagonal) { vec[0] = mat[0]; vec[1] = mat[5]; vec[2] = mat[10]; vec[3] = mat[15] }else { var offset = opt_diagonal > 0 ? 4 * opt_diagonal : -opt_diagonal; for(var i = 0;i < 4 - Math.abs(opt_diagonal);i++) { vec[i] = mat[offset + 5 * i] } } return vec }; goog.vec.Mat4.setColumnValues = function(mat, column, v0, v1, v2, v3) { var i = column * 4; mat[i] = v0; mat[i + 1] = v1; mat[i + 2] = v2; mat[i + 3] = v3; return mat }; goog.vec.Mat4.setColumn = function(mat, column, vec) { var i = column * 4; mat[i] = vec[0]; mat[i + 1] = vec[1]; mat[i + 2] = vec[2]; mat[i + 3] = vec[3]; return mat }; goog.vec.Mat4.getColumn = function(mat, column, vec) { var i = column * 4; vec[0] = mat[i]; vec[1] = mat[i + 1]; vec[2] = mat[i + 2]; vec[3] = mat[i + 3]; return vec }; goog.vec.Mat4.setColumns = function(mat, vec0, vec1, vec2, vec3) { goog.vec.Mat4.setColumn(mat, 0, vec0); goog.vec.Mat4.setColumn(mat, 1, vec1); goog.vec.Mat4.setColumn(mat, 2, vec2); goog.vec.Mat4.setColumn(mat, 3, vec3); return mat }; goog.vec.Mat4.getColumns = function(mat, vec0, vec1, vec2, vec3) { goog.vec.Mat4.getColumn(mat, 0, vec0); goog.vec.Mat4.getColumn(mat, 1, vec1); goog.vec.Mat4.getColumn(mat, 2, vec2); goog.vec.Mat4.getColumn(mat, 3, vec3) }; goog.vec.Mat4.setRowValues = function(mat, row, v0, v1, v2, v3) { mat[row] = v0; mat[row + 4] = v1; mat[row + 8] = v2; mat[row + 12] = v3; return mat }; goog.vec.Mat4.setRow = function(mat, row, vec) { mat[row] = vec[0]; mat[row + 4] = vec[1]; mat[row + 8] = vec[2]; mat[row + 12] = vec[3]; return mat }; goog.vec.Mat4.getRow = function(mat, row, vec) { vec[0] = mat[row]; vec[1] = mat[row + 4]; vec[2] = mat[row + 8]; vec[3] = mat[row + 12]; return vec }; goog.vec.Mat4.setRows = function(mat, vec0, vec1, vec2, vec3) { goog.vec.Mat4.setRow(mat, 0, vec0); goog.vec.Mat4.setRow(mat, 1, vec1); goog.vec.Mat4.setRow(mat, 2, vec2); goog.vec.Mat4.setRow(mat, 3, vec3); return mat }; goog.vec.Mat4.getRows = function(mat, vec0, vec1, vec2, vec3) { goog.vec.Mat4.getRow(mat, 0, vec0); goog.vec.Mat4.getRow(mat, 1, vec1); goog.vec.Mat4.getRow(mat, 2, vec2); goog.vec.Mat4.getRow(mat, 3, vec3) }; goog.vec.Mat4.makeZero = function(mat) { mat[0] = 0; mat[1] = 0; mat[2] = 0; mat[3] = 0; mat[4] = 0; mat[5] = 0; mat[6] = 0; mat[7] = 0; mat[8] = 0; mat[9] = 0; mat[10] = 0; mat[11] = 0; mat[12] = 0; mat[13] = 0; mat[14] = 0; mat[15] = 0; return mat }; goog.vec.Mat4.makeIdentity = function(mat) { mat[0] = 1; mat[1] = 0; mat[2] = 0; mat[3] = 0; mat[4] = 0; mat[5] = 1; mat[6] = 0; mat[7] = 0; mat[8] = 0; mat[9] = 0; mat[10] = 1; mat[11] = 0; mat[12] = 0; mat[13] = 0; mat[14] = 0; mat[15] = 1; return mat }; goog.vec.Mat4.addMat = function(mat0, mat1, resultMat) { resultMat[0] = mat0[0] + mat1[0]; resultMat[1] = mat0[1] + mat1[1]; resultMat[2] = mat0[2] + mat1[2]; resultMat[3] = mat0[3] + mat1[3]; resultMat[4] = mat0[4] + mat1[4]; resultMat[5] = mat0[5] + mat1[5]; resultMat[6] = mat0[6] + mat1[6]; resultMat[7] = mat0[7] + mat1[7]; resultMat[8] = mat0[8] + mat1[8]; resultMat[9] = mat0[9] + mat1[9]; resultMat[10] = mat0[10] + mat1[10]; resultMat[11] = mat0[11] + mat1[11]; resultMat[12] = mat0[12] + mat1[12]; resultMat[13] = mat0[13] + mat1[13]; resultMat[14] = mat0[14] + mat1[14]; resultMat[15] = mat0[15] + mat1[15]; return resultMat }; goog.vec.Mat4.subMat = function(mat0, mat1, resultMat) { resultMat[0] = mat0[0] - mat1[0]; resultMat[1] = mat0[1] - mat1[1]; resultMat[2] = mat0[2] - mat1[2]; resultMat[3] = mat0[3] - mat1[3]; resultMat[4] = mat0[4] - mat1[4]; resultMat[5] = mat0[5] - mat1[5]; resultMat[6] = mat0[6] - mat1[6]; resultMat[7] = mat0[7] - mat1[7]; resultMat[8] = mat0[8] - mat1[8]; resultMat[9] = mat0[9] - mat1[9]; resultMat[10] = mat0[10] - mat1[10]; resultMat[11] = mat0[11] - mat1[11]; resultMat[12] = mat0[12] - mat1[12]; resultMat[13] = mat0[13] - mat1[13]; resultMat[14] = mat0[14] - mat1[14]; resultMat[15] = mat0[15] - mat1[15]; return resultMat }; goog.vec.Mat4.multScalar = function(mat, scalar, resultMat) { resultMat[0] = mat[0] * scalar; resultMat[1] = mat[1] * scalar; resultMat[2] = mat[2] * scalar; resultMat[3] = mat[3] * scalar; resultMat[4] = mat[4] * scalar; resultMat[5] = mat[5] * scalar; resultMat[6] = mat[6] * scalar; resultMat[7] = mat[7] * scalar; resultMat[8] = mat[8] * scalar; resultMat[9] = mat[9] * scalar; resultMat[10] = mat[10] * scalar; resultMat[11] = mat[11] * scalar; resultMat[12] = mat[12] * scalar; resultMat[13] = mat[13] * scalar; resultMat[14] = mat[14] * scalar; resultMat[15] = mat[15] * scalar; return resultMat }; goog.vec.Mat4.multMat = function(mat0, mat1, resultMat) { var a00 = mat0[0], a10 = mat0[1], a20 = mat0[2], a30 = mat0[3]; var a01 = mat0[4], a11 = mat0[5], a21 = mat0[6], a31 = mat0[7]; var a02 = mat0[8], a12 = mat0[9], a22 = mat0[10], a32 = mat0[11]; var a03 = mat0[12], a13 = mat0[13], a23 = mat0[14], a33 = mat0[15]; var b00 = mat1[0], b10 = mat1[1], b20 = mat1[2], b30 = mat1[3]; var b01 = mat1[4], b11 = mat1[5], b21 = mat1[6], b31 = mat1[7]; var b02 = mat1[8], b12 = mat1[9], b22 = mat1[10], b32 = mat1[11]; var b03 = mat1[12], b13 = mat1[13], b23 = mat1[14], b33 = mat1[15]; resultMat[0] = a00 * b00 + a01 * b10 + a02 * b20 + a03 * b30; resultMat[1] = a10 * b00 + a11 * b10 + a12 * b20 + a13 * b30; resultMat[2] = a20 * b00 + a21 * b10 + a22 * b20 + a23 * b30; resultMat[3] = a30 * b00 + a31 * b10 + a32 * b20 + a33 * b30; resultMat[4] = a00 * b01 + a01 * b11 + a02 * b21 + a03 * b31; resultMat[5] = a10 * b01 + a11 * b11 + a12 * b21 + a13 * b31; resultMat[6] = a20 * b01 + a21 * b11 + a22 * b21 + a23 * b31; resultMat[7] = a30 * b01 + a31 * b11 + a32 * b21 + a33 * b31; resultMat[8] = a00 * b02 + a01 * b12 + a02 * b22 + a03 * b32; resultMat[9] = a10 * b02 + a11 * b12 + a12 * b22 + a13 * b32; resultMat[10] = a20 * b02 + a21 * b12 + a22 * b22 + a23 * b32; resultMat[11] = a30 * b02 + a31 * b12 + a32 * b22 + a33 * b32; resultMat[12] = a00 * b03 + a01 * b13 + a02 * b23 + a03 * b33; resultMat[13] = a10 * b03 + a11 * b13 + a12 * b23 + a13 * b33; resultMat[14] = a20 * b03 + a21 * b13 + a22 * b23 + a23 * b33; resultMat[15] = a30 * b03 + a31 * b13 + a32 * b23 + a33 * b33; return resultMat }; goog.vec.Mat4.transpose = function(mat, resultMat) { if(resultMat == mat) { var a10 = mat[1], a20 = mat[2], a30 = mat[3]; var a21 = mat[6], a31 = mat[7]; var a32 = mat[11]; resultMat[1] = mat[4]; resultMat[2] = mat[8]; resultMat[3] = mat[12]; resultMat[4] = a10; resultMat[6] = mat[9]; resultMat[7] = mat[13]; resultMat[8] = a20; resultMat[9] = a21; resultMat[11] = mat[14]; resultMat[12] = a30; resultMat[13] = a31; resultMat[14] = a32 }else { resultMat[0] = mat[0]; resultMat[1] = mat[4]; resultMat[2] = mat[8]; resultMat[3] = mat[12]; resultMat[4] = mat[1]; resultMat[5] = mat[5]; resultMat[6] = mat[9]; resultMat[7] = mat[13]; resultMat[8] = mat[2]; resultMat[9] = mat[6]; resultMat[10] = mat[10]; resultMat[11] = mat[14]; resultMat[12] = mat[3]; resultMat[13] = mat[7]; resultMat[14] = mat[11]; resultMat[15] = mat[15] } return resultMat }; goog.vec.Mat4.determinant = function(mat) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var m03 = mat[12], m13 = mat[13], m23 = mat[14], m33 = mat[15]; var a0 = m00 * m11 - m10 * m01; var a1 = m00 * m21 - m20 * m01; var a2 = m00 * m31 - m30 * m01; var a3 = m10 * m21 - m20 * m11; var a4 = m10 * m31 - m30 * m11; var a5 = m20 * m31 - m30 * m21; var b0 = m02 * m13 - m12 * m03; var b1 = m02 * m23 - m22 * m03; var b2 = m02 * m33 - m32 * m03; var b3 = m12 * m23 - m22 * m13; var b4 = m12 * m33 - m32 * m13; var b5 = m22 * m33 - m32 * m23; return a0 * b5 - a1 * b4 + a2 * b3 + a3 * b2 - a4 * b1 + a5 * b0 }; goog.vec.Mat4.invert = function(mat, resultMat) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var m03 = mat[12], m13 = mat[13], m23 = mat[14], m33 = mat[15]; var a0 = m00 * m11 - m10 * m01; var a1 = m00 * m21 - m20 * m01; var a2 = m00 * m31 - m30 * m01; var a3 = m10 * m21 - m20 * m11; var a4 = m10 * m31 - m30 * m11; var a5 = m20 * m31 - m30 * m21; var b0 = m02 * m13 - m12 * m03; var b1 = m02 * m23 - m22 * m03; var b2 = m02 * m33 - m32 * m03; var b3 = m12 * m23 - m22 * m13; var b4 = m12 * m33 - m32 * m13; var b5 = m22 * m33 - m32 * m23; var det = a0 * b5 - a1 * b4 + a2 * b3 + a3 * b2 - a4 * b1 + a5 * b0; if(det == 0) { return false } var idet = 1 / det; resultMat[0] = (m11 * b5 - m21 * b4 + m31 * b3) * idet; resultMat[1] = (-m10 * b5 + m20 * b4 - m30 * b3) * idet; resultMat[2] = (m13 * a5 - m23 * a4 + m33 * a3) * idet; resultMat[3] = (-m12 * a5 + m22 * a4 - m32 * a3) * idet; resultMat[4] = (-m01 * b5 + m21 * b2 - m31 * b1) * idet; resultMat[5] = (m00 * b5 - m20 * b2 + m30 * b1) * idet; resultMat[6] = (-m03 * a5 + m23 * a2 - m33 * a1) * idet; resultMat[7] = (m02 * a5 - m22 * a2 + m32 * a1) * idet; resultMat[8] = (m01 * b4 - m11 * b2 + m31 * b0) * idet; resultMat[9] = (-m00 * b4 + m10 * b2 - m30 * b0) * idet; resultMat[10] = (m03 * a4 - m13 * a2 + m33 * a0) * idet; resultMat[11] = (-m02 * a4 + m12 * a2 - m32 * a0) * idet; resultMat[12] = (-m01 * b3 + m11 * b1 - m21 * b0) * idet; resultMat[13] = (m00 * b3 - m10 * b1 + m20 * b0) * idet; resultMat[14] = (-m03 * a3 + m13 * a1 - m23 * a0) * idet; resultMat[15] = (m02 * a3 - m12 * a1 + m22 * a0) * idet; return true }; goog.vec.Mat4.equals = function(mat0, mat1) { return mat0.length == mat1.length && mat0[0] == mat1[0] && mat0[1] == mat1[1] && mat0[2] == mat1[2] && mat0[3] == mat1[3] && mat0[4] == mat1[4] && mat0[5] == mat1[5] && mat0[6] == mat1[6] && mat0[7] == mat1[7] && mat0[8] == mat1[8] && mat0[9] == mat1[9] && mat0[10] == mat1[10] && mat0[11] == mat1[11] && mat0[12] == mat1[12] && mat0[13] == mat1[13] && mat0[14] == mat1[14] && mat0[15] == mat1[15] }; goog.vec.Mat4.multVec3 = function(mat, vec, resultVec) { var x = vec[0], y = vec[1], z = vec[2]; resultVec[0] = x * mat[0] + y * mat[4] + z * mat[8] + mat[12]; resultVec[1] = x * mat[1] + y * mat[5] + z * mat[9] + mat[13]; resultVec[2] = x * mat[2] + y * mat[6] + z * mat[10] + mat[14]; return resultVec }; goog.vec.Mat4.multVec3NoTranslate = function(mat, vec, resultVec) { var x = vec[0], y = vec[1], z = vec[2]; resultVec[0] = x * mat[0] + y * mat[4] + z * mat[8]; resultVec[1] = x * mat[1] + y * mat[5] + z * mat[9]; resultVec[2] = x * mat[2] + y * mat[6] + z * mat[10]; return resultVec }; goog.vec.Mat4.multVec3Projective = function(mat, vec, resultVec) { var x = vec[0], y = vec[1], z = vec[2]; var invw = 1 / (x * mat[3] + y * mat[7] + z * mat[11] + mat[15]); resultVec[0] = (x * mat[0] + y * mat[4] + z * mat[8] + mat[12]) * invw; resultVec[1] = (x * mat[1] + y * mat[5] + z * mat[9] + mat[13]) * invw; resultVec[2] = (x * mat[2] + y * mat[6] + z * mat[10] + mat[14]) * invw; return resultVec }; goog.vec.Mat4.multVec4 = function(mat, vec, resultVec) { var x = vec[0], y = vec[1], z = vec[2], w = vec[3]; resultVec[0] = x * mat[0] + y * mat[4] + z * mat[8] + w * mat[12]; resultVec[1] = x * mat[1] + y * mat[5] + z * mat[9] + w * mat[13]; resultVec[2] = x * mat[2] + y * mat[6] + z * mat[10] + w * mat[14]; resultVec[3] = x * mat[3] + y * mat[7] + z * mat[11] + w * mat[15]; return resultVec }; goog.vec.Mat4.makeTranslate = function(mat, x, y, z) { goog.vec.Mat4.makeIdentity(mat); return goog.vec.Mat4.setColumnValues(mat, 3, x, y, z, 1) }; goog.vec.Mat4.makeScale = function(mat, x, y, z) { goog.vec.Mat4.makeIdentity(mat); return goog.vec.Mat4.setDiagonalValues(mat, x, y, z, 1) }; goog.vec.Mat4.makeRotate = function(mat, angle, ax, ay, az) { var c = Math.cos(angle); var d = 1 - c; var s = Math.sin(angle); return goog.vec.Mat4.setFromValues(mat, ax * ax * d + c, ax * ay * d + az * s, ax * az * d - ay * s, 0, ax * ay * d - az * s, ay * ay * d + c, ay * az * d + ax * s, 0, ax * az * d + ay * s, ay * az * d - ax * s, az * az * d + c, 0, 0, 0, 0, 1) }; goog.vec.Mat4.makeRotateX = function(mat, angle) { var c = Math.cos(angle); var s = Math.sin(angle); return goog.vec.Mat4.setFromValues(mat, 1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1) }; goog.vec.Mat4.makeRotateY = function(mat, angle) { var c = Math.cos(angle); var s = Math.sin(angle); return goog.vec.Mat4.setFromValues(mat, c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1) }; goog.vec.Mat4.makeRotateZ = function(mat, angle) { var c = Math.cos(angle); var s = Math.sin(angle); return goog.vec.Mat4.setFromValues(mat, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) }; goog.vec.Mat4.makeFrustum = function(mat, left, right, bottom, top, near, far) { var x = 2 * near / (right - left); var y = 2 * near / (top - bottom); var a = (right + left) / (right - left); var b = (top + bottom) / (top - bottom); var c = -(far + near) / (far - near); var d = -(2 * far * near) / (far - near); return goog.vec.Mat4.setFromValues(mat, x, 0, 0, 0, 0, y, 0, 0, a, b, c, -1, 0, 0, d, 0) }; goog.vec.Mat4.makePerspective = function(mat, fovy, aspect, near, far) { var angle = fovy / 2; var dz = far - near; var sinAngle = Math.sin(angle); if(dz == 0 || sinAngle == 0 || aspect == 0) { return mat } var cot = Math.cos(angle) / sinAngle; return goog.vec.Mat4.setFromValues(mat, cot / aspect, 0, 0, 0, 0, cot, 0, 0, 0, 0, -(far + near) / dz, -1, 0, 0, -(2 * near * far) / dz, 0) }; goog.vec.Mat4.makeOrtho = function(mat, left, right, bottom, top, near, far) { var x = 2 / (right - left); var y = 2 / (top - bottom); var z = -2 / (far - near); var a = -(right + left) / (right - left); var b = -(top + bottom) / (top - bottom); var c = -(far + near) / (far - near); return goog.vec.Mat4.setFromValues(mat, x, 0, 0, 0, 0, y, 0, 0, 0, 0, z, 0, a, b, c, 1) }; goog.vec.Mat4.makeLookAt = function(mat, eyePt, centerPt, worldUpVec) { var fwdVec = goog.vec.Mat4.tmpVec4_[0]; goog.vec.Vec3.subtract(centerPt, eyePt, fwdVec); goog.vec.Vec3.normalize(fwdVec, fwdVec); fwdVec[3] = 0; var sideVec = goog.vec.Mat4.tmpVec4_[1]; goog.vec.Vec3.cross(fwdVec, worldUpVec, sideVec); goog.vec.Vec3.normalize(sideVec, sideVec); sideVec[3] = 0; var upVec = goog.vec.Mat4.tmpVec4_[2]; goog.vec.Vec3.cross(sideVec, fwdVec, upVec); goog.vec.Vec3.normalize(upVec, upVec); upVec[3] = 0; goog.vec.Vec3.negate(fwdVec, fwdVec); goog.vec.Mat4.setRow(mat, 0, sideVec); goog.vec.Mat4.setRow(mat, 1, upVec); goog.vec.Mat4.setRow(mat, 2, fwdVec); goog.vec.Mat4.setRowValues(mat, 3, 0, 0, 0, 1); goog.vec.Mat4.translate(mat, -eyePt[0], -eyePt[1], -eyePt[2]); return mat }; goog.vec.Mat4.toLookAt = function(mat, eyePt, fwdVec, worldUpVec) { var matInverse = goog.vec.Mat4.tmpMat4_[0]; if(!goog.vec.Mat4.invert(mat, matInverse)) { return false } if(eyePt) { eyePt[0] = matInverse[12]; eyePt[1] = matInverse[13]; eyePt[2] = matInverse[14] } if(fwdVec || worldUpVec) { if(!fwdVec) { fwdVec = goog.vec.Mat4.tmpVec3_[0] } fwdVec[0] = -mat[2]; fwdVec[1] = -mat[6]; fwdVec[2] = -mat[10]; goog.vec.Vec3.normalize(fwdVec, fwdVec) } if(worldUpVec) { var side = goog.vec.Mat4.tmpVec3_[1]; side[0] = mat[0]; side[1] = mat[4]; side[2] = mat[8]; goog.vec.Vec3.cross(side, fwdVec, worldUpVec); goog.vec.Vec3.normalize(worldUpVec, worldUpVec) } return true }; goog.vec.Mat4.makeEulerZXZ = function(mat, theta1, theta2, theta3) { var c1 = Math.cos(theta1); var s1 = Math.sin(theta1); var c2 = Math.cos(theta2); var s2 = Math.sin(theta2); var c3 = Math.cos(theta3); var s3 = Math.sin(theta3); mat[0] = c1 * c3 - c2 * s1 * s3; mat[1] = c2 * c1 * s3 + c3 * s1; mat[2] = s3 * s2; mat[3] = 0; mat[4] = -c1 * s3 - c3 * c2 * s1; mat[5] = c1 * c2 * c3 - s1 * s3; mat[6] = c3 * s2; mat[7] = 0; mat[8] = s2 * s1; mat[9] = -c1 * s2; mat[10] = c2; mat[11] = 0; mat[12] = 0; mat[13] = 0; mat[14] = 0; mat[15] = 1; return mat }; goog.vec.Mat4.toEulerZXZ = function(mat, euler, opt_theta2IsNegative) { var sinTheta2 = Math.sqrt(mat[2] * mat[2] + mat[6] * mat[6]); var signTheta2 = opt_theta2IsNegative ? -1 : 1; if(sinTheta2 > goog.vec.EPSILON) { euler[2] = Math.atan2(mat[2] * signTheta2, mat[6] * signTheta2); euler[1] = Math.atan2(sinTheta2 * signTheta2, mat[10]); euler[0] = Math.atan2(mat[8] * signTheta2, -mat[9] * signTheta2) }else { euler[0] = 0; euler[1] = Math.atan2(sinTheta2 * signTheta2, mat[10]); euler[2] = Math.atan2(mat[1], mat[0]) } euler[0] = (euler[0] + Math.PI * 2) % (Math.PI * 2); euler[2] = (euler[2] + Math.PI * 2) % (Math.PI * 2); euler[1] = (euler[1] * signTheta2 + Math.PI * 2) % (Math.PI * 2) * signTheta2; return euler }; goog.vec.Mat4.translate = function(mat, x, y, z) { return goog.vec.Mat4.setColumnValues(mat, 3, mat[0] * x + mat[4] * y + mat[8] * z + mat[12], mat[1] * x + mat[5] * y + mat[9] * z + mat[13], mat[2] * x + mat[6] * y + mat[10] * z + mat[14], mat[3] * x + mat[7] * y + mat[11] * z + mat[15]) }; goog.vec.Mat4.scale = function(mat, x, y, z) { return goog.vec.Mat4.setFromValues(mat, mat[0] * x, mat[1] * x, mat[2] * x, mat[3] * x, mat[4] * y, mat[5] * y, mat[6] * y, mat[7] * y, mat[8] * z, mat[9] * z, mat[10] * z, mat[11] * z, mat[12], mat[13], mat[14], mat[15]) }; goog.vec.Mat4.rotate = function(mat, angle, x, y, z) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var m03 = mat[12], m13 = mat[13], m23 = mat[14], m33 = mat[15]; var cosAngle = Math.cos(angle); var sinAngle = Math.sin(angle); var diffCosAngle = 1 - cosAngle; var r00 = x * x * diffCosAngle + cosAngle; var r10 = x * y * diffCosAngle + z * sinAngle; var r20 = x * z * diffCosAngle - y * sinAngle; var r01 = x * y * diffCosAngle - z * sinAngle; var r11 = y * y * diffCosAngle + cosAngle; var r21 = y * z * diffCosAngle + x * sinAngle; var r02 = x * z * diffCosAngle + y * sinAngle; var r12 = y * z * diffCosAngle - x * sinAngle; var r22 = z * z * diffCosAngle + cosAngle; return goog.vec.Mat4.setFromValues(mat, m00 * r00 + m01 * r10 + m02 * r20, m10 * r00 + m11 * r10 + m12 * r20, m20 * r00 + m21 * r10 + m22 * r20, m30 * r00 + m31 * r10 + m32 * r20, m00 * r01 + m01 * r11 + m02 * r21, m10 * r01 + m11 * r11 + m12 * r21, m20 * r01 + m21 * r11 + m22 * r21, m30 * r01 + m31 * r11 + m32 * r21, m00 * r02 + m01 * r12 + m02 * r22, m10 * r02 + m11 * r12 + m12 * r22, m20 * r02 + m21 * r12 + m22 * r22, m30 * r02 + m31 * r12 + m32 * r22, m03, m13, m23, m33) }; goog.vec.Mat4.rotateX = function(mat, angle) { var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var c = Math.cos(angle); var s = Math.sin(angle); mat[4] = m01 * c + m02 * s; mat[5] = m11 * c + m12 * s; mat[6] = m21 * c + m22 * s; mat[7] = m31 * c + m32 * s; mat[8] = m01 * -s + m02 * c; mat[9] = m11 * -s + m12 * c; mat[10] = m21 * -s + m22 * c; mat[11] = m31 * -s + m32 * c; return mat }; goog.vec.Mat4.rotateY = function(mat, angle) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m02 = mat[8], m12 = mat[9], m22 = mat[10], m32 = mat[11]; var c = Math.cos(angle); var s = Math.sin(angle); mat[0] = m00 * c + m02 * -s; mat[1] = m10 * c + m12 * -s; mat[2] = m20 * c + m22 * -s; mat[3] = m30 * c + m32 * -s; mat[8] = m00 * s + m02 * c; mat[9] = m10 * s + m12 * c; mat[10] = m20 * s + m22 * c; mat[11] = m30 * s + m32 * c; return mat }; goog.vec.Mat4.rotateZ = function(mat, angle) { var m00 = mat[0], m10 = mat[1], m20 = mat[2], m30 = mat[3]; var m01 = mat[4], m11 = mat[5], m21 = mat[6], m31 = mat[7]; var c = Math.cos(angle); var s = Math.sin(angle); mat[0] = m00 * c + m01 * s; mat[1] = m10 * c + m11 * s; mat[2] = m20 * c + m21 * s; mat[3] = m30 * c + m31 * s; mat[4] = m00 * -s + m01 * c; mat[5] = m10 * -s + m11 * c; mat[6] = m20 * -s + m21 * c; mat[7] = m30 * -s + m31 * c; return mat }; goog.vec.Mat4.getTranslation = function(mat, translation) { translation[0] = mat[12]; translation[1] = mat[13]; translation[2] = mat[14]; return translation }; goog.vec.Mat4.tmpVec3_ = [goog.vec.Vec3.createFloat64(), goog.vec.Vec3.createFloat64()]; goog.vec.Mat4.tmpVec4_ = [goog.vec.Vec4.createFloat64(), goog.vec.Vec4.createFloat64(), goog.vec.Vec4.createFloat64()]; goog.vec.Mat4.tmpMat4_ = [goog.vec.Mat4.createFloat64()]; goog.provide("ol.dom"); goog.provide("ol.dom.BrowserFeature"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.style"); goog.require("goog.userAgent"); goog.require("goog.vec.Mat4"); goog.require("ol"); ol.dom.createCanvasContext2D = function(opt_width, opt_height) { var canvas = goog.dom.createElement(goog.dom.TagName.CANVAS); if(goog.isDef(opt_width)) { canvas.width = opt_width } if(goog.isDef(opt_height)) { canvas.height = opt_height } return canvas.getContext("2d") }; ol.dom.BrowserFeature = {USE_MS_MATRIX_TRANSFORM:ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE, USE_MS_ALPHA_FILTER:ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE}; ol.dom.canUseCssTransform = function() { var canUseCssTransform; return function() { if(!goog.isDef(canUseCssTransform)) { goog.asserts.assert(!goog.isNull(document.body)); if(!goog.global.getComputedStyle) { canUseCssTransform = false }else { var el = goog.dom.createElement(goog.dom.TagName.P), has2d, transforms = {"webkitTransform":"-webkit-transform", "OTransform":"-o-transform", "msTransform":"-ms-transform", "MozTransform":"-moz-transform", "transform":"transform"}; goog.dom.appendChild(document.body, el); for(var t in transforms) { if(t in el.style) { el.style[t] = "translate(1px,1px)"; has2d = goog.global.getComputedStyle(el).getPropertyValue(transforms[t]) } } goog.dom.removeNode(el); canUseCssTransform = has2d && has2d !== "none" } } return canUseCssTransform } }(); ol.dom.canUseCssTransform3D = function() { var canUseCssTransform3D; return function() { if(!goog.isDef(canUseCssTransform3D)) { goog.asserts.assert(!goog.isNull(document.body)); if(!goog.global.getComputedStyle) { canUseCssTransform3D = false }else { var el = goog.dom.createElement(goog.dom.TagName.P), has3d, transforms = {"webkitTransform":"-webkit-transform", "OTransform":"-o-transform", "msTransform":"-ms-transform", "MozTransform":"-moz-transform", "transform":"transform"}; goog.dom.appendChild(document.body, el); for(var t in transforms) { if(t in el.style) { el.style[t] = "translate3d(1px,1px,1px)"; has3d = goog.global.getComputedStyle(el).getPropertyValue(transforms[t]) } } goog.dom.removeNode(el); canUseCssTransform3D = has3d && has3d !== "none" } } return canUseCssTransform3D } }(); ol.dom.setTransform = function(element, value) { var style = element.style; style.WebkitTransform = value; style.MozTransform = value; style.OTransform = value; style.msTransform = value; style.transform = value; if(goog.userAgent.IE && !ol.IS_LEGACY_IE) { element.style.transformOrigin = "0 0" } }; ol.dom.setOpacity = function(element, value) { if(ol.dom.BrowserFeature.USE_MS_ALPHA_FILTER) { var filter = element.currentStyle.filter; var regex; var alpha; if(goog.userAgent.VERSION == "8.0") { regex = /progid:DXImageTransform\.Microsoft\.Alpha\(.*?\)/i, alpha = "progid:DXImageTransform.Microsoft.Alpha(Opacity\x3d" + value * 100 + ")" }else { regex = /alpha\(.*?\)/i; alpha = "alpha(opacity\x3d" + value * 100 + ")" } var newFilter = filter.replace(regex, alpha); if(newFilter === filter) { newFilter += " " + alpha } element.style.filter = newFilter; if(element.currentStyle.zIndex === "auto") { element.style.zIndex = 0 } }else { goog.style.setOpacity(element, value) } }; ol.dom.setIEMatrix_ = function(element, value) { var filter = element.currentStyle.filter; var newFilter = filter.replace(/progid:DXImageTransform.Microsoft.Matrix\(.*?\)/i, value); if(newFilter === filter) { newFilter = " " + value } element.style.filter = newFilter; if(element.currentStyle.zIndex === "auto") { element.style.zIndex = 0 } }; ol.dom.transformElement2D = function(element, transform, opt_precision, opt_translationElement) { var i; if(ol.dom.canUseCssTransform3D()) { var value3D; if(goog.isDef(opt_precision)) { var strings3D = new Array(16); for(i = 0;i < 16;++i) { strings3D[i] = transform[i].toFixed(opt_precision) } value3D = strings3D.join(",") }else { value3D = transform.join(",") } ol.dom.setTransform(element, "matrix3d(" + value3D + ")") }else { if(ol.dom.canUseCssTransform()) { var transform2D = [goog.vec.Mat4.getElement(transform, 0, 0), goog.vec.Mat4.getElement(transform, 1, 0), goog.vec.Mat4.getElement(transform, 0, 1), goog.vec.Mat4.getElement(transform, 1, 1), goog.vec.Mat4.getElement(transform, 0, 3), goog.vec.Mat4.getElement(transform, 1, 3)]; var value2D; if(goog.isDef(opt_precision)) { var strings2D = new Array(6); for(i = 0;i < 6;++i) { strings2D[i] = transform2D[i].toFixed(opt_precision) } value2D = strings2D.join(",") }else { value2D = transform2D.join(",") } ol.dom.setTransform(element, "matrix(" + value2D + ")") }else { if(ol.dom.BrowserFeature.USE_MS_MATRIX_TRANSFORM) { var m11 = goog.vec.Mat4.getElement(transform, 0, 0), m12 = goog.vec.Mat4.getElement(transform, 0, 1), m21 = goog.vec.Mat4.getElement(transform, 1, 0), m22 = goog.vec.Mat4.getElement(transform, 1, 1), dx = goog.vec.Mat4.getElement(transform, 0, 3), dy = goog.vec.Mat4.getElement(transform, 1, 3); var s = "progid:DXImageTransform.Microsoft.Matrix("; s += 'sizingMethod\x3d"auto expand"'; s += ",M11\x3d" + m11.toFixed(opt_precision || 20); s += ",M12\x3d" + m12.toFixed(opt_precision || 20); s += ",M21\x3d" + m21.toFixed(opt_precision || 20); s += ",M22\x3d" + m22.toFixed(opt_precision || 20); s += ")"; ol.dom.setIEMatrix_(element, s); dx /= m11; dy /= m22; opt_translationElement.style.left = Math.round(dx) + "px"; opt_translationElement.style.top = Math.round(dy) + "px" }else { element.style.left = Math.round(goog.vec.Mat4.getElement(transform, 0, 3)) + "px"; element.style.top = Math.round(goog.vec.Mat4.getElement(transform, 1, 3)) + "px" } } } }; goog.provide("ol.webgl"); goog.provide("ol.webgl.WebGLContextEventType"); ol.webgl.CONTEXT_IDS_ = ["experimental-webgl", "webgl", "webkit-3d", "moz-webgl"]; ol.webgl.WebGLContextEventType = {LOST:"webglcontextlost", RESTORED:"webglcontextrestored"}; ol.webgl.getContext = function(canvas, opt_attributes) { var context, i, ii = ol.webgl.CONTEXT_IDS_.length; for(i = 0;i < ii;++i) { try { context = canvas.getContext(ol.webgl.CONTEXT_IDS_[i], opt_attributes); if(!goog.isNull(context)) { return(context) } }catch(e) { } } return null }; goog.provide("ol.BrowserFeature"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("ol"); goog.require("ol.dom"); goog.require("ol.webgl"); ol.BrowserFeature.DEVICE_PIXEL_RATIO = goog.global.devicePixelRatio || 1; ol.BrowserFeature.HAS_ARRAY_BUFFER = "ArrayBuffer" in goog.global; ol.BrowserFeature.HAS_CANVAS_LINE_DASH = false; ol.BrowserFeature.HAS_CANVAS = ol.ENABLE_CANVAS && function() { if(!("HTMLCanvasElement" in goog.global)) { return false } try { var context = ol.dom.createCanvasContext2D(); if(goog.isNull(context)) { return false }else { if(goog.isDef(context.setLineDash)) { ol.BrowserFeature.HAS_CANVAS_LINE_DASH = true } return true } }catch(e) { return false } }(); ol.BrowserFeature.HAS_DEVICE_ORIENTATION = "DeviceOrientationEvent" in goog.global; ol.BrowserFeature.HAS_DOM = ol.ENABLE_DOM; ol.BrowserFeature.HAS_GEOLOCATION = "geolocation" in goog.global.navigator; ol.BrowserFeature.HAS_JSON_PARSE = "JSON" in goog.global && "parse" in goog.global.JSON; ol.BrowserFeature.HAS_TOUCH = ol.ASSUME_TOUCH || "ontouchstart" in goog.global; ol.BrowserFeature.HAS_POINTER = "PointerEvent" in goog.global; ol.BrowserFeature.HAS_MSPOINTER = !!goog.global.navigator.msPointerEnabled; ol.BrowserFeature.HAS_WEBGL = ol.ENABLE_WEBGL && function() { if(!("WebGLRenderingContext" in goog.global)) { return false } try { var canvas = (goog.dom.createElement(goog.dom.TagName.CANVAS)); return!goog.isNull(ol.webgl.getContext(canvas, {failIfMajorPerformanceCaveat:true})) }catch(e) { return false } }(); goog.provide("goog.disposable.IDisposable"); goog.disposable.IDisposable = function() { }; goog.disposable.IDisposable.prototype.dispose; goog.disposable.IDisposable.prototype.isDisposed; goog.provide("goog.Disposable"); goog.provide("goog.dispose"); goog.require("goog.disposable.IDisposable"); goog.Disposable = function() { if(goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF) { if(goog.Disposable.INCLUDE_STACK_ON_CREATION) { this.creationStack = (new Error).stack } goog.Disposable.instances_[goog.getUid(this)] = this } }; goog.Disposable.MonitoringMode = {OFF:0, PERMANENT:1, INTERACTIVE:2}; goog.define("goog.Disposable.MONITORING_MODE", 0); goog.define("goog.Disposable.INCLUDE_STACK_ON_CREATION", true); goog.Disposable.instances_ = {}; goog.Disposable.getUndisposedObjects = function() { var ret = []; for(var id in goog.Disposable.instances_) { if(goog.Disposable.instances_.hasOwnProperty(id)) { ret.push(goog.Disposable.instances_[Number(id)]) } } return ret }; goog.Disposable.clearUndisposedObjects = function() { goog.Disposable.instances_ = {} }; goog.Disposable.prototype.disposed_ = false; goog.Disposable.prototype.onDisposeCallbacks_; goog.Disposable.prototype.creationStack; goog.Disposable.prototype.isDisposed = function() { return this.disposed_ }; goog.Disposable.prototype.getDisposed = goog.Disposable.prototype.isDisposed; goog.Disposable.prototype.dispose = function() { if(!this.disposed_) { this.disposed_ = true; this.disposeInternal(); if(goog.Disposable.MONITORING_MODE != goog.Disposable.MonitoringMode.OFF) { var uid = goog.getUid(this); if(goog.Disposable.MONITORING_MODE == goog.Disposable.MonitoringMode.PERMANENT && !goog.Disposable.instances_.hasOwnProperty(uid)) { throw Error(this + " did not call the goog.Disposable base " + "constructor or was disposed of after a clearUndisposedObjects " + "call"); } delete goog.Disposable.instances_[uid] } } }; goog.Disposable.prototype.registerDisposable = function(disposable) { this.addOnDisposeCallback(goog.partial(goog.dispose, disposable)) }; goog.Disposable.prototype.addOnDisposeCallback = function(callback, opt_scope) { if(!this.onDisposeCallbacks_) { this.onDisposeCallbacks_ = [] } this.onDisposeCallbacks_.push(goog.bind(callback, opt_scope)) }; goog.Disposable.prototype.disposeInternal = function() { if(this.onDisposeCallbacks_) { while(this.onDisposeCallbacks_.length) { this.onDisposeCallbacks_.shift()() } } }; goog.Disposable.isDisposed = function(obj) { if(obj && typeof obj.isDisposed == "function") { return obj.isDisposed() } return false }; goog.dispose = function(obj) { if(obj && typeof obj.dispose == "function") { obj.dispose() } }; goog.disposeAll = function(var_args) { for(var i = 0, len = arguments.length;i < len;++i) { var disposable = arguments[i]; if(goog.isArrayLike(disposable)) { goog.disposeAll.apply(null, disposable) }else { goog.dispose(disposable) } } }; goog.provide("goog.events.Event"); goog.provide("goog.events.EventLike"); goog.require("goog.Disposable"); goog.events.EventLike; goog.events.Event = function(type, opt_target) { this.type = type; this.target = opt_target; this.currentTarget = this.target }; goog.events.Event.prototype.disposeInternal = function() { }; goog.events.Event.prototype.dispose = function() { }; goog.events.Event.prototype.propagationStopped_ = false; goog.events.Event.prototype.defaultPrevented = false; goog.events.Event.prototype.returnValue_ = true; goog.events.Event.prototype.stopPropagation = function() { this.propagationStopped_ = true }; goog.events.Event.prototype.preventDefault = function() { this.defaultPrevented = true; this.returnValue_ = false }; goog.events.Event.stopPropagation = function(e) { e.stopPropagation() }; goog.events.Event.preventDefault = function(e) { e.preventDefault() }; goog.provide("goog.debug.EntryPointMonitor"); goog.provide("goog.debug.entryPointRegistry"); goog.require("goog.asserts"); goog.debug.EntryPointMonitor = function() { }; goog.debug.EntryPointMonitor.prototype.wrap; goog.debug.EntryPointMonitor.prototype.unwrap; goog.debug.entryPointRegistry.refList_ = []; goog.debug.entryPointRegistry.monitors_ = []; goog.debug.entryPointRegistry.monitorsMayExist_ = false; goog.debug.entryPointRegistry.register = function(callback) { goog.debug.entryPointRegistry.refList_[goog.debug.entryPointRegistry.refList_.length] = callback; if(goog.debug.entryPointRegistry.monitorsMayExist_) { var monitors = goog.debug.entryPointRegistry.monitors_; for(var i = 0;i < monitors.length;i++) { callback(goog.bind(monitors[i].wrap, monitors[i])) } } }; goog.debug.entryPointRegistry.monitorAll = function(monitor) { goog.debug.entryPointRegistry.monitorsMayExist_ = true; var transformer = goog.bind(monitor.wrap, monitor); for(var i = 0;i < goog.debug.entryPointRegistry.refList_.length;i++) { goog.debug.entryPointRegistry.refList_[i](transformer) } goog.debug.entryPointRegistry.monitors_.push(monitor) }; goog.debug.entryPointRegistry.unmonitorAllIfPossible = function(monitor) { var monitors = goog.debug.entryPointRegistry.monitors_; goog.asserts.assert(monitor == monitors[monitors.length - 1], "Only the most recent monitor can be unwrapped."); var transformer = goog.bind(monitor.unwrap, monitor); for(var i = 0;i < goog.debug.entryPointRegistry.refList_.length;i++) { goog.debug.entryPointRegistry.refList_[i](transformer) } monitors.length-- }; goog.provide("goog.events.BrowserFeature"); goog.require("goog.userAgent"); goog.events.BrowserFeature = {HAS_W3C_BUTTON:!goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9), HAS_W3C_EVENT_SUPPORT:!goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9), SET_KEY_CODE_TO_PREVENT_DEFAULT:goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9"), HAS_NAVIGATOR_ONLINE_PROPERTY:!goog.userAgent.WEBKIT || goog.userAgent.isVersionOrHigher("528"), HAS_HTML5_NETWORK_EVENT_SUPPORT:goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher("1.9b") || goog.userAgent.IE && goog.userAgent.isVersionOrHigher("8") || goog.userAgent.OPERA && goog.userAgent.isVersionOrHigher("9.5") || goog.userAgent.WEBKIT && goog.userAgent.isVersionOrHigher("528"), HTML5_NETWORK_EVENTS_FIRE_ON_BODY:goog.userAgent.GECKO && !goog.userAgent.isVersionOrHigher("8") || goog.userAgent.IE && !goog.userAgent.isVersionOrHigher("9"), TOUCH_ENABLED:"ontouchstart" in goog.global || !!(goog.global["document"] && document.documentElement && "ontouchstart" in document.documentElement) || !!(goog.global["navigator"] && goog.global["navigator"]["msMaxTouchPoints"])}; goog.provide("goog.events.EventType"); goog.require("goog.userAgent"); goog.events.EventType = {CLICK:"click", DBLCLICK:"dblclick", MOUSEDOWN:"mousedown", MOUSEUP:"mouseup", MOUSEOVER:"mouseover", MOUSEOUT:"mouseout", MOUSEMOVE:"mousemove", SELECTSTART:"selectstart", KEYPRESS:"keypress", KEYDOWN:"keydown", KEYUP:"keyup", BLUR:"blur", FOCUS:"focus", DEACTIVATE:"deactivate", FOCUSIN:goog.userAgent.IE ? "focusin" : "DOMFocusIn", FOCUSOUT:goog.userAgent.IE ? "focusout" : "DOMFocusOut", CHANGE:"change", SELECT:"select", SUBMIT:"submit", INPUT:"input", PROPERTYCHANGE:"propertychange", DRAGSTART:"dragstart", DRAG:"drag", DRAGENTER:"dragenter", DRAGOVER:"dragover", DRAGLEAVE:"dragleave", DROP:"drop", DRAGEND:"dragend", TOUCHSTART:"touchstart", TOUCHMOVE:"touchmove", TOUCHEND:"touchend", TOUCHCANCEL:"touchcancel", BEFOREUNLOAD:"beforeunload", CONSOLEMESSAGE:"consolemessage", CONTEXTMENU:"contextmenu", DOMCONTENTLOADED:"DOMContentLoaded", ERROR:"error", HELP:"help", LOAD:"load", LOSECAPTURE:"losecapture", READYSTATECHANGE:"readystatechange", RESIZE:"resize", SCROLL:"scroll", UNLOAD:"unload", HASHCHANGE:"hashchange", PAGEHIDE:"pagehide", PAGESHOW:"pageshow", POPSTATE:"popstate", COPY:"copy", PASTE:"paste", CUT:"cut", BEFORECOPY:"beforecopy", BEFORECUT:"beforecut", BEFOREPASTE:"beforepaste", ONLINE:"online", OFFLINE:"offline", MESSAGE:"message", CONNECT:"connect", TRANSITIONEND:goog.userAgent.WEBKIT ? "webkitTransitionEnd" : goog.userAgent.OPERA ? "oTransitionEnd" : "transitionend", MSGESTURECHANGE:"MSGestureChange", MSGESTUREEND:"MSGestureEnd", MSGESTUREHOLD:"MSGestureHold", MSGESTURESTART:"MSGestureStart", MSGESTURETAP:"MSGestureTap", MSGOTPOINTERCAPTURE:"MSGotPointerCapture", MSINERTIASTART:"MSInertiaStart", MSLOSTPOINTERCAPTURE:"MSLostPointerCapture", MSPOINTERCANCEL:"MSPointerCancel", MSPOINTERDOWN:"MSPointerDown", MSPOINTERMOVE:"MSPointerMove", MSPOINTEROVER:"MSPointerOver", MSPOINTEROUT:"MSPointerOut", MSPOINTERUP:"MSPointerUp", TEXTINPUT:"textinput", COMPOSITIONSTART:"compositionstart", COMPOSITIONUPDATE:"compositionupdate", COMPOSITIONEND:"compositionend", EXIT:"exit", LOADABORT:"loadabort", LOADCOMMIT:"loadcommit", LOADREDIRECT:"loadredirect", LOADSTART:"loadstart", LOADSTOP:"loadstop", RESPONSIVE:"responsive", SIZECHANGED:"sizechanged", UNRESPONSIVE:"unresponsive"}; goog.provide("goog.reflect"); goog.reflect.object = function(type, object) { return object }; goog.reflect.sinkValue = function(x) { goog.reflect.sinkValue[" "](x); return x }; goog.reflect.sinkValue[" "] = goog.nullFunction; goog.reflect.canAccessProperty = function(obj, prop) { try { goog.reflect.sinkValue(obj[prop]); return true }catch(e) { } return false }; goog.provide("goog.events.BrowserEvent"); goog.provide("goog.events.BrowserEvent.MouseButton"); goog.require("goog.events.BrowserFeature"); goog.require("goog.events.Event"); goog.require("goog.events.EventType"); goog.require("goog.reflect"); goog.require("goog.userAgent"); goog.events.BrowserEvent = function(opt_e, opt_currentTarget) { if(opt_e) { this.init(opt_e, opt_currentTarget) } }; goog.inherits(goog.events.BrowserEvent, goog.events.Event); goog.events.BrowserEvent.MouseButton = {LEFT:0, MIDDLE:1, RIGHT:2}; goog.events.BrowserEvent.IEButtonMap = [1, 4, 2]; goog.events.BrowserEvent.prototype.target = null; goog.events.BrowserEvent.prototype.currentTarget; goog.events.BrowserEvent.prototype.relatedTarget = null; goog.events.BrowserEvent.prototype.offsetX = 0; goog.events.BrowserEvent.prototype.offsetY = 0; goog.events.BrowserEvent.prototype.clientX = 0; goog.events.BrowserEvent.prototype.clientY = 0; goog.events.BrowserEvent.prototype.screenX = 0; goog.events.BrowserEvent.prototype.screenY = 0; goog.events.BrowserEvent.prototype.button = 0; goog.events.BrowserEvent.prototype.keyCode = 0; goog.events.BrowserEvent.prototype.charCode = 0; goog.events.BrowserEvent.prototype.ctrlKey = false; goog.events.BrowserEvent.prototype.altKey = false; goog.events.BrowserEvent.prototype.shiftKey = false; goog.events.BrowserEvent.prototype.metaKey = false; goog.events.BrowserEvent.prototype.state; goog.events.BrowserEvent.prototype.platformModifierKey = false; goog.events.BrowserEvent.prototype.event_ = null; goog.events.BrowserEvent.prototype.init = function(e, opt_currentTarget) { var type = this.type = e.type; goog.events.Event.call(this, type); this.target = (e.target) || e.srcElement; this.currentTarget = (opt_currentTarget); var relatedTarget = (e.relatedTarget); if(relatedTarget) { if(goog.userAgent.GECKO) { if(!goog.reflect.canAccessProperty(relatedTarget, "nodeName")) { relatedTarget = null } } }else { if(type == goog.events.EventType.MOUSEOVER) { relatedTarget = e.fromElement }else { if(type == goog.events.EventType.MOUSEOUT) { relatedTarget = e.toElement } } } this.relatedTarget = relatedTarget; this.offsetX = goog.userAgent.WEBKIT || e.offsetX !== undefined ? e.offsetX : e.layerX; this.offsetY = goog.userAgent.WEBKIT || e.offsetY !== undefined ? e.offsetY : e.layerY; this.clientX = e.clientX !== undefined ? e.clientX : e.pageX; this.clientY = e.clientY !== undefined ? e.clientY : e.pageY; this.screenX = e.screenX || 0; this.screenY = e.screenY || 0; this.button = e.button; this.keyCode = e.keyCode || 0; this.charCode = e.charCode || (type == "keypress" ? e.keyCode : 0); this.ctrlKey = e.ctrlKey; this.altKey = e.altKey; this.shiftKey = e.shiftKey; this.metaKey = e.metaKey; this.platformModifierKey = goog.userAgent.MAC ? e.metaKey : e.ctrlKey; this.state = e.state; this.event_ = e; if(e.defaultPrevented) { this.preventDefault() } delete this.propagationStopped_ }; goog.events.BrowserEvent.prototype.isButton = function(button) { if(!goog.events.BrowserFeature.HAS_W3C_BUTTON) { if(this.type == "click") { return button == goog.events.BrowserEvent.MouseButton.LEFT }else { return!!(this.event_.button & goog.events.BrowserEvent.IEButtonMap[button]) } }else { return this.event_.button == button } }; goog.events.BrowserEvent.prototype.isMouseActionButton = function() { return this.isButton(goog.events.BrowserEvent.MouseButton.LEFT) && !(goog.userAgent.WEBKIT && goog.userAgent.MAC && this.ctrlKey) }; goog.events.BrowserEvent.prototype.stopPropagation = function() { goog.events.BrowserEvent.superClass_.stopPropagation.call(this); if(this.event_.stopPropagation) { this.event_.stopPropagation() }else { this.event_.cancelBubble = true } }; goog.events.BrowserEvent.prototype.preventDefault = function() { goog.events.BrowserEvent.superClass_.preventDefault.call(this); var be = this.event_; if(!be.preventDefault) { be.returnValue = false; if(goog.events.BrowserFeature.SET_KEY_CODE_TO_PREVENT_DEFAULT) { try { var VK_F1 = 112; var VK_F12 = 123; if(be.ctrlKey || be.keyCode >= VK_F1 && be.keyCode <= VK_F12) { be.keyCode = -1 } }catch(ex) { } } }else { be.preventDefault() } }; goog.events.BrowserEvent.prototype.getBrowserEvent = function() { return this.event_ }; goog.events.BrowserEvent.prototype.disposeInternal = function() { }; goog.provide("goog.events.Listenable"); goog.provide("goog.events.ListenableKey"); goog.events.Listenable = function() { }; goog.events.Listenable.IMPLEMENTED_BY_PROP = "closure_listenable_" + (Math.random() * 1E6 | 0); goog.events.Listenable.addImplementation = function(cls) { cls.prototype[goog.events.Listenable.IMPLEMENTED_BY_PROP] = true }; goog.events.Listenable.isImplementedBy = function(obj) { return!!(obj && obj[goog.events.Listenable.IMPLEMENTED_BY_PROP]) }; goog.events.Listenable.prototype.listen; goog.events.Listenable.prototype.listenOnce; goog.events.Listenable.prototype.unlisten; goog.events.Listenable.prototype.unlistenByKey; goog.events.Listenable.prototype.dispatchEvent; goog.events.Listenable.prototype.removeAllListeners; goog.events.Listenable.prototype.getParentEventTarget; goog.events.Listenable.prototype.fireListeners; goog.events.Listenable.prototype.getListeners; goog.events.Listenable.prototype.getListener; goog.events.Listenable.prototype.hasListener; goog.events.ListenableKey = function() { }; goog.events.ListenableKey.counter_ = 0; goog.events.ListenableKey.reserveKey = function() { return++goog.events.ListenableKey.counter_ }; goog.events.ListenableKey.prototype.src; goog.events.ListenableKey.prototype.type; goog.events.ListenableKey.prototype.listener; goog.events.ListenableKey.prototype.capture; goog.events.ListenableKey.prototype.handler; goog.events.ListenableKey.prototype.key; goog.provide("goog.events.Listener"); goog.require("goog.events.ListenableKey"); goog.events.Listener = function(listener, proxy, src, type, capture, opt_handler) { if(goog.events.Listener.ENABLE_MONITORING) { this.creationStack = (new Error).stack } this.listener = listener; this.proxy = proxy; this.src = src; this.type = type; this.capture = !!capture; this.handler = opt_handler; this.key = goog.events.ListenableKey.reserveKey(); this.callOnce = false; this.removed = false }; goog.define("goog.events.Listener.ENABLE_MONITORING", false); goog.events.Listener.prototype.creationStack; goog.events.Listener.prototype.markAsRemoved = function() { this.removed = true; this.listener = null; this.proxy = null; this.src = null; this.handler = null }; goog.provide("goog.events"); goog.provide("goog.events.Key"); goog.provide("goog.events.ListenableType"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.debug.entryPointRegistry"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.BrowserFeature"); goog.require("goog.events.Listenable"); goog.require("goog.events.Listener"); goog.require("goog.object"); goog.events.Key; goog.events.ListenableType; goog.events.listeners_ = {}; goog.events.listenerTree_ = {}; goog.events.sources_ = {}; goog.events.onString_ = "on"; goog.events.onStringMap_ = {}; goog.events.keySeparator_ = "_"; goog.events.listen = function(src, type, listener, opt_capt, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { goog.events.listen(src, type[i], listener, opt_capt, opt_handler) } return null } listener = goog.events.wrapListener_(listener); if(goog.events.Listenable.isImplementedBy(src)) { return src.listen((type), listener, opt_capt, opt_handler) }else { return goog.events.listen_((src), type, listener, false, opt_capt, opt_handler) } }; goog.events.listen_ = function(src, type, listener, callOnce, opt_capt, opt_handler) { if(!type) { throw Error("Invalid event type"); } var capture = !!opt_capt; var map = goog.events.listenerTree_; if(!(type in map)) { map[type] = {count_:0} } map = map[type]; if(!(capture in map)) { map[capture] = {count_:0}; map.count_++ } map = map[capture]; var srcUid = goog.getUid(src); var listenerArray, listenerObj; if(!map[srcUid]) { listenerArray = map[srcUid] = []; map.count_++ }else { listenerArray = map[srcUid]; for(var i = 0;i < listenerArray.length;i++) { listenerObj = listenerArray[i]; if(listenerObj.listener == listener && listenerObj.handler == opt_handler) { if(listenerObj.removed) { break } if(!callOnce) { listenerArray[i].callOnce = false } return listenerArray[i] } } } var proxy = goog.events.getProxy(); listenerObj = new goog.events.Listener(listener, proxy, src, type, capture, opt_handler); listenerObj.callOnce = callOnce; proxy.src = src; proxy.listener = listenerObj; listenerArray.push(listenerObj); if(!goog.events.sources_[srcUid]) { goog.events.sources_[srcUid] = [] } goog.events.sources_[srcUid].push(listenerObj); if(src.addEventListener) { src.addEventListener(type, proxy, capture) }else { src.attachEvent(goog.events.getOnString_(type), proxy) } var key = listenerObj.key; goog.events.listeners_[key] = listenerObj; return listenerObj }; goog.events.getProxy = function() { var proxyCallbackFunction = goog.events.handleBrowserEvent_; var f = goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT ? function(eventObject) { return proxyCallbackFunction.call(f.src, f.listener, eventObject) } : function(eventObject) { var v = proxyCallbackFunction.call(f.src, f.listener, eventObject); if(!v) { return v } }; return f }; goog.events.listenOnce = function(src, type, listener, opt_capt, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { goog.events.listenOnce(src, type[i], listener, opt_capt, opt_handler) } return null } var listenableKey; listener = goog.events.wrapListener_(listener); if(goog.events.Listenable.isImplementedBy(src)) { listenableKey = src.listenOnce((type), listener, opt_capt, opt_handler) }else { listenableKey = goog.events.listen_((src), type, listener, true, opt_capt, opt_handler) } return listenableKey }; goog.events.listenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) { wrapper.listen(src, listener, opt_capt, opt_handler) }; goog.events.unlisten = function(src, type, listener, opt_capt, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { goog.events.unlisten(src, type[i], listener, opt_capt, opt_handler) } return null } listener = goog.events.wrapListener_(listener); if(goog.events.Listenable.isImplementedBy(src)) { return src.unlisten((type), listener, opt_capt, opt_handler) } var capture = !!opt_capt; var listenerArray = goog.events.getListeners_(src, type, capture); if(!listenerArray) { return false } for(var i = 0;i < listenerArray.length;i++) { if(listenerArray[i].listener == listener && listenerArray[i].capture == capture && listenerArray[i].handler == opt_handler) { return goog.events.unlistenByKey(listenerArray[i]) } } return false }; goog.events.unlistenByKey = function(key) { if(goog.isNumber(key)) { return false } var listener = (key); if(!listener) { return false } if(listener.removed) { return false } var src = listener.src; if(goog.events.Listenable.isImplementedBy(src)) { return src.unlistenByKey(listener) } var type = listener.type; var proxy = listener.proxy; var capture = listener.capture; if(src.removeEventListener) { src.removeEventListener(type, proxy, capture) }else { if(src.detachEvent) { src.detachEvent(goog.events.getOnString_(type), proxy) } } var srcUid = goog.getUid(src); if(goog.events.sources_[srcUid]) { var sourcesArray = goog.events.sources_[srcUid]; goog.array.remove(sourcesArray, listener); if(sourcesArray.length == 0) { delete goog.events.sources_[srcUid] } } listener.markAsRemoved(); var listenerArray = goog.events.listenerTree_[type][capture][srcUid]; if(listenerArray) { goog.array.remove(listenerArray, listener); if(listenerArray.length == 0) { delete goog.events.listenerTree_[type][capture][srcUid]; goog.events.listenerTree_[type][capture].count_-- } if(goog.events.listenerTree_[type][capture].count_ == 0) { delete goog.events.listenerTree_[type][capture]; goog.events.listenerTree_[type].count_-- } if(goog.events.listenerTree_[type].count_ == 0) { delete goog.events.listenerTree_[type] } } delete goog.events.listeners_[listener.key]; return true }; goog.events.unlistenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) { wrapper.unlisten(src, listener, opt_capt, opt_handler) }; goog.events.removeAll = function(opt_obj, opt_type) { var count = 0; var noObj = opt_obj == null; var noType = opt_type == null; if(!noObj) { if(opt_obj && goog.events.Listenable.isImplementedBy(opt_obj)) { return opt_obj.removeAllListeners(opt_type) } var srcUid = goog.getUid((opt_obj)); if(goog.events.sources_[srcUid]) { var sourcesArray = goog.events.sources_[srcUid]; for(var i = sourcesArray.length - 1;i >= 0;i--) { var listener = sourcesArray[i]; if(noType || opt_type == listener.type) { goog.events.unlistenByKey(listener); count++ } } } }else { goog.object.forEach(goog.events.listeners_, function(listener) { goog.events.unlistenByKey(listener); count++ }) } return count }; goog.events.removeAllNativeListeners = function() { var count = 0; goog.object.forEach(goog.events.listeners_, function(listener) { goog.events.unlistenByKey(listener); count++ }); return count }; goog.events.getListeners = function(obj, type, capture) { if(goog.events.Listenable.isImplementedBy(obj)) { return obj.getListeners(type, capture) }else { return goog.events.getListeners_(obj, type, capture) || [] } }; goog.events.getListeners_ = function(obj, type, capture) { var map = goog.events.listenerTree_; if(type in map) { map = map[type]; if(capture in map) { map = map[capture]; var objUid = goog.getUid(obj); if(map[objUid]) { return map[objUid] } } } return null }; goog.events.getListener = function(src, type, listener, opt_capt, opt_handler) { var capture = !!opt_capt; listener = goog.events.wrapListener_(listener); if(goog.events.Listenable.isImplementedBy(src)) { return src.getListener((type), listener, capture, opt_handler) } var listenerArray = goog.events.getListeners_(src, type, capture); if(listenerArray) { for(var i = 0;i < listenerArray.length;i++) { if(!listenerArray[i].removed && listenerArray[i].listener == listener && listenerArray[i].capture == capture && listenerArray[i].handler == opt_handler) { return listenerArray[i] } } } return null }; goog.events.hasListener = function(obj, opt_type, opt_capture) { if(goog.events.Listenable.isImplementedBy(obj)) { return obj.hasListener(opt_type, opt_capture) } var objUid = goog.getUid(obj); var listeners = goog.events.sources_[objUid]; if(listeners) { var hasType = goog.isDef(opt_type); var hasCapture = goog.isDef(opt_capture); if(hasType && hasCapture) { var map = goog.events.listenerTree_[opt_type]; return!!map && !!map[opt_capture] && objUid in map[opt_capture] }else { if(!(hasType || hasCapture)) { return true }else { return goog.array.some(listeners, function(listener) { return hasType && listener.type == opt_type || hasCapture && listener.capture == opt_capture }) } } } return false }; goog.events.expose = function(e) { var str = []; for(var key in e) { if(e[key] && e[key].id) { str.push(key + " \x3d " + e[key] + " (" + e[key].id + ")") }else { str.push(key + " \x3d " + e[key]) } } return str.join("\n") }; goog.events.getOnString_ = function(type) { if(type in goog.events.onStringMap_) { return goog.events.onStringMap_[type] } return goog.events.onStringMap_[type] = goog.events.onString_ + type }; goog.events.fireListeners = function(obj, type, capture, eventObject) { if(goog.events.Listenable.isImplementedBy(obj)) { return obj.fireListeners(type, capture, eventObject) } var map = goog.events.listenerTree_; if(type in map) { map = map[type]; if(capture in map) { return goog.events.fireListeners_(map[capture], obj, type, capture, eventObject) } } return true }; goog.events.fireListeners_ = function(map, obj, type, capture, eventObject) { var retval = 1; var objUid = goog.getUid(obj); if(map[objUid]) { var listenerArray = goog.array.clone(map[objUid]); for(var i = 0;i < listenerArray.length;i++) { var listener = listenerArray[i]; if(listener && !listener.removed) { retval &= goog.events.fireListener(listener, eventObject) !== false } } } return Boolean(retval) }; goog.events.fireListener = function(listener, eventObject) { var listenerFn = listener.listener; var listenerHandler = listener.handler || listener.src; if(listener.callOnce) { goog.events.unlistenByKey(listener) } return listenerFn.call(listenerHandler, eventObject) }; goog.events.getTotalListenerCount = function() { return goog.object.getCount(goog.events.listeners_) }; goog.events.dispatchEvent = function(src, e) { goog.asserts.assert(goog.events.Listenable.isImplementedBy(src), "Can not use goog.events.dispatchEvent with " + "non-goog.events.Listenable instance."); return src.dispatchEvent(e) }; goog.events.protectBrowserEventEntryPoint = function(errorHandler) { goog.events.handleBrowserEvent_ = errorHandler.protectEntryPoint(goog.events.handleBrowserEvent_) }; goog.events.handleBrowserEvent_ = function(listener, opt_evt) { if(listener.removed) { return true } var type = listener.type; var map = goog.events.listenerTree_; if(!(type in map)) { return true } map = map[type]; var retval, targetsMap; if(!goog.events.BrowserFeature.HAS_W3C_EVENT_SUPPORT) { var ieEvent = opt_evt || (goog.getObjectByName("window.event")); var hasCapture = true in map; var hasBubble = false in map; if(hasCapture) { if(goog.events.isMarkedIeEvent_(ieEvent)) { return true } goog.events.markIeEvent_(ieEvent) } var evt = new goog.events.BrowserEvent; evt.init(ieEvent, this); retval = true; try { if(hasCapture) { var ancestors = []; for(var parent = evt.currentTarget;parent;parent = parent.parentNode) { ancestors.push(parent) } targetsMap = map[true]; for(var i = ancestors.length - 1;!evt.propagationStopped_ && i >= 0;i--) { evt.currentTarget = ancestors[i]; retval &= goog.events.fireListeners_(targetsMap, ancestors[i], type, true, evt) } if(hasBubble) { targetsMap = map[false]; for(var i = 0;!evt.propagationStopped_ && i < ancestors.length;i++) { evt.currentTarget = ancestors[i]; retval &= goog.events.fireListeners_(targetsMap, ancestors[i], type, false, evt) } } }else { retval = goog.events.fireListener(listener, evt) } }finally { if(ancestors) { ancestors.length = 0 } } return retval } var be = new goog.events.BrowserEvent(opt_evt, (this)); retval = goog.events.fireListener(listener, be); return retval }; goog.events.markIeEvent_ = function(e) { var useReturnValue = false; if(e.keyCode == 0) { try { e.keyCode = -1; return }catch(ex) { useReturnValue = true } } if(useReturnValue || (e.returnValue) == undefined) { e.returnValue = true } }; goog.events.isMarkedIeEvent_ = function(e) { return e.keyCode < 0 || e.returnValue != undefined }; goog.events.uniqueIdCounter_ = 0; goog.events.getUniqueId = function(identifier) { return identifier + "_" + goog.events.uniqueIdCounter_++ }; goog.events.LISTENER_WRAPPER_PROP_ = "__closure_events_fn_" + (Math.random() * 1E9 >>> 0); goog.events.wrapListener_ = function(listener) { goog.asserts.assert(listener, "Listener can not be null."); if(goog.isFunction(listener)) { return listener } goog.asserts.assert(listener.handleEvent, "An object listener must have handleEvent method."); return listener[goog.events.LISTENER_WRAPPER_PROP_] || (listener[goog.events.LISTENER_WRAPPER_PROP_] = function(e) { return listener.handleEvent(e) }) }; goog.debug.entryPointRegistry.register(function(transformer) { goog.events.handleBrowserEvent_ = transformer(goog.events.handleBrowserEvent_) }); goog.provide("goog.functions"); goog.functions.constant = function(retValue) { return function() { return retValue } }; goog.functions.FALSE = goog.functions.constant(false); goog.functions.TRUE = goog.functions.constant(true); goog.functions.NULL = goog.functions.constant(null); goog.functions.identity = function(opt_returnValue, var_args) { return opt_returnValue }; goog.functions.error = function(message) { return function() { throw Error(message); } }; goog.functions.fail = function(err) { return function() { throw err; } }; goog.functions.lock = function(f, opt_numArgs) { opt_numArgs = opt_numArgs || 0; return function() { return f.apply(this, Array.prototype.slice.call(arguments, 0, opt_numArgs)) } }; goog.functions.withReturnValue = function(f, retValue) { return goog.functions.sequence(f, goog.functions.constant(retValue)) }; goog.functions.compose = function(fn, var_args) { var functions = arguments; var length = functions.length; return function() { var result; if(length) { result = functions[length - 1].apply(this, arguments) } for(var i = length - 2;i >= 0;i--) { result = functions[i].call(this, result) } return result } }; goog.functions.sequence = function(var_args) { var functions = arguments; var length = functions.length; return function() { var result; for(var i = 0;i < length;i++) { result = functions[i].apply(this, arguments) } return result } }; goog.functions.and = function(var_args) { var functions = arguments; var length = functions.length; return function() { for(var i = 0;i < length;i++) { if(!functions[i].apply(this, arguments)) { return false } } return true } }; goog.functions.or = function(var_args) { var functions = arguments; var length = functions.length; return function() { for(var i = 0;i < length;i++) { if(functions[i].apply(this, arguments)) { return true } } return false } }; goog.functions.not = function(f) { return function() { return!f.apply(this, arguments) } }; goog.functions.create = function(constructor, var_args) { var temp = function() { }; temp.prototype = constructor.prototype; var obj = new temp; constructor.apply(obj, Array.prototype.slice.call(arguments, 1)); return obj }; goog.provide("goog.events.ListenerMap"); goog.require("goog.array"); goog.require("goog.events.Listener"); goog.require("goog.object"); goog.events.ListenerMap = function(src) { this.src = src; this.listeners = {}; this.typeCount_ = 0 }; goog.events.ListenerMap.prototype.getTypeCount = function() { return this.typeCount_ }; goog.events.ListenerMap.prototype.getListenerCount = function() { var count = 0; for(var type in this.listeners) { count += this.listeners[type].length } return count }; goog.events.ListenerMap.prototype.add = function(type, listener, callOnce, opt_useCapture, opt_listenerScope) { var listenerArray = this.listeners[type]; if(!listenerArray) { listenerArray = this.listeners[type] = []; this.typeCount_++ } var listenerObj; var index = goog.events.ListenerMap.findListenerIndex_(listenerArray, listener, opt_useCapture, opt_listenerScope); if(index > -1) { listenerObj = listenerArray[index]; if(!callOnce) { listenerObj.callOnce = false } }else { listenerObj = new goog.events.Listener(listener, null, this.src, type, !!opt_useCapture, opt_listenerScope); listenerObj.callOnce = callOnce; listenerArray.push(listenerObj) } return listenerObj }; goog.events.ListenerMap.prototype.remove = function(type, listener, opt_useCapture, opt_listenerScope) { if(!(type in this.listeners)) { return false } var listenerArray = this.listeners[type]; var index = goog.events.ListenerMap.findListenerIndex_(listenerArray, listener, opt_useCapture, opt_listenerScope); if(index > -1) { var listenerObj = listenerArray[index]; listenerObj.markAsRemoved(); goog.array.removeAt(listenerArray, index); if(listenerArray.length == 0) { delete this.listeners[type]; this.typeCount_-- } return true } return false }; goog.events.ListenerMap.prototype.removeByKey = function(listener) { var type = listener.type; if(!(type in this.listeners)) { return false } var removed = goog.array.remove(this.listeners[type], listener); if(removed) { listener.markAsRemoved(); if(this.listeners[type].length == 0) { delete this.listeners[type]; this.typeCount_-- } } return removed }; goog.events.ListenerMap.prototype.removeAll = function(opt_type) { var count = 0; for(var type in this.listeners) { if(!opt_type || type == opt_type) { var listenerArray = this.listeners[type]; for(var i = 0;i < listenerArray.length;i++) { ++count; listenerArray[i].removed = true } delete this.listeners[type]; this.typeCount_-- } } return count }; goog.events.ListenerMap.prototype.getListeners = function(type, capture) { var listenerArray = this.listeners[type]; var rv = []; if(listenerArray) { for(var i = 0;i < listenerArray.length;++i) { var listenerObj = listenerArray[i]; if(listenerObj.capture == capture) { rv.push(listenerObj) } } } return rv }; goog.events.ListenerMap.prototype.getListener = function(type, listener, capture, opt_listenerScope) { var listenerArray = this.listeners[type]; var i = -1; if(listenerArray) { i = goog.events.ListenerMap.findListenerIndex_(listenerArray, listener, capture, opt_listenerScope) } return i > -1 ? listenerArray[i] : null }; goog.events.ListenerMap.prototype.hasListener = function(opt_type, opt_capture) { var hasType = goog.isDef(opt_type); var hasCapture = goog.isDef(opt_capture); return goog.object.some(this.listeners, function(listenerArray, type) { for(var i = 0;i < listenerArray.length;++i) { if((!hasType || listenerArray[i].type == opt_type) && (!hasCapture || listenerArray[i].capture == opt_capture)) { return true } } return false }) }; goog.events.ListenerMap.findListenerIndex_ = function(listenerArray, listener, opt_useCapture, opt_listenerScope) { for(var i = 0;i < listenerArray.length;++i) { var listenerObj = listenerArray[i]; if(!listenerObj.removed && listenerObj.listener == listener && listenerObj.capture == !!opt_useCapture && listenerObj.handler == opt_listenerScope) { return i } } return-1 }; goog.provide("goog.events.EventTarget"); goog.require("goog.Disposable"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.events.Listenable"); goog.require("goog.events.ListenerMap"); goog.require("goog.object"); goog.events.EventTarget = function() { goog.Disposable.call(this); this.eventTargetListeners_ = new goog.events.ListenerMap(this); this.actualEventTarget_ = this }; goog.inherits(goog.events.EventTarget, goog.Disposable); goog.events.Listenable.addImplementation(goog.events.EventTarget); goog.events.EventTarget.MAX_ANCESTORS_ = 1E3; goog.events.EventTarget.prototype.parentEventTarget_ = null; goog.events.EventTarget.prototype.getParentEventTarget = function() { return this.parentEventTarget_ }; goog.events.EventTarget.prototype.setParentEventTarget = function(parent) { this.parentEventTarget_ = parent }; goog.events.EventTarget.prototype.addEventListener = function(type, handler, opt_capture, opt_handlerScope) { goog.events.listen(this, type, handler, opt_capture, opt_handlerScope) }; goog.events.EventTarget.prototype.removeEventListener = function(type, handler, opt_capture, opt_handlerScope) { goog.events.unlisten(this, type, handler, opt_capture, opt_handlerScope) }; goog.events.EventTarget.prototype.dispatchEvent = function(e) { this.assertInitialized_(); var ancestorsTree, ancestor = this.getParentEventTarget(); if(ancestor) { ancestorsTree = []; var ancestorCount = 1; for(;ancestor;ancestor = ancestor.getParentEventTarget()) { ancestorsTree.push(ancestor); goog.asserts.assert(++ancestorCount < goog.events.EventTarget.MAX_ANCESTORS_, "infinite loop") } } return goog.events.EventTarget.dispatchEventInternal_(this.actualEventTarget_, e, ancestorsTree) }; goog.events.EventTarget.prototype.disposeInternal = function() { goog.events.EventTarget.superClass_.disposeInternal.call(this); this.removeAllListeners(); this.parentEventTarget_ = null }; goog.events.EventTarget.prototype.listen = function(type, listener, opt_useCapture, opt_listenerScope) { this.assertInitialized_(); return this.eventTargetListeners_.add(type, listener, false, opt_useCapture, opt_listenerScope) }; goog.events.EventTarget.prototype.listenOnce = function(type, listener, opt_useCapture, opt_listenerScope) { return this.eventTargetListeners_.add(type, listener, true, opt_useCapture, opt_listenerScope) }; goog.events.EventTarget.prototype.unlisten = function(type, listener, opt_useCapture, opt_listenerScope) { return this.eventTargetListeners_.remove(type, listener, opt_useCapture, opt_listenerScope) }; goog.events.EventTarget.prototype.unlistenByKey = function(key) { return this.eventTargetListeners_.removeByKey(key) }; goog.events.EventTarget.prototype.removeAllListeners = function(opt_type) { if(!this.eventTargetListeners_) { return 0 } return this.eventTargetListeners_.removeAll(opt_type) }; goog.events.EventTarget.prototype.fireListeners = function(type, capture, eventObject) { var listenerArray = this.eventTargetListeners_.listeners[type]; if(!listenerArray) { return true } listenerArray = goog.array.clone(listenerArray); var rv = true; for(var i = 0;i < listenerArray.length;++i) { var listener = listenerArray[i]; if(listener && !listener.removed && listener.capture == capture) { var listenerFn = listener.listener; var listenerHandler = listener.handler || listener.src; if(listener.callOnce) { this.unlistenByKey(listener) } rv = listenerFn.call(listenerHandler, eventObject) !== false && rv } } return rv && eventObject.returnValue_ != false }; goog.events.EventTarget.prototype.getListeners = function(type, capture) { return this.eventTargetListeners_.getListeners(type, capture) }; goog.events.EventTarget.prototype.getListener = function(type, listener, capture, opt_listenerScope) { return this.eventTargetListeners_.getListener(type, listener, capture, opt_listenerScope) }; goog.events.EventTarget.prototype.hasListener = function(opt_type, opt_capture) { return this.eventTargetListeners_.hasListener(opt_type, opt_capture) }; goog.events.EventTarget.prototype.setTargetForTesting = function(target) { this.actualEventTarget_ = target }; goog.events.EventTarget.prototype.assertInitialized_ = function() { goog.asserts.assert(this.eventTargetListeners_, "Event target is not initialized. Did you call the superclass " + "(goog.events.EventTarget) constructor?") }; goog.events.EventTarget.dispatchEventInternal_ = function(target, e, opt_ancestorsTree) { var type = e.type || (e); if(goog.isString(e)) { e = new goog.events.Event(e, target) }else { if(!(e instanceof goog.events.Event)) { var oldEvent = e; e = new goog.events.Event(type, target); goog.object.extend(e, oldEvent) }else { e.target = e.target || target } } var rv = true, currentTarget; if(opt_ancestorsTree) { for(var i = opt_ancestorsTree.length - 1;!e.propagationStopped_ && i >= 0;i--) { currentTarget = e.currentTarget = opt_ancestorsTree[i]; rv = currentTarget.fireListeners(type, true, e) && rv } } if(!e.propagationStopped_) { currentTarget = e.currentTarget = target; rv = currentTarget.fireListeners(type, true, e) && rv; if(!e.propagationStopped_) { rv = currentTarget.fireListeners(type, false, e) && rv } } if(opt_ancestorsTree) { for(i = 0;!e.propagationStopped_ && i < opt_ancestorsTree.length;i++) { currentTarget = e.currentTarget = opt_ancestorsTree[i]; rv = currentTarget.fireListeners(type, false, e) && rv } } return rv }; goog.provide("ol.Observable"); goog.require("goog.events"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); ol.Observable = function() { goog.base(this); this.revision_ = 0 }; goog.inherits(ol.Observable, goog.events.EventTarget); ol.Observable.prototype.dispatchChangeEvent = function() { ++this.revision_; this.dispatchEvent(goog.events.EventType.CHANGE) }; ol.Observable.prototype.getRevision = function() { return this.revision_ }; ol.Observable.prototype.on = function(type, listener, opt_this) { return goog.events.listen(this, type, listener, false, opt_this) }; ol.Observable.prototype.once = function(type, listener, opt_this) { return goog.events.listenOnce(this, type, listener, false, opt_this) }; ol.Observable.prototype.un = function(type, listener, opt_this) { goog.events.unlisten(this, type, listener, false, opt_this) }; ol.Observable.prototype.unByKey = function(key) { goog.events.unlistenByKey(key) }; goog.provide("ol.Object"); goog.provide("ol.ObjectEvent"); goog.provide("ol.ObjectEventType"); goog.require("goog.array"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.functions"); goog.require("goog.object"); goog.require("ol.Observable"); ol.ObjectEventType = {BEFOREPROPERTYCHANGE:"beforepropertychange", PROPERTYCHANGE:"propertychange"}; ol.ObjectEvent = function(type, key) { goog.base(this, type); this.key = key }; goog.inherits(ol.ObjectEvent, goog.events.Event); ol.ObjectAccessor = function(target, key) { this.target = target; this.key = key; this.from = goog.functions.identity; this.to = goog.functions.identity }; ol.ObjectAccessor.prototype.transform = function(from, to) { this.from = from; this.to = to; this.target.notify(this.key) }; ol.Object = function(opt_values) { goog.base(this); goog.getUid(this); this.values_ = {}; this.accessors_ = {}; this.beforeChangeListeners_ = {}; this.listeners_ = {}; if(goog.isDef(opt_values)) { this.setValues(opt_values) } }; goog.inherits(ol.Object, ol.Observable); ol.Object.changeEventTypeCache_ = {}; ol.Object.getterNameCache_ = {}; ol.Object.setterNameCache_ = {}; ol.Object.capitalize = function(str) { return str.substr(0, 1).toUpperCase() + str.substr(1) }; ol.Object.getChangeEventType = function(key) { return ol.Object.changeEventTypeCache_.hasOwnProperty(key) ? ol.Object.changeEventTypeCache_[key] : ol.Object.changeEventTypeCache_[key] = "change:" + key.toLowerCase() }; ol.Object.getGetterName = function(key) { return ol.Object.getterNameCache_.hasOwnProperty(key) ? ol.Object.getterNameCache_[key] : ol.Object.getterNameCache_[key] = "get" + ol.Object.capitalize(key) }; ol.Object.getSetterName = function(key) { return ol.Object.setterNameCache_.hasOwnProperty(key) ? ol.Object.setterNameCache_[key] : ol.Object.setterNameCache_[key] = "set" + ol.Object.capitalize(key) }; ol.Object.prototype.bindTo = function(key, target, opt_targetKey) { var targetKey = opt_targetKey || key; this.unbind(key); var eventType = ol.Object.getChangeEventType(targetKey); this.listeners_[key] = goog.events.listen(target, eventType, function() { this.notifyInternal_(key) }, undefined, this); this.beforeChangeListeners_[key] = goog.events.listen(target, ol.ObjectEventType.BEFOREPROPERTYCHANGE, this.createBeforeChangeListener_(key, targetKey), undefined, this); var accessor = new ol.ObjectAccessor(target, targetKey); this.accessors_[key] = accessor; this.notifyInternal_(key); return accessor }; ol.Object.prototype.createBeforeChangeListener_ = function(key, targetKey) { return function(event) { if(event.key === targetKey) { this.dispatchEvent(new ol.ObjectEvent(ol.ObjectEventType.BEFOREPROPERTYCHANGE, key)) } } }; ol.Object.prototype.get = function(key) { var value; var accessors = this.accessors_; if(accessors.hasOwnProperty(key)) { var accessor = accessors[key]; var target = accessor.target; var targetKey = accessor.key; var getterName = ol.Object.getGetterName(targetKey); var getter = (goog.object.get(target, getterName)); if(goog.isDef(getter)) { value = getter.call(target) }else { value = target.get(targetKey) } value = accessor.to(value) }else { if(this.values_.hasOwnProperty(key)) { value = this.values_[key] } } return value }; ol.Object.prototype.getKeys = function() { var accessors = this.accessors_; var keysObject; if(goog.object.isEmpty(this.values_)) { if(goog.object.isEmpty(accessors)) { return[] }else { keysObject = accessors } }else { if(goog.object.isEmpty(accessors)) { keysObject = this.values_ }else { keysObject = {}; var key; for(key in this.values_) { keysObject[key] = true } for(key in accessors) { keysObject[key] = true } } } return goog.object.getKeys(keysObject) }; ol.Object.prototype.getProperties = function() { var properties = {}; var key; for(key in this.values_) { properties[key] = this.values_[key] } for(key in this.accessors_) { properties[key] = this.get(key) } return properties }; ol.Object.prototype.notify = function(key) { var accessors = this.accessors_; if(accessors.hasOwnProperty(key)) { var accessor = accessors[key]; var target = accessor.target; var targetKey = accessor.key; target.notify(targetKey) }else { this.notifyInternal_(key) } }; ol.Object.prototype.notifyInternal_ = function(key) { var eventType = ol.Object.getChangeEventType(key); this.dispatchEvent(eventType); this.dispatchEvent(new ol.ObjectEvent(ol.ObjectEventType.PROPERTYCHANGE, key)) }; ol.Object.prototype.set = function(key, value) { this.dispatchEvent(new ol.ObjectEvent(ol.ObjectEventType.BEFOREPROPERTYCHANGE, key)); var accessors = this.accessors_; if(accessors.hasOwnProperty(key)) { var accessor = accessors[key]; var target = accessor.target; var targetKey = accessor.key; value = accessor.from(value); var setterName = ol.Object.getSetterName(targetKey); var setter = (goog.object.get(target, setterName)); if(goog.isDef(setter)) { setter.call(target, value) }else { target.set(targetKey, value) } }else { this.values_[key] = value; this.notifyInternal_(key) } }; ol.Object.prototype.setValues = function(values) { var key; for(key in values) { this.set(key, values[key]) } }; ol.Object.prototype.unbind = function(key) { var listeners = this.listeners_; var listener = listeners[key]; if(listener) { delete listeners[key]; goog.events.unlistenByKey(listener); var value = this.get(key); delete this.accessors_[key]; this.values_[key] = value } var listenerKey = this.beforeChangeListeners_[key]; if(listenerKey) { goog.events.unlistenByKey(listenerKey); delete this.beforeChangeListeners_[key] } }; ol.Object.prototype.unbindAll = function() { for(var key in this.listeners_) { this.unbind(key) } }; goog.provide("ol.Collection"); goog.provide("ol.CollectionEvent"); goog.provide("ol.CollectionEventType"); goog.require("goog.array"); goog.require("goog.events.Event"); goog.require("ol.Object"); ol.CollectionEventType = {ADD:"add", REMOVE:"remove"}; ol.CollectionEvent = function(type, opt_element, opt_target) { goog.base(this, type, opt_target); this.element = opt_element }; goog.inherits(ol.CollectionEvent, goog.events.Event); ol.CollectionProperty = {LENGTH:"length"}; ol.Collection = function(opt_array) { goog.base(this); this.array_ = opt_array || []; this.updateLength_() }; goog.inherits(ol.Collection, ol.Object); ol.Collection.prototype.clear = function() { while(this.getLength() > 0) { this.pop() } }; ol.Collection.prototype.extend = function(arr) { var i, ii; for(i = 0, ii = arr.length;i < ii;++i) { this.push(arr[i]) } return this }; ol.Collection.prototype.forEach = function(f, opt_this) { goog.array.forEach(this.array_, f, opt_this) }; ol.Collection.prototype.getArray = function() { return this.array_ }; ol.Collection.prototype.getAt = function(index) { return this.array_[index] }; ol.Collection.prototype.getLength = function() { return(this.get(ol.CollectionProperty.LENGTH)) }; ol.Collection.prototype.insertAt = function(index, elem) { goog.array.insertAt(this.array_, elem, index); this.updateLength_(); this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.ADD, elem, this)) }; ol.Collection.prototype.pop = function() { return this.removeAt(this.getLength() - 1) }; ol.Collection.prototype.push = function(elem) { var n = this.array_.length; this.insertAt(n, elem); return n }; ol.Collection.prototype.remove = function(elem) { var arr = this.array_; var i, ii; for(i = 0, ii = arr.length;i < ii;++i) { if(arr[i] === elem) { return this.removeAt(i) } } return undefined }; ol.Collection.prototype.removeAt = function(index) { var prev = this.array_[index]; goog.array.removeAt(this.array_, index); this.updateLength_(); this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.REMOVE, prev, this)); return prev }; ol.Collection.prototype.setAt = function(index, elem) { var n = this.getLength(); if(index < n) { var prev = this.array_[index]; this.array_[index] = elem; this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.REMOVE, prev, this)); this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.ADD, elem, this)) }else { var j; for(j = n;j < index;++j) { this.insertAt(j, undefined) } this.insertAt(index, elem) } }; ol.Collection.prototype.updateLength_ = function() { this.set(ol.CollectionProperty.LENGTH, this.array_.length) }; goog.provide("ol.Coordinate"); goog.provide("ol.CoordinateArray"); goog.provide("ol.CoordinateFormatType"); goog.provide("ol.coordinate"); goog.require("goog.math"); ol.CoordinateFormatType; ol.Coordinate; ol.CoordinateArray; ol.coordinate.add = function(coordinate, delta) { coordinate[0] += delta[0]; coordinate[1] += delta[1]; return coordinate }; ol.coordinate.closestOnSegment = function(coordinate, segment) { var x0 = coordinate[0]; var y0 = coordinate[1]; var start = segment[0]; var end = segment[1]; var x1 = start[0]; var y1 = start[1]; var x2 = end[0]; var y2 = end[1]; var dx = x2 - x1; var dy = y2 - y1; var along = dx === 0 && dy === 0 ? 0 : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0); var x, y; if(along <= 0) { x = x1; y = y1 }else { if(along >= 1) { x = x2; y = y2 }else { x = x1 + along * dx; y = y1 + along * dy } } return[x, y] }; ol.coordinate.createStringXY = function(opt_fractionDigits) { return function(coordinate) { return ol.coordinate.toStringXY(coordinate, opt_fractionDigits) } }; ol.coordinate.degreesToStringHDMS_ = function(degrees, hemispheres) { var normalizedDegrees = goog.math.modulo(degrees + 180, 360) - 180; var x = Math.abs(Math.round(3600 * normalizedDegrees)); return Math.floor(x / 3600) + "\u00b0 " + Math.floor(x / 60 % 60) + "\u2032 " + Math.floor(x % 60) + "\u2033 " + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0) }; ol.coordinate.format = function(coordinate, template, opt_fractionDigits) { if(goog.isDef(coordinate)) { return template.replace("{x}", coordinate[0].toFixed(opt_fractionDigits)).replace("{y}", coordinate[1].toFixed(opt_fractionDigits)) }else { return"" } }; ol.coordinate.equals = function(coordinate1, coordinate2) { var equals = true; for(var i = coordinate1.length - 1;i >= 0;--i) { if(coordinate1[i] != coordinate2[i]) { equals = false; break } } return equals }; ol.coordinate.rotate = function(coordinate, angle) { var cosAngle = Math.cos(angle); var sinAngle = Math.sin(angle); var x = coordinate[0] * cosAngle - coordinate[1] * sinAngle; var y = coordinate[1] * cosAngle + coordinate[0] * sinAngle; coordinate[0] = x; coordinate[1] = y; return coordinate }; ol.coordinate.scale = function(coordinate, s) { coordinate[0] *= s; coordinate[1] *= s; return coordinate }; ol.coordinate.sub = function(coordinate, delta) { coordinate[0] -= delta[0]; coordinate[1] -= delta[1]; return coordinate }; ol.coordinate.squaredDistance = function(coord1, coord2) { var dx = coord1[0] - coord2[0]; var dy = coord1[1] - coord2[1]; return dx * dx + dy * dy }; ol.coordinate.squaredDistanceToSegment = function(coordinate, segment) { return ol.coordinate.squaredDistance(coordinate, ol.coordinate.closestOnSegment(coordinate, segment)) }; ol.coordinate.toStringHDMS = function(coordinate) { if(goog.isDef(coordinate)) { return ol.coordinate.degreesToStringHDMS_(coordinate[1], "NS") + " " + ol.coordinate.degreesToStringHDMS_(coordinate[0], "EW") }else { return"" } }; ol.coordinate.toStringXY = function(coordinate, opt_fractionDigits) { return ol.coordinate.format(coordinate, "{x}, {y}", opt_fractionDigits) }; ol.coordinate.fromProjectedArray = function(array, axis) { var firstAxis = axis.charAt(0); if(firstAxis === "n" || firstAxis === "s") { return[array[1], array[0]] }else { return array } }; goog.provide("ol.DeviceOrientation"); goog.provide("ol.DeviceOrientationProperty"); goog.require("goog.events"); goog.require("goog.math"); goog.require("ol.BrowserFeature"); goog.require("ol.Object"); ol.DeviceOrientationProperty = {ALPHA:"alpha", BETA:"beta", GAMMA:"gamma", HEADING:"heading", TRACKING:"tracking"}; ol.DeviceOrientation = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.listenerKey_ = null; goog.events.listen(this, ol.Object.getChangeEventType(ol.DeviceOrientationProperty.TRACKING), this.handleTrackingChanged_, false, this); this.setTracking(goog.isDef(options.tracking) ? options.tracking : false) }; goog.inherits(ol.DeviceOrientation, ol.Object); ol.DeviceOrientation.prototype.disposeInternal = function() { this.setTracking(false); goog.base(this, "disposeInternal") }; ol.DeviceOrientation.prototype.orientationChange_ = function(browserEvent) { var event = (browserEvent.getBrowserEvent()); if(goog.isDefAndNotNull(event.alpha)) { var alpha = goog.math.toRadians(event.alpha); this.set(ol.DeviceOrientationProperty.ALPHA, alpha); if(goog.isBoolean(event.absolute) && event.absolute) { this.set(ol.DeviceOrientationProperty.HEADING, alpha) }else { if(goog.isDefAndNotNull(event.webkitCompassHeading) && goog.isDefAndNotNull(event.webkitCompassAccuracy) && event.webkitCompassAccuracy != -1) { var heading = goog.math.toRadians(event.webkitCompassHeading); this.set(ol.DeviceOrientationProperty.HEADING, heading) } } } if(goog.isDefAndNotNull(event.beta)) { this.set(ol.DeviceOrientationProperty.BETA, goog.math.toRadians(event.beta)) } if(goog.isDefAndNotNull(event.gamma)) { this.set(ol.DeviceOrientationProperty.GAMMA, goog.math.toRadians(event.gamma)) } this.dispatchChangeEvent() }; ol.DeviceOrientation.prototype.getAlpha = function() { return(this.get(ol.DeviceOrientationProperty.ALPHA)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getAlpha", ol.DeviceOrientation.prototype.getAlpha); ol.DeviceOrientation.prototype.getBeta = function() { return(this.get(ol.DeviceOrientationProperty.BETA)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getBeta", ol.DeviceOrientation.prototype.getBeta); ol.DeviceOrientation.prototype.getGamma = function() { return(this.get(ol.DeviceOrientationProperty.GAMMA)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getGamma", ol.DeviceOrientation.prototype.getGamma); ol.DeviceOrientation.prototype.getHeading = function() { return(this.get(ol.DeviceOrientationProperty.HEADING)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getHeading", ol.DeviceOrientation.prototype.getHeading); ol.DeviceOrientation.prototype.getTracking = function() { return(this.get(ol.DeviceOrientationProperty.TRACKING)) }; goog.exportProperty(ol.DeviceOrientation.prototype, "getTracking", ol.DeviceOrientation.prototype.getTracking); ol.DeviceOrientation.prototype.handleTrackingChanged_ = function() { if(ol.BrowserFeature.HAS_DEVICE_ORIENTATION) { var tracking = this.getTracking(); if(tracking && goog.isNull(this.listenerKey_)) { this.listenerKey_ = goog.events.listen(goog.global, "deviceorientation", this.orientationChange_, false, this) }else { if(!tracking && !goog.isNull(this.listenerKey_)) { goog.events.unlistenByKey(this.listenerKey_); this.listenerKey_ = null } } } }; ol.DeviceOrientation.prototype.setTracking = function(tracking) { this.set(ol.DeviceOrientationProperty.TRACKING, tracking) }; goog.exportProperty(ol.DeviceOrientation.prototype, "setTracking", ol.DeviceOrientation.prototype.setTracking); goog.provide("ol.MapEvent"); goog.provide("ol.MapEventType"); goog.require("goog.events.Event"); ol.MapEventType = {POSTRENDER:"postrender", MOVEEND:"moveend"}; ol.MapEvent = function(type, map, opt_frameState) { goog.base(this, type); this.map = map; this.frameState = goog.isDef(opt_frameState) ? opt_frameState : null }; goog.inherits(ol.MapEvent, goog.events.Event); goog.provide("ol.Pixel"); ol.Pixel; goog.provide("ol.pointer.PointerEvent"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.object"); ol.pointer.PointerEvent = function(type, browserEvent, opt_eventDict) { goog.base(this, type); this.browserEvent = browserEvent; var eventDict = goog.isDef(opt_eventDict) ? opt_eventDict : {}; this.buttons = this.getButtons_(eventDict); this.pressure = this.getPressure_(eventDict, this.buttons); this.bubbles = goog.object.get(eventDict, "bubbles", false); this.cancelable = goog.object.get(eventDict, "cancelable", false); this.view = goog.object.get(eventDict, "view", null); this.detail = goog.object.get(eventDict, "detail", null); this.screenX = goog.object.get(eventDict, "screenX", 0); this.screenY = goog.object.get(eventDict, "screenY", 0); this.clientX = goog.object.get(eventDict, "clientX", 0); this.clientY = goog.object.get(eventDict, "clientY", 0); this.ctrlKey = goog.object.get(eventDict, "ctrlKey", false); this.altKey = goog.object.get(eventDict, "altKey", false); this.shiftKey = goog.object.get(eventDict, "shiftKey", false); this.metaKey = goog.object.get(eventDict, "metaKey", false); this.button = goog.object.get(eventDict, "button", 0); this.relatedTarget = goog.object.get(eventDict, "relatedTarget", null); this.pointerId = goog.object.get(eventDict, "pointerId", 0); this.width = goog.object.get(eventDict, "width", 0); this.height = goog.object.get(eventDict, "height", 0); this.tiltX = goog.object.get(eventDict, "tiltX", 0); this.tiltY = goog.object.get(eventDict, "tiltY", 0); this.pointerType = goog.object.get(eventDict, "pointerType", ""); this.hwTimestamp = goog.object.get(eventDict, "hwTimestamp", 0); this.isPrimary = goog.object.get(eventDict, "isPrimary", false); if(browserEvent.preventDefault) { this.preventDefault = function() { browserEvent.preventDefault() } } }; goog.inherits(ol.pointer.PointerEvent, goog.events.Event); ol.pointer.PointerEvent.prototype.getButtons_ = function(eventDict) { var buttons; if(eventDict.buttons || ol.pointer.PointerEvent.HAS_BUTTONS) { buttons = eventDict.buttons }else { switch(eventDict.which) { case 1: buttons = 1; break; case 2: buttons = 4; break; case 3: buttons = 2; break; default: buttons = 0 } } return buttons }; ol.pointer.PointerEvent.prototype.getPressure_ = function(eventDict, buttons) { var pressure = 0; if(eventDict.pressure) { pressure = eventDict.pressure }else { pressure = buttons ? 0.5 : 0 } return pressure }; ol.pointer.PointerEvent.createMouseEvent = function(inType, inDict) { return new MouseEvent(inType, inDict) }; ol.pointer.PointerEvent.HAS_BUTTONS = false; (function() { try { var ev = ol.pointer.PointerEvent.createMouseEvent("click", {buttons:1}); ol.pointer.PointerEvent.HAS_BUTTONS = ev.buttons === 1 }catch(e) { } })(); goog.provide("ol.pointer.EventSource"); goog.require("goog.events.BrowserEvent"); goog.require("goog.object"); ol.pointer.EventSource = function(dispatcher, mapping) { this.dispatcher = dispatcher; this.mapping_ = mapping }; ol.pointer.EventSource.prototype.getEvents = function() { return goog.object.getKeys(this.mapping_) }; ol.pointer.EventSource.prototype.getMapping = function() { return this.mapping_ }; ol.pointer.EventSource.prototype.getHandlerForEvent = function(eventType) { return this.mapping_[eventType] }; goog.provide("ol.pointer.MouseSource"); goog.require("goog.object"); goog.require("ol.pointer.EventSource"); ol.pointer.MouseSource = function(dispatcher) { var mapping = {"mousedown":this.mousedown, "mousemove":this.mousemove, "mouseup":this.mouseup, "mouseover":this.mouseover, "mouseout":this.mouseout}; goog.base(this, dispatcher, mapping); this.pointerMap = dispatcher.pointerMap; this.lastTouches = [] }; goog.inherits(ol.pointer.MouseSource, ol.pointer.EventSource); ol.pointer.MouseSource.POINTER_ID = 1; ol.pointer.MouseSource.POINTER_TYPE = "mouse"; ol.pointer.MouseSource.DEDUP_DIST = 25; ol.pointer.MouseSource.prototype.isEventSimulatedFromTouch_ = function(inEvent) { var lts = this.lastTouches; var x = inEvent.clientX, y = inEvent.clientY; for(var i = 0, l = lts.length, t;i < l && (t = lts[i]);i++) { var dx = Math.abs(x - t[0]), dy = Math.abs(y - t[1]); if(dx <= ol.pointer.MouseSource.DEDUP_DIST && dy <= ol.pointer.MouseSource.DEDUP_DIST) { return true } } return false }; ol.pointer.MouseSource.prepareEvent = function(inEvent, dispatcher) { var e = dispatcher.cloneEvent(inEvent, inEvent.getBrowserEvent()); var pd = e.preventDefault; e.preventDefault = function() { inEvent.preventDefault(); pd() }; e.pointerId = ol.pointer.MouseSource.POINTER_ID; e.isPrimary = true; e.pointerType = ol.pointer.MouseSource.POINTER_TYPE; return e }; ol.pointer.MouseSource.prototype.mousedown = function(inEvent) { if(!this.isEventSimulatedFromTouch_(inEvent)) { var p = goog.object.containsKey(this.pointerMap, ol.pointer.MouseSource.POINTER_ID.toString()); if(p) { this.cancel(inEvent) } var e = ol.pointer.MouseSource.prepareEvent(inEvent, this.dispatcher); goog.object.set(this.pointerMap, ol.pointer.MouseSource.POINTER_ID.toString(), inEvent); this.dispatcher.down(e, inEvent) } }; ol.pointer.MouseSource.prototype.mousemove = function(inEvent) { if(!this.isEventSimulatedFromTouch_(inEvent)) { var e = ol.pointer.MouseSource.prepareEvent(inEvent, this.dispatcher); this.dispatcher.move(e, inEvent) } }; ol.pointer.MouseSource.prototype.mouseup = function(inEvent) { if(!this.isEventSimulatedFromTouch_(inEvent)) { var p = goog.object.get(this.pointerMap, ol.pointer.MouseSource.POINTER_ID.toString()); if(p && p.button === inEvent.button) { var e = ol.pointer.MouseSource.prepareEvent(inEvent, this.dispatcher); this.dispatcher.up(e, inEvent); this.cleanupMouse() } } }; ol.pointer.MouseSource.prototype.mouseover = function(inEvent) { if(!this.isEventSimulatedFromTouch_(inEvent)) { var e = ol.pointer.MouseSource.prepareEvent(inEvent, this.dispatcher); this.dispatcher.enterOver(e, inEvent) } }; ol.pointer.MouseSource.prototype.mouseout = function(inEvent) { if(!this.isEventSimulatedFromTouch_(inEvent)) { var e = ol.pointer.MouseSource.prepareEvent(inEvent, this.dispatcher); this.dispatcher.leaveOut(e, inEvent) } }; ol.pointer.MouseSource.prototype.cancel = function(inEvent) { var e = ol.pointer.MouseSource.prepareEvent(inEvent, this.dispatcher); this.dispatcher.cancel(e, inEvent); this.cleanupMouse() }; ol.pointer.MouseSource.prototype.cleanupMouse = function() { goog.object.remove(this.pointerMap, ol.pointer.MouseSource.POINTER_ID.toString()) }; goog.provide("ol.pointer.MsSource"); goog.require("goog.object"); goog.require("ol.pointer.EventSource"); ol.pointer.MsSource = function(dispatcher) { var mapping = {"MSPointerDown":this.msPointerDown, "MSPointerMove":this.msPointerMove, "MSPointerUp":this.msPointerUp, "MSPointerOut":this.msPointerOut, "MSPointerOver":this.msPointerOver, "MSPointerCancel":this.msPointerCancel, "MSGotPointerCapture":this.msGotPointerCapture, "MSLostPointerCapture":this.msLostPointerCapture}; goog.base(this, dispatcher, mapping); this.pointerMap = dispatcher.pointerMap; this.POINTER_TYPES = ["", "unavailable", "touch", "pen", "mouse"] }; goog.inherits(ol.pointer.MsSource, ol.pointer.EventSource); ol.pointer.MsSource.prototype.prepareEvent_ = function(inEvent) { var e = inEvent; if(goog.isNumber(inEvent.getBrowserEvent().pointerType)) { e = this.dispatcher.cloneEvent(inEvent, inEvent.getBrowserEvent()); e.pointerType = this.POINTER_TYPES[inEvent.getBrowserEvent().pointerType] } return e }; ol.pointer.MsSource.prototype.cleanup = function(pointerId) { goog.object.remove(this.pointerMap, pointerId) }; ol.pointer.MsSource.prototype.msPointerDown = function(inEvent) { goog.object.set(this.pointerMap, inEvent.getBrowserEvent().pointerId, inEvent); var e = this.prepareEvent_(inEvent); this.dispatcher.down(e, inEvent) }; ol.pointer.MsSource.prototype.msPointerMove = function(inEvent) { var e = this.prepareEvent_(inEvent); this.dispatcher.move(e, inEvent) }; ol.pointer.MsSource.prototype.msPointerUp = function(inEvent) { var e = this.prepareEvent_(inEvent); this.dispatcher.up(e, inEvent); this.cleanup(inEvent.getBrowserEvent().pointerId) }; ol.pointer.MsSource.prototype.msPointerOut = function(inEvent) { var e = this.prepareEvent_(inEvent); this.dispatcher.leaveOut(e, inEvent) }; ol.pointer.MsSource.prototype.msPointerOver = function(inEvent) { var e = this.prepareEvent_(inEvent); this.dispatcher.enterOver(e, inEvent) }; ol.pointer.MsSource.prototype.msPointerCancel = function(inEvent) { var e = this.prepareEvent_(inEvent); this.dispatcher.cancel(e, inEvent); this.cleanup(inEvent.getBrowserEvent().pointerId) }; ol.pointer.MsSource.prototype.msLostPointerCapture = function(inEvent) { var e = this.dispatcher.makeEvent("lostpointercapture", inEvent.getBrowserEvent(), inEvent); this.dispatcher.dispatchEvent(e) }; ol.pointer.MsSource.prototype.msGotPointerCapture = function(inEvent) { var e = this.dispatcher.makeEvent("gotpointercapture", inEvent.getBrowserEvent(), inEvent); this.dispatcher.dispatchEvent(e) }; goog.provide("ol.pointer.NativeSource"); goog.require("goog.object"); goog.require("ol.pointer.EventSource"); ol.pointer.NativeSource = function(dispatcher) { var mapping = {"pointerdown":this.pointerDown, "pointermove":this.pointerMove, "pointerup":this.pointerUp, "pointerout":this.pointerOut, "pointerover":this.pointerOver, "pointercancel":this.pointerCancel, "gotpointercapture":this.gotPointerCapture, "lostpointercapture":this.lostPointerCapture}; goog.base(this, dispatcher, mapping) }; goog.inherits(ol.pointer.NativeSource, ol.pointer.EventSource); ol.pointer.NativeSource.prototype.pointerDown = function(inEvent) { this.dispatcher.fireNativeEvent(inEvent) }; ol.pointer.NativeSource.prototype.pointerMove = function(inEvent) { this.dispatcher.fireNativeEvent(inEvent) }; ol.pointer.NativeSource.prototype.pointerUp = function(inEvent) { this.dispatcher.fireNativeEvent(inEvent) }; ol.pointer.NativeSource.prototype.pointerOut = function(inEvent) { this.dispatcher.fireNativeEvent(inEvent) }; ol.pointer.NativeSource.prototype.pointerOver = function(inEvent) { this.dispatcher.fireNativeEvent(inEvent) }; ol.pointer.NativeSource.prototype.pointerCancel = function(inEvent) { this.dispatcher.fireNativeEvent(inEvent) }; ol.pointer.NativeSource.prototype.lostPointerCapture = function(inEvent) { this.dispatcher.fireNativeEvent(inEvent) }; ol.pointer.NativeSource.prototype.gotPointerCapture = function(inEvent) { this.dispatcher.fireNativeEvent(inEvent) }; goog.provide("ol.pointer.TouchSource"); goog.require("goog.array"); goog.require("goog.object"); goog.require("ol.pointer.EventSource"); goog.require("ol.pointer.MouseSource"); ol.pointer.TouchSource = function(dispatcher, mouseSource) { var mapping = {"touchstart":this.touchstart, "touchmove":this.touchmove, "touchend":this.touchend, "touchcancel":this.touchcancel}; goog.base(this, dispatcher, mapping); this.pointerMap = dispatcher.pointerMap; this.mouseSource = mouseSource; this.firstTouchId_ = undefined; this.clickCount_ = 0; this.resetId_ = undefined }; goog.inherits(ol.pointer.TouchSource, ol.pointer.EventSource); ol.pointer.TouchSource.DEDUP_TIMEOUT = 2500; ol.pointer.TouchSource.CLICK_COUNT_TIMEOUT = 200; ol.pointer.TouchSource.POINTER_TYPE = "touch"; ol.pointer.TouchSource.prototype.isPrimaryTouch_ = function(inTouch) { return this.firstTouchId_ === inTouch.identifier }; ol.pointer.TouchSource.prototype.setPrimaryTouch_ = function(inTouch) { var count = goog.object.getCount(this.pointerMap); if(count === 0 || count === 1 && goog.object.containsKey(this.pointerMap, ol.pointer.MouseSource.POINTER_ID.toString())) { this.firstTouchId_ = inTouch.identifier; this.cancelResetClickCount_() } }; ol.pointer.TouchSource.prototype.removePrimaryPointer_ = function(inPointer) { if(inPointer.isPrimary) { this.firstTouchId_ = undefined; this.resetClickCount_() } }; ol.pointer.TouchSource.prototype.resetClickCount_ = function() { this.resetId_ = goog.global.setTimeout(this.resetClickCountHandler_, ol.pointer.TouchSource.CLICK_COUNT_TIMEOUT) }; ol.pointer.TouchSource.prototype.resetClickCountHandler_ = function() { this.clickCount_ = 0; this.resetId_ = undefined }; ol.pointer.TouchSource.prototype.cancelResetClickCount_ = function() { if(goog.isDef(this.resetId_)) { goog.global.clearTimeout(this.resetId_) } }; ol.pointer.TouchSource.prototype.touchToPointer_ = function(browserEvent, inTouch) { var e = this.dispatcher.cloneEvent(browserEvent, inTouch); e.pointerId = inTouch.identifier + 2; e.bubbles = true; e.cancelable = true; e.detail = this.clickCount_; e.button = 0; e.buttons = 1; e.width = inTouch.webkitRadiusX || inTouch.radiusX || 0; e.height = inTouch.webkitRadiusY || inTouch.radiusY || 0; e.pressure = inTouch.webkitForce || inTouch.force || 0.5; e.isPrimary = this.isPrimaryTouch_(inTouch); e.pointerType = ol.pointer.TouchSource.POINTER_TYPE; e.clientX = inTouch.clientX; e.clientY = inTouch.clientY; e.screenX = inTouch.screenX; e.screenY = inTouch.screenY; return e }; ol.pointer.TouchSource.prototype.processTouches_ = function(inEvent, inFunction) { var tl = inEvent.getBrowserEvent().changedTouches; var touchesCopy = goog.array.clone(tl); var pointers = goog.array.map(touchesCopy, goog.partial(this.touchToPointer_, inEvent), this); goog.array.forEach(pointers, function(p) { p.preventDefault = function() { inEvent.preventDefault() } }, this); goog.array.forEach(pointers, goog.partial(inFunction, inEvent), this) }; ol.pointer.TouchSource.prototype.findTouch_ = function(touchList, searchId) { var l = touchList.length; var touch; for(var i = 0;i < l;i++) { touch = touchList[i]; if(touch.identifier === searchId) { return true } } return false }; ol.pointer.TouchSource.prototype.vacuumTouches_ = function(inEvent) { var touchList = inEvent.getBrowserEvent().touches; if(goog.object.getCount(this.pointerMap) >= touchList.length) { var d = []; goog.object.forEach(this.pointerMap, function(value, key) { if(key != ol.pointer.MouseSource.POINTER_ID && !this.findTouch_(touchList, key - 2)) { d.push(value.out) } }, this); goog.array.forEach(d, goog.partial(this.cancelOut_, inEvent), this) } }; ol.pointer.TouchSource.prototype.touchstart = function(inEvent) { this.vacuumTouches_(inEvent); this.setPrimaryTouch_(inEvent.getBrowserEvent().changedTouches[0]); this.dedupSynthMouse_(inEvent); this.clickCount_++; this.processTouches_(inEvent, this.overDown_) }; ol.pointer.TouchSource.prototype.overDown_ = function(browserEvent, inPointer) { goog.object.set(this.pointerMap, inPointer.pointerId, {target:inPointer.target, out:inPointer, outTarget:inPointer.target}); this.dispatcher.over(inPointer, browserEvent); this.dispatcher.enter(inPointer, browserEvent); this.dispatcher.down(inPointer, browserEvent) }; ol.pointer.TouchSource.prototype.touchmove = function(inEvent) { inEvent.preventDefault(); this.processTouches_(inEvent, this.moveOverOut_) }; ol.pointer.TouchSource.prototype.moveOverOut_ = function(browserEvent, inPointer) { var event = inPointer; var pointer = goog.object.get(this.pointerMap, event.pointerId); if(!pointer) { return } var outEvent = pointer.out; var outTarget = pointer.outTarget; this.dispatcher.move(event, browserEvent); if(outEvent && outTarget !== event.target) { outEvent.relatedTarget = event.target; event.relatedTarget = outTarget; outEvent.target = outTarget; if(event.target) { this.dispatcher.leaveOut(outEvent, browserEvent); this.dispatcher.enterOver(event, browserEvent) }else { event.target = outTarget; event.relatedTarget = null; this.cancelOut_(browserEvent, event) } } pointer.out = event; pointer.outTarget = event.target }; ol.pointer.TouchSource.prototype.touchend = function(inEvent) { this.dedupSynthMouse_(inEvent); this.processTouches_(inEvent, this.upOut_) }; ol.pointer.TouchSource.prototype.upOut_ = function(browserEvent, inPointer) { this.dispatcher.up(inPointer, browserEvent); this.dispatcher.out(inPointer, browserEvent); this.dispatcher.leave(inPointer, browserEvent); this.cleanUpPointer_(inPointer) }; ol.pointer.TouchSource.prototype.touchcancel = function(inEvent) { this.processTouches_(inEvent, this.cancelOut_) }; ol.pointer.TouchSource.prototype.cancelOut_ = function(browserEvent, inPointer) { this.dispatcher.cancel(inPointer, browserEvent); this.dispatcher.out(inPointer, browserEvent); this.dispatcher.leave(inPointer, browserEvent); this.cleanUpPointer_(inPointer) }; ol.pointer.TouchSource.prototype.cleanUpPointer_ = function(inPointer) { goog.object.remove(this.pointerMap, inPointer.pointerId); this.removePrimaryPointer_(inPointer) }; ol.pointer.TouchSource.prototype.dedupSynthMouse_ = function(inEvent) { var lts = this.mouseSource.lastTouches; var t = inEvent.getBrowserEvent().changedTouches[0]; if(this.isPrimaryTouch_(t)) { var lt = ([t.clientX, t.clientY]); lts.push(lt); goog.global.setTimeout(function() { goog.array.remove(lts, lt) }, ol.pointer.TouchSource.DEDUP_TIMEOUT) } }; goog.provide("ol.pointer.PointerEventHandler"); goog.require("goog.array"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.Event"); goog.require("goog.events.EventTarget"); goog.require("ol.BrowserFeature"); goog.require("ol.pointer.MouseSource"); goog.require("ol.pointer.MsSource"); goog.require("ol.pointer.NativeSource"); goog.require("ol.pointer.PointerEvent"); goog.require("ol.pointer.TouchSource"); ol.pointer.PointerEventHandler = function(element) { goog.base(this); this.element_ = element; this.pointerMap = {}; this.eventMap_ = {}; this.eventSourceList_ = []; this.registerSources() }; goog.inherits(ol.pointer.PointerEventHandler, goog.events.EventTarget); ol.pointer.PointerEventHandler.prototype.registerSources = function() { if(ol.BrowserFeature.HAS_POINTER) { this.registerSource("native", new ol.pointer.NativeSource(this)) }else { if(ol.BrowserFeature.HAS_MSPOINTER) { this.registerSource("ms", new ol.pointer.MsSource(this)) }else { var mouseSource = new ol.pointer.MouseSource(this); this.registerSource("mouse", mouseSource); if(ol.BrowserFeature.HAS_TOUCH) { this.registerSource("touch", new ol.pointer.TouchSource(this, mouseSource)) } } } this.register_() }; ol.pointer.PointerEventHandler.prototype.registerSource = function(name, source) { var s = source; var newEvents = s.getEvents(); if(newEvents) { goog.array.forEach(newEvents, function(e) { var handler = s.getHandlerForEvent(e); if(handler) { this.eventMap_[e] = goog.bind(handler, s) } }, this); this.eventSourceList_.push(s) } }; ol.pointer.PointerEventHandler.prototype.register_ = function() { var l = this.eventSourceList_.length; var eventSource; for(var i = 0;i < l;i++) { eventSource = this.eventSourceList_[i]; this.addEvents_(eventSource.getEvents()) } }; ol.pointer.PointerEventHandler.prototype.unregister_ = function() { var l = this.eventSourceList_.length; var eventSource; for(var i = 0;i < l;i++) { eventSource = this.eventSourceList_[i]; this.removeEvents_(eventSource.getEvents()) } }; ol.pointer.PointerEventHandler.prototype.eventHandler_ = function(inEvent) { var type = inEvent.type; var handler = this.eventMap_[type]; if(handler) { handler(inEvent) } }; ol.pointer.PointerEventHandler.prototype.addEvents_ = function(events) { goog.array.forEach(events, function(eventName) { goog.events.listen(this.element_, eventName, this.eventHandler_, false, this) }, this) }; ol.pointer.PointerEventHandler.prototype.removeEvents_ = function(events) { goog.array.forEach(events, function(e) { goog.events.unlisten(this.element_, e, this.eventHandler_, false, this) }, this) }; ol.pointer.PointerEventHandler.prototype.cloneEvent = function(browserEvent, inEvent) { var eventCopy = {}, p; for(var i = 0, ii = ol.pointer.CLONE_PROPS.length;i < ii;i++) { p = ol.pointer.CLONE_PROPS[i][0]; eventCopy[p] = browserEvent[p] || inEvent[p] || ol.pointer.CLONE_PROPS[i][1] } return eventCopy }; ol.pointer.PointerEventHandler.prototype.down = function(pointerEventData, browserEvent) { this.fireEvent(ol.pointer.EventType.POINTERDOWN, pointerEventData, browserEvent) }; ol.pointer.PointerEventHandler.prototype.move = function(pointerEventData, browserEvent) { this.fireEvent(ol.pointer.EventType.POINTERMOVE, pointerEventData, browserEvent) }; ol.pointer.PointerEventHandler.prototype.up = function(pointerEventData, browserEvent) { this.fireEvent(ol.pointer.EventType.POINTERUP, pointerEventData, browserEvent) }; ol.pointer.PointerEventHandler.prototype.enter = function(pointerEventData, browserEvent) { pointerEventData.bubbles = false; this.fireEvent(ol.pointer.EventType.POINTERENTER, pointerEventData, browserEvent) }; ol.pointer.PointerEventHandler.prototype.leave = function(pointerEventData, browserEvent) { pointerEventData.bubbles = false; this.fireEvent(ol.pointer.EventType.POINTERLEAVE, pointerEventData, browserEvent) }; ol.pointer.PointerEventHandler.prototype.over = function(pointerEventData, browserEvent) { pointerEventData.bubbles = true; this.fireEvent(ol.pointer.EventType.POINTEROVER, pointerEventData, browserEvent) }; ol.pointer.PointerEventHandler.prototype.out = function(pointerEventData, browserEvent) { pointerEventData.bubbles = true; this.fireEvent(ol.pointer.EventType.POINTEROUT, pointerEventData, browserEvent) }; ol.pointer.PointerEventHandler.prototype.cancel = function(pointerEventData, browserEvent) { this.fireEvent(ol.pointer.EventType.POINTERCANCEL, pointerEventData, browserEvent) }; ol.pointer.PointerEventHandler.prototype.leaveOut = function(pointerEventData, browserEvent) { this.out(pointerEventData, browserEvent); if(!this.contains_(pointerEventData.target, pointerEventData.relatedTarget)) { this.leave(pointerEventData, browserEvent) } }; ol.pointer.PointerEventHandler.prototype.enterOver = function(pointerEventData, browserEvent) { this.over(pointerEventData, browserEvent); if(!this.contains_(pointerEventData.target, pointerEventData.relatedTarget)) { this.enter(pointerEventData, browserEvent) } }; ol.pointer.PointerEventHandler.prototype.contains_ = function(container, contained) { return container.contains(contained) }; ol.pointer.PointerEventHandler.prototype.makeEvent = function(inType, pointerEventData, browserEvent) { return new ol.pointer.PointerEvent(inType, browserEvent, pointerEventData) }; ol.pointer.PointerEventHandler.prototype.fireEvent = function(inType, pointerEventData, browserEvent) { var e = this.makeEvent(inType, pointerEventData, browserEvent); this.dispatchEvent(e) }; ol.pointer.PointerEventHandler.prototype.fireNativeEvent = function(nativeEvent) { var e = this.makeEvent(nativeEvent.type, nativeEvent.getBrowserEvent(), nativeEvent); this.dispatchEvent(e) }; ol.pointer.PointerEventHandler.prototype.wrapMouseEvent = function(eventType, browserEvent) { var pointerEvent = this.makeEvent(eventType, ol.pointer.MouseSource.prepareEvent(browserEvent, this), browserEvent); return pointerEvent }; ol.pointer.PointerEventHandler.prototype.disposeInternal = function() { this.unregister_(); goog.base(this, "disposeInternal") }; ol.pointer.EventType = {POINTERMOVE:"pointermove", POINTERDOWN:"pointerdown", POINTERUP:"pointerup", POINTEROVER:"pointerover", POINTEROUT:"pointerout", POINTERENTER:"pointerenter", POINTERLEAVE:"pointerleave", POINTERCANCEL:"pointercancel"}; ol.pointer.CLONE_PROPS = [["bubbles", false], ["cancelable", false], ["view", null], ["detail", null], ["screenX", 0], ["screenY", 0], ["clientX", 0], ["clientY", 0], ["ctrlKey", false], ["altKey", false], ["shiftKey", false], ["metaKey", false], ["button", 0], ["relatedTarget", null], ["buttons", 0], ["pointerId", 0], ["width", 0], ["height", 0], ["pressure", 0], ["tiltX", 0], ["tiltY", 0], ["pointerType", ""], ["hwTimestamp", 0], ["isPrimary", false], ["type", ""], ["target", null], ["currentTarget", null], ["which", 0]]; goog.provide("ol.MapBrowserEvent"); goog.provide("ol.MapBrowserEvent.EventType"); goog.provide("ol.MapBrowserEventHandler"); goog.provide("ol.MapBrowserPointerEvent"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol"); goog.require("ol.Coordinate"); goog.require("ol.MapEvent"); goog.require("ol.Pixel"); goog.require("ol.pointer.PointerEvent"); goog.require("ol.pointer.PointerEventHandler"); ol.MapBrowserEvent = function(type, map, browserEvent, opt_frameState) { goog.base(this, type, map, opt_frameState); this.browserEvent = browserEvent; this.originalEvent = browserEvent.getBrowserEvent(); this.coordinate = map.getEventCoordinate(this.originalEvent); this.pixel = map.getEventPixel(this.originalEvent) }; goog.inherits(ol.MapBrowserEvent, ol.MapEvent); ol.MapBrowserEvent.prototype.preventDefault = function() { goog.base(this, "preventDefault"); this.browserEvent.preventDefault() }; ol.MapBrowserEvent.prototype.stopPropagation = function() { goog.base(this, "stopPropagation"); this.browserEvent.stopPropagation() }; ol.MapBrowserPointerEvent = function(type, map, pointerEvent, opt_frameState) { goog.base(this, type, map, pointerEvent.browserEvent, opt_frameState); this.pointerEvent = pointerEvent }; goog.inherits(ol.MapBrowserPointerEvent, ol.MapBrowserEvent); ol.MapBrowserEventHandler = function(map) { goog.base(this); this.map_ = map; this.clickTimeoutId_ = 0; this.dragged_ = false; this.dragListenerKeys_ = null; this.pointerdownListenerKey_ = null; if(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) { this.ieDblclickListenerKey_ = null } this.down_ = null; var element = this.map_.getViewport(); this.activePointers_ = 0; this.trackedTouches_ = {}; this.pointerEventHandler_ = new ol.pointer.PointerEventHandler(element); this.documentPointerEventHandler_ = null; this.pointerdownListenerKey_ = goog.events.listen(this.pointerEventHandler_, ol.pointer.EventType.POINTERDOWN, this.handlePointerDown_, false, this); this.relayedListenerKey_ = goog.events.listen(this.pointerEventHandler_, ol.pointer.EventType.POINTERMOVE, this.relayEvent_, false, this); if(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) { this.ieDblclickListenerKey_ = goog.events.listen(element, goog.events.EventType.DBLCLICK, this.emulateClickLegacyIE_, false, this) } }; goog.inherits(ol.MapBrowserEventHandler, goog.events.EventTarget); ol.MapBrowserEventHandler.prototype.getDown = function() { return this.down_ }; ol.MapBrowserEventHandler.prototype.emulateClickLegacyIE_ = function(browserEvent) { var pointerEvent = this.pointerEventHandler_.wrapMouseEvent(ol.MapBrowserEvent.EventType.POINTERUP, browserEvent); this.emulateClick_(pointerEvent) }; ol.MapBrowserEventHandler.prototype.emulateClick_ = function(pointerEvent) { var newEvent; newEvent = new ol.MapBrowserPointerEvent(ol.MapBrowserEvent.EventType.CLICK, this.map_, pointerEvent); this.dispatchEvent(newEvent); if(this.clickTimeoutId_ !== 0) { goog.global.clearTimeout(this.clickTimeoutId_); this.clickTimeoutId_ = 0; newEvent = new ol.MapBrowserPointerEvent(ol.MapBrowserEvent.EventType.DBLCLICK, this.map_, pointerEvent); this.dispatchEvent(newEvent) }else { this.clickTimeoutId_ = goog.global.setTimeout(goog.bind(function() { this.clickTimeoutId_ = 0; var newEvent = new ol.MapBrowserPointerEvent(ol.MapBrowserEvent.EventType.SINGLECLICK, this.map_, pointerEvent); this.dispatchEvent(newEvent) }, this), 250) } }; ol.MapBrowserEventHandler.prototype.updateActivePointers_ = function(pointerEvent) { var event = pointerEvent; if(event.type == ol.MapBrowserEvent.EventType.POINTERUP || event.type == ol.MapBrowserEvent.EventType.POINTERCANCEL) { delete this.trackedTouches_[event.pointerId] }else { if(event.type == ol.MapBrowserEvent.EventType.POINTERDOWN) { this.trackedTouches_[event.pointerId] = true } } this.activePointers_ = goog.object.getCount(this.trackedTouches_) }; ol.MapBrowserEventHandler.prototype.handlePointerUp_ = function(pointerEvent) { this.updateActivePointers_(pointerEvent); var newEvent = new ol.MapBrowserPointerEvent(ol.MapBrowserEvent.EventType.POINTERUP, this.map_, pointerEvent); this.dispatchEvent(newEvent); goog.asserts.assert(this.activePointers_ >= 0); if(this.activePointers_ === 0) { goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); this.dragListenerKeys_ = null; goog.dispose(this.documentPointerEventHandler_); this.documentPointerEventHandler_ = null } if(!this.dragged_ && this.isMouseActionButton_(pointerEvent)) { goog.asserts.assert(!goog.isNull(this.down_)); this.emulateClick_(this.down_) } }; ol.MapBrowserEventHandler.prototype.isMouseActionButton_ = function(pointerEvent) { if(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) { return pointerEvent.button == 1 }else { return pointerEvent.button === 0 } }; ol.MapBrowserEventHandler.prototype.handlePointerDown_ = function(pointerEvent) { this.updateActivePointers_(pointerEvent); var newEvent = new ol.MapBrowserPointerEvent(ol.MapBrowserEvent.EventType.POINTERDOWN, this.map_, pointerEvent); this.dispatchEvent(newEvent); this.down_ = pointerEvent; this.dragged_ = false; if(goog.isNull(this.dragListenerKeys_)) { this.documentPointerEventHandler_ = new ol.pointer.PointerEventHandler(document); this.dragListenerKeys_ = [goog.events.listen(this.documentPointerEventHandler_, ol.MapBrowserEvent.EventType.POINTERMOVE, this.handlePointerMove_, false, this), goog.events.listen(this.documentPointerEventHandler_, ol.MapBrowserEvent.EventType.POINTERUP, this.handlePointerUp_, false, this), goog.events.listen(this.pointerEventHandler_, ol.MapBrowserEvent.EventType.POINTERCANCEL, this.handlePointerUp_, false, this)] } pointerEvent.preventDefault() }; ol.MapBrowserEventHandler.prototype.handlePointerMove_ = function(pointerEvent) { if(pointerEvent.clientX != this.down_.clientX || pointerEvent.clientY != this.down_.clientY) { this.dragged_ = true; var newEvent = new ol.MapBrowserPointerEvent(ol.MapBrowserEvent.EventType.POINTERDRAG, this.map_, pointerEvent); this.dispatchEvent(newEvent) } pointerEvent.preventDefault() }; ol.MapBrowserEventHandler.prototype.relayEvent_ = function(pointerEvent) { this.dispatchEvent(new ol.MapBrowserPointerEvent(pointerEvent.type, this.map_, pointerEvent)) }; ol.MapBrowserEventHandler.prototype.disposeInternal = function() { if(!goog.isNull(this.relayedListenerKey_)) { goog.events.unlistenByKey(this.relayedListenerKey_); this.relayedListenerKey_ = null } if(!goog.isNull(this.pointerdownListenerKey_)) { goog.events.unlistenByKey(this.pointerdownListenerKey_); this.pointerdownListenerKey_ = null } if(!goog.isNull(this.dragListenerKeys_)) { goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); this.dragListenerKeys_ = null } if(!goog.isNull(this.documentPointerEventHandler_)) { goog.dispose(this.documentPointerEventHandler_); this.documentPointerEventHandler_ = null } if(!goog.isNull(this.pointerEventHandler_)) { goog.dispose(this.pointerEventHandler_); this.pointerEventHandler_ = null } if(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE && !goog.isNull(this.ieDblclickListenerKey_)) { goog.events.unlistenByKey(this.ieDblclickListenerKey_); this.ieDblclickListenerKey_ = null } goog.base(this, "disposeInternal") }; ol.MapBrowserEvent.EventType = {SINGLECLICK:"singleclick", CLICK:goog.events.EventType.CLICK, DBLCLICK:goog.events.EventType.DBLCLICK, POINTERDRAG:"pointerdrag", POINTERMOVE:"pointermove", POINTERDOWN:"pointerdown", POINTERUP:"pointerup", POINTEROVER:"pointerover", POINTEROUT:"pointerout", POINTERENTER:"pointerenter", POINTERLEAVE:"pointerleave", POINTERCANCEL:"pointercancel"}; goog.provide("ol.events.ConditionType"); goog.provide("ol.events.condition"); goog.require("goog.asserts"); goog.require("goog.dom.TagName"); goog.require("goog.functions"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.MapBrowserPointerEvent"); ol.events.ConditionType; ol.events.condition.altKeyOnly = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return browserEvent.altKey && !browserEvent.platformModifierKey && !browserEvent.shiftKey }; ol.events.condition.altShiftKeysOnly = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return browserEvent.altKey && !browserEvent.platformModifierKey && browserEvent.shiftKey }; ol.events.condition.always = goog.functions.TRUE; ol.events.condition.never = goog.functions.FALSE; ol.events.condition.singleClick = function(mapBrowserEvent) { return mapBrowserEvent.type == ol.MapBrowserEvent.EventType.SINGLECLICK }; ol.events.condition.noModifierKeys = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return!browserEvent.altKey && !browserEvent.platformModifierKey && !browserEvent.shiftKey }; ol.events.condition.platformModifierKeyOnly = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return!browserEvent.altKey && browserEvent.platformModifierKey && !browserEvent.shiftKey }; ol.events.condition.shiftKeyOnly = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; return!browserEvent.altKey && !browserEvent.platformModifierKey && browserEvent.shiftKey }; ol.events.condition.targetNotEditable = function(mapBrowserEvent) { var target = mapBrowserEvent.browserEvent.target; goog.asserts.assertInstanceof(target, Element); var tagName = target.tagName; return tagName !== goog.dom.TagName.INPUT && tagName !== goog.dom.TagName.SELECT && tagName !== goog.dom.TagName.TEXTAREA }; ol.events.condition.mouseOnly = function(mapBrowserEvent) { goog.asserts.assertInstanceof(mapBrowserEvent, ol.MapBrowserPointerEvent); return mapBrowserEvent.pointerEvent.pointerId == 1 }; goog.provide("ol.CenterConstraint"); goog.provide("ol.CenterConstraintType"); goog.require("goog.math"); ol.CenterConstraintType; ol.CenterConstraint.createExtent = function(extent) { return function(center) { if(goog.isDef(center)) { return[goog.math.clamp(center[0], extent[0], extent[2]), goog.math.clamp(center[1], extent[1], extent[3])] }else { return undefined } } }; ol.CenterConstraint.none = function(center) { return center }; goog.provide("ol.array"); goog.require("goog.array"); goog.require("goog.asserts"); ol.array.binaryFindNearest = function(arr, target) { var index = goog.array.binarySearch(arr, target, function(a, b) { return b - a }); if(index >= 0) { return index }else { if(index == -1) { return 0 }else { if(index == -arr.length - 1) { return arr.length - 1 }else { var left = -index - 2; var right = -index - 1; if(arr[left] - target < target - arr[right]) { return left }else { return right } } } } }; ol.array.safeExtend = function(array1, array2) { var i, ii; for(i = 0, ii = array2.length;i < ii;++i) { array1.push(array2[i]) } }; ol.array.linearFindNearest = function(arr, target, direction) { var n = arr.length; if(arr[0] <= target) { return 0 }else { if(target <= arr[n - 1]) { return n - 1 }else { var i; if(direction > 0) { for(i = 1;i < n;++i) { if(arr[i] < target) { return i - 1 } } }else { if(direction < 0) { for(i = 1;i < n;++i) { if(arr[i] <= target) { return i } } }else { for(i = 1;i < n;++i) { if(arr[i] == target) { return i }else { if(arr[i] < target) { if(arr[i - 1] - target < target - arr[i]) { return i - 1 }else { return i } } } } } } goog.asserts.fail(); return n - 1 } } }; ol.array.reverseSubArray = function(arr, begin, end) { goog.asserts.assert(begin >= 0); goog.asserts.assert(end < arr.length); while(begin < end) { var tmp = arr[begin]; arr[begin] = arr[end]; arr[end] = tmp; ++begin; --end } }; goog.provide("ol.ResolutionConstraint"); goog.provide("ol.ResolutionConstraintType"); goog.require("goog.math"); goog.require("ol.array"); ol.ResolutionConstraintType; ol.ResolutionConstraint.createSnapToResolutions = function(resolutions) { return function(resolution, delta, direction) { if(goog.isDef(resolution)) { var z = ol.array.linearFindNearest(resolutions, resolution, direction); z = goog.math.clamp(z + delta, 0, resolutions.length - 1); return resolutions[z] }else { return undefined } } }; ol.ResolutionConstraint.createSnapToPower = function(power, maxResolution, opt_maxLevel) { return function(resolution, delta, direction) { if(goog.isDef(resolution)) { var offset; if(direction > 0) { offset = 0 }else { if(direction < 0) { offset = 1 }else { offset = 0.5 } } var oldLevel = Math.floor(Math.log(maxResolution / resolution) / Math.log(power) + offset); var newLevel = Math.max(oldLevel + delta, 0); if(goog.isDef(opt_maxLevel)) { newLevel = Math.min(newLevel, opt_maxLevel) } return maxResolution / Math.pow(power, newLevel) }else { return undefined } } }; goog.provide("ol.RotationConstraint"); goog.provide("ol.RotationConstraintType"); goog.require("goog.math"); ol.RotationConstraintType; ol.RotationConstraint.disable = function(rotation, delta) { if(goog.isDef(rotation)) { return 0 }else { return undefined } }; ol.RotationConstraint.none = function(rotation, delta) { if(goog.isDef(rotation)) { return rotation + delta }else { return undefined } }; ol.RotationConstraint.createSnapToN = function(n) { var theta = 2 * Math.PI / n; return function(rotation, delta) { if(goog.isDef(rotation)) { rotation = Math.floor((rotation + delta) / theta + 0.5) * theta; return rotation }else { return undefined } } }; ol.RotationConstraint.createSnapToZero = function(opt_tolerance) { var tolerance = opt_tolerance || goog.math.toRadians(5); return function(rotation, delta) { if(goog.isDef(rotation)) { if(Math.abs(rotation + delta) <= tolerance) { return 0 }else { return rotation + delta } }else { return undefined } } }; goog.provide("ol.Constraints"); goog.require("ol.CenterConstraintType"); goog.require("ol.ResolutionConstraintType"); goog.require("ol.RotationConstraintType"); ol.Constraints = function(centerConstraint, resolutionConstraint, rotationConstraint) { this.center = centerConstraint; this.resolution = resolutionConstraint; this.rotation = rotationConstraint }; goog.provide("ol.IView2D"); goog.require("ol.Coordinate"); ol.IView2D = function() { }; ol.IView2D.prototype.getCenter = function() { }; ol.IView2D.prototype.getProjection = function() { }; ol.IView2D.prototype.getResolution = function() { }; ol.IView2D.prototype.getRotation = function() { }; ol.IView2D.prototype.getView2DState = function() { }; ol.IView2D.prototype.isDef = function() { }; goog.provide("ol.IView3D"); ol.IView3D = function() { }; ol.IView3D.prototype.isDef = function() { }; goog.provide("ol.IView"); goog.require("ol.IView2D"); goog.require("ol.IView3D"); ol.IView = function() { }; ol.IView.prototype.getView2D = function() { }; ol.IView.prototype.getView3D = function() { }; ol.IView.prototype.isDef = function() { }; goog.provide("ol.View"); goog.provide("ol.ViewHint"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.IView"); goog.require("ol.Object"); ol.ViewHint = {ANIMATING:0, INTERACTING:1}; ol.View = function() { goog.base(this); this.hints_ = [0, 0] }; goog.inherits(ol.View, ol.Object); ol.View.prototype.getHints = function() { return goog.array.clone(this.hints_) }; ol.View.prototype.getView2D = function() { goog.asserts.fail(); return null }; ol.View.prototype.getView3D = function() { goog.asserts.fail(); return null }; ol.View.prototype.isDef = function() { goog.asserts.fail(); return false }; ol.View.prototype.setHint = function(hint, delta) { goog.asserts.assert(0 <= hint && hint < this.hints_.length); this.hints_[hint] += delta; goog.asserts.assert(this.hints_[hint] >= 0); return this.hints_[hint] }; goog.provide("ol.TransformFunction"); ol.TransformFunction; goog.provide("ol.Extent"); goog.provide("ol.extent"); goog.provide("ol.extent.Relationship"); goog.require("goog.asserts"); goog.require("goog.vec.Mat4"); goog.require("ol.Coordinate"); goog.require("ol.Size"); goog.require("ol.TransformFunction"); ol.Extent; ol.extent.Relationship = {UNKNOWN:0, INTERSECTING:1, ABOVE:2, RIGHT:4, BELOW:8, LEFT:16}; ol.extent.boundingExtent = function(coordinates) { var extent = ol.extent.createEmpty(); for(var i = 0, ii = coordinates.length;i < ii;++i) { ol.extent.extendCoordinate(extent, coordinates[i]) } return extent }; ol.extent.boundingExtentXYs_ = function(xs, ys, opt_extent) { goog.asserts.assert(xs.length > 0); goog.asserts.assert(ys.length > 0); var minX = Math.min.apply(null, xs); var minY = Math.min.apply(null, ys); var maxX = Math.max.apply(null, xs); var maxY = Math.max.apply(null, ys); return ol.extent.createOrUpdate(minX, minY, maxX, maxY, opt_extent) }; ol.extent.buffer = function(extent, value, opt_extent) { if(goog.isDef(opt_extent)) { opt_extent[0] = extent[0] - value; opt_extent[1] = extent[1] - value; opt_extent[2] = extent[2] + value; opt_extent[3] = extent[3] + value; return opt_extent }else { return[extent[0] - value, extent[1] - value, extent[2] + value, extent[3] + value] } }; ol.extent.clone = function(extent, opt_extent) { if(goog.isDef(opt_extent)) { opt_extent[0] = extent[0]; opt_extent[1] = extent[1]; opt_extent[2] = extent[2]; opt_extent[3] = extent[3]; return opt_extent }else { return extent.slice() } }; ol.extent.closestSquaredDistanceXY = function(extent, x, y) { var dx, dy; if(x < extent[0]) { dx = extent[0] - x }else { if(extent[2] < x) { dx = x - extent[2] }else { dx = 0 } } if(y < extent[1]) { dy = extent[1] - y }else { if(extent[3] < y) { dy = y - extent[3] }else { dy = 0 } } return dx * dx + dy * dy }; ol.extent.containsCoordinate = function(extent, coordinate) { return extent[0] <= coordinate[0] && coordinate[0] <= extent[2] && extent[1] <= coordinate[1] && coordinate[1] <= extent[3] }; ol.extent.containsExtent = function(extent1, extent2) { return extent1[0] <= extent2[0] && extent2[2] <= extent1[2] && extent1[1] <= extent2[1] && extent2[3] <= extent1[3] }; ol.extent.coordinateRelationship = function(extent, coordinate) { var minX = extent[0]; var minY = extent[1]; var maxX = extent[2]; var maxY = extent[3]; var x = coordinate[0]; var y = coordinate[1]; var relationship = ol.extent.Relationship.UNKNOWN; if(x < minX) { relationship = relationship | ol.extent.Relationship.LEFT }else { if(x > maxX) { relationship = relationship | ol.extent.Relationship.RIGHT } } if(y < minY) { relationship = relationship | ol.extent.Relationship.BELOW }else { if(y > maxY) { relationship = relationship | ol.extent.Relationship.ABOVE } } if(relationship === ol.extent.Relationship.UNKNOWN) { relationship = ol.extent.Relationship.INTERSECTING } return relationship }; ol.extent.createEmpty = function() { return[Infinity, Infinity, -Infinity, -Infinity] }; ol.extent.createOrUpdate = function(minX, minY, maxX, maxY, opt_extent) { if(goog.isDef(opt_extent)) { opt_extent[0] = minX; opt_extent[1] = minY; opt_extent[2] = maxX; opt_extent[3] = maxY; return opt_extent }else { return[minX, minY, maxX, maxY] } }; ol.extent.createOrUpdateEmpty = function(opt_extent) { return ol.extent.createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, opt_extent) }; ol.extent.createOrUpdateFromCoordinate = function(coordinate, opt_extent) { var x = coordinate[0]; var y = coordinate[1]; return ol.extent.createOrUpdate(x, y, x, y, opt_extent) }; ol.extent.createOrUpdateFromCoordinates = function(coordinates, opt_extent) { var extent = ol.extent.createOrUpdateEmpty(opt_extent); return ol.extent.extendCoordinates(extent, coordinates) }; ol.extent.createOrUpdateFromFlatCoordinates = function(flatCoordinates, offset, end, stride, opt_extent) { var extent = ol.extent.createOrUpdateEmpty(opt_extent); return ol.extent.extendFlatCoordinates(extent, flatCoordinates, offset, end, stride) }; ol.extent.createOrUpdateFromRings = function(rings, opt_extent) { var extent = ol.extent.createOrUpdateEmpty(opt_extent); return ol.extent.extendRings(extent, rings) }; ol.extent.empty = function(extent) { extent[0] = extent[1] = Infinity; extent[2] = extent[3] = -Infinity; return extent }; ol.extent.equals = function(extent1, extent2) { return extent1[0] == extent2[0] && extent1[2] == extent2[2] && extent1[1] == extent2[1] && extent1[3] == extent2[3] }; ol.extent.extend = function(extent1, extent2) { if(extent2[0] < extent1[0]) { extent1[0] = extent2[0] } if(extent2[2] > extent1[2]) { extent1[2] = extent2[2] } if(extent2[1] < extent1[1]) { extent1[1] = extent2[1] } if(extent2[3] > extent1[3]) { extent1[3] = extent2[3] } return extent1 }; ol.extent.extendCoordinate = function(extent, coordinate) { if(coordinate[0] < extent[0]) { extent[0] = coordinate[0] } if(coordinate[0] > extent[2]) { extent[2] = coordinate[0] } if(coordinate[1] < extent[1]) { extent[1] = coordinate[1] } if(coordinate[1] > extent[3]) { extent[3] = coordinate[1] } }; ol.extent.extendCoordinates = function(extent, coordinates) { var i, ii; for(i = 0, ii = coordinates.length;i < ii;++i) { ol.extent.extendCoordinate(extent, coordinates[i]) } return extent }; ol.extent.extendFlatCoordinates = function(extent, flatCoordinates, offset, end, stride) { for(;offset < end;offset += stride) { ol.extent.extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]) } return extent }; ol.extent.extendRings = function(extent, rings) { var i, ii; for(i = 0, ii = rings.length;i < ii;++i) { ol.extent.extendCoordinates(extent, rings[i]) } return extent }; ol.extent.extendXY = function(extent, x, y) { extent[0] = Math.min(extent[0], x); extent[1] = Math.min(extent[1], y); extent[2] = Math.max(extent[2], x); extent[3] = Math.max(extent[3], y) }; ol.extent.getArea = function(extent) { return ol.extent.getWidth(extent) * ol.extent.getHeight(extent) }; ol.extent.getBottomLeft = function(extent) { return[extent[0], extent[1]] }; ol.extent.getBottomRight = function(extent) { return[extent[2], extent[1]] }; ol.extent.getCenter = function(extent) { return[(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2] }; ol.extent.getEnlargedArea = function(extent1, extent2) { var minX = Math.min(extent1[0], extent2[0]); var minY = Math.min(extent1[1], extent2[1]); var maxX = Math.max(extent1[2], extent2[2]); var maxY = Math.max(extent1[3], extent2[3]); return(maxX - minX) * (maxY - minY) }; ol.extent.getForView2DAndSize = function(center, resolution, rotation, size, opt_extent) { var dx = resolution * size[0] / 2; var dy = resolution * size[1] / 2; var cosRotation = Math.cos(rotation); var sinRotation = Math.sin(rotation); var xs = [-dx, -dx, dx, dx]; var ys = [-dy, dy, -dy, dy]; var i, x, y; for(i = 0;i < 4;++i) { x = xs[i]; y = ys[i]; xs[i] = center[0] + x * cosRotation - y * sinRotation; ys[i] = center[1] + x * sinRotation + y * cosRotation } return ol.extent.boundingExtentXYs_(xs, ys, opt_extent) }; ol.extent.getHeight = function(extent) { return extent[3] - extent[1] }; ol.extent.getIntersectionArea = function(extent1, extent2) { var minX = Math.max(extent1[0], extent2[0]); var minY = Math.max(extent1[1], extent2[1]); var maxX = Math.min(extent1[2], extent2[2]); var maxY = Math.min(extent1[3], extent2[3]); return Math.max(0, maxX - minX) * Math.max(0, maxY - minY) }; ol.extent.getMargin = function(extent) { return ol.extent.getWidth(extent) + ol.extent.getHeight(extent) }; ol.extent.getSize = function(extent) { return[extent[2] - extent[0], extent[3] - extent[1]] }; ol.extent.getTopLeft = function(extent) { return[extent[0], extent[3]] }; ol.extent.getTopRight = function(extent) { return[extent[2], extent[3]] }; ol.extent.getWidth = function(extent) { return extent[2] - extent[0] }; ol.extent.intersects = function(extent1, extent2) { return extent1[0] <= extent2[2] && extent1[2] >= extent2[0] && extent1[1] <= extent2[3] && extent1[3] >= extent2[1] }; ol.extent.isEmpty = function(extent) { return extent[2] < extent[0] || extent[3] < extent[1] }; ol.extent.isInfinite = function(extent) { return extent[0] == -Infinity || extent[1] == -Infinity || extent[2] == Infinity || extent[3] == Infinity }; ol.extent.normalize = function(extent, coordinate) { return[(coordinate[0] - extent[0]) / (extent[2] - extent[0]), (coordinate[1] - extent[1]) / (extent[3] - extent[1])] }; ol.extent.returnOrUpdate = function(extent, opt_extent) { if(goog.isDef(opt_extent)) { opt_extent[0] = extent[0]; opt_extent[1] = extent[1]; opt_extent[2] = extent[2]; opt_extent[3] = extent[3]; return opt_extent }else { return extent } }; ol.extent.scaleFromCenter = function(extent, value) { var deltaX = (extent[2] - extent[0]) / 2 * (value - 1); var deltaY = (extent[3] - extent[1]) / 2 * (value - 1); extent[0] -= deltaX; extent[2] += deltaX; extent[1] -= deltaY; extent[3] += deltaY }; ol.extent.segmentIntersects = function(extent, start, end) { var intersects = false; var startRel = ol.extent.coordinateRelationship(extent, start); var endRel = ol.extent.coordinateRelationship(extent, end); if(startRel === ol.extent.Relationship.INTERSECTING || endRel === ol.extent.Relationship.INTERSECTING) { intersects = true }else { var minX = extent[0]; var minY = extent[1]; var maxX = extent[2]; var maxY = extent[3]; var startX = start[0]; var startY = start[1]; var endX = end[0]; var endY = end[1]; var slope = (endY - startY) / (endX - startX); var x, y; if(!!(endRel & ol.extent.Relationship.ABOVE) && !(startRel & ol.extent.Relationship.ABOVE)) { x = endX - (endY - maxY) / slope; intersects = x >= minX && x <= maxX }else { if(!!(endRel & ol.extent.Relationship.RIGHT) && !(startRel & ol.extent.Relationship.RIGHT)) { y = endY - (endX - maxX) * slope; intersects = y >= minY && y <= maxY }else { if(!!(endRel & ol.extent.Relationship.BELOW) && !(startRel & ol.extent.Relationship.BELOW)) { x = endX - (endY - minY) / slope; intersects = x >= minX && x <= maxX }else { if(!!(endRel & ol.extent.Relationship.LEFT) && !(startRel & ol.extent.Relationship.LEFT)) { y = endY - (endX - minX) * slope; intersects = y >= minY && y <= maxY } } } } } return intersects }; ol.extent.touches = function(extent1, extent2) { var intersects = ol.extent.intersects(extent1, extent2); return intersects && (extent1[0] == extent2[2] || extent1[2] == extent2[0] || extent1[1] == extent2[3] || extent1[3] == extent2[1]) }; ol.extent.transform = function(extent, transformFn, opt_extent) { var coordinates = [extent[0], extent[1], extent[0], extent[3], extent[2], extent[1], extent[2], extent[3]]; transformFn(coordinates, coordinates, 2); var xs = [coordinates[0], coordinates[2], coordinates[4], coordinates[6]]; var ys = [coordinates[1], coordinates[3], coordinates[5], coordinates[7]]; return ol.extent.boundingExtentXYs_(xs, ys, opt_extent) }; ol.extent.transform2D = function(extent, transform, opt_extent) { var dest = goog.isDef(opt_extent) ? opt_extent : []; var m00 = goog.vec.Mat4.getElement(transform, 0, 0); var m10 = goog.vec.Mat4.getElement(transform, 1, 0); var m01 = goog.vec.Mat4.getElement(transform, 0, 1); var m11 = goog.vec.Mat4.getElement(transform, 1, 1); var m03 = goog.vec.Mat4.getElement(transform, 0, 3); var m13 = goog.vec.Mat4.getElement(transform, 1, 3); var xi = [0, 2, 0, 2]; var yi = [1, 1, 3, 3]; var xs = []; var ys = []; var i, x, y; for(i = 0;i < 4;++i) { x = extent[xi[i]]; y = extent[yi[i]]; xs[i] = m00 * x + m01 * y + m03; ys[i] = m10 * x + m11 * y + m13 } dest[0] = Math.min.apply(null, xs); dest[1] = Math.min.apply(null, ys); dest[2] = Math.max.apply(null, xs); dest[3] = Math.max.apply(null, ys); return dest }; goog.provide("ol.geom.Geometry"); goog.provide("ol.geom.GeometryType"); goog.require("goog.asserts"); goog.require("goog.functions"); goog.require("ol.Observable"); 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", CIRCLE:"Circle"}; ol.geom.GeometryLayout = {XY:"XY", XYZ:"XYZ", XYM:"XYM", XYZM:"XYZM"}; ol.geom.Geometry = function() { goog.base(this); this.extent = undefined; this.extentRevision = -1; this.simplifiedGeometryCache = {}; this.simplifiedGeometryMaxMinSquaredTolerance = 0; this.simplifiedGeometryRevision = 0 }; goog.inherits(ol.geom.Geometry, ol.Observable); ol.geom.Geometry.prototype.clone = goog.abstractMethod; ol.geom.Geometry.prototype.closestPointXY = goog.abstractMethod; ol.geom.Geometry.prototype.getClosestPoint = function(point, opt_closestPoint) { var closestPoint = goog.isDef(opt_closestPoint) ? opt_closestPoint : [NaN, NaN]; this.closestPointXY(point[0], point[1], closestPoint, Infinity); return closestPoint }; ol.geom.Geometry.prototype.containsCoordinate = function(coordinate) { return this.containsXY(coordinate[0], coordinate[1]) }; ol.geom.Geometry.prototype.containsXY = goog.functions.FALSE; ol.geom.Geometry.prototype.getExtent = goog.abstractMethod; ol.geom.Geometry.prototype.getSimplifiedGeometry = goog.abstractMethod; ol.geom.Geometry.prototype.getType = goog.abstractMethod; ol.geom.Geometry.prototype.transform = goog.abstractMethod; ol.geom.RawPoint; ol.geom.RawLineString; ol.geom.RawLinearRing; ol.geom.RawPolygon; ol.geom.RawMultiPoint; ol.geom.RawMultiLineString; ol.geom.RawMultiPolygon; goog.provide("ol.geom.flat.transform"); goog.require("goog.vec.Mat4"); ol.geom.flat.transform.transform2D = function(flatCoordinates, stride, transform, opt_dest) { var m00 = goog.vec.Mat4.getElement(transform, 0, 0); var m10 = goog.vec.Mat4.getElement(transform, 1, 0); var m01 = goog.vec.Mat4.getElement(transform, 0, 1); var m11 = goog.vec.Mat4.getElement(transform, 1, 1); var m03 = goog.vec.Mat4.getElement(transform, 0, 3); var m13 = goog.vec.Mat4.getElement(transform, 1, 3); var dest = goog.isDef(opt_dest) ? opt_dest : []; var i = 0; var j, jj; for(j = 0, jj = flatCoordinates.length;j < jj;j += stride) { var x = flatCoordinates[j]; var y = flatCoordinates[j + 1]; dest[i++] = m00 * x + m01 * y + m03; dest[i++] = m10 * x + m11 * y + m13 } if(goog.isDef(opt_dest) && dest.length != i) { dest.length = i } return dest }; goog.provide("ol.geom.SimpleGeometry"); goog.require("goog.asserts"); goog.require("goog.functions"); goog.require("goog.object"); goog.require("ol.extent"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.flat.transform"); ol.geom.SimpleGeometry = function() { goog.base(this); this.layout = ol.geom.GeometryLayout.XY; this.stride = 2; this.flatCoordinates = null }; goog.inherits(ol.geom.SimpleGeometry, ol.geom.Geometry); ol.geom.SimpleGeometry.getLayoutForStride_ = function(stride) { if(stride == 2) { return ol.geom.GeometryLayout.XY }else { if(stride == 3) { return ol.geom.GeometryLayout.XYZ }else { if(stride == 4) { return ol.geom.GeometryLayout.XYZM }else { throw new Error("unsupported stride: " + stride); } } } }; ol.geom.SimpleGeometry.getStrideForLayout_ = function(layout) { if(layout == ol.geom.GeometryLayout.XY) { return 2 }else { if(layout == ol.geom.GeometryLayout.XYZ) { return 3 }else { if(layout == ol.geom.GeometryLayout.XYM) { return 3 }else { if(layout == ol.geom.GeometryLayout.XYZM) { return 4 }else { throw new Error("unsupported layout: " + layout); } } } } }; ol.geom.SimpleGeometry.prototype.containsXY = goog.functions.FALSE; ol.geom.SimpleGeometry.prototype.getExtent = function(opt_extent) { if(this.extentRevision != this.getRevision()) { this.extent = ol.extent.createOrUpdateFromFlatCoordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.extent); this.extentRevision = this.getRevision() } goog.asserts.assert(goog.isDef(this.extent)); return ol.extent.returnOrUpdate(this.extent, opt_extent) }; ol.geom.SimpleGeometry.prototype.getFirstCoordinate = function() { return this.flatCoordinates.slice(0, this.stride) }; ol.geom.SimpleGeometry.prototype.getFlatCoordinates = function() { return this.flatCoordinates }; ol.geom.SimpleGeometry.prototype.getLastCoordinate = function() { return this.flatCoordinates.slice(this.flatCoordinates.length - this.stride) }; ol.geom.SimpleGeometry.prototype.getLayout = function() { return this.layout }; ol.geom.SimpleGeometry.prototype.getSimplifiedGeometry = function(squaredTolerance) { if(this.simplifiedGeometryRevision != this.getRevision()) { goog.object.clear(this.simplifiedGeometryCache); this.simplifiedGeometryMaxMinSquaredTolerance = 0; this.simplifiedGeometryRevision = this.getRevision() } if(squaredTolerance < 0 || this.simplifiedGeometryMaxMinSquaredTolerance !== 0 && squaredTolerance <= this.simplifiedGeometryMaxMinSquaredTolerance) { return this } var key = squaredTolerance.toString(); if(this.simplifiedGeometryCache.hasOwnProperty(key)) { return this.simplifiedGeometryCache[key] }else { var simplifiedGeometry = this.getSimplifiedGeometryInternal(squaredTolerance); var simplifiedFlatCoordinates = simplifiedGeometry.getFlatCoordinates(); if(simplifiedFlatCoordinates.length < this.flatCoordinates.length) { this.simplifiedGeometryCache[key] = simplifiedGeometry; return simplifiedGeometry }else { this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance; return this } } }; ol.geom.SimpleGeometry.prototype.getSimplifiedGeometryInternal = function(squaredTolerance) { return this }; ol.geom.SimpleGeometry.prototype.getStride = function() { return this.stride }; ol.geom.SimpleGeometry.prototype.setFlatCoordinatesInternal = function(layout, flatCoordinates) { this.stride = ol.geom.SimpleGeometry.getStrideForLayout_(layout); this.layout = layout; this.flatCoordinates = flatCoordinates }; ol.geom.SimpleGeometry.prototype.setLayout = function(layout, coordinates, nesting) { var stride; if(goog.isDef(layout)) { stride = ol.geom.SimpleGeometry.getStrideForLayout_(layout) }else { var i; for(i = 0;i < nesting;++i) { if(coordinates.length === 0) { this.layout = ol.geom.GeometryLayout.XY; this.stride = 2; return }else { coordinates = (coordinates[0]) } } stride = (coordinates).length; layout = ol.geom.SimpleGeometry.getLayoutForStride_(stride) } this.layout = layout; this.stride = stride }; ol.geom.SimpleGeometry.prototype.transform = function(transformFn) { if(!goog.isNull(this.flatCoordinates)) { transformFn(this.flatCoordinates, this.flatCoordinates, this.stride); this.dispatchChangeEvent() } }; ol.geom.transformSimpleGeometry2D = function(simpleGeometry, transform, opt_dest) { var flatCoordinates = simpleGeometry.getFlatCoordinates(); if(goog.isNull(flatCoordinates)) { return null }else { var stride = simpleGeometry.getStride(); return ol.geom.flat.transform.transform2D(flatCoordinates, stride, transform, opt_dest) } }; goog.provide("ol.geom.flat.area"); ol.geom.flat.area.linearRing = function(flatCoordinates, offset, end, stride) { var twiceArea = 0; var x1 = flatCoordinates[end - stride]; var y1 = flatCoordinates[end - stride + 1]; for(;offset < end;offset += stride) { var x2 = flatCoordinates[offset]; var y2 = flatCoordinates[offset + 1]; twiceArea += y1 * x2 - x1 * y2; x1 = x2; y1 = y2 } return twiceArea / 2 }; ol.geom.flat.area.linearRings = function(flatCoordinates, offset, ends, stride) { var area = 0; var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; area += ol.geom.flat.area.linearRing(flatCoordinates, offset, end, stride); offset = end } return area }; ol.geom.flat.area.linearRingss = function(flatCoordinates, offset, endss, stride) { var area = 0; var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i]; area += ol.geom.flat.area.linearRings(flatCoordinates, offset, ends, stride); offset = ends[ends.length - 1] } return area }; goog.provide("ol.math"); goog.require("goog.asserts"); ol.math.cosh = function(x) { return(Math.exp(x) + Math.exp(-x)) / 2 }; ol.math.coth = function(x) { var expMinusTwoX = Math.exp(-2 * x); return(1 + expMinusTwoX) / (1 - expMinusTwoX) }; ol.math.csch = function(x) { return 2 / (Math.exp(x) - Math.exp(-x)) }; ol.math.roundUpToPowerOfTwo = function(x) { goog.asserts.assert(0 < x); return Math.pow(2, Math.ceil(Math.log(x) / Math.LN2)) }; ol.math.sech = function(x) { return 2 / (Math.exp(x) + Math.exp(-x)) }; ol.math.sinh = function(x) { return(Math.exp(x) - Math.exp(-x)) / 2 }; ol.math.squaredSegmentDistance = function(x, y, x1, y1, x2, y2) { var dx = x2 - x1; var dy = y2 - y1; if(dx !== 0 || dy !== 0) { var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy); if(t > 1) { x1 = x2; y1 = y2 }else { if(t > 0) { x1 += dx * t; y1 += dy * t } } } return ol.math.squaredDistance(x, y, x1, y1) }; ol.math.squaredDistance = function(x1, y1, x2, y2) { var dx = x2 - x1; var dy = y2 - y1; return dx * dx + dy * dy }; ol.math.tanh = function(x) { var expMinusTwoX = Math.exp(-2 * x); return(1 - expMinusTwoX) / (1 + expMinusTwoX) }; goog.provide("ol.geom.flat.closest"); goog.require("goog.asserts"); goog.require("goog.math"); goog.require("ol.math"); ol.geom.flat.closest.point = function(flatCoordinates, offset1, offset2, stride, x, y, closestPoint) { var x1 = flatCoordinates[offset1]; var y1 = flatCoordinates[offset1 + 1]; var dx = flatCoordinates[offset2] - x1; var dy = flatCoordinates[offset2 + 1] - y1; var i, offset; if(dx === 0 && dy === 0) { offset = offset1 }else { var t = ((x - x1) * dx + (y - y1) * dy) / (dx * dx + dy * dy); if(t > 1) { offset = offset2 }else { if(t > 0) { for(i = 0;i < stride;++i) { closestPoint[i] = goog.math.lerp(flatCoordinates[offset1 + i], flatCoordinates[offset2 + i], t) } closestPoint.length = stride; return }else { offset = offset1 } } } for(i = 0;i < stride;++i) { closestPoint[i] = flatCoordinates[offset + i] } closestPoint.length = stride }; ol.geom.flat.closest.getMaxSquaredDelta = function(flatCoordinates, offset, end, stride, maxSquaredDelta) { var x1 = flatCoordinates[offset]; var y1 = flatCoordinates[offset + 1]; for(offset += stride;offset < end;offset += stride) { var x2 = flatCoordinates[offset]; var y2 = flatCoordinates[offset + 1]; var squaredDelta = ol.math.squaredDistance(x1, y1, x2, y2); if(squaredDelta > maxSquaredDelta) { maxSquaredDelta = squaredDelta } x1 = x2; y1 = y2 } return maxSquaredDelta }; ol.geom.flat.closest.getsMaxSquaredDelta = function(flatCoordinates, offset, ends, stride, maxSquaredDelta) { var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; maxSquaredDelta = ol.geom.flat.closest.getMaxSquaredDelta(flatCoordinates, offset, end, stride, maxSquaredDelta); offset = end } return maxSquaredDelta }; ol.geom.flat.closest.getssMaxSquaredDelta = function(flatCoordinates, offset, endss, stride, maxSquaredDelta) { var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i]; maxSquaredDelta = ol.geom.flat.closest.getsMaxSquaredDelta(flatCoordinates, offset, ends, stride, maxSquaredDelta); offset = ends[ends.length - 1] } return maxSquaredDelta }; ol.geom.flat.closest.getClosestPoint = function(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) { if(offset == end) { return minSquaredDistance } var i, squaredDistance; if(maxDelta === 0) { squaredDistance = ol.math.squaredDistance(x, y, flatCoordinates[offset], flatCoordinates[offset + 1]); if(squaredDistance < minSquaredDistance) { for(i = 0;i < stride;++i) { closestPoint[i] = flatCoordinates[offset + i] } closestPoint.length = stride; return squaredDistance }else { return minSquaredDistance } } goog.asserts.assert(maxDelta > 0); var tmpPoint = goog.isDef(opt_tmpPoint) ? opt_tmpPoint : [NaN, NaN]; var index = offset + stride; while(index < end) { ol.geom.flat.closest.point(flatCoordinates, index - stride, index, stride, x, y, tmpPoint); squaredDistance = ol.math.squaredDistance(x, y, tmpPoint[0], tmpPoint[1]); if(squaredDistance < minSquaredDistance) { minSquaredDistance = squaredDistance; for(i = 0;i < stride;++i) { closestPoint[i] = tmpPoint[i] } closestPoint.length = stride; index += stride }else { index += stride * Math.max((Math.sqrt(squaredDistance) - Math.sqrt(minSquaredDistance)) / maxDelta | 0, 1) } } if(isRing) { ol.geom.flat.closest.point(flatCoordinates, end - stride, offset, stride, x, y, tmpPoint); squaredDistance = ol.math.squaredDistance(x, y, tmpPoint[0], tmpPoint[1]); if(squaredDistance < minSquaredDistance) { minSquaredDistance = squaredDistance; for(i = 0;i < stride;++i) { closestPoint[i] = tmpPoint[i] } closestPoint.length = stride } } return minSquaredDistance }; ol.geom.flat.closest.getsClosestPoint = function(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) { var tmpPoint = goog.isDef(opt_tmpPoint) ? opt_tmpPoint : [NaN, NaN]; var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; minSquaredDistance = ol.geom.flat.closest.getClosestPoint(flatCoordinates, offset, end, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint); offset = end } return minSquaredDistance }; ol.geom.flat.closest.getssClosestPoint = function(flatCoordinates, offset, endss, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, opt_tmpPoint) { var tmpPoint = goog.isDef(opt_tmpPoint) ? opt_tmpPoint : [NaN, NaN]; var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i]; minSquaredDistance = ol.geom.flat.closest.getsClosestPoint(flatCoordinates, offset, ends, stride, maxDelta, isRing, x, y, closestPoint, minSquaredDistance, tmpPoint); offset = ends[ends.length - 1] } return minSquaredDistance }; goog.provide("ol.geom.flat.deflate"); goog.require("goog.asserts"); ol.geom.flat.deflate.coordinate = function(flatCoordinates, offset, coordinate, stride) { goog.asserts.assert(coordinate.length == stride); var i, ii; for(i = 0, ii = coordinate.length;i < ii;++i) { flatCoordinates[offset++] = coordinate[i] } return offset }; ol.geom.flat.deflate.coordinates = function(flatCoordinates, offset, coordinates, stride) { var i, ii; for(i = 0, ii = coordinates.length;i < ii;++i) { var coordinate = coordinates[i]; goog.asserts.assert(coordinate.length == stride); var j; for(j = 0;j < stride;++j) { flatCoordinates[offset++] = coordinate[j] } } return offset }; ol.geom.flat.deflate.coordinatess = function(flatCoordinates, offset, coordinatess, stride, opt_ends) { var ends = goog.isDef(opt_ends) ? opt_ends : []; var i = 0; var j, jj; for(j = 0, jj = coordinatess.length;j < jj;++j) { var end = ol.geom.flat.deflate.coordinates(flatCoordinates, offset, coordinatess[j], stride); ends[i++] = end; offset = end } ends.length = i; return ends }; ol.geom.flat.deflate.coordinatesss = function(flatCoordinates, offset, coordinatesss, stride, opt_endss) { var endss = goog.isDef(opt_endss) ? opt_endss : []; var i = 0; var j, jj; for(j = 0, jj = coordinatesss.length;j < jj;++j) { var ends = ol.geom.flat.deflate.coordinatess(flatCoordinates, offset, coordinatesss[j], stride, endss[i]); endss[i++] = ends; offset = ends[ends.length - 1] } endss.length = i; return endss }; goog.provide("ol.geom.flat.inflate"); ol.geom.flat.inflate.coordinates = function(flatCoordinates, offset, end, stride, opt_coordinates) { var coordinates = goog.isDef(opt_coordinates) ? opt_coordinates : []; var i = 0; var j; for(j = offset;j < end;j += stride) { coordinates[i++] = flatCoordinates.slice(j, j + stride) } coordinates.length = i; return coordinates }; ol.geom.flat.inflate.coordinatess = function(flatCoordinates, offset, ends, stride, opt_coordinatess) { var coordinatess = goog.isDef(opt_coordinatess) ? opt_coordinatess : []; var i = 0; var j, jj; for(j = 0, jj = ends.length;j < jj;++j) { var end = ends[j]; coordinatess[i++] = ol.geom.flat.inflate.coordinates(flatCoordinates, offset, end, stride, coordinatess[i]); offset = end } coordinatess.length = i; return coordinatess }; ol.geom.flat.inflate.coordinatesss = function(flatCoordinates, offset, endss, stride, opt_coordinatesss) { var coordinatesss = goog.isDef(opt_coordinatesss) ? opt_coordinatesss : []; var i = 0; var j, jj; for(j = 0, jj = endss.length;j < jj;++j) { var ends = endss[j]; coordinatesss[i++] = ol.geom.flat.inflate.coordinatess(flatCoordinates, offset, ends, stride, coordinatesss[i]); offset = ends[ends.length - 1] } coordinatesss.length = i; return coordinatesss }; goog.provide("ol.geom.flat.simplify"); goog.require("ol.math"); ol.geom.flat.simplify.lineString = function(flatCoordinates, offset, end, stride, squaredTolerance, highQuality, opt_simplifiedFlatCoordinates) { var simplifiedFlatCoordinates = goog.isDef(opt_simplifiedFlatCoordinates) ? opt_simplifiedFlatCoordinates : []; if(!highQuality) { end = ol.geom.flat.simplify.radialDistance(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0); flatCoordinates = simplifiedFlatCoordinates; offset = 0; stride = 2 } simplifiedFlatCoordinates.length = ol.geom.flat.simplify.douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, 0); return simplifiedFlatCoordinates }; ol.geom.flat.simplify.douglasPeucker = function(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) { var n = (end - offset) / stride; if(n < 3) { for(;offset < end;offset += stride) { simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset]; simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset + 1] } return simplifiedOffset } var markers = new Array(n); markers[0] = 1; markers[n - 1] = 1; var stack = [offset, end - stride]; var index = 0; var i; while(stack.length > 0) { var last = stack.pop(); var first = stack.pop(); var maxSquaredDistance = 0; var x1 = flatCoordinates[first]; var y1 = flatCoordinates[first + 1]; var x2 = flatCoordinates[last]; var y2 = flatCoordinates[last + 1]; for(i = first + stride;i < last;i += stride) { var x = flatCoordinates[i]; var y = flatCoordinates[i + 1]; var squaredDistance = ol.math.squaredSegmentDistance(x, y, x1, y1, x2, y2); if(squaredDistance > maxSquaredDistance) { index = i; maxSquaredDistance = squaredDistance } } if(maxSquaredDistance > squaredTolerance) { markers[(index - offset) / stride] = 1; if(first + stride < index) { stack.push(first, index) } if(index + stride < last) { stack.push(index, last) } } } for(i = 0;i < n;++i) { if(markers[i]) { simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset + i * stride]; simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset + i * stride + 1] } } return simplifiedOffset }; ol.geom.flat.simplify.douglasPeuckers = function(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) { var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; simplifiedOffset = ol.geom.flat.simplify.douglasPeucker(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset); simplifiedEnds.push(simplifiedOffset); offset = end } return simplifiedOffset }; ol.geom.flat.simplify.douglasPeuckerss = function(flatCoordinates, offset, endss, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) { var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i]; var simplifiedEnds = []; simplifiedOffset = ol.geom.flat.simplify.douglasPeuckers(flatCoordinates, offset, ends, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds); simplifiedEndss.push(simplifiedEnds); offset = ends[ends.length - 1] } return simplifiedOffset }; ol.geom.flat.simplify.radialDistance = function(flatCoordinates, offset, end, stride, squaredTolerance, simplifiedFlatCoordinates, simplifiedOffset) { if(end <= offset + stride) { for(;offset < end;offset += stride) { simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset]; simplifiedFlatCoordinates[simplifiedOffset++] = flatCoordinates[offset + 1] } return simplifiedOffset } var x1 = flatCoordinates[offset]; var y1 = flatCoordinates[offset + 1]; simplifiedFlatCoordinates[simplifiedOffset++] = x1; simplifiedFlatCoordinates[simplifiedOffset++] = y1; var x2 = x1; var y2 = y1; for(offset += stride;offset < end;offset += stride) { x2 = flatCoordinates[offset]; y2 = flatCoordinates[offset + 1]; if(ol.math.squaredDistance(x1, y1, x2, y2) > squaredTolerance) { simplifiedFlatCoordinates[simplifiedOffset++] = x2; simplifiedFlatCoordinates[simplifiedOffset++] = y2; x1 = x2; y1 = y2 } } if(x2 != x1 || y2 != y1) { simplifiedFlatCoordinates[simplifiedOffset++] = x2; simplifiedFlatCoordinates[simplifiedOffset++] = y2 } return simplifiedOffset }; ol.geom.flat.simplify.snap = function(value, tolerance) { return tolerance * Math.round(value / tolerance) }; ol.geom.flat.simplify.quantize = function(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset) { if(offset == end) { return simplifiedOffset } var x1 = ol.geom.flat.simplify.snap(flatCoordinates[offset], tolerance); var y1 = ol.geom.flat.simplify.snap(flatCoordinates[offset + 1], tolerance); offset += stride; simplifiedFlatCoordinates[simplifiedOffset++] = x1; simplifiedFlatCoordinates[simplifiedOffset++] = y1; var x2, y2; do { x2 = ol.geom.flat.simplify.snap(flatCoordinates[offset], tolerance); y2 = ol.geom.flat.simplify.snap(flatCoordinates[offset + 1], tolerance); offset += stride; if(offset == end) { simplifiedFlatCoordinates[simplifiedOffset++] = x2; simplifiedFlatCoordinates[simplifiedOffset++] = y2; return simplifiedOffset } }while(x2 == x1 && y2 == y1); while(offset < end) { var x3, y3; x3 = ol.geom.flat.simplify.snap(flatCoordinates[offset], tolerance); y3 = ol.geom.flat.simplify.snap(flatCoordinates[offset + 1], tolerance); offset += stride; if(x3 == x2 && y3 == y2) { continue } var dx1 = x2 - x1; var dy1 = y2 - y1; var dx2 = x3 - x1; var dy2 = y3 - y1; if(dx1 * dy2 == dy1 * dx2 && (dx1 < 0 && dx2 < dx1 || dx1 == dx2 || dx1 > 0 && dx2 > dx1) && (dy1 < 0 && dy2 < dy1 || dy1 == dy2 || dy1 > 0 && dy2 > dy1)) { x2 = x3; y2 = y3; continue } simplifiedFlatCoordinates[simplifiedOffset++] = x2; simplifiedFlatCoordinates[simplifiedOffset++] = y2; x1 = x2; y1 = y2; x2 = x3; y2 = y3 } simplifiedFlatCoordinates[simplifiedOffset++] = x2; simplifiedFlatCoordinates[simplifiedOffset++] = y2; return simplifiedOffset }; ol.geom.flat.simplify.quantizes = function(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds) { var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; simplifiedOffset = ol.geom.flat.simplify.quantize(flatCoordinates, offset, end, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset); simplifiedEnds.push(simplifiedOffset); offset = end } return simplifiedOffset }; ol.geom.flat.simplify.quantizess = function(flatCoordinates, offset, endss, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEndss) { var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i]; var simplifiedEnds = []; simplifiedOffset = ol.geom.flat.simplify.quantizes(flatCoordinates, offset, ends, stride, tolerance, simplifiedFlatCoordinates, simplifiedOffset, simplifiedEnds); simplifiedEndss.push(simplifiedEnds); offset = ends[ends.length - 1] } return simplifiedOffset }; goog.provide("ol.geom.LinearRing"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.SimpleGeometry"); goog.require("ol.geom.flat.area"); goog.require("ol.geom.flat.closest"); goog.require("ol.geom.flat.deflate"); goog.require("ol.geom.flat.inflate"); goog.require("ol.geom.flat.simplify"); ol.geom.LinearRing = function(coordinates, opt_layout) { goog.base(this); this.maxDelta_ = -1; this.maxDeltaRevision_ = -1; this.setCoordinates(coordinates, (opt_layout)) }; goog.inherits(ol.geom.LinearRing, ol.geom.SimpleGeometry); ol.geom.LinearRing.prototype.clone = function() { var linearRing = new ol.geom.LinearRing(null); linearRing.setFlatCoordinates(this.layout, this.flatCoordinates.slice()); return linearRing }; ol.geom.LinearRing.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { if(minSquaredDistance < ol.extent.closestSquaredDistanceXY(this.getExtent(), x, y)) { return minSquaredDistance } if(this.maxDeltaRevision_ != this.getRevision()) { this.maxDelta_ = Math.sqrt(ol.geom.flat.closest.getMaxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)); this.maxDeltaRevision_ = this.getRevision() } return ol.geom.flat.closest.getClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance) }; ol.geom.LinearRing.prototype.getArea = function() { return ol.geom.flat.area.linearRing(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }; ol.geom.LinearRing.prototype.getCoordinates = function() { return ol.geom.flat.inflate.coordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }; ol.geom.LinearRing.prototype.getSimplifiedGeometryInternal = function(squaredTolerance) { var simplifiedFlatCoordinates = []; simplifiedFlatCoordinates.length = ol.geom.flat.simplify.douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0); var simplifiedLinearRing = new ol.geom.LinearRing(null); simplifiedLinearRing.setFlatCoordinates(ol.geom.GeometryLayout.XY, simplifiedFlatCoordinates); return simplifiedLinearRing }; ol.geom.LinearRing.prototype.getType = function() { return ol.geom.GeometryType.LINEAR_RING }; ol.geom.LinearRing.prototype.setCoordinates = function(coordinates, opt_layout) { if(goog.isNull(coordinates)) { this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null) }else { this.setLayout(opt_layout, coordinates, 1); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = [] } this.flatCoordinates.length = ol.geom.flat.deflate.coordinates(this.flatCoordinates, 0, coordinates, this.stride); this.dispatchChangeEvent() } }; ol.geom.LinearRing.prototype.setFlatCoordinates = function(layout, flatCoordinates) { this.setFlatCoordinatesInternal(layout, flatCoordinates); this.dispatchChangeEvent() }; goog.provide("ol.geom.Point"); goog.require("goog.asserts"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.SimpleGeometry"); goog.require("ol.geom.flat.deflate"); goog.require("ol.math"); ol.geom.Point = function(coordinates, opt_layout) { goog.base(this); this.setCoordinates(coordinates, (opt_layout)) }; goog.inherits(ol.geom.Point, ol.geom.SimpleGeometry); ol.geom.Point.prototype.clone = function() { var point = new ol.geom.Point(null); point.setFlatCoordinates(this.layout, this.flatCoordinates.slice()); return point }; ol.geom.Point.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { var flatCoordinates = this.flatCoordinates; var squaredDistance = ol.math.squaredDistance(x, y, flatCoordinates[0], flatCoordinates[1]); if(squaredDistance < minSquaredDistance) { var stride = this.stride; var i; for(i = 0;i < stride;++i) { closestPoint[i] = flatCoordinates[i] } closestPoint.length = stride; return squaredDistance }else { return minSquaredDistance } }; ol.geom.Point.prototype.getCoordinates = function() { return this.flatCoordinates.slice() }; ol.geom.Point.prototype.getExtent = function(opt_extent) { if(this.extentRevision != this.getRevision()) { this.extent = ol.extent.createOrUpdateFromCoordinate(this.flatCoordinates, this.extent); this.extentRevision = this.getRevision() } goog.asserts.assert(goog.isDef(this.extent)); return ol.extent.returnOrUpdate(this.extent, opt_extent) }; ol.geom.Point.prototype.getType = function() { return ol.geom.GeometryType.POINT }; ol.geom.Point.prototype.setCoordinates = function(coordinates, opt_layout) { if(goog.isNull(coordinates)) { this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null) }else { this.setLayout(opt_layout, coordinates, 0); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = [] } this.flatCoordinates.length = ol.geom.flat.deflate.coordinate(this.flatCoordinates, 0, coordinates, this.stride); this.dispatchChangeEvent() } }; ol.geom.Point.prototype.setFlatCoordinates = function(layout, flatCoordinates) { this.setFlatCoordinatesInternal(layout, flatCoordinates); this.dispatchChangeEvent() }; goog.provide("ol.geom.flat.contains"); goog.require("goog.asserts"); ol.geom.flat.contains.linearRingContainsXY = function(flatCoordinates, offset, end, stride, x, y) { var contains = false; var x1 = flatCoordinates[end - stride]; var y1 = flatCoordinates[end - stride + 1]; for(;offset < end;offset += stride) { var x2 = flatCoordinates[offset]; var y2 = flatCoordinates[offset + 1]; var intersect = y1 > y != y2 > y && x < (x2 - x1) * (y - y1) / (y2 - y1) + x1; if(intersect) { contains = !contains } x1 = x2; y1 = y2 } return contains }; ol.geom.flat.contains.linearRingsContainsXY = function(flatCoordinates, offset, ends, stride, x, y) { goog.asserts.assert(ends.length > 0); if(ends.length === 0) { return false } if(!ol.geom.flat.contains.linearRingContainsXY(flatCoordinates, offset, ends[0], stride, x, y)) { return false } var i, ii; for(i = 1, ii = ends.length;i < ii;++i) { if(ol.geom.flat.contains.linearRingContainsXY(flatCoordinates, ends[i - 1], ends[i], stride, x, y)) { return false } } return true }; ol.geom.flat.contains.linearRingssContainsXY = function(flatCoordinates, offset, endss, stride, x, y) { goog.asserts.assert(endss.length > 0); if(endss.length === 0) { return false } var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i]; if(ol.geom.flat.contains.linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) { return true } offset = ends[ends.length - 1] } return false }; goog.provide("ol.geom.flat.interiorpoint"); goog.require("goog.asserts"); goog.require("ol.geom.flat.contains"); ol.geom.flat.interiorpoint.linearRings = function(flatCoordinates, offset, ends, stride, flatCenters, flatCentersOffset, opt_dest) { var i, ii, x, x1, x2, y1, y2; var y = flatCenters[flatCentersOffset + 1]; var intersections = []; var end = ends[0]; x1 = flatCoordinates[end - stride]; y1 = flatCoordinates[end - stride + 1]; for(i = offset;i < end;i += stride) { x2 = flatCoordinates[i]; y2 = flatCoordinates[i + 1]; if(y <= y1 && y2 <= y || y1 <= y && y <= y2) { x = (y - y1) / (y2 - y1) * (x2 - x1) + x1; intersections.push(x) } x1 = x2; y1 = y2 } var pointX = NaN; var maxSegmentLength = -Infinity; intersections.sort(); x1 = intersections[0]; for(i = 1, ii = intersections.length;i < ii;++i) { x2 = intersections[i]; var segmentLength = Math.abs(x2 - x1); if(segmentLength > maxSegmentLength) { x = (x1 + x2) / 2; if(ol.geom.flat.contains.linearRingsContainsXY(flatCoordinates, offset, ends, stride, x, y)) { pointX = x; maxSegmentLength = segmentLength } } x1 = x2 } if(isNaN(pointX)) { pointX = flatCenters[flatCentersOffset] } if(goog.isDef(opt_dest)) { opt_dest.push(pointX, y); return opt_dest }else { return[pointX, y] } }; ol.geom.flat.interiorpoint.linearRingss = function(flatCoordinates, offset, endss, stride, flatCenters) { goog.asserts.assert(2 * endss.length == flatCenters.length); var interiorPoints = []; var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i]; interiorPoints = ol.geom.flat.interiorpoint.linearRings(flatCoordinates, offset, ends, stride, flatCenters, 2 * i, interiorPoints); offset = ends[ends.length - 1] } return interiorPoints }; goog.provide("ol.geom.flat.reverse"); ol.geom.flat.reverse.coordinates = function(flatCoordinates, offset, end, stride) { while(offset < end - stride) { var i; for(i = 0;i < stride;++i) { var tmp = flatCoordinates[offset + i]; flatCoordinates[offset + i] = flatCoordinates[end - stride + i]; flatCoordinates[end - stride + i] = tmp } offset += stride; end -= stride } }; goog.provide("ol.geom.flat.orient"); goog.require("ol.geom.flat.reverse"); ol.geom.flat.orient.linearRingIsClockwise = function(flatCoordinates, offset, end, stride) { var edge = 0; var x1 = flatCoordinates[end - stride]; var y1 = flatCoordinates[end - stride + 1]; for(;offset < end;offset += stride) { var x2 = flatCoordinates[offset]; var y2 = flatCoordinates[offset + 1]; edge += (x2 - x1) * (y2 + y1); x1 = x2; y1 = y2 } return edge > 0 }; ol.geom.flat.orient.linearRingsAreOriented = function(flatCoordinates, offset, ends, stride) { var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; var isClockwise = ol.geom.flat.orient.linearRingIsClockwise(flatCoordinates, offset, end, stride); if(i === 0 ? !isClockwise : isClockwise) { return false } offset = end } return true }; ol.geom.flat.linearRingssAreOriented = function(flatCoordinates, offset, endss, stride) { var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { if(!ol.geom.flat.orient.linearRingsAreOriented(flatCoordinates, offset, endss[i], stride)) { return false } } return true }; ol.geom.flat.orient.orientLinearRings = function(flatCoordinates, offset, ends, stride) { var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; var isClockwise = ol.geom.flat.orient.linearRingIsClockwise(flatCoordinates, offset, end, stride); var reverse = i === 0 ? !isClockwise : isClockwise; if(reverse) { ol.geom.flat.reverse.coordinates(flatCoordinates, offset, end, stride) } offset = end } return offset }; ol.geom.flat.orient.orientLinearRingss = function(flatCoordinates, offset, endss, stride) { var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { offset = ol.geom.flat.orient.orientLinearRings(flatCoordinates, offset, endss[i], stride) } return offset }; goog.provide("ol.geom.Polygon"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.array"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LinearRing"); goog.require("ol.geom.Point"); goog.require("ol.geom.SimpleGeometry"); goog.require("ol.geom.flat.area"); goog.require("ol.geom.flat.closest"); goog.require("ol.geom.flat.contains"); goog.require("ol.geom.flat.deflate"); goog.require("ol.geom.flat.inflate"); goog.require("ol.geom.flat.interiorpoint"); goog.require("ol.geom.flat.orient"); goog.require("ol.geom.flat.simplify"); ol.geom.Polygon = function(coordinates, opt_layout) { goog.base(this); this.ends_ = []; this.flatInteriorPointRevision_ = -1; this.flatInteriorPoint_ = null; this.maxDelta_ = -1; this.maxDeltaRevision_ = -1; this.orientedRevision_ = -1; this.orientedFlatCoordinates_ = null; this.setCoordinates(coordinates, (opt_layout)) }; goog.inherits(ol.geom.Polygon, ol.geom.SimpleGeometry); ol.geom.Polygon.prototype.appendLinearRing = function(linearRing) { goog.asserts.assert(linearRing.getLayout() == this.layout); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = linearRing.getFlatCoordinates().slice() }else { ol.array.safeExtend(this.flatCoordinates, linearRing.getFlatCoordinates()) } this.ends_.push(this.flatCoordinates.length); this.dispatchChangeEvent() }; ol.geom.Polygon.prototype.clone = function() { var polygon = new ol.geom.Polygon(null); polygon.setFlatCoordinates(this.layout, this.flatCoordinates.slice(), this.ends_.slice()); return polygon }; ol.geom.Polygon.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { if(minSquaredDistance < ol.extent.closestSquaredDistanceXY(this.getExtent(), x, y)) { return minSquaredDistance } if(this.maxDeltaRevision_ != this.getRevision()) { this.maxDelta_ = Math.sqrt(ol.geom.flat.closest.getsMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0)); this.maxDeltaRevision_ = this.getRevision() } return ol.geom.flat.closest.getsClosestPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance) }; ol.geom.Polygon.prototype.containsXY = function(x, y) { return ol.geom.flat.contains.linearRingsContainsXY(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, x, y) }; ol.geom.Polygon.prototype.getArea = function() { return ol.geom.flat.area.linearRings(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride) }; ol.geom.Polygon.prototype.getCoordinates = function() { return ol.geom.flat.inflate.coordinatess(this.flatCoordinates, 0, this.ends_, this.stride) }; ol.geom.Polygon.prototype.getEnds = function() { return this.ends_ }; ol.geom.Polygon.prototype.getFlatInteriorPoint = function() { if(this.flatInteriorPointRevision_ != this.getRevision()) { var flatCenter = ol.extent.getCenter(this.getExtent()); this.flatInteriorPoint_ = ol.geom.flat.interiorpoint.linearRings(this.getOrientedFlatCoordinates(), 0, this.ends_, this.stride, flatCenter, 0); this.flatInteriorPointRevision_ = this.getRevision() } return this.flatInteriorPoint_ }; ol.geom.Polygon.prototype.getInteriorPoint = function() { return new ol.geom.Point(this.getFlatInteriorPoint()) }; ol.geom.Polygon.prototype.getLinearRing = function(index) { goog.asserts.assert(0 <= index && index < this.ends_.length); if(index < 0 || this.ends_.length <= index) { return null } var linearRing = new ol.geom.LinearRing(null); linearRing.setFlatCoordinates(this.layout, this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index])); return linearRing }; ol.geom.Polygon.prototype.getLinearRings = function() { var layout = this.layout; var flatCoordinates = this.flatCoordinates; var ends = this.ends_; var linearRings = []; var offset = 0; var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; var linearRing = new ol.geom.LinearRing(null); linearRing.setFlatCoordinates(layout, flatCoordinates.slice(offset, end)); linearRings.push(linearRing); offset = end } return linearRings }; ol.geom.Polygon.prototype.getOrientedFlatCoordinates = function() { if(this.orientedRevision_ != this.getRevision()) { var flatCoordinates = this.flatCoordinates; if(ol.geom.flat.orient.linearRingsAreOriented(flatCoordinates, 0, this.ends_, this.stride)) { this.orientedFlatCoordinates_ = flatCoordinates }else { this.orientedFlatCoordinates_ = flatCoordinates.slice(); this.orientedFlatCoordinates_.length = ol.geom.flat.orient.orientLinearRings(this.orientedFlatCoordinates_, 0, this.ends_, this.stride) } this.orientedRevision_ = this.getRevision() } return this.orientedFlatCoordinates_ }; ol.geom.Polygon.prototype.getSimplifiedGeometryInternal = function(squaredTolerance) { var simplifiedFlatCoordinates = []; var simplifiedEnds = []; simplifiedFlatCoordinates.length = ol.geom.flat.simplify.quantizes(this.flatCoordinates, 0, this.ends_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEnds); var simplifiedPolygon = new ol.geom.Polygon(null); simplifiedPolygon.setFlatCoordinates(ol.geom.GeometryLayout.XY, simplifiedFlatCoordinates, simplifiedEnds); return simplifiedPolygon }; ol.geom.Polygon.prototype.getType = function() { return ol.geom.GeometryType.POLYGON }; ol.geom.Polygon.prototype.setCoordinates = function(coordinates, opt_layout) { if(goog.isNull(coordinates)) { this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null, this.ends_) }else { this.setLayout(opt_layout, coordinates, 2); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = [] } var ends = ol.geom.flat.deflate.coordinatess(this.flatCoordinates, 0, coordinates, this.stride, this.ends_); this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1]; this.dispatchChangeEvent() } }; ol.geom.Polygon.prototype.setFlatCoordinates = function(layout, flatCoordinates, ends) { if(goog.isNull(flatCoordinates)) { goog.asserts.assert(!goog.isNull(ends) && ends.length === 0) }else { if(ends.length === 0) { goog.asserts.assert(flatCoordinates.length === 0) }else { goog.asserts.assert(flatCoordinates.length == ends[ends.length - 1]) } } this.setFlatCoordinatesInternal(layout, flatCoordinates); this.ends_ = ends; this.dispatchChangeEvent() }; /* Latitude/longitude spherical geodesy formulae taken from http://www.movable-type.co.uk/scripts/latlong.html Licenced under CC-BY-3.0. */ goog.provide("ol.Sphere"); goog.require("goog.array"); goog.require("goog.math"); goog.require("ol.geom.Polygon"); ol.Sphere = function(radius) { this.radius = radius }; ol.Sphere.prototype.circle = function(center, radius, opt_n) { var n = goog.isDef(opt_n) ? opt_n : 32; var flatCoordinates = []; var i; for(i = 0;i < n;++i) { goog.array.extend(flatCoordinates, this.offset(center, radius, 2 * Math.PI * i / n)) } flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]); var polygon = new ol.geom.Polygon(null); polygon.setFlatCoordinates(ol.geom.GeometryLayout.XY, flatCoordinates, [flatCoordinates.length]); return polygon }; ol.Sphere.prototype.cosineDistance = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); return this.radius * Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(deltaLon)) }; ol.Sphere.prototype.crossTrackDistance = function(c1, c2, c3) { var d13 = this.cosineDistance(c1, c2); var theta12 = goog.math.toRadians(this.initialBearing(c1, c2)); var theta13 = goog.math.toRadians(this.initialBearing(c1, c3)); return this.radius * Math.asin(Math.sin(d13 / this.radius) * Math.sin(theta13 - theta12)) }; ol.Sphere.prototype.equirectangularDistance = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); var x = deltaLon * Math.cos((lat1 + lat2) / 2); var y = lat2 - lat1; return this.radius * Math.sqrt(x * x + y * y) }; ol.Sphere.prototype.finalBearing = function(c1, c2) { return(this.initialBearing(c2, c1) + 180) % 360 }; ol.Sphere.prototype.haversineDistance = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLatBy2 = (lat2 - lat1) / 2; var deltaLonBy2 = goog.math.toRadians(c2[0] - c1[0]) / 2; var a = Math.sin(deltaLatBy2) * Math.sin(deltaLatBy2) + Math.sin(deltaLonBy2) * Math.sin(deltaLonBy2) * Math.cos(lat1) * Math.cos(lat2); return 2 * this.radius * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) }; ol.Sphere.prototype.interpolate = function(c1, c2, fraction) { var lat1 = goog.math.toRadians(c1[1]); var lon1 = goog.math.toRadians(c1[0]); var lat2 = goog.math.toRadians(c2[1]); var lon2 = goog.math.toRadians(c2[0]); var cosLat1 = Math.cos(lat1); var sinLat1 = Math.sin(lat1); var cosLat2 = Math.cos(lat2); var sinLat2 = Math.sin(lat2); var cosDeltaLon = Math.cos(lon2 - lon1); var d = sinLat1 * sinLat2 + cosLat1 * cosLat2 * cosDeltaLon; if(1 <= d) { return c2.slice() } d = fraction * Math.acos(d); var cosD = Math.cos(d); var sinD = Math.sin(d); var y = Math.sin(lon2 - lon1) * cosLat2; var x = cosLat1 * sinLat2 - sinLat1 * cosLat2 * cosDeltaLon; var theta = Math.atan2(y, x); var lat = Math.asin(sinLat1 * cosD + cosLat1 * sinD * Math.cos(theta)); var lon = lon1 + Math.atan2(Math.sin(theta) * sinD * cosLat1, cosD - sinLat1 * Math.sin(lat)); return[goog.math.toDegrees(lon), goog.math.toDegrees(lat)] }; ol.Sphere.prototype.initialBearing = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); var y = Math.sin(deltaLon) * Math.cos(lat2); var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(deltaLon); return goog.math.toDegrees(Math.atan2(y, x)) }; ol.Sphere.prototype.maximumLatitude = function(bearing, latitude) { return Math.cos(Math.abs(Math.sin(goog.math.toRadians(bearing)) * Math.cos(goog.math.toRadians(latitude)))) }; ol.Sphere.prototype.midpoint = function(c1, c2) { var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var lon1 = goog.math.toRadians(c1[0]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); var Bx = Math.cos(lat2) * Math.cos(deltaLon); var By = Math.cos(lat2) * Math.sin(deltaLon); var cosLat1PlusBx = Math.cos(lat1) + Bx; var lat = Math.atan2(Math.sin(lat1) + Math.sin(lat2), Math.sqrt(cosLat1PlusBx * cosLat1PlusBx + By * By)); var lon = lon1 + Math.atan2(By, cosLat1PlusBx); return[goog.math.toDegrees(lon), goog.math.toDegrees(lat)] }; ol.Sphere.prototype.offset = function(c1, distance, bearing) { var lat1 = goog.math.toRadians(c1[1]); var lon1 = goog.math.toRadians(c1[0]); var dByR = distance / this.radius; var lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) + Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing)); var lon = lon1 + Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat)); return[goog.math.toDegrees(lon), goog.math.toDegrees(lat)] }; goog.provide("ol.sphere.NORMAL"); goog.require("ol.Sphere"); ol.sphere.NORMAL = new ol.Sphere(6370997); goog.provide("ol.proj"); goog.provide("ol.proj.METERS_PER_UNIT"); goog.provide("ol.proj.Projection"); goog.provide("ol.proj.ProjectionLike"); goog.provide("ol.proj.Units"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol"); goog.require("ol.Extent"); goog.require("ol.TransformFunction"); goog.require("ol.sphere.NORMAL"); ol.HAVE_PROJ4JS = ol.ENABLE_PROJ4JS && typeof Proj4js == "object"; ol.proj.ProjectionLike; ol.proj.Units = {DEGREES:"degrees", FEET:"ft", METERS:"m", PIXELS:"pixels"}; ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] = 2 * Math.PI * ol.sphere.NORMAL.radius / 360; ol.proj.METERS_PER_UNIT[ol.proj.Units.FEET] = 0.3048; ol.proj.METERS_PER_UNIT[ol.proj.Units.METERS] = 1; ol.proj.Projection = function(options) { this.code_ = options.code; this.units_ = (options.units); this.extent_ = goog.isDef(options.extent) ? options.extent : null; this.axisOrientation_ = goog.isDef(options.axisOrientation) ? options.axisOrientation : "enu"; this.global_ = goog.isDef(options.global) ? options.global : false; this.defaultTileGrid_ = null }; ol.proj.Projection.prototype.getCode = function() { return this.code_ }; ol.proj.Projection.prototype.getExtent = function() { return this.extent_ }; ol.proj.Projection.prototype.getPointResolution = goog.abstractMethod; ol.proj.Projection.prototype.getUnits = function() { return this.units_ }; ol.proj.Projection.prototype.getMetersPerUnit = function() { return ol.proj.METERS_PER_UNIT[this.units_] }; ol.proj.Projection.prototype.getAxisOrientation = function() { return this.axisOrientation_ }; ol.proj.Projection.prototype.isGlobal = function() { return this.global_ }; ol.proj.Projection.prototype.getDefaultTileGrid = function() { return this.defaultTileGrid_ }; ol.proj.Projection.prototype.setDefaultTileGrid = function(tileGrid) { this.defaultTileGrid_ = tileGrid }; ol.Proj4jsProjection_ = function(proj4jsProj, options) { var units = (proj4jsProj.units); var config = ({units:units, axisOrientation:proj4jsProj.axis}); goog.object.extend(config, options); goog.base(this, config); this.proj4jsProj_ = proj4jsProj; this.toEPSG4326_ = null }; goog.inherits(ol.Proj4jsProjection_, ol.proj.Projection); ol.Proj4jsProjection_.prototype.getMetersPerUnit = function() { var metersPerUnit = this.proj4jsProj_.to_meter; if(!goog.isDef(metersPerUnit)) { metersPerUnit = ol.proj.METERS_PER_UNIT[this.units_] } return metersPerUnit }; ol.Proj4jsProjection_.prototype.getPointResolution = function(resolution, point) { if(this.getUnits() == ol.proj.Units.DEGREES) { return resolution }else { if(goog.isNull(this.toEPSG4326_)) { this.toEPSG4326_ = ol.proj.getTransformFromProjections(this, ol.proj.getProj4jsProjectionFromCode_({code:"EPSG:4326", extent:null})) } var vertices = [point[0] - resolution / 2, point[1], point[0] + resolution / 2, point[1], point[0], point[1] - resolution / 2, point[0], point[1] + resolution / 2]; vertices = this.toEPSG4326_(vertices, vertices, 2); var width = ol.sphere.NORMAL.haversineDistance(vertices.slice(0, 2), vertices.slice(2, 4)); var height = ol.sphere.NORMAL.haversineDistance(vertices.slice(4, 6), vertices.slice(6, 8)); var pointResolution = (width + height) / 2; if(this.getUnits() == ol.proj.Units.FEET) { pointResolution /= 0.3048 } return pointResolution } }; ol.Proj4jsProjection_.prototype.getProj4jsProj = function() { return this.proj4jsProj_ }; ol.proj.proj4jsProjections_ = {}; ol.proj.projections_ = {}; ol.proj.transforms_ = {}; ol.proj.addEquivalentProjections = function(projections) { ol.proj.addProjections(projections); goog.array.forEach(projections, function(source) { goog.array.forEach(projections, function(destination) { if(source !== destination) { ol.proj.addTransform(source, destination, ol.proj.cloneTransform) } }) }) }; ol.proj.addEquivalentTransforms = function(projections1, projections2, forwardTransform, inverseTransform) { goog.array.forEach(projections1, function(projection1) { goog.array.forEach(projections2, function(projection2) { ol.proj.addTransform(projection1, projection2, forwardTransform); ol.proj.addTransform(projection2, projection1, inverseTransform) }) }) }; ol.proj.addProj4jsProjection_ = function(proj4jsProjection) { var proj4jsProjections = ol.proj.proj4jsProjections_; var code = proj4jsProjection.getCode(); goog.asserts.assert(!goog.object.containsKey(proj4jsProjections, code)); proj4jsProjections[code] = proj4jsProjection }; ol.proj.addProjection = function(projection) { var projections = ol.proj.projections_; var code = projection.getCode(); projections[code] = projection; ol.proj.addTransform(projection, projection, ol.proj.cloneTransform) }; ol.proj.addProjections = function(projections) { goog.array.forEach(projections, function(projection) { ol.proj.addProjection(projection) }) }; ol.proj.clearAllProjections = function() { if(ol.ENABLE_PROJ4JS) { ol.proj.proj4jsProjections_ = {} } ol.proj.projections_ = {}; ol.proj.transforms_ = {} }; ol.proj.createProjection = function(projection, defaultCode) { if(!goog.isDefAndNotNull(projection)) { return ol.proj.get(defaultCode) }else { if(goog.isString(projection)) { return ol.proj.get(projection) }else { goog.asserts.assertInstanceof(projection, ol.proj.Projection); return projection } } }; ol.proj.addTransform = function(source, destination, transformFn) { var sourceCode = source.getCode(); var destinationCode = destination.getCode(); var transforms = ol.proj.transforms_; if(!goog.object.containsKey(transforms, sourceCode)) { transforms[sourceCode] = {} } transforms[sourceCode][destinationCode] = transformFn }; ol.proj.removeTransform = function(source, destination) { var sourceCode = source.getCode(); var destinationCode = destination.getCode(); var transforms = ol.proj.transforms_; goog.asserts.assert(sourceCode in transforms); goog.asserts.assert(destinationCode in transforms[sourceCode]); var transform = transforms[sourceCode][destinationCode]; delete transforms[sourceCode][destinationCode]; var keys = goog.object.getKeys(transforms[sourceCode]); if(keys.length === 0) { delete transforms[sourceCode] } return transform }; ol.proj.get = function(projectionLike) { var projection; if(projectionLike instanceof ol.proj.Projection) { projection = projectionLike }else { if(goog.isString(projectionLike)) { var code = projectionLike; projection = ol.proj.projections_[code]; if(ol.HAVE_PROJ4JS && !goog.isDef(projection)) { projection = ol.proj.getProj4jsProjectionFromCode_({code:code, extent:null}) } if(!goog.isDef(projection)) { goog.asserts.assert(goog.isDef(projection)); projection = null } }else { projection = null } } return projection }; ol.proj.getProj4jsProjectionFromCode_ = function(options) { var code = options.code; var proj4jsProjections = ol.proj.proj4jsProjections_; var proj4jsProjection = proj4jsProjections[code]; if(!goog.isDef(proj4jsProjection)) { var proj4jsProj = new Proj4js.Proj(code); var srsCode = proj4jsProj.srsCode; proj4jsProjection = proj4jsProjections[srsCode]; if(!goog.isDef(proj4jsProjection)) { var config = (goog.object.clone(options)); config.code = srsCode; proj4jsProjection = new ol.Proj4jsProjection_(proj4jsProj, config); proj4jsProjections[srsCode] = proj4jsProjection } proj4jsProjections[code] = proj4jsProjection } return proj4jsProjection }; ol.proj.equivalent = function(projection1, projection2) { if(projection1 === projection2) { return true }else { if(projection1.getUnits() != projection2.getUnits()) { return false }else { var transformFn = ol.proj.getTransformFromProjections(projection1, projection2); return transformFn === ol.proj.cloneTransform } } }; ol.proj.getTransform = function(source, destination) { var sourceProjection = ol.proj.get(source); var destinationProjection = ol.proj.get(destination); return ol.proj.getTransformFromProjections(sourceProjection, destinationProjection) }; ol.proj.getTransformFromProjections = function(sourceProjection, destinationProjection) { var transforms = ol.proj.transforms_; var sourceCode = sourceProjection.getCode(); var destinationCode = destinationProjection.getCode(); var transform; if(goog.object.containsKey(transforms, sourceCode) && goog.object.containsKey(transforms[sourceCode], destinationCode)) { transform = transforms[sourceCode][destinationCode] } if(ol.HAVE_PROJ4JS && !goog.isDef(transform)) { var proj4jsSource; if(sourceProjection instanceof ol.Proj4jsProjection_) { proj4jsSource = sourceProjection }else { proj4jsSource = ol.proj.getProj4jsProjectionFromCode_({code:sourceCode, extent:null}) } var sourceProj4jsProj = proj4jsSource.getProj4jsProj(); var proj4jsDestination; if(destinationProjection instanceof ol.Proj4jsProjection_) { proj4jsDestination = destinationProjection }else { proj4jsDestination = ol.proj.getProj4jsProjectionFromCode_({code:destinationCode, extent:null}) } var destinationProj4jsProj = proj4jsDestination.getProj4jsProj(); transform = function(input, opt_output, opt_dimension) { var length = input.length, dimension = opt_dimension > 1 ? opt_dimension : 2, output = opt_output; if(!goog.isDef(output)) { if(dimension > 2) { output = input.slice() }else { output = new Array(length) } } goog.asserts.assert(output.length % dimension === 0); var proj4jsPoint; for(var i = 0;i < length;i += dimension) { proj4jsPoint = new Proj4js.Point(input[i], input[i + 1]); proj4jsPoint = Proj4js.transform(sourceProj4jsProj, destinationProj4jsProj, proj4jsPoint); output[i] = proj4jsPoint.x; output[i + 1] = proj4jsPoint.y } return output }; ol.proj.addTransform(sourceProjection, destinationProjection, transform) } if(!goog.isDef(transform)) { goog.asserts.assert(goog.isDef(transform)); transform = ol.proj.identityTransform } return transform }; ol.proj.identityTransform = function(input, opt_output, opt_dimension) { if(goog.isDef(opt_output) && input !== opt_output) { goog.asserts.fail("This should not be used internally."); for(var i = 0, ii = input.length;i < ii;++i) { opt_output[i] = input[i] } input = opt_output } return input }; ol.proj.cloneTransform = function(input, opt_output, opt_dimension) { var output; if(goog.isDef(opt_output)) { for(var i = 0, ii = input.length;i < ii;++i) { opt_output[i] = input[i] } output = opt_output }else { output = input.slice() } return output }; ol.proj.transform = function(point, source, destination) { var transformFn = ol.proj.getTransform(source, destination); return transformFn(point) }; ol.proj.transformWithProjections = function(point, sourceProjection, destinationProjection) { var transformFn = ol.proj.getTransformFromProjections(sourceProjection, destinationProjection); return transformFn(point) }; ol.proj.configureProj4jsProjection = function(options) { goog.asserts.assert(!goog.object.containsKey(ol.proj.proj4jsProjections_, options.code)); return ol.proj.getProj4jsProjectionFromCode_(options) }; goog.provide("ol.View2D"); goog.provide("ol.View2DProperty"); goog.require("goog.asserts"); goog.require("ol"); goog.require("ol.CenterConstraint"); goog.require("ol.Constraints"); goog.require("ol.IView2D"); goog.require("ol.IView3D"); goog.require("ol.ResolutionConstraint"); goog.require("ol.RotationConstraint"); goog.require("ol.RotationConstraintType"); goog.require("ol.Size"); goog.require("ol.View"); goog.require("ol.coordinate"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.proj.METERS_PER_UNIT"); goog.require("ol.proj.Projection"); goog.require("ol.proj.Units"); ol.View2DProperty = {CENTER:"center", PROJECTION:"projection", RESOLUTION:"resolution", ROTATION:"rotation"}; ol.View2D = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; var values = {}; values[ol.View2DProperty.CENTER] = goog.isDef(options.center) ? options.center : null; values[ol.View2DProperty.PROJECTION] = ol.proj.createProjection(options.projection, "EPSG:3857"); var resolutionConstraintInfo = ol.View2D.createResolutionConstraint_(options); this.maxResolution_ = resolutionConstraintInfo.maxResolution; this.minResolution_ = resolutionConstraintInfo.minResolution; var centerConstraint = ol.View2D.createCenterConstraint_(options); var resolutionConstraint = resolutionConstraintInfo.constraint; var rotationConstraint = ol.View2D.createRotationConstraint_(options); this.constraints_ = new ol.Constraints(centerConstraint, resolutionConstraint, rotationConstraint); if(goog.isDef(options.resolution)) { values[ol.View2DProperty.RESOLUTION] = options.resolution }else { if(goog.isDef(options.zoom)) { values[ol.View2DProperty.RESOLUTION] = this.constrainResolution(this.maxResolution_, options.zoom) } } values[ol.View2DProperty.ROTATION] = goog.isDef(options.rotation) ? options.rotation : 0; this.setValues(values) }; goog.inherits(ol.View2D, ol.View); ol.View2D.prototype.calculateCenterRotate = function(rotation, anchor) { var center; var currentCenter = this.getCenter(); if(goog.isDef(currentCenter)) { center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]]; ol.coordinate.rotate(center, rotation - this.getRotation()); ol.coordinate.add(center, anchor) } return center }; ol.View2D.prototype.calculateCenterZoom = function(resolution, anchor) { var center; var currentCenter = this.getCenter(); var currentResolution = this.getResolution(); if(goog.isDef(currentCenter) && goog.isDef(currentResolution)) { var x = anchor[0] - resolution * (anchor[0] - currentCenter[0]) / currentResolution; var y = anchor[1] - resolution * (anchor[1] - currentCenter[1]) / currentResolution; center = [x, y] } return center }; ol.View2D.prototype.constrainCenter = function(center) { return this.constraints_.center(center) }; ol.View2D.prototype.constrainResolution = function(resolution, opt_delta, opt_direction) { var delta = opt_delta || 0; var direction = opt_direction || 0; return this.constraints_.resolution(resolution, delta, direction) }; ol.View2D.prototype.constrainRotation = function(rotation, opt_delta) { var delta = opt_delta || 0; return this.constraints_.rotation(rotation, delta) }; ol.View2D.prototype.getCenter = function() { return(this.get(ol.View2DProperty.CENTER)) }; goog.exportProperty(ol.View2D.prototype, "getCenter", ol.View2D.prototype.getCenter); ol.View2D.prototype.calculateExtent = function(size) { goog.asserts.assert(this.isDef()); var center = this.getCenter(); var resolution = this.getResolution(); var minX = center[0] - resolution * size[0] / 2; var maxX = center[0] + resolution * size[0] / 2; var minY = center[1] - resolution * size[1] / 2; var maxY = center[1] + resolution * size[1] / 2; return[minX, minY, maxX, maxY] }; ol.View2D.prototype.getProjection = function() { return(this.get(ol.View2DProperty.PROJECTION)) }; goog.exportProperty(ol.View2D.prototype, "getProjection", ol.View2D.prototype.getProjection); ol.View2D.prototype.getResolution = function() { return(this.get(ol.View2DProperty.RESOLUTION)) }; goog.exportProperty(ol.View2D.prototype, "getResolution", ol.View2D.prototype.getResolution); ol.View2D.prototype.getResolutionForExtent = function(extent, size) { var xResolution = ol.extent.getWidth(extent) / size[0]; var yResolution = ol.extent.getHeight(extent) / size[1]; return Math.max(xResolution, yResolution) }; ol.View2D.prototype.getResolutionForValueFunction = function(opt_power) { var power = opt_power || 2; var maxResolution = this.maxResolution_; var minResolution = this.minResolution_; var max = Math.log(maxResolution / minResolution) / Math.log(power); return function(value) { var resolution = maxResolution / Math.pow(power, value * max); goog.asserts.assert(resolution >= minResolution && resolution <= maxResolution); return resolution } }; ol.View2D.prototype.getRotation = function() { return(this.get(ol.View2DProperty.ROTATION)) }; goog.exportProperty(ol.View2D.prototype, "getRotation", ol.View2D.prototype.getRotation); ol.View2D.prototype.getValueForResolutionFunction = function(opt_power) { var power = opt_power || 2; var maxResolution = this.maxResolution_; var minResolution = this.minResolution_; var max = Math.log(maxResolution / minResolution) / Math.log(power); return function(resolution) { var value = Math.log(maxResolution / resolution) / Math.log(power) / max; goog.asserts.assert(value >= 0 && value <= 1); return value } }; ol.View2D.prototype.getView2D = function() { return this }; ol.View2D.prototype.getView2DState = function() { goog.asserts.assert(this.isDef()); var center = (this.getCenter()); var projection = this.getProjection(); var resolution = (this.getResolution()); var rotation = this.getRotation(); return({center:center.slice(), projection:goog.isDef(projection) ? projection : null, resolution:resolution, rotation:goog.isDef(rotation) ? rotation : 0}) }; ol.View2D.prototype.getView3D = function() { }; ol.View2D.prototype.getZoom = function() { var zoom; var resolution = this.getResolution(); if(goog.isDef(resolution)) { var res, z = 0; do { res = this.constrainResolution(this.maxResolution_, z); if(res == resolution) { zoom = z; break } ++z }while(res > this.minResolution_) } return zoom }; ol.View2D.prototype.fitExtent = function(extent, size) { if(!ol.extent.isEmpty(extent)) { this.setCenter(ol.extent.getCenter(extent)); var resolution = this.getResolutionForExtent(extent, size); var constrainedResolution = this.constrainResolution(resolution, 0, 0); if(constrainedResolution < resolution) { constrainedResolution = this.constrainResolution(constrainedResolution, -1, 0) } this.setResolution(constrainedResolution) } }; ol.View2D.prototype.fitGeometry = function(geometry, size, opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var padding = goog.isDef(options.padding) ? options.padding : [0, 0, 0, 0]; var constrainResolution = goog.isDef(options.constrainResolution) ? options.constrainResolution : true; var nearest = goog.isDef(options.nearest) ? options.nearest : false; var minResolution = goog.isDef(options.minResolution) ? options.minResolution : 0; var coords = geometry.getFlatCoordinates(); var rotation = this.getRotation(); goog.asserts.assert(goog.isDef(rotation)); var cosAngle = Math.cos(-rotation); var sinAngle = Math.sin(-rotation); var minRotX = +Infinity; var minRotY = +Infinity; var maxRotX = -Infinity; var maxRotY = -Infinity; var stride = geometry.getStride(); for(var i = 0, ii = coords.length;i < ii;i += stride) { var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle; var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle; minRotX = Math.min(minRotX, rotX); minRotY = Math.min(minRotY, rotY); maxRotX = Math.max(maxRotX, rotX); maxRotY = Math.max(maxRotY, rotY) } var resolution = this.getResolutionForExtent([minRotX, minRotY, maxRotX, maxRotY], [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]); resolution = isNaN(resolution) ? minResolution : Math.max(resolution, minResolution); if(constrainResolution) { var constrainedResolution = this.constrainResolution(resolution, 0, 0); if(!nearest && constrainedResolution < resolution) { constrainedResolution = this.constrainResolution(constrainedResolution, -1, 0) } resolution = constrainedResolution } this.setResolution(resolution); sinAngle = -sinAngle; var centerRotX = (minRotX + maxRotX) / 2; var centerRotY = (minRotY + maxRotY) / 2; centerRotX += (padding[1] - padding[3]) / 2 * resolution; centerRotY += (padding[0] - padding[2]) / 2 * resolution; var centerX = centerRotX * cosAngle - centerRotY * sinAngle; var centerY = centerRotY * cosAngle + centerRotX * sinAngle; this.setCenter([centerX, centerY]) }; ol.View2D.prototype.centerOn = function(coordinate, size, position) { var rotation = this.getRotation(); var cosAngle = Math.cos(-rotation); var sinAngle = Math.sin(-rotation); var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle; var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle; var resolution = this.getResolution(); rotX += (size[0] / 2 - position[0]) * resolution; rotY += (position[1] - size[1] / 2) * resolution; sinAngle = -sinAngle; var centerX = rotX * cosAngle - rotY * sinAngle; var centerY = rotY * cosAngle + rotX * sinAngle; this.setCenter([centerX, centerY]) }; ol.View2D.prototype.isDef = function() { return goog.isDefAndNotNull(this.getCenter()) && goog.isDef(this.getResolution()) }; ol.View2D.prototype.rotate = function(rotation, opt_anchor) { if(goog.isDef(opt_anchor)) { var center = this.calculateCenterRotate(rotation, opt_anchor); this.setCenter(center) } this.setRotation(rotation) }; ol.View2D.prototype.setCenter = function(center) { this.set(ol.View2DProperty.CENTER, center) }; goog.exportProperty(ol.View2D.prototype, "setCenter", ol.View2D.prototype.setCenter); ol.View2D.prototype.setProjection = function(projection) { this.set(ol.View2DProperty.PROJECTION, projection) }; goog.exportProperty(ol.View2D.prototype, "setProjection", ol.View2D.prototype.setProjection); ol.View2D.prototype.setResolution = function(resolution) { this.set(ol.View2DProperty.RESOLUTION, resolution) }; goog.exportProperty(ol.View2D.prototype, "setResolution", ol.View2D.prototype.setResolution); ol.View2D.prototype.setRotation = function(rotation) { this.set(ol.View2DProperty.ROTATION, rotation) }; goog.exportProperty(ol.View2D.prototype, "setRotation", ol.View2D.prototype.setRotation); ol.View2D.prototype.setZoom = function(zoom) { var resolution = this.constrainResolution(this.maxResolution_, zoom, 0); this.setResolution(resolution) }; ol.View2D.createCenterConstraint_ = function(options) { if(goog.isDef(options.extent)) { return ol.CenterConstraint.createExtent(options.extent) }else { return ol.CenterConstraint.none } }; ol.View2D.createResolutionConstraint_ = function(options) { var resolutionConstraint; var maxResolution; var minResolution; if(goog.isDef(options.resolutions)) { var resolutions = options.resolutions; maxResolution = resolutions[0]; minResolution = resolutions[resolutions.length - 1]; resolutionConstraint = ol.ResolutionConstraint.createSnapToResolutions(resolutions) }else { maxResolution = options.maxResolution; if(!goog.isDef(maxResolution)) { var projection = options.projection; var projectionExtent = ol.proj.createProjection(projection, "EPSG:3857").getExtent(); var size = goog.isNull(projectionExtent) ? 360 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] / ol.proj.METERS_PER_UNIT[projection.getUnits()] : Math.max(projectionExtent[2] - projectionExtent[0], projectionExtent[3] - projectionExtent[1]); maxResolution = size / ol.DEFAULT_TILE_SIZE } var maxZoom = options.maxZoom; if(!goog.isDef(maxZoom)) { maxZoom = 28 } var zoomFactor = options.zoomFactor; if(!goog.isDef(zoomFactor)) { zoomFactor = 2 } minResolution = maxResolution / Math.pow(zoomFactor, maxZoom); resolutionConstraint = ol.ResolutionConstraint.createSnapToPower(zoomFactor, maxResolution, maxZoom) } return{constraint:resolutionConstraint, maxResolution:maxResolution, minResolution:minResolution} }; ol.View2D.createRotationConstraint_ = function(options) { var enableRotation = goog.isDef(options.enableRotation) ? options.enableRotation : true; if(enableRotation) { var constrainRotation = options.constrainRotation; if(!goog.isDef(constrainRotation) || constrainRotation === true) { return ol.RotationConstraint.createSnapToZero() }else { if(constrainRotation === false) { return ol.RotationConstraint.none }else { if(goog.isNumber(constrainRotation)) { return ol.RotationConstraint.createSnapToN(constrainRotation) }else { goog.asserts.fail(); return ol.RotationConstraint.none } } } }else { return ol.RotationConstraint.disable } }; goog.provide("ol.PostRenderFunction"); goog.provide("ol.PreRenderFunction"); ol.PostRenderFunction; ol.PreRenderFunction; goog.provide("goog.fx.easing"); goog.fx.easing.easeIn = function(t) { return t * t * t }; goog.fx.easing.easeOut = function(t) { return 1 - Math.pow(1 - t, 3) }; goog.fx.easing.inAndOut = function(t) { return 3 * t * t - 2 * t * t * t }; goog.provide("ol.easing"); goog.require("goog.fx.easing"); ol.easing.bounce = function(t) { var s = 7.5625, p = 2.75, l; if(t < 1 / p) { l = s * t * t }else { if(t < 2 / p) { t -= 1.5 / p; l = s * t * t + 0.75 }else { if(t < 2.5 / p) { t -= 2.25 / p; l = s * t * t + 0.9375 }else { t -= 2.625 / p; l = s * t * t + 0.984375 } } } return l }; ol.easing.easeIn = goog.fx.easing.easeIn; ol.easing.easeOut = goog.fx.easing.easeOut; ol.easing.elastic = function(t) { return Math.pow(2, -10 * t) * Math.sin((t - 0.075) * 2 * Math.PI / 0.3) + 1 }; ol.easing.inAndOut = goog.fx.easing.inAndOut; ol.easing.linear = function(t) { return t }; ol.easing.upAndDown = function(t) { if(t < 0.5) { return ol.easing.inAndOut(2 * t) }else { return 1 - ol.easing.inAndOut(2 * (t - 0.5)) } }; goog.provide("ol.animation"); goog.require("ol.PreRenderFunction"); goog.require("ol.ViewHint"); goog.require("ol.coordinate"); goog.require("ol.easing"); ol.animation.bounce = function(options) { var resolution = options.resolution; var start = goog.isDef(options.start) ? options.start : goog.now(); var duration = goog.isDef(options.duration) ? options.duration : 1E3; var easing = goog.isDef(options.easing) ? options.easing : ol.easing.upAndDown; return function(map, frameState) { if(frameState.time < start) { frameState.animate = true; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { if(frameState.time < start + duration) { var delta = easing((frameState.time - start) / duration); var deltaResolution = resolution - frameState.view2DState.resolution; frameState.animate = true; frameState.view2DState.resolution += delta * deltaResolution; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { return false } } } }; ol.animation.pan = function(options) { var source = options.source; var start = goog.isDef(options.start) ? options.start : goog.now(); var sourceX = source[0]; var sourceY = source[1]; var duration = goog.isDef(options.duration) ? options.duration : 1E3; var easing = goog.isDef(options.easing) ? options.easing : ol.easing.inAndOut; return function(map, frameState) { if(frameState.time < start) { frameState.animate = true; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { if(frameState.time < start + duration) { var delta = 1 - easing((frameState.time - start) / duration); var deltaX = sourceX - frameState.view2DState.center[0]; var deltaY = sourceY - frameState.view2DState.center[1]; frameState.animate = true; frameState.view2DState.center[0] += delta * deltaX; frameState.view2DState.center[1] += delta * deltaY; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { return false } } } }; ol.animation.rotate = function(options) { var sourceRotation = goog.isDef(options.rotation) ? options.rotation : 0; var start = goog.isDef(options.start) ? options.start : goog.now(); var duration = goog.isDef(options.duration) ? options.duration : 1E3; var easing = goog.isDef(options.easing) ? options.easing : ol.easing.inAndOut; var anchor = goog.isDef(options.anchor) ? options.anchor : null; return function(map, frameState) { if(frameState.time < start) { frameState.animate = true; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { if(frameState.time < start + duration) { var delta = 1 - easing((frameState.time - start) / duration); var deltaRotation = (sourceRotation - frameState.view2DState.rotation) * delta; frameState.animate = true; frameState.view2DState.rotation += deltaRotation; if(!goog.isNull(anchor)) { var center = frameState.view2DState.center; ol.coordinate.sub(center, anchor); ol.coordinate.rotate(center, deltaRotation); ol.coordinate.add(center, anchor) } frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { return false } } } }; ol.animation.zoom = function(options) { var sourceResolution = options.resolution; var start = goog.isDef(options.start) ? options.start : goog.now(); var duration = goog.isDef(options.duration) ? options.duration : 1E3; var easing = goog.isDef(options.easing) ? options.easing : ol.easing.inAndOut; return function(map, frameState) { if(frameState.time < start) { frameState.animate = true; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { if(frameState.time < start + duration) { var delta = 1 - easing((frameState.time - start) / duration); var deltaResolution = sourceResolution - frameState.view2DState.resolution; frameState.animate = true; frameState.view2DState.resolution += delta * deltaResolution; frameState.viewHints[ol.ViewHint.ANIMATING] += 1; return true }else { return false } } } }; goog.provide("ol.interaction.Interaction"); goog.require("goog.asserts"); goog.require("ol.MapBrowserEvent"); goog.require("ol.Observable"); goog.require("ol.View2D"); goog.require("ol.animation"); goog.require("ol.easing"); ol.interaction.Interaction = function() { goog.base(this); this.map_ = null }; goog.inherits(ol.interaction.Interaction, ol.Observable); ol.interaction.Interaction.prototype.getMap = function() { return this.map_ }; ol.interaction.Interaction.prototype.handleMapBrowserEvent = goog.abstractMethod; ol.interaction.Interaction.prototype.setMap = function(map) { this.map_ = map }; ol.interaction.Interaction.pan = function(map, view, delta, opt_duration) { goog.asserts.assertInstanceof(view, ol.View2D); var currentCenter = view.getCenter(); if(goog.isDef(currentCenter)) { if(goog.isDef(opt_duration) && opt_duration > 0) { map.beforeRender(ol.animation.pan({source:currentCenter, duration:opt_duration, easing:ol.easing.linear})) } var center = view.constrainCenter([currentCenter[0] + delta[0], currentCenter[1] + delta[1]]); view.setCenter(center) } }; ol.interaction.Interaction.rotate = function(map, view, rotation, opt_anchor, opt_duration) { goog.asserts.assertInstanceof(view, ol.View2D); rotation = view.constrainRotation(rotation, 0); ol.interaction.Interaction.rotateWithoutConstraints(map, view, rotation, opt_anchor, opt_duration) }; ol.interaction.Interaction.rotateWithoutConstraints = function(map, view, rotation, opt_anchor, opt_duration) { goog.asserts.assertInstanceof(view, ol.View2D); if(goog.isDefAndNotNull(rotation)) { var currentRotation = view.getRotation(); var currentCenter = view.getCenter(); if(goog.isDef(currentRotation) && goog.isDef(currentCenter) && goog.isDef(opt_duration) && opt_duration > 0) { map.beforeRender(ol.animation.rotate({rotation:currentRotation, duration:opt_duration, easing:ol.easing.easeOut})); if(goog.isDef(opt_anchor)) { map.beforeRender(ol.animation.pan({source:currentCenter, duration:opt_duration, easing:ol.easing.easeOut})) } } goog.asserts.assertInstanceof(view, ol.View2D); view.rotate(rotation, opt_anchor) } }; ol.interaction.Interaction.zoom = function(map, view, resolution, opt_anchor, opt_duration, opt_direction) { goog.asserts.assertInstanceof(view, ol.View2D); resolution = view.constrainResolution(resolution, 0, opt_direction); ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution, opt_anchor, opt_duration) }; ol.interaction.Interaction.zoomByDelta = function(map, view, delta, opt_anchor, opt_duration) { goog.asserts.assertInstanceof(view, ol.View2D); var currentResolution = view.getResolution(); var resolution = view.constrainResolution(currentResolution, delta, 0); ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution, opt_anchor, opt_duration) }; ol.interaction.Interaction.zoomWithoutConstraints = function(map, view, resolution, opt_anchor, opt_duration) { goog.asserts.assertInstanceof(view, ol.View2D); if(goog.isDefAndNotNull(resolution)) { var currentResolution = view.getResolution(); var currentCenter = view.getCenter(); if(goog.isDef(currentResolution) && goog.isDef(currentCenter) && goog.isDef(opt_duration) && opt_duration > 0) { map.beforeRender(ol.animation.zoom({resolution:currentResolution, duration:opt_duration, easing:ol.easing.easeOut})); if(goog.isDef(opt_anchor)) { map.beforeRender(ol.animation.pan({source:currentCenter, duration:opt_duration, easing:ol.easing.easeOut})) } } goog.asserts.assertInstanceof(view, ol.View2D); if(goog.isDefAndNotNull(opt_anchor)) { var center = view.calculateCenterZoom(resolution, opt_anchor); view.setCenter(center) } view.setResolution(resolution) } }; goog.provide("ol.interaction.Pointer"); goog.require("goog.asserts"); goog.require("goog.functions"); goog.require("goog.object"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.MapBrowserPointerEvent"); goog.require("ol.Pixel"); goog.require("ol.interaction.Interaction"); ol.interaction.Pointer = function() { goog.base(this); this.handlingDownUpSequence = false; this.trackedPointers_ = {}; this.targetPointers = [] }; goog.inherits(ol.interaction.Pointer, ol.interaction.Interaction); ol.interaction.Pointer.centroid = function(pointerEvents) { var length = pointerEvents.length; var clientX = 0; var clientY = 0; for(var i = 0;i < length;i++) { clientX += pointerEvents[i].clientX; clientY += pointerEvents[i].clientY } return[clientX / length, clientY / length] }; ol.interaction.Pointer.prototype.isPointerDraggingEvent_ = function(mapBrowserEvent) { var type = mapBrowserEvent.type; return type === ol.MapBrowserEvent.EventType.POINTERDOWN || type === ol.MapBrowserEvent.EventType.POINTERDRAG || type === ol.MapBrowserEvent.EventType.POINTERUP }; ol.interaction.Pointer.prototype.updateTrackedPointers_ = function(mapBrowserEvent) { if(this.isPointerDraggingEvent_(mapBrowserEvent)) { var event = mapBrowserEvent.pointerEvent; if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERUP) { delete this.trackedPointers_[event.pointerId] }else { if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERDOWN) { this.trackedPointers_[event.pointerId] = event }else { if(event.pointerId in this.trackedPointers_) { this.trackedPointers_[event.pointerId] = event } } } this.targetPointers = goog.object.getValues(this.trackedPointers_) } }; ol.interaction.Pointer.prototype.handlePointerDrag = goog.nullFunction; ol.interaction.Pointer.prototype.handlePointerUp = goog.functions.FALSE; ol.interaction.Pointer.prototype.handlePointerDown = goog.functions.FALSE; ol.interaction.Pointer.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if(!(mapBrowserEvent instanceof ol.MapBrowserPointerEvent)) { return true } var stopEvent = false; this.updateTrackedPointers_(mapBrowserEvent); if(this.handlingDownUpSequence) { if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERDRAG) { this.handlePointerDrag(mapBrowserEvent) }else { if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERUP) { this.handlingDownUpSequence = this.handlePointerUp(mapBrowserEvent) } } } if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERDOWN) { var handled = this.handlePointerDown(mapBrowserEvent); this.handlingDownUpSequence = handled; stopEvent = this.shouldStopEvent(handled) } return!stopEvent }; ol.interaction.Pointer.prototype.shouldStopEvent = goog.functions.FALSE; goog.provide("ol.render.IVectorContext"); ol.render.IVectorContext = function() { }; ol.render.IVectorContext.prototype.drawAsync = function(zIndex, callback) { }; ol.render.IVectorContext.prototype.drawCircleGeometry = function(circleGeometry, data) { }; ol.render.IVectorContext.prototype.drawFeature = function(feature, style) { }; ol.render.IVectorContext.prototype.drawGeometryCollectionGeometry = function(geometryCollectionGeometry, data) { }; ol.render.IVectorContext.prototype.drawPointGeometry = function(pointGeometry, data) { }; ol.render.IVectorContext.prototype.drawLineStringGeometry = function(lineStringGeometry, data) { }; ol.render.IVectorContext.prototype.drawMultiLineStringGeometry = function(multiLineStringGeometry, data) { }; ol.render.IVectorContext.prototype.drawMultiPointGeometry = function(multiPointGeometry, data) { }; ol.render.IVectorContext.prototype.drawMultiPolygonGeometry = function(multiPolygonGeometry, data) { }; ol.render.IVectorContext.prototype.drawPolygonGeometry = function(polygonGeometry, data) { }; ol.render.IVectorContext.prototype.drawText = function(flatCoordinates, offset, end, stride, geometry, data) { }; ol.render.IVectorContext.prototype.setFillStrokeStyle = function(fillStyle, strokeStyle) { }; ol.render.IVectorContext.prototype.setImageStyle = function(imageStyle) { }; ol.render.IVectorContext.prototype.setTextStyle = function(textStyle) { }; goog.provide("ol.render.Event"); goog.provide("ol.render.EventType"); goog.require("goog.events.Event"); goog.require("ol.render.IVectorContext"); ol.render.EventType = {POSTCOMPOSE:"postcompose", PRECOMPOSE:"precompose", RENDER:"render"}; ol.render.Event = function(type, opt_target, opt_vectorContext, opt_frameState, opt_context, opt_glContext) { goog.base(this, type, opt_target); this.vectorContext = opt_vectorContext; this.frameState = opt_frameState; this.context = opt_context; this.glContext = opt_glContext }; goog.inherits(ol.render.Event, goog.events.Event); goog.provide("ol.render.Box"); goog.require("goog.Disposable"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("ol.geom.Polygon"); goog.require("ol.render.EventType"); ol.render.Box = function(style) { this.map_ = null; this.postComposeListenerKey_ = null; this.startPixel_ = null; this.endPixel_ = null; this.geometry_ = null; this.style_ = style }; goog.inherits(ol.render.Box, goog.Disposable); ol.render.Box.prototype.createGeometry_ = function() { goog.asserts.assert(!goog.isNull(this.startPixel_)); goog.asserts.assert(!goog.isNull(this.endPixel_)); goog.asserts.assert(!goog.isNull(this.map_)); var startPixel = this.startPixel_; var endPixel = this.endPixel_; var pixels = [startPixel, [startPixel[0], endPixel[1]], endPixel, [endPixel[0], startPixel[1]]]; var coordinates = goog.array.map(pixels, this.map_.getCoordinateFromPixel, this.map_); coordinates[4] = coordinates[0].slice(); return new ol.geom.Polygon([coordinates]) }; ol.render.Box.prototype.disposeInternal = function() { this.setMap(null) }; ol.render.Box.prototype.handleMapPostCompose_ = function(event) { var geometry = this.geometry_; goog.asserts.assert(!goog.isNull(geometry)); var style = this.style_; goog.asserts.assert(!goog.isNull(style)); event.vectorContext.drawAsync(Infinity, function(render) { render.setFillStrokeStyle(style.getFill(), style.getStroke()); render.setTextStyle(style.getText()); render.drawPolygonGeometry(geometry, null) }) }; ol.render.Box.prototype.getGeometry = function() { return this.geometry_ }; ol.render.Box.prototype.requestMapRenderFrame_ = function() { if(!goog.isNull(this.map_) && !goog.isNull(this.startPixel_) && !goog.isNull(this.endPixel_)) { this.map_.render() } }; ol.render.Box.prototype.setMap = function(map) { if(!goog.isNull(this.postComposeListenerKey_)) { goog.events.unlistenByKey(this.postComposeListenerKey_); this.postComposeListenerKey_ = null; this.map_.render(); this.map_ = null } this.map_ = map; if(!goog.isNull(this.map_)) { this.postComposeListenerKey_ = goog.events.listen(map, ol.render.EventType.POSTCOMPOSE, this.handleMapPostCompose_, false, this); this.requestMapRenderFrame_() } }; ol.render.Box.prototype.setPixels = function(startPixel, endPixel) { this.startPixel_ = startPixel; this.endPixel_ = endPixel; this.geometry_ = this.createGeometry_(); this.requestMapRenderFrame_() }; goog.provide("ol.DragBoxEvent"); goog.provide("ol.interaction.DragBox"); goog.require("goog.asserts"); goog.require("goog.events.Event"); goog.require("goog.functions"); goog.require("ol"); goog.require("ol.events.ConditionType"); goog.require("ol.events.condition"); goog.require("ol.interaction.Pointer"); goog.require("ol.render.Box"); ol.DRAG_BOX_HYSTERESIS_PIXELS_SQUARED = ol.DRAG_BOX_HYSTERESIS_PIXELS * ol.DRAG_BOX_HYSTERESIS_PIXELS; ol.DragBoxEventType = {BOXSTART:"boxstart", BOXEND:"boxend"}; ol.DragBoxEvent = function(type, coordinate) { goog.base(this, type); this.coordinate = coordinate }; goog.inherits(ol.DragBoxEvent, goog.events.Event); ol.interaction.DragBox = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; var style = goog.isDef(options.style) ? options.style : null; this.box_ = new ol.render.Box(style); this.startPixel_ = null; this.condition_ = goog.isDef(options.condition) ? options.condition : ol.events.condition.always }; goog.inherits(ol.interaction.DragBox, ol.interaction.Pointer); ol.interaction.DragBox.prototype.handlePointerDrag = function(mapBrowserEvent) { if(!ol.events.condition.mouseOnly(mapBrowserEvent)) { return } this.box_.setPixels(this.startPixel_, mapBrowserEvent.pixel) }; ol.interaction.DragBox.prototype.getGeometry = function() { return this.box_.getGeometry() }; ol.interaction.DragBox.prototype.onBoxEnd = goog.nullFunction; ol.interaction.DragBox.prototype.handlePointerUp = function(mapBrowserEvent) { if(!ol.events.condition.mouseOnly(mapBrowserEvent)) { return true } this.box_.setMap(null); var deltaX = mapBrowserEvent.pixel[0] - this.startPixel_[0]; var deltaY = mapBrowserEvent.pixel[1] - this.startPixel_[1]; if(deltaX * deltaX + deltaY * deltaY >= ol.DRAG_BOX_HYSTERESIS_PIXELS_SQUARED) { this.onBoxEnd(mapBrowserEvent); this.dispatchEvent(new ol.DragBoxEvent(ol.DragBoxEventType.BOXEND, mapBrowserEvent.coordinate)) } return false }; ol.interaction.DragBox.prototype.handlePointerDown = function(mapBrowserEvent) { if(!ol.events.condition.mouseOnly(mapBrowserEvent)) { return false } var browserEvent = mapBrowserEvent.browserEvent; if(browserEvent.isMouseActionButton() && this.condition_(mapBrowserEvent)) { this.startPixel_ = mapBrowserEvent.pixel; this.box_.setMap(mapBrowserEvent.map); this.box_.setPixels(this.startPixel_, this.startPixel_); this.dispatchEvent(new ol.DragBoxEvent(ol.DragBoxEventType.BOXSTART, mapBrowserEvent.coordinate)); return true }else { return false } }; ol.interaction.DragBox.prototype.shouldStopEvent = goog.functions.identity; goog.provide("goog.color.names"); goog.color.names = {"aliceblue":"#f0f8ff", "antiquewhite":"#faebd7", "aqua":"#00ffff", "aquamarine":"#7fffd4", "azure":"#f0ffff", "beige":"#f5f5dc", "bisque":"#ffe4c4", "black":"#000000", "blanchedalmond":"#ffebcd", "blue":"#0000ff", "blueviolet":"#8a2be2", "brown":"#a52a2a", "burlywood":"#deb887", "cadetblue":"#5f9ea0", "chartreuse":"#7fff00", "chocolate":"#d2691e", "coral":"#ff7f50", "cornflowerblue":"#6495ed", "cornsilk":"#fff8dc", "crimson":"#dc143c", "cyan":"#00ffff", "darkblue":"#00008b", "darkcyan":"#008b8b", "darkgoldenrod":"#b8860b", "darkgray":"#a9a9a9", "darkgreen":"#006400", "darkgrey":"#a9a9a9", "darkkhaki":"#bdb76b", "darkmagenta":"#8b008b", "darkolivegreen":"#556b2f", "darkorange":"#ff8c00", "darkorchid":"#9932cc", "darkred":"#8b0000", "darksalmon":"#e9967a", "darkseagreen":"#8fbc8f", "darkslateblue":"#483d8b", "darkslategray":"#2f4f4f", "darkslategrey":"#2f4f4f", "darkturquoise":"#00ced1", "darkviolet":"#9400d3", "deeppink":"#ff1493", "deepskyblue":"#00bfff", "dimgray":"#696969", "dimgrey":"#696969", "dodgerblue":"#1e90ff", "firebrick":"#b22222", "floralwhite":"#fffaf0", "forestgreen":"#228b22", "fuchsia":"#ff00ff", "gainsboro":"#dcdcdc", "ghostwhite":"#f8f8ff", "gold":"#ffd700", "goldenrod":"#daa520", "gray":"#808080", "green":"#008000", "greenyellow":"#adff2f", "grey":"#808080", "honeydew":"#f0fff0", "hotpink":"#ff69b4", "indianred":"#cd5c5c", "indigo":"#4b0082", "ivory":"#fffff0", "khaki":"#f0e68c", "lavender":"#e6e6fa", "lavenderblush":"#fff0f5", "lawngreen":"#7cfc00", "lemonchiffon":"#fffacd", "lightblue":"#add8e6", "lightcoral":"#f08080", "lightcyan":"#e0ffff", "lightgoldenrodyellow":"#fafad2", "lightgray":"#d3d3d3", "lightgreen":"#90ee90", "lightgrey":"#d3d3d3", "lightpink":"#ffb6c1", "lightsalmon":"#ffa07a", "lightseagreen":"#20b2aa", "lightskyblue":"#87cefa", "lightslategray":"#778899", "lightslategrey":"#778899", "lightsteelblue":"#b0c4de", "lightyellow":"#ffffe0", "lime":"#00ff00", "limegreen":"#32cd32", "linen":"#faf0e6", "magenta":"#ff00ff", "maroon":"#800000", "mediumaquamarine":"#66cdaa", "mediumblue":"#0000cd", "mediumorchid":"#ba55d3", "mediumpurple":"#9370db", "mediumseagreen":"#3cb371", "mediumslateblue":"#7b68ee", "mediumspringgreen":"#00fa9a", "mediumturquoise":"#48d1cc", "mediumvioletred":"#c71585", "midnightblue":"#191970", "mintcream":"#f5fffa", "mistyrose":"#ffe4e1", "moccasin":"#ffe4b5", "navajowhite":"#ffdead", "navy":"#000080", "oldlace":"#fdf5e6", "olive":"#808000", "olivedrab":"#6b8e23", "orange":"#ffa500", "orangered":"#ff4500", "orchid":"#da70d6", "palegoldenrod":"#eee8aa", "palegreen":"#98fb98", "paleturquoise":"#afeeee", "palevioletred":"#db7093", "papayawhip":"#ffefd5", "peachpuff":"#ffdab9", "peru":"#cd853f", "pink":"#ffc0cb", "plum":"#dda0dd", "powderblue":"#b0e0e6", "purple":"#800080", "red":"#ff0000", "rosybrown":"#bc8f8f", "royalblue":"#4169e1", "saddlebrown":"#8b4513", "salmon":"#fa8072", "sandybrown":"#f4a460", "seagreen":"#2e8b57", "seashell":"#fff5ee", "sienna":"#a0522d", "silver":"#c0c0c0", "skyblue":"#87ceeb", "slateblue":"#6a5acd", "slategray":"#708090", "slategrey":"#708090", "snow":"#fffafa", "springgreen":"#00ff7f", "steelblue":"#4682b4", "tan":"#d2b48c", "teal":"#008080", "thistle":"#d8bfd8", "tomato":"#ff6347", "turquoise":"#40e0d0", "violet":"#ee82ee", "wheat":"#f5deb3", "white":"#ffffff", "whitesmoke":"#f5f5f5", "yellow":"#ffff00", "yellowgreen":"#9acd32"}; goog.provide("goog.color"); goog.require("goog.color.names"); goog.require("goog.math"); goog.color.Rgb; goog.color.Hsv; goog.color.Hsl; goog.color.parse = function(str) { var result = {}; str = String(str); var maybeHex = goog.color.prependHashIfNecessaryHelper(str); if(goog.color.isValidHexColor_(maybeHex)) { result.hex = goog.color.normalizeHex(maybeHex); result.type = "hex"; return result }else { var rgb = goog.color.isValidRgbColor_(str); if(rgb.length) { result.hex = goog.color.rgbArrayToHex(rgb); result.type = "rgb"; return result }else { if(goog.color.names) { var hex = goog.color.names[str.toLowerCase()]; if(hex) { result.hex = hex; result.type = "named"; return result } } } } throw Error(str + " is not a valid color string"); }; goog.color.isValidColor = function(str) { var maybeHex = goog.color.prependHashIfNecessaryHelper(str); return!!(goog.color.isValidHexColor_(maybeHex) || goog.color.isValidRgbColor_(str).length || goog.color.names && goog.color.names[str.toLowerCase()]) }; goog.color.parseRgb = function(str) { var rgb = goog.color.isValidRgbColor_(str); if(!rgb.length) { throw Error(str + " is not a valid RGB color"); } return rgb }; goog.color.hexToRgbStyle = function(hexColor) { return goog.color.rgbStyle_(goog.color.hexToRgb(hexColor)) }; goog.color.hexTripletRe_ = /#(.)(.)(.)/; goog.color.normalizeHex = function(hexColor) { if(!goog.color.isValidHexColor_(hexColor)) { throw Error("'" + hexColor + "' is not a valid hex color"); } if(hexColor.length == 4) { hexColor = hexColor.replace(goog.color.hexTripletRe_, "#$1$1$2$2$3$3") } return hexColor.toLowerCase() }; goog.color.hexToRgb = function(hexColor) { hexColor = goog.color.normalizeHex(hexColor); var r = parseInt(hexColor.substr(1, 2), 16); var g = parseInt(hexColor.substr(3, 2), 16); var b = parseInt(hexColor.substr(5, 2), 16); return[r, g, b] }; goog.color.rgbToHex = function(r, g, b) { r = Number(r); g = Number(g); b = Number(b); if(isNaN(r) || r < 0 || r > 255 || isNaN(g) || g < 0 || g > 255 || isNaN(b) || b < 0 || b > 255) { throw Error('"(' + r + "," + g + "," + b + '") is not a valid RGB color'); } var hexR = goog.color.prependZeroIfNecessaryHelper(r.toString(16)); var hexG = goog.color.prependZeroIfNecessaryHelper(g.toString(16)); var hexB = goog.color.prependZeroIfNecessaryHelper(b.toString(16)); return"#" + hexR + hexG + hexB }; goog.color.rgbArrayToHex = function(rgb) { return goog.color.rgbToHex(rgb[0], rgb[1], rgb[2]) }; goog.color.rgbToHsl = function(r, g, b) { var normR = r / 255; var normG = g / 255; var normB = b / 255; var max = Math.max(normR, normG, normB); var min = Math.min(normR, normG, normB); var h = 0; var s = 0; var l = 0.5 * (max + min); if(max != min) { if(max == normR) { h = 60 * (normG - normB) / (max - min) }else { if(max == normG) { h = 60 * (normB - normR) / (max - min) + 120 }else { if(max == normB) { h = 60 * (normR - normG) / (max - min) + 240 } } } if(0 < l && l <= 0.5) { s = (max - min) / (2 * l) }else { s = (max - min) / (2 - 2 * l) } } return[Math.round(h + 360) % 360, s, l] }; goog.color.rgbArrayToHsl = function(rgb) { return goog.color.rgbToHsl(rgb[0], rgb[1], rgb[2]) }; goog.color.hueToRgb_ = function(v1, v2, vH) { if(vH < 0) { vH += 1 }else { if(vH > 1) { vH -= 1 } } if(6 * vH < 1) { return v1 + (v2 - v1) * 6 * vH }else { if(2 * vH < 1) { return v2 }else { if(3 * vH < 2) { return v1 + (v2 - v1) * (2 / 3 - vH) * 6 } } } return v1 }; goog.color.hslToRgb = function(h, s, l) { var r = 0; var g = 0; var b = 0; var normH = h / 360; if(s == 0) { r = g = b = l * 255 }else { var temp1 = 0; var temp2 = 0; if(l < 0.5) { temp2 = l * (1 + s) }else { temp2 = l + s - s * l } temp1 = 2 * l - temp2; r = 255 * goog.color.hueToRgb_(temp1, temp2, normH + 1 / 3); g = 255 * goog.color.hueToRgb_(temp1, temp2, normH); b = 255 * goog.color.hueToRgb_(temp1, temp2, normH - 1 / 3) } return[Math.round(r), Math.round(g), Math.round(b)] }; goog.color.hslArrayToRgb = function(hsl) { return goog.color.hslToRgb(hsl[0], hsl[1], hsl[2]) }; goog.color.validHexColorRe_ = /^#(?:[0-9a-f]{3}){1,2}$/i; goog.color.isValidHexColor_ = function(str) { return goog.color.validHexColorRe_.test(str) }; goog.color.normalizedHexColorRe_ = /^#[0-9a-f]{6}$/; goog.color.isNormalizedHexColor_ = function(str) { return goog.color.normalizedHexColorRe_.test(str) }; goog.color.rgbColorRe_ = /^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i; goog.color.isValidRgbColor_ = function(str) { var regExpResultArray = str.match(goog.color.rgbColorRe_); if(regExpResultArray) { var r = Number(regExpResultArray[1]); var g = Number(regExpResultArray[2]); var b = Number(regExpResultArray[3]); if(r >= 0 && r <= 255 && g >= 0 && g <= 255 && b >= 0 && b <= 255) { return[r, g, b] } } return[] }; goog.color.prependZeroIfNecessaryHelper = function(hex) { return hex.length == 1 ? "0" + hex : hex }; goog.color.prependHashIfNecessaryHelper = function(str) { return str.charAt(0) == "#" ? str : "#" + str }; goog.color.rgbStyle_ = function(rgb) { return"rgb(" + rgb.join(",") + ")" }; goog.color.hsvToRgb = function(h, s, brightness) { var red = 0; var green = 0; var blue = 0; if(s == 0) { red = brightness; green = brightness; blue = brightness }else { var sextant = Math.floor(h / 60); var remainder = h / 60 - sextant; var val1 = brightness * (1 - s); var val2 = brightness * (1 - s * remainder); var val3 = brightness * (1 - s * (1 - remainder)); switch(sextant) { case 1: red = val2; green = brightness; blue = val1; break; case 2: red = val1; green = brightness; blue = val3; break; case 3: red = val1; green = val2; blue = brightness; break; case 4: red = val3; green = val1; blue = brightness; break; case 5: red = brightness; green = val1; blue = val2; break; case 6: ; case 0: red = brightness; green = val3; blue = val1; break } } return[Math.floor(red), Math.floor(green), Math.floor(blue)] }; goog.color.rgbToHsv = function(red, green, blue) { var max = Math.max(Math.max(red, green), blue); var min = Math.min(Math.min(red, green), blue); var hue; var saturation; var value = max; if(min == max) { hue = 0; saturation = 0 }else { var delta = max - min; saturation = delta / max; if(red == max) { hue = (green - blue) / delta }else { if(green == max) { hue = 2 + (blue - red) / delta }else { hue = 4 + (red - green) / delta } } hue *= 60; if(hue < 0) { hue += 360 } if(hue > 360) { hue -= 360 } } return[hue, saturation, value] }; goog.color.rgbArrayToHsv = function(rgb) { return goog.color.rgbToHsv(rgb[0], rgb[1], rgb[2]) }; goog.color.hsvArrayToRgb = function(hsv) { return goog.color.hsvToRgb(hsv[0], hsv[1], hsv[2]) }; goog.color.hexToHsl = function(hex) { var rgb = goog.color.hexToRgb(hex); return goog.color.rgbToHsl(rgb[0], rgb[1], rgb[2]) }; goog.color.hslToHex = function(h, s, l) { return goog.color.rgbArrayToHex(goog.color.hslToRgb(h, s, l)) }; goog.color.hslArrayToHex = function(hsl) { return goog.color.rgbArrayToHex(goog.color.hslToRgb(hsl[0], hsl[1], hsl[2])) }; goog.color.hexToHsv = function(hex) { return goog.color.rgbArrayToHsv(goog.color.hexToRgb(hex)) }; goog.color.hsvToHex = function(h, s, v) { return goog.color.rgbArrayToHex(goog.color.hsvToRgb(h, s, v)) }; goog.color.hsvArrayToHex = function(hsv) { return goog.color.hsvToHex(hsv[0], hsv[1], hsv[2]) }; goog.color.hslDistance = function(hsl1, hsl2) { var sl1, sl2; if(hsl1[2] <= 0.5) { sl1 = hsl1[1] * hsl1[2] }else { sl1 = hsl1[1] * (1 - hsl1[2]) } if(hsl2[2] <= 0.5) { sl2 = hsl2[1] * hsl2[2] }else { sl2 = hsl2[1] * (1 - hsl2[2]) } var h1 = hsl1[0] / 360; var h2 = hsl2[0] / 360; var dh = (h1 - h2) * 2 * Math.PI; return(hsl1[2] - hsl2[2]) * (hsl1[2] - hsl2[2]) + sl1 * sl1 + sl2 * sl2 - 2 * sl1 * sl2 * Math.cos(dh) }; goog.color.blend = function(rgb1, rgb2, factor) { factor = goog.math.clamp(factor, 0, 1); return[Math.round(factor * rgb1[0] + (1 - factor) * rgb2[0]), Math.round(factor * rgb1[1] + (1 - factor) * rgb2[1]), Math.round(factor * rgb1[2] + (1 - factor) * rgb2[2])] }; goog.color.darken = function(rgb, factor) { var black = [0, 0, 0]; return goog.color.blend(black, rgb, factor) }; goog.color.lighten = function(rgb, factor) { var white = [255, 255, 255]; return goog.color.blend(white, rgb, factor) }; goog.color.highContrast = function(prime, suggestions) { var suggestionsWithDiff = []; for(var i = 0;i < suggestions.length;i++) { suggestionsWithDiff.push({color:suggestions[i], diff:goog.color.yiqBrightnessDiff_(suggestions[i], prime) + goog.color.colorDiff_(suggestions[i], prime)}) } suggestionsWithDiff.sort(function(a, b) { return b.diff - a.diff }); return suggestionsWithDiff[0].color }; goog.color.yiqBrightness_ = function(rgb) { return Math.round((rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1E3) }; goog.color.yiqBrightnessDiff_ = function(rgb1, rgb2) { return Math.abs(goog.color.yiqBrightness_(rgb1) - goog.color.yiqBrightness_(rgb2)) }; goog.color.colorDiff_ = function(rgb1, rgb2) { return Math.abs(rgb1[0] - rgb2[0]) + Math.abs(rgb1[1] - rgb2[1]) + Math.abs(rgb1[2] - rgb2[2]) }; goog.provide("ol.color"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.color"); goog.require("goog.color.names"); goog.require("goog.math"); goog.require("goog.vec.Mat4"); goog.require("ol"); ol.Color; ol.color.hexColorRe_ = /^#(?:[0-9a-f]{3}){1,2}$/i; ol.color.rgbColorRe_ = /^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i; ol.color.rgbaColorRe_ = /^(?:rgba)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|1|0\.\d{0,10})\)$/i; ol.color.blend = function(dst, src, opt_color) { var out = goog.isDef(opt_color) ? opt_color : []; var dstA = dst[3]; var srcA = dst[3]; if(dstA == 1) { out[0] = src[0] * srcA + dst[0] * (1 - srcA) + 0.5 | 0; out[1] = src[1] * srcA + dst[1] * (1 - srcA) + 0.5 | 0; out[2] = src[2] * srcA + dst[2] * (1 - srcA) + 0.5 | 0; out[4] = 1 }else { if(srcA === 0) { out[0] = dst[0]; out[1] = dst[1]; out[2] = dst[2]; out[3] = dstA }else { var outA = srcA + dstA * (1 - srcA); if(outA === 0) { out[0] = 0; out[1] = 0; out[2] = 0; out[3] = 0 }else { out[0] = (src[0] * srcA + dst[0] * dstA * (1 - srcA)) / outA + 0.5 | 0; out[1] = (src[1] * srcA + dst[1] * dstA * (1 - srcA)) / outA + 0.5 | 0; out[2] = (src[2] * srcA + dst[2] * dstA * (1 - srcA)) / outA + 0.5 | 0; out[3] = outA } } } goog.asserts.assert(ol.color.isValid(out)); return out }; ol.color.asArray = function(color) { if(goog.isArray(color)) { return color }else { goog.asserts.assert(goog.isString(color)); return ol.color.fromString(color) } }; ol.color.asString = function(color) { if(goog.isString(color)) { return color }else { goog.asserts.assert(goog.isArray(color)); return ol.color.toString(color) } }; ol.color.equals = function(color1, color2) { return color1 === color2 || color1[0] == color2[0] && color1[1] == color2[1] && color1[2] == color2[2] && color1[3] == color2[3] }; ol.color.fromString = function() { var MAX_CACHE_SIZE = 1024; var cache = {}; var cacheSize = 0; return function(s, opt_color) { var color; if(cache.hasOwnProperty(s)) { color = cache[s] }else { if(cacheSize >= MAX_CACHE_SIZE) { var i = 0; var key; for(key in cache) { if((i++ & 3) === 0) { delete cache[key]; --cacheSize } } } color = ol.color.fromStringInternal_(s); cache[s] = color; ++cacheSize } return ol.color.returnOrUpdate(color, opt_color) } }(); ol.color.fromStringInternal_ = function(s) { var isHex = false; if(ol.ENABLE_NAMED_COLORS && goog.color.names.hasOwnProperty(s)) { s = (goog.color.names[s]); isHex = true } var r, g, b, a, color, match; if(isHex || (match = ol.color.hexColorRe_.exec(s))) { var n = s.length - 1; goog.asserts.assert(n == 3 || n == 6); var d = n == 3 ? 1 : 2; r = parseInt(s.substr(1 + 0 * d, d), 16); g = parseInt(s.substr(1 + 1 * d, d), 16); b = parseInt(s.substr(1 + 2 * d, d), 16); if(d == 1) { r = (r << 4) + r; g = (g << 4) + g; b = (b << 4) + b } a = 1; color = [r, g, b, a]; goog.asserts.assert(ol.color.isValid(color)); return color }else { if(match = ol.color.rgbaColorRe_.exec(s)) { r = Number(match[1]); g = Number(match[2]); b = Number(match[3]); a = Number(match[4]); color = [r, g, b, a]; return ol.color.normalize(color, color) }else { if(match = ol.color.rgbColorRe_.exec(s)) { r = Number(match[1]); g = Number(match[2]); b = Number(match[3]); color = [r, g, b, 1]; return ol.color.normalize(color, color) }else { throw new Error(s + " is not a valid color"); } } } }; ol.color.isValid = function(color) { return 0 <= color[0] && color[0] < 256 && 0 <= color[1] && color[1] < 256 && 0 <= color[2] && color[2] < 256 && 0 <= color[3] && color[3] <= 1 }; ol.color.normalize = function(color, opt_color) { var result = goog.isDef(opt_color) ? opt_color : []; result[0] = goog.math.clamp(color[0] + 0.5 | 0, 0, 255); result[1] = goog.math.clamp(color[1] + 0.5 | 0, 0, 255); result[2] = goog.math.clamp(color[2] + 0.5 | 0, 0, 255); result[3] = goog.math.clamp(color[3], 0, 1); return result }; ol.color.returnOrUpdate = function(color, opt_color) { if(goog.isDef(opt_color)) { opt_color[0] = color[0]; opt_color[1] = color[1]; opt_color[2] = color[2]; opt_color[3] = color[3]; return opt_color }else { return color } }; ol.color.toString = function(color) { var r = color[0]; if(r != (r | 0)) { r = r + 0.5 | 0 } var g = color[1]; if(g != (g | 0)) { g = g + 0.5 | 0 } var b = color[2]; if(b != (b | 0)) { b = b + 0.5 | 0 } var a = color[3]; return"rgba(" + r + "," + g + "," + b + "," + a + ")" }; ol.color.transform = function(color, transform, opt_color) { var result = goog.isDef(opt_color) ? opt_color : []; result = goog.vec.Mat4.multVec3(transform, color, result); goog.asserts.assert(goog.isArray(result)); result[3] = color[3]; return ol.color.normalize(result, result) }; ol.color.stringOrColorEquals = function(color1, color2) { if(color1 === color2 || color1 == color2) { return true } if(goog.isString(color1)) { color1 = ol.color.fromString(color1) } if(goog.isString(color2)) { color2 = ol.color.fromString(color2) } return ol.color.equals(color1, color2) }; goog.provide("ol.render.canvas"); ol.render.canvas.FillState; ol.render.canvas.StrokeState; ol.render.canvas.TextState; ol.render.canvas.defaultFont = "10px sans-serif"; ol.render.canvas.defaultFillStyle = [0, 0, 0, 1]; ol.render.canvas.defaultLineCap = "round"; ol.render.canvas.defaultLineDash = []; ol.render.canvas.defaultLineJoin = "round"; ol.render.canvas.defaultMiterLimit = 10; ol.render.canvas.defaultStrokeStyle = [0, 0, 0, 1]; ol.render.canvas.defaultTextAlign = "center"; ol.render.canvas.defaultTextBaseline = "middle"; ol.render.canvas.defaultLineWidth = 1; goog.provide("ol.style.Fill"); goog.require("ol.color"); ol.style.Fill = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.color_ = goog.isDef(options.color) ? options.color : null }; ol.style.Fill.prototype.getColor = function() { return this.color_ }; goog.provide("ol.style.Image"); goog.provide("ol.style.ImageState"); goog.require("goog.array"); ol.style.ImageState = {IDLE:0, LOADING:1, LOADED:2, ERROR:3}; ol.style.ImageOptions; ol.style.Image = function(options) { this.opacity_ = options.opacity; this.rotateWithView_ = options.rotateWithView; this.rotation_ = options.rotation; this.scale_ = options.scale; this.snapToPixel_ = options.snapToPixel }; ol.style.Image.prototype.getOpacity = function() { return this.opacity_ }; ol.style.Image.prototype.getRotateWithView = function() { return this.rotateWithView_ }; ol.style.Image.prototype.getRotation = function() { return this.rotation_ }; ol.style.Image.prototype.getScale = function() { return this.scale_ }; ol.style.Image.prototype.getSnapToPixel = function() { return this.snapToPixel_ }; ol.style.Image.prototype.getAnchor = goog.abstractMethod; ol.style.Image.prototype.getImage = goog.abstractMethod; ol.style.Image.prototype.getImageState = goog.abstractMethod; ol.style.Image.prototype.getHitDetectionImage = goog.abstractMethod; ol.style.Image.prototype.getSize = goog.abstractMethod; ol.style.Image.prototype.listenImageChange = goog.abstractMethod; ol.style.Image.prototype.load = goog.abstractMethod; ol.style.Image.prototype.unlistenImageChange = goog.abstractMethod; goog.provide("ol.style.Stroke"); goog.require("ol.color"); ol.style.Stroke = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.color_ = goog.isDef(options.color) ? options.color : null; this.lineCap_ = options.lineCap; this.lineDash_ = goog.isDef(options.lineDash) ? options.lineDash : null; this.lineJoin_ = options.lineJoin; this.miterLimit_ = options.miterLimit; this.width_ = options.width }; ol.style.Stroke.prototype.getColor = function() { return this.color_ }; ol.style.Stroke.prototype.getLineCap = function() { return this.lineCap_ }; ol.style.Stroke.prototype.getLineDash = function() { return this.lineDash_ }; ol.style.Stroke.prototype.getLineJoin = function() { return this.lineJoin_ }; ol.style.Stroke.prototype.getMiterLimit = function() { return this.miterLimit_ }; ol.style.Stroke.prototype.getWidth = function() { return this.width_ }; goog.provide("ol.style.Circle"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("ol.color"); goog.require("ol.render.canvas"); goog.require("ol.style.Fill"); goog.require("ol.style.Image"); goog.require("ol.style.ImageState"); goog.require("ol.style.Stroke"); ol.style.Circle = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.canvas_ = (goog.dom.createElement(goog.dom.TagName.CANVAS)); this.hitDetectionCanvas_ = null; this.fill_ = goog.isDef(options.fill) ? options.fill : null; this.radius_ = options.radius; this.stroke_ = goog.isDef(options.stroke) ? options.stroke : null; var size = this.render_(); this.anchor_ = [size / 2, size / 2]; this.size_ = [size, size]; goog.base(this, {opacity:1, rotateWithView:false, rotation:0, scale:1, snapToPixel:undefined}) }; goog.inherits(ol.style.Circle, ol.style.Image); ol.style.Circle.prototype.getAnchor = function() { return this.anchor_ }; ol.style.Circle.prototype.getFill = function() { return this.fill_ }; ol.style.Circle.prototype.getHitDetectionImage = function(pixelRatio) { return this.hitDetectionCanvas_ }; ol.style.Circle.prototype.getImage = function(pixelRatio) { return this.canvas_ }; ol.style.Circle.prototype.getImageState = function() { return ol.style.ImageState.LOADED }; ol.style.Circle.prototype.getRadius = function() { return this.radius_ }; ol.style.Circle.prototype.getSize = function() { return this.size_ }; ol.style.Circle.prototype.getStroke = function() { return this.stroke_ }; ol.style.Circle.prototype.listenImageChange = goog.nullFunction; ol.style.Circle.prototype.load = goog.nullFunction; ol.style.Circle.prototype.unlistenImageChange = goog.nullFunction; ol.style.Circle.prototype.render_ = function() { var canvas = this.canvas_; var strokeStyle, strokeWidth; if(goog.isNull(this.stroke_)) { strokeWidth = 0 }else { strokeStyle = ol.color.asString(this.stroke_.getColor()); strokeWidth = this.stroke_.getWidth(); if(!goog.isDef(strokeWidth)) { strokeWidth = ol.render.canvas.defaultLineWidth } } var size = 2 * (this.radius_ + strokeWidth) + 1; canvas.height = size; canvas.width = size; var context = (canvas.getContext("2d")); context.arc(size / 2, size / 2, this.radius_, 0, 2 * Math.PI, true); if(!goog.isNull(this.fill_)) { context.fillStyle = ol.color.asString(this.fill_.getColor()); context.fill() } if(!goog.isNull(this.stroke_)) { context.strokeStyle = strokeStyle; context.lineWidth = strokeWidth; context.stroke() } if(!goog.isNull(this.fill_)) { this.hitDetectionCanvas_ = canvas }else { this.hitDetectionCanvas_ = (goog.dom.createElement(goog.dom.TagName.CANVAS)); canvas = this.hitDetectionCanvas_; canvas.height = size; canvas.width = size; context = (canvas.getContext("2d")); context.arc(size / 2, size / 2, this.radius_, 0, 2 * Math.PI, true); context.fillStyle = ol.render.canvas.defaultFillStyle; context.fill(); if(!goog.isNull(this.stroke_)) { context.strokeStyle = strokeStyle; context.lineWidth = strokeWidth; context.stroke() } } return size }; goog.provide("ol.style.Style"); goog.require("ol.style.Fill"); goog.require("ol.style.Image"); ol.style.Style = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.fill_ = goog.isDef(options.fill) ? options.fill : null; this.image_ = goog.isDef(options.image) ? options.image : null; this.stroke_ = goog.isDef(options.stroke) ? options.stroke : null; this.text_ = goog.isDef(options.text) ? options.text : null; this.zIndex_ = options.zIndex }; ol.style.Style.prototype.getFill = function() { return this.fill_ }; ol.style.Style.prototype.getImage = function() { return this.image_ }; ol.style.Style.prototype.getStroke = function() { return this.stroke_ }; ol.style.Style.prototype.getText = function() { return this.text_ }; ol.style.Style.prototype.getZIndex = function() { return this.zIndex_ }; goog.provide("ol.Feature"); goog.provide("ol.feature"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.functions"); goog.require("ol.Object"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryType"); goog.require("ol.style.Circle"); goog.require("ol.style.Fill"); goog.require("ol.style.Stroke"); goog.require("ol.style.Style"); ol.Feature = function(opt_geometryOrValues) { goog.base(this); this.id_ = undefined; this.geometryName_ = "geometry"; this.style_ = null; this.styleFunction_ = undefined; this.geometryChangeKey_ = null; goog.events.listen(this, ol.Object.getChangeEventType(this.geometryName_), this.handleGeometryChanged_, false, this); if(goog.isDefAndNotNull(opt_geometryOrValues)) { if(opt_geometryOrValues instanceof ol.geom.Geometry) { var geometry = (opt_geometryOrValues); this.setGeometry(geometry) }else { goog.asserts.assert(goog.isObject(opt_geometryOrValues)); var values = (opt_geometryOrValues); this.setValues(values) } }else { this.setGeometry(null) } }; goog.inherits(ol.Feature, ol.Object); ol.Feature.prototype.getGeometry = function() { return(this.get(this.geometryName_)) }; goog.exportProperty(ol.Feature.prototype, "getGeometry", ol.Feature.prototype.getGeometry); ol.Feature.prototype.getId = function() { return this.id_ }; ol.Feature.prototype.getGeometryName = function() { return this.geometryName_ }; ol.Feature.prototype.getStyle = function() { return this.style_ }; ol.Feature.prototype.getStyleFunction = function() { return this.styleFunction_ }; ol.Feature.prototype.handleGeometryChange_ = function() { this.dispatchChangeEvent() }; ol.Feature.prototype.handleGeometryChanged_ = function() { if(!goog.isNull(this.geometryChangeKey_)) { goog.events.unlistenByKey(this.geometryChangeKey_); this.geometryChangeKey_ = null } var geometry = this.getGeometry(); if(goog.isDefAndNotNull(geometry)) { this.geometryChangeKey_ = goog.events.listen(geometry, goog.events.EventType.CHANGE, this.handleGeometryChange_, false, this); this.dispatchChangeEvent() } }; ol.Feature.prototype.setGeometry = function(geometry) { this.set(this.geometryName_, geometry) }; goog.exportProperty(ol.Feature.prototype, "setGeometry", ol.Feature.prototype.setGeometry); ol.Feature.prototype.setStyle = function(style) { this.style_ = style; this.styleFunction_ = ol.feature.createFeatureStyleFunction(style); this.dispatchChangeEvent() }; ol.Feature.prototype.setId = function(id) { this.id_ = id }; ol.Feature.prototype.setGeometryName = function(name) { goog.events.unlisten(this, ol.Object.getChangeEventType(this.geometryName_), this.handleGeometryChanged_, false, this); this.geometryName_ = name; goog.events.listen(this, ol.Object.getChangeEventType(this.geometryName_), this.handleGeometryChanged_, false, this); this.handleGeometryChanged_() }; ol.feature.FeatureStyleFunction; ol.feature.defaultFeatureStyleFunction = function(resolution) { var fill = new ol.style.Fill({color:"rgba(255,255,255,0.4)"}); var stroke = new ol.style.Stroke({color:"#3399CC", width:1.25}); var styles = [new ol.style.Style({image:new ol.style.Circle({fill:fill, stroke:stroke, radius:5}), fill:fill, stroke:stroke})]; ol.feature.defaultFeatureStyleFunction = (function(resolution) { return styles }); return styles }; ol.feature.StyleFunction; ol.feature.defaultStyleFunction = function(feature, resolution) { var featureStyleFunction = feature.getStyleFunction(); if(!goog.isDef(featureStyleFunction)) { featureStyleFunction = ol.feature.defaultFeatureStyleFunction } return featureStyleFunction.call(feature, resolution) }; ol.feature.createFeatureStyleFunction = function(obj) { var styleFunction; if(goog.isFunction(obj)) { styleFunction = (obj) }else { var styles; if(goog.isArray(obj)) { styles = obj }else { goog.asserts.assertInstanceof(obj, ol.style.Style); styles = [obj] } styleFunction = goog.functions.constant(styles) } return styleFunction }; ol.feature.createStyleFunction = function(obj) { var styleFunction; if(goog.isFunction(obj)) { styleFunction = (obj) }else { var styles; if(goog.isArray(obj)) { styles = obj }else { goog.asserts.assertInstanceof(obj, ol.style.Style); styles = [obj] } styleFunction = goog.functions.constant(styles) } return styleFunction }; ol.feature.createDefaultEditingStyles = function() { var styles = {}; var white = [255, 255, 255, 1]; var blue = [0, 153, 255, 1]; var width = 3; styles[ol.geom.GeometryType.POLYGON] = [new ol.style.Style({fill:new ol.style.Fill({color:[255, 255, 255, 0.5]})})]; styles[ol.geom.GeometryType.MULTI_POLYGON] = styles[ol.geom.GeometryType.POLYGON]; styles[ol.geom.GeometryType.LINE_STRING] = [new ol.style.Style({stroke:new ol.style.Stroke({color:white, width:width + 2})}), new ol.style.Style({stroke:new ol.style.Stroke({color:blue, width:width})})]; styles[ol.geom.GeometryType.MULTI_LINE_STRING] = styles[ol.geom.GeometryType.LINE_STRING]; styles[ol.geom.GeometryType.POINT] = [new ol.style.Style({image:new ol.style.Circle({radius:width * 2, fill:new ol.style.Fill({color:blue}), stroke:new ol.style.Stroke({color:white, width:width / 2})}), zIndex:Infinity})]; styles[ol.geom.GeometryType.MULTI_POINT] = styles[ol.geom.GeometryType.POINT]; styles[ol.geom.GeometryType.GEOMETRY_COLLECTION] = styles[ol.geom.GeometryType.POLYGON].concat(styles[ol.geom.GeometryType.POINT]); return styles }; goog.provide("ol.FeatureOverlay"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.Collection"); goog.require("ol.CollectionEventType"); goog.require("ol.Feature"); goog.require("ol.feature"); goog.require("ol.render.EventType"); ol.FeatureOverlay = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.features_ = null; this.featuresListenerKeys_ = null; this.featureChangeListenerKeys_ = null; this.map_ = null; this.postComposeListenerKey_ = null; this.style_ = null; this.styleFunction_ = goog.isDef(options.style) ? ol.feature.createStyleFunction(options.style) : undefined; if(goog.isDef(options.features)) { if(goog.isArray(options.features)) { this.setFeatures(new ol.Collection(goog.array.clone(options.features))) }else { goog.asserts.assertInstanceof(options.features, ol.Collection); this.setFeatures(options.features) } }else { this.setFeatures(new ol.Collection) } if(goog.isDef(options.map)) { this.setMap(options.map) } }; ol.FeatureOverlay.prototype.addFeature = function(feature) { this.features_.push(feature) }; ol.FeatureOverlay.prototype.getFeatures = function() { return this.features_ }; ol.FeatureOverlay.prototype.handleFeatureChange_ = function() { this.render_() }; ol.FeatureOverlay.prototype.handleFeaturesAdd_ = function(collectionEvent) { goog.asserts.assert(!goog.isNull(this.featureChangeListenerKeys_)); var feature = (collectionEvent.element); this.featureChangeListenerKeys_[goog.getUid(feature).toString()] = goog.events.listen(feature, goog.events.EventType.CHANGE, this.handleFeatureChange_, false, this); this.render_() }; ol.FeatureOverlay.prototype.handleFeaturesRemove_ = function(collectionEvent) { goog.asserts.assert(!goog.isNull(this.featureChangeListenerKeys_)); var feature = (collectionEvent.element); var key = goog.getUid(feature).toString(); goog.events.unlistenByKey(this.featureChangeListenerKeys_[key]); delete this.featureChangeListenerKeys_[key]; this.render_() }; ol.FeatureOverlay.prototype.handleMapPostCompose_ = function(event) { if(goog.isNull(this.features_)) { return } var styleFunction = this.styleFunction_; if(!goog.isDef(styleFunction)) { styleFunction = ol.feature.defaultStyleFunction } var resolution = event.frameState.view2DState.resolution; var vectorContext = event.vectorContext; var i, ii, styles; this.features_.forEach(function(feature) { styles = styleFunction(feature, resolution); if(!goog.isDefAndNotNull(styles)) { return } ii = styles.length; for(i = 0;i < ii;++i) { vectorContext.drawFeature(feature, styles[i]) } }) }; ol.FeatureOverlay.prototype.removeFeature = function(feature) { this.features_.remove(feature) }; ol.FeatureOverlay.prototype.render_ = function() { if(!goog.isNull(this.map_)) { this.map_.render() } }; ol.FeatureOverlay.prototype.setFeatures = function(features) { if(!goog.isNull(this.featuresListenerKeys_)) { goog.array.forEach(this.featuresListenerKeys_, goog.events.unlistenByKey); this.featuresListenerKeys_ = null } if(!goog.isNull(this.featureChangeListenerKeys_)) { goog.array.forEach(goog.object.getValues(this.featureChangeListenerKeys_), goog.events.unlistenByKey); this.featureChangeListenerKeys_ = null } this.features_ = features; if(!goog.isNull(features)) { this.featuresListenerKeys_ = [goog.events.listen(features, ol.CollectionEventType.ADD, this.handleFeaturesAdd_, false, this), goog.events.listen(features, ol.CollectionEventType.REMOVE, this.handleFeaturesRemove_, false, this)]; this.featureChangeListenerKeys_ = {}; features.forEach(function(feature) { this.featureChangeListenerKeys_[goog.getUid(feature).toString()] = goog.events.listen(feature, goog.events.EventType.CHANGE, this.handleFeatureChange_, false, this) }, this) } this.render_() }; ol.FeatureOverlay.prototype.setMap = function(map) { if(!goog.isNull(this.postComposeListenerKey_)) { goog.events.unlistenByKey(this.postComposeListenerKey_); this.postComposeListenerKey_ = null } this.render_(); this.map_ = map; if(!goog.isNull(map)) { this.postComposeListenerKey_ = goog.events.listen(map, ol.render.EventType.POSTCOMPOSE, this.handleMapPostCompose_, false, this); map.render() } }; ol.FeatureOverlay.prototype.setStyle = function(style) { this.style_ = style; this.styleFunction_ = ol.feature.createStyleFunction(style); this.render_() }; ol.FeatureOverlay.prototype.getStyle = function() { return this.style_ }; ol.FeatureOverlay.prototype.getStyleFunction = function() { return this.styleFunction_ }; goog.provide("goog.structs"); goog.require("goog.array"); goog.require("goog.object"); goog.structs.getCount = function(col) { if(typeof col.getCount == "function") { return col.getCount() } if(goog.isArrayLike(col) || goog.isString(col)) { return col.length } return goog.object.getCount(col) }; goog.structs.getValues = function(col) { if(typeof col.getValues == "function") { return col.getValues() } if(goog.isString(col)) { return col.split("") } if(goog.isArrayLike(col)) { var rv = []; var l = col.length; for(var i = 0;i < l;i++) { rv.push(col[i]) } return rv } return goog.object.getValues(col) }; goog.structs.getKeys = function(col) { if(typeof col.getKeys == "function") { return col.getKeys() } if(typeof col.getValues == "function") { return undefined } if(goog.isArrayLike(col) || goog.isString(col)) { var rv = []; var l = col.length; for(var i = 0;i < l;i++) { rv.push(i) } return rv } return goog.object.getKeys(col) }; goog.structs.contains = function(col, val) { if(typeof col.contains == "function") { return col.contains(val) } if(typeof col.containsValue == "function") { return col.containsValue(val) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.contains((col), val) } return goog.object.containsValue(col, val) }; goog.structs.isEmpty = function(col) { if(typeof col.isEmpty == "function") { return col.isEmpty() } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.isEmpty((col)) } return goog.object.isEmpty(col) }; goog.structs.clear = function(col) { if(typeof col.clear == "function") { col.clear() }else { if(goog.isArrayLike(col)) { goog.array.clear((col)) }else { goog.object.clear(col) } } }; goog.structs.forEach = function(col, f, opt_obj) { if(typeof col.forEach == "function") { col.forEach(f, opt_obj) }else { if(goog.isArrayLike(col) || goog.isString(col)) { goog.array.forEach((col), f, opt_obj) }else { var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { f.call(opt_obj, values[i], keys && keys[i], col) } } } }; goog.structs.filter = function(col, f, opt_obj) { if(typeof col.filter == "function") { return col.filter(f, opt_obj) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.filter((col), f, opt_obj) } var rv; var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; if(keys) { rv = {}; for(var i = 0;i < l;i++) { if(f.call(opt_obj, values[i], keys[i], col)) { rv[keys[i]] = values[i] } } }else { rv = []; for(var i = 0;i < l;i++) { if(f.call(opt_obj, values[i], undefined, col)) { rv.push(values[i]) } } } return rv }; goog.structs.map = function(col, f, opt_obj) { if(typeof col.map == "function") { return col.map(f, opt_obj) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.map((col), f, opt_obj) } var rv; var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; if(keys) { rv = {}; for(var i = 0;i < l;i++) { rv[keys[i]] = f.call(opt_obj, values[i], keys[i], col) } }else { rv = []; for(var i = 0;i < l;i++) { rv[i] = f.call(opt_obj, values[i], undefined, col) } } return rv }; goog.structs.some = function(col, f, opt_obj) { if(typeof col.some == "function") { return col.some(f, opt_obj) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.some((col), f, opt_obj) } var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { if(f.call(opt_obj, values[i], keys && keys[i], col)) { return true } } return false }; goog.structs.every = function(col, f, opt_obj) { if(typeof col.every == "function") { return col.every(f, opt_obj) } if(goog.isArrayLike(col) || goog.isString(col)) { return goog.array.every((col), f, opt_obj) } var keys = goog.structs.getKeys(col); var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { if(!f.call(opt_obj, values[i], keys && keys[i], col)) { return false } } return true }; goog.provide("goog.iter"); goog.provide("goog.iter.Iterator"); goog.provide("goog.iter.StopIteration"); goog.require("goog.array"); goog.require("goog.asserts"); goog.iter.Iterable; if("StopIteration" in goog.global) { goog.iter.StopIteration = goog.global["StopIteration"] }else { goog.iter.StopIteration = Error("StopIteration") } goog.iter.Iterator = function() { }; goog.iter.Iterator.prototype.next = function() { throw goog.iter.StopIteration; }; goog.iter.Iterator.prototype.__iterator__ = function(opt_keys) { return this }; goog.iter.toIterator = function(iterable) { if(iterable instanceof goog.iter.Iterator) { return iterable } if(typeof iterable.__iterator__ == "function") { return iterable.__iterator__(false) } if(goog.isArrayLike(iterable)) { var i = 0; var newIter = new goog.iter.Iterator; newIter.next = function() { while(true) { if(i >= iterable.length) { throw goog.iter.StopIteration; } if(!(i in iterable)) { i++; continue } return iterable[i++] } }; return newIter } throw Error("Not implemented"); }; goog.iter.forEach = function(iterable, f, opt_obj) { if(goog.isArrayLike(iterable)) { try { goog.array.forEach((iterable), f, opt_obj) }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; } } }else { iterable = goog.iter.toIterator(iterable); try { while(true) { f.call(opt_obj, iterable.next(), undefined, iterable) } }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; } } } }; goog.iter.filter = function(iterable, f, opt_obj) { var iterator = goog.iter.toIterator(iterable); var newIter = new goog.iter.Iterator; newIter.next = function() { while(true) { var val = iterator.next(); if(f.call(opt_obj, val, undefined, iterator)) { return val } } }; return newIter }; goog.iter.range = function(startOrStop, opt_stop, opt_step) { var start = 0; var stop = startOrStop; var step = opt_step || 1; if(arguments.length > 1) { start = startOrStop; stop = opt_stop } if(step == 0) { throw Error("Range step argument must not be zero"); } var newIter = new goog.iter.Iterator; newIter.next = function() { if(step > 0 && start >= stop || step < 0 && start <= stop) { throw goog.iter.StopIteration; } var rv = start; start += step; return rv }; return newIter }; goog.iter.join = function(iterable, deliminator) { return goog.iter.toArray(iterable).join(deliminator) }; goog.iter.map = function(iterable, f, opt_obj) { var iterator = goog.iter.toIterator(iterable); var newIter = new goog.iter.Iterator; newIter.next = function() { while(true) { var val = iterator.next(); return f.call(opt_obj, val, undefined, iterator) } }; return newIter }; goog.iter.reduce = function(iterable, f, val, opt_obj) { var rval = val; goog.iter.forEach(iterable, function(val) { rval = f.call(opt_obj, rval, val) }); return rval }; goog.iter.some = function(iterable, f, opt_obj) { iterable = goog.iter.toIterator(iterable); try { while(true) { if(f.call(opt_obj, iterable.next(), undefined, iterable)) { return true } } }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; } } return false }; goog.iter.every = function(iterable, f, opt_obj) { iterable = goog.iter.toIterator(iterable); try { while(true) { if(!f.call(opt_obj, iterable.next(), undefined, iterable)) { return false } } }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; } } return true }; goog.iter.chain = function(var_args) { var args = arguments; var length = args.length; var i = 0; var newIter = new goog.iter.Iterator; newIter.next = function() { try { if(i >= length) { throw goog.iter.StopIteration; } var current = goog.iter.toIterator(args[i]); return current.next() }catch(ex) { if(ex !== goog.iter.StopIteration || i >= length) { throw ex; }else { i++; return this.next() } } }; return newIter }; goog.iter.dropWhile = function(iterable, f, opt_obj) { var iterator = goog.iter.toIterator(iterable); var newIter = new goog.iter.Iterator; var dropping = true; newIter.next = function() { while(true) { var val = iterator.next(); if(dropping && f.call(opt_obj, val, undefined, iterator)) { continue }else { dropping = false } return val } }; return newIter }; goog.iter.takeWhile = function(iterable, f, opt_obj) { var iterator = goog.iter.toIterator(iterable); var newIter = new goog.iter.Iterator; var taking = true; newIter.next = function() { while(true) { if(taking) { var val = iterator.next(); if(f.call(opt_obj, val, undefined, iterator)) { return val }else { taking = false } }else { throw goog.iter.StopIteration; } } }; return newIter }; goog.iter.toArray = function(iterable) { if(goog.isArrayLike(iterable)) { return goog.array.toArray((iterable)) } iterable = goog.iter.toIterator(iterable); var array = []; goog.iter.forEach(iterable, function(val) { array.push(val) }); return array }; goog.iter.equals = function(iterable1, iterable2) { iterable1 = goog.iter.toIterator(iterable1); iterable2 = goog.iter.toIterator(iterable2); var b1, b2; try { while(true) { b1 = b2 = false; var val1 = iterable1.next(); b1 = true; var val2 = iterable2.next(); b2 = true; if(val1 != val2) { return false } } }catch(ex) { if(ex !== goog.iter.StopIteration) { throw ex; }else { if(b1 && !b2) { return false } if(!b2) { try { val2 = iterable2.next(); return false }catch(ex1) { if(ex1 !== goog.iter.StopIteration) { throw ex1; } return true } } } } return false }; goog.iter.nextOrValue = function(iterable, defaultValue) { try { return goog.iter.toIterator(iterable).next() }catch(e) { if(e != goog.iter.StopIteration) { throw e; } return defaultValue } }; goog.iter.product = function(var_args) { var someArrayEmpty = goog.array.some(arguments, function(arr) { return!arr.length }); if(someArrayEmpty || !arguments.length) { return new goog.iter.Iterator } var iter = new goog.iter.Iterator; var arrays = arguments; var indicies = goog.array.repeat(0, arrays.length); iter.next = function() { if(indicies) { var retVal = goog.array.map(indicies, function(valueIndex, arrayIndex) { return arrays[arrayIndex][valueIndex] }); for(var i = indicies.length - 1;i >= 0;i--) { goog.asserts.assert(indicies); if(indicies[i] < arrays[i].length - 1) { indicies[i]++; break } if(i == 0) { indicies = null; break } indicies[i] = 0 } return retVal } throw goog.iter.StopIteration; }; return iter }; goog.iter.cycle = function(iterable) { var baseIterator = goog.iter.toIterator(iterable); var cache = []; var cacheIndex = 0; var iter = new goog.iter.Iterator; var useCache = false; iter.next = function() { var returnElement = null; if(!useCache) { try { returnElement = baseIterator.next(); cache.push(returnElement); return returnElement }catch(e) { if(e != goog.iter.StopIteration || goog.array.isEmpty(cache)) { throw e; } useCache = true } } returnElement = cache[cacheIndex]; cacheIndex = (cacheIndex + 1) % cache.length; return returnElement }; return iter }; goog.provide("goog.structs.Map"); goog.require("goog.iter.Iterator"); goog.require("goog.iter.StopIteration"); goog.require("goog.object"); goog.structs.Map = function(opt_map, var_args) { this.map_ = {}; this.keys_ = []; var argLength = arguments.length; if(argLength > 1) { if(argLength % 2) { throw Error("Uneven number of arguments"); } for(var i = 0;i < argLength;i += 2) { this.set(arguments[i], arguments[i + 1]) } }else { if(opt_map) { this.addAll((opt_map)) } } }; goog.structs.Map.prototype.count_ = 0; goog.structs.Map.prototype.version_ = 0; goog.structs.Map.prototype.getCount = function() { return this.count_ }; goog.structs.Map.prototype.getValues = function() { this.cleanupKeysArray_(); var rv = []; for(var i = 0;i < this.keys_.length;i++) { var key = this.keys_[i]; rv.push(this.map_[key]) } return rv }; goog.structs.Map.prototype.getKeys = function() { this.cleanupKeysArray_(); return(this.keys_.concat()) }; goog.structs.Map.prototype.containsKey = function(key) { return goog.structs.Map.hasKey_(this.map_, key) }; goog.structs.Map.prototype.containsValue = function(val) { for(var i = 0;i < this.keys_.length;i++) { var key = this.keys_[i]; if(goog.structs.Map.hasKey_(this.map_, key) && this.map_[key] == val) { return true } } return false }; goog.structs.Map.prototype.equals = function(otherMap, opt_equalityFn) { if(this === otherMap) { return true } if(this.count_ != otherMap.getCount()) { return false } var equalityFn = opt_equalityFn || goog.structs.Map.defaultEquals; this.cleanupKeysArray_(); for(var key, i = 0;key = this.keys_[i];i++) { if(!equalityFn(this.get(key), otherMap.get(key))) { return false } } return true }; goog.structs.Map.defaultEquals = function(a, b) { return a === b }; goog.structs.Map.prototype.isEmpty = function() { return this.count_ == 0 }; goog.structs.Map.prototype.clear = function() { this.map_ = {}; this.keys_.length = 0; this.count_ = 0; this.version_ = 0 }; goog.structs.Map.prototype.remove = function(key) { if(goog.structs.Map.hasKey_(this.map_, key)) { delete this.map_[key]; this.count_--; this.version_++; if(this.keys_.length > 2 * this.count_) { this.cleanupKeysArray_() } return true } return false }; goog.structs.Map.prototype.cleanupKeysArray_ = function() { if(this.count_ != this.keys_.length) { var srcIndex = 0; var destIndex = 0; while(srcIndex < this.keys_.length) { var key = this.keys_[srcIndex]; if(goog.structs.Map.hasKey_(this.map_, key)) { this.keys_[destIndex++] = key } srcIndex++ } this.keys_.length = destIndex } if(this.count_ != this.keys_.length) { var seen = {}; var srcIndex = 0; var destIndex = 0; while(srcIndex < this.keys_.length) { var key = this.keys_[srcIndex]; if(!goog.structs.Map.hasKey_(seen, key)) { this.keys_[destIndex++] = key; seen[key] = 1 } srcIndex++ } this.keys_.length = destIndex } }; goog.structs.Map.prototype.get = function(key, opt_val) { if(goog.structs.Map.hasKey_(this.map_, key)) { return this.map_[key] } return opt_val }; goog.structs.Map.prototype.set = function(key, value) { if(!goog.structs.Map.hasKey_(this.map_, key)) { this.count_++; this.keys_.push(key); this.version_++ } this.map_[key] = value }; goog.structs.Map.prototype.addAll = function(map) { var keys, values; if(map instanceof goog.structs.Map) { keys = map.getKeys(); values = map.getValues() }else { keys = goog.object.getKeys(map); values = goog.object.getValues(map) } for(var i = 0;i < keys.length;i++) { this.set(keys[i], values[i]) } }; goog.structs.Map.prototype.clone = function() { return new goog.structs.Map(this) }; goog.structs.Map.prototype.transpose = function() { var transposed = new goog.structs.Map; for(var i = 0;i < this.keys_.length;i++) { var key = this.keys_[i]; var value = this.map_[key]; transposed.set(value, key) } return transposed }; goog.structs.Map.prototype.toObject = function() { this.cleanupKeysArray_(); var obj = {}; for(var i = 0;i < this.keys_.length;i++) { var key = this.keys_[i]; obj[key] = this.map_[key] } return obj }; goog.structs.Map.prototype.getKeyIterator = function() { return this.__iterator__(true) }; goog.structs.Map.prototype.getValueIterator = function() { return this.__iterator__(false) }; goog.structs.Map.prototype.__iterator__ = function(opt_keys) { this.cleanupKeysArray_(); var i = 0; var keys = this.keys_; var map = this.map_; var version = this.version_; var selfObj = this; var newIter = new goog.iter.Iterator; newIter.next = function() { while(true) { if(version != selfObj.version_) { throw Error("The map has changed since the iterator was created"); } if(i >= keys.length) { throw goog.iter.StopIteration; } var key = keys[i++]; return opt_keys ? key : map[key] } }; return newIter }; goog.structs.Map.hasKey_ = function(obj, key) { return Object.prototype.hasOwnProperty.call(obj, key) }; goog.provide("goog.uri.utils"); goog.provide("goog.uri.utils.ComponentIndex"); goog.provide("goog.uri.utils.QueryArray"); goog.provide("goog.uri.utils.QueryValue"); goog.provide("goog.uri.utils.StandardQueryParam"); goog.require("goog.asserts"); goog.require("goog.string"); goog.require("goog.userAgent"); goog.uri.utils.CharCode_ = {AMPERSAND:38, EQUAL:61, HASH:35, QUESTION:63}; goog.uri.utils.buildFromEncodedParts = function(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment) { var out = ""; if(opt_scheme) { out += opt_scheme + ":" } if(opt_domain) { out += "//"; if(opt_userInfo) { out += opt_userInfo + "@" } out += opt_domain; if(opt_port) { out += ":" + opt_port } } if(opt_path) { out += opt_path } if(opt_queryData) { out += "?" + opt_queryData } if(opt_fragment) { out += "#" + opt_fragment } return out }; goog.uri.utils.splitRe_ = new RegExp("^" + "(?:" + "([^:/?#.]+)" + ":)?" + "(?://" + "(?:([^/?#]*)@)?" + "([^/#?]*?)" + "(?::([0-9]+))?" + "(?\x3d[/#?]|$)" + ")?" + "([^?#]+)?" + "(?:\\?([^#]*))?" + "(?:#(.*))?" + "$"); goog.uri.utils.ComponentIndex = {SCHEME:1, USER_INFO:2, DOMAIN:3, PORT:4, PATH:5, QUERY_DATA:6, FRAGMENT:7}; goog.uri.utils.split = function(uri) { goog.uri.utils.phishingProtection_(); return(uri.match(goog.uri.utils.splitRe_)) }; goog.uri.utils.needsPhishingProtection_ = goog.userAgent.WEBKIT; goog.uri.utils.phishingProtection_ = function() { if(goog.uri.utils.needsPhishingProtection_) { goog.uri.utils.needsPhishingProtection_ = false; var location = goog.global["location"]; if(location) { var href = location["href"]; if(href) { var domain = goog.uri.utils.getDomain(href); if(domain && domain != location["hostname"]) { goog.uri.utils.needsPhishingProtection_ = true; throw Error(); } } } } }; goog.uri.utils.decodeIfPossible_ = function(uri) { return uri && decodeURIComponent(uri) }; goog.uri.utils.getComponentByIndex_ = function(componentIndex, uri) { return goog.uri.utils.split(uri)[componentIndex] || null }; goog.uri.utils.getScheme = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.SCHEME, uri) }; goog.uri.utils.getEffectiveScheme = function(uri) { var scheme = goog.uri.utils.getScheme(uri); if(!scheme && self.location) { var protocol = self.location.protocol; scheme = protocol.substr(0, protocol.length - 1) } return scheme ? scheme.toLowerCase() : "" }; goog.uri.utils.getUserInfoEncoded = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.USER_INFO, uri) }; goog.uri.utils.getUserInfo = function(uri) { return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getUserInfoEncoded(uri)) }; goog.uri.utils.getDomainEncoded = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.DOMAIN, uri) }; goog.uri.utils.getDomain = function(uri) { return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getDomainEncoded(uri)) }; goog.uri.utils.getPort = function(uri) { return Number(goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.PORT, uri)) || null }; goog.uri.utils.getPathEncoded = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.PATH, uri) }; goog.uri.utils.getPath = function(uri) { return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getPathEncoded(uri)) }; goog.uri.utils.getQueryData = function(uri) { return goog.uri.utils.getComponentByIndex_(goog.uri.utils.ComponentIndex.QUERY_DATA, uri) }; goog.uri.utils.getFragmentEncoded = function(uri) { var hashIndex = uri.indexOf("#"); return hashIndex < 0 ? null : uri.substr(hashIndex + 1) }; goog.uri.utils.setFragmentEncoded = function(uri, fragment) { return goog.uri.utils.removeFragment(uri) + (fragment ? "#" + fragment : "") }; goog.uri.utils.getFragment = function(uri) { return goog.uri.utils.decodeIfPossible_(goog.uri.utils.getFragmentEncoded(uri)) }; goog.uri.utils.getHost = function(uri) { var pieces = goog.uri.utils.split(uri); return goog.uri.utils.buildFromEncodedParts(pieces[goog.uri.utils.ComponentIndex.SCHEME], pieces[goog.uri.utils.ComponentIndex.USER_INFO], pieces[goog.uri.utils.ComponentIndex.DOMAIN], pieces[goog.uri.utils.ComponentIndex.PORT]) }; goog.uri.utils.getPathAndAfter = function(uri) { var pieces = goog.uri.utils.split(uri); return goog.uri.utils.buildFromEncodedParts(null, null, null, null, pieces[goog.uri.utils.ComponentIndex.PATH], pieces[goog.uri.utils.ComponentIndex.QUERY_DATA], pieces[goog.uri.utils.ComponentIndex.FRAGMENT]) }; goog.uri.utils.removeFragment = function(uri) { var hashIndex = uri.indexOf("#"); return hashIndex < 0 ? uri : uri.substr(0, hashIndex) }; goog.uri.utils.haveSameDomain = function(uri1, uri2) { var pieces1 = goog.uri.utils.split(uri1); var pieces2 = goog.uri.utils.split(uri2); return pieces1[goog.uri.utils.ComponentIndex.DOMAIN] == pieces2[goog.uri.utils.ComponentIndex.DOMAIN] && pieces1[goog.uri.utils.ComponentIndex.SCHEME] == pieces2[goog.uri.utils.ComponentIndex.SCHEME] && pieces1[goog.uri.utils.ComponentIndex.PORT] == pieces2[goog.uri.utils.ComponentIndex.PORT] }; goog.uri.utils.assertNoFragmentsOrQueries_ = function(uri) { if(goog.DEBUG && (uri.indexOf("#") >= 0 || uri.indexOf("?") >= 0)) { throw Error("goog.uri.utils: Fragment or query identifiers are not " + "supported: [" + uri + "]"); } }; goog.uri.utils.QueryValue; goog.uri.utils.QueryArray; goog.uri.utils.appendQueryData_ = function(buffer) { if(buffer[1]) { var baseUri = (buffer[0]); var hashIndex = baseUri.indexOf("#"); if(hashIndex >= 0) { buffer.push(baseUri.substr(hashIndex)); buffer[0] = baseUri = baseUri.substr(0, hashIndex) } var questionIndex = baseUri.indexOf("?"); if(questionIndex < 0) { buffer[1] = "?" }else { if(questionIndex == baseUri.length - 1) { buffer[1] = undefined } } } return buffer.join("") }; goog.uri.utils.appendKeyValuePairs_ = function(key, value, pairs) { if(goog.isArray(value)) { goog.asserts.assertArray(value); for(var j = 0;j < value.length;j++) { goog.uri.utils.appendKeyValuePairs_(key, String(value[j]), pairs) } }else { if(value != null) { pairs.push("\x26", key, value === "" ? "" : "\x3d", goog.string.urlEncode(value)) } } }; goog.uri.utils.buildQueryDataBuffer_ = function(buffer, keysAndValues, opt_startIndex) { goog.asserts.assert(Math.max(keysAndValues.length - (opt_startIndex || 0), 0) % 2 == 0, "goog.uri.utils: Key/value lists must be even in length."); for(var i = opt_startIndex || 0;i < keysAndValues.length;i += 2) { goog.uri.utils.appendKeyValuePairs_(keysAndValues[i], keysAndValues[i + 1], buffer) } return buffer }; goog.uri.utils.buildQueryData = function(keysAndValues, opt_startIndex) { var buffer = goog.uri.utils.buildQueryDataBuffer_([], keysAndValues, opt_startIndex); buffer[0] = ""; return buffer.join("") }; goog.uri.utils.buildQueryDataBufferFromMap_ = function(buffer, map) { for(var key in map) { goog.uri.utils.appendKeyValuePairs_(key, map[key], buffer) } return buffer }; goog.uri.utils.buildQueryDataFromMap = function(map) { var buffer = goog.uri.utils.buildQueryDataBufferFromMap_([], map); buffer[0] = ""; return buffer.join("") }; goog.uri.utils.appendParams = function(uri, var_args) { return goog.uri.utils.appendQueryData_(arguments.length == 2 ? goog.uri.utils.buildQueryDataBuffer_([uri], arguments[1], 0) : goog.uri.utils.buildQueryDataBuffer_([uri], arguments, 1)) }; goog.uri.utils.appendParamsFromMap = function(uri, map) { return goog.uri.utils.appendQueryData_(goog.uri.utils.buildQueryDataBufferFromMap_([uri], map)) }; goog.uri.utils.appendParam = function(uri, key, opt_value) { var paramArr = [uri, "\x26", key]; if(goog.isDefAndNotNull(opt_value)) { paramArr.push("\x3d", goog.string.urlEncode(opt_value)) } return goog.uri.utils.appendQueryData_(paramArr) }; goog.uri.utils.findParam_ = function(uri, startIndex, keyEncoded, hashOrEndIndex) { var index = startIndex; var keyLength = keyEncoded.length; while((index = uri.indexOf(keyEncoded, index)) >= 0 && index < hashOrEndIndex) { var precedingChar = uri.charCodeAt(index - 1); if(precedingChar == goog.uri.utils.CharCode_.AMPERSAND || precedingChar == goog.uri.utils.CharCode_.QUESTION) { var followingChar = uri.charCodeAt(index + keyLength); if(!followingChar || followingChar == goog.uri.utils.CharCode_.EQUAL || followingChar == goog.uri.utils.CharCode_.AMPERSAND || followingChar == goog.uri.utils.CharCode_.HASH) { return index } } index += keyLength + 1 } return-1 }; goog.uri.utils.hashOrEndRe_ = /#|$/; goog.uri.utils.hasParam = function(uri, keyEncoded) { return goog.uri.utils.findParam_(uri, 0, keyEncoded, uri.search(goog.uri.utils.hashOrEndRe_)) >= 0 }; goog.uri.utils.getParamValue = function(uri, keyEncoded) { var hashOrEndIndex = uri.search(goog.uri.utils.hashOrEndRe_); var foundIndex = goog.uri.utils.findParam_(uri, 0, keyEncoded, hashOrEndIndex); if(foundIndex < 0) { return null }else { var endPosition = uri.indexOf("\x26", foundIndex); if(endPosition < 0 || endPosition > hashOrEndIndex) { endPosition = hashOrEndIndex } foundIndex += keyEncoded.length + 1; return goog.string.urlDecode(uri.substr(foundIndex, endPosition - foundIndex)) } }; goog.uri.utils.getParamValues = function(uri, keyEncoded) { var hashOrEndIndex = uri.search(goog.uri.utils.hashOrEndRe_); var position = 0; var foundIndex; var result = []; while((foundIndex = goog.uri.utils.findParam_(uri, position, keyEncoded, hashOrEndIndex)) >= 0) { position = uri.indexOf("\x26", foundIndex); if(position < 0 || position > hashOrEndIndex) { position = hashOrEndIndex } foundIndex += keyEncoded.length + 1; result.push(goog.string.urlDecode(uri.substr(foundIndex, position - foundIndex))) } return result }; goog.uri.utils.trailingQueryPunctuationRe_ = /[?&]($|#)/; goog.uri.utils.removeParam = function(uri, keyEncoded) { var hashOrEndIndex = uri.search(goog.uri.utils.hashOrEndRe_); var position = 0; var foundIndex; var buffer = []; while((foundIndex = goog.uri.utils.findParam_(uri, position, keyEncoded, hashOrEndIndex)) >= 0) { buffer.push(uri.substring(position, foundIndex)); position = Math.min(uri.indexOf("\x26", foundIndex) + 1 || hashOrEndIndex, hashOrEndIndex) } buffer.push(uri.substr(position)); return buffer.join("").replace(goog.uri.utils.trailingQueryPunctuationRe_, "$1") }; goog.uri.utils.setParam = function(uri, keyEncoded, value) { return goog.uri.utils.appendParam(goog.uri.utils.removeParam(uri, keyEncoded), keyEncoded, value) }; goog.uri.utils.appendPath = function(baseUri, path) { goog.uri.utils.assertNoFragmentsOrQueries_(baseUri); if(goog.string.endsWith(baseUri, "/")) { baseUri = baseUri.substr(0, baseUri.length - 1) } if(goog.string.startsWith(path, "/")) { path = path.substr(1) } return goog.string.buildString(baseUri, "/", path) }; goog.uri.utils.StandardQueryParam = {RANDOM:"zx"}; goog.uri.utils.makeUnique = function(uri) { return goog.uri.utils.setParam(uri, goog.uri.utils.StandardQueryParam.RANDOM, goog.string.getRandomString()) }; goog.provide("goog.Uri"); goog.provide("goog.Uri.QueryData"); goog.require("goog.array"); goog.require("goog.string"); goog.require("goog.structs"); goog.require("goog.structs.Map"); goog.require("goog.uri.utils"); goog.require("goog.uri.utils.ComponentIndex"); goog.require("goog.uri.utils.StandardQueryParam"); goog.Uri = function(opt_uri, opt_ignoreCase) { var m; if(opt_uri instanceof goog.Uri) { this.ignoreCase_ = goog.isDef(opt_ignoreCase) ? opt_ignoreCase : opt_uri.getIgnoreCase(); this.setScheme(opt_uri.getScheme()); this.setUserInfo(opt_uri.getUserInfo()); this.setDomain(opt_uri.getDomain()); this.setPort(opt_uri.getPort()); this.setPath(opt_uri.getPath()); this.setQueryData(opt_uri.getQueryData().clone()); this.setFragment(opt_uri.getFragment()) }else { if(opt_uri && (m = goog.uri.utils.split(String(opt_uri)))) { this.ignoreCase_ = !!opt_ignoreCase; this.setScheme(m[goog.uri.utils.ComponentIndex.SCHEME] || "", true); this.setUserInfo(m[goog.uri.utils.ComponentIndex.USER_INFO] || "", true); this.setDomain(m[goog.uri.utils.ComponentIndex.DOMAIN] || "", true); this.setPort(m[goog.uri.utils.ComponentIndex.PORT]); this.setPath(m[goog.uri.utils.ComponentIndex.PATH] || "", true); this.setQueryData(m[goog.uri.utils.ComponentIndex.QUERY_DATA] || "", true); this.setFragment(m[goog.uri.utils.ComponentIndex.FRAGMENT] || "", true) }else { this.ignoreCase_ = !!opt_ignoreCase; this.queryData_ = new goog.Uri.QueryData(null, null, this.ignoreCase_) } } }; goog.Uri.preserveParameterTypesCompatibilityFlag = false; goog.Uri.RANDOM_PARAM = goog.uri.utils.StandardQueryParam.RANDOM; goog.Uri.prototype.scheme_ = ""; goog.Uri.prototype.userInfo_ = ""; goog.Uri.prototype.domain_ = ""; goog.Uri.prototype.port_ = null; goog.Uri.prototype.path_ = ""; goog.Uri.prototype.queryData_; goog.Uri.prototype.fragment_ = ""; goog.Uri.prototype.isReadOnly_ = false; goog.Uri.prototype.ignoreCase_ = false; goog.Uri.prototype.toString = function() { var out = []; var scheme = this.getScheme(); if(scheme) { out.push(goog.Uri.encodeSpecialChars_(scheme, goog.Uri.reDisallowedInSchemeOrUserInfo_), ":") } var domain = this.getDomain(); if(domain) { out.push("//"); var userInfo = this.getUserInfo(); if(userInfo) { out.push(goog.Uri.encodeSpecialChars_(userInfo, goog.Uri.reDisallowedInSchemeOrUserInfo_), "@") } out.push(goog.string.urlEncode(domain)); var port = this.getPort(); if(port != null) { out.push(":", String(port)) } } var path = this.getPath(); if(path) { if(this.hasDomain() && path.charAt(0) != "/") { out.push("/") } out.push(goog.Uri.encodeSpecialChars_(path, path.charAt(0) == "/" ? goog.Uri.reDisallowedInAbsolutePath_ : goog.Uri.reDisallowedInRelativePath_)) } var query = this.getEncodedQuery(); if(query) { out.push("?", query) } var fragment = this.getFragment(); if(fragment) { out.push("#", goog.Uri.encodeSpecialChars_(fragment, goog.Uri.reDisallowedInFragment_)) } return out.join("") }; goog.Uri.prototype.resolve = function(relativeUri) { var absoluteUri = this.clone(); var overridden = relativeUri.hasScheme(); if(overridden) { absoluteUri.setScheme(relativeUri.getScheme()) }else { overridden = relativeUri.hasUserInfo() } if(overridden) { absoluteUri.setUserInfo(relativeUri.getUserInfo()) }else { overridden = relativeUri.hasDomain() } if(overridden) { absoluteUri.setDomain(relativeUri.getDomain()) }else { overridden = relativeUri.hasPort() } var path = relativeUri.getPath(); if(overridden) { absoluteUri.setPort(relativeUri.getPort()) }else { overridden = relativeUri.hasPath(); if(overridden) { if(path.charAt(0) != "/") { if(this.hasDomain() && !this.hasPath()) { path = "/" + path }else { var lastSlashIndex = absoluteUri.getPath().lastIndexOf("/"); if(lastSlashIndex != -1) { path = absoluteUri.getPath().substr(0, lastSlashIndex + 1) + path } } } path = goog.Uri.removeDotSegments(path) } } if(overridden) { absoluteUri.setPath(path) }else { overridden = relativeUri.hasQuery() } if(overridden) { absoluteUri.setQueryData(relativeUri.getDecodedQuery()) }else { overridden = relativeUri.hasFragment() } if(overridden) { absoluteUri.setFragment(relativeUri.getFragment()) } return absoluteUri }; goog.Uri.prototype.clone = function() { return new goog.Uri(this) }; goog.Uri.prototype.getScheme = function() { return this.scheme_ }; goog.Uri.prototype.setScheme = function(newScheme, opt_decode) { this.enforceReadOnly(); this.scheme_ = opt_decode ? goog.Uri.decodeOrEmpty_(newScheme) : newScheme; if(this.scheme_) { this.scheme_ = this.scheme_.replace(/:$/, "") } return this }; goog.Uri.prototype.hasScheme = function() { return!!this.scheme_ }; goog.Uri.prototype.getUserInfo = function() { return this.userInfo_ }; goog.Uri.prototype.setUserInfo = function(newUserInfo, opt_decode) { this.enforceReadOnly(); this.userInfo_ = opt_decode ? goog.Uri.decodeOrEmpty_(newUserInfo) : newUserInfo; return this }; goog.Uri.prototype.hasUserInfo = function() { return!!this.userInfo_ }; goog.Uri.prototype.getDomain = function() { return this.domain_ }; goog.Uri.prototype.setDomain = function(newDomain, opt_decode) { this.enforceReadOnly(); this.domain_ = opt_decode ? goog.Uri.decodeOrEmpty_(newDomain) : newDomain; return this }; goog.Uri.prototype.hasDomain = function() { return!!this.domain_ }; goog.Uri.prototype.getPort = function() { return this.port_ }; goog.Uri.prototype.setPort = function(newPort) { this.enforceReadOnly(); if(newPort) { newPort = Number(newPort); if(isNaN(newPort) || newPort < 0) { throw Error("Bad port number " + newPort); } this.port_ = newPort }else { this.port_ = null } return this }; goog.Uri.prototype.hasPort = function() { return this.port_ != null }; goog.Uri.prototype.getPath = function() { return this.path_ }; goog.Uri.prototype.setPath = function(newPath, opt_decode) { this.enforceReadOnly(); this.path_ = opt_decode ? goog.Uri.decodeOrEmpty_(newPath) : newPath; return this }; goog.Uri.prototype.hasPath = function() { return!!this.path_ }; goog.Uri.prototype.hasQuery = function() { return this.queryData_.toString() !== "" }; goog.Uri.prototype.setQueryData = function(queryData, opt_decode) { this.enforceReadOnly(); if(queryData instanceof goog.Uri.QueryData) { this.queryData_ = queryData; this.queryData_.setIgnoreCase(this.ignoreCase_) }else { if(!opt_decode) { queryData = goog.Uri.encodeSpecialChars_(queryData, goog.Uri.reDisallowedInQuery_) } this.queryData_ = new goog.Uri.QueryData(queryData, null, this.ignoreCase_) } return this }; goog.Uri.prototype.setQuery = function(newQuery, opt_decode) { return this.setQueryData(newQuery, opt_decode) }; goog.Uri.prototype.getEncodedQuery = function() { return this.queryData_.toString() }; goog.Uri.prototype.getDecodedQuery = function() { return this.queryData_.toDecodedString() }; goog.Uri.prototype.getQueryData = function() { return this.queryData_ }; goog.Uri.prototype.getQuery = function() { return this.getEncodedQuery() }; goog.Uri.prototype.setParameterValue = function(key, value) { this.enforceReadOnly(); this.queryData_.set(key, value); return this }; goog.Uri.prototype.setParameterValues = function(key, values) { this.enforceReadOnly(); if(!goog.isArray(values)) { values = [String(values)] } this.queryData_.setValues(key, (values)); return this }; goog.Uri.prototype.getParameterValues = function(name) { return this.queryData_.getValues(name) }; goog.Uri.prototype.getParameterValue = function(paramName) { return(this.queryData_.get(paramName)) }; goog.Uri.prototype.getFragment = function() { return this.fragment_ }; goog.Uri.prototype.setFragment = function(newFragment, opt_decode) { this.enforceReadOnly(); this.fragment_ = opt_decode ? goog.Uri.decodeOrEmpty_(newFragment) : newFragment; return this }; goog.Uri.prototype.hasFragment = function() { return!!this.fragment_ }; goog.Uri.prototype.hasSameDomainAs = function(uri2) { return(!this.hasDomain() && !uri2.hasDomain() || this.getDomain() == uri2.getDomain()) && (!this.hasPort() && !uri2.hasPort() || this.getPort() == uri2.getPort()) }; goog.Uri.prototype.makeUnique = function() { this.enforceReadOnly(); this.setParameterValue(goog.Uri.RANDOM_PARAM, goog.string.getRandomString()); return this }; goog.Uri.prototype.removeParameter = function(key) { this.enforceReadOnly(); this.queryData_.remove(key); return this }; goog.Uri.prototype.setReadOnly = function(isReadOnly) { this.isReadOnly_ = isReadOnly; return this }; goog.Uri.prototype.isReadOnly = function() { return this.isReadOnly_ }; goog.Uri.prototype.enforceReadOnly = function() { if(this.isReadOnly_) { throw Error("Tried to modify a read-only Uri"); } }; goog.Uri.prototype.setIgnoreCase = function(ignoreCase) { this.ignoreCase_ = ignoreCase; if(this.queryData_) { this.queryData_.setIgnoreCase(ignoreCase) } return this }; goog.Uri.prototype.getIgnoreCase = function() { return this.ignoreCase_ }; goog.Uri.parse = function(uri, opt_ignoreCase) { return uri instanceof goog.Uri ? uri.clone() : new goog.Uri(uri, opt_ignoreCase) }; goog.Uri.create = function(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_query, opt_fragment, opt_ignoreCase) { var uri = new goog.Uri(null, opt_ignoreCase); opt_scheme && uri.setScheme(opt_scheme); opt_userInfo && uri.setUserInfo(opt_userInfo); opt_domain && uri.setDomain(opt_domain); opt_port && uri.setPort(opt_port); opt_path && uri.setPath(opt_path); opt_query && uri.setQueryData(opt_query); opt_fragment && uri.setFragment(opt_fragment); return uri }; goog.Uri.resolve = function(base, rel) { if(!(base instanceof goog.Uri)) { base = goog.Uri.parse(base) } if(!(rel instanceof goog.Uri)) { rel = goog.Uri.parse(rel) } return base.resolve(rel) }; goog.Uri.removeDotSegments = function(path) { if(path == ".." || path == ".") { return"" }else { if(!goog.string.contains(path, "./") && !goog.string.contains(path, "/.")) { return path }else { var leadingSlash = goog.string.startsWith(path, "/"); var segments = path.split("/"); var out = []; for(var pos = 0;pos < segments.length;) { var segment = segments[pos++]; if(segment == ".") { if(leadingSlash && pos == segments.length) { out.push("") } }else { if(segment == "..") { if(out.length > 1 || out.length == 1 && out[0] != "") { out.pop() } if(leadingSlash && pos == segments.length) { out.push("") } }else { out.push(segment); leadingSlash = true } } } return out.join("/") } } }; goog.Uri.decodeOrEmpty_ = function(val) { return val ? decodeURIComponent(val) : "" }; goog.Uri.encodeSpecialChars_ = function(unescapedPart, extra) { if(goog.isString(unescapedPart)) { return encodeURI(unescapedPart).replace(extra, goog.Uri.encodeChar_) } return null }; goog.Uri.encodeChar_ = function(ch) { var n = ch.charCodeAt(0); return"%" + (n >> 4 & 15).toString(16) + (n & 15).toString(16) }; goog.Uri.reDisallowedInSchemeOrUserInfo_ = /[#\/\?@]/g; goog.Uri.reDisallowedInRelativePath_ = /[\#\?:]/g; goog.Uri.reDisallowedInAbsolutePath_ = /[\#\?]/g; goog.Uri.reDisallowedInQuery_ = /[\#\?@]/g; goog.Uri.reDisallowedInFragment_ = /#/g; goog.Uri.haveSameDomain = function(uri1String, uri2String) { var pieces1 = goog.uri.utils.split(uri1String); var pieces2 = goog.uri.utils.split(uri2String); return pieces1[goog.uri.utils.ComponentIndex.DOMAIN] == pieces2[goog.uri.utils.ComponentIndex.DOMAIN] && pieces1[goog.uri.utils.ComponentIndex.PORT] == pieces2[goog.uri.utils.ComponentIndex.PORT] }; goog.Uri.QueryData = function(opt_query, opt_uri, opt_ignoreCase) { this.encodedQuery_ = opt_query || null; this.ignoreCase_ = !!opt_ignoreCase }; goog.Uri.QueryData.prototype.ensureKeyMapInitialized_ = function() { if(!this.keyMap_) { this.keyMap_ = new goog.structs.Map; this.count_ = 0; if(this.encodedQuery_) { var pairs = this.encodedQuery_.split("\x26"); for(var i = 0;i < pairs.length;i++) { var indexOfEquals = pairs[i].indexOf("\x3d"); var name = null; var value = null; if(indexOfEquals >= 0) { name = pairs[i].substring(0, indexOfEquals); value = pairs[i].substring(indexOfEquals + 1) }else { name = pairs[i] } name = goog.string.urlDecode(name); name = this.getKeyName_(name); this.add(name, value ? goog.string.urlDecode(value) : "") } } } }; goog.Uri.QueryData.createFromMap = function(map, opt_uri, opt_ignoreCase) { var keys = goog.structs.getKeys(map); if(typeof keys == "undefined") { throw Error("Keys are undefined"); } var queryData = new goog.Uri.QueryData(null, null, opt_ignoreCase); var values = goog.structs.getValues(map); for(var i = 0;i < keys.length;i++) { var key = keys[i]; var value = values[i]; if(!goog.isArray(value)) { queryData.add(key, value) }else { queryData.setValues(key, value) } } return queryData }; goog.Uri.QueryData.createFromKeysValues = function(keys, values, opt_uri, opt_ignoreCase) { if(keys.length != values.length) { throw Error("Mismatched lengths for keys/values"); } var queryData = new goog.Uri.QueryData(null, null, opt_ignoreCase); for(var i = 0;i < keys.length;i++) { queryData.add(keys[i], values[i]) } return queryData }; goog.Uri.QueryData.prototype.keyMap_ = null; goog.Uri.QueryData.prototype.count_ = null; goog.Uri.QueryData.prototype.getCount = function() { this.ensureKeyMapInitialized_(); return this.count_ }; goog.Uri.QueryData.prototype.add = function(key, value) { this.ensureKeyMapInitialized_(); this.invalidateCache_(); key = this.getKeyName_(key); var values = this.keyMap_.get(key); if(!values) { this.keyMap_.set(key, values = []) } values.push(value); this.count_++; return this }; goog.Uri.QueryData.prototype.remove = function(key) { this.ensureKeyMapInitialized_(); key = this.getKeyName_(key); if(this.keyMap_.containsKey(key)) { this.invalidateCache_(); this.count_ -= this.keyMap_.get(key).length; return this.keyMap_.remove(key) } return false }; goog.Uri.QueryData.prototype.clear = function() { this.invalidateCache_(); this.keyMap_ = null; this.count_ = 0 }; goog.Uri.QueryData.prototype.isEmpty = function() { this.ensureKeyMapInitialized_(); return this.count_ == 0 }; goog.Uri.QueryData.prototype.containsKey = function(key) { this.ensureKeyMapInitialized_(); key = this.getKeyName_(key); return this.keyMap_.containsKey(key) }; goog.Uri.QueryData.prototype.containsValue = function(value) { var vals = this.getValues(); return goog.array.contains(vals, value) }; goog.Uri.QueryData.prototype.getKeys = function() { this.ensureKeyMapInitialized_(); var vals = (this.keyMap_.getValues()); var keys = this.keyMap_.getKeys(); var rv = []; for(var i = 0;i < keys.length;i++) { var val = vals[i]; for(var j = 0;j < val.length;j++) { rv.push(keys[i]) } } return rv }; goog.Uri.QueryData.prototype.getValues = function(opt_key) { this.ensureKeyMapInitialized_(); var rv = []; if(opt_key) { if(this.containsKey(opt_key)) { rv = goog.array.concat(rv, this.keyMap_.get(this.getKeyName_(opt_key))) } }else { var values = (this.keyMap_.getValues()); for(var i = 0;i < values.length;i++) { rv = goog.array.concat(rv, values[i]) } } return rv }; goog.Uri.QueryData.prototype.set = function(key, value) { this.ensureKeyMapInitialized_(); this.invalidateCache_(); key = this.getKeyName_(key); if(this.containsKey(key)) { this.count_ -= this.keyMap_.get(key).length } this.keyMap_.set(key, [value]); this.count_++; return this }; goog.Uri.QueryData.prototype.get = function(key, opt_default) { var values = key ? this.getValues(key) : []; if(goog.Uri.preserveParameterTypesCompatibilityFlag) { return values.length > 0 ? values[0] : opt_default }else { return values.length > 0 ? String(values[0]) : opt_default } }; goog.Uri.QueryData.prototype.setValues = function(key, values) { this.remove(key); if(values.length > 0) { this.invalidateCache_(); this.keyMap_.set(this.getKeyName_(key), goog.array.clone(values)); this.count_ += values.length } }; goog.Uri.QueryData.prototype.toString = function() { if(this.encodedQuery_) { return this.encodedQuery_ } if(!this.keyMap_) { return"" } var sb = []; var keys = this.keyMap_.getKeys(); for(var i = 0;i < keys.length;i++) { var key = keys[i]; var encodedKey = goog.string.urlEncode(key); var val = this.getValues(key); for(var j = 0;j < val.length;j++) { var param = encodedKey; if(val[j] !== "") { param += "\x3d" + goog.string.urlEncode(val[j]) } sb.push(param) } } return this.encodedQuery_ = sb.join("\x26") }; goog.Uri.QueryData.prototype.toDecodedString = function() { return goog.Uri.decodeOrEmpty_(this.toString()) }; goog.Uri.QueryData.prototype.invalidateCache_ = function() { this.encodedQuery_ = null }; goog.Uri.QueryData.prototype.filterKeys = function(keys) { this.ensureKeyMapInitialized_(); goog.structs.forEach(this.keyMap_, function(value, key, map) { if(!goog.array.contains(keys, key)) { this.remove(key) } }, this); return this }; goog.Uri.QueryData.prototype.clone = function() { var rv = new goog.Uri.QueryData; rv.encodedQuery_ = this.encodedQuery_; if(this.keyMap_) { rv.keyMap_ = this.keyMap_.clone(); rv.count_ = this.count_ } return rv }; goog.Uri.QueryData.prototype.getKeyName_ = function(arg) { var keyName = String(arg); if(this.ignoreCase_) { keyName = keyName.toLowerCase() } return keyName }; goog.Uri.QueryData.prototype.setIgnoreCase = function(ignoreCase) { var resetKeys = ignoreCase && !this.ignoreCase_; if(resetKeys) { this.ensureKeyMapInitialized_(); this.invalidateCache_(); goog.structs.forEach(this.keyMap_, function(value, key) { var lowerCase = key.toLowerCase(); if(key != lowerCase) { this.remove(key); this.setValues(lowerCase, value) } }, this) } this.ignoreCase_ = ignoreCase }; goog.Uri.QueryData.prototype.extend = function(var_args) { for(var i = 0;i < arguments.length;i++) { var data = arguments[i]; goog.structs.forEach(data, function(value, key) { this.add(key, value) }, this) } }; goog.provide("goog.async.AnimationDelay"); goog.require("goog.Disposable"); goog.require("goog.events"); goog.require("goog.functions"); goog.async.AnimationDelay = function(listener, opt_window, opt_handler) { goog.base(this); this.listener_ = listener; this.handler_ = opt_handler; this.win_ = opt_window || window; this.callback_ = goog.bind(this.doAction_, this) }; goog.inherits(goog.async.AnimationDelay, goog.Disposable); goog.async.AnimationDelay.prototype.id_ = null; goog.async.AnimationDelay.prototype.usingListeners_ = false; goog.async.AnimationDelay.TIMEOUT = 20; goog.async.AnimationDelay.MOZ_BEFORE_PAINT_EVENT_ = "MozBeforePaint"; goog.async.AnimationDelay.prototype.start = function() { this.stop(); this.usingListeners_ = false; var raf = this.getRaf_(); var cancelRaf = this.getCancelRaf_(); if(raf && !cancelRaf && this.win_.mozRequestAnimationFrame) { this.id_ = goog.events.listen(this.win_, goog.async.AnimationDelay.MOZ_BEFORE_PAINT_EVENT_, this.callback_); this.win_.mozRequestAnimationFrame(null); this.usingListeners_ = true }else { if(raf && cancelRaf) { this.id_ = raf.call(this.win_, this.callback_) }else { this.id_ = this.win_.setTimeout(goog.functions.lock(this.callback_), goog.async.AnimationDelay.TIMEOUT) } } }; goog.async.AnimationDelay.prototype.stop = function() { if(this.isActive()) { var raf = this.getRaf_(); var cancelRaf = this.getCancelRaf_(); if(raf && !cancelRaf && this.win_.mozRequestAnimationFrame) { goog.events.unlistenByKey(this.id_) }else { if(raf && cancelRaf) { cancelRaf.call(this.win_, (this.id_)) }else { this.win_.clearTimeout((this.id_)) } } } this.id_ = null }; goog.async.AnimationDelay.prototype.fire = function() { this.stop(); this.doAction_() }; goog.async.AnimationDelay.prototype.fireIfActive = function() { if(this.isActive()) { this.fire() } }; goog.async.AnimationDelay.prototype.isActive = function() { return this.id_ != null }; goog.async.AnimationDelay.prototype.doAction_ = function() { if(this.usingListeners_ && this.id_) { goog.events.unlistenByKey(this.id_) } this.id_ = null; this.listener_.call(this.handler_, goog.now()) }; goog.async.AnimationDelay.prototype.disposeInternal = function() { this.stop(); goog.base(this, "disposeInternal") }; goog.async.AnimationDelay.prototype.getRaf_ = function() { var win = this.win_; return win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || null }; goog.async.AnimationDelay.prototype.getCancelRaf_ = function() { var win = this.win_; return win.cancelRequestAnimationFrame || win.webkitCancelRequestAnimationFrame || win.mozCancelRequestAnimationFrame || win.oCancelRequestAnimationFrame || win.msCancelRequestAnimationFrame || null }; goog.provide("goog.async.nextTick"); goog.require("goog.debug.entryPointRegistry"); goog.require("goog.functions"); goog.async.nextTick = function(callback, opt_context) { var cb = callback; if(opt_context) { cb = goog.bind(callback, opt_context) } cb = goog.async.nextTick.wrapCallback_(cb); if(goog.isFunction(goog.global.setImmediate)) { goog.global.setImmediate(cb); return } if(!goog.async.nextTick.setImmediate_) { goog.async.nextTick.setImmediate_ = goog.async.nextTick.getSetImmediateEmulator_() } goog.async.nextTick.setImmediate_(cb) }; goog.async.nextTick.setImmediate_; goog.async.nextTick.getSetImmediateEmulator_ = function() { var Channel = goog.global["MessageChannel"]; if(typeof Channel === "undefined" && typeof window !== "undefined" && window.postMessage && window.addEventListener) { Channel = function() { var iframe = document.createElement("iframe"); iframe.style.display = "none"; iframe.src = ""; document.body.appendChild(iframe); var win = iframe.contentWindow; var doc = win.document; doc.open(); doc.write(""); doc.close(); var message = "callImmediate" + Math.random(); var origin = win.location.protocol + "//" + win.location.host; var onmessage = goog.bind(function(e) { if(e.origin != origin && e.data != message) { return } this["port1"].onmessage() }, this); win.addEventListener("message", onmessage, false); this["port1"] = {}; this["port2"] = {postMessage:function() { win.postMessage(message, origin) }} } } if(typeof Channel !== "undefined") { var channel = new Channel; var head = {}; var tail = head; channel["port1"].onmessage = function() { head = head.next; var cb = head.cb; head.cb = null; cb() }; return function(cb) { tail.next = {cb:cb}; tail = tail.next; channel["port2"].postMessage(0) } } if(typeof document !== "undefined" && "onreadystatechange" in document.createElement("script")) { return function(cb) { var script = document.createElement("script"); script.onreadystatechange = function() { script.onreadystatechange = null; script.parentNode.removeChild(script); script = null; cb(); cb = null }; document.documentElement.appendChild(script) } } return function(cb) { goog.global.setTimeout(cb, 0) } }; goog.async.nextTick.wrapCallback_ = goog.functions.identity; goog.debug.entryPointRegistry.register(function(transformer) { goog.async.nextTick.wrapCallback_ = transformer }); goog.provide("goog.structs.Collection"); goog.structs.Collection = function() { }; goog.structs.Collection.prototype.add; goog.structs.Collection.prototype.remove; goog.structs.Collection.prototype.contains; goog.structs.Collection.prototype.getCount; goog.provide("goog.structs.Set"); goog.require("goog.structs"); goog.require("goog.structs.Collection"); goog.require("goog.structs.Map"); goog.structs.Set = function(opt_values) { this.map_ = new goog.structs.Map; if(opt_values) { this.addAll(opt_values) } }; goog.structs.Set.getKey_ = function(val) { var type = typeof val; if(type == "object" && val || type == "function") { return"o" + goog.getUid((val)) }else { return type.substr(0, 1) + val } }; goog.structs.Set.prototype.getCount = function() { return this.map_.getCount() }; goog.structs.Set.prototype.add = function(element) { this.map_.set(goog.structs.Set.getKey_(element), element) }; goog.structs.Set.prototype.addAll = function(col) { var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { this.add(values[i]) } }; goog.structs.Set.prototype.removeAll = function(col) { var values = goog.structs.getValues(col); var l = values.length; for(var i = 0;i < l;i++) { this.remove(values[i]) } }; goog.structs.Set.prototype.remove = function(element) { return this.map_.remove(goog.structs.Set.getKey_(element)) }; goog.structs.Set.prototype.clear = function() { this.map_.clear() }; goog.structs.Set.prototype.isEmpty = function() { return this.map_.isEmpty() }; goog.structs.Set.prototype.contains = function(element) { return this.map_.containsKey(goog.structs.Set.getKey_(element)) }; goog.structs.Set.prototype.containsAll = function(col) { return goog.structs.every(col, this.contains, this) }; goog.structs.Set.prototype.intersection = function(col) { var result = new goog.structs.Set; var values = goog.structs.getValues(col); for(var i = 0;i < values.length;i++) { var value = values[i]; if(this.contains(value)) { result.add(value) } } return result }; goog.structs.Set.prototype.difference = function(col) { var result = this.clone(); result.removeAll(col); return result }; goog.structs.Set.prototype.getValues = function() { return this.map_.getValues() }; goog.structs.Set.prototype.clone = function() { return new goog.structs.Set(this) }; goog.structs.Set.prototype.equals = function(col) { return this.getCount() == goog.structs.getCount(col) && this.isSubsetOf(col) }; goog.structs.Set.prototype.isSubsetOf = function(col) { var colCount = goog.structs.getCount(col); if(this.getCount() > colCount) { return false } if(!(col instanceof goog.structs.Set) && colCount > 5) { col = new goog.structs.Set(col) } return goog.structs.every(this, function(value) { return goog.structs.contains(col, value) }) }; goog.structs.Set.prototype.__iterator__ = function(opt_keys) { return this.map_.__iterator__(false) }; goog.provide("goog.debug"); goog.require("goog.array"); goog.require("goog.string"); goog.require("goog.structs.Set"); goog.require("goog.userAgent"); goog.define("goog.debug.LOGGING_ENABLED", goog.DEBUG); goog.debug.catchErrors = function(logFunc, opt_cancel, opt_target) { var target = opt_target || goog.global; var oldErrorHandler = target.onerror; var retVal = !!opt_cancel; if(goog.userAgent.WEBKIT && !goog.userAgent.isVersionOrHigher("535.3")) { retVal = !retVal } target.onerror = function(message, url, line) { if(oldErrorHandler) { oldErrorHandler(message, url, line) } logFunc({message:message, fileName:url, line:line}); return retVal } }; goog.debug.expose = function(obj, opt_showFn) { if(typeof obj == "undefined") { return"undefined" } if(obj == null) { return"NULL" } var str = []; for(var x in obj) { if(!opt_showFn && goog.isFunction(obj[x])) { continue } var s = x + " \x3d "; try { s += obj[x] }catch(e) { s += "*** " + e + " ***" } str.push(s) } return str.join("\n") }; goog.debug.deepExpose = function(obj, opt_showFn) { var previous = new goog.structs.Set; var str = []; var helper = function(obj, space) { var nestspace = space + " "; var indentMultiline = function(str) { return str.replace(/\n/g, "\n" + space) }; try { if(!goog.isDef(obj)) { str.push("undefined") }else { if(goog.isNull(obj)) { str.push("NULL") }else { if(goog.isString(obj)) { str.push('"' + indentMultiline(obj) + '"') }else { if(goog.isFunction(obj)) { str.push(indentMultiline(String(obj))) }else { if(goog.isObject(obj)) { if(previous.contains(obj)) { str.push("*** reference loop detected ***") }else { previous.add(obj); str.push("{"); for(var x in obj) { if(!opt_showFn && goog.isFunction(obj[x])) { continue } str.push("\n"); str.push(nestspace); str.push(x + " \x3d "); helper(obj[x], nestspace) } str.push("\n" + space + "}") } }else { str.push(obj) } } } } } }catch(e) { str.push("*** " + e + " ***") } }; helper(obj, ""); return str.join("") }; goog.debug.exposeArray = function(arr) { var str = []; for(var i = 0;i < arr.length;i++) { if(goog.isArray(arr[i])) { str.push(goog.debug.exposeArray(arr[i])) }else { str.push(arr[i]) } } return"[ " + str.join(", ") + " ]" }; goog.debug.exposeException = function(err, opt_fn) { try { var e = goog.debug.normalizeErrorObject(err); var error = "Message: " + goog.string.htmlEscape(e.message) + '\nUrl: \x3ca href\x3d"view-source:' + e.fileName + '" target\x3d"_new"\x3e' + e.fileName + "\x3c/a\x3e\nLine: " + e.lineNumber + "\n\nBrowser stack:\n" + goog.string.htmlEscape(e.stack + "-\x3e ") + "[end]\n\nJS stack traversal:\n" + goog.string.htmlEscape(goog.debug.getStacktrace(opt_fn) + "-\x3e "); return error }catch(e2) { return"Exception trying to expose exception! You win, we lose. " + e2 } }; goog.debug.normalizeErrorObject = function(err) { var href = goog.getObjectByName("window.location.href"); if(goog.isString(err)) { return{"message":err, "name":"Unknown error", "lineNumber":"Not available", "fileName":href, "stack":"Not available"} } var lineNumber, fileName; var threwError = false; try { lineNumber = err.lineNumber || err.line || "Not available" }catch(e) { lineNumber = "Not available"; threwError = true } try { fileName = err.fileName || err.filename || err.sourceURL || goog.global["$googDebugFname"] || href }catch(e) { fileName = "Not available"; threwError = true } if(threwError || !err.lineNumber || !err.fileName || !err.stack || !err.message || !err.name) { return{"message":err.message || "Not available", "name":err.name || "UnknownError", "lineNumber":lineNumber, "fileName":fileName, "stack":err.stack || "Not available"} } return err }; goog.debug.enhanceError = function(err, opt_message) { var error = typeof err == "string" ? Error(err) : err; if(!error.stack) { error.stack = goog.debug.getStacktrace(arguments.callee.caller) } if(opt_message) { var x = 0; while(error["message" + x]) { ++x } error["message" + x] = String(opt_message) } return error }; goog.debug.getStacktraceSimple = function(opt_depth) { var sb = []; var fn = arguments.callee.caller; var depth = 0; while(fn && (!opt_depth || depth < opt_depth)) { sb.push(goog.debug.getFunctionName(fn)); sb.push("()\n"); try { fn = fn.caller }catch(e) { sb.push("[exception trying to get caller]\n"); break } depth++; if(depth >= goog.debug.MAX_STACK_DEPTH) { sb.push("[...long stack...]"); break } } if(opt_depth && depth >= opt_depth) { sb.push("[...reached max depth limit...]") }else { sb.push("[end]") } return sb.join("") }; goog.debug.MAX_STACK_DEPTH = 50; goog.debug.getStacktrace = function(opt_fn) { return goog.debug.getStacktraceHelper_(opt_fn || arguments.callee.caller, []) }; goog.debug.getStacktraceHelper_ = function(fn, visited) { var sb = []; if(goog.array.contains(visited, fn)) { sb.push("[...circular reference...]") }else { if(fn && visited.length < goog.debug.MAX_STACK_DEPTH) { sb.push(goog.debug.getFunctionName(fn) + "("); var args = fn.arguments; for(var i = 0;i < args.length;i++) { if(i > 0) { sb.push(", ") } var argDesc; var arg = args[i]; switch(typeof arg) { case "object": argDesc = arg ? "object" : "null"; break; case "string": argDesc = arg; break; case "number": argDesc = String(arg); break; case "boolean": argDesc = arg ? "true" : "false"; break; case "function": argDesc = goog.debug.getFunctionName(arg); argDesc = argDesc ? argDesc : "[fn]"; break; case "undefined": ; default: argDesc = typeof arg; break } if(argDesc.length > 40) { argDesc = argDesc.substr(0, 40) + "..." } sb.push(argDesc) } visited.push(fn); sb.push(")\n"); try { sb.push(goog.debug.getStacktraceHelper_(fn.caller, visited)) }catch(e) { sb.push("[exception trying to get caller]\n") } }else { if(fn) { sb.push("[...long stack...]") }else { sb.push("[end]") } } } return sb.join("") }; goog.debug.setFunctionResolver = function(resolver) { goog.debug.fnNameResolver_ = resolver }; goog.debug.getFunctionName = function(fn) { if(goog.debug.fnNameCache_[fn]) { return goog.debug.fnNameCache_[fn] } if(goog.debug.fnNameResolver_) { var name = goog.debug.fnNameResolver_(fn); if(name) { goog.debug.fnNameCache_[fn] = name; return name } } var functionSource = String(fn); if(!goog.debug.fnNameCache_[functionSource]) { var matches = /function ([^\(]+)/.exec(functionSource); if(matches) { var method = matches[1]; goog.debug.fnNameCache_[functionSource] = method }else { goog.debug.fnNameCache_[functionSource] = "[Anonymous]" } } return goog.debug.fnNameCache_[functionSource] }; goog.debug.makeWhitespaceVisible = function(string) { return string.replace(/ /g, "[_]").replace(/\f/g, "[f]").replace(/\n/g, "[n]\n").replace(/\r/g, "[r]").replace(/\t/g, "[t]") }; goog.debug.fnNameCache_ = {}; goog.debug.fnNameResolver_; goog.provide("goog.debug.LogRecord"); goog.debug.LogRecord = function(level, msg, loggerName, opt_time, opt_sequenceNumber) { this.reset(level, msg, loggerName, opt_time, opt_sequenceNumber) }; goog.debug.LogRecord.prototype.time_; goog.debug.LogRecord.prototype.level_; goog.debug.LogRecord.prototype.msg_; goog.debug.LogRecord.prototype.loggerName_; goog.debug.LogRecord.prototype.sequenceNumber_ = 0; goog.debug.LogRecord.prototype.exception_ = null; goog.debug.LogRecord.prototype.exceptionText_ = null; goog.define("goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS", true); goog.debug.LogRecord.nextSequenceNumber_ = 0; goog.debug.LogRecord.prototype.reset = function(level, msg, loggerName, opt_time, opt_sequenceNumber) { if(goog.debug.LogRecord.ENABLE_SEQUENCE_NUMBERS) { this.sequenceNumber_ = typeof opt_sequenceNumber == "number" ? opt_sequenceNumber : goog.debug.LogRecord.nextSequenceNumber_++ } this.time_ = opt_time || goog.now(); this.level_ = level; this.msg_ = msg; this.loggerName_ = loggerName; delete this.exception_; delete this.exceptionText_ }; goog.debug.LogRecord.prototype.getLoggerName = function() { return this.loggerName_ }; goog.debug.LogRecord.prototype.getException = function() { return this.exception_ }; goog.debug.LogRecord.prototype.setException = function(exception) { this.exception_ = exception }; goog.debug.LogRecord.prototype.getExceptionText = function() { return this.exceptionText_ }; goog.debug.LogRecord.prototype.setExceptionText = function(text) { this.exceptionText_ = text }; goog.debug.LogRecord.prototype.setLoggerName = function(loggerName) { this.loggerName_ = loggerName }; goog.debug.LogRecord.prototype.getLevel = function() { return this.level_ }; goog.debug.LogRecord.prototype.setLevel = function(level) { this.level_ = level }; goog.debug.LogRecord.prototype.getMessage = function() { return this.msg_ }; goog.debug.LogRecord.prototype.setMessage = function(msg) { this.msg_ = msg }; goog.debug.LogRecord.prototype.getMillis = function() { return this.time_ }; goog.debug.LogRecord.prototype.setMillis = function(time) { this.time_ = time }; goog.debug.LogRecord.prototype.getSequenceNumber = function() { return this.sequenceNumber_ }; goog.provide("goog.debug.LogBuffer"); goog.require("goog.asserts"); goog.require("goog.debug.LogRecord"); goog.debug.LogBuffer = function() { goog.asserts.assert(goog.debug.LogBuffer.isBufferingEnabled(), "Cannot use goog.debug.LogBuffer without defining " + "goog.debug.LogBuffer.CAPACITY."); this.clear() }; goog.debug.LogBuffer.getInstance = function() { if(!goog.debug.LogBuffer.instance_) { goog.debug.LogBuffer.instance_ = new goog.debug.LogBuffer } return goog.debug.LogBuffer.instance_ }; goog.define("goog.debug.LogBuffer.CAPACITY", 0); goog.debug.LogBuffer.prototype.buffer_; goog.debug.LogBuffer.prototype.curIndex_; goog.debug.LogBuffer.prototype.isFull_; goog.debug.LogBuffer.prototype.addRecord = function(level, msg, loggerName) { var curIndex = (this.curIndex_ + 1) % goog.debug.LogBuffer.CAPACITY; this.curIndex_ = curIndex; if(this.isFull_) { var ret = this.buffer_[curIndex]; ret.reset(level, msg, loggerName); return ret } this.isFull_ = curIndex == goog.debug.LogBuffer.CAPACITY - 1; return this.buffer_[curIndex] = new goog.debug.LogRecord(level, msg, loggerName) }; goog.debug.LogBuffer.isBufferingEnabled = function() { return goog.debug.LogBuffer.CAPACITY > 0 }; goog.debug.LogBuffer.prototype.clear = function() { this.buffer_ = new Array(goog.debug.LogBuffer.CAPACITY); this.curIndex_ = -1; this.isFull_ = false }; goog.debug.LogBuffer.prototype.forEachRecord = function(func) { var buffer = this.buffer_; if(!buffer[0]) { return } var curIndex = this.curIndex_; var i = this.isFull_ ? curIndex : -1; do { i = (i + 1) % goog.debug.LogBuffer.CAPACITY; func((buffer[i])) }while(i != curIndex) }; goog.provide("goog.debug.LogManager"); goog.provide("goog.debug.Logger"); goog.provide("goog.debug.Logger.Level"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.debug"); goog.require("goog.debug.LogBuffer"); goog.require("goog.debug.LogRecord"); goog.debug.Logger = function(name) { this.name_ = name }; goog.debug.Logger.prototype.parent_ = null; goog.debug.Logger.prototype.level_ = null; goog.debug.Logger.prototype.children_ = null; goog.debug.Logger.prototype.handlers_ = null; goog.define("goog.debug.Logger.ENABLE_HIERARCHY", true); if(!goog.debug.Logger.ENABLE_HIERARCHY) { goog.debug.Logger.rootHandlers_ = []; goog.debug.Logger.rootLevel_ } goog.debug.Logger.Level = function(name, value) { this.name = name; this.value = value }; goog.debug.Logger.Level.prototype.toString = function() { return this.name }; goog.debug.Logger.Level.OFF = new goog.debug.Logger.Level("OFF", Infinity); goog.debug.Logger.Level.SHOUT = new goog.debug.Logger.Level("SHOUT", 1200); goog.debug.Logger.Level.SEVERE = new goog.debug.Logger.Level("SEVERE", 1E3); goog.debug.Logger.Level.WARNING = new goog.debug.Logger.Level("WARNING", 900); goog.debug.Logger.Level.INFO = new goog.debug.Logger.Level("INFO", 800); goog.debug.Logger.Level.CONFIG = new goog.debug.Logger.Level("CONFIG", 700); goog.debug.Logger.Level.FINE = new goog.debug.Logger.Level("FINE", 500); goog.debug.Logger.Level.FINER = new goog.debug.Logger.Level("FINER", 400); goog.debug.Logger.Level.FINEST = new goog.debug.Logger.Level("FINEST", 300); goog.debug.Logger.Level.ALL = new goog.debug.Logger.Level("ALL", 0); goog.debug.Logger.Level.PREDEFINED_LEVELS = [goog.debug.Logger.Level.OFF, goog.debug.Logger.Level.SHOUT, goog.debug.Logger.Level.SEVERE, goog.debug.Logger.Level.WARNING, goog.debug.Logger.Level.INFO, goog.debug.Logger.Level.CONFIG, goog.debug.Logger.Level.FINE, goog.debug.Logger.Level.FINER, goog.debug.Logger.Level.FINEST, goog.debug.Logger.Level.ALL]; goog.debug.Logger.Level.predefinedLevelsCache_ = null; goog.debug.Logger.Level.createPredefinedLevelsCache_ = function() { goog.debug.Logger.Level.predefinedLevelsCache_ = {}; for(var i = 0, level;level = goog.debug.Logger.Level.PREDEFINED_LEVELS[i];i++) { goog.debug.Logger.Level.predefinedLevelsCache_[level.value] = level; goog.debug.Logger.Level.predefinedLevelsCache_[level.name] = level } }; goog.debug.Logger.Level.getPredefinedLevel = function(name) { if(!goog.debug.Logger.Level.predefinedLevelsCache_) { goog.debug.Logger.Level.createPredefinedLevelsCache_() } return goog.debug.Logger.Level.predefinedLevelsCache_[name] || null }; goog.debug.Logger.Level.getPredefinedLevelByValue = function(value) { if(!goog.debug.Logger.Level.predefinedLevelsCache_) { goog.debug.Logger.Level.createPredefinedLevelsCache_() } if(value in goog.debug.Logger.Level.predefinedLevelsCache_) { return goog.debug.Logger.Level.predefinedLevelsCache_[value] } for(var i = 0;i < goog.debug.Logger.Level.PREDEFINED_LEVELS.length;++i) { var level = goog.debug.Logger.Level.PREDEFINED_LEVELS[i]; if(level.value <= value) { return level } } return null }; goog.debug.Logger.getLogger = function(name) { return goog.debug.LogManager.getLogger(name) }; goog.debug.Logger.logToProfilers = function(msg) { if(goog.global["console"]) { if(goog.global["console"]["timeStamp"]) { goog.global["console"]["timeStamp"](msg) }else { if(goog.global["console"]["markTimeline"]) { goog.global["console"]["markTimeline"](msg) } } } if(goog.global["msWriteProfilerMark"]) { goog.global["msWriteProfilerMark"](msg) } }; goog.debug.Logger.prototype.getName = function() { return this.name_ }; goog.debug.Logger.prototype.addHandler = function(handler) { if(goog.debug.LOGGING_ENABLED) { if(goog.debug.Logger.ENABLE_HIERARCHY) { if(!this.handlers_) { this.handlers_ = [] } this.handlers_.push(handler) }else { goog.asserts.assert(!this.name_, "Cannot call addHandler on a non-root logger when " + "goog.debug.Logger.ENABLE_HIERARCHY is false."); goog.debug.Logger.rootHandlers_.push(handler) } } }; goog.debug.Logger.prototype.removeHandler = function(handler) { if(goog.debug.LOGGING_ENABLED) { var handlers = goog.debug.Logger.ENABLE_HIERARCHY ? this.handlers_ : goog.debug.Logger.rootHandlers_; return!!handlers && goog.array.remove(handlers, handler) }else { return false } }; goog.debug.Logger.prototype.getParent = function() { return this.parent_ }; goog.debug.Logger.prototype.getChildren = function() { if(!this.children_) { this.children_ = {} } return this.children_ }; goog.debug.Logger.prototype.setLevel = function(level) { if(goog.debug.LOGGING_ENABLED) { if(goog.debug.Logger.ENABLE_HIERARCHY) { this.level_ = level }else { goog.asserts.assert(!this.name_, "Cannot call setLevel() on a non-root logger when " + "goog.debug.Logger.ENABLE_HIERARCHY is false."); goog.debug.Logger.rootLevel_ = level } } }; goog.debug.Logger.prototype.getLevel = function() { return goog.debug.LOGGING_ENABLED ? this.level_ : goog.debug.Logger.Level.OFF }; goog.debug.Logger.prototype.getEffectiveLevel = function() { if(!goog.debug.LOGGING_ENABLED) { return goog.debug.Logger.Level.OFF } if(!goog.debug.Logger.ENABLE_HIERARCHY) { return goog.debug.Logger.rootLevel_ } if(this.level_) { return this.level_ } if(this.parent_) { return this.parent_.getEffectiveLevel() } goog.asserts.fail("Root logger has no level set."); return null }; goog.debug.Logger.prototype.isLoggable = function(level) { return goog.debug.LOGGING_ENABLED && level.value >= this.getEffectiveLevel().value }; goog.debug.Logger.prototype.log = function(level, msg, opt_exception) { if(goog.debug.LOGGING_ENABLED && this.isLoggable(level)) { this.doLogRecord_(this.getLogRecord(level, msg, opt_exception)) } }; goog.debug.Logger.prototype.getLogRecord = function(level, msg, opt_exception) { if(goog.debug.LogBuffer.isBufferingEnabled()) { var logRecord = goog.debug.LogBuffer.getInstance().addRecord(level, msg, this.name_) }else { logRecord = new goog.debug.LogRecord(level, String(msg), this.name_) } if(opt_exception) { logRecord.setException(opt_exception); logRecord.setExceptionText(goog.debug.exposeException(opt_exception, arguments.callee.caller)) } return logRecord }; goog.debug.Logger.prototype.shout = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.SHOUT, msg, opt_exception) } }; goog.debug.Logger.prototype.severe = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.SEVERE, msg, opt_exception) } }; goog.debug.Logger.prototype.warning = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.WARNING, msg, opt_exception) } }; goog.debug.Logger.prototype.info = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.INFO, msg, opt_exception) } }; goog.debug.Logger.prototype.config = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.CONFIG, msg, opt_exception) } }; goog.debug.Logger.prototype.fine = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.FINE, msg, opt_exception) } }; goog.debug.Logger.prototype.finer = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.FINER, msg, opt_exception) } }; goog.debug.Logger.prototype.finest = function(msg, opt_exception) { if(goog.debug.LOGGING_ENABLED) { this.log(goog.debug.Logger.Level.FINEST, msg, opt_exception) } }; goog.debug.Logger.prototype.logRecord = function(logRecord) { if(goog.debug.LOGGING_ENABLED && this.isLoggable(logRecord.getLevel())) { this.doLogRecord_(logRecord) } }; goog.debug.Logger.prototype.doLogRecord_ = function(logRecord) { goog.debug.Logger.logToProfilers("log:" + logRecord.getMessage()); if(goog.debug.Logger.ENABLE_HIERARCHY) { var target = this; while(target) { target.callPublish_(logRecord); target = target.getParent() } }else { for(var i = 0, handler;handler = goog.debug.Logger.rootHandlers_[i++];) { handler(logRecord) } } }; goog.debug.Logger.prototype.callPublish_ = function(logRecord) { if(this.handlers_) { for(var i = 0, handler;handler = this.handlers_[i];i++) { handler(logRecord) } } }; goog.debug.Logger.prototype.setParent_ = function(parent) { this.parent_ = parent }; goog.debug.Logger.prototype.addChild_ = function(name, logger) { this.getChildren()[name] = logger }; goog.debug.LogManager = {}; goog.debug.LogManager.loggers_ = {}; goog.debug.LogManager.rootLogger_ = null; goog.debug.LogManager.initialize = function() { if(!goog.debug.LogManager.rootLogger_) { goog.debug.LogManager.rootLogger_ = new goog.debug.Logger(""); goog.debug.LogManager.loggers_[""] = goog.debug.LogManager.rootLogger_; goog.debug.LogManager.rootLogger_.setLevel(goog.debug.Logger.Level.CONFIG) } }; goog.debug.LogManager.getLoggers = function() { return goog.debug.LogManager.loggers_ }; goog.debug.LogManager.getRoot = function() { goog.debug.LogManager.initialize(); return(goog.debug.LogManager.rootLogger_) }; goog.debug.LogManager.getLogger = function(name) { goog.debug.LogManager.initialize(); var ret = goog.debug.LogManager.loggers_[name]; return ret || goog.debug.LogManager.createLogger_(name) }; goog.debug.LogManager.createFunctionForCatchErrors = function(opt_logger) { return function(info) { var logger = opt_logger || goog.debug.LogManager.getRoot(); logger.severe("Error: " + info.message + " (" + info.fileName + " @ Line: " + info.line + ")") } }; goog.debug.LogManager.createLogger_ = function(name) { var logger = new goog.debug.Logger(name); if(goog.debug.Logger.ENABLE_HIERARCHY) { var lastDotIndex = name.lastIndexOf("."); var parentName = name.substr(0, lastDotIndex); var leafName = name.substr(lastDotIndex + 1); var parentLogger = goog.debug.LogManager.getLogger(parentName); parentLogger.addChild_(leafName, logger); logger.setParent_(parentLogger) } goog.debug.LogManager.loggers_[name] = logger; return logger }; goog.provide("goog.debug.RelativeTimeProvider"); goog.debug.RelativeTimeProvider = function() { this.relativeTimeStart_ = goog.now() }; goog.debug.RelativeTimeProvider.defaultInstance_ = new goog.debug.RelativeTimeProvider; goog.debug.RelativeTimeProvider.prototype.set = function(timeStamp) { this.relativeTimeStart_ = timeStamp }; goog.debug.RelativeTimeProvider.prototype.reset = function() { this.set(goog.now()) }; goog.debug.RelativeTimeProvider.prototype.get = function() { return this.relativeTimeStart_ }; goog.debug.RelativeTimeProvider.getDefaultInstance = function() { return goog.debug.RelativeTimeProvider.defaultInstance_ }; goog.provide("goog.debug.Formatter"); goog.provide("goog.debug.HtmlFormatter"); goog.provide("goog.debug.TextFormatter"); goog.require("goog.debug.RelativeTimeProvider"); goog.require("goog.string"); goog.debug.Formatter = function(opt_prefix) { this.prefix_ = opt_prefix || ""; this.startTimeProvider_ = goog.debug.RelativeTimeProvider.getDefaultInstance() }; goog.debug.Formatter.prototype.showAbsoluteTime = true; goog.debug.Formatter.prototype.showRelativeTime = true; goog.debug.Formatter.prototype.showLoggerName = true; goog.debug.Formatter.prototype.showExceptionText = false; goog.debug.Formatter.prototype.showSeverityLevel = false; goog.debug.Formatter.prototype.formatRecord = goog.abstractMethod; goog.debug.Formatter.prototype.setStartTimeProvider = function(provider) { this.startTimeProvider_ = provider }; goog.debug.Formatter.prototype.getStartTimeProvider = function() { return this.startTimeProvider_ }; goog.debug.Formatter.prototype.resetRelativeTimeStart = function() { this.startTimeProvider_.reset() }; goog.debug.Formatter.getDateTimeStamp_ = function(logRecord) { var time = new Date(logRecord.getMillis()); return goog.debug.Formatter.getTwoDigitString_(time.getFullYear() - 2E3) + goog.debug.Formatter.getTwoDigitString_(time.getMonth() + 1) + goog.debug.Formatter.getTwoDigitString_(time.getDate()) + " " + goog.debug.Formatter.getTwoDigitString_(time.getHours()) + ":" + goog.debug.Formatter.getTwoDigitString_(time.getMinutes()) + ":" + goog.debug.Formatter.getTwoDigitString_(time.getSeconds()) + "." + goog.debug.Formatter.getTwoDigitString_(Math.floor(time.getMilliseconds() / 10)) }; goog.debug.Formatter.getTwoDigitString_ = function(n) { if(n < 10) { return"0" + n } return String(n) }; goog.debug.Formatter.getRelativeTime_ = function(logRecord, relativeTimeStart) { var ms = logRecord.getMillis() - relativeTimeStart; var sec = ms / 1E3; var str = sec.toFixed(3); var spacesToPrepend = 0; if(sec < 1) { spacesToPrepend = 2 }else { while(sec < 100) { spacesToPrepend++; sec *= 10 } } while(spacesToPrepend-- > 0) { str = " " + str } return str }; goog.debug.HtmlFormatter = function(opt_prefix) { goog.debug.Formatter.call(this, opt_prefix) }; goog.inherits(goog.debug.HtmlFormatter, goog.debug.Formatter); goog.debug.HtmlFormatter.prototype.showExceptionText = true; goog.debug.HtmlFormatter.prototype.formatRecord = function(logRecord) { var className; switch(logRecord.getLevel().value) { case goog.debug.Logger.Level.SHOUT.value: className = "dbg-sh"; break; case goog.debug.Logger.Level.SEVERE.value: className = "dbg-sev"; break; case goog.debug.Logger.Level.WARNING.value: className = "dbg-w"; break; case goog.debug.Logger.Level.INFO.value: className = "dbg-i"; break; case goog.debug.Logger.Level.FINE.value: ; default: className = "dbg-f"; break } var sb = []; sb.push(this.prefix_, " "); if(this.showAbsoluteTime) { sb.push("[", goog.debug.Formatter.getDateTimeStamp_(logRecord), "] ") } if(this.showRelativeTime) { sb.push("[", goog.string.whitespaceEscape(goog.debug.Formatter.getRelativeTime_(logRecord, this.startTimeProvider_.get())), "s] ") } if(this.showLoggerName) { sb.push("[", goog.string.htmlEscape(logRecord.getLoggerName()), "] ") } if(this.showSeverityLevel) { sb.push("[", goog.string.htmlEscape(logRecord.getLevel().name), "] ") } sb.push('\x3cspan class\x3d"', className, '"\x3e', goog.string.newLineToBr(goog.string.whitespaceEscape(goog.string.htmlEscape(logRecord.getMessage())))); if(this.showExceptionText && logRecord.getException()) { sb.push("\x3cbr\x3e", goog.string.newLineToBr(goog.string.whitespaceEscape(logRecord.getExceptionText() || ""))) } sb.push("\x3c/span\x3e\x3cbr\x3e"); return sb.join("") }; goog.debug.TextFormatter = function(opt_prefix) { goog.debug.Formatter.call(this, opt_prefix) }; goog.inherits(goog.debug.TextFormatter, goog.debug.Formatter); goog.debug.TextFormatter.prototype.formatRecord = function(logRecord) { var sb = []; sb.push(this.prefix_, " "); if(this.showAbsoluteTime) { sb.push("[", goog.debug.Formatter.getDateTimeStamp_(logRecord), "] ") } if(this.showRelativeTime) { sb.push("[", goog.debug.Formatter.getRelativeTime_(logRecord, this.startTimeProvider_.get()), "s] ") } if(this.showLoggerName) { sb.push("[", logRecord.getLoggerName(), "] ") } if(this.showSeverityLevel) { sb.push("[", logRecord.getLevel().name, "] ") } sb.push(logRecord.getMessage(), "\n"); if(this.showExceptionText && logRecord.getException()) { sb.push(logRecord.getExceptionText(), "\n") } return sb.join("") }; goog.provide("goog.debug.Console"); goog.require("goog.debug.LogManager"); goog.require("goog.debug.Logger.Level"); goog.require("goog.debug.TextFormatter"); goog.debug.Console = function() { this.publishHandler_ = goog.bind(this.addLogRecord, this); this.formatter_ = new goog.debug.TextFormatter; this.formatter_.showAbsoluteTime = false; this.formatter_.showExceptionText = false; this.isCapturing_ = false; this.logBuffer_ = ""; this.filteredLoggers_ = {} }; goog.debug.Console.prototype.getFormatter = function() { return this.formatter_ }; goog.debug.Console.prototype.setCapturing = function(capturing) { if(capturing == this.isCapturing_) { return } var rootLogger = goog.debug.LogManager.getRoot(); if(capturing) { rootLogger.addHandler(this.publishHandler_) }else { rootLogger.removeHandler(this.publishHandler_); this.logBuffer = "" } this.isCapturing_ = capturing }; goog.debug.Console.prototype.addLogRecord = function(logRecord) { if(this.filteredLoggers_[logRecord.getLoggerName()]) { return } var record = this.formatter_.formatRecord(logRecord); var console = goog.debug.Console.console_; if(console) { switch(logRecord.getLevel()) { case goog.debug.Logger.Level.SHOUT: goog.debug.Console.logToConsole_(console, "info", record); break; case goog.debug.Logger.Level.SEVERE: goog.debug.Console.logToConsole_(console, "error", record); break; case goog.debug.Logger.Level.WARNING: goog.debug.Console.logToConsole_(console, "warn", record); break; default: goog.debug.Console.logToConsole_(console, "debug", record); break } }else { if(window.opera) { window.opera["postError"](record) }else { this.logBuffer_ += record } } }; goog.debug.Console.prototype.addFilter = function(loggerName) { this.filteredLoggers_[loggerName] = true }; goog.debug.Console.prototype.removeFilter = function(loggerName) { delete this.filteredLoggers_[loggerName] }; goog.debug.Console.instance = null; goog.debug.Console.console_ = window.console; goog.debug.Console.setConsole = function(console) { goog.debug.Console.console_ = console }; goog.debug.Console.autoInstall = function() { if(!goog.debug.Console.instance) { goog.debug.Console.instance = new goog.debug.Console } if(window.location.href.indexOf("Debug\x3dtrue") != -1) { goog.debug.Console.instance.setCapturing(true) } }; goog.debug.Console.show = function() { alert(goog.debug.Console.instance.logBuffer_) }; goog.debug.Console.logToConsole_ = function(console, fnName, record) { if(console[fnName]) { console[fnName](record) }else { console.log(record) } }; goog.provide("goog.dom.ViewportSizeMonitor"); goog.require("goog.dom"); goog.require("goog.events"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.math.Size"); goog.dom.ViewportSizeMonitor = function(opt_window) { goog.events.EventTarget.call(this); this.window_ = opt_window || window; this.listenerKey_ = goog.events.listen(this.window_, goog.events.EventType.RESIZE, this.handleResize_, false, this); this.size_ = goog.dom.getViewportSize(this.window_) }; goog.inherits(goog.dom.ViewportSizeMonitor, goog.events.EventTarget); goog.dom.ViewportSizeMonitor.getInstanceForWindow = function(opt_window) { var currentWindow = opt_window || window; var uid = goog.getUid(currentWindow); return goog.dom.ViewportSizeMonitor.windowInstanceMap_[uid] = goog.dom.ViewportSizeMonitor.windowInstanceMap_[uid] || new goog.dom.ViewportSizeMonitor(currentWindow) }; goog.dom.ViewportSizeMonitor.removeInstanceForWindow = function(opt_window) { var uid = goog.getUid(opt_window || window); goog.dispose(goog.dom.ViewportSizeMonitor.windowInstanceMap_[uid]); delete goog.dom.ViewportSizeMonitor.windowInstanceMap_[uid] }; goog.dom.ViewportSizeMonitor.windowInstanceMap_ = {}; goog.dom.ViewportSizeMonitor.prototype.listenerKey_ = null; goog.dom.ViewportSizeMonitor.prototype.window_ = null; goog.dom.ViewportSizeMonitor.prototype.size_ = null; goog.dom.ViewportSizeMonitor.prototype.getSize = function() { return this.size_ ? this.size_.clone() : null }; goog.dom.ViewportSizeMonitor.prototype.disposeInternal = function() { goog.dom.ViewportSizeMonitor.superClass_.disposeInternal.call(this); if(this.listenerKey_) { goog.events.unlistenByKey(this.listenerKey_); this.listenerKey_ = null } this.window_ = null; this.size_ = null }; goog.dom.ViewportSizeMonitor.prototype.handleResize_ = function(event) { var size = goog.dom.getViewportSize(this.window_); if(!goog.math.Size.equals(size, this.size_)) { this.size_ = size; this.dispatchEvent(goog.events.EventType.RESIZE) } }; goog.provide("goog.events.KeyCodes"); goog.require("goog.userAgent"); goog.events.KeyCodes = {WIN_KEY_FF_LINUX:0, MAC_ENTER:3, BACKSPACE:8, TAB:9, NUM_CENTER:12, ENTER:13, SHIFT:16, CTRL:17, ALT:18, PAUSE:19, CAPS_LOCK:20, ESC:27, SPACE:32, PAGE_UP:33, PAGE_DOWN:34, END:35, HOME:36, LEFT:37, UP:38, RIGHT:39, DOWN:40, PRINT_SCREEN:44, INSERT:45, DELETE:46, ZERO:48, ONE:49, TWO:50, THREE:51, FOUR:52, FIVE:53, SIX:54, SEVEN:55, EIGHT:56, NINE:57, FF_SEMICOLON:59, FF_EQUALS:61, QUESTION_MARK:63, A:65, B:66, C:67, D:68, E:69, F:70, G:71, H:72, I:73, J:74, K:75, L:76, M:77, N:78, O:79, P:80, Q:81, R:82, S:83, T:84, U:85, V:86, W:87, X:88, Y:89, Z:90, META:91, WIN_KEY_RIGHT:92, CONTEXT_MENU:93, NUM_ZERO:96, NUM_ONE:97, NUM_TWO:98, NUM_THREE:99, NUM_FOUR:100, NUM_FIVE:101, NUM_SIX:102, NUM_SEVEN:103, NUM_EIGHT:104, NUM_NINE:105, NUM_MULTIPLY:106, NUM_PLUS:107, NUM_MINUS:109, NUM_PERIOD:110, NUM_DIVISION:111, F1:112, F2:113, F3:114, F4:115, F5:116, F6:117, F7:118, F8:119, F9:120, F10:121, F11:122, F12:123, NUMLOCK:144, SCROLL_LOCK:145, FIRST_MEDIA_KEY:166, LAST_MEDIA_KEY:183, SEMICOLON:186, DASH:189, EQUALS:187, COMMA:188, PERIOD:190, SLASH:191, APOSTROPHE:192, TILDE:192, SINGLE_QUOTE:222, OPEN_SQUARE_BRACKET:219, BACKSLASH:220, CLOSE_SQUARE_BRACKET:221, WIN_KEY:224, MAC_FF_META:224, WIN_IME:229, PHANTOM:255}; goog.events.KeyCodes.isTextModifyingKeyEvent = function(e) { if(e.altKey && !e.ctrlKey || e.metaKey || e.keyCode >= goog.events.KeyCodes.F1 && e.keyCode <= goog.events.KeyCodes.F12) { return false } switch(e.keyCode) { case goog.events.KeyCodes.ALT: ; case goog.events.KeyCodes.CAPS_LOCK: ; case goog.events.KeyCodes.CONTEXT_MENU: ; case goog.events.KeyCodes.CTRL: ; case goog.events.KeyCodes.DOWN: ; case goog.events.KeyCodes.END: ; case goog.events.KeyCodes.ESC: ; case goog.events.KeyCodes.HOME: ; case goog.events.KeyCodes.INSERT: ; case goog.events.KeyCodes.LEFT: ; case goog.events.KeyCodes.MAC_FF_META: ; case goog.events.KeyCodes.META: ; case goog.events.KeyCodes.NUMLOCK: ; case goog.events.KeyCodes.NUM_CENTER: ; case goog.events.KeyCodes.PAGE_DOWN: ; case goog.events.KeyCodes.PAGE_UP: ; case goog.events.KeyCodes.PAUSE: ; case goog.events.KeyCodes.PHANTOM: ; case goog.events.KeyCodes.PRINT_SCREEN: ; case goog.events.KeyCodes.RIGHT: ; case goog.events.KeyCodes.SCROLL_LOCK: ; case goog.events.KeyCodes.SHIFT: ; case goog.events.KeyCodes.UP: ; case goog.events.KeyCodes.WIN_KEY: ; case goog.events.KeyCodes.WIN_KEY_RIGHT: return false; case goog.events.KeyCodes.WIN_KEY_FF_LINUX: return!goog.userAgent.GECKO; default: return e.keyCode < goog.events.KeyCodes.FIRST_MEDIA_KEY || e.keyCode > goog.events.KeyCodes.LAST_MEDIA_KEY } }; goog.events.KeyCodes.firesKeyPressEvent = function(keyCode, opt_heldKeyCode, opt_shiftKey, opt_ctrlKey, opt_altKey) { if(!goog.userAgent.IE && !(goog.userAgent.WEBKIT && goog.userAgent.isVersionOrHigher("525"))) { return true } if(goog.userAgent.MAC && opt_altKey) { return goog.events.KeyCodes.isCharacterKey(keyCode) } if(opt_altKey && !opt_ctrlKey) { return false } if(!opt_shiftKey && (opt_heldKeyCode == goog.events.KeyCodes.CTRL || opt_heldKeyCode == goog.events.KeyCodes.ALT || goog.userAgent.MAC && opt_heldKeyCode == goog.events.KeyCodes.META)) { return false } if(goog.userAgent.WEBKIT && opt_ctrlKey && opt_shiftKey) { switch(keyCode) { case goog.events.KeyCodes.BACKSLASH: ; case goog.events.KeyCodes.OPEN_SQUARE_BRACKET: ; case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET: ; case goog.events.KeyCodes.TILDE: ; case goog.events.KeyCodes.SEMICOLON: ; case goog.events.KeyCodes.DASH: ; case goog.events.KeyCodes.EQUALS: ; case goog.events.KeyCodes.COMMA: ; case goog.events.KeyCodes.PERIOD: ; case goog.events.KeyCodes.SLASH: ; case goog.events.KeyCodes.APOSTROPHE: ; case goog.events.KeyCodes.SINGLE_QUOTE: return false } } if(goog.userAgent.IE && opt_ctrlKey && opt_heldKeyCode == keyCode) { return false } switch(keyCode) { case goog.events.KeyCodes.ENTER: return!(goog.userAgent.IE && goog.userAgent.isDocumentModeOrHigher(9)); case goog.events.KeyCodes.ESC: return!goog.userAgent.WEBKIT } return goog.events.KeyCodes.isCharacterKey(keyCode) }; goog.events.KeyCodes.isCharacterKey = function(keyCode) { if(keyCode >= goog.events.KeyCodes.ZERO && keyCode <= goog.events.KeyCodes.NINE) { return true } if(keyCode >= goog.events.KeyCodes.NUM_ZERO && keyCode <= goog.events.KeyCodes.NUM_MULTIPLY) { return true } if(keyCode >= goog.events.KeyCodes.A && keyCode <= goog.events.KeyCodes.Z) { return true } if(goog.userAgent.WEBKIT && keyCode == 0) { return true } switch(keyCode) { case goog.events.KeyCodes.SPACE: ; case goog.events.KeyCodes.QUESTION_MARK: ; case goog.events.KeyCodes.NUM_PLUS: ; case goog.events.KeyCodes.NUM_MINUS: ; case goog.events.KeyCodes.NUM_PERIOD: ; case goog.events.KeyCodes.NUM_DIVISION: ; case goog.events.KeyCodes.SEMICOLON: ; case goog.events.KeyCodes.FF_SEMICOLON: ; case goog.events.KeyCodes.DASH: ; case goog.events.KeyCodes.EQUALS: ; case goog.events.KeyCodes.FF_EQUALS: ; case goog.events.KeyCodes.COMMA: ; case goog.events.KeyCodes.PERIOD: ; case goog.events.KeyCodes.SLASH: ; case goog.events.KeyCodes.APOSTROPHE: ; case goog.events.KeyCodes.SINGLE_QUOTE: ; case goog.events.KeyCodes.OPEN_SQUARE_BRACKET: ; case goog.events.KeyCodes.BACKSLASH: ; case goog.events.KeyCodes.CLOSE_SQUARE_BRACKET: return true; default: return false } }; goog.events.KeyCodes.normalizeGeckoKeyCode = function(keyCode) { switch(keyCode) { case goog.events.KeyCodes.FF_EQUALS: return goog.events.KeyCodes.EQUALS; case goog.events.KeyCodes.FF_SEMICOLON: return goog.events.KeyCodes.SEMICOLON; case goog.events.KeyCodes.MAC_FF_META: return goog.events.KeyCodes.META; case goog.events.KeyCodes.WIN_KEY_FF_LINUX: return goog.events.KeyCodes.WIN_KEY; default: return keyCode } }; goog.provide("goog.events.KeyEvent"); goog.provide("goog.events.KeyHandler"); goog.provide("goog.events.KeyHandler.EventType"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.events.KeyCodes"); goog.require("goog.userAgent"); goog.events.KeyHandler = function(opt_element, opt_capture) { goog.events.EventTarget.call(this); if(opt_element) { this.attach(opt_element, opt_capture) } }; goog.inherits(goog.events.KeyHandler, goog.events.EventTarget); goog.events.KeyHandler.prototype.element_ = null; goog.events.KeyHandler.prototype.keyPressKey_ = null; goog.events.KeyHandler.prototype.keyDownKey_ = null; goog.events.KeyHandler.prototype.keyUpKey_ = null; goog.events.KeyHandler.prototype.lastKey_ = -1; goog.events.KeyHandler.prototype.keyCode_ = -1; goog.events.KeyHandler.prototype.altKey_ = false; goog.events.KeyHandler.EventType = {KEY:"key"}; goog.events.KeyHandler.safariKey_ = {3:goog.events.KeyCodes.ENTER, 12:goog.events.KeyCodes.NUMLOCK, 63232:goog.events.KeyCodes.UP, 63233:goog.events.KeyCodes.DOWN, 63234:goog.events.KeyCodes.LEFT, 63235:goog.events.KeyCodes.RIGHT, 63236:goog.events.KeyCodes.F1, 63237:goog.events.KeyCodes.F2, 63238:goog.events.KeyCodes.F3, 63239:goog.events.KeyCodes.F4, 63240:goog.events.KeyCodes.F5, 63241:goog.events.KeyCodes.F6, 63242:goog.events.KeyCodes.F7, 63243:goog.events.KeyCodes.F8, 63244:goog.events.KeyCodes.F9, 63245:goog.events.KeyCodes.F10, 63246:goog.events.KeyCodes.F11, 63247:goog.events.KeyCodes.F12, 63248:goog.events.KeyCodes.PRINT_SCREEN, 63272:goog.events.KeyCodes.DELETE, 63273:goog.events.KeyCodes.HOME, 63275:goog.events.KeyCodes.END, 63276:goog.events.KeyCodes.PAGE_UP, 63277:goog.events.KeyCodes.PAGE_DOWN, 63289:goog.events.KeyCodes.NUMLOCK, 63302:goog.events.KeyCodes.INSERT}; goog.events.KeyHandler.keyIdentifier_ = {"Up":goog.events.KeyCodes.UP, "Down":goog.events.KeyCodes.DOWN, "Left":goog.events.KeyCodes.LEFT, "Right":goog.events.KeyCodes.RIGHT, "Enter":goog.events.KeyCodes.ENTER, "F1":goog.events.KeyCodes.F1, "F2":goog.events.KeyCodes.F2, "F3":goog.events.KeyCodes.F3, "F4":goog.events.KeyCodes.F4, "F5":goog.events.KeyCodes.F5, "F6":goog.events.KeyCodes.F6, "F7":goog.events.KeyCodes.F7, "F8":goog.events.KeyCodes.F8, "F9":goog.events.KeyCodes.F9, "F10":goog.events.KeyCodes.F10, "F11":goog.events.KeyCodes.F11, "F12":goog.events.KeyCodes.F12, "U+007F":goog.events.KeyCodes.DELETE, "Home":goog.events.KeyCodes.HOME, "End":goog.events.KeyCodes.END, "PageUp":goog.events.KeyCodes.PAGE_UP, "PageDown":goog.events.KeyCodes.PAGE_DOWN, "Insert":goog.events.KeyCodes.INSERT}; goog.events.KeyHandler.USES_KEYDOWN_ = goog.userAgent.IE || goog.userAgent.WEBKIT && goog.userAgent.isVersionOrHigher("525"); goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_ = goog.userAgent.MAC && goog.userAgent.GECKO; goog.events.KeyHandler.prototype.handleKeyDown_ = function(e) { if(goog.userAgent.WEBKIT) { if(this.lastKey_ == goog.events.KeyCodes.CTRL && !e.ctrlKey || this.lastKey_ == goog.events.KeyCodes.ALT && !e.altKey || goog.userAgent.MAC && this.lastKey_ == goog.events.KeyCodes.META && !e.metaKey) { this.lastKey_ = -1; this.keyCode_ = -1 } } if(this.lastKey_ == -1) { if(e.ctrlKey && e.keyCode != goog.events.KeyCodes.CTRL) { this.lastKey_ = goog.events.KeyCodes.CTRL }else { if(e.altKey && e.keyCode != goog.events.KeyCodes.ALT) { this.lastKey_ = goog.events.KeyCodes.ALT }else { if(e.metaKey && e.keyCode != goog.events.KeyCodes.META) { this.lastKey_ = goog.events.KeyCodes.META } } } } if(goog.events.KeyHandler.USES_KEYDOWN_ && !goog.events.KeyCodes.firesKeyPressEvent(e.keyCode, this.lastKey_, e.shiftKey, e.ctrlKey, e.altKey)) { this.handleEvent(e) }else { this.keyCode_ = goog.userAgent.GECKO ? goog.events.KeyCodes.normalizeGeckoKeyCode(e.keyCode) : e.keyCode; if(goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_) { this.altKey_ = e.altKey } } }; goog.events.KeyHandler.prototype.resetState = function() { this.lastKey_ = -1; this.keyCode_ = -1 }; goog.events.KeyHandler.prototype.handleKeyup_ = function(e) { this.resetState(); this.altKey_ = e.altKey }; goog.events.KeyHandler.prototype.handleEvent = function(e) { var be = e.getBrowserEvent(); var keyCode, charCode; var altKey = be.altKey; if(goog.userAgent.IE && e.type == goog.events.EventType.KEYPRESS) { keyCode = this.keyCode_; charCode = keyCode != goog.events.KeyCodes.ENTER && keyCode != goog.events.KeyCodes.ESC ? be.keyCode : 0 }else { if(goog.userAgent.WEBKIT && e.type == goog.events.EventType.KEYPRESS) { keyCode = this.keyCode_; charCode = be.charCode >= 0 && be.charCode < 63232 && goog.events.KeyCodes.isCharacterKey(keyCode) ? be.charCode : 0 }else { if(goog.userAgent.OPERA) { keyCode = this.keyCode_; charCode = goog.events.KeyCodes.isCharacterKey(keyCode) ? be.keyCode : 0 }else { keyCode = be.keyCode || this.keyCode_; charCode = be.charCode || 0; if(goog.events.KeyHandler.SAVE_ALT_FOR_KEYPRESS_) { altKey = this.altKey_ } if(goog.userAgent.MAC && charCode == goog.events.KeyCodes.QUESTION_MARK && keyCode == goog.events.KeyCodes.WIN_KEY) { keyCode = goog.events.KeyCodes.SLASH } } } } var key = keyCode; var keyIdentifier = be.keyIdentifier; if(keyCode) { if(keyCode >= 63232 && keyCode in goog.events.KeyHandler.safariKey_) { key = goog.events.KeyHandler.safariKey_[keyCode] }else { if(keyCode == 25 && e.shiftKey) { key = 9 } } }else { if(keyIdentifier && keyIdentifier in goog.events.KeyHandler.keyIdentifier_) { key = goog.events.KeyHandler.keyIdentifier_[keyIdentifier] } } var repeat = key == this.lastKey_; this.lastKey_ = key; var event = new goog.events.KeyEvent(key, charCode, repeat, be); event.altKey = altKey; this.dispatchEvent(event) }; goog.events.KeyHandler.prototype.getElement = function() { return this.element_ }; goog.events.KeyHandler.prototype.attach = function(element, opt_capture) { if(this.keyUpKey_) { this.detach() } this.element_ = element; this.keyPressKey_ = goog.events.listen(this.element_, goog.events.EventType.KEYPRESS, this, opt_capture); this.keyDownKey_ = goog.events.listen(this.element_, goog.events.EventType.KEYDOWN, this.handleKeyDown_, opt_capture, this); this.keyUpKey_ = goog.events.listen(this.element_, goog.events.EventType.KEYUP, this.handleKeyup_, opt_capture, this) }; goog.events.KeyHandler.prototype.detach = function() { if(this.keyPressKey_) { goog.events.unlistenByKey(this.keyPressKey_); goog.events.unlistenByKey(this.keyDownKey_); goog.events.unlistenByKey(this.keyUpKey_); this.keyPressKey_ = null; this.keyDownKey_ = null; this.keyUpKey_ = null } this.element_ = null; this.lastKey_ = -1; this.keyCode_ = -1 }; goog.events.KeyHandler.prototype.disposeInternal = function() { goog.events.KeyHandler.superClass_.disposeInternal.call(this); this.detach() }; goog.events.KeyEvent = function(keyCode, charCode, repeat, browserEvent) { goog.events.BrowserEvent.call(this, browserEvent); this.type = goog.events.KeyHandler.EventType.KEY; this.keyCode = keyCode; this.charCode = charCode; this.repeat = repeat }; goog.inherits(goog.events.KeyEvent, goog.events.BrowserEvent); goog.provide("goog.events.MouseWheelEvent"); goog.provide("goog.events.MouseWheelHandler"); goog.provide("goog.events.MouseWheelHandler.EventType"); goog.require("goog.dom"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.EventTarget"); goog.require("goog.math"); goog.require("goog.style"); goog.require("goog.userAgent"); goog.events.MouseWheelHandler = function(element, opt_capture) { goog.events.EventTarget.call(this); this.element_ = element; var rtlElement = goog.dom.isElement(this.element_) ? (this.element_) : this.element_ ? (this.element_).body : null; this.isRtl_ = !!rtlElement && goog.style.isRightToLeft(rtlElement); var type = goog.userAgent.GECKO ? "DOMMouseScroll" : "mousewheel"; this.listenKey_ = goog.events.listen(this.element_, type, this, opt_capture) }; goog.inherits(goog.events.MouseWheelHandler, goog.events.EventTarget); goog.events.MouseWheelHandler.EventType = {MOUSEWHEEL:"mousewheel"}; goog.events.MouseWheelHandler.prototype.maxDeltaX_; goog.events.MouseWheelHandler.prototype.maxDeltaY_; goog.events.MouseWheelHandler.prototype.setMaxDeltaX = function(maxDeltaX) { this.maxDeltaX_ = maxDeltaX }; goog.events.MouseWheelHandler.prototype.setMaxDeltaY = function(maxDeltaY) { this.maxDeltaY_ = maxDeltaY }; goog.events.MouseWheelHandler.prototype.handleEvent = function(e) { var deltaX = 0; var deltaY = 0; var detail = 0; var be = e.getBrowserEvent(); if(be.type == "mousewheel") { var wheelDeltaScaleFactor = 1; if(goog.userAgent.IE || goog.userAgent.WEBKIT && (goog.userAgent.WINDOWS || goog.userAgent.isVersionOrHigher("532.0"))) { wheelDeltaScaleFactor = 40 } detail = goog.events.MouseWheelHandler.smartScale_(-be.wheelDelta, wheelDeltaScaleFactor); if(goog.isDef(be.wheelDeltaX)) { deltaX = goog.events.MouseWheelHandler.smartScale_(-be.wheelDeltaX, wheelDeltaScaleFactor); deltaY = goog.events.MouseWheelHandler.smartScale_(-be.wheelDeltaY, wheelDeltaScaleFactor) }else { deltaY = detail } }else { detail = be.detail; if(detail > 100) { detail = 3 }else { if(detail < -100) { detail = -3 } } if(goog.isDef(be.axis) && be.axis === be.HORIZONTAL_AXIS) { deltaX = detail }else { deltaY = detail } } if(goog.isNumber(this.maxDeltaX_)) { deltaX = goog.math.clamp(deltaX, -this.maxDeltaX_, this.maxDeltaX_) } if(goog.isNumber(this.maxDeltaY_)) { deltaY = goog.math.clamp(deltaY, -this.maxDeltaY_, this.maxDeltaY_) } if(this.isRtl_) { deltaX = -deltaX } var newEvent = new goog.events.MouseWheelEvent(detail, be, deltaX, deltaY); this.dispatchEvent(newEvent) }; goog.events.MouseWheelHandler.smartScale_ = function(mouseWheelDelta, scaleFactor) { if(goog.userAgent.WEBKIT && (goog.userAgent.MAC || goog.userAgent.LINUX) && mouseWheelDelta % scaleFactor != 0) { return mouseWheelDelta }else { return mouseWheelDelta / scaleFactor } }; goog.events.MouseWheelHandler.prototype.disposeInternal = function() { goog.events.MouseWheelHandler.superClass_.disposeInternal.call(this); goog.events.unlistenByKey(this.listenKey_); this.listenKey_ = null }; goog.events.MouseWheelEvent = function(detail, browserEvent, deltaX, deltaY) { goog.events.BrowserEvent.call(this, browserEvent); this.type = goog.events.MouseWheelHandler.EventType.MOUSEWHEEL; this.detail = detail; this.deltaX = deltaX; this.deltaY = deltaY }; goog.inherits(goog.events.MouseWheelEvent, goog.events.BrowserEvent); goog.provide("goog.log"); goog.provide("goog.log.Level"); goog.provide("goog.log.LogRecord"); goog.provide("goog.log.Logger"); goog.require("goog.debug"); goog.require("goog.debug.LogRecord"); goog.require("goog.debug.Logger"); goog.define("goog.log.ENABLED", goog.debug.LOGGING_ENABLED); goog.log.Logger = goog.debug.Logger; goog.log.Level = goog.debug.Logger.Level; goog.log.LogRecord = goog.debug.LogRecord; goog.log.getLogger = function(name, opt_level) { if(goog.log.ENABLED) { var logger = goog.debug.Logger.getLogger(name); if(opt_level && logger) { logger.setLevel(opt_level) } return logger }else { return null } }; goog.log.addHandler = function(logger, handler) { if(goog.log.ENABLED && logger) { logger.addHandler(handler) } }; goog.log.removeHandler = function(logger, handler) { if(goog.log.ENABLED && logger) { return logger.removeHandler(handler) }else { return false } }; goog.log.log = function(logger, level, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.log(level, msg, opt_exception) } }; goog.log.error = function(logger, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.severe(msg, opt_exception) } }; goog.log.warning = function(logger, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.warning(msg, opt_exception) } }; goog.log.info = function(logger, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.info(msg, opt_exception) } }; goog.log.fine = function(logger, msg, opt_exception) { if(goog.log.ENABLED && logger) { logger.fine(msg, opt_exception) } }; goog.provide("ol.Tile"); goog.provide("ol.TileState"); goog.require("goog.events"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("ol.TileCoord"); ol.TileState = {IDLE:0, LOADING:1, LOADED:2, ERROR:3, EMPTY:4}; ol.Tile = function(tileCoord, state) { goog.base(this); this.tileCoord = tileCoord; this.state = state }; goog.inherits(ol.Tile, goog.events.EventTarget); ol.Tile.prototype.dispatchChangeEvent = function() { this.dispatchEvent(goog.events.EventType.CHANGE) }; ol.Tile.prototype.getImage = goog.abstractMethod; ol.Tile.prototype.getKey = function() { return goog.getUid(this).toString() }; ol.Tile.prototype.getTileCoord = function() { return this.tileCoord }; ol.Tile.prototype.getState = function() { return this.state }; ol.Tile.prototype.load = goog.abstractMethod; goog.provide("ol.structs.PriorityQueue"); goog.require("goog.asserts"); goog.require("goog.object"); ol.structs.PriorityQueue = function(priorityFunction, keyFunction) { this.priorityFunction_ = priorityFunction; this.keyFunction_ = keyFunction; this.elements_ = []; this.priorities_ = []; this.queuedElements_ = {} }; ol.structs.PriorityQueue.DROP = Infinity; ol.structs.PriorityQueue.prototype.assertValid = function() { var elements = this.elements_; var priorities = this.priorities_; var n = elements.length; goog.asserts.assert(priorities.length == n); var i, priority; for(i = 0;i < (n >> 1) - 1;++i) { priority = priorities[i]; goog.asserts.assert(priority <= priorities[this.getLeftChildIndex_(i)]); goog.asserts.assert(priority <= priorities[this.getRightChildIndex_(i)]) } }; ol.structs.PriorityQueue.prototype.clear = function() { this.elements_.length = 0; this.priorities_.length = 0; goog.object.clear(this.queuedElements_) }; ol.structs.PriorityQueue.prototype.dequeue = function() { var elements = this.elements_; goog.asserts.assert(elements.length > 0); var priorities = this.priorities_; var element = elements[0]; if(elements.length == 1) { elements.length = 0; priorities.length = 0 }else { elements[0] = elements.pop(); priorities[0] = priorities.pop(); this.siftUp_(0) } var elementKey = this.keyFunction_(element); goog.asserts.assert(elementKey in this.queuedElements_); delete this.queuedElements_[elementKey]; return element }; ol.structs.PriorityQueue.prototype.enqueue = function(element) { goog.asserts.assert(!(this.keyFunction_(element) in this.queuedElements_)); var priority = this.priorityFunction_(element); if(priority != ol.structs.PriorityQueue.DROP) { this.elements_.push(element); this.priorities_.push(priority); this.queuedElements_[this.keyFunction_(element)] = true; this.siftDown_(0, this.elements_.length - 1) } }; ol.structs.PriorityQueue.prototype.getCount = function() { return this.elements_.length }; ol.structs.PriorityQueue.prototype.getLeftChildIndex_ = function(index) { return index * 2 + 1 }; ol.structs.PriorityQueue.prototype.getRightChildIndex_ = function(index) { return index * 2 + 2 }; ol.structs.PriorityQueue.prototype.getParentIndex_ = function(index) { return index - 1 >> 1 }; ol.structs.PriorityQueue.prototype.heapify_ = function() { var i; for(i = (this.elements_.length >> 1) - 1;i >= 0;i--) { this.siftUp_(i) } }; ol.structs.PriorityQueue.prototype.isEmpty = function() { return this.elements_.length === 0 }; ol.structs.PriorityQueue.prototype.isKeyQueued = function(key) { return key in this.queuedElements_ }; ol.structs.PriorityQueue.prototype.isQueued = function(element) { return this.isKeyQueued(this.keyFunction_(element)) }; ol.structs.PriorityQueue.prototype.siftUp_ = function(index) { var elements = this.elements_; var priorities = this.priorities_; var count = elements.length; var element = elements[index]; var priority = priorities[index]; var startIndex = index; while(index < count >> 1) { var lIndex = this.getLeftChildIndex_(index); var rIndex = this.getRightChildIndex_(index); var smallerChildIndex = rIndex < count && priorities[rIndex] < priorities[lIndex] ? rIndex : lIndex; elements[index] = elements[smallerChildIndex]; priorities[index] = priorities[smallerChildIndex]; index = smallerChildIndex } elements[index] = element; priorities[index] = priority; this.siftDown_(startIndex, index) }; ol.structs.PriorityQueue.prototype.siftDown_ = function(startIndex, index) { var elements = this.elements_; var priorities = this.priorities_; var element = elements[index]; var priority = priorities[index]; while(index > startIndex) { var parentIndex = this.getParentIndex_(index); if(priorities[parentIndex] > priority) { elements[index] = elements[parentIndex]; priorities[index] = priorities[parentIndex]; index = parentIndex }else { break } } elements[index] = element; priorities[index] = priority }; ol.structs.PriorityQueue.prototype.reprioritize = function() { var priorityFunction = this.priorityFunction_; var elements = this.elements_; var priorities = this.priorities_; var index = 0; var n = elements.length; var element, i, priority; for(i = 0;i < n;++i) { element = elements[i]; priority = priorityFunction(element); if(priority == ol.structs.PriorityQueue.DROP) { delete this.queuedElements_[this.keyFunction_(element)] }else { priorities[index] = priority; elements[index++] = element } } elements.length = index; priorities.length = index; this.heapify_() }; goog.provide("ol.TilePriorityFunction"); goog.provide("ol.TileQueue"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("ol.Coordinate"); goog.require("ol.Tile"); goog.require("ol.structs.PriorityQueue"); ol.TilePriorityFunction; ol.TileQueue = function(tilePriorityFunction, tileChangeCallback) { goog.base(this, function(element) { return tilePriorityFunction.apply(null, element) }, function(element) { return(element[0]).getKey() }); this.tileChangeCallback_ = tileChangeCallback; this.tilesLoading_ = 0 }; goog.inherits(ol.TileQueue, ol.structs.PriorityQueue); ol.TileQueue.prototype.getTilesLoading = function() { return this.tilesLoading_ }; ol.TileQueue.prototype.handleTileChange = function() { --this.tilesLoading_; this.tileChangeCallback_() }; ol.TileQueue.prototype.loadMoreTiles = function(maxTotalLoading, maxNewLoads) { var newLoads = Math.min(maxTotalLoading - this.getTilesLoading(), maxNewLoads, this.getCount()); var i, tile; for(i = 0;i < newLoads;++i) { tile = (this.dequeue()[0]); goog.events.listenOnce(tile, goog.events.EventType.CHANGE, this.handleTileChange, false, this); tile.load() } this.tilesLoading_ += newLoads }; goog.provide("ol.control.Control"); goog.require("goog.array"); goog.require("goog.dom"); goog.require("goog.events"); goog.require("ol.MapEventType"); goog.require("ol.Object"); ol.control.Control = function(options) { goog.base(this); this.element = goog.isDef(options.element) ? options.element : null; this.target_ = goog.isDef(options.target) ? goog.dom.getElement(options.target) : null; this.map_ = null; this.listenerKeys = [] }; goog.inherits(ol.control.Control, ol.Object); ol.control.Control.prototype.disposeInternal = function() { goog.dom.removeNode(this.element); goog.base(this, "disposeInternal") }; ol.control.Control.prototype.getMap = function() { return this.map_ }; ol.control.Control.prototype.handleMapPostrender = goog.nullFunction; ol.control.Control.prototype.setMap = function(map) { if(!goog.isNull(this.map_)) { goog.dom.removeNode(this.element) } if(!goog.array.isEmpty(this.listenerKeys)) { goog.array.forEach(this.listenerKeys, goog.events.unlistenByKey); this.listenerKeys.length = 0 } this.map_ = map; if(!goog.isNull(this.map_)) { var target = !goog.isNull(this.target_) ? this.target_ : map.getOverlayContainerStopEvent(); goog.dom.appendChild(target, this.element); if(this.handleMapPostrender !== goog.nullFunction) { this.listenerKeys.push(goog.events.listen(map, ol.MapEventType.POSTRENDER, this.handleMapPostrender, false, this)) } map.render() } }; goog.provide("ol.css"); ol.css.CLASS_UNSELECTABLE = "ol-unselectable"; ol.css.CLASS_UNSUPPORTED = "ol-unsupported"; goog.provide("ol.control.Attribution"); goog.require("goog.array"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.object"); goog.require("goog.style"); goog.require("ol.Attribution"); goog.require("ol.control.Control"); goog.require("ol.css"); ol.control.Attribution = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.ulElement_ = goog.dom.createElement(goog.dom.TagName.UL); var className = goog.isDef(options.className) ? options.className : "ol-attribution"; var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + " " + ol.css.CLASS_UNSELECTABLE}, this.ulElement_); goog.base(this, {element:element, target:options.target}); this.renderedVisible_ = true; this.attributionElements_ = {}; this.attributionElementRenderedVisible_ = {} }; goog.inherits(ol.control.Attribution, ol.control.Control); ol.control.Attribution.prototype.getSourceAttributions = function(frameState) { var i, ii, j, jj, tileRanges, source, sourceAttribution, sourceAttributionKey, sourceAttributions, sourceKey; var layerStatesArray = frameState.layerStatesArray; var attributions = goog.object.clone(frameState.attributions); var hiddenAttributions = {}; for(i = 0, ii = layerStatesArray.length;i < ii;i++) { source = layerStatesArray[i].layer.getSource(); sourceKey = goog.getUid(source).toString(); sourceAttributions = source.getAttributions(); if(goog.isNull(sourceAttributions)) { continue } for(j = 0, jj = sourceAttributions.length;j < jj;j++) { sourceAttribution = sourceAttributions[j]; sourceAttributionKey = goog.getUid(sourceAttribution).toString(); if(sourceAttributionKey in attributions) { continue } tileRanges = frameState.usedTiles[sourceKey]; if(goog.isDef(tileRanges) && sourceAttribution.intersectsAnyTileRange(tileRanges)) { if(sourceAttributionKey in hiddenAttributions) { delete hiddenAttributions[sourceAttributionKey] } attributions[sourceAttributionKey] = sourceAttribution }else { hiddenAttributions[sourceAttributionKey] = sourceAttribution } } } return[attributions, hiddenAttributions] }; ol.control.Attribution.prototype.handleMapPostrender = function(mapEvent) { this.updateElement_(mapEvent.frameState) }; ol.control.Attribution.prototype.updateElement_ = function(frameState) { if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.element, false); this.renderedVisible_ = false } return } var attributions = this.getSourceAttributions(frameState); var visibleAttributions = attributions[0]; var hiddenAttributions = attributions[1]; var attributionElement, attributionKey; for(attributionKey in this.attributionElements_) { if(attributionKey in visibleAttributions) { if(!this.attributionElementRenderedVisible_[attributionKey]) { goog.style.setElementShown(this.attributionElements_[attributionKey], true); this.attributionElementRenderedVisible_[attributionKey] = true } delete visibleAttributions[attributionKey] }else { if(attributionKey in hiddenAttributions) { if(this.attributionElementRenderedVisible_[attributionKey]) { goog.style.setElementShown(this.attributionElements_[attributionKey], false); delete this.attributionElementRenderedVisible_[attributionKey] } delete hiddenAttributions[attributionKey] }else { goog.dom.removeNode(this.attributionElements_[attributionKey]); delete this.attributionElements_[attributionKey]; delete this.attributionElementRenderedVisible_[attributionKey] } } } for(attributionKey in visibleAttributions) { attributionElement = goog.dom.createElement(goog.dom.TagName.LI); attributionElement.innerHTML = visibleAttributions[attributionKey].getHTML(); goog.dom.appendChild(this.ulElement_, attributionElement); this.attributionElements_[attributionKey] = attributionElement; this.attributionElementRenderedVisible_[attributionKey] = true } for(attributionKey in hiddenAttributions) { attributionElement = goog.dom.createElement(goog.dom.TagName.LI); attributionElement.innerHTML = hiddenAttributions[attributionKey].getHTML(); goog.style.setElementShown(attributionElement, false); goog.dom.appendChild(this.ulElement_, attributionElement); this.attributionElements_[attributionKey] = attributionElement } var renderVisible = !goog.object.isEmpty(this.attributionElementRenderedVisible_); if(this.renderedVisible_ != renderVisible) { goog.style.setElementShown(this.element, renderVisible); this.renderedVisible_ = renderVisible } }; goog.provide("ol.control.Logo"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.object"); goog.require("goog.style"); goog.require("ol.control.Control"); goog.require("ol.css"); ol.control.Logo = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.ulElement_ = goog.dom.createElement(goog.dom.TagName.UL); var className = goog.isDef(options.className) ? options.className : "ol-logo"; var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + " " + ol.css.CLASS_UNSELECTABLE}, this.ulElement_); goog.base(this, {element:element, target:options.target}); this.renderedVisible_ = true; this.logoElements_ = {} }; goog.inherits(ol.control.Logo, ol.control.Control); ol.control.Logo.prototype.handleMapPostrender = function(mapEvent) { this.updateElement_(mapEvent.frameState) }; ol.control.Logo.prototype.updateElement_ = function(frameState) { if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.element, false); this.renderedVisible_ = false } return } var logo; var logos = frameState.logos; var logoElements = this.logoElements_; for(logo in logoElements) { if(!(logo in logos)) { goog.dom.removeNode(logoElements[logo]); delete logoElements[logo] } } var image, logoElement, logoKey; for(logoKey in logos) { if(!(logoKey in logoElements)) { image = new Image; image.src = logoKey; var logoValue = logos[logoKey]; var child; if(logoValue === "") { child = image }else { child = goog.dom.createDom(goog.dom.TagName.A, {"href":logoValue, "target":"_blank"}); child.appendChild(image) } logoElement = goog.dom.createDom(goog.dom.TagName.LI, undefined, child); goog.dom.appendChild(this.ulElement_, logoElement); logoElements[logoKey] = logoElement } } var renderVisible = !goog.object.isEmpty(logos); if(this.renderedVisible_ != renderVisible) { goog.style.setElementShown(this.element, renderVisible); this.renderedVisible_ = renderVisible } }; goog.provide("ol.control.Zoom"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("ol.View2D"); goog.require("ol.animation"); goog.require("ol.control.Control"); goog.require("ol.css"); goog.require("ol.easing"); goog.require("ol.pointer.PointerEventHandler"); ol.control.Zoom = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var className = goog.isDef(options.className) ? options.className : "ol-zoom"; var delta = goog.isDef(options.delta) ? options.delta : 1; var zoomInLabel = goog.isDef(options.zoomInLabel) ? options.zoomInLabel : "+"; var zoomOutLabel = goog.isDef(options.zoomOutLabel) ? options.zoomOutLabel : "\u2212"; var zoomInTipLabel = goog.isDef(options.zoomInTipLabel) ? options.zoomInTipLabel : "Zoom in"; var zoomOutTipLabel = goog.isDef(options.zoomOutTipLabel) ? options.zoomOutTipLabel : "Zoom out"; var tTipZoomIn = goog.dom.createDom(goog.dom.TagName.SPAN, {"role":"tooltip"}, zoomInTipLabel); var inElement = goog.dom.createDom(goog.dom.TagName.BUTTON, {"class":className + "-in ol-has-tooltip", "type":"button"}, tTipZoomIn, zoomInLabel); var inElementHandler = new ol.pointer.PointerEventHandler(inElement); this.registerDisposable(inElementHandler); goog.events.listen(inElementHandler, ol.pointer.EventType.POINTERUP, goog.partial(ol.control.Zoom.prototype.zoomByDelta_, delta), false, this); goog.events.listen(inElement, [goog.events.EventType.MOUSEOUT, goog.events.EventType.FOCUSOUT], function() { this.blur() }, false); var tTipsZoomOut = goog.dom.createDom(goog.dom.TagName.SPAN, {"role":"tooltip"}, zoomOutTipLabel); var outElement = goog.dom.createDom(goog.dom.TagName.BUTTON, {"class":className + "-out ol-has-tooltip", "type":"button"}, tTipsZoomOut, zoomOutLabel); var outElementHandler = new ol.pointer.PointerEventHandler(outElement); this.registerDisposable(outElementHandler); goog.events.listen(outElementHandler, ol.pointer.EventType.POINTERUP, goog.partial(ol.control.Zoom.prototype.zoomByDelta_, -delta), false, this); goog.events.listen(outElement, [goog.events.EventType.MOUSEOUT, goog.events.EventType.FOCUSOUT], function() { this.blur() }, false); var cssClasses = className + " " + ol.css.CLASS_UNSELECTABLE; var element = goog.dom.createDom(goog.dom.TagName.DIV, cssClasses, inElement, outElement); goog.base(this, {element:element, target:options.target}); this.duration_ = goog.isDef(options.duration) ? options.duration : 250 }; goog.inherits(ol.control.Zoom, ol.control.Control); ol.control.Zoom.prototype.zoomByDelta_ = function(delta, pointerEvent) { pointerEvent.browserEvent.preventDefault(); var map = this.getMap(); var view = map.getView(); goog.asserts.assert(goog.isDef(view)); var view2D = view.getView2D(); goog.asserts.assertInstanceof(view2D, ol.View2D); var currentResolution = view2D.getResolution(); if(goog.isDef(currentResolution)) { if(this.duration_ > 0) { map.beforeRender(ol.animation.zoom({resolution:currentResolution, duration:this.duration_, easing:ol.easing.easeOut})) } var newResolution = view2D.constrainResolution(currentResolution, delta); view2D.setResolution(newResolution) } }; goog.provide("ol.control"); goog.require("ol.Collection"); goog.require("ol.control.Attribution"); goog.require("ol.control.Logo"); goog.require("ol.control.Zoom"); ol.control.defaults = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var controls = new ol.Collection; var zoomControl = goog.isDef(options.zoom) ? options.zoom : true; if(zoomControl) { var zoomControlOptions = goog.isDef(options.zoomOptions) ? options.zoomOptions : undefined; controls.push(new ol.control.Zoom(zoomControlOptions)) } var attributionControl = goog.isDef(options.attribution) ? options.attribution : true; if(attributionControl) { var attributionControlOptions = goog.isDef(options.attributionOptions) ? options.attributionOptions : undefined; controls.push(new ol.control.Attribution(attributionControlOptions)) } var logoControl = goog.isDef(options.logo) ? options.logo : true; if(logoControl) { var logoControlOptions = goog.isDef(options.logoOptions) ? options.logoOptions : undefined; controls.push(new ol.control.Logo(logoControlOptions)) } return controls }; goog.provide("ol.Kinetic"); goog.require("ol.Coordinate"); goog.require("ol.PreRenderFunction"); goog.require("ol.animation"); ol.Kinetic = function(decay, minVelocity, delay) { this.decay_ = decay; this.minVelocity_ = minVelocity; this.delay_ = delay; this.points_ = []; this.angle_ = 0; this.initialVelocity_ = 0 }; ol.Kinetic.prototype.begin = function() { this.points_.length = 0; this.angle_ = 0; this.initialVelocity_ = 0 }; ol.Kinetic.prototype.update = function(x, y) { this.points_.push(x, y, goog.now()) }; ol.Kinetic.prototype.end = function() { var delay = goog.now() - this.delay_; var lastIndex = this.points_.length - 3; if(this.points_[lastIndex + 2] < delay) { return false } var firstIndex = lastIndex - 3; while(firstIndex >= 0 && this.points_[firstIndex + 2] > delay) { firstIndex -= 3 } if(firstIndex >= 0) { var duration = this.points_[lastIndex + 2] - this.points_[firstIndex + 2]; var dx = this.points_[lastIndex] - this.points_[firstIndex]; var dy = this.points_[lastIndex + 1] - this.points_[firstIndex + 1]; this.angle_ = Math.atan2(dy, dx); this.initialVelocity_ = Math.sqrt(dx * dx + dy * dy) / duration; return this.initialVelocity_ > this.minVelocity_ } return false }; ol.Kinetic.prototype.pan = function(source) { var decay = this.decay_; var initialVelocity = this.initialVelocity_; var minVelocity = this.minVelocity_; var duration = this.getDuration_(); var easingFunction = function(t) { return initialVelocity * (Math.exp(decay * t * duration) - 1) / (minVelocity - initialVelocity) }; return ol.animation.pan({source:source, duration:duration, easing:easingFunction}) }; ol.Kinetic.prototype.getDuration_ = function() { return Math.log(this.minVelocity_ / this.initialVelocity_) / this.decay_ }; ol.Kinetic.prototype.getDistance = function() { return(this.minVelocity_ - this.initialVelocity_) / this.decay_ }; ol.Kinetic.prototype.getAngle = function() { return this.angle_ }; goog.provide("ol.interaction.DoubleClickZoom"); goog.require("goog.asserts"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.interaction.Interaction"); ol.interaction.DoubleClickZoom = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.delta_ = goog.isDef(options.delta) ? options.delta : 1; goog.base(this); this.duration_ = goog.isDef(options.duration) ? options.duration : 250 }; goog.inherits(ol.interaction.DoubleClickZoom, ol.interaction.Interaction); ol.interaction.DoubleClickZoom.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var stopEvent = false; var browserEvent = mapBrowserEvent.browserEvent; if(mapBrowserEvent.type == ol.MapBrowserEvent.EventType.DBLCLICK) { var map = mapBrowserEvent.map; var anchor = mapBrowserEvent.coordinate; var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_; var view = map.getView().getView2D(); ol.interaction.Interaction.zoomByDelta(map, view, delta, anchor, this.duration_); mapBrowserEvent.preventDefault(); stopEvent = true } return!stopEvent }; goog.provide("ol.interaction.DragPan"); goog.require("goog.asserts"); goog.require("ol.Kinetic"); goog.require("ol.Pixel"); goog.require("ol.PreRenderFunction"); goog.require("ol.View2D"); goog.require("ol.ViewHint"); goog.require("ol.coordinate"); goog.require("ol.events.condition"); goog.require("ol.interaction.Pointer"); ol.interaction.DragPan = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.kinetic_ = options.kinetic; this.kineticPreRenderFn_ = null; this.lastCentroid = null; this.condition_ = goog.isDef(opt_options.condition) ? opt_options.condition : ol.events.condition.noModifierKeys; this.noKinetic_ = false }; goog.inherits(ol.interaction.DragPan, ol.interaction.Pointer); ol.interaction.DragPan.prototype.handlePointerDrag = function(mapBrowserEvent) { goog.asserts.assert(this.targetPointers.length >= 1); var centroid = ol.interaction.Pointer.centroid(this.targetPointers); if(!goog.isNull(this.lastCentroid)) { if(this.kinetic_) { this.kinetic_.update(centroid[0], centroid[1]) } var deltaX = this.lastCentroid[0] - centroid[0]; var deltaY = centroid[1] - this.lastCentroid[1]; var map = mapBrowserEvent.map; var view2D = map.getView().getView2D(); goog.asserts.assertInstanceof(view2D, ol.View2D); var view2DState = view2D.getView2DState(); var center = [deltaX, deltaY]; ol.coordinate.scale(center, view2DState.resolution); ol.coordinate.rotate(center, view2DState.rotation); ol.coordinate.add(center, view2DState.center); center = view2D.constrainCenter(center); map.render(); view2D.setCenter(center) } this.lastCentroid = centroid }; ol.interaction.DragPan.prototype.handlePointerUp = function(mapBrowserEvent) { var map = mapBrowserEvent.map; var view2D = map.getView().getView2D(); goog.asserts.assertInstanceof(view2D, ol.View2D); if(this.targetPointers.length === 0) { if(!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) { var distance = this.kinetic_.getDistance(); var angle = this.kinetic_.getAngle(); var center = view2D.getCenter(); goog.asserts.assert(goog.isDef(center)); this.kineticPreRenderFn_ = this.kinetic_.pan(center); map.beforeRender(this.kineticPreRenderFn_); var centerpx = map.getPixelFromCoordinate(center); var dest = map.getCoordinateFromPixel([centerpx[0] - distance * Math.cos(angle), centerpx[1] - distance * Math.sin(angle)]); dest = view2D.constrainCenter(dest); view2D.setCenter(dest) } view2D.setHint(ol.ViewHint.INTERACTING, -1); map.render(); return false }else { this.lastCentroid = null; return true } }; ol.interaction.DragPan.prototype.handlePointerDown = function(mapBrowserEvent) { if(this.targetPointers.length > 0 && this.condition_(mapBrowserEvent)) { var map = mapBrowserEvent.map; var view2D = map.getView().getView2D(); goog.asserts.assertInstanceof(view2D, ol.View2D); this.lastCentroid = null; if(!this.handlingDownUpSequence) { view2D.setHint(ol.ViewHint.INTERACTING, 1) } map.render(); if(!goog.isNull(this.kineticPreRenderFn_) && map.removePreRenderFunction(this.kineticPreRenderFn_)) { view2D.setCenter(mapBrowserEvent.frameState.view2DState.center); this.kineticPreRenderFn_ = null } if(this.kinetic_) { this.kinetic_.begin() } this.noKinetic_ = this.targetPointers.length > 1; return true }else { return false } }; goog.provide("ol.interaction.DragRotate"); goog.require("goog.asserts"); goog.require("ol"); goog.require("ol.ViewHint"); goog.require("ol.events.ConditionType"); goog.require("ol.events.condition"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.Pointer"); ol.interaction.DragRotate = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.condition_ = goog.isDef(options.condition) ? options.condition : ol.events.condition.altShiftKeysOnly; this.lastAngle_ = undefined }; goog.inherits(ol.interaction.DragRotate, ol.interaction.Pointer); ol.interaction.DragRotate.prototype.handlePointerDrag = function(mapBrowserEvent) { if(!ol.events.condition.mouseOnly(mapBrowserEvent)) { return } var map = mapBrowserEvent.map; var size = map.getSize(); var offset = mapBrowserEvent.pixel; var theta = Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2); if(goog.isDef(this.lastAngle_)) { var delta = theta - this.lastAngle_; var view = map.getView().getView2D(); var view2DState = view.getView2DState(); map.render(); ol.interaction.Interaction.rotateWithoutConstraints(map, view, view2DState.rotation - delta) } this.lastAngle_ = theta }; ol.interaction.DragRotate.prototype.handlePointerUp = function(mapBrowserEvent) { if(!ol.events.condition.mouseOnly(mapBrowserEvent)) { return true } var map = mapBrowserEvent.map; var view = map.getView(); view.setHint(ol.ViewHint.INTERACTING, -1); var view2D = view.getView2D(); var view2DState = view2D.getView2DState(); ol.interaction.Interaction.rotate(map, view2D, view2DState.rotation, undefined, ol.DRAGROTATE_ANIMATION_DURATION); return false }; ol.interaction.DragRotate.prototype.handlePointerDown = function(mapBrowserEvent) { if(!ol.events.condition.mouseOnly(mapBrowserEvent)) { return false } var browserEvent = mapBrowserEvent.browserEvent; if(browserEvent.isMouseActionButton() && this.condition_(mapBrowserEvent)) { var map = mapBrowserEvent.map; map.getView().setHint(ol.ViewHint.INTERACTING, 1); map.render(); this.lastAngle_ = undefined; return true }else { return false } }; goog.provide("ol.interaction.DragZoom"); goog.require("goog.asserts"); goog.require("ol"); goog.require("ol.events.condition"); goog.require("ol.extent"); goog.require("ol.interaction.DragBox"); goog.require("ol.interaction.Interaction"); goog.require("ol.style.Stroke"); goog.require("ol.style.Style"); ol.interaction.DragZoom = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var condition = goog.isDef(options.condition) ? options.condition : ol.events.condition.shiftKeyOnly; var style = goog.isDef(options.style) ? options.style : new ol.style.Style({stroke:new ol.style.Stroke({color:[0, 0, 255, 1]})}); goog.base(this, {condition:condition, style:style}) }; goog.inherits(ol.interaction.DragZoom, ol.interaction.DragBox); ol.interaction.DragZoom.prototype.onBoxEnd = function() { var map = this.getMap(); var view = map.getView().getView2D(); var extent = this.getGeometry().getExtent(); var center = ol.extent.getCenter(extent); ol.interaction.Interaction.zoom(map, view, view.getResolutionForExtent(extent, map.getSize()), center, ol.DRAGZOOM_ANIMATION_DURATION) }; goog.provide("ol.interaction.KeyboardPan"); goog.require("goog.asserts"); goog.require("goog.events.KeyCodes"); goog.require("goog.events.KeyHandler.EventType"); goog.require("goog.functions"); goog.require("ol"); goog.require("ol.View2D"); goog.require("ol.coordinate"); goog.require("ol.events.ConditionType"); goog.require("ol.events.condition"); goog.require("ol.interaction.Interaction"); ol.interaction.KeyboardPan = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.condition_ = goog.isDef(options.condition) ? options.condition : goog.functions.and(ol.events.condition.noModifierKeys, ol.events.condition.targetNotEditable); this.pixelDelta_ = goog.isDef(options.pixelDelta) ? options.pixelDelta : 128 }; goog.inherits(ol.interaction.KeyboardPan, ol.interaction.Interaction); ol.interaction.KeyboardPan.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var stopEvent = false; if(mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { var keyEvent = (mapBrowserEvent.browserEvent); var keyCode = keyEvent.keyCode; if(this.condition_(mapBrowserEvent) && (keyCode == goog.events.KeyCodes.DOWN || keyCode == goog.events.KeyCodes.LEFT || keyCode == goog.events.KeyCodes.RIGHT || keyCode == goog.events.KeyCodes.UP)) { var map = mapBrowserEvent.map; var view = map.getView(); goog.asserts.assertInstanceof(view, ol.View2D); var view2DState = view.getView2DState(); var mapUnitsDelta = view2DState.resolution * this.pixelDelta_; var deltaX = 0, deltaY = 0; if(keyCode == goog.events.KeyCodes.DOWN) { deltaY = -mapUnitsDelta }else { if(keyCode == goog.events.KeyCodes.LEFT) { deltaX = -mapUnitsDelta }else { if(keyCode == goog.events.KeyCodes.RIGHT) { deltaX = mapUnitsDelta }else { deltaY = mapUnitsDelta } } } var delta = [deltaX, deltaY]; ol.coordinate.rotate(delta, view2DState.rotation); ol.interaction.Interaction.pan(map, view, delta, ol.KEYBOARD_PAN_DURATION); mapBrowserEvent.preventDefault(); stopEvent = true } } return!stopEvent }; goog.provide("ol.interaction.KeyboardZoom"); goog.require("goog.asserts"); goog.require("goog.events.KeyHandler.EventType"); goog.require("ol.events.ConditionType"); goog.require("ol.events.condition"); goog.require("ol.interaction.Interaction"); ol.interaction.KeyboardZoom = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.condition_ = goog.isDef(options.condition) ? options.condition : ol.events.condition.targetNotEditable; this.delta_ = goog.isDef(options.delta) ? options.delta : 1; this.duration_ = goog.isDef(options.duration) ? options.duration : 100 }; goog.inherits(ol.interaction.KeyboardZoom, ol.interaction.Interaction); ol.interaction.KeyboardZoom.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var stopEvent = false; if(mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { var keyEvent = (mapBrowserEvent.browserEvent); var charCode = keyEvent.charCode; if(this.condition_(mapBrowserEvent) && (charCode == "+".charCodeAt(0) || charCode == "-".charCodeAt(0))) { var map = mapBrowserEvent.map; var delta = charCode == "+".charCodeAt(0) ? this.delta_ : -this.delta_; map.render(); var view = map.getView().getView2D(); ol.interaction.Interaction.zoomByDelta(map, view, delta, undefined, this.duration_); mapBrowserEvent.preventDefault(); stopEvent = true } } return!stopEvent }; goog.provide("ol.interaction.MouseWheelZoom"); goog.require("goog.asserts"); goog.require("goog.events.MouseWheelEvent"); goog.require("goog.events.MouseWheelHandler.EventType"); goog.require("goog.math"); goog.require("ol"); goog.require("ol.Coordinate"); goog.require("ol.interaction.Interaction"); ol.interaction.MouseWheelZoom = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.delta_ = 0; this.duration_ = goog.isDef(options.duration) ? options.duration : 250; this.lastAnchor_ = null; this.startTime_ = undefined; this.timeoutId_ = undefined }; goog.inherits(ol.interaction.MouseWheelZoom, ol.interaction.Interaction); ol.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var stopEvent = false; if(mapBrowserEvent.type == goog.events.MouseWheelHandler.EventType.MOUSEWHEEL) { var map = mapBrowserEvent.map; var mouseWheelEvent = mapBrowserEvent.browserEvent; goog.asserts.assertInstanceof(mouseWheelEvent, goog.events.MouseWheelEvent); this.lastAnchor_ = mapBrowserEvent.coordinate; this.delta_ += mouseWheelEvent.deltaY; if(!goog.isDef(this.startTime_)) { this.startTime_ = goog.now() } var duration = ol.MOUSEWHEELZOOM_TIMEOUT_DURATION; var timeLeft = Math.max(duration - (goog.now() - this.startTime_), 0); goog.global.clearTimeout(this.timeoutId_); this.timeoutId_ = goog.global.setTimeout(goog.bind(this.doZoom_, this, map), timeLeft); mapBrowserEvent.preventDefault(); stopEvent = true } return!stopEvent }; ol.interaction.MouseWheelZoom.prototype.doZoom_ = function(map) { var maxDelta = ol.MOUSEWHEELZOOM_MAXDELTA; var delta = goog.math.clamp(this.delta_, -maxDelta, maxDelta); var view = map.getView().getView2D(); map.render(); ol.interaction.Interaction.zoomByDelta(map, view, -delta, this.lastAnchor_, this.duration_); this.delta_ = 0; this.lastAnchor_ = null; this.startTime_ = undefined; this.timeoutId_ = undefined }; goog.provide("ol.interaction.PinchRotate"); goog.require("goog.asserts"); goog.require("goog.style"); goog.require("ol"); goog.require("ol.Coordinate"); goog.require("ol.ViewHint"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.Pointer"); ol.interaction.PinchRotate = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.anchor_ = null; this.lastAngle_ = undefined; this.rotating_ = false; this.rotationDelta_ = 0; this.threshold_ = goog.isDef(options.threshold) ? options.threshold : 0.3 }; goog.inherits(ol.interaction.PinchRotate, ol.interaction.Pointer); ol.interaction.PinchRotate.prototype.handlePointerDrag = function(mapBrowserEvent) { goog.asserts.assert(this.targetPointers.length >= 2); var rotationDelta = 0; var touch0 = this.targetPointers[0]; var touch1 = this.targetPointers[1]; var angle = Math.atan2(touch1.clientY - touch0.clientY, touch1.clientX - touch0.clientX); if(goog.isDef(this.lastAngle_)) { var delta = angle - this.lastAngle_; this.rotationDelta_ += delta; if(!this.rotating_ && Math.abs(this.rotationDelta_) > this.threshold_) { this.rotating_ = true } rotationDelta = delta } this.lastAngle_ = angle; var map = mapBrowserEvent.map; var viewportPosition = goog.style.getClientPosition(map.getViewport()); var centroid = ol.interaction.Pointer.centroid(this.targetPointers); centroid[0] -= viewportPosition.x; centroid[1] -= viewportPosition.y; this.anchor_ = map.getCoordinateFromPixel(centroid); if(this.rotating_) { var view = map.getView().getView2D(); var view2DState = view.getView2DState(); map.render(); ol.interaction.Interaction.rotateWithoutConstraints(map, view, view2DState.rotation + rotationDelta, this.anchor_) } }; ol.interaction.PinchRotate.prototype.handlePointerUp = function(mapBrowserEvent) { if(this.targetPointers.length < 2) { var map = mapBrowserEvent.map; var view = map.getView(); view.setHint(ol.ViewHint.INTERACTING, -1); if(this.rotating_) { var view2D = view.getView2D(); var view2DState = view2D.getView2DState(); ol.interaction.Interaction.rotate(map, view2D, view2DState.rotation, this.anchor_, ol.ROTATE_ANIMATION_DURATION) } return false }else { return true } }; ol.interaction.PinchRotate.prototype.handlePointerDown = function(mapBrowserEvent) { if(this.targetPointers.length >= 2) { var map = mapBrowserEvent.map; this.anchor_ = null; this.lastAngle_ = undefined; this.rotating_ = false; this.rotationDelta_ = 0; if(!this.handlingDownUpSequence) { map.getView().setHint(ol.ViewHint.INTERACTING, 1) } map.render(); return true }else { return false } }; goog.provide("ol.interaction.PinchZoom"); goog.require("goog.asserts"); goog.require("goog.style"); goog.require("ol.Coordinate"); goog.require("ol.ViewHint"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.Pointer"); ol.interaction.PinchZoom = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.anchor_ = null; this.duration_ = goog.isDef(options.duration) ? options.duration : 400; this.lastDistance_ = undefined; this.lastScaleDelta_ = 1 }; goog.inherits(ol.interaction.PinchZoom, ol.interaction.Pointer); ol.interaction.PinchZoom.prototype.handlePointerDrag = function(mapBrowserEvent) { goog.asserts.assert(this.targetPointers.length >= 2); var scaleDelta = 1; var touch0 = this.targetPointers[0]; var touch1 = this.targetPointers[1]; var dx = touch0.clientX - touch1.clientX; var dy = touch0.clientY - touch1.clientY; var distance = Math.sqrt(dx * dx + dy * dy); if(goog.isDef(this.lastDistance_)) { scaleDelta = this.lastDistance_ / distance } this.lastDistance_ = distance; if(scaleDelta != 1) { this.lastScaleDelta_ = scaleDelta } var map = mapBrowserEvent.map; var view = map.getView().getView2D(); var view2DState = view.getView2DState(); var viewportPosition = goog.style.getClientPosition(map.getViewport()); var centroid = ol.interaction.Pointer.centroid(this.targetPointers); centroid[0] -= viewportPosition.x; centroid[1] -= viewportPosition.y; this.anchor_ = map.getCoordinateFromPixel(centroid); map.render(); ol.interaction.Interaction.zoomWithoutConstraints(map, view, view2DState.resolution * scaleDelta, this.anchor_) }; ol.interaction.PinchZoom.prototype.handlePointerUp = function(mapBrowserEvent) { if(this.targetPointers.length < 2) { var map = mapBrowserEvent.map; var view = map.getView(); view.setHint(ol.ViewHint.INTERACTING, -1); var view2D = view.getView2D(); var view2DState = view2D.getView2DState(); var direction = this.lastScaleDelta_ - 1; ol.interaction.Interaction.zoom(map, view2D, view2DState.resolution, this.anchor_, this.duration_, direction); return false }else { return true } }; ol.interaction.PinchZoom.prototype.handlePointerDown = function(mapBrowserEvent) { if(this.targetPointers.length >= 2) { var map = mapBrowserEvent.map; this.anchor_ = null; this.lastDistance_ = undefined; this.lastScaleDelta_ = 1; if(!this.handlingDownUpSequence) { map.getView().setHint(ol.ViewHint.INTERACTING, 1) } map.render(); return true }else { return false } }; goog.provide("ol.interaction"); goog.require("ol.Collection"); goog.require("ol.Kinetic"); goog.require("ol.interaction.DoubleClickZoom"); goog.require("ol.interaction.DragPan"); goog.require("ol.interaction.DragRotate"); goog.require("ol.interaction.DragZoom"); goog.require("ol.interaction.KeyboardPan"); goog.require("ol.interaction.KeyboardZoom"); goog.require("ol.interaction.MouseWheelZoom"); goog.require("ol.interaction.PinchRotate"); goog.require("ol.interaction.PinchZoom"); ol.interaction.defaults = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var interactions = new ol.Collection; var kinetic = new ol.Kinetic(-0.005, 0.05, 100); var altShiftDragRotate = goog.isDef(options.altShiftDragRotate) ? options.altShiftDragRotate : true; if(altShiftDragRotate) { interactions.push(new ol.interaction.DragRotate) } var doubleClickZoom = goog.isDef(options.doubleClickZoom) ? options.doubleClickZoom : true; if(doubleClickZoom) { interactions.push(new ol.interaction.DoubleClickZoom({delta:options.zoomDelta, duration:options.zoomDuration})) } var dragPan = goog.isDef(options.dragPan) ? options.dragPan : true; if(dragPan) { interactions.push(new ol.interaction.DragPan({kinetic:kinetic})) } var pinchRotate = goog.isDef(options.pinchRotate) ? options.pinchRotate : true; if(pinchRotate) { interactions.push(new ol.interaction.PinchRotate) } var pinchZoom = goog.isDef(options.pinchZoom) ? options.pinchZoom : true; if(pinchZoom) { interactions.push(new ol.interaction.PinchZoom({duration:options.zoomDuration})) } var keyboard = goog.isDef(options.keyboard) ? options.keyboard : true; if(keyboard) { interactions.push(new ol.interaction.KeyboardPan); interactions.push(new ol.interaction.KeyboardZoom({delta:options.zoomDelta, duration:options.zoomDuration})) } var mouseWheelZoom = goog.isDef(options.mouseWheelZoom) ? options.mouseWheelZoom : true; if(mouseWheelZoom) { interactions.push(new ol.interaction.MouseWheelZoom({duration:options.zoomDuration})) } var shiftDragZoom = goog.isDef(options.shiftDragZoom) ? options.shiftDragZoom : true; if(shiftDragZoom) { interactions.push(new ol.interaction.DragZoom) } return interactions }; goog.provide("ol.source.Source"); goog.provide("ol.source.State"); goog.require("goog.events.EventType"); goog.require("ol.Attribution"); goog.require("ol.Extent"); goog.require("ol.Observable"); goog.require("ol.proj"); ol.source.State = {LOADING:0, READY:1, ERROR:2}; ol.source.SourceOptions; ol.source.Source = function(options) { goog.base(this); this.projection_ = ol.proj.get(options.projection); this.extent_ = goog.isDef(options.extent) ? options.extent : goog.isDef(options.projection) ? this.projection_.getExtent() : null; this.attributions_ = goog.isDef(options.attributions) ? options.attributions : null; this.logo_ = options.logo; this.state_ = goog.isDef(options.state) ? (options.state) : ol.source.State.READY }; goog.inherits(ol.source.Source, ol.Observable); ol.source.Source.prototype.forEachFeatureAtPixel = goog.nullFunction; ol.source.Source.prototype.getAttributions = function() { return this.attributions_ }; ol.source.Source.prototype.getExtent = function() { return this.extent_ }; ol.source.Source.prototype.getLogo = function() { return this.logo_ }; ol.source.Source.prototype.getProjection = function() { return this.projection_ }; ol.source.Source.prototype.getResolutions = goog.abstractMethod; ol.source.Source.prototype.getState = function() { return this.state_ }; ol.source.Source.prototype.setAttributions = function(attributions) { this.attributions_ = attributions }; ol.source.Source.prototype.setExtent = function(extent) { this.extent_ = extent }; ol.source.Source.prototype.setLogo = function(logo) { this.logo_ = logo }; ol.source.Source.prototype.setState = function(state) { this.state_ = state; this.dispatchChangeEvent() }; ol.source.Source.prototype.setProjection = function(projection) { this.projection_ = projection }; goog.provide("ol.layer.Base"); goog.provide("ol.layer.LayerProperty"); goog.provide("ol.layer.LayerState"); goog.require("goog.events"); goog.require("goog.math"); goog.require("goog.object"); goog.require("ol.Object"); goog.require("ol.source.State"); ol.layer.LayerProperty = {BRIGHTNESS:"brightness", CONTRAST:"contrast", HUE:"hue", OPACITY:"opacity", SATURATION:"saturation", VISIBLE:"visible", MAX_RESOLUTION:"maxResolution", MIN_RESOLUTION:"minResolution"}; ol.layer.LayerState; ol.layer.Base = function(options) { goog.base(this); var values = goog.object.clone(options); values.brightness = goog.isDef(values.brightness) ? values.brightness : 0; values.contrast = goog.isDef(values.contrast) ? values.contrast : 1; values.hue = goog.isDef(values.hue) ? values.hue : 0; values.opacity = goog.isDef(values.opacity) ? values.opacity : 1; values.saturation = goog.isDef(values.saturation) ? values.saturation : 1; values.visible = goog.isDef(values.visible) ? values.visible : true; values.maxResolution = goog.isDef(values.maxResolution) ? values.maxResolution : Infinity; values.minResolution = goog.isDef(values.minResolution) ? values.minResolution : 0; this.setValues(values) }; goog.inherits(ol.layer.Base, ol.Object); ol.layer.Base.prototype.getBrightness = function() { return(this.get(ol.layer.LayerProperty.BRIGHTNESS)) }; goog.exportProperty(ol.layer.Base.prototype, "getBrightness", ol.layer.Base.prototype.getBrightness); ol.layer.Base.prototype.getContrast = function() { return(this.get(ol.layer.LayerProperty.CONTRAST)) }; goog.exportProperty(ol.layer.Base.prototype, "getContrast", ol.layer.Base.prototype.getContrast); ol.layer.Base.prototype.getHue = function() { return(this.get(ol.layer.LayerProperty.HUE)) }; goog.exportProperty(ol.layer.Base.prototype, "getHue", ol.layer.Base.prototype.getHue); ol.layer.Base.prototype.getLayerState = function() { var brightness = this.getBrightness(); var contrast = this.getContrast(); var hue = this.getHue(); var opacity = this.getOpacity(); var saturation = this.getSaturation(); var sourceState = this.getSourceState(); var visible = this.getVisible(); var maxResolution = this.getMaxResolution(); var minResolution = this.getMinResolution(); return{layer:(this), brightness:goog.isDef(brightness) ? goog.math.clamp(brightness, -1, 1) : 0, contrast:goog.isDef(contrast) ? Math.max(contrast, 0) : 1, hue:goog.isDef(hue) ? hue : 0, opacity:goog.isDef(opacity) ? goog.math.clamp(opacity, 0, 1) : 1, saturation:goog.isDef(saturation) ? Math.max(saturation, 0) : 1, sourceState:sourceState, visible:goog.isDef(visible) ? !!visible : true, maxResolution:goog.isDef(maxResolution) ? maxResolution : Infinity, minResolution:goog.isDef(minResolution) ? Math.max(minResolution, 0) : 0} }; ol.layer.Base.prototype.getLayersArray = goog.abstractMethod; ol.layer.Base.prototype.getLayerStatesArray = goog.abstractMethod; ol.layer.Base.prototype.getMaxResolution = function() { return(this.get(ol.layer.LayerProperty.MAX_RESOLUTION)) }; goog.exportProperty(ol.layer.Base.prototype, "getMaxResolution", ol.layer.Base.prototype.getMaxResolution); ol.layer.Base.prototype.getMinResolution = function() { return(this.get(ol.layer.LayerProperty.MIN_RESOLUTION)) }; goog.exportProperty(ol.layer.Base.prototype, "getMinResolution", ol.layer.Base.prototype.getMinResolution); ol.layer.Base.prototype.getOpacity = function() { return(this.get(ol.layer.LayerProperty.OPACITY)) }; goog.exportProperty(ol.layer.Base.prototype, "getOpacity", ol.layer.Base.prototype.getOpacity); ol.layer.Base.prototype.getSaturation = function() { return(this.get(ol.layer.LayerProperty.SATURATION)) }; goog.exportProperty(ol.layer.Base.prototype, "getSaturation", ol.layer.Base.prototype.getSaturation); ol.layer.Base.prototype.getSourceState = goog.abstractMethod; ol.layer.Base.prototype.getVisible = function() { return(this.get(ol.layer.LayerProperty.VISIBLE)) }; goog.exportProperty(ol.layer.Base.prototype, "getVisible", ol.layer.Base.prototype.getVisible); ol.layer.Base.prototype.setBrightness = function(brightness) { this.set(ol.layer.LayerProperty.BRIGHTNESS, brightness) }; goog.exportProperty(ol.layer.Base.prototype, "setBrightness", ol.layer.Base.prototype.setBrightness); ol.layer.Base.prototype.setContrast = function(contrast) { this.set(ol.layer.LayerProperty.CONTRAST, contrast) }; goog.exportProperty(ol.layer.Base.prototype, "setContrast", ol.layer.Base.prototype.setContrast); ol.layer.Base.prototype.setHue = function(hue) { this.set(ol.layer.LayerProperty.HUE, hue) }; goog.exportProperty(ol.layer.Base.prototype, "setHue", ol.layer.Base.prototype.setHue); ol.layer.Base.prototype.setMaxResolution = function(maxResolution) { this.set(ol.layer.LayerProperty.MAX_RESOLUTION, maxResolution) }; goog.exportProperty(ol.layer.Base.prototype, "setMaxResolution", ol.layer.Base.prototype.setMaxResolution); ol.layer.Base.prototype.setMinResolution = function(minResolution) { this.set(ol.layer.LayerProperty.MIN_RESOLUTION, minResolution) }; goog.exportProperty(ol.layer.Base.prototype, "setMinResolution", ol.layer.Base.prototype.setMinResolution); ol.layer.Base.prototype.setOpacity = function(opacity) { this.set(ol.layer.LayerProperty.OPACITY, opacity) }; goog.exportProperty(ol.layer.Base.prototype, "setOpacity", ol.layer.Base.prototype.setOpacity); ol.layer.Base.prototype.setSaturation = function(saturation) { this.set(ol.layer.LayerProperty.SATURATION, saturation) }; goog.exportProperty(ol.layer.Base.prototype, "setSaturation", ol.layer.Base.prototype.setSaturation); ol.layer.Base.prototype.setVisible = function(visible) { this.set(ol.layer.LayerProperty.VISIBLE, visible) }; goog.exportProperty(ol.layer.Base.prototype, "setVisible", ol.layer.Base.prototype.setVisible); goog.provide("ol.layer.Group"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.math"); goog.require("goog.object"); goog.require("ol.Collection"); goog.require("ol.CollectionEvent"); goog.require("ol.CollectionEventType"); goog.require("ol.Object"); goog.require("ol.ObjectEventType"); goog.require("ol.layer.Base"); goog.require("ol.source.State"); ol.layer.GroupProperty = {LAYERS:"layers"}; ol.layer.Group = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var baseOptions = (goog.object.clone(options)); delete baseOptions.layers; var layers = options.layers; goog.base(this, baseOptions); this.listenerKeys_ = null; goog.events.listen(this, ol.Object.getChangeEventType(ol.layer.GroupProperty.LAYERS), this.handleLayersChanged_, false, this); if(goog.isDef(layers)) { if(goog.isArray(layers)) { layers = new ol.Collection(goog.array.clone(layers)) }else { goog.asserts.assertInstanceof(layers, ol.Collection); layers = layers } }else { layers = new ol.Collection } this.setLayers(layers) }; goog.inherits(ol.layer.Group, ol.layer.Base); ol.layer.Group.prototype.handleLayerChange_ = function() { if(this.getVisible()) { this.dispatchChangeEvent() } }; ol.layer.Group.prototype.handleLayersChanged_ = function(event) { if(!goog.isNull(this.listenerKeys_)) { goog.array.forEach(goog.object.getValues(this.listenerKeys_), goog.events.unlistenByKey); this.listenerKeys_ = null } var layers = this.getLayers(); if(goog.isDefAndNotNull(layers)) { this.listenerKeys_ = {"add":goog.events.listen(layers, ol.CollectionEventType.ADD, this.handleLayersAdd_, false, this), "remove":goog.events.listen(layers, ol.CollectionEventType.REMOVE, this.handleLayersRemove_, false, this)}; var layersArray = layers.getArray(); var i, ii, layer; for(i = 0, ii = layersArray.length;i < ii;i++) { layer = layersArray[i]; this.listenerKeys_[goog.getUid(layer).toString()] = goog.events.listen(layer, [ol.ObjectEventType.PROPERTYCHANGE, goog.events.EventType.CHANGE], this.handleLayerChange_, false, this) } } this.dispatchChangeEvent() }; ol.layer.Group.prototype.handleLayersAdd_ = function(collectionEvent) { var layer = (collectionEvent.element); this.listenerKeys_[goog.getUid(layer).toString()] = goog.events.listen(layer, [ol.ObjectEventType.PROPERTYCHANGE, goog.events.EventType.CHANGE], this.handleLayerChange_, false, this); this.dispatchChangeEvent() }; ol.layer.Group.prototype.handleLayersRemove_ = function(collectionEvent) { var layer = (collectionEvent.element); var key = goog.getUid(layer).toString(); goog.events.unlistenByKey(this.listenerKeys_[key]); delete this.listenerKeys_[key]; this.dispatchChangeEvent() }; ol.layer.Group.prototype.getLayers = function() { return(this.get(ol.layer.GroupProperty.LAYERS)) }; goog.exportProperty(ol.layer.Group.prototype, "getLayers", ol.layer.Group.prototype.getLayers); ol.layer.Group.prototype.setLayers = function(layers) { this.set(ol.layer.GroupProperty.LAYERS, layers) }; goog.exportProperty(ol.layer.Group.prototype, "setLayers", ol.layer.Group.prototype.setLayers); ol.layer.Group.prototype.getLayersArray = function(opt_array) { var array = goog.isDef(opt_array) ? opt_array : []; this.getLayers().forEach(function(layer) { layer.getLayersArray(array) }); return array }; ol.layer.Group.prototype.getLayerStatesArray = function(opt_states) { var states = goog.isDef(opt_states) ? opt_states : []; var pos = states.length; this.getLayers().forEach(function(layer) { layer.getLayerStatesArray(states) }); var ownLayerState = this.getLayerState(); var i, ii, layerState; for(i = pos, ii = states.length;i < ii;i++) { layerState = states[i]; layerState.brightness = goog.math.clamp(layerState.brightness + ownLayerState.brightness, -1, 1); layerState.contrast *= ownLayerState.contrast; layerState.hue += ownLayerState.hue; layerState.opacity *= ownLayerState.opacity; layerState.saturation *= ownLayerState.saturation; layerState.visible = layerState.visible && ownLayerState.visible; layerState.maxResolution = Math.min(layerState.maxResolution, ownLayerState.maxResolution); layerState.minResolution = Math.max(layerState.minResolution, ownLayerState.minResolution) } return states }; ol.layer.Group.prototype.getSourceState = function() { return ol.source.State.READY }; goog.provide("ol.proj.EPSG3857"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.math"); goog.require("ol.proj"); goog.require("ol.proj.Projection"); goog.require("ol.proj.Units"); ol.proj.EPSG3857 = function(code) { goog.base(this, {code:code, units:ol.proj.Units.METERS, extent:ol.proj.EPSG3857.EXTENT, global:true}) }; goog.inherits(ol.proj.EPSG3857, ol.proj.Projection); ol.proj.EPSG3857.RADIUS = 6378137; ol.proj.EPSG3857.HALF_SIZE = Math.PI * ol.proj.EPSG3857.RADIUS; ol.proj.EPSG3857.EXTENT = [-ol.proj.EPSG3857.HALF_SIZE, -ol.proj.EPSG3857.HALF_SIZE, ol.proj.EPSG3857.HALF_SIZE, ol.proj.EPSG3857.HALF_SIZE]; ol.proj.EPSG3857.CODES = ["EPSG:3857", "EPSG:102100", "EPSG:102113", "EPSG:900913", "urn:ogc:def:crs:EPSG:6.18:3:3857", "http://www.opengis.net/gml/srs/epsg.xml#3857"]; ol.proj.EPSG3857.PROJECTIONS = goog.array.map(ol.proj.EPSG3857.CODES, function(code) { return new ol.proj.EPSG3857(code) }); ol.proj.EPSG3857.fromEPSG4326 = function(input, opt_output, opt_dimension) { var length = input.length, dimension = opt_dimension > 1 ? opt_dimension : 2, output = opt_output; if(!goog.isDef(output)) { if(dimension > 2) { output = input.slice() }else { output = new Array(length) } } goog.asserts.assert(output.length % dimension === 0); for(var i = 0;i < length;i += dimension) { output[i] = ol.proj.EPSG3857.RADIUS * Math.PI * input[i] / 180; output[i + 1] = ol.proj.EPSG3857.RADIUS * Math.log(Math.tan(Math.PI * (input[i + 1] + 90) / 360)) } return output }; ol.proj.EPSG3857.toEPSG4326 = function(input, opt_output, opt_dimension) { var length = input.length, dimension = opt_dimension > 1 ? opt_dimension : 2, output = opt_output; if(!goog.isDef(output)) { if(dimension > 2) { output = input.slice() }else { output = new Array(length) } } goog.asserts.assert(output.length % dimension === 0); for(var i = 0;i < length;i += dimension) { output[i] = 180 * input[i] / (ol.proj.EPSG3857.RADIUS * Math.PI); output[i + 1] = 360 * Math.atan(Math.exp(input[i + 1] / ol.proj.EPSG3857.RADIUS)) / Math.PI - 90 } return output }; ol.proj.EPSG3857.prototype.getPointResolution = function(resolution, point) { return resolution / ol.math.cosh(point[1] / ol.proj.EPSG3857.RADIUS) }; goog.provide("ol.proj.EPSG4326"); goog.require("ol.proj"); goog.require("ol.proj.Projection"); goog.require("ol.proj.Units"); ol.proj.EPSG4326 = function(code, opt_axisOrientation) { goog.base(this, {code:code, units:ol.proj.Units.DEGREES, extent:ol.proj.EPSG4326.EXTENT, axisOrientation:opt_axisOrientation, global:true}) }; goog.inherits(ol.proj.EPSG4326, ol.proj.Projection); ol.proj.EPSG4326.EXTENT = [-180, -90, 180, 90]; ol.proj.EPSG4326.PROJECTIONS = [new ol.proj.EPSG4326("CRS:84"), new ol.proj.EPSG4326("EPSG:4326", "neu"), new ol.proj.EPSG4326("urn:ogc:def:crs:EPSG:6.6:4326", "neu"), new ol.proj.EPSG4326("urn:ogc:def:crs:OGC:1.3:CRS84"), new ol.proj.EPSG4326("urn:ogc:def:crs:OGC:2:84"), new ol.proj.EPSG4326("http://www.opengis.net/gml/srs/epsg.xml#4326", "neu"), new ol.proj.EPSG4326("urn:x-ogc:def:crs:EPSG:4326", "neu")]; ol.proj.EPSG4326.prototype.getPointResolution = function(resolution, point) { return resolution }; goog.provide("ol.proj.common"); goog.require("ol.proj"); goog.require("ol.proj.EPSG3857"); goog.require("ol.proj.EPSG4326"); ol.proj.common.add = function() { ol.proj.addEquivalentProjections(ol.proj.EPSG3857.PROJECTIONS); ol.proj.addEquivalentProjections(ol.proj.EPSG4326.PROJECTIONS); ol.proj.addEquivalentTransforms(ol.proj.EPSG4326.PROJECTIONS, ol.proj.EPSG3857.PROJECTIONS, ol.proj.EPSG3857.fromEPSG4326, ol.proj.EPSG3857.toEPSG4326) }; goog.provide("ol.layer.Layer"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.layer.Base"); goog.require("ol.source.Source"); ol.layer.Layer = function(options) { var baseOptions = goog.object.clone(options); delete baseOptions.source; goog.base(this, (baseOptions)); this.source_ = options.source; goog.events.listen(this.source_, goog.events.EventType.CHANGE, this.handleSourceChange_, false, this) }; goog.inherits(ol.layer.Layer, ol.layer.Base); ol.layer.Layer.prototype.getLayersArray = function(opt_array) { var array = goog.isDef(opt_array) ? opt_array : []; array.push(this); return array }; ol.layer.Layer.prototype.getLayerStatesArray = function(opt_states) { var states = goog.isDef(opt_states) ? opt_states : []; states.push(this.getLayerState()); return states }; ol.layer.Layer.prototype.getSource = function() { return this.source_ }; ol.layer.Layer.prototype.getSourceState = function() { return this.getSource().getState() }; ol.layer.Layer.prototype.handleSourceChange_ = function() { this.dispatchChangeEvent() }; goog.provide("ol.ImageBase"); goog.provide("ol.ImageState"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("ol.Attribution"); goog.require("ol.Extent"); ol.ImageState = {IDLE:0, LOADING:1, LOADED:2, ERROR:3}; ol.ImageBase = function(extent, resolution, pixelRatio, state, attributions) { goog.base(this); this.attributions_ = attributions; this.extent_ = extent; this.pixelRatio_ = pixelRatio; this.resolution_ = resolution; this.state = state }; goog.inherits(ol.ImageBase, goog.events.EventTarget); ol.ImageBase.prototype.dispatchChangeEvent = function() { this.dispatchEvent(goog.events.EventType.CHANGE) }; ol.ImageBase.prototype.getAttributions = function() { return this.attributions_ }; ol.ImageBase.prototype.getExtent = function() { return this.extent_ }; ol.ImageBase.prototype.getImageElement = goog.abstractMethod; ol.ImageBase.prototype.getPixelRatio = function() { return this.pixelRatio_ }; ol.ImageBase.prototype.getResolution = function() { return this.resolution_ }; ol.ImageBase.prototype.getState = function() { return this.state }; ol.ImageBase.prototype.load = goog.abstractMethod; goog.provide("ol.Image"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.ImageBase"); goog.require("ol.ImageState"); ol.Image = function(extent, resolution, pixelRatio, attributions, src, crossOrigin) { goog.base(this, extent, resolution, pixelRatio, ol.ImageState.IDLE, attributions); this.src_ = src; this.image_ = new Image; if(!goog.isNull(crossOrigin)) { this.image_.crossOrigin = crossOrigin } this.imageByContext_ = {}; this.imageListenerKeys_ = null; this.state = ol.ImageState.IDLE }; goog.inherits(ol.Image, ol.ImageBase); ol.Image.prototype.getImageElement = function(opt_context) { if(goog.isDef(opt_context)) { var image; var key = goog.getUid(opt_context); if(key in this.imageByContext_) { return this.imageByContext_[key] }else { if(goog.object.isEmpty(this.imageByContext_)) { image = this.image_ }else { image = (this.image_.cloneNode(false)) } } this.imageByContext_[key] = image; return image }else { return this.image_ } }; ol.Image.prototype.handleImageError_ = function() { this.state = ol.ImageState.ERROR; this.unlistenImage_(); this.dispatchChangeEvent() }; ol.Image.prototype.handleImageLoad_ = function() { this.state = ol.ImageState.LOADED; this.unlistenImage_(); this.dispatchChangeEvent() }; ol.Image.prototype.load = function() { if(this.state == ol.ImageState.IDLE) { this.state = ol.ImageState.LOADING; goog.asserts.assert(goog.isNull(this.imageListenerKeys_)); this.imageListenerKeys_ = [goog.events.listenOnce(this.image_, goog.events.EventType.ERROR, this.handleImageError_, false, this), goog.events.listenOnce(this.image_, goog.events.EventType.LOAD, this.handleImageLoad_, false, this)]; this.image_.src = this.src_ } }; ol.Image.prototype.unlistenImage_ = function() { goog.asserts.assert(!goog.isNull(this.imageListenerKeys_)); goog.array.forEach(this.imageListenerKeys_, goog.events.unlistenByKey); this.imageListenerKeys_ = null }; goog.provide("ol.tilegrid.TileGrid"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol"); goog.require("ol.Coordinate"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.array"); goog.require("ol.extent"); goog.require("ol.proj.METERS_PER_UNIT"); goog.require("ol.proj.Projection"); goog.require("ol.proj.Units"); ol.tilegrid.TileGrid = function(options) { this.minZoom = goog.isDef(options.minZoom) ? options.minZoom : 0; this.resolutions_ = options.resolutions; goog.asserts.assert(goog.array.isSorted(this.resolutions_, function(a, b) { return b - a }, true)); this.maxZoom = this.resolutions_.length - 1; this.origin_ = goog.isDef(options.origin) ? options.origin : null; this.origins_ = null; if(goog.isDef(options.origins)) { this.origins_ = options.origins; goog.asserts.assert(this.origins_.length == this.maxZoom + 1) } goog.asserts.assert(goog.isNull(this.origin_) && !goog.isNull(this.origins_) || !goog.isNull(this.origin_) && goog.isNull(this.origins_)); this.tileSizes_ = null; if(goog.isDef(options.tileSizes)) { this.tileSizes_ = options.tileSizes; goog.asserts.assert(this.tileSizes_.length == this.maxZoom + 1) } this.tileSize_ = goog.isDef(options.tileSize) ? options.tileSize : goog.isNull(this.tileSizes_) ? ol.DEFAULT_TILE_SIZE : undefined; goog.asserts.assert(!goog.isDef(this.tileSize_) && !goog.isNull(this.tileSizes_) || goog.isDef(this.tileSize_) && goog.isNull(this.tileSizes_)) }; ol.tilegrid.TileGrid.tmpTileCoord_ = new ol.TileCoord(0, 0, 0); ol.tilegrid.TileGrid.prototype.createTileCoordTransform = goog.abstractMethod; ol.tilegrid.TileGrid.prototype.forEachTileCoordParentTileRange = function(tileCoord, callback, opt_this, opt_tileRange, opt_extent) { var tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent); var z = tileCoord.z - 1; while(z >= this.minZoom) { if(callback.call(opt_this, z, this.getTileRangeForExtentAndZ(tileCoordExtent, z, opt_tileRange))) { return true } --z } return false }; ol.tilegrid.TileGrid.prototype.getMaxZoom = function() { return this.maxZoom }; ol.tilegrid.TileGrid.prototype.getMinZoom = function() { return this.minZoom }; ol.tilegrid.TileGrid.prototype.getOrigin = function(z) { if(!goog.isNull(this.origin_)) { return this.origin_ }else { goog.asserts.assert(!goog.isNull(this.origins_)); goog.asserts.assert(this.minZoom <= z && z <= this.maxZoom); return this.origins_[z] } }; ol.tilegrid.TileGrid.prototype.getResolution = function(z) { goog.asserts.assert(this.minZoom <= z && z <= this.maxZoom); return this.resolutions_[z] }; ol.tilegrid.TileGrid.prototype.getResolutions = function() { return this.resolutions_ }; ol.tilegrid.TileGrid.prototype.getTileCoordChildTileRange = function(tileCoord, opt_tileRange, opt_extent) { if(tileCoord.z < this.maxZoom) { var tileCoordExtent = this.getTileCoordExtent(tileCoord, opt_extent); return this.getTileRangeForExtentAndZ(tileCoordExtent, tileCoord.z + 1, opt_tileRange) }else { return null } }; ol.tilegrid.TileGrid.prototype.getTileRangeExtent = function(z, tileRange, opt_extent) { var origin = this.getOrigin(z); var resolution = this.getResolution(z); var tileSize = this.getTileSize(z); var minX = origin[0] + tileRange.minX * tileSize * resolution; var maxX = origin[0] + (tileRange.maxX + 1) * tileSize * resolution; var minY = origin[1] + tileRange.minY * tileSize * resolution; var maxY = origin[1] + (tileRange.maxY + 1) * tileSize * resolution; return ol.extent.createOrUpdate(minX, minY, maxX, maxY, opt_extent) }; ol.tilegrid.TileGrid.prototype.getTileRangeForExtentAndResolution = function(extent, resolution, opt_tileRange) { var tileCoord = ol.tilegrid.TileGrid.tmpTileCoord_; this.getTileCoordForXYAndResolution_(extent[0], extent[1], resolution, false, tileCoord); var minX = tileCoord.x; var minY = tileCoord.y; this.getTileCoordForXYAndResolution_(extent[2], extent[3], resolution, true, tileCoord); return ol.TileRange.createOrUpdate(minX, tileCoord.x, minY, tileCoord.y, opt_tileRange) }; ol.tilegrid.TileGrid.prototype.getTileRangeForExtentAndZ = function(extent, z, opt_tileRange) { var resolution = this.getResolution(z); return this.getTileRangeForExtentAndResolution(extent, resolution, opt_tileRange) }; ol.tilegrid.TileGrid.prototype.getTileCoordCenter = function(tileCoord) { var origin = this.getOrigin(tileCoord.z); var resolution = this.getResolution(tileCoord.z); var tileSize = this.getTileSize(tileCoord.z); return[origin[0] + (tileCoord.x + 0.5) * tileSize * resolution, origin[1] + (tileCoord.y + 0.5) * tileSize * resolution] }; ol.tilegrid.TileGrid.prototype.getTileCoordExtent = function(tileCoord, opt_extent) { var origin = this.getOrigin(tileCoord.z); var resolution = this.getResolution(tileCoord.z); var tileSize = this.getTileSize(tileCoord.z); var minX = origin[0] + tileCoord.x * tileSize * resolution; var minY = origin[1] + tileCoord.y * tileSize * resolution; var maxX = minX + tileSize * resolution; var maxY = minY + tileSize * resolution; return ol.extent.createOrUpdate(minX, minY, maxX, maxY, opt_extent) }; ol.tilegrid.TileGrid.prototype.getTileCoordForCoordAndResolution = function(coordinate, resolution, opt_tileCoord) { return this.getTileCoordForXYAndResolution_(coordinate[0], coordinate[1], resolution, false, opt_tileCoord) }; ol.tilegrid.TileGrid.prototype.getTileCoordForXYAndResolution_ = function(x, y, resolution, reverseIntersectionPolicy, opt_tileCoord) { var z = this.getZForResolution(resolution); var scale = resolution / this.getResolution(z); var origin = this.getOrigin(z); var tileSize = this.getTileSize(z); var tileCoordX = scale * (x - origin[0]) / (resolution * tileSize); var tileCoordY = scale * (y - origin[1]) / (resolution * tileSize); if(reverseIntersectionPolicy) { tileCoordX = Math.ceil(tileCoordX) - 1; tileCoordY = Math.ceil(tileCoordY) - 1 }else { tileCoordX = Math.floor(tileCoordX); tileCoordY = Math.floor(tileCoordY) } return ol.TileCoord.createOrUpdate(z, tileCoordX, tileCoordY, opt_tileCoord) }; ol.tilegrid.TileGrid.prototype.getTileCoordForCoordAndZ = function(coordinate, z, opt_tileCoord) { var resolution = this.getResolution(z); return this.getTileCoordForXYAndResolution_(coordinate[0], coordinate[1], resolution, false, opt_tileCoord) }; ol.tilegrid.TileGrid.prototype.getTileCoordResolution = function(tileCoord) { goog.asserts.assert(this.minZoom <= tileCoord.z && tileCoord.z <= this.maxZoom); return this.resolutions_[tileCoord.z] }; ol.tilegrid.TileGrid.prototype.getTileSize = function(z) { if(goog.isDef(this.tileSize_)) { return this.tileSize_ }else { goog.asserts.assert(!goog.isNull(this.tileSizes_)); goog.asserts.assert(this.minZoom <= z && z <= this.maxZoom); return this.tileSizes_[z] } }; ol.tilegrid.TileGrid.prototype.getZForResolution = function(resolution) { return ol.array.linearFindNearest(this.resolutions_, resolution, 0) }; ol.tilegrid.getForProjection = function(projection) { var tileGrid = projection.getDefaultTileGrid(); if(goog.isNull(tileGrid)) { tileGrid = ol.tilegrid.createForProjection(projection); projection.setDefaultTileGrid(tileGrid) } return tileGrid }; ol.tilegrid.createForProjection = function(projection, opt_maxZoom, opt_tileSize) { var projectionExtent = projection.getExtent(); var size = goog.isNull(projectionExtent) ? 360 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] / projection.getMetersPerUnit() : Math.max(projectionExtent[2] - projectionExtent[0], projectionExtent[3] - projectionExtent[1]); var maxZoom = goog.isDef(opt_maxZoom) ? opt_maxZoom : ol.DEFAULT_MAX_ZOOM; var tileSize = goog.isDef(opt_tileSize) ? opt_tileSize : ol.DEFAULT_TILE_SIZE; var resolutions = new Array(maxZoom + 1); var maxResolution = size / tileSize; for(var z = 0, zz = resolutions.length;z < zz;++z) { resolutions[z] = maxResolution / Math.pow(2, z) } return new ol.tilegrid.TileGrid({origin:goog.isNull(projectionExtent) ? [0, 0] : ol.extent.getBottomLeft(projectionExtent), resolutions:resolutions, tileSize:tileSize}) }; goog.provide("ol.source.Tile"); goog.provide("ol.source.TileOptions"); goog.require("goog.functions"); goog.require("ol.Attribution"); goog.require("ol.Extent"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.source.Source"); goog.require("ol.tilegrid.TileGrid"); ol.source.TileOptions; ol.source.Tile = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, projection:options.projection}); this.opaque_ = goog.isDef(options.opaque) ? options.opaque : false; this.tileGrid = goog.isDef(options.tileGrid) ? options.tileGrid : null }; goog.inherits(ol.source.Tile, ol.source.Source); ol.source.Tile.prototype.canExpireCache = goog.functions.FALSE; ol.source.Tile.prototype.expireCache = goog.abstractMethod; ol.source.Tile.prototype.findLoadedTiles = function(loadedTilesByZ, getTileIfLoaded, z, tileRange) { var fullyCovered = true; var tile, tileCoordKey, x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { tileCoordKey = this.getKeyZXY(z, x, y); if(loadedTilesByZ[z] && loadedTilesByZ[z][tileCoordKey]) { continue } tile = getTileIfLoaded(z, x, y); if(!goog.isNull(tile)) { if(!loadedTilesByZ[z]) { loadedTilesByZ[z] = {} } loadedTilesByZ[z][tileCoordKey] = tile }else { fullyCovered = false } } } return fullyCovered }; ol.source.Tile.prototype.getGutter = function() { return 0 }; ol.source.Tile.prototype.getKeyZXY = ol.TileCoord.getKeyZXY; ol.source.Tile.prototype.getOpaque = function() { return this.opaque_ }; ol.source.Tile.prototype.getResolutions = function() { return this.tileGrid.getResolutions() }; ol.source.Tile.prototype.getTile = goog.abstractMethod; ol.source.Tile.prototype.getTileGrid = function() { return this.tileGrid }; ol.source.Tile.prototype.getTileGridForProjection = function(projection) { if(goog.isNull(this.tileGrid)) { return ol.tilegrid.getForProjection(projection) }else { return this.tileGrid } }; ol.source.Tile.prototype.getTilePixelSize = function(z, pixelRatio, projection) { var tileGrid = this.getTileGridForProjection(projection); return tileGrid.getTileSize(z) }; ol.source.Tile.prototype.useTile = goog.nullFunction; goog.provide("ol.renderer.Layer"); goog.require("goog.Disposable"); goog.require("ol.Image"); goog.require("ol.ImageState"); goog.require("ol.Tile"); goog.require("ol.TileRange"); goog.require("ol.TileState"); goog.require("ol.layer.Layer"); goog.require("ol.layer.LayerState"); goog.require("ol.source.Source"); goog.require("ol.source.State"); goog.require("ol.source.Tile"); ol.renderer.Layer = function(mapRenderer, layer) { goog.base(this); this.mapRenderer_ = mapRenderer; this.layer_ = layer }; goog.inherits(ol.renderer.Layer, goog.Disposable); ol.renderer.Layer.prototype.forEachFeatureAtPixel = goog.nullFunction; ol.renderer.Layer.prototype.getLayer = function() { return this.layer_ }; ol.renderer.Layer.prototype.getMap = function() { return this.mapRenderer_.getMap() }; ol.renderer.Layer.prototype.getMapRenderer = function() { return this.mapRenderer_ }; ol.renderer.Layer.prototype.handleImageChange = function(event) { var image = (event.target); if(image.getState() === ol.ImageState.LOADED) { this.renderIfReadyAndVisible() } }; ol.renderer.Layer.prototype.prepareFrame = goog.abstractMethod; ol.renderer.Layer.prototype.renderIfReadyAndVisible = function() { var layer = this.getLayer(); if(layer.getVisible() && layer.getSourceState() == ol.source.State.READY) { this.getMap().render() } }; ol.renderer.Layer.prototype.scheduleExpireCache = function(frameState, tileSource) { if(tileSource.canExpireCache()) { frameState.postRenderFunctions.push(goog.partial(function(tileSource, map, frameState) { var tileSourceKey = goog.getUid(tileSource).toString(); tileSource.expireCache(frameState.usedTiles[tileSourceKey]) }, tileSource)) } }; ol.renderer.Layer.prototype.updateAttributions = function(attributionsSet, attributions) { if(goog.isDefAndNotNull(attributions)) { var attribution, i, ii; for(i = 0, ii = attributions.length;i < ii;++i) { attribution = attributions[i]; attributionsSet[goog.getUid(attribution).toString()] = attribution } } }; ol.renderer.Layer.prototype.updateLogos = function(frameState, source) { var logo = source.getLogo(); if(goog.isDef(logo)) { frameState.logos[logo] = "" } }; ol.renderer.Layer.prototype.updateUsedTiles = function(usedTiles, tileSource, z, tileRange) { var tileSourceKey = goog.getUid(tileSource).toString(); var zKey = z.toString(); if(tileSourceKey in usedTiles) { if(zKey in usedTiles[tileSourceKey]) { usedTiles[tileSourceKey][zKey].extend(tileRange) }else { usedTiles[tileSourceKey][zKey] = tileRange } }else { usedTiles[tileSourceKey] = {}; usedTiles[tileSourceKey][zKey] = tileRange } }; ol.renderer.Layer.prototype.createGetTileIfLoadedFunction = function(isLoadedFunction, tileSource, pixelRatio, projection) { return function(z, x, y) { var tile = tileSource.getTile(z, x, y, pixelRatio, projection); return isLoadedFunction(tile) ? tile : null } }; ol.renderer.Layer.prototype.snapCenterToPixel = function(center, resolution, size) { return[resolution * (Math.round(center[0] / resolution) + size[0] % 2 / 2), resolution * (Math.round(center[1] / resolution) + size[1] % 2 / 2)] }; ol.renderer.Layer.prototype.manageTilePyramid = function(frameState, tileSource, tileGrid, pixelRatio, projection, extent, currentZ, preload, opt_tileCallback, opt_this) { var tileSourceKey = goog.getUid(tileSource).toString(); if(!(tileSourceKey in frameState.wantedTiles)) { frameState.wantedTiles[tileSourceKey] = {} } var wantedTiles = frameState.wantedTiles[tileSourceKey]; var tileQueue = frameState.tileQueue; var minZoom = tileGrid.getMinZoom(); var tile, tileRange, tileResolution, x, y, z; if(!goog.isDef(preload)) { preload = 0 } for(z = currentZ;z >= minZoom;--z) { tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z); tileResolution = tileGrid.getResolution(z); for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { if(currentZ - z <= preload) { tile = tileSource.getTile(z, x, y, pixelRatio, projection); if(tile.getState() == ol.TileState.IDLE) { wantedTiles[tile.tileCoord.toString()] = true; if(!tileQueue.isKeyQueued(tile.getKey())) { tileQueue.enqueue([tile, tileSourceKey, tileGrid.getTileCoordCenter(tile.tileCoord), tileResolution]) } } if(goog.isDef(opt_tileCallback)) { opt_tileCallback.call(opt_this, tile) } }else { tileSource.useTile(z, x, y) } } } } }; goog.provide("ol.style.Icon"); goog.provide("ol.style.IconAnchorOrigin"); goog.provide("ol.style.IconAnchorUnits"); goog.provide("ol.style.IconImageCache"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("ol.dom"); goog.require("ol.style.Image"); goog.require("ol.style.ImageState"); ol.style.IconAnchorOrigin = {BOTTOM_LEFT:"bottom-left", BOTTOM_RIGHT:"bottom-right", TOP_LEFT:"top-left", TOP_RIGHT:"top-right"}; ol.style.IconAnchorUnits = {FRACTION:"fraction", PIXELS:"pixels"}; ol.style.Icon = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.anchor_ = goog.isDef(options.anchor) ? options.anchor : [0.5, 0.5]; this.anchorOrigin_ = goog.isDef(options.anchorOrigin) ? options.anchorOrigin : ol.style.IconAnchorOrigin.TOP_LEFT; this.anchorXUnits_ = goog.isDef(options.anchorXUnits) ? options.anchorXUnits : ol.style.IconAnchorUnits.FRACTION; this.anchorYUnits_ = goog.isDef(options.anchorYUnits) ? options.anchorYUnits : ol.style.IconAnchorUnits.FRACTION; var crossOrigin = goog.isDef(options.crossOrigin) ? options.crossOrigin : null; this.iconImage_ = ol.style.IconImage_.get(options.src, crossOrigin); this.size_ = goog.isDef(options.size) ? options.size : null; var opacity = goog.isDef(options.opacity) ? options.opacity : 1; var rotateWithView = goog.isDef(options.rotateWithView) ? options.rotateWithView : false; var rotation = goog.isDef(options.rotation) ? options.rotation : 0; var scale = goog.isDef(options.scale) ? options.scale : 1; goog.base(this, {opacity:opacity, rotation:rotation, scale:scale, snapToPixel:undefined, rotateWithView:rotateWithView}) }; goog.inherits(ol.style.Icon, ol.style.Image); ol.style.Icon.prototype.getAnchor = function() { var anchor = this.anchor_; var size = this.getSize(); if(this.anchorXUnits_ == ol.style.IconAnchorUnits.FRACTION || this.anchorYUnits_ == ol.style.IconAnchorUnits.FRACTION) { if(goog.isNull(size)) { return null } anchor = this.anchor_.slice(); if(this.anchorXUnits_ == ol.style.IconAnchorUnits.FRACTION) { anchor[0] *= size[0] } if(this.anchorYUnits_ == ol.style.IconAnchorUnits.FRACTION) { anchor[1] *= size[1] } } if(this.anchorOrigin_ != ol.style.IconAnchorOrigin.TOP_LEFT) { if(goog.isNull(size)) { return null } if(anchor === this.anchor_) { anchor = this.anchor_.slice() } if(this.anchorOrigin_ == ol.style.IconAnchorOrigin.TOP_RIGHT || this.anchorOrigin_ == ol.style.IconAnchorOrigin.BOTTOM_RIGHT) { anchor[0] = -anchor[0] + size[0] } if(this.anchorOrigin_ == ol.style.IconAnchorOrigin.BOTTOM_LEFT || this.anchorOrigin_ == ol.style.IconAnchorOrigin.BOTTOM_RIGHT) { anchor[1] = -anchor[1] + size[1] } } return anchor }; ol.style.Icon.prototype.getImage = function(pixelRatio) { return this.iconImage_.getImage(pixelRatio) }; ol.style.Icon.prototype.getImageState = function() { return this.iconImage_.getImageState() }; ol.style.Icon.prototype.getHitDetectionImage = function(pixelRatio) { return this.iconImage_.getHitDetectionImage(pixelRatio) }; ol.style.Icon.prototype.getSrc = function() { return this.iconImage_.getSrc() }; ol.style.Icon.prototype.getSize = function() { return goog.isNull(this.size_) ? this.iconImage_.getSize() : this.size_ }; ol.style.Icon.prototype.listenImageChange = function(listener, thisArg) { return goog.events.listen(this.iconImage_, goog.events.EventType.CHANGE, listener, false, thisArg) }; ol.style.Icon.prototype.load = function() { this.iconImage_.load() }; ol.style.Icon.prototype.unlistenImageChange = function(listener, thisArg) { goog.events.unlisten(this.iconImage_, goog.events.EventType.CHANGE, listener, false, thisArg) }; ol.style.IconImage_ = function(src, crossOrigin) { goog.base(this); this.hitDetectionImage_ = null; this.image_ = new Image; if(!goog.isNull(crossOrigin)) { this.image_.crossOrigin = crossOrigin } this.imageListenerKeys_ = null; this.imageState_ = ol.style.ImageState.IDLE; this.size_ = null; this.src_ = src; this.tainting_ = false }; goog.inherits(ol.style.IconImage_, goog.events.EventTarget); ol.style.IconImage_.get = function(src, crossOrigin) { var iconImageCache = ol.style.IconImageCache.getInstance(); var iconImage = iconImageCache.get(src, crossOrigin); if(goog.isNull(iconImage)) { iconImage = new ol.style.IconImage_(src, crossOrigin); iconImageCache.set(src, crossOrigin, iconImage) } return iconImage }; ol.style.IconImage_.prototype.determineTainting_ = function() { var context = ol.dom.createCanvasContext2D(1, 1); context.drawImage(this.image_, 0, 0); try { context.getImageData(0, 0, 1, 1) }catch(e) { this.tainting_ = true } }; ol.style.IconImage_.prototype.dispatchChangeEvent_ = function() { this.dispatchEvent(goog.events.EventType.CHANGE) }; ol.style.IconImage_.prototype.handleImageError_ = function() { this.imageState_ = ol.style.ImageState.ERROR; this.unlistenImage_(); this.dispatchChangeEvent_() }; ol.style.IconImage_.prototype.handleImageLoad_ = function() { this.imageState_ = ol.style.ImageState.LOADED; this.size_ = [this.image_.width, this.image_.height]; this.unlistenImage_(); this.determineTainting_(); this.dispatchChangeEvent_() }; ol.style.IconImage_.prototype.getImage = function(pixelRatio) { return this.image_ }; ol.style.IconImage_.prototype.getImageState = function() { return this.imageState_ }; ol.style.IconImage_.prototype.getHitDetectionImage = function(pixelRatio) { if(goog.isNull(this.hitDetectionImage_)) { if(this.tainting_) { var width = this.size_[0]; var height = this.size_[1]; var context = ol.dom.createCanvasContext2D(width, height); context.fillRect(0, 0, width, height); this.hitDetectionImage_ = context.canvas }else { this.hitDetectionImage_ = this.image_ } } return this.hitDetectionImage_ }; ol.style.IconImage_.prototype.getSize = function() { return this.size_ }; ol.style.IconImage_.prototype.getSrc = function() { return this.src_ }; ol.style.IconImage_.prototype.load = function() { if(this.imageState_ == ol.style.ImageState.IDLE) { goog.asserts.assert(goog.isDef(this.src_)); goog.asserts.assert(goog.isNull(this.imageListenerKeys_)); this.imageState_ = ol.style.ImageState.LOADING; this.imageListenerKeys_ = [goog.events.listenOnce(this.image_, goog.events.EventType.ERROR, this.handleImageError_, false, this), goog.events.listenOnce(this.image_, goog.events.EventType.LOAD, this.handleImageLoad_, false, this)]; try { this.image_.src = this.src_ }catch(e) { this.handleImageError_() } } }; ol.style.IconImage_.prototype.unlistenImage_ = function() { goog.asserts.assert(!goog.isNull(this.imageListenerKeys_)); goog.array.forEach(this.imageListenerKeys_, goog.events.unlistenByKey); this.imageListenerKeys_ = null }; ol.style.IconImageCache = function() { this.cache_ = {}; this.cacheSize_ = 0; this.maxCacheSize_ = 32 }; goog.addSingletonGetter(ol.style.IconImageCache); ol.style.IconImageCache.getKey = function(src, crossOrigin) { goog.asserts.assert(goog.isDef(crossOrigin)); return crossOrigin + ":" + src }; ol.style.IconImageCache.prototype.clear = function() { this.cache_ = {}; this.cacheSize_ = 0 }; ol.style.IconImageCache.prototype.expire = function() { if(this.cacheSize_ > this.maxCacheSize_) { var i = 0; var key, iconImage; for(key in this.cache_) { iconImage = this.cache_[key]; if((i++ & 3) === 0 && !goog.events.hasListener(iconImage)) { delete this.cache_[key]; --this.cacheSize_ } } } }; ol.style.IconImageCache.prototype.get = function(src, crossOrigin) { var key = ol.style.IconImageCache.getKey(src, crossOrigin); return key in this.cache_ ? this.cache_[key] : null }; ol.style.IconImageCache.prototype.set = function(src, crossOrigin, iconImage) { var key = ol.style.IconImageCache.getKey(src, crossOrigin); this.cache_[key] = iconImage; ++this.cacheSize_ }; goog.provide("ol.vec.Mat4"); goog.require("goog.vec.Mat4"); ol.vec.Mat4.makeTransform2D = function(mat, translateX1, translateY1, scaleX, scaleY, rotation, translateX2, translateY2) { goog.vec.Mat4.makeIdentity(mat); if(translateX1 !== 0 || translateY1 !== 0) { goog.vec.Mat4.translate(mat, translateX1, translateY1, 0) } if(scaleX != 1 || scaleY != 1) { goog.vec.Mat4.scale(mat, scaleX, scaleY, 1) } if(rotation !== 0) { goog.vec.Mat4.rotateZ(mat, rotation) } if(translateX2 !== 0 || translateY2 !== 0) { goog.vec.Mat4.translate(mat, translateX2, translateY2, 0) } return mat }; ol.vec.Mat4.equals2D = function(mat1, mat2) { return goog.vec.Mat4.getElement(mat1, 0, 0) == goog.vec.Mat4.getElement(mat2, 0, 0) && goog.vec.Mat4.getElement(mat1, 1, 0) == goog.vec.Mat4.getElement(mat2, 1, 0) && goog.vec.Mat4.getElement(mat1, 0, 1) == goog.vec.Mat4.getElement(mat2, 0, 1) && goog.vec.Mat4.getElement(mat1, 1, 1) == goog.vec.Mat4.getElement(mat2, 1, 1) && goog.vec.Mat4.getElement(mat1, 0, 3) == goog.vec.Mat4.getElement(mat2, 0, 3) && goog.vec.Mat4.getElement(mat1, 1, 3) == goog.vec.Mat4.getElement(mat2, 1, 3) }; ol.vec.Mat4.multVec2 = function(mat, vec, resultVec) { var m00 = goog.vec.Mat4.getElement(mat, 0, 0); var m10 = goog.vec.Mat4.getElement(mat, 1, 0); var m01 = goog.vec.Mat4.getElement(mat, 0, 1); var m11 = goog.vec.Mat4.getElement(mat, 1, 1); var m03 = goog.vec.Mat4.getElement(mat, 0, 3); var m13 = goog.vec.Mat4.getElement(mat, 1, 3); var x = vec[0], y = vec[1]; resultVec[0] = m00 * x + m01 * y + m03; resultVec[1] = m10 * x + m11 * y + m13; return resultVec }; goog.provide("ol.renderer.Map"); goog.require("goog.Disposable"); goog.require("goog.asserts"); goog.require("goog.dispose"); goog.require("goog.object"); goog.require("goog.vec.Mat4"); goog.require("ol.layer.Layer"); goog.require("ol.renderer.Layer"); goog.require("ol.style.IconImageCache"); goog.require("ol.vec.Mat4"); ol.renderer.Map = function(container, map) { goog.base(this); this.map_ = map; this.layerRenderers_ = {} }; goog.inherits(ol.renderer.Map, goog.Disposable); ol.renderer.Map.prototype.calculateMatrices2D = function(frameState) { var view2DState = frameState.view2DState; var coordinateToPixelMatrix = frameState.coordinateToPixelMatrix; goog.asserts.assert(!goog.isNull(coordinateToPixelMatrix)); ol.vec.Mat4.makeTransform2D(coordinateToPixelMatrix, frameState.size[0] / 2, frameState.size[1] / 2, 1 / view2DState.resolution, -1 / view2DState.resolution, -view2DState.rotation, -view2DState.center[0], -view2DState.center[1]); var inverted = goog.vec.Mat4.invert(coordinateToPixelMatrix, frameState.pixelToCoordinateMatrix); goog.asserts.assert(inverted) }; ol.renderer.Map.prototype.createLayerRenderer = function(layer) { return new ol.renderer.Layer(this, layer) }; ol.renderer.Map.prototype.disposeInternal = function() { goog.object.forEach(this.layerRenderers_, function(layerRenderer) { goog.dispose(layerRenderer) }); goog.base(this, "disposeInternal") }; ol.renderer.Map.prototype.forEachFeatureAtPixel = function(coordinate, frameState, callback, thisArg, layerFilter, thisArg2) { var layerStates = this.map_.getLayerGroup().getLayerStatesArray(); var numLayers = layerStates.length; var i; for(i = numLayers - 1;i >= 0;--i) { var layerState = layerStates[i]; var layer = layerState.layer; if(layerState.visible && layerFilter.call(thisArg2, layer)) { var layerRenderer = this.getLayerRenderer(layer); var result = layerRenderer.forEachFeatureAtPixel(coordinate, frameState, callback, thisArg); if(result) { return result } } } return undefined }; ol.renderer.Map.prototype.getLayerRenderer = function(layer) { var layerKey = goog.getUid(layer).toString(); if(layerKey in this.layerRenderers_) { return this.layerRenderers_[layerKey] }else { var layerRenderer = this.createLayerRenderer(layer); this.layerRenderers_[layerKey] = layerRenderer; return layerRenderer } }; ol.renderer.Map.prototype.getLayerRendererByKey = function(layerKey) { goog.asserts.assert(layerKey in this.layerRenderers_); return this.layerRenderers_[layerKey] }; ol.renderer.Map.prototype.getLayerRenderers = function() { return this.layerRenderers_ }; ol.renderer.Map.prototype.getMap = function() { return this.map_ }; ol.renderer.Map.prototype.removeLayerRendererByKey_ = function(layerKey) { goog.asserts.assert(layerKey in this.layerRenderers_); var layerRenderer = this.layerRenderers_[layerKey]; delete this.layerRenderers_[layerKey]; return layerRenderer }; ol.renderer.Map.prototype.renderFrame = goog.nullFunction; ol.renderer.Map.prototype.removeUnusedLayerRenderers_ = function(map, frameState) { var layerKey; for(layerKey in this.layerRenderers_) { if(goog.isNull(frameState) || !(layerKey in frameState.layerStates)) { goog.dispose(this.removeLayerRendererByKey_(layerKey)) } } }; ol.renderer.Map.prototype.scheduleExpireIconCache = function(frameState) { frameState.postRenderFunctions.push(function(map, frameState) { ol.style.IconImageCache.getInstance().expire() }) }; ol.renderer.Map.prototype.scheduleRemoveUnusedLayerRenderers = function(frameState) { var layerKey; for(layerKey in this.layerRenderers_) { if(!(layerKey in frameState.layerStates)) { frameState.postRenderFunctions.push(goog.bind(this.removeUnusedLayerRenderers_, this)); return } } }; goog.provide("ol.layer.Image"); goog.require("ol.layer.Layer"); ol.layer.Image = function(options) { goog.base(this, options) }; goog.inherits(ol.layer.Image, ol.layer.Layer); goog.provide("ol.layer.Tile"); goog.require("ol.layer.Layer"); ol.layer.TileProperty = {PRELOAD:"preload", USE_INTERIM_TILES_ON_ERROR:"useInterimTilesOnError"}; ol.layer.Tile = function(options) { goog.base(this, options) }; goog.inherits(ol.layer.Tile, ol.layer.Layer); ol.layer.Tile.prototype.getPreload = function() { return(this.get(ol.layer.TileProperty.PRELOAD)) }; goog.exportProperty(ol.layer.Tile.prototype, "getPreload", ol.layer.Tile.prototype.getPreload); ol.layer.Tile.prototype.setPreload = function(preload) { this.set(ol.layer.TileProperty.PRELOAD, preload) }; goog.exportProperty(ol.layer.Tile.prototype, "setPreload", ol.layer.Tile.prototype.setPreload); ol.layer.Tile.prototype.getUseInterimTilesOnError = function() { return(this.get(ol.layer.TileProperty.USE_INTERIM_TILES_ON_ERROR)) }; goog.exportProperty(ol.layer.Tile.prototype, "getUseInterimTilesOnError", ol.layer.Tile.prototype.getUseInterimTilesOnError); ol.layer.Tile.prototype.setUseInterimTilesOnError = function(useInterimTilesOnError) { this.set(ol.layer.TileProperty.USE_INTERIM_TILES_ON_ERROR, useInterimTilesOnError) }; goog.exportProperty(ol.layer.Tile.prototype, "setUseInterimTilesOnError", ol.layer.Tile.prototype.setUseInterimTilesOnError); goog.provide("ol.layer.Vector"); goog.require("goog.array"); goog.require("goog.object"); goog.require("ol.feature"); goog.require("ol.layer.Layer"); ol.layer.VectorProperty = {RENDER_ORDER:"renderOrder"}; ol.layer.Vector = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : ({}); var baseOptions = goog.object.clone(options); delete baseOptions.style; goog.base(this, (baseOptions)); this.style_ = null; this.styleFunction_ = undefined; if(goog.isDef(options.style)) { this.setStyle(options.style) } }; goog.inherits(ol.layer.Vector, ol.layer.Layer); ol.layer.Vector.prototype.getRenderOrder = function() { return(this.get(ol.layer.VectorProperty.RENDER_ORDER)) }; ol.layer.Vector.prototype.getStyle = function() { return this.style_ }; ol.layer.Vector.prototype.getStyleFunction = function() { return this.styleFunction_ }; ol.layer.Vector.prototype.setRenderOrder = function(renderOrder) { this.set(ol.layer.VectorProperty.RENDER_ORDER, renderOrder) }; ol.layer.Vector.prototype.setStyle = function(style) { this.style_ = style; this.styleFunction_ = ol.feature.createStyleFunction(style); this.dispatchChangeEvent() }; goog.provide("ol.render.canvas.Immediate"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("goog.vec.Mat4"); goog.require("ol.BrowserFeature"); goog.require("ol.color"); goog.require("ol.extent"); goog.require("ol.geom.flat.transform"); goog.require("ol.render.IVectorContext"); goog.require("ol.render.canvas"); goog.require("ol.vec.Mat4"); ol.render.canvas.Immediate = function(context, pixelRatio, extent, transform, viewRotation) { this.callbacksByZIndex_ = {}; this.context_ = context; this.pixelRatio_ = pixelRatio; this.extent_ = extent; this.transform_ = transform; this.viewRotation_ = viewRotation; this.contextFillState_ = null; this.contextStrokeState_ = null; this.contextTextState_ = null; this.fillState_ = null; this.strokeState_ = null; this.image_ = null; this.imageAnchorX_ = 0; this.imageAnchorY_ = 0; this.imageHeight_ = 0; this.imageOpacity_ = 0; this.imageRotateWithView_ = false; this.imageRotation_ = 0; this.imageScale_ = 0; this.imageSnapToPixel_ = false; this.imageWidth_ = 0; this.text_ = ""; this.textOffsetX_ = 0; this.textOffsetY_ = 0; this.textRotation_ = 0; this.textScale_ = 0; this.textFillState_ = null; this.textStrokeState_ = null; this.textState_ = null; this.pixelCoordinates_ = []; this.tmpLocalTransform_ = goog.vec.Mat4.createNumber() }; ol.render.canvas.Immediate.prototype.drawImages_ = function(flatCoordinates, offset, end, stride) { if(goog.isNull(this.image_)) { return } goog.asserts.assert(offset === 0); goog.asserts.assert(end == flatCoordinates.length); var pixelCoordinates = ol.geom.flat.transform.transform2D(flatCoordinates, 2, this.transform_, this.pixelCoordinates_); var context = this.context_; var localTransform = this.tmpLocalTransform_; var alpha = context.globalAlpha; if(this.imageOpacity_ != 1) { context.globalAlpha = alpha * this.imageOpacity_ } var rotation = this.imageRotation_; if(this.imageRotateWithView_) { rotation += this.viewRotation_ } var i, ii; for(i = 0, ii = pixelCoordinates.length;i < ii;i += 2) { var x = pixelCoordinates[i] - this.imageAnchorX_; var y = pixelCoordinates[i + 1] - this.imageAnchorY_; if(this.imageSnapToPixel_) { x = x + 0.5 | 0; y = y + 0.5 | 0 } if(rotation !== 0 || this.imageScale_ != 1) { var centerX = x + this.imageAnchorX_; var centerY = y + this.imageAnchorY_; ol.vec.Mat4.makeTransform2D(localTransform, centerX, centerY, this.imageScale_, this.imageScale_, rotation, -centerX, -centerY); context.setTransform(goog.vec.Mat4.getElement(localTransform, 0, 0), goog.vec.Mat4.getElement(localTransform, 1, 0), goog.vec.Mat4.getElement(localTransform, 0, 1), goog.vec.Mat4.getElement(localTransform, 1, 1), goog.vec.Mat4.getElement(localTransform, 0, 3), goog.vec.Mat4.getElement(localTransform, 1, 3)) } context.drawImage(this.image_, x, y, this.imageWidth_, this.imageHeight_) } if(rotation !== 0 || this.imageScale_ != 1) { context.setTransform(1, 0, 0, 1, 0, 0) } if(this.imageOpacity_ != 1) { context.globalAlpha = alpha } }; ol.render.canvas.Immediate.prototype.drawText_ = function(flatCoordinates, offset, end, stride) { if(goog.isNull(this.textState_) || this.text_ === "") { return } if(!goog.isNull(this.textFillState_)) { this.setContextFillState_(this.textFillState_) } if(!goog.isNull(this.textStrokeState_)) { this.setContextStrokeState_(this.textStrokeState_) } this.setContextTextState_(this.textState_); goog.asserts.assert(offset === 0); goog.asserts.assert(end == flatCoordinates.length); var pixelCoordinates = ol.geom.flat.transform.transform2D(flatCoordinates, stride, this.transform_, this.pixelCoordinates_); var context = this.context_; for(;offset < end;offset += stride) { var x = pixelCoordinates[offset] + this.textOffsetX_; var y = pixelCoordinates[offset + 1] + this.textOffsetY_; if(this.textRotation_ !== 0 || this.textScale_ != 1) { var localTransform = ol.vec.Mat4.makeTransform2D(this.tmpLocalTransform_, x, y, this.textScale_, this.textScale_, this.textRotation_, -x, -y); context.setTransform(goog.vec.Mat4.getElement(localTransform, 0, 0), goog.vec.Mat4.getElement(localTransform, 1, 0), goog.vec.Mat4.getElement(localTransform, 0, 1), goog.vec.Mat4.getElement(localTransform, 1, 1), goog.vec.Mat4.getElement(localTransform, 0, 3), goog.vec.Mat4.getElement(localTransform, 1, 3)) } if(!goog.isNull(this.textStrokeState_)) { context.strokeText(this.text_, x, y) } if(!goog.isNull(this.textFillState_)) { context.fillText(this.text_, x, y) } } if(this.textRotation_ !== 0 || this.textScale_ != 1) { context.setTransform(1, 0, 0, 1, 0, 0) } }; ol.render.canvas.Immediate.prototype.moveToLineTo_ = function(pixelCoordinates, offset, end, close) { var context = this.context_; context.moveTo(pixelCoordinates[offset], pixelCoordinates[offset + 1]); var i; for(i = offset + 2;i < end;i += 2) { context.lineTo(pixelCoordinates[i], pixelCoordinates[i + 1]) } if(close) { context.lineTo(pixelCoordinates[offset], pixelCoordinates[offset + 1]) } return end }; ol.render.canvas.Immediate.prototype.drawRings_ = function(pixelCoordinates, offset, ends) { var context = this.context_; var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { offset = this.moveToLineTo_(pixelCoordinates, offset, ends[i], true); context.closePath() } return offset }; ol.render.canvas.Immediate.prototype.drawAsync = function(zIndex, callback) { var zIndexKey = zIndex.toString(); var callbacks = this.callbacksByZIndex_[zIndexKey]; if(goog.isDef(callbacks)) { callbacks.push(callback) }else { this.callbacksByZIndex_[zIndexKey] = [callback] } }; ol.render.canvas.Immediate.prototype.drawCircleGeometry = function(circleGeometry, data) { if(!ol.extent.intersects(this.extent_, circleGeometry.getExtent())) { return } if(!goog.isNull(this.fillState_) || !goog.isNull(this.strokeState_)) { if(!goog.isNull(this.fillState_)) { this.setContextFillState_(this.fillState_) } if(!goog.isNull(this.strokeState_)) { this.setContextStrokeState_(this.strokeState_) } var pixelCoordinates = ol.geom.transformSimpleGeometry2D(circleGeometry, this.transform_, this.pixelCoordinates_); var dx = pixelCoordinates[2] - pixelCoordinates[0]; var dy = pixelCoordinates[3] - pixelCoordinates[1]; var radius = Math.sqrt(dx * dx + dy * dy); var context = this.context_; context.beginPath(); context.arc(pixelCoordinates[0], pixelCoordinates[1], radius, 0, 2 * Math.PI); if(!goog.isNull(this.fillState_)) { context.fill() } if(!goog.isNull(this.strokeState_)) { context.stroke() } } if(this.text_ !== "") { this.drawText_(circleGeometry.getCenter(), 0, 2, 2) } }; ol.render.canvas.Immediate.prototype.drawFeature = function(feature, style) { var geometry = feature.getGeometry(); if(goog.isNull(geometry) || !ol.extent.intersects(this.extent_, geometry.getExtent())) { return } var zIndex = style.getZIndex(); if(!goog.isDef(zIndex)) { zIndex = 0 } this.drawAsync(zIndex, function(render) { render.setFillStrokeStyle(style.getFill(), style.getStroke()); render.setImageStyle(style.getImage()); render.setTextStyle(style.getText()); var renderGeometry = ol.render.canvas.Immediate.GEOMETRY_RENDERES_[geometry.getType()]; goog.asserts.assert(goog.isDef(renderGeometry)); renderGeometry.call(render, geometry, null) }) }; ol.render.canvas.Immediate.prototype.drawGeometryCollectionGeometry = function(geometryCollectionGeometry, data) { var geometries = geometryCollectionGeometry.getGeometriesArray(); var i, ii; for(i = 0, ii = geometries.length;i < ii;++i) { var geometry = geometries[i]; var geometryRenderer = ol.render.canvas.Immediate.GEOMETRY_RENDERES_[geometry.getType()]; goog.asserts.assert(goog.isDef(geometryRenderer)); geometryRenderer.call(this, geometry, data) } }; ol.render.canvas.Immediate.prototype.drawPointGeometry = function(pointGeometry, data) { var flatCoordinates = pointGeometry.getFlatCoordinates(); var stride = pointGeometry.getStride(); if(!goog.isNull(this.image_)) { this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride) } if(this.text_ !== "") { this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride) } }; ol.render.canvas.Immediate.prototype.drawMultiPointGeometry = function(multiPointGeometry, data) { var flatCoordinates = multiPointGeometry.getFlatCoordinates(); var stride = multiPointGeometry.getStride(); if(!goog.isNull(this.image_)) { this.drawImages_(flatCoordinates, 0, flatCoordinates.length, stride) } if(this.text_ !== "") { this.drawText_(flatCoordinates, 0, flatCoordinates.length, stride) } }; ol.render.canvas.Immediate.prototype.drawLineStringGeometry = function(lineStringGeometry, data) { if(!ol.extent.intersects(this.extent_, lineStringGeometry.getExtent())) { return } if(!goog.isNull(this.strokeState_)) { this.setContextStrokeState_(this.strokeState_); var pixelCoordinates = ol.geom.transformSimpleGeometry2D(lineStringGeometry, this.transform_, this.pixelCoordinates_); var context = this.context_; context.beginPath(); this.moveToLineTo_(pixelCoordinates, 0, pixelCoordinates.length, false); context.stroke() } if(this.text_ !== "") { var flatMidpoint = lineStringGeometry.getFlatMidpoint(); this.drawText_(flatMidpoint, 0, 2, 2) } }; ol.render.canvas.Immediate.prototype.drawMultiLineStringGeometry = function(multiLineStringGeometry, data) { var geometryExtent = multiLineStringGeometry.getExtent(); if(!ol.extent.intersects(this.extent_, geometryExtent)) { return } var pixelCoordinates; if(!goog.isNull(this.strokeState_)) { this.setContextStrokeState_(this.strokeState_); pixelCoordinates = ol.geom.transformSimpleGeometry2D(multiLineStringGeometry, this.transform_, this.pixelCoordinates_); var context = this.context_; context.beginPath(); var ends = multiLineStringGeometry.getEnds(); var offset = 0; var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { offset = this.moveToLineTo_(pixelCoordinates, offset, ends[i], false) } context.stroke() } if(this.text_ !== "") { var flatMidpoints = multiLineStringGeometry.getFlatMidpoints(); this.drawText_(flatMidpoints, 0, flatMidpoints.length, 2) } }; ol.render.canvas.Immediate.prototype.drawPolygonGeometry = function(polygonGeometry, data) { if(!ol.extent.intersects(this.extent_, polygonGeometry.getExtent())) { return } var pixelCoordinates; if(!goog.isNull(this.strokeState_) || !goog.isNull(this.fillState_)) { if(!goog.isNull(this.fillState_)) { this.setContextFillState_(this.fillState_) } if(!goog.isNull(this.strokeState_)) { this.setContextStrokeState_(this.strokeState_) } pixelCoordinates = ol.geom.transformSimpleGeometry2D(polygonGeometry, this.transform_, this.pixelCoordinates_); var context = this.context_; context.beginPath(); this.drawRings_(pixelCoordinates, 0, polygonGeometry.getEnds()); if(!goog.isNull(this.fillState_)) { context.fill() } if(!goog.isNull(this.strokeState_)) { context.stroke() } } if(this.text_ !== "") { var flatInteriorPoint = polygonGeometry.getFlatInteriorPoint(); this.drawText_(flatInteriorPoint, 0, 2, 2) } }; ol.render.canvas.Immediate.prototype.drawMultiPolygonGeometry = function(multiPolygonGeometry, data) { if(!ol.extent.intersects(this.extent_, multiPolygonGeometry.getExtent())) { return } var pixelCoordinates; if(!goog.isNull(this.strokeState_) || !goog.isNull(this.fillState_)) { if(!goog.isNull(this.fillState_)) { this.setContextFillState_(this.fillState_) } if(!goog.isNull(this.strokeState_)) { this.setContextStrokeState_(this.strokeState_) } pixelCoordinates = ol.geom.transformSimpleGeometry2D(multiPolygonGeometry, this.transform_, this.pixelCoordinates_); var context = this.context_; var endss = multiPolygonGeometry.getEndss(); var offset = 0; var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i]; context.beginPath(); offset = this.drawRings_(pixelCoordinates, offset, ends); if(!goog.isNull(this.fillState_)) { context.fill() } if(!goog.isNull(this.strokeState_)) { context.stroke() } } } if(this.text_ !== "") { var flatInteriorPoints = multiPolygonGeometry.getFlatInteriorPoints(); this.drawText_(flatInteriorPoints, 0, flatInteriorPoints.length, 2) } }; ol.render.canvas.Immediate.prototype.drawText = goog.abstractMethod; ol.render.canvas.Immediate.prototype.flush = function() { var zs = goog.array.map(goog.object.getKeys(this.callbacksByZIndex_), Number); goog.array.sort(zs); var i, ii, callbacks, j, jj; for(i = 0, ii = zs.length;i < ii;++i) { callbacks = this.callbacksByZIndex_[zs[i].toString()]; for(j = 0, jj = callbacks.length;j < jj;++j) { callbacks[j](this) } } }; ol.render.canvas.Immediate.prototype.setContextFillState_ = function(fillState) { var context = this.context_; var contextFillState = this.contextFillState_; if(goog.isNull(contextFillState)) { context.fillStyle = fillState.fillStyle; this.contextFillState_ = {fillStyle:fillState.fillStyle} }else { if(contextFillState.fillStyle != fillState.fillStyle) { contextFillState.fillStyle = context.fillStyle = fillState.fillStyle } } }; ol.render.canvas.Immediate.prototype.setContextStrokeState_ = function(strokeState) { var context = this.context_; var contextStrokeState = this.contextStrokeState_; if(goog.isNull(contextStrokeState)) { context.lineCap = strokeState.lineCap; if(ol.BrowserFeature.HAS_CANVAS_LINE_DASH) { context.setLineDash(strokeState.lineDash) } context.lineJoin = strokeState.lineJoin; context.lineWidth = strokeState.lineWidth; context.miterLimit = strokeState.miterLimit; context.strokeStyle = strokeState.strokeStyle; this.contextStrokeState_ = {lineCap:strokeState.lineCap, lineDash:strokeState.lineDash, lineJoin:strokeState.lineJoin, lineWidth:strokeState.lineWidth, miterLimit:strokeState.miterLimit, strokeStyle:strokeState.strokeStyle} }else { if(contextStrokeState.lineCap != strokeState.lineCap) { contextStrokeState.lineCap = context.lineCap = strokeState.lineCap } if(ol.BrowserFeature.HAS_CANVAS_LINE_DASH) { if(!goog.array.equals(contextStrokeState.lineDash, strokeState.lineDash)) { context.setLineDash(contextStrokeState.lineDash = strokeState.lineDash) } } if(contextStrokeState.lineJoin != strokeState.lineJoin) { contextStrokeState.lineJoin = context.lineJoin = strokeState.lineJoin } if(contextStrokeState.lineWidth != strokeState.lineWidth) { contextStrokeState.lineWidth = context.lineWidth = strokeState.lineWidth } if(contextStrokeState.miterLimit != strokeState.miterLimit) { contextStrokeState.miterLimit = context.miterLimit = strokeState.miterLimit } if(contextStrokeState.strokeStyle != strokeState.strokeStyle) { contextStrokeState.strokeStyle = context.strokeStyle = strokeState.strokeStyle } } }; ol.render.canvas.Immediate.prototype.setContextTextState_ = function(textState) { var context = this.context_; var contextTextState = this.contextTextState_; if(goog.isNull(contextTextState)) { context.font = textState.font; context.textAlign = textState.textAlign; context.textBaseline = textState.textBaseline; this.contextTextState_ = {font:textState.font, textAlign:textState.textAlign, textBaseline:textState.textBaseline} }else { if(contextTextState.font != textState.font) { contextTextState.font = context.font = textState.font } if(contextTextState.textAlign != textState.textAlign) { contextTextState.textAlign = context.textAlign = textState.textAlign } if(contextTextState.textBaseline != textState.textBaseline) { contextTextState.textBaseline = context.textBaseline = textState.textBaseline } } }; ol.render.canvas.Immediate.prototype.setFillStrokeStyle = function(fillStyle, strokeStyle) { if(goog.isNull(fillStyle)) { this.fillState_ = null }else { var fillStyleColor = fillStyle.getColor(); this.fillState_ = {fillStyle:ol.color.asString(!goog.isNull(fillStyleColor) ? fillStyleColor : ol.render.canvas.defaultFillStyle)} } if(goog.isNull(strokeStyle)) { this.strokeState_ = null }else { var strokeStyleColor = strokeStyle.getColor(); var strokeStyleLineCap = strokeStyle.getLineCap(); var strokeStyleLineDash = strokeStyle.getLineDash(); var strokeStyleLineJoin = strokeStyle.getLineJoin(); var strokeStyleWidth = strokeStyle.getWidth(); var strokeStyleMiterLimit = strokeStyle.getMiterLimit(); this.strokeState_ = {lineCap:goog.isDef(strokeStyleLineCap) ? strokeStyleLineCap : ol.render.canvas.defaultLineCap, lineDash:goog.isDefAndNotNull(strokeStyleLineDash) ? strokeStyleLineDash : ol.render.canvas.defaultLineDash, lineJoin:goog.isDef(strokeStyleLineJoin) ? strokeStyleLineJoin : ol.render.canvas.defaultLineJoin, lineWidth:this.pixelRatio_ * (goog.isDef(strokeStyleWidth) ? strokeStyleWidth : ol.render.canvas.defaultLineWidth), miterLimit:goog.isDef(strokeStyleMiterLimit) ? strokeStyleMiterLimit : ol.render.canvas.defaultMiterLimit, strokeStyle:ol.color.asString(!goog.isNull(strokeStyleColor) ? strokeStyleColor : ol.render.canvas.defaultStrokeStyle)} } }; ol.render.canvas.Immediate.prototype.setImageStyle = function(imageStyle) { if(goog.isNull(imageStyle)) { this.image_ = null }else { var imageAnchor = imageStyle.getAnchor(); var imageImage = imageStyle.getImage(1); var imageOpacity = imageStyle.getOpacity(); var imageRotateWithView = imageStyle.getRotateWithView(); var imageRotation = imageStyle.getRotation(); var imageScale = imageStyle.getScale(); var imageSize = imageStyle.getSize(); var imageSnapToPixel = imageStyle.getSnapToPixel(); goog.asserts.assert(!goog.isNull(imageAnchor)); goog.asserts.assert(!goog.isNull(imageImage)); goog.asserts.assert(!goog.isNull(imageSize)); this.imageAnchorX_ = imageAnchor[0]; this.imageAnchorY_ = imageAnchor[1]; this.imageHeight_ = imageSize[1]; this.image_ = imageImage; this.imageOpacity_ = goog.isDef(imageOpacity) ? imageOpacity : 1; this.imageRotateWithView_ = goog.isDef(imageRotateWithView) ? imageRotateWithView : false; this.imageRotation_ = goog.isDef(imageRotation) ? imageRotation : 0; this.imageScale_ = goog.isDef(imageScale) ? imageScale : 1; this.imageSnapToPixel_ = goog.isDef(imageSnapToPixel) ? imageSnapToPixel : false; this.imageWidth_ = imageSize[0] } }; ol.render.canvas.Immediate.prototype.setTextStyle = function(textStyle) { if(goog.isNull(textStyle)) { this.text_ = "" }else { var textFillStyle = textStyle.getFill(); if(goog.isNull(textFillStyle)) { this.textFillState_ = null }else { var textFillStyleColor = textFillStyle.getColor(); this.textFillState_ = {fillStyle:ol.color.asString(!goog.isNull(textFillStyleColor) ? textFillStyleColor : ol.render.canvas.defaultFillStyle)} } var textStrokeStyle = textStyle.getStroke(); if(goog.isNull(textStrokeStyle)) { this.textStrokeState_ = null }else { var textStrokeStyleColor = textStrokeStyle.getColor(); var textStrokeStyleLineCap = textStrokeStyle.getLineCap(); var textStrokeStyleLineDash = textStrokeStyle.getLineDash(); var textStrokeStyleLineJoin = textStrokeStyle.getLineJoin(); var textStrokeStyleWidth = textStrokeStyle.getWidth(); var textStrokeStyleMiterLimit = textStrokeStyle.getMiterLimit(); this.textStrokeState_ = {lineCap:goog.isDef(textStrokeStyleLineCap) ? textStrokeStyleLineCap : ol.render.canvas.defaultLineCap, lineDash:goog.isDefAndNotNull(textStrokeStyleLineDash) ? textStrokeStyleLineDash : ol.render.canvas.defaultLineDash, lineJoin:goog.isDef(textStrokeStyleLineJoin) ? textStrokeStyleLineJoin : ol.render.canvas.defaultLineJoin, lineWidth:this.pixelRatio_ * (goog.isDef(textStrokeStyleWidth) ? textStrokeStyleWidth : ol.render.canvas.defaultLineWidth), miterLimit:goog.isDef(textStrokeStyleMiterLimit) ? textStrokeStyleMiterLimit : ol.render.canvas.defaultMiterLimit, strokeStyle:ol.color.asString(!goog.isNull(textStrokeStyleColor) ? textStrokeStyleColor : ol.render.canvas.defaultStrokeStyle)} } var textFont = textStyle.getFont(); var textOffsetX = textStyle.getOffsetX(); var textOffsetY = textStyle.getOffsetY(); var textRotation = textStyle.getRotation(); var textScale = textStyle.getScale(); var textText = textStyle.getText(); var textTextAlign = textStyle.getTextAlign(); var textTextBaseline = textStyle.getTextBaseline(); this.textState_ = {font:goog.isDef(textFont) ? textFont : ol.render.canvas.defaultFont, textAlign:goog.isDef(textTextAlign) ? textTextAlign : ol.render.canvas.defaultTextAlign, textBaseline:goog.isDef(textTextBaseline) ? textTextBaseline : ol.render.canvas.defaultTextBaseline}; this.text_ = goog.isDef(textText) ? textText : ""; this.textOffsetX_ = goog.isDef(textOffsetX) ? this.pixelRatio_ * textOffsetX : 0; this.textOffsetY_ = goog.isDef(textOffsetY) ? this.pixelRatio_ * textOffsetY : 0; this.textRotation_ = goog.isDef(textRotation) ? textRotation : 0; this.textScale_ = this.pixelRatio_ * (goog.isDef(textScale) ? textScale : 1) } }; ol.render.canvas.Immediate.GEOMETRY_RENDERES_ = {"Point":ol.render.canvas.Immediate.prototype.drawPointGeometry, "LineString":ol.render.canvas.Immediate.prototype.drawLineStringGeometry, "Polygon":ol.render.canvas.Immediate.prototype.drawPolygonGeometry, "MultiPoint":ol.render.canvas.Immediate.prototype.drawMultiPointGeometry, "MultiLineString":ol.render.canvas.Immediate.prototype.drawMultiLineStringGeometry, "MultiPolygon":ol.render.canvas.Immediate.prototype.drawMultiPolygonGeometry, "GeometryCollection":ol.render.canvas.Immediate.prototype.drawGeometryCollectionGeometry, "Circle":ol.render.canvas.Immediate.prototype.drawCircleGeometry}; goog.provide("ol.renderer.canvas.Layer"); goog.require("goog.array"); goog.require("goog.vec.Mat4"); goog.require("ol.dom"); goog.require("ol.layer.Layer"); goog.require("ol.render.Event"); goog.require("ol.render.EventType"); goog.require("ol.render.canvas.Immediate"); goog.require("ol.renderer.Layer"); goog.require("ol.vec.Mat4"); ol.renderer.canvas.Layer = function(mapRenderer, layer) { goog.base(this, mapRenderer, layer); this.transform_ = goog.vec.Mat4.createNumber() }; goog.inherits(ol.renderer.canvas.Layer, ol.renderer.Layer); ol.renderer.canvas.Layer.prototype.composeFrame = function(frameState, layerState, context) { this.dispatchPreComposeEvent(context, frameState); var image = this.getImage(); if(!goog.isNull(image)) { var imageTransform = this.getImageTransform(); context.globalAlpha = layerState.opacity; if(frameState.view2DState.rotation === 0) { var dx = goog.vec.Mat4.getElement(imageTransform, 0, 3); var dy = goog.vec.Mat4.getElement(imageTransform, 1, 3); var dw = image.width * goog.vec.Mat4.getElement(imageTransform, 0, 0); var dh = image.height * goog.vec.Mat4.getElement(imageTransform, 1, 1); context.drawImage(image, 0, 0, +image.width, +image.height, Math.round(dx), Math.round(dy), Math.round(dw), Math.round(dh)) }else { context.setTransform(goog.vec.Mat4.getElement(imageTransform, 0, 0), goog.vec.Mat4.getElement(imageTransform, 1, 0), goog.vec.Mat4.getElement(imageTransform, 0, 1), goog.vec.Mat4.getElement(imageTransform, 1, 1), goog.vec.Mat4.getElement(imageTransform, 0, 3), goog.vec.Mat4.getElement(imageTransform, 1, 3)); context.drawImage(image, 0, 0); context.setTransform(1, 0, 0, 1, 0, 0) } } this.dispatchPostComposeEvent(context, frameState) }; ol.renderer.canvas.Layer.prototype.dispatchComposeEvent_ = function(type, context, frameState, opt_transform) { var layer = this.getLayer(); if(layer.hasListener(type)) { var transform = goog.isDef(opt_transform) ? opt_transform : this.getTransform(frameState); var render = new ol.render.canvas.Immediate(context, frameState.pixelRatio, frameState.extent, transform, frameState.view2DState.rotation); var composeEvent = new ol.render.Event(type, layer, render, frameState, context, null); layer.dispatchEvent(composeEvent); render.flush() } }; ol.renderer.canvas.Layer.prototype.dispatchPostComposeEvent = function(context, frameState, opt_transform) { this.dispatchComposeEvent_(ol.render.EventType.POSTCOMPOSE, context, frameState, opt_transform) }; ol.renderer.canvas.Layer.prototype.dispatchPreComposeEvent = function(context, frameState, opt_transform) { this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, context, frameState, opt_transform) }; ol.renderer.canvas.Layer.prototype.dispatchRenderEvent = function(context, frameState, opt_transform) { this.dispatchComposeEvent_(ol.render.EventType.RENDER, context, frameState, opt_transform) }; ol.renderer.canvas.Layer.prototype.getImage = goog.abstractMethod; ol.renderer.canvas.Layer.prototype.getImageTransform = goog.abstractMethod; ol.renderer.canvas.Layer.prototype.getTransform = function(frameState) { var view2DState = frameState.view2DState; var pixelRatio = frameState.pixelRatio; return ol.vec.Mat4.makeTransform2D(this.transform_, pixelRatio * frameState.size[0] / 2, pixelRatio * frameState.size[1] / 2, pixelRatio / view2DState.resolution, -pixelRatio / view2DState.resolution, -view2DState.rotation, -view2DState.center[0], -view2DState.center[1]) }; ol.renderer.canvas.Layer.testCanvasSize = function() { var context = null; var imageData = null; return function(size) { if(goog.isNull(context)) { context = ol.dom.createCanvasContext2D(1, 1); imageData = context.createImageData(1, 1); var data = imageData.data; data[0] = 42; data[1] = 84; data[2] = 126; data[3] = 255 } var canvas = context.canvas; var good = size[0] <= canvas.width && size[1] <= canvas.height; if(!good) { canvas.width = size[0]; canvas.height = size[1]; var x = size[0] - 1; var y = size[1] - 1; context.putImageData(imageData, x, y); var result = context.getImageData(x, y, 1, 1); good = goog.array.equals(imageData.data, result.data) } return good } }(); goog.provide("ol.source.Image"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.Attribution"); goog.require("ol.Extent"); goog.require("ol.Image"); goog.require("ol.array"); goog.require("ol.source.Source"); ol.source.ImageOptions; ol.source.Image = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, projection:options.projection, state:options.state}); this.resolutions_ = goog.isDef(options.resolutions) ? options.resolutions : null; goog.asserts.assert(goog.isNull(this.resolutions_) || goog.array.isSorted(this.resolutions_, function(a, b) { return b - a }, true)) }; goog.inherits(ol.source.Image, ol.source.Source); ol.source.Image.prototype.getResolutions = function() { return this.resolutions_ }; ol.source.Image.prototype.findNearestResolution = function(resolution) { if(!goog.isNull(this.resolutions_)) { var idx = ol.array.linearFindNearest(this.resolutions_, resolution, 0); resolution = this.resolutions_[idx] } return resolution }; ol.source.Image.prototype.getImage = goog.abstractMethod; goog.provide("ol.renderer.canvas.ImageLayer"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.vec.Mat4"); goog.require("ol.ImageBase"); goog.require("ol.ImageState"); goog.require("ol.ViewHint"); goog.require("ol.layer.Image"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.canvas.Layer"); goog.require("ol.source.Image"); goog.require("ol.vec.Mat4"); ol.renderer.canvas.ImageLayer = function(mapRenderer, imageLayer) { goog.base(this, mapRenderer, imageLayer); this.image_ = null; this.imageTransform_ = goog.vec.Mat4.createNumber() }; goog.inherits(ol.renderer.canvas.ImageLayer, ol.renderer.canvas.Layer); ol.renderer.canvas.ImageLayer.prototype.forEachFeatureAtPixel = function(coordinate, frameState, callback, thisArg) { var layer = this.getLayer(); var source = layer.getSource(); goog.asserts.assertInstanceof(source, ol.source.Image); var extent = frameState.extent; var resolution = frameState.view2DState.resolution; var rotation = frameState.view2DState.rotation; return source.forEachFeatureAtPixel(extent, resolution, rotation, coordinate, function(feature) { return callback.call(thisArg, feature, layer) }) }; ol.renderer.canvas.ImageLayer.prototype.getImage = function() { return goog.isNull(this.image_) ? null : this.image_.getImageElement() }; ol.renderer.canvas.ImageLayer.prototype.getImageTransform = function() { return this.imageTransform_ }; ol.renderer.canvas.ImageLayer.prototype.prepareFrame = function(frameState, layerState) { var pixelRatio = frameState.pixelRatio; var view2DState = frameState.view2DState; var viewCenter = view2DState.center; var viewResolution = view2DState.resolution; var viewRotation = view2DState.rotation; var image; var imageLayer = this.getLayer(); goog.asserts.assertInstanceof(imageLayer, ol.layer.Image); var imageSource = imageLayer.getSource(); goog.asserts.assertInstanceof(imageSource, ol.source.Image); var hints = frameState.viewHints; if(!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) { image = imageSource.getImage(frameState.extent, viewResolution, pixelRatio, view2DState.projection); if(!goog.isNull(image)) { var imageState = image.getState(); if(imageState == ol.ImageState.IDLE) { goog.events.listenOnce(image, goog.events.EventType.CHANGE, this.handleImageChange, false, this); image.load() }else { if(imageState == ol.ImageState.LOADED) { this.image_ = image } } } } if(!goog.isNull(this.image_)) { image = this.image_; var imageExtent = image.getExtent(); var imageResolution = image.getResolution(); var imagePixelRatio = image.getPixelRatio(); var scale = pixelRatio * imageResolution / (viewResolution * imagePixelRatio); ol.vec.Mat4.makeTransform2D(this.imageTransform_, pixelRatio * frameState.size[0] / 2, pixelRatio * frameState.size[1] / 2, scale, scale, viewRotation, imagePixelRatio * (imageExtent[0] - viewCenter[0]) / imageResolution, imagePixelRatio * (viewCenter[1] - imageExtent[3]) / imageResolution); this.updateAttributions(frameState.attributions, image.getAttributions()); this.updateLogos(frameState, imageSource) } }; goog.provide("ol.renderer.canvas.TileLayer"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("goog.vec.Mat4"); goog.require("ol.Size"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.TileState"); goog.require("ol.dom"); goog.require("ol.extent"); goog.require("ol.layer.Tile"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.canvas.Layer"); goog.require("ol.source.Tile"); goog.require("ol.vec.Mat4"); ol.renderer.canvas.TileLayer = function(mapRenderer, tileLayer) { goog.base(this, mapRenderer, tileLayer); this.canvas_ = null; this.canvasSize_ = null; this.canvasTooBig_ = false; this.context_ = null; this.imageTransform_ = goog.vec.Mat4.createNumber(); this.renderedCanvasZ_ = NaN; this.renderedCanvasTileRange_ = null; this.renderedTiles_ = null }; goog.inherits(ol.renderer.canvas.TileLayer, ol.renderer.canvas.Layer); ol.renderer.canvas.TileLayer.prototype.getImage = function() { return this.canvas_ }; ol.renderer.canvas.TileLayer.prototype.getImageTransform = function() { return this.imageTransform_ }; ol.renderer.canvas.TileLayer.prototype.prepareFrame = function(frameState, layerState) { var pixelRatio = frameState.pixelRatio; var view2DState = frameState.view2DState; var projection = view2DState.projection; var tileLayer = this.getLayer(); goog.asserts.assertInstanceof(tileLayer, ol.layer.Tile); var tileSource = tileLayer.getSource(); goog.asserts.assertInstanceof(tileSource, ol.source.Tile); var tileGrid = tileSource.getTileGridForProjection(projection); var tileGutter = tileSource.getGutter(); var z = tileGrid.getZForResolution(view2DState.resolution); var tilePixelSize = tileSource.getTilePixelSize(z, frameState.pixelRatio, projection); var tilePixelRatio = tilePixelSize / tileGrid.getTileSize(z); var tileResolution = tileGrid.getResolution(z); var tilePixelResolution = tileResolution / tilePixelRatio; var center = view2DState.center; var extent; if(tileResolution == view2DState.resolution) { center = this.snapCenterToPixel(center, tileResolution, frameState.size); extent = ol.extent.getForView2DAndSize(center, tileResolution, view2DState.rotation, frameState.size) }else { extent = frameState.extent } var tileRange = tileGrid.getTileRangeForExtentAndResolution(extent, tileResolution); var canvasWidth = tilePixelSize * tileRange.getWidth(); var canvasHeight = tilePixelSize * tileRange.getHeight(); var canvas, context; if(goog.isNull(this.canvas_)) { goog.asserts.assert(goog.isNull(this.canvasSize_)); goog.asserts.assert(goog.isNull(this.context_)); goog.asserts.assert(goog.isNull(this.renderedCanvasTileRange_)); context = ol.dom.createCanvasContext2D(canvasWidth, canvasHeight); this.canvas_ = context.canvas; this.canvasSize_ = [canvasWidth, canvasHeight]; this.context_ = context; this.canvasTooBig_ = !ol.renderer.canvas.Layer.testCanvasSize(this.canvasSize_) }else { goog.asserts.assert(!goog.isNull(this.canvasSize_)); goog.asserts.assert(!goog.isNull(this.context_)); canvas = this.canvas_; context = this.context_; if(this.canvasSize_[0] < canvasWidth || this.canvasSize_[1] < canvasHeight || this.canvasTooBig_ && (this.canvasSize_[0] > canvasWidth || this.canvasSize_[1] > canvasHeight)) { canvas.width = canvasWidth; canvas.height = canvasHeight; this.canvasSize_ = [canvasWidth, canvasHeight]; this.canvasTooBig_ = !ol.renderer.canvas.Layer.testCanvasSize(this.canvasSize_); this.renderedCanvasTileRange_ = null }else { canvasWidth = this.canvasSize_[0]; canvasHeight = this.canvasSize_[1]; if(z != this.renderedCanvasZ_ || !this.renderedCanvasTileRange_.containsTileRange(tileRange)) { this.renderedCanvasTileRange_ = null } } } var canvasTileRange, canvasTileRangeWidth, minX, minY; if(goog.isNull(this.renderedCanvasTileRange_)) { canvasTileRangeWidth = canvasWidth / tilePixelSize; var canvasTileRangeHeight = canvasHeight / tilePixelSize; minX = tileRange.minX - Math.floor((canvasTileRangeWidth - tileRange.getWidth()) / 2); minY = tileRange.minY - Math.floor((canvasTileRangeHeight - tileRange.getHeight()) / 2); this.renderedCanvasZ_ = z; this.renderedCanvasTileRange_ = new ol.TileRange(minX, minX + canvasTileRangeWidth - 1, minY, minY + canvasTileRangeHeight - 1); this.renderedTiles_ = new Array(canvasTileRangeWidth * canvasTileRangeHeight); canvasTileRange = this.renderedCanvasTileRange_ }else { canvasTileRange = this.renderedCanvasTileRange_; canvasTileRangeWidth = canvasTileRange.getWidth() } goog.asserts.assert(canvasTileRange.containsTileRange(tileRange)); var tilesToDrawByZ = {}; tilesToDrawByZ[z] = {}; var tilesToClear = []; var getTileIfLoaded = this.createGetTileIfLoadedFunction(function(tile) { return!goog.isNull(tile) && tile.getState() == ol.TileState.LOADED }, tileSource, pixelRatio, projection); var findLoadedTiles = goog.bind(tileSource.findLoadedTiles, tileSource, tilesToDrawByZ, getTileIfLoaded); var useInterimTilesOnError = tileLayer.getUseInterimTilesOnError(); if(!goog.isDef(useInterimTilesOnError)) { useInterimTilesOnError = true } var tmpExtent = ol.extent.createEmpty(); var tmpTileRange = new ol.TileRange(0, 0, 0, 0); var childTileRange, fullyLoaded, tile, tileState, x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { tile = tileSource.getTile(z, x, y, pixelRatio, projection); tileState = tile.getState(); if(tileState == ol.TileState.LOADED || tileState == ol.TileState.EMPTY || tileState == ol.TileState.ERROR && !useInterimTilesOnError) { tilesToDrawByZ[z][tile.tileCoord.toString()] = tile; continue } fullyLoaded = tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles, null, tmpTileRange, tmpExtent); if(!fullyLoaded) { tilesToClear.push(tile); childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord, tmpTileRange, tmpExtent); if(!goog.isNull(childTileRange)) { findLoadedTiles(z + 1, childTileRange) } } } } var i, ii; for(i = 0, ii = tilesToClear.length;i < ii;++i) { tile = tilesToClear[i]; x = tilePixelSize * (tile.tileCoord.x - canvasTileRange.minX); y = tilePixelSize * (canvasTileRange.maxY - tile.tileCoord.y); context.clearRect(x, y, tilePixelSize, tilePixelSize) } var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); goog.array.sort(zs); var opaque = tileSource.getOpaque(); var origin = ol.extent.getTopLeft(tileGrid.getTileCoordExtent(new ol.TileCoord(z, canvasTileRange.minX, canvasTileRange.maxY), tmpExtent)); var currentZ, index, scale, tileCoordKey, tileExtent, tilesToDraw; var ix, iy, interimTileExtent, interimTileRange, maxX, maxY; var height, width; for(i = 0, ii = zs.length;i < ii;++i) { currentZ = zs[i]; tilePixelSize = tileSource.getTilePixelSize(currentZ, pixelRatio, projection); tilesToDraw = tilesToDrawByZ[currentZ]; if(currentZ == z) { for(tileCoordKey in tilesToDraw) { tile = tilesToDraw[tileCoordKey]; index = (tile.tileCoord.y - canvasTileRange.minY) * canvasTileRangeWidth + (tile.tileCoord.x - canvasTileRange.minX); if(this.renderedTiles_[index] != tile) { x = tilePixelSize * (tile.tileCoord.x - canvasTileRange.minX); y = tilePixelSize * (canvasTileRange.maxY - tile.tileCoord.y); tileState = tile.getState(); if(tileState == ol.TileState.EMPTY || tileState == ol.TileState.ERROR && !useInterimTilesOnError || !opaque) { context.clearRect(x, y, tilePixelSize, tilePixelSize) } if(tileState == ol.TileState.LOADED) { context.drawImage(tile.getImage(), tileGutter, tileGutter, tilePixelSize, tilePixelSize, x, y, tilePixelSize, tilePixelSize) } this.renderedTiles_[index] = tile } } }else { scale = tileGrid.getResolution(currentZ) / tileResolution; for(tileCoordKey in tilesToDraw) { tile = tilesToDraw[tileCoordKey]; tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent); x = (tileExtent[0] - origin[0]) / tilePixelResolution; y = (origin[1] - tileExtent[3]) / tilePixelResolution; width = scale * tilePixelSize; height = scale * tilePixelSize; tileState = tile.getState(); if(tileState == ol.TileState.EMPTY || !opaque) { context.clearRect(x, y, width, height) } if(tileState == ol.TileState.LOADED) { context.drawImage(tile.getImage(), tileGutter, tileGutter, tilePixelSize, tilePixelSize, x, y, width, height) } interimTileRange = tileGrid.getTileRangeForExtentAndZ(tileExtent, z, tmpTileRange); minX = Math.max(interimTileRange.minX, canvasTileRange.minX); maxX = Math.min(interimTileRange.maxX, canvasTileRange.maxX); minY = Math.max(interimTileRange.minY, canvasTileRange.minY); maxY = Math.min(interimTileRange.maxY, canvasTileRange.maxY); for(ix = minX;ix <= maxX;++ix) { for(iy = minY;iy <= maxY;++iy) { index = (iy - canvasTileRange.minY) * canvasTileRangeWidth + (ix - canvasTileRange.minX); this.renderedTiles_[index] = undefined } } } } } this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange); this.manageTilePyramid(frameState, tileSource, tileGrid, pixelRatio, projection, extent, z, tileLayer.getPreload()); this.scheduleExpireCache(frameState, tileSource); this.updateLogos(frameState, tileSource); ol.vec.Mat4.makeTransform2D(this.imageTransform_, pixelRatio * frameState.size[0] / 2, pixelRatio * frameState.size[1] / 2, pixelRatio * tilePixelResolution / view2DState.resolution, pixelRatio * tilePixelResolution / view2DState.resolution, view2DState.rotation, (origin[0] - center[0]) / tilePixelResolution, (center[1] - origin[1]) / tilePixelResolution) }; goog.provide("ol.render.IReplayGroup"); goog.require("goog.functions"); goog.require("ol.render.IVectorContext"); ol.render.ReplayType = {IMAGE:"Image", LINE_STRING:"LineString", POLYGON:"Polygon", TEXT:"Text"}; ol.render.REPLAY_ORDER = [ol.render.ReplayType.POLYGON, ol.render.ReplayType.LINE_STRING, ol.render.ReplayType.IMAGE, ol.render.ReplayType.TEXT]; ol.render.IReplayGroup = function() { }; ol.render.IReplayGroup.prototype.finish = function() { }; ol.render.IReplayGroup.prototype.getReplay = function(zIndex, replayType) { }; ol.render.IReplayGroup.prototype.isEmpty = function() { }; goog.provide("ol.render.canvas.Replay"); goog.provide("ol.render.canvas.ReplayGroup"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("goog.vec.Mat4"); goog.require("ol.BrowserFeature"); goog.require("ol.array"); goog.require("ol.color"); goog.require("ol.dom"); goog.require("ol.extent"); goog.require("ol.extent.Relationship"); goog.require("ol.geom.flat.simplify"); goog.require("ol.geom.flat.transform"); goog.require("ol.render.IReplayGroup"); goog.require("ol.render.IVectorContext"); goog.require("ol.render.canvas"); goog.require("ol.vec.Mat4"); ol.render.canvas.Instruction = {BEGIN_GEOMETRY:0, BEGIN_PATH:1, CIRCLE:2, CLOSE_PATH:3, DRAW_IMAGE:4, DRAW_TEXT:5, END_GEOMETRY:6, FILL:7, MOVE_TO_LINE_TO:8, SET_FILL_STYLE:9, SET_STROKE_STYLE:10, SET_TEXT_STYLE:11, STROKE:12}; ol.render.canvas.Replay = function(tolerance, maxExtent, resolution) { this.tolerance = tolerance; this.maxExtent = maxExtent; this.maxLineWidth = 0; this.resolution = resolution; this.beginGeometryInstruction1_ = null; this.beginGeometryInstruction2_ = null; this.instructions = []; this.coordinates = []; this.renderedTransform_ = goog.vec.Mat4.createNumber(); this.hitDetectionInstructions = []; this.pixelCoordinates_ = []; this.extent_ = ol.extent.createEmpty(); this.tmpLocalTransform_ = goog.vec.Mat4.createNumber() }; ol.render.canvas.Replay.prototype.appendFlatCoordinates = function(flatCoordinates, offset, end, stride, close) { var myEnd = this.coordinates.length; var extent = this.getBufferedMaxExtent(); var lastCoord = [flatCoordinates[offset], flatCoordinates[offset + 1]]; var nextCoord = [NaN, NaN]; var skipped = true; var i, lastRel, nextRel; for(i = offset + stride;i < end;i += stride) { nextCoord[0] = flatCoordinates[i]; nextCoord[1] = flatCoordinates[i + 1]; nextRel = ol.extent.coordinateRelationship(extent, nextCoord); if(nextRel !== lastRel) { if(skipped) { this.coordinates[myEnd++] = lastCoord[0]; this.coordinates[myEnd++] = lastCoord[1] } this.coordinates[myEnd++] = nextCoord[0]; this.coordinates[myEnd++] = nextCoord[1]; skipped = false }else { if(nextRel === ol.extent.Relationship.INTERSECTING) { this.coordinates[myEnd++] = nextCoord[0]; this.coordinates[myEnd++] = nextCoord[1]; skipped = false }else { skipped = true } } lastCoord[0] = nextCoord[0]; lastCoord[1] = nextCoord[1]; lastRel = nextRel } if(i === offset + stride) { this.coordinates[myEnd++] = lastCoord[0]; this.coordinates[myEnd++] = lastCoord[1] } if(close) { this.coordinates[myEnd++] = flatCoordinates[offset]; this.coordinates[myEnd++] = flatCoordinates[offset + 1] } return myEnd }; ol.render.canvas.Replay.prototype.beginGeometry = function(geometry, data) { this.beginGeometryInstruction1_ = [ol.render.canvas.Instruction.BEGIN_GEOMETRY, geometry, data, 0]; this.instructions.push(this.beginGeometryInstruction1_); this.beginGeometryInstruction2_ = [ol.render.canvas.Instruction.BEGIN_GEOMETRY, geometry, data, 0]; this.hitDetectionInstructions.push(this.beginGeometryInstruction2_) }; ol.render.canvas.Replay.prototype.replay_ = function(context, pixelRatio, transform, viewRotation, skippedFeaturesHash, instructions, geometryCallback) { var pixelCoordinates; if(ol.vec.Mat4.equals2D(transform, this.renderedTransform_)) { pixelCoordinates = this.pixelCoordinates_ }else { pixelCoordinates = ol.geom.flat.transform.transform2D(this.coordinates, 2, transform, this.pixelCoordinates_); goog.vec.Mat4.setFromArray(this.renderedTransform_, transform); goog.asserts.assert(pixelCoordinates === this.pixelCoordinates_) } var i = 0; var ii = instructions.length; var d = 0; var dd; var localTransform = this.tmpLocalTransform_; while(i < ii) { var instruction = instructions[i]; var type = (instruction[0]); var data, fill, geometry, stroke, text, x, y; switch(type) { case ol.render.canvas.Instruction.BEGIN_GEOMETRY: geometry = (instruction[1]); data = (instruction[2]); var dataUid = goog.getUid(data).toString(); if(!goog.isDef(goog.object.get(skippedFeaturesHash, dataUid))) { ++i }else { i = (instruction[3]) } break; case ol.render.canvas.Instruction.BEGIN_PATH: context.beginPath(); ++i; break; case ol.render.canvas.Instruction.CIRCLE: var x1 = pixelCoordinates[d]; var y1 = pixelCoordinates[d + 1]; var x2 = pixelCoordinates[d + 2]; var y2 = pixelCoordinates[d + 3]; var dx = x2 - x1; var dy = y2 - y1; var r = Math.sqrt(dx * dx + dy * dy); context.arc(x1, y1, r, 0, 2 * Math.PI, true); d += 4; ++i; break; case ol.render.canvas.Instruction.CLOSE_PATH: context.closePath(); ++i; break; case ol.render.canvas.Instruction.DRAW_IMAGE: goog.asserts.assert(goog.isNumber(instruction[1])); d = (instruction[1]); goog.asserts.assert(goog.isNumber(instruction[2])); dd = (instruction[2]); var image = (instruction[3]); var anchorX = (instruction[4]) * pixelRatio; var anchorY = (instruction[5]) * pixelRatio; var height = (instruction[6]) * pixelRatio; var opacity = (instruction[7]); var rotateWithView = (instruction[8]); var rotation = (instruction[9]); var scale = (instruction[10]); var snapToPixel = (instruction[11]); var width = (instruction[12]) * pixelRatio; if(rotateWithView) { rotation += viewRotation } for(;d < dd;d += 2) { x = pixelCoordinates[d] - anchorX; y = pixelCoordinates[d + 1] - anchorY; if(snapToPixel) { x = x + 0.5 | 0; y = y + 0.5 | 0 } if(scale != 1 || rotation !== 0) { var centerX = x + anchorX; var centerY = y + anchorY; ol.vec.Mat4.makeTransform2D(localTransform, centerX, centerY, scale, scale, rotation, -centerX, -centerY); context.setTransform(goog.vec.Mat4.getElement(localTransform, 0, 0), goog.vec.Mat4.getElement(localTransform, 1, 0), goog.vec.Mat4.getElement(localTransform, 0, 1), goog.vec.Mat4.getElement(localTransform, 1, 1), goog.vec.Mat4.getElement(localTransform, 0, 3), goog.vec.Mat4.getElement(localTransform, 1, 3)) } var alpha = context.globalAlpha; if(opacity != 1) { context.globalAlpha = alpha * opacity } context.drawImage(image, x, y, width, height); if(opacity != 1) { context.globalAlpha = alpha } if(scale != 1 || rotation !== 0) { context.setTransform(1, 0, 0, 1, 0, 0) } } ++i; break; case ol.render.canvas.Instruction.DRAW_TEXT: goog.asserts.assert(goog.isNumber(instruction[1])); d = (instruction[1]); goog.asserts.assert(goog.isNumber(instruction[2])); dd = (instruction[2]); goog.asserts.assert(goog.isString(instruction[3])); text = (instruction[3]); goog.asserts.assert(goog.isNumber(instruction[4])); var offsetX = (instruction[4]) * pixelRatio; goog.asserts.assert(goog.isNumber(instruction[5])); var offsetY = (instruction[5]) * pixelRatio; goog.asserts.assert(goog.isNumber(instruction[6])); rotation = (instruction[6]); goog.asserts.assert(goog.isNumber(instruction[7])); scale = (instruction[7]) * pixelRatio; goog.asserts.assert(goog.isBoolean(instruction[8])); fill = (instruction[8]); goog.asserts.assert(goog.isBoolean(instruction[9])); stroke = (instruction[9]); for(;d < dd;d += 2) { x = pixelCoordinates[d] + offsetX; y = pixelCoordinates[d + 1] + offsetY; if(scale != 1 || rotation !== 0) { ol.vec.Mat4.makeTransform2D(localTransform, x, y, scale, scale, rotation, -x, -y); context.setTransform(goog.vec.Mat4.getElement(localTransform, 0, 0), goog.vec.Mat4.getElement(localTransform, 1, 0), goog.vec.Mat4.getElement(localTransform, 0, 1), goog.vec.Mat4.getElement(localTransform, 1, 1), goog.vec.Mat4.getElement(localTransform, 0, 3), goog.vec.Mat4.getElement(localTransform, 1, 3)) } if(stroke) { context.strokeText(text, x, y) } if(fill) { context.fillText(text, x, y) } if(scale != 1 || rotation !== 0) { context.setTransform(1, 0, 0, 1, 0, 0) } } ++i; break; case ol.render.canvas.Instruction.END_GEOMETRY: if(goog.isDef(geometryCallback)) { geometry = (instruction[1]); data = (instruction[2]); var result = geometryCallback(geometry, data); if(result) { return result } } ++i; break; case ol.render.canvas.Instruction.FILL: context.fill(); ++i; break; case ol.render.canvas.Instruction.MOVE_TO_LINE_TO: goog.asserts.assert(goog.isNumber(instruction[1])); d = (instruction[1]); goog.asserts.assert(goog.isNumber(instruction[2])); dd = (instruction[2]); context.moveTo(pixelCoordinates[d], pixelCoordinates[d + 1]); for(d += 2;d < dd;d += 2) { context.lineTo(pixelCoordinates[d], pixelCoordinates[d + 1]) } ++i; break; case ol.render.canvas.Instruction.SET_FILL_STYLE: goog.asserts.assert(goog.isString(instruction[1])); context.fillStyle = (instruction[1]); ++i; break; case ol.render.canvas.Instruction.SET_STROKE_STYLE: goog.asserts.assert(goog.isString(instruction[1])); goog.asserts.assert(goog.isNumber(instruction[2])); goog.asserts.assert(goog.isString(instruction[3])); goog.asserts.assert(goog.isString(instruction[4])); goog.asserts.assert(goog.isNumber(instruction[5])); goog.asserts.assert(!goog.isNull(instruction[6])); context.strokeStyle = (instruction[1]); context.lineWidth = (instruction[2]) * pixelRatio; context.lineCap = (instruction[3]); context.lineJoin = (instruction[4]); context.miterLimit = (instruction[5]); if(ol.BrowserFeature.HAS_CANVAS_LINE_DASH) { context.setLineDash((instruction[6])) } ++i; break; case ol.render.canvas.Instruction.SET_TEXT_STYLE: goog.asserts.assert(goog.isString(instruction[1])); goog.asserts.assert(goog.isString(instruction[2])); goog.asserts.assert(goog.isString(instruction[3])); context.font = (instruction[1]); context.textAlign = (instruction[2]); context.textBaseline = (instruction[3]); ++i; break; case ol.render.canvas.Instruction.STROKE: context.stroke(); ++i; break; default: goog.asserts.fail(); ++i; break } } goog.asserts.assert(i == instructions.length); return undefined }; ol.render.canvas.Replay.prototype.replay = function(context, pixelRatio, transform, viewRotation, skippedFeaturesHash) { var instructions = this.instructions; return this.replay_(context, pixelRatio, transform, viewRotation, skippedFeaturesHash, instructions, undefined) }; ol.render.canvas.Replay.prototype.replayHitDetection = function(context, transform, viewRotation, skippedFeaturesHash, opt_geometryCallback) { var instructions = this.hitDetectionInstructions; return this.replay_(context, 1, transform, viewRotation, skippedFeaturesHash, instructions, opt_geometryCallback) }; ol.render.canvas.Replay.prototype.reverseHitDetectionInstructions_ = function() { var hitDetectionInstructions = this.hitDetectionInstructions; hitDetectionInstructions.reverse(); var i; var n = hitDetectionInstructions.length; var instruction; var type; var begin = -1; for(i = 0;i < n;++i) { instruction = hitDetectionInstructions[i]; type = (instruction[0]); if(type == ol.render.canvas.Instruction.END_GEOMETRY) { goog.asserts.assert(begin == -1); begin = i }else { if(type == ol.render.canvas.Instruction.BEGIN_GEOMETRY) { instruction[3] = i; goog.asserts.assert(begin >= 0); ol.array.reverseSubArray(this.hitDetectionInstructions, begin, i); begin = -1 } } } }; ol.render.canvas.Replay.prototype.drawAsync = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawCircleGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawFeature = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawGeometryCollectionGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawLineStringGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawMultiLineStringGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawPointGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawMultiPointGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawPolygonGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawMultiPolygonGeometry = goog.abstractMethod; ol.render.canvas.Replay.prototype.drawText = goog.abstractMethod; ol.render.canvas.Replay.prototype.endGeometry = function(geometry, data) { goog.asserts.assert(!goog.isNull(this.beginGeometryInstruction1_)); this.beginGeometryInstruction1_[3] = this.instructions.length; this.beginGeometryInstruction1_ = null; goog.asserts.assert(!goog.isNull(this.beginGeometryInstruction2_)); this.beginGeometryInstruction2_[3] = this.hitDetectionInstructions.length; this.beginGeometryInstruction2_ = null; var endGeometryInstruction = [ol.render.canvas.Instruction.END_GEOMETRY, geometry, data]; this.instructions.push(endGeometryInstruction); this.hitDetectionInstructions.push(endGeometryInstruction) }; ol.render.canvas.Replay.prototype.finish = goog.nullFunction; ol.render.canvas.Replay.prototype.getBufferedMaxExtent = function() { return this.maxExtent }; ol.render.canvas.Replay.prototype.getExtent = function() { return this.extent_ }; ol.render.canvas.Replay.prototype.setFillStrokeStyle = goog.abstractMethod; ol.render.canvas.Replay.prototype.setImageStyle = goog.abstractMethod; ol.render.canvas.Replay.prototype.setTextStyle = goog.abstractMethod; ol.render.canvas.ImageReplay = function(tolerance, maxExtent, resolution) { goog.base(this, tolerance, maxExtent, resolution); this.hitDetectionImage_ = null; this.image_ = null; this.anchorX_ = undefined; this.anchorY_ = undefined; this.height_ = undefined; this.opacity_ = undefined; this.rotateWithView_ = undefined; this.rotation_ = undefined; this.scale_ = undefined; this.snapToPixel_ = undefined; this.width_ = undefined }; goog.inherits(ol.render.canvas.ImageReplay, ol.render.canvas.Replay); ol.render.canvas.ImageReplay.prototype.drawCoordinates_ = function(flatCoordinates, offset, end, stride) { return this.appendFlatCoordinates(flatCoordinates, offset, end, stride, false) }; ol.render.canvas.ImageReplay.prototype.drawPointGeometry = function(pointGeometry, data) { if(goog.isNull(this.image_)) { return } goog.asserts.assert(goog.isDef(this.anchorX_)); goog.asserts.assert(goog.isDef(this.anchorY_)); goog.asserts.assert(goog.isDef(this.height_)); goog.asserts.assert(goog.isDef(this.opacity_)); goog.asserts.assert(goog.isDef(this.rotateWithView_)); goog.asserts.assert(goog.isDef(this.rotation_)); goog.asserts.assert(goog.isDef(this.scale_)); goog.asserts.assert(goog.isDef(this.width_)); ol.extent.extend(this.extent_, pointGeometry.getExtent()); this.beginGeometry(pointGeometry, data); var flatCoordinates = pointGeometry.getFlatCoordinates(); var stride = pointGeometry.getStride(); var myBegin = this.coordinates.length; var myEnd = this.drawCoordinates_(flatCoordinates, 0, flatCoordinates.length, stride); this.instructions.push([ol.render.canvas.Instruction.DRAW_IMAGE, myBegin, myEnd, this.image_, this.anchorX_, this.anchorY_, this.height_, this.opacity_, this.rotateWithView_, this.rotation_, this.scale_, this.snapToPixel_, this.width_]); this.hitDetectionInstructions.push([ol.render.canvas.Instruction.DRAW_IMAGE, myBegin, myEnd, this.hitDetectionImage_, this.anchorX_, this.anchorY_, this.height_, this.opacity_, this.rotateWithView_, this.rotation_, this.scale_, this.snapToPixel_, this.width_]); this.endGeometry(pointGeometry, data) }; ol.render.canvas.ImageReplay.prototype.drawMultiPointGeometry = function(multiPointGeometry, data) { if(goog.isNull(this.image_)) { return } goog.asserts.assert(goog.isDef(this.anchorX_)); goog.asserts.assert(goog.isDef(this.anchorY_)); goog.asserts.assert(goog.isDef(this.height_)); goog.asserts.assert(goog.isDef(this.opacity_)); goog.asserts.assert(goog.isDef(this.rotateWithView_)); goog.asserts.assert(goog.isDef(this.rotation_)); goog.asserts.assert(goog.isDef(this.scale_)); goog.asserts.assert(goog.isDef(this.width_)); ol.extent.extend(this.extent_, multiPointGeometry.getExtent()); this.beginGeometry(multiPointGeometry, data); var flatCoordinates = multiPointGeometry.getFlatCoordinates(); var stride = multiPointGeometry.getStride(); var myBegin = this.coordinates.length; var myEnd = this.drawCoordinates_(flatCoordinates, 0, flatCoordinates.length, stride); this.instructions.push([ol.render.canvas.Instruction.DRAW_IMAGE, myBegin, myEnd, this.image_, this.anchorX_, this.anchorY_, this.height_, this.opacity_, this.rotateWithView_, this.rotation_, this.scale_, this.snapToPixel_, this.width_]); this.hitDetectionInstructions.push([ol.render.canvas.Instruction.DRAW_IMAGE, myBegin, myEnd, this.hitDetectionImage_, this.anchorX_, this.anchorY_, this.height_, this.opacity_, this.rotateWithView_, this.rotation_, this.scale_, this.snapToPixel_, this.width_]); this.endGeometry(multiPointGeometry, data) }; ol.render.canvas.ImageReplay.prototype.finish = function() { this.reverseHitDetectionInstructions_(); this.anchorX_ = undefined; this.anchorY_ = undefined; this.hitDetectionImage_ = null; this.image_ = null; this.height_ = undefined; this.scale_ = undefined; this.opacity_ = undefined; this.rotateWithView_ = undefined; this.rotation_ = undefined; this.snapToPixel_ = undefined; this.width_ = undefined }; ol.render.canvas.ImageReplay.prototype.setImageStyle = function(imageStyle) { goog.asserts.assert(!goog.isNull(imageStyle)); var anchor = imageStyle.getAnchor(); goog.asserts.assert(!goog.isNull(anchor)); var size = imageStyle.getSize(); goog.asserts.assert(!goog.isNull(size)); var hitDetectionImage = imageStyle.getHitDetectionImage(1); goog.asserts.assert(!goog.isNull(hitDetectionImage)); var image = imageStyle.getImage(1); goog.asserts.assert(!goog.isNull(image)); this.anchorX_ = anchor[0]; this.anchorY_ = anchor[1]; this.hitDetectionImage_ = hitDetectionImage; this.image_ = image; this.height_ = size[1]; this.opacity_ = imageStyle.getOpacity(); this.rotateWithView_ = imageStyle.getRotateWithView(); this.rotation_ = imageStyle.getRotation(); this.scale_ = imageStyle.getScale(); this.snapToPixel_ = imageStyle.getSnapToPixel(); this.width_ = size[0] }; ol.render.canvas.LineStringReplay = function(tolerance, maxExtent, resolution) { goog.base(this, tolerance, maxExtent, resolution); this.state_ = {currentStrokeStyle:undefined, currentLineCap:undefined, currentLineDash:null, currentLineJoin:undefined, currentLineWidth:undefined, currentMiterLimit:undefined, lastStroke:0, strokeStyle:undefined, lineCap:undefined, lineDash:null, lineJoin:undefined, lineWidth:undefined, miterLimit:undefined} }; goog.inherits(ol.render.canvas.LineStringReplay, ol.render.canvas.Replay); ol.render.canvas.LineStringReplay.prototype.drawFlatCoordinates_ = function(flatCoordinates, offset, end, stride) { var myBegin = this.coordinates.length; var myEnd = this.appendFlatCoordinates(flatCoordinates, offset, end, stride, false); var moveToLineToInstruction = [ol.render.canvas.Instruction.MOVE_TO_LINE_TO, myBegin, myEnd]; this.instructions.push(moveToLineToInstruction); this.hitDetectionInstructions.push(moveToLineToInstruction); return end }; ol.render.canvas.LineStringReplay.prototype.getBufferedMaxExtent = function() { var extent = this.maxExtent; if(this.maxLineWidth) { extent = ol.extent.buffer(extent, this.resolution * (this.maxLineWidth + 1) / 2) } return extent }; ol.render.canvas.LineStringReplay.prototype.setStrokeStyle_ = function() { var state = this.state_; var strokeStyle = state.strokeStyle; var lineCap = state.lineCap; var lineDash = state.lineDash; var lineJoin = state.lineJoin; var lineWidth = state.lineWidth; var miterLimit = state.miterLimit; goog.asserts.assert(goog.isDef(strokeStyle)); goog.asserts.assert(goog.isDef(lineCap)); goog.asserts.assert(!goog.isNull(lineDash)); goog.asserts.assert(goog.isDef(lineJoin)); goog.asserts.assert(goog.isDef(lineWidth)); goog.asserts.assert(goog.isDef(miterLimit)); if(state.currentStrokeStyle != strokeStyle || state.currentLineCap != lineCap || !goog.array.equals(state.currentLineDash, lineDash) || state.currentLineJoin != lineJoin || state.currentLineWidth != lineWidth || state.currentMiterLimit != miterLimit) { if(state.lastStroke != this.coordinates.length) { this.instructions.push([ol.render.canvas.Instruction.STROKE]); state.lastStroke = this.coordinates.length } this.instructions.push([ol.render.canvas.Instruction.SET_STROKE_STYLE, strokeStyle, lineWidth, lineCap, lineJoin, miterLimit, lineDash], [ol.render.canvas.Instruction.BEGIN_PATH]); state.currentStrokeStyle = strokeStyle; state.currentLineCap = lineCap; state.currentLineDash = lineDash; state.currentLineJoin = lineJoin; state.currentLineWidth = lineWidth; state.currentMiterLimit = miterLimit } }; ol.render.canvas.LineStringReplay.prototype.drawLineStringGeometry = function(lineStringGeometry, data) { var state = this.state_; goog.asserts.assert(!goog.isNull(state)); var strokeStyle = state.strokeStyle; var lineWidth = state.lineWidth; if(!goog.isDef(strokeStyle) || !goog.isDef(lineWidth)) { return } ol.extent.extend(this.extent_, lineStringGeometry.getExtent()); this.setStrokeStyle_(); this.beginGeometry(lineStringGeometry, data); this.hitDetectionInstructions.push([ol.render.canvas.Instruction.SET_STROKE_STYLE, state.strokeStyle, state.lineWidth, state.lineCap, state.lineJoin, state.miterLimit, state.lineDash], [ol.render.canvas.Instruction.BEGIN_PATH]); var flatCoordinates = lineStringGeometry.getFlatCoordinates(); var stride = lineStringGeometry.getStride(); this.drawFlatCoordinates_(flatCoordinates, 0, flatCoordinates.length, stride); this.hitDetectionInstructions.push([ol.render.canvas.Instruction.STROKE]); this.endGeometry(lineStringGeometry, data) }; ol.render.canvas.LineStringReplay.prototype.drawMultiLineStringGeometry = function(multiLineStringGeometry, data) { var state = this.state_; goog.asserts.assert(!goog.isNull(state)); var strokeStyle = state.strokeStyle; var lineWidth = state.lineWidth; if(!goog.isDef(strokeStyle) || !goog.isDef(lineWidth)) { return } ol.extent.extend(this.extent_, multiLineStringGeometry.getExtent()); this.setStrokeStyle_(); this.beginGeometry(multiLineStringGeometry, data); this.hitDetectionInstructions.push([ol.render.canvas.Instruction.SET_STROKE_STYLE, state.strokeStyle, state.lineWidth, state.lineCap, state.lineJoin, state.miterLimit, state.lineDash], [ol.render.canvas.Instruction.BEGIN_PATH]); var ends = multiLineStringGeometry.getEnds(); var flatCoordinates = multiLineStringGeometry.getFlatCoordinates(); var stride = multiLineStringGeometry.getStride(); var offset = 0; var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { offset = this.drawFlatCoordinates_(flatCoordinates, offset, ends[i], stride) } this.hitDetectionInstructions.push([ol.render.canvas.Instruction.STROKE]); this.endGeometry(multiLineStringGeometry, data) }; ol.render.canvas.LineStringReplay.prototype.finish = function() { var state = this.state_; goog.asserts.assert(!goog.isNull(state)); if(state.lastStroke != this.coordinates.length) { this.instructions.push([ol.render.canvas.Instruction.STROKE]) } this.reverseHitDetectionInstructions_(); this.state_ = null }; ol.render.canvas.LineStringReplay.prototype.setFillStrokeStyle = function(fillStyle, strokeStyle) { goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(goog.isNull(fillStyle)); goog.asserts.assert(!goog.isNull(strokeStyle)); var strokeStyleColor = strokeStyle.getColor(); this.state_.strokeStyle = ol.color.asString(!goog.isNull(strokeStyleColor) ? strokeStyleColor : ol.render.canvas.defaultStrokeStyle); var strokeStyleLineCap = strokeStyle.getLineCap(); this.state_.lineCap = goog.isDef(strokeStyleLineCap) ? strokeStyleLineCap : ol.render.canvas.defaultLineCap; var strokeStyleLineDash = strokeStyle.getLineDash(); this.state_.lineDash = !goog.isNull(strokeStyleLineDash) ? strokeStyleLineDash : ol.render.canvas.defaultLineDash; var strokeStyleLineJoin = strokeStyle.getLineJoin(); this.state_.lineJoin = goog.isDef(strokeStyleLineJoin) ? strokeStyleLineJoin : ol.render.canvas.defaultLineJoin; var strokeStyleWidth = strokeStyle.getWidth(); this.state_.lineWidth = goog.isDef(strokeStyleWidth) ? strokeStyleWidth : ol.render.canvas.defaultLineWidth; var strokeStyleMiterLimit = strokeStyle.getMiterLimit(); this.state_.miterLimit = goog.isDef(strokeStyleMiterLimit) ? strokeStyleMiterLimit : ol.render.canvas.defaultMiterLimit; this.maxLineWidth = Math.max(this.maxLineWidth, this.state_.lineWidth) }; ol.render.canvas.PolygonReplay = function(tolerance, maxExtent, resolution) { goog.base(this, tolerance, maxExtent, resolution); this.state_ = {currentFillStyle:undefined, currentStrokeStyle:undefined, currentLineCap:undefined, currentLineDash:null, currentLineJoin:undefined, currentLineWidth:undefined, currentMiterLimit:undefined, fillStyle:undefined, strokeStyle:undefined, lineCap:undefined, lineDash:null, lineJoin:undefined, lineWidth:undefined, miterLimit:undefined} }; goog.inherits(ol.render.canvas.PolygonReplay, ol.render.canvas.Replay); ol.render.canvas.PolygonReplay.prototype.drawFlatCoordinatess_ = function(flatCoordinates, offset, ends, stride) { var state = this.state_; var beginPathInstruction = [ol.render.canvas.Instruction.BEGIN_PATH]; this.instructions.push(beginPathInstruction); this.hitDetectionInstructions.push(beginPathInstruction); var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; var myBegin = this.coordinates.length; var myEnd = this.appendFlatCoordinates(flatCoordinates, offset, end, stride, true); var moveToLineToInstruction = [ol.render.canvas.Instruction.MOVE_TO_LINE_TO, myBegin, myEnd]; var closePathInstruction = [ol.render.canvas.Instruction.CLOSE_PATH]; this.instructions.push(moveToLineToInstruction, closePathInstruction); this.hitDetectionInstructions.push(moveToLineToInstruction, closePathInstruction); offset = end } var fillInstruction = [ol.render.canvas.Instruction.FILL]; this.hitDetectionInstructions.push(fillInstruction); if(goog.isDef(state.fillStyle)) { this.instructions.push(fillInstruction) } if(goog.isDef(state.strokeStyle)) { goog.asserts.assert(goog.isDef(state.lineWidth)); var strokeInstruction = [ol.render.canvas.Instruction.STROKE]; this.instructions.push(strokeInstruction); this.hitDetectionInstructions.push(strokeInstruction) } return offset }; ol.render.canvas.PolygonReplay.prototype.drawCircleGeometry = function(circleGeometry, data) { var state = this.state_; goog.asserts.assert(!goog.isNull(state)); var fillStyle = state.fillStyle; var strokeStyle = state.strokeStyle; if(!goog.isDef(fillStyle) && !goog.isDef(strokeStyle)) { return } if(goog.isDef(strokeStyle)) { goog.asserts.assert(goog.isDef(state.lineWidth)) } ol.extent.extend(this.extent_, circleGeometry.getExtent()); this.setFillStrokeStyles_(); this.beginGeometry(circleGeometry, data); this.hitDetectionInstructions.push([ol.render.canvas.Instruction.SET_FILL_STYLE, ol.color.asString(ol.render.canvas.defaultFillStyle)]); if(goog.isDef(state.strokeStyle)) { this.hitDetectionInstructions.push([ol.render.canvas.Instruction.SET_STROKE_STYLE, state.strokeStyle, state.lineWidth, state.lineCap, state.lineJoin, state.miterLimit, state.lineDash]) } var flatCoordinates = circleGeometry.getFlatCoordinates(); var stride = circleGeometry.getStride(); this.appendFlatCoordinates(flatCoordinates, 0, flatCoordinates.length, stride, false); var beginPathInstruction = [ol.render.canvas.Instruction.BEGIN_PATH]; var circleInstruction = [ol.render.canvas.Instruction.CIRCLE]; this.instructions.push(beginPathInstruction, circleInstruction); this.hitDetectionInstructions.push(beginPathInstruction, circleInstruction); this.endGeometry(circleGeometry, data); var fillInstruction = [ol.render.canvas.Instruction.FILL]; this.hitDetectionInstructions.push(fillInstruction); if(goog.isDef(state.fillStyle)) { this.instructions.push(fillInstruction) } if(goog.isDef(state.strokeStyle)) { goog.asserts.assert(goog.isDef(state.lineWidth)); var strokeInstruction = [ol.render.canvas.Instruction.STROKE]; this.instructions.push(strokeInstruction); this.hitDetectionInstructions.push(strokeInstruction) } }; ol.render.canvas.PolygonReplay.prototype.drawPolygonGeometry = function(polygonGeometry, data) { var state = this.state_; goog.asserts.assert(!goog.isNull(state)); var fillStyle = state.fillStyle; var strokeStyle = state.strokeStyle; if(!goog.isDef(fillStyle) && !goog.isDef(strokeStyle)) { return } if(goog.isDef(strokeStyle)) { goog.asserts.assert(goog.isDef(state.lineWidth)) } ol.extent.extend(this.extent_, polygonGeometry.getExtent()); this.setFillStrokeStyles_(); this.beginGeometry(polygonGeometry, data); this.hitDetectionInstructions.push([ol.render.canvas.Instruction.SET_FILL_STYLE, ol.color.asString(ol.render.canvas.defaultFillStyle)]); if(goog.isDef(state.strokeStyle)) { this.hitDetectionInstructions.push([ol.render.canvas.Instruction.SET_STROKE_STYLE, state.strokeStyle, state.lineWidth, state.lineCap, state.lineJoin, state.miterLimit, state.lineDash]) } var ends = polygonGeometry.getEnds(); var flatCoordinates = polygonGeometry.getOrientedFlatCoordinates(); var stride = polygonGeometry.getStride(); this.drawFlatCoordinatess_(flatCoordinates, 0, ends, stride); this.endGeometry(polygonGeometry, data) }; ol.render.canvas.PolygonReplay.prototype.drawMultiPolygonGeometry = function(multiPolygonGeometry, data) { var state = this.state_; goog.asserts.assert(!goog.isNull(state)); var fillStyle = state.fillStyle; var strokeStyle = state.strokeStyle; if(!goog.isDef(fillStyle) && !goog.isDef(strokeStyle)) { return } if(goog.isDef(strokeStyle)) { goog.asserts.assert(goog.isDef(state.lineWidth)) } ol.extent.extend(this.extent_, multiPolygonGeometry.getExtent()); this.setFillStrokeStyles_(); this.beginGeometry(multiPolygonGeometry, data); this.hitDetectionInstructions.push([ol.render.canvas.Instruction.SET_FILL_STYLE, ol.color.asString(ol.render.canvas.defaultFillStyle)]); if(goog.isDef(state.strokeStyle)) { this.hitDetectionInstructions.push([ol.render.canvas.Instruction.SET_STROKE_STYLE, state.strokeStyle, state.lineWidth, state.lineCap, state.lineJoin, state.miterLimit, state.lineDash]) } var endss = multiPolygonGeometry.getEndss(); var flatCoordinates = multiPolygonGeometry.getOrientedFlatCoordinates(); var stride = multiPolygonGeometry.getStride(); var offset = 0; var i, ii; for(i = 0, ii = endss.length;i < ii;++i) { offset = this.drawFlatCoordinatess_(flatCoordinates, offset, endss[i], stride) } this.endGeometry(multiPolygonGeometry, data) }; ol.render.canvas.PolygonReplay.prototype.finish = function() { goog.asserts.assert(!goog.isNull(this.state_)); this.reverseHitDetectionInstructions_(); this.state_ = null; var tolerance = this.tolerance; if(tolerance !== 0) { var coordinates = this.coordinates; var i, ii; for(i = 0, ii = coordinates.length;i < ii;++i) { coordinates[i] = ol.geom.flat.simplify.snap(coordinates[i], tolerance) } } }; ol.render.canvas.PolygonReplay.prototype.getBufferedMaxExtent = function() { var extent = this.maxExtent; if(this.maxLineWidth) { extent = ol.extent.buffer(extent, this.resolution * (this.maxLineWidth + 1) / 2) } return extent }; ol.render.canvas.PolygonReplay.prototype.setFillStrokeStyle = function(fillStyle, strokeStyle) { goog.asserts.assert(!goog.isNull(this.state_)); goog.asserts.assert(!goog.isNull(fillStyle) || !goog.isNull(strokeStyle)); var state = this.state_; if(!goog.isNull(fillStyle)) { var fillStyleColor = fillStyle.getColor(); state.fillStyle = ol.color.asString(!goog.isNull(fillStyleColor) ? fillStyleColor : ol.render.canvas.defaultFillStyle) }else { state.fillStyle = undefined } if(!goog.isNull(strokeStyle)) { var strokeStyleColor = strokeStyle.getColor(); state.strokeStyle = ol.color.asString(!goog.isNull(strokeStyleColor) ? strokeStyleColor : ol.render.canvas.defaultStrokeStyle); var strokeStyleLineCap = strokeStyle.getLineCap(); state.lineCap = goog.isDef(strokeStyleLineCap) ? strokeStyleLineCap : ol.render.canvas.defaultLineCap; var strokeStyleLineDash = strokeStyle.getLineDash(); state.lineDash = !goog.isNull(strokeStyleLineDash) ? strokeStyleLineDash.slice() : ol.render.canvas.defaultLineDash; var strokeStyleLineJoin = strokeStyle.getLineJoin(); state.lineJoin = goog.isDef(strokeStyleLineJoin) ? strokeStyleLineJoin : ol.render.canvas.defaultLineJoin; var strokeStyleWidth = strokeStyle.getWidth(); state.lineWidth = goog.isDef(strokeStyleWidth) ? strokeStyleWidth : ol.render.canvas.defaultLineWidth; var strokeStyleMiterLimit = strokeStyle.getMiterLimit(); state.miterLimit = goog.isDef(strokeStyleMiterLimit) ? strokeStyleMiterLimit : ol.render.canvas.defaultMiterLimit; this.maxLineWidth = Math.max(this.maxLineWidth, state.lineWidth) }else { state.strokeStyle = undefined; state.lineCap = undefined; state.lineDash = null; state.lineJoin = undefined; state.lineWidth = undefined; state.miterLimit = undefined } }; ol.render.canvas.PolygonReplay.prototype.setFillStrokeStyles_ = function() { var state = this.state_; var fillStyle = state.fillStyle; var strokeStyle = state.strokeStyle; var lineCap = state.lineCap; var lineDash = state.lineDash; var lineJoin = state.lineJoin; var lineWidth = state.lineWidth; var miterLimit = state.miterLimit; if(goog.isDef(fillStyle) && state.currentFillStyle != fillStyle) { this.instructions.push([ol.render.canvas.Instruction.SET_FILL_STYLE, fillStyle]); state.currentFillStyle = state.fillStyle } if(goog.isDef(strokeStyle)) { goog.asserts.assert(goog.isDef(lineCap)); goog.asserts.assert(!goog.isNull(lineDash)); goog.asserts.assert(goog.isDef(lineJoin)); goog.asserts.assert(goog.isDef(lineWidth)); goog.asserts.assert(goog.isDef(miterLimit)); if(state.currentStrokeStyle != strokeStyle || state.currentLineCap != lineCap || state.currentLineDash != lineDash || state.currentLineJoin != lineJoin || state.currentLineWidth != lineWidth || state.currentMiterLimit != miterLimit) { this.instructions.push([ol.render.canvas.Instruction.SET_STROKE_STYLE, strokeStyle, lineWidth, lineCap, lineJoin, miterLimit, lineDash]); state.currentStrokeStyle = strokeStyle; state.currentLineCap = lineCap; state.currentLineDash = lineDash; state.currentLineJoin = lineJoin; state.currentLineWidth = lineWidth; state.currentMiterLimit = miterLimit } } }; ol.render.canvas.TextReplay = function(tolerance, maxExtent, resolution) { goog.base(this, tolerance, maxExtent, resolution); this.replayFillState_ = null; this.replayStrokeState_ = null; this.replayTextState_ = null; this.text_ = ""; this.textOffsetX_ = 0; this.textOffsetY_ = 0; this.textRotation_ = 0; this.textScale_ = 0; this.textFillState_ = null; this.textStrokeState_ = null; this.textState_ = null }; goog.inherits(ol.render.canvas.TextReplay, ol.render.canvas.Replay); ol.render.canvas.TextReplay.prototype.drawText = function(flatCoordinates, offset, end, stride, geometry, data) { if(this.text_ === "" || goog.isNull(this.textState_) || goog.isNull(this.textFillState_) && goog.isNull(this.textStrokeState_)) { return } ol.extent.extendFlatCoordinates(this.extent_, flatCoordinates, offset, end, stride); if(!goog.isNull(this.textFillState_)) { this.setReplayFillState_(this.textFillState_) } if(!goog.isNull(this.textStrokeState_)) { this.setReplayStrokeState_(this.textStrokeState_) } this.setReplayTextState_(this.textState_); this.beginGeometry(geometry, data); var myBegin = this.coordinates.length; var myEnd = this.appendFlatCoordinates(flatCoordinates, offset, end, stride, false); var fill = !goog.isNull(this.textFillState_); var stroke = !goog.isNull(this.textStrokeState_); var drawTextInstruction = [ol.render.canvas.Instruction.DRAW_TEXT, myBegin, myEnd, this.text_, this.textOffsetX_, this.textOffsetY_, this.textRotation_, this.textScale_, fill, stroke]; this.instructions.push(drawTextInstruction); this.hitDetectionInstructions.push(drawTextInstruction); this.endGeometry(geometry, data) }; ol.render.canvas.TextReplay.prototype.setReplayFillState_ = function(fillState) { var replayFillState = this.replayFillState_; if(!goog.isNull(replayFillState) && replayFillState.fillStyle == fillState.fillStyle) { return } var setFillStyleInstruction = [ol.render.canvas.Instruction.SET_FILL_STYLE, fillState.fillStyle]; this.instructions.push(setFillStyleInstruction); this.hitDetectionInstructions.push(setFillStyleInstruction); if(goog.isNull(replayFillState)) { this.replayFillState_ = {fillStyle:fillState.fillStyle} }else { replayFillState.fillStyle = fillState.fillStyle } }; ol.render.canvas.TextReplay.prototype.setReplayStrokeState_ = function(strokeState) { var replayStrokeState = this.replayStrokeState_; if(!goog.isNull(replayStrokeState) && replayStrokeState.lineCap == strokeState.lineCap && replayStrokeState.lineDash == strokeState.lineDash && replayStrokeState.lineJoin == strokeState.lineJoin && replayStrokeState.lineWidth == strokeState.lineWidth && replayStrokeState.miterLimit == strokeState.miterLimit && replayStrokeState.strokeStyle == strokeState.strokeStyle) { return } var setStrokeStyleInstruction = [ol.render.canvas.Instruction.SET_STROKE_STYLE, strokeState.strokeStyle, strokeState.lineWidth, strokeState.lineCap, strokeState.lineJoin, strokeState.miterLimit, strokeState.lineDash]; this.instructions.push(setStrokeStyleInstruction); this.hitDetectionInstructions.push(setStrokeStyleInstruction); if(goog.isNull(replayStrokeState)) { this.replayStrokeState_ = {lineCap:strokeState.lineCap, lineDash:strokeState.lineDash, lineJoin:strokeState.lineJoin, lineWidth:strokeState.lineWidth, miterLimit:strokeState.miterLimit, strokeStyle:strokeState.strokeStyle} }else { replayStrokeState.lineCap = strokeState.lineCap; replayStrokeState.lineDash = strokeState.lineDash; replayStrokeState.lineJoin = strokeState.lineJoin; replayStrokeState.lineWidth = strokeState.lineWidth; replayStrokeState.miterLimit = strokeState.miterLimit; replayStrokeState.strokeStyle = strokeState.strokeStyle } }; ol.render.canvas.TextReplay.prototype.setReplayTextState_ = function(textState) { var replayTextState = this.replayTextState_; if(!goog.isNull(replayTextState) && replayTextState.font == textState.font && replayTextState.textAlign == textState.textAlign && replayTextState.textBaseline == textState.textBaseline) { return } var setTextStyleInstruction = [ol.render.canvas.Instruction.SET_TEXT_STYLE, textState.font, textState.textAlign, textState.textBaseline]; this.instructions.push(setTextStyleInstruction); this.hitDetectionInstructions.push(setTextStyleInstruction); if(goog.isNull(replayTextState)) { this.replayTextState_ = {font:textState.font, textAlign:textState.textAlign, textBaseline:textState.textBaseline} }else { replayTextState.font = textState.font; replayTextState.textAlign = textState.textAlign; replayTextState.textBaseline = textState.textBaseline } }; ol.render.canvas.TextReplay.prototype.setTextStyle = function(textStyle) { if(goog.isNull(textStyle)) { this.text_ = "" }else { var textFillStyle = textStyle.getFill(); if(goog.isNull(textFillStyle)) { this.textFillState_ = null }else { var textFillStyleColor = textFillStyle.getColor(); var fillStyle = ol.color.asString(!goog.isNull(textFillStyleColor) ? textFillStyleColor : ol.render.canvas.defaultFillStyle); if(goog.isNull(this.textFillState_)) { this.textFillState_ = {fillStyle:fillStyle} }else { var textFillState = this.textFillState_; textFillState.fillStyle = fillStyle } } var textStrokeStyle = textStyle.getStroke(); if(goog.isNull(textStrokeStyle)) { this.textStrokeState_ = null }else { var textStrokeStyleColor = textStrokeStyle.getColor(); var textStrokeStyleLineCap = textStrokeStyle.getLineCap(); var textStrokeStyleLineDash = textStrokeStyle.getLineDash(); var textStrokeStyleLineJoin = textStrokeStyle.getLineJoin(); var textStrokeStyleWidth = textStrokeStyle.getWidth(); var textStrokeStyleMiterLimit = textStrokeStyle.getMiterLimit(); var lineCap = goog.isDef(textStrokeStyleLineCap) ? textStrokeStyleLineCap : ol.render.canvas.defaultLineCap; var lineDash = goog.isDefAndNotNull(textStrokeStyleLineDash) ? textStrokeStyleLineDash.slice() : ol.render.canvas.defaultLineDash; var lineJoin = goog.isDef(textStrokeStyleLineJoin) ? textStrokeStyleLineJoin : ol.render.canvas.defaultLineJoin; var lineWidth = goog.isDef(textStrokeStyleWidth) ? textStrokeStyleWidth : ol.render.canvas.defaultLineWidth; var miterLimit = goog.isDef(textStrokeStyleMiterLimit) ? textStrokeStyleMiterLimit : ol.render.canvas.defaultMiterLimit; var strokeStyle = ol.color.asString(!goog.isNull(textStrokeStyleColor) ? textStrokeStyleColor : ol.render.canvas.defaultStrokeStyle); if(goog.isNull(this.textStrokeState_)) { this.textStrokeState_ = {lineCap:lineCap, lineDash:lineDash, lineJoin:lineJoin, lineWidth:lineWidth, miterLimit:miterLimit, strokeStyle:strokeStyle} }else { var textStrokeState = this.textStrokeState_; textStrokeState.lineCap = lineCap; textStrokeState.lineDash = lineDash; textStrokeState.lineJoin = lineJoin; textStrokeState.lineWidth = lineWidth; textStrokeState.miterLimit = miterLimit; textStrokeState.strokeStyle = strokeStyle } } var textFont = textStyle.getFont(); var textOffsetX = textStyle.getOffsetX(); var textOffsetY = textStyle.getOffsetY(); var textRotation = textStyle.getRotation(); var textScale = textStyle.getScale(); var textText = textStyle.getText(); var textTextAlign = textStyle.getTextAlign(); var textTextBaseline = textStyle.getTextBaseline(); var font = goog.isDef(textFont) ? textFont : ol.render.canvas.defaultFont; var textAlign = goog.isDef(textTextAlign) ? textTextAlign : ol.render.canvas.defaultTextAlign; var textBaseline = goog.isDef(textTextBaseline) ? textTextBaseline : ol.render.canvas.defaultTextBaseline; if(goog.isNull(this.textState_)) { this.textState_ = {font:font, textAlign:textAlign, textBaseline:textBaseline} }else { var textState = this.textState_; textState.font = font; textState.textAlign = textAlign; textState.textBaseline = textBaseline } this.text_ = goog.isDef(textText) ? textText : ""; this.textOffsetX_ = goog.isDef(textOffsetX) ? textOffsetX : 0; this.textOffsetY_ = goog.isDef(textOffsetY) ? textOffsetY : 0; this.textRotation_ = goog.isDef(textRotation) ? textRotation : 0; this.textScale_ = goog.isDef(textScale) ? textScale : 1 } }; ol.render.canvas.ReplayGroup = function(tolerance, maxExtent, resolution) { this.tolerance_ = tolerance; this.maxExtent_ = maxExtent; this.resolution_ = resolution; this.replaysByZIndex_ = {}; this.hitDetectionContext_ = ol.dom.createCanvasContext2D(1, 1); this.hitDetectionTransform_ = goog.vec.Mat4.createNumber() }; ol.render.canvas.ReplayGroup.prototype.replay = function(context, extent, pixelRatio, transform, viewRotation, skippedFeaturesHash) { var zs = goog.array.map(goog.object.getKeys(this.replaysByZIndex_), Number); goog.array.sort(zs); return this.replay_(zs, context, extent, pixelRatio, transform, viewRotation, skippedFeaturesHash) }; ol.render.canvas.ReplayGroup.prototype.replayHitDetection_ = function(zs, context, extent, transform, viewRotation, skippedFeaturesHash, geometryCallback) { var i, ii, replays, replayType, replay, result; for(i = 0, ii = zs.length;i < ii;++i) { replays = this.replaysByZIndex_[zs[i].toString()]; for(replayType in replays) { replay = replays[replayType]; if(ol.extent.intersects(extent, replay.getExtent())) { result = replay.replayHitDetection(context, transform, viewRotation, skippedFeaturesHash, geometryCallback); if(result) { return result } } } } return undefined }; ol.render.canvas.ReplayGroup.prototype.replay_ = function(zs, context, extent, pixelRatio, transform, viewRotation, skippedFeaturesHash) { var maxExtent = this.maxExtent_; var minX = maxExtent[0]; var minY = maxExtent[1]; var maxX = maxExtent[2]; var maxY = maxExtent[3]; var flatClipCoords = ol.geom.flat.transform.transform2D([minX, minY, minX, maxY, maxX, maxY, maxX, minY], 2, transform); context.save(); context.beginPath(); context.moveTo(flatClipCoords[0], flatClipCoords[1]); context.lineTo(flatClipCoords[2], flatClipCoords[3]); context.lineTo(flatClipCoords[4], flatClipCoords[5]); context.lineTo(flatClipCoords[6], flatClipCoords[7]); context.closePath(); context.clip(); var i, ii, j, jj, replays, replayType, replay, result; for(i = 0, ii = zs.length;i < ii;++i) { replays = this.replaysByZIndex_[zs[i].toString()]; for(j = 0, jj = ol.render.REPLAY_ORDER.length;j < jj;++j) { replay = replays[ol.render.REPLAY_ORDER[j]]; if(goog.isDef(replay) && ol.extent.intersects(extent, replay.getExtent())) { result = replay.replay(context, pixelRatio, transform, viewRotation, skippedFeaturesHash); if(result) { return result } } } } context.restore(); return undefined }; ol.render.canvas.ReplayGroup.prototype.forEachGeometryAtPixel = function(extent, resolution, rotation, coordinate, skippedFeaturesHash, callback) { var transform = this.hitDetectionTransform_; ol.vec.Mat4.makeTransform2D(transform, 0.5, 0.5, 1 / resolution, -1 / resolution, -rotation, -coordinate[0], -coordinate[1]); var zs = goog.array.map(goog.object.getKeys(this.replaysByZIndex_), Number); goog.array.sort(zs, function(a, b) { return b - a }); var context = this.hitDetectionContext_; context.clearRect(0, 0, 1, 1); return this.replayHitDetection_(zs, context, extent, transform, rotation, skippedFeaturesHash, function(geometry, data) { var imageData = context.getImageData(0, 0, 1, 1).data; if(imageData[3] > 0) { var result = callback(geometry, data); if(result) { return result } context.clearRect(0, 0, 1, 1) } }) }; ol.render.canvas.ReplayGroup.prototype.finish = function() { var zKey; for(zKey in this.replaysByZIndex_) { var replays = this.replaysByZIndex_[zKey]; var replayKey; for(replayKey in replays) { replays[replayKey].finish() } } }; ol.render.canvas.ReplayGroup.prototype.getReplay = function(zIndex, replayType) { var zIndexKey = goog.isDef(zIndex) ? zIndex.toString() : "0"; var replays = this.replaysByZIndex_[zIndexKey]; if(!goog.isDef(replays)) { replays = {}; this.replaysByZIndex_[zIndexKey] = replays } var replay = replays[replayType]; if(!goog.isDef(replay)) { var Constructor = ol.render.canvas.BATCH_CONSTRUCTORS_[replayType]; goog.asserts.assert(goog.isDef(Constructor)); replay = new Constructor(this.tolerance_, this.maxExtent_, this.resolution_); replays[replayType] = replay } return replay }; ol.render.canvas.ReplayGroup.prototype.isEmpty = function() { return goog.object.isEmpty(this.replaysByZIndex_) }; ol.render.canvas.BATCH_CONSTRUCTORS_ = {"Image":ol.render.canvas.ImageReplay, "LineString":ol.render.canvas.LineStringReplay, "Polygon":ol.render.canvas.PolygonReplay, "Text":ol.render.canvas.TextReplay}; goog.provide("ol.geom.Circle"); goog.require("goog.asserts"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.SimpleGeometry"); goog.require("ol.geom.flat.deflate"); ol.geom.Circle = function(center, opt_radius, opt_layout) { goog.base(this); var radius = goog.isDef(opt_radius) ? opt_radius : 0; this.setCenterAndRadius(center, radius, (opt_layout)) }; goog.inherits(ol.geom.Circle, ol.geom.SimpleGeometry); ol.geom.Circle.prototype.clone = function() { var circle = new ol.geom.Circle(null); circle.setFlatCoordinates(this.layout, this.flatCoordinates.slice()); return circle }; ol.geom.Circle.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { var flatCoordinates = this.flatCoordinates; var dx = x - flatCoordinates[0]; var dy = y - flatCoordinates[1]; var squaredDistance = dx * dx + dy * dy; if(squaredDistance < minSquaredDistance) { var i; if(squaredDistance === 0) { for(i = 0;i < this.stride;++i) { closestPoint[i] = flatCoordinates[i] } }else { var delta = this.getRadius() / Math.sqrt(squaredDistance); closestPoint[0] = flatCoordinates[0] + delta * dx; closestPoint[1] = flatCoordinates[1] + delta * dy; for(i = 2;i < this.stride;++i) { closestPoint[i] = flatCoordinates[i] } } closestPoint.length = this.stride; return squaredDistance }else { return minSquaredDistance } }; ol.geom.Circle.prototype.containsXY = function(x, y) { var flatCoordinates = this.flatCoordinates; var dx = x - flatCoordinates[0]; var dy = y - flatCoordinates[1]; return dx * dx + dy * dy <= this.getRadiusSquared_() }; ol.geom.Circle.prototype.getCenter = function() { return this.flatCoordinates.slice(0, this.stride) }; ol.geom.Circle.prototype.getExtent = function(opt_extent) { if(this.extentRevision != this.getRevision()) { var flatCoordinates = this.flatCoordinates; var radius = flatCoordinates[this.stride] - flatCoordinates[0]; this.extent = ol.extent.createOrUpdate(flatCoordinates[0] - radius, flatCoordinates[1] - radius, flatCoordinates[0] + radius, flatCoordinates[1] + radius, this.extent); this.extentRevision = this.getRevision() } goog.asserts.assert(goog.isDef(this.extent)); return ol.extent.returnOrUpdate(this.extent, opt_extent) }; ol.geom.Circle.prototype.getRadius = function() { return Math.sqrt(this.getRadiusSquared_()) }; ol.geom.Circle.prototype.getRadiusSquared_ = function() { var dx = this.flatCoordinates[this.stride] - this.flatCoordinates[0]; var dy = this.flatCoordinates[this.stride + 1] - this.flatCoordinates[1]; return dx * dx + dy * dy }; ol.geom.Circle.prototype.getSimplifiedGeometry = function(squaredTolerance) { return this }; ol.geom.Circle.prototype.getType = function() { return ol.geom.GeometryType.CIRCLE }; ol.geom.Circle.prototype.setCenter = function(center) { var stride = this.stride; goog.asserts.assert(center.length == stride); var radius = this.flatCoordinates[stride] - this.flatCoordinates[0]; var flatCoordinates = center.slice(); flatCoordinates[stride] = flatCoordinates[0] + radius; var i; for(i = 1;i < stride;++i) { flatCoordinates[stride + i] = center[i] } this.setFlatCoordinates(this.layout, flatCoordinates) }; ol.geom.Circle.prototype.setCenterAndRadius = function(center, radius, opt_layout) { if(goog.isNull(center)) { this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null) }else { this.setLayout(opt_layout, center, 0); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = [] } var flatCoordinates = this.flatCoordinates; var offset = ol.geom.flat.deflate.coordinate(flatCoordinates, 0, center, this.stride); flatCoordinates[offset++] = flatCoordinates[0] + radius; var i, ii; for(i = 1, ii = this.stride;i < ii;++i) { flatCoordinates[offset++] = flatCoordinates[i] } flatCoordinates.length = offset; this.dispatchChangeEvent() } }; ol.geom.Circle.prototype.setFlatCoordinates = function(layout, flatCoordinates) { this.setFlatCoordinatesInternal(layout, flatCoordinates); this.dispatchChangeEvent() }; ol.geom.Circle.prototype.setRadius = function(radius) { goog.asserts.assert(!goog.isNull(this.flatCoordinates)); this.flatCoordinates[this.stride] = this.flatCoordinates[0] + radius; this.dispatchChangeEvent() }; ol.geom.Circle.prototype.transform = goog.abstractMethod; goog.provide("ol.geom.GeometryCollection"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.extent"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryType"); ol.geom.GeometryCollection = function(opt_geometries) { goog.base(this); this.geometries_ = goog.isDef(opt_geometries) ? opt_geometries : null; this.listenGeometriesChange_() }; goog.inherits(ol.geom.GeometryCollection, ol.geom.Geometry); ol.geom.GeometryCollection.cloneGeometries_ = function(geometries) { var clonedGeometries = []; var i, ii; for(i = 0, ii = geometries.length;i < ii;++i) { clonedGeometries.push(geometries[i].clone()) } return clonedGeometries }; ol.geom.GeometryCollection.prototype.unlistenGeometriesChange_ = function() { var i, ii; if(goog.isNull(this.geometries_)) { return } for(i = 0, ii = this.geometries_.length;i < ii;++i) { goog.events.unlisten(this.geometries_[i], goog.events.EventType.CHANGE, this.dispatchChangeEvent, false, this) } }; ol.geom.GeometryCollection.prototype.listenGeometriesChange_ = function() { var i, ii; if(goog.isNull(this.geometries_)) { return } for(i = 0, ii = this.geometries_.length;i < ii;++i) { goog.events.listen(this.geometries_[i], goog.events.EventType.CHANGE, this.dispatchChangeEvent, false, this) } }; ol.geom.GeometryCollection.prototype.clone = function() { var geometryCollection = new ol.geom.GeometryCollection(null); geometryCollection.setGeometries(this.geometries_); return geometryCollection }; ol.geom.GeometryCollection.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { if(minSquaredDistance < ol.extent.closestSquaredDistanceXY(this.getExtent(), x, y)) { return minSquaredDistance } var geometries = this.geometries_; var i, ii; for(i = 0, ii = geometries.length;i < ii;++i) { minSquaredDistance = geometries[i].closestPointXY(x, y, closestPoint, minSquaredDistance) } return minSquaredDistance }; ol.geom.GeometryCollection.prototype.containsXY = function(x, y) { var geometries = this.geometries_; var i, ii; for(i = 0, ii = geometries.length;i < ii;++i) { if(geometries[i].containsXY(x, y)) { return true } } return false }; ol.geom.GeometryCollection.prototype.getExtent = function(opt_extent) { if(this.extentRevision != this.getRevision()) { var extent = ol.extent.createOrUpdateEmpty(this.extent); var geometries = this.geometries_; var i, ii; for(i = 0, ii = geometries.length;i < ii;++i) { ol.extent.extend(extent, geometries[i].getExtent()) } this.extent = extent; this.extentRevision = this.getRevision() } goog.asserts.assert(goog.isDef(this.extent)); return ol.extent.returnOrUpdate(this.extent, opt_extent) }; ol.geom.GeometryCollection.prototype.getGeometries = function() { return ol.geom.GeometryCollection.cloneGeometries_(this.geometries_) }; ol.geom.GeometryCollection.prototype.getGeometriesArray = function() { return this.geometries_ }; ol.geom.GeometryCollection.prototype.getSimplifiedGeometry = function(squaredTolerance) { if(this.simplifiedGeometryRevision != this.getRevision()) { goog.object.clear(this.simplifiedGeometryCache); this.simplifiedGeometryMaxMinSquaredTolerance = 0; this.simplifiedGeometryRevision = this.getRevision() } if(squaredTolerance < 0 || this.simplifiedGeometryMaxMinSquaredTolerance !== 0 && squaredTolerance < this.simplifiedGeometryMaxMinSquaredTolerance) { return this } var key = squaredTolerance.toString(); if(this.simplifiedGeometryCache.hasOwnProperty(key)) { return this.simplifiedGeometryCache[key] }else { var simplifiedGeometries = []; var geometries = this.geometries_; var simplified = false; var i, ii; for(i = 0, ii = geometries.length;i < ii;++i) { var geometry = geometries[i]; var simplifiedGeometry = geometry.getSimplifiedGeometry(squaredTolerance); simplifiedGeometries.push(simplifiedGeometry); if(simplifiedGeometry !== geometry) { simplified = true } } if(simplified) { var simplifiedGeometryCollection = new ol.geom.GeometryCollection(null); simplifiedGeometryCollection.setGeometriesArray(simplifiedGeometries); this.simplifiedGeometryCache[key] = simplifiedGeometryCollection; return simplifiedGeometryCollection }else { this.simplifiedGeometryMaxMinSquaredTolerance = squaredTolerance; return this } } }; ol.geom.GeometryCollection.prototype.getType = function() { return ol.geom.GeometryType.GEOMETRY_COLLECTION }; ol.geom.GeometryCollection.prototype.isEmpty = function() { return goog.array.isEmpty(this.geometries_) }; ol.geom.GeometryCollection.prototype.setGeometries = function(geometries) { this.setGeometriesArray(ol.geom.GeometryCollection.cloneGeometries_(geometries)) }; ol.geom.GeometryCollection.prototype.setGeometriesArray = function(geometries) { this.unlistenGeometriesChange_(); this.geometries_ = geometries; this.listenGeometriesChange_(); this.dispatchChangeEvent() }; ol.geom.GeometryCollection.prototype.transform = function(transformFn) { var geometries = this.geometries_; var i, ii; for(i = 0, ii = geometries.length;i < ii;++i) { geometries[i].transform(transformFn) } this.dispatchChangeEvent() }; ol.geom.GeometryCollection.prototype.disposeInternal = function() { this.unlistenGeometriesChange_(); goog.base(this, "disposeInternal") }; goog.provide("ol.geom.flat.interpolate"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.math"); ol.geom.flat.interpolate.lineString = function(flatCoordinates, offset, end, stride, fraction, opt_dest) { goog.asserts.assert(0 <= fraction && fraction <= 1); var pointX = NaN; var pointY = NaN; var n = (end - offset) / stride; if(n === 0) { goog.asserts.fail() }else { if(n == 1) { pointX = flatCoordinates[offset]; pointY = flatCoordinates[offset + 1] }else { if(n == 2) { pointX = (1 - fraction) * flatCoordinates[offset] + fraction * flatCoordinates[offset + stride]; pointY = (1 - fraction) * flatCoordinates[offset + 1] + fraction * flatCoordinates[offset + stride + 1] }else { var x1 = flatCoordinates[offset]; var y1 = flatCoordinates[offset + 1]; var length = 0; var cumulativeLengths = [0]; var i; for(i = offset + stride;i < end;i += stride) { var x2 = flatCoordinates[i]; var y2 = flatCoordinates[i + 1]; length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); cumulativeLengths.push(length); x1 = x2; y1 = y2 } var target = fraction * length; var index = goog.array.binarySearch(cumulativeLengths, target); if(index < 0) { var t = (target - cumulativeLengths[-index - 2]) / (cumulativeLengths[-index - 1] - cumulativeLengths[-index - 2]); var o = offset + (-index - 2) * stride; pointX = goog.math.lerp(flatCoordinates[o], flatCoordinates[o + stride], t); pointY = goog.math.lerp(flatCoordinates[o + 1], flatCoordinates[o + stride + 1], t) }else { pointX = flatCoordinates[offset + index * stride]; pointY = flatCoordinates[offset + index * stride + 1] } } } } if(goog.isDefAndNotNull(opt_dest)) { opt_dest.push(pointX, pointY); return opt_dest }else { return[pointX, pointY] } }; ol.geom.flat.lineStringCoordinateAtM = function(flatCoordinates, offset, end, stride, m, extrapolate) { if(end == offset) { return null } var coordinate; if(m < flatCoordinates[offset + stride - 1]) { if(extrapolate) { coordinate = flatCoordinates.slice(offset, offset + stride); coordinate[stride - 1] = m; return coordinate }else { return null } }else { if(flatCoordinates[end - 1] < m) { if(extrapolate) { coordinate = flatCoordinates.slice(end - stride, end); coordinate[stride - 1] = m; return coordinate }else { return null } } } if(m == flatCoordinates[offset + stride - 1]) { return flatCoordinates.slice(offset, offset + stride) } var lo = offset / stride; var hi = end / stride; while(lo < hi) { var mid = lo + hi >> 1; if(m < flatCoordinates[(mid + 1) * stride - 1]) { hi = mid }else { lo = mid + 1 } } var m0 = flatCoordinates[lo * stride - 1]; if(m == m0) { return flatCoordinates.slice((lo - 1) * stride, (lo - 1) * stride + stride) } var m1 = flatCoordinates[(lo + 1) * stride - 1]; goog.asserts.assert(m0 < m); goog.asserts.assert(m <= m1); var t = (m - m0) / (m1 - m0); coordinate = []; var i; for(i = 0;i < stride - 1;++i) { coordinate.push(goog.math.lerp(flatCoordinates[(lo - 1) * stride + i], flatCoordinates[lo * stride + i], t)) } coordinate.push(m); goog.asserts.assert(coordinate.length == stride); return coordinate }; ol.geom.flat.lineStringsCoordinateAtM = function(flatCoordinates, offset, ends, stride, m, extrapolate, interpolate) { if(interpolate) { return ol.geom.flat.lineStringCoordinateAtM(flatCoordinates, offset, ends[ends.length - 1], stride, m, extrapolate) } var coordinate; if(m < flatCoordinates[stride - 1]) { if(extrapolate) { coordinate = flatCoordinates.slice(0, stride); coordinate[stride - 1] = m; return coordinate }else { return null } } if(flatCoordinates[flatCoordinates.length - 1] < m) { if(extrapolate) { coordinate = flatCoordinates.slice(flatCoordinates.length - stride); coordinate[stride - 1] = m; return coordinate }else { return null } } var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; if(offset == end) { continue } if(m < flatCoordinates[offset + stride - 1]) { return null }else { if(m <= flatCoordinates[end - 1]) { return ol.geom.flat.lineStringCoordinateAtM(flatCoordinates, offset, end, stride, m, false) } } offset = end } goog.asserts.fail(); return null }; goog.provide("ol.geom.flat.length"); ol.geom.flat.length.lineString = function(flatCoordinates, offset, end, stride) { var x1 = flatCoordinates[offset]; var y1 = flatCoordinates[offset + 1]; var length = 0; var i; for(i = offset + stride;i < end;i += stride) { var x2 = flatCoordinates[i]; var y2 = flatCoordinates[i + 1]; length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); x1 = x2; y1 = y2 } return length }; ol.geom.flat.length.linearRing = function(flatCoordinates, offset, end, stride) { var perimeter = ol.geom.flat.length.lineString(flatCoordinates, offset, end, stride); var dx = flatCoordinates[end - stride] - flatCoordinates[offset]; var dy = flatCoordinates[end - stride + 1] - flatCoordinates[offset + 1]; perimeter += Math.sqrt(dx * dx + dy * dy); return perimeter }; goog.provide("ol.geom.LineString"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.array"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.SimpleGeometry"); goog.require("ol.geom.flat.closest"); goog.require("ol.geom.flat.deflate"); goog.require("ol.geom.flat.inflate"); goog.require("ol.geom.flat.interpolate"); goog.require("ol.geom.flat.length"); goog.require("ol.geom.flat.simplify"); ol.geom.LineString = function(coordinates, opt_layout) { goog.base(this); this.flatMidpoint_ = null; this.flatMidpointRevision_ = -1; this.maxDelta_ = -1; this.maxDeltaRevision_ = -1; this.setCoordinates(coordinates, (opt_layout)) }; goog.inherits(ol.geom.LineString, ol.geom.SimpleGeometry); ol.geom.LineString.prototype.appendCoordinate = function(coordinate) { goog.asserts.assert(coordinate.length == this.stride); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = coordinate.slice() }else { ol.array.safeExtend(this.flatCoordinates, coordinate) } this.dispatchChangeEvent() }; ol.geom.LineString.prototype.clone = function() { var lineString = new ol.geom.LineString(null); lineString.setFlatCoordinates(this.layout, this.flatCoordinates.slice()); return lineString }; ol.geom.LineString.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { if(minSquaredDistance < ol.extent.closestSquaredDistanceXY(this.getExtent(), x, y)) { return minSquaredDistance } if(this.maxDeltaRevision_ != this.getRevision()) { this.maxDelta_ = Math.sqrt(ol.geom.flat.closest.getMaxSquaredDelta(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0)); this.maxDeltaRevision_ = this.getRevision() } return ol.geom.flat.closest.getClosestPoint(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance) }; ol.geom.LineString.prototype.getCoordinateAtM = function(m, opt_extrapolate) { if(this.layout != ol.geom.GeometryLayout.XYM && this.layout != ol.geom.GeometryLayout.XYZM) { return null } var extrapolate = goog.isDef(opt_extrapolate) ? opt_extrapolate : false; return ol.geom.flat.lineStringCoordinateAtM(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, m, extrapolate) }; ol.geom.LineString.prototype.getCoordinates = function() { return ol.geom.flat.inflate.coordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }; ol.geom.LineString.prototype.getLength = function() { return ol.geom.flat.length.lineString(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }; ol.geom.LineString.prototype.getFlatMidpoint = function() { if(this.flatMidpointRevision_ != this.getRevision()) { this.flatMidpoint_ = ol.geom.flat.interpolate.lineString(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, 0.5, this.flatMidpoint_); this.flatMidpointRevision_ = this.getRevision() } return this.flatMidpoint_ }; ol.geom.LineString.prototype.getSimplifiedGeometryInternal = function(squaredTolerance) { var simplifiedFlatCoordinates = []; simplifiedFlatCoordinates.length = ol.geom.flat.simplify.douglasPeucker(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0); var simplifiedLineString = new ol.geom.LineString(null); simplifiedLineString.setFlatCoordinates(ol.geom.GeometryLayout.XY, simplifiedFlatCoordinates); return simplifiedLineString }; ol.geom.LineString.prototype.getType = function() { return ol.geom.GeometryType.LINE_STRING }; ol.geom.LineString.prototype.setCoordinates = function(coordinates, opt_layout) { if(goog.isNull(coordinates)) { this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null) }else { this.setLayout(opt_layout, coordinates, 1); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = [] } this.flatCoordinates.length = ol.geom.flat.deflate.coordinates(this.flatCoordinates, 0, coordinates, this.stride); this.dispatchChangeEvent() } }; ol.geom.LineString.prototype.setFlatCoordinates = function(layout, flatCoordinates) { this.setFlatCoordinatesInternal(layout, flatCoordinates); this.dispatchChangeEvent() }; goog.provide("ol.geom.MultiLineString"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.array"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.SimpleGeometry"); goog.require("ol.geom.flat.closest"); goog.require("ol.geom.flat.deflate"); goog.require("ol.geom.flat.inflate"); goog.require("ol.geom.flat.interpolate"); goog.require("ol.geom.flat.simplify"); ol.geom.MultiLineString = function(coordinates, opt_layout) { goog.base(this); this.ends_ = []; this.maxDelta_ = -1; this.maxDeltaRevision_ = -1; this.setCoordinates(coordinates, (opt_layout)) }; goog.inherits(ol.geom.MultiLineString, ol.geom.SimpleGeometry); ol.geom.MultiLineString.prototype.appendLineString = function(lineString) { goog.asserts.assert(lineString.getLayout() == this.layout); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = lineString.getFlatCoordinates().slice() }else { ol.array.safeExtend(this.flatCoordinates, lineString.getFlatCoordinates().slice()) } this.ends_.push(this.flatCoordinates.length); this.dispatchChangeEvent() }; ol.geom.MultiLineString.prototype.clone = function() { var multiLineString = new ol.geom.MultiLineString(null); multiLineString.setFlatCoordinates(this.layout, this.flatCoordinates.slice(), this.ends_.slice()); return multiLineString }; ol.geom.MultiLineString.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { if(minSquaredDistance < ol.extent.closestSquaredDistanceXY(this.getExtent(), x, y)) { return minSquaredDistance } if(this.maxDeltaRevision_ != this.getRevision()) { this.maxDelta_ = Math.sqrt(ol.geom.flat.closest.getsMaxSquaredDelta(this.flatCoordinates, 0, this.ends_, this.stride, 0)); this.maxDeltaRevision_ = this.getRevision() } return ol.geom.flat.closest.getsClosestPoint(this.flatCoordinates, 0, this.ends_, this.stride, this.maxDelta_, false, x, y, closestPoint, minSquaredDistance) }; ol.geom.MultiLineString.prototype.getCoordinateAtM = function(m, opt_extrapolate, opt_interpolate) { if(this.layout != ol.geom.GeometryLayout.XYM && this.layout != ol.geom.GeometryLayout.XYZM || this.flatCoordinates.length === 0) { return null } var extrapolate = goog.isDef(opt_extrapolate) ? opt_extrapolate : false; var interpolate = goog.isDef(opt_interpolate) ? opt_interpolate : false; return ol.geom.flat.lineStringsCoordinateAtM(this.flatCoordinates, 0, this.ends_, this.stride, m, extrapolate, interpolate) }; ol.geom.MultiLineString.prototype.getCoordinates = function() { return ol.geom.flat.inflate.coordinatess(this.flatCoordinates, 0, this.ends_, this.stride) }; ol.geom.MultiLineString.prototype.getEnds = function() { return this.ends_ }; ol.geom.MultiLineString.prototype.getLineString = function(index) { goog.asserts.assert(0 <= index && index < this.ends_.length); if(index < 0 || this.ends_.length <= index) { return null } var lineString = new ol.geom.LineString(null); lineString.setFlatCoordinates(this.layout, this.flatCoordinates.slice(index === 0 ? 0 : this.ends_[index - 1], this.ends_[index])); return lineString }; ol.geom.MultiLineString.prototype.getLineStrings = function() { var flatCoordinates = this.flatCoordinates; var ends = this.ends_; var layout = this.layout; var lineStrings = []; var offset = 0; var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; var lineString = new ol.geom.LineString(null); lineString.setFlatCoordinates(layout, flatCoordinates.slice(offset, end)); lineStrings.push(lineString); offset = end } return lineStrings }; ol.geom.MultiLineString.prototype.getFlatMidpoints = function() { var midpoints = []; var flatCoordinates = this.flatCoordinates; var offset = 0; var ends = this.ends_; var stride = this.stride; var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { var end = ends[i]; var midpoint = ol.geom.flat.interpolate.lineString(flatCoordinates, offset, end, stride, 0.5); ol.array.safeExtend(midpoints, midpoint); offset = end } return midpoints }; ol.geom.MultiLineString.prototype.getSimplifiedGeometryInternal = function(squaredTolerance) { var simplifiedFlatCoordinates = []; var simplifiedEnds = []; simplifiedFlatCoordinates.length = ol.geom.flat.simplify.douglasPeuckers(this.flatCoordinates, 0, this.ends_, this.stride, squaredTolerance, simplifiedFlatCoordinates, 0, simplifiedEnds); var simplifiedMultiLineString = new ol.geom.MultiLineString(null); simplifiedMultiLineString.setFlatCoordinates(ol.geom.GeometryLayout.XY, simplifiedFlatCoordinates, simplifiedEnds); return simplifiedMultiLineString }; ol.geom.MultiLineString.prototype.getType = function() { return ol.geom.GeometryType.MULTI_LINE_STRING }; ol.geom.MultiLineString.prototype.setCoordinates = function(coordinates, opt_layout) { if(goog.isNull(coordinates)) { this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null, this.ends_) }else { this.setLayout(opt_layout, coordinates, 2); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = [] } var ends = ol.geom.flat.deflate.coordinatess(this.flatCoordinates, 0, coordinates, this.stride, this.ends_); this.flatCoordinates.length = ends.length === 0 ? 0 : ends[ends.length - 1]; this.dispatchChangeEvent() } }; ol.geom.MultiLineString.prototype.setFlatCoordinates = function(layout, flatCoordinates, ends) { if(goog.isNull(flatCoordinates)) { goog.asserts.assert(!goog.isNull(ends) && ends.length === 0) }else { if(ends.length === 0) { goog.asserts.assert(flatCoordinates.length === 0) }else { goog.asserts.assert(flatCoordinates.length == ends[ends.length - 1]) } } this.setFlatCoordinatesInternal(layout, flatCoordinates); this.ends_ = ends; this.dispatchChangeEvent() }; ol.geom.MultiLineString.prototype.setLineStrings = function(lineStrings) { var layout = ol.geom.GeometryLayout.XY; var flatCoordinates = []; var ends = []; var i, ii; for(i = 0, ii = lineStrings.length;i < ii;++i) { var lineString = lineStrings[i]; if(i === 0) { layout = lineString.getLayout() }else { goog.asserts.assert(lineString.getLayout() == layout) } ol.array.safeExtend(flatCoordinates, lineString.getFlatCoordinates()); ends.push(flatCoordinates.length) } this.setFlatCoordinates(layout, flatCoordinates, ends) }; goog.provide("ol.geom.MultiPoint"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.array"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.Point"); goog.require("ol.geom.SimpleGeometry"); goog.require("ol.geom.flat.deflate"); goog.require("ol.geom.flat.inflate"); goog.require("ol.math"); ol.geom.MultiPoint = function(coordinates, opt_layout) { goog.base(this); this.setCoordinates(coordinates, (opt_layout)) }; goog.inherits(ol.geom.MultiPoint, ol.geom.SimpleGeometry); ol.geom.MultiPoint.prototype.appendPoint = function(point) { goog.asserts.assert(point.getLayout() == this.layout); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = point.getFlatCoordinates().slice() }else { ol.array.safeExtend(this.flatCoordinates, point.getFlatCoordinates()) } this.dispatchChangeEvent() }; ol.geom.MultiPoint.prototype.clone = function() { var multiPoint = new ol.geom.MultiPoint(null); multiPoint.setFlatCoordinates(this.layout, this.flatCoordinates.slice()); return multiPoint }; ol.geom.MultiPoint.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { if(minSquaredDistance < ol.extent.closestSquaredDistanceXY(this.getExtent(), x, y)) { return minSquaredDistance } var flatCoordinates = this.flatCoordinates; var stride = this.stride; var i, ii, j; for(i = 0, ii = flatCoordinates.length;i < ii;i += stride) { var squaredDistance = ol.math.squaredDistance(x, y, flatCoordinates[i], flatCoordinates[i + 1]); if(squaredDistance < minSquaredDistance) { minSquaredDistance = squaredDistance; for(j = 0;j < stride;++j) { closestPoint[j] = flatCoordinates[i + j] } closestPoint.length = stride } } return minSquaredDistance }; ol.geom.MultiPoint.prototype.getCoordinates = function() { return ol.geom.flat.inflate.coordinates(this.flatCoordinates, 0, this.flatCoordinates.length, this.stride) }; ol.geom.MultiPoint.prototype.getPoint = function(index) { var n = goog.isNull(this.flatCoordinates) ? 0 : this.flatCoordinates.length / this.stride; goog.asserts.assert(0 <= index && index < n); if(index < 0 || n <= index) { return null } var point = new ol.geom.Point(null); point.setFlatCoordinates(this.layout, this.flatCoordinates.slice(index * this.stride, (index + 1) * this.stride)); return point }; ol.geom.MultiPoint.prototype.getPoints = function() { var flatCoordinates = this.flatCoordinates; var layout = this.layout; var stride = this.stride; var points = []; var i, ii; for(i = 0, ii = flatCoordinates.length;i < ii;i += stride) { var point = new ol.geom.Point(null); point.setFlatCoordinates(layout, flatCoordinates.slice(i, i + stride)); points.push(point) } return points }; ol.geom.MultiPoint.prototype.getType = function() { return ol.geom.GeometryType.MULTI_POINT }; ol.geom.MultiPoint.prototype.setCoordinates = function(coordinates, opt_layout) { if(goog.isNull(coordinates)) { this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null) }else { this.setLayout(opt_layout, coordinates, 1); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = [] } this.flatCoordinates.length = ol.geom.flat.deflate.coordinates(this.flatCoordinates, 0, coordinates, this.stride); this.dispatchChangeEvent() } }; ol.geom.MultiPoint.prototype.setFlatCoordinates = function(layout, flatCoordinates) { this.setFlatCoordinatesInternal(layout, flatCoordinates); this.dispatchChangeEvent() }; goog.provide("ol.geom.flat.center"); goog.require("ol.extent"); ol.geom.flat.center.linearRingss = function(flatCoordinates, offset, endss, stride) { var flatCenters = []; var i, ii; var extent = ol.extent.createEmpty(); for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i]; extent = ol.extent.createOrUpdateFromFlatCoordinates(flatCoordinates, offset, ends[0], stride); flatCenters.push((extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2); offset = ends[ends.length - 1] } return flatCenters }; goog.provide("ol.geom.MultiPolygon"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.array"); goog.require("ol.extent"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.Polygon"); goog.require("ol.geom.SimpleGeometry"); goog.require("ol.geom.flat.area"); goog.require("ol.geom.flat.center"); goog.require("ol.geom.flat.closest"); goog.require("ol.geom.flat.contains"); goog.require("ol.geom.flat.deflate"); goog.require("ol.geom.flat.inflate"); goog.require("ol.geom.flat.interiorpoint"); goog.require("ol.geom.flat.orient"); goog.require("ol.geom.flat.simplify"); ol.geom.MultiPolygon = function(coordinates, opt_layout) { goog.base(this); this.endss_ = []; this.flatInteriorPointsRevision_ = -1; this.flatInteriorPoints_ = null; this.maxDelta_ = -1; this.maxDeltaRevision_ = -1; this.orientedRevision_ = -1; this.orientedFlatCoordinates_ = null; this.setCoordinates(coordinates, (opt_layout)) }; goog.inherits(ol.geom.MultiPolygon, ol.geom.SimpleGeometry); ol.geom.MultiPolygon.prototype.appendPolygon = function(polygon) { goog.asserts.assert(polygon.getLayout() == this.layout); var ends; if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = polygon.getFlatCoordinates().slice(); ends = polygon.getEnds().slice(); this.endss_.push() }else { var offset = this.flatCoordinates.length; ol.array.safeExtend(this.flatCoordinates, polygon.getFlatCoordinates()); ends = polygon.getEnds().slice(); var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { ends[i] += offset } } this.endss_.push(ends); this.dispatchChangeEvent() }; ol.geom.MultiPolygon.prototype.clone = function() { var multiPolygon = new ol.geom.MultiPolygon(null); multiPolygon.setFlatCoordinates(this.layout, this.flatCoordinates.slice(), this.endss_.slice()); return multiPolygon }; ol.geom.MultiPolygon.prototype.closestPointXY = function(x, y, closestPoint, minSquaredDistance) { if(minSquaredDistance < ol.extent.closestSquaredDistanceXY(this.getExtent(), x, y)) { return minSquaredDistance } if(this.maxDeltaRevision_ != this.getRevision()) { this.maxDelta_ = Math.sqrt(ol.geom.flat.closest.getssMaxSquaredDelta(this.flatCoordinates, 0, this.endss_, this.stride, 0)); this.maxDeltaRevision_ = this.getRevision() } return ol.geom.flat.closest.getssClosestPoint(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, this.maxDelta_, true, x, y, closestPoint, minSquaredDistance) }; ol.geom.MultiPolygon.prototype.containsXY = function(x, y) { return ol.geom.flat.contains.linearRingssContainsXY(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, x, y) }; ol.geom.MultiPolygon.prototype.getArea = function() { return ol.geom.flat.area.linearRingss(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride) }; ol.geom.MultiPolygon.prototype.getCoordinates = function() { return ol.geom.flat.inflate.coordinatesss(this.flatCoordinates, 0, this.endss_, this.stride) }; ol.geom.MultiPolygon.prototype.getEndss = function() { return this.endss_ }; ol.geom.MultiPolygon.prototype.getFlatInteriorPoints = function() { if(this.flatInteriorPointsRevision_ != this.getRevision()) { var flatCenters = ol.geom.flat.center.linearRingss(this.flatCoordinates, 0, this.endss_, this.stride); this.flatInteriorPoints_ = ol.geom.flat.interiorpoint.linearRingss(this.getOrientedFlatCoordinates(), 0, this.endss_, this.stride, flatCenters); this.flatInteriorPointsRevision_ = this.getRevision() } return this.flatInteriorPoints_ }; ol.geom.MultiPolygon.prototype.getInteriorPoints = function() { var interiorPoints = new ol.geom.MultiPoint(null); interiorPoints.setFlatCoordinates(ol.geom.GeometryLayout.XY, this.getFlatInteriorPoints().slice()); return interiorPoints }; ol.geom.MultiPolygon.prototype.getOrientedFlatCoordinates = function() { if(this.orientedRevision_ != this.getRevision()) { var flatCoordinates = this.flatCoordinates; if(ol.geom.flat.linearRingssAreOriented(flatCoordinates, 0, this.endss_, this.stride)) { this.orientedFlatCoordinates_ = flatCoordinates }else { this.orientedFlatCoordinates_ = flatCoordinates.slice(); this.orientedFlatCoordinates_.length = ol.geom.flat.orient.orientLinearRingss(this.orientedFlatCoordinates_, 0, this.endss_, this.stride) } this.orientedRevision_ = this.getRevision() } return this.orientedFlatCoordinates_ }; ol.geom.MultiPolygon.prototype.getSimplifiedGeometryInternal = function(squaredTolerance) { var simplifiedFlatCoordinates = []; var simplifiedEndss = []; simplifiedFlatCoordinates.length = ol.geom.flat.simplify.quantizess(this.flatCoordinates, 0, this.endss_, this.stride, Math.sqrt(squaredTolerance), simplifiedFlatCoordinates, 0, simplifiedEndss); var simplifiedMultiPolygon = new ol.geom.MultiPolygon(null); simplifiedMultiPolygon.setFlatCoordinates(ol.geom.GeometryLayout.XY, simplifiedFlatCoordinates, simplifiedEndss); return simplifiedMultiPolygon }; ol.geom.MultiPolygon.prototype.getPolygon = function(index) { goog.asserts.assert(0 <= index && index < this.endss_.length); if(index < 0 || this.endss_.length <= index) { return null } var offset; if(index === 0) { offset = 0 }else { var prevEnds = this.endss_[index - 1]; offset = prevEnds[prevEnds.length - 1] } var ends = this.endss_[index].slice(); var end = ends[ends.length - 1]; if(offset !== 0) { var i, ii; for(i = 0, ii = ends.length;i < ii;++i) { ends[i] -= offset } } var polygon = new ol.geom.Polygon(null); polygon.setFlatCoordinates(this.layout, this.flatCoordinates.slice(offset, end), ends); return polygon }; ol.geom.MultiPolygon.prototype.getPolygons = function() { var layout = this.layout; var flatCoordinates = this.flatCoordinates; var endss = this.endss_; var polygons = []; var offset = 0; var i, ii, j, jj; for(i = 0, ii = endss.length;i < ii;++i) { var ends = endss[i].slice(); var end = ends[ends.length - 1]; if(offset !== 0) { for(j = 0, jj = ends.length;j < jj;++j) { ends[j] -= offset } } var polygon = new ol.geom.Polygon(null); polygon.setFlatCoordinates(layout, flatCoordinates.slice(offset, end), ends); polygons.push(polygon); offset = end } return polygons }; ol.geom.MultiPolygon.prototype.getType = function() { return ol.geom.GeometryType.MULTI_POLYGON }; ol.geom.MultiPolygon.prototype.setCoordinates = function(coordinates, opt_layout) { if(goog.isNull(coordinates)) { this.setFlatCoordinates(ol.geom.GeometryLayout.XY, null, this.endss_) }else { this.setLayout(opt_layout, coordinates, 3); if(goog.isNull(this.flatCoordinates)) { this.flatCoordinates = [] } var endss = ol.geom.flat.deflate.coordinatesss(this.flatCoordinates, 0, coordinates, this.stride, this.endss_); var lastEnds = endss[endss.length - 1]; this.flatCoordinates.length = lastEnds.length === 0 ? 0 : lastEnds[lastEnds.length - 1]; this.dispatchChangeEvent() } }; ol.geom.MultiPolygon.prototype.setFlatCoordinates = function(layout, flatCoordinates, endss) { goog.asserts.assert(!goog.isNull(endss)); if(goog.isNull(flatCoordinates) || flatCoordinates.length === 0) { goog.asserts.assert(endss.length === 0) }else { goog.asserts.assert(endss.length > 0); var ends = endss[endss.length - 1]; goog.asserts.assert(flatCoordinates.length == ends[ends.length - 1]) } this.setFlatCoordinatesInternal(layout, flatCoordinates); this.endss_ = endss; this.dispatchChangeEvent() }; ol.geom.MultiPolygon.prototype.setPolygons = function(polygons) { var layout = ol.geom.GeometryLayout.XY; var flatCoordinates = []; var endss = []; var i, ii, ends; for(i = 0, ii = polygons.length;i < ii;++i) { var polygon = polygons[i]; if(i === 0) { layout = polygon.getLayout() }else { goog.asserts.assert(polygon.getLayout() == layout) } var offset = flatCoordinates.length; ends = polygon.getEnds(); var j, jj; for(j = 0, jj = ends.length;j < jj;++j) { ends[j] += offset } ol.array.safeExtend(flatCoordinates, polygon.getFlatCoordinates()); endss.push(ends) } this.setFlatCoordinates(layout, flatCoordinates, endss) }; goog.provide("ol.renderer.vector"); goog.require("goog.asserts"); goog.require("ol.geom.Circle"); goog.require("ol.geom.GeometryCollection"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.render.IReplayGroup"); goog.require("ol.style.ImageState"); goog.require("ol.style.Style"); ol.renderer.vector.defaultOrder = function(feature1, feature2) { return goog.getUid(feature1) - goog.getUid(feature2) }; ol.renderer.vector.renderCircleGeometry_ = function(replayGroup, geometry, style, data) { goog.asserts.assertInstanceof(geometry, ol.geom.Circle); var fillStyle = style.getFill(); var strokeStyle = style.getStroke(); if(!goog.isNull(fillStyle) || !goog.isNull(strokeStyle)) { var polygonReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.POLYGON); polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle); polygonReplay.drawCircleGeometry(geometry, data) } var textStyle = style.getText(); if(!goog.isNull(textStyle)) { var textReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.TEXT); textReplay.setTextStyle(textStyle); textReplay.drawText(geometry.getCenter(), 0, 2, 2, geometry, data) } }; ol.renderer.vector.renderFeature = function(replayGroup, feature, style, squaredTolerance, data, listener, thisArg) { var loading = false; var imageStyle, imageState; imageStyle = style.getImage(); if(goog.isNull(imageStyle)) { ol.renderer.vector.renderFeature_(replayGroup, feature, style, squaredTolerance, data) }else { imageState = imageStyle.getImageState(); if(imageState == ol.style.ImageState.LOADED || imageState == ol.style.ImageState.ERROR) { imageStyle.unlistenImageChange(listener, thisArg); if(imageState == ol.style.ImageState.LOADED) { ol.renderer.vector.renderFeature_(replayGroup, feature, style, squaredTolerance, data) } }else { if(imageState == ol.style.ImageState.IDLE) { imageStyle.load() } imageState = imageStyle.getImageState(); goog.asserts.assert(imageState == ol.style.ImageState.LOADING); imageStyle.listenImageChange(listener, thisArg); loading = true } } return loading }; ol.renderer.vector.renderFeature_ = function(replayGroup, feature, style, squaredTolerance, data) { var geometry = feature.getGeometry(); if(goog.isNull(geometry)) { return } var simplifiedGeometry = geometry.getSimplifiedGeometry(squaredTolerance); var geometryRenderer = ol.renderer.vector.GEOMETRY_RENDERERS_[simplifiedGeometry.getType()]; goog.asserts.assert(goog.isDef(geometryRenderer)); geometryRenderer(replayGroup, simplifiedGeometry, style, data) }; ol.renderer.vector.renderGeometryCollectionGeometry_ = function(replayGroup, geometry, style, data) { goog.asserts.assertInstanceof(geometry, ol.geom.GeometryCollection); var geometries = geometry.getGeometriesArray(); var i, ii; for(i = 0, ii = geometries.length;i < ii;++i) { var geometryRenderer = ol.renderer.vector.GEOMETRY_RENDERERS_[geometries[i].getType()]; goog.asserts.assert(goog.isDef(geometryRenderer)); geometryRenderer(replayGroup, geometries[i], style, data) } }; ol.renderer.vector.renderLineStringGeometry_ = function(replayGroup, geometry, style, data) { goog.asserts.assertInstanceof(geometry, ol.geom.LineString); var strokeStyle = style.getStroke(); if(!goog.isNull(strokeStyle)) { var lineStringReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.LINE_STRING); lineStringReplay.setFillStrokeStyle(null, strokeStyle); lineStringReplay.drawLineStringGeometry(geometry, data) } var textStyle = style.getText(); if(!goog.isNull(textStyle)) { var textReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.TEXT); textReplay.setTextStyle(textStyle); textReplay.drawText(geometry.getFlatMidpoint(), 0, 2, 2, geometry, data) } }; ol.renderer.vector.renderMultiLineStringGeometry_ = function(replayGroup, geometry, style, data) { goog.asserts.assertInstanceof(geometry, ol.geom.MultiLineString); var strokeStyle = style.getStroke(); if(!goog.isNull(strokeStyle)) { var lineStringReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.LINE_STRING); lineStringReplay.setFillStrokeStyle(null, strokeStyle); lineStringReplay.drawMultiLineStringGeometry(geometry, data) } var textStyle = style.getText(); if(!goog.isNull(textStyle)) { var textReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.TEXT); textReplay.setTextStyle(textStyle); var flatMidpointCoordinates = geometry.getFlatMidpoints(); textReplay.drawText(flatMidpointCoordinates, 0, flatMidpointCoordinates.length, 2, geometry, data) } }; ol.renderer.vector.renderMultiPolygonGeometry_ = function(replayGroup, geometry, style, data) { goog.asserts.assertInstanceof(geometry, ol.geom.MultiPolygon); var fillStyle = style.getFill(); var strokeStyle = style.getStroke(); if(!goog.isNull(strokeStyle) || !goog.isNull(fillStyle)) { var polygonReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.POLYGON); polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle); polygonReplay.drawMultiPolygonGeometry(geometry, data) } var textStyle = style.getText(); if(!goog.isNull(textStyle)) { var textReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.TEXT); textReplay.setTextStyle(textStyle); var flatInteriorPointCoordinates = geometry.getFlatInteriorPoints(); textReplay.drawText(flatInteriorPointCoordinates, 0, flatInteriorPointCoordinates.length, 2, geometry, data) } }; ol.renderer.vector.renderPointGeometry_ = function(replayGroup, geometry, style, data) { goog.asserts.assertInstanceof(geometry, ol.geom.Point); var imageStyle = style.getImage(); if(!goog.isNull(imageStyle)) { var imageReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.IMAGE); imageReplay.setImageStyle(imageStyle); imageReplay.drawPointGeometry(geometry, data) } var textStyle = style.getText(); if(!goog.isNull(textStyle)) { var textReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.TEXT); textReplay.setTextStyle(textStyle); textReplay.drawText(geometry.getCoordinates(), 0, 2, 2, geometry, data) } }; ol.renderer.vector.renderMultiPointGeometry_ = function(replayGroup, geometry, style, data) { goog.asserts.assertInstanceof(geometry, ol.geom.MultiPoint); var imageStyle = style.getImage(); if(!goog.isNull(imageStyle)) { var imageReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.IMAGE); imageReplay.setImageStyle(imageStyle); imageReplay.drawMultiPointGeometry(geometry, data) } var textStyle = style.getText(); if(!goog.isNull(textStyle)) { var textReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.TEXT); textReplay.setTextStyle(textStyle); var flatCoordinates = geometry.getFlatCoordinates(); textReplay.drawText(flatCoordinates, 0, flatCoordinates.length, geometry.getStride(), geometry, data) } }; ol.renderer.vector.renderPolygonGeometry_ = function(replayGroup, geometry, style, data) { goog.asserts.assertInstanceof(geometry, ol.geom.Polygon); var fillStyle = style.getFill(); var strokeStyle = style.getStroke(); if(!goog.isNull(fillStyle) || !goog.isNull(strokeStyle)) { var polygonReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.POLYGON); polygonReplay.setFillStrokeStyle(fillStyle, strokeStyle); polygonReplay.drawPolygonGeometry(geometry, data) } var textStyle = style.getText(); if(!goog.isNull(textStyle)) { var textReplay = replayGroup.getReplay(style.getZIndex(), ol.render.ReplayType.TEXT); textReplay.setTextStyle(textStyle); textReplay.drawText(geometry.getFlatInteriorPoint(), 0, 2, 2, geometry, data) } }; ol.renderer.vector.GEOMETRY_RENDERERS_ = {"Point":ol.renderer.vector.renderPointGeometry_, "LineString":ol.renderer.vector.renderLineStringGeometry_, "Polygon":ol.renderer.vector.renderPolygonGeometry_, "MultiPoint":ol.renderer.vector.renderMultiPointGeometry_, "MultiLineString":ol.renderer.vector.renderMultiLineStringGeometry_, "MultiPolygon":ol.renderer.vector.renderMultiPolygonGeometry_, "GeometryCollection":ol.renderer.vector.renderGeometryCollectionGeometry_, "Circle":ol.renderer.vector.renderCircleGeometry_}; goog.provide("ol.structs.RBush"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol.extent"); ol.structs.RBushNode = function(extent, height, children, value) { if(height === 0) { goog.asserts.assert(goog.isNull(children)); goog.asserts.assert(!goog.isNull(value)) }else { goog.asserts.assert(!goog.isNull(children)); goog.asserts.assert(goog.isNull(value)) } this.extent = extent; this.height = height; this.children = children; this.value = value }; ol.structs.RBushNode.compareMinX = function(node1, node2) { return node1.extent[0] - node2.extent[0] }; ol.structs.RBushNode.compareMinY = function(node1, node2) { return node1.extent[1] - node2.extent[1] }; ol.structs.RBushNode.prototype.assertValid = function(maxEntries) { if(this.height === 0) { goog.asserts.assert(goog.isNull(this.children)); goog.asserts.assert(!goog.isNull(this.value)) }else { goog.asserts.assert(!goog.isNull(this.children)); goog.asserts.assert(goog.isNull(this.value)); goog.asserts.assert(this.children.length <= maxEntries); var i, ii; for(i = 0, ii = this.children.length;i < ii;++i) { var child = this.children[i]; goog.asserts.assert(ol.extent.containsExtent(this.extent, child.extent)); child.assertValid(maxEntries) } } }; ol.structs.RBushNode.prototype.getChildrenExtent = function(start, stop, opt_extent) { goog.asserts.assert(!this.isLeaf()); var children = this.children; var extent = ol.extent.createOrUpdateEmpty(opt_extent); var i; for(i = start;i < stop;++i) { ol.extent.extend(extent, children[i].extent) } return extent }; ol.structs.RBushNode.prototype.remove = function(extent, value, path) { var children = this.children; var ii = children.length; var child, i; if(this.height == 1) { for(i = 0;i < ii;++i) { child = children[i]; if(child.value === value) { goog.array.removeAt(children, i); return true } } }else { goog.asserts.assert(this.height > 1); for(i = 0;i < ii;++i) { child = children[i]; if(ol.extent.containsExtent(child.extent, extent)) { path.push(child); if(child.remove(extent, value, path)) { return true } path.pop() } } } return false }; ol.structs.RBushNode.prototype.updateExtent = function() { goog.asserts.assert(!this.isLeaf()); var extent = ol.extent.createOrUpdateEmpty(this.extent); var children = this.children; var i, ii; for(i = 0, ii = children.length;i < ii;++i) { ol.extent.extend(extent, children[i].extent) } }; ol.structs.RBushNode.prototype.isLeaf = function() { return goog.isNull(this.children) }; ol.structs.RBush = function(opt_maxEntries) { this.maxEntries_ = Math.max(4, goog.isDef(opt_maxEntries) ? opt_maxEntries : 9); this.minEntries_ = Math.max(2, Math.ceil(0.4 * this.maxEntries_)); this.root_ = new ol.structs.RBushNode(ol.extent.createEmpty(), 1, [], null); this.valueExtent_ = {}; if(goog.DEBUG) { this.readers_ = 0 } }; ol.structs.RBush.prototype.allDistMargin_ = function(node, compare) { var children = node.children; var m = this.minEntries_; var M = children.length; var i; goog.array.sort(children, compare); var leftExtent = node.getChildrenExtent(0, m); var rightExtent = node.getChildrenExtent(M - m, M); var margin = ol.extent.getMargin(leftExtent) + ol.extent.getMargin(rightExtent); for(i = m;i < M - m;++i) { ol.extent.extend(leftExtent, children[i].extent); margin += ol.extent.getMargin(leftExtent) } for(i = M - m - 1;i >= m;--i) { ol.extent.extend(rightExtent, children[i].extent); margin += ol.extent.getMargin(rightExtent) } return margin }; ol.structs.RBush.prototype.assertValid = function() { this.root_.assertValid(this.maxEntries_) }; ol.structs.RBush.prototype.chooseSplitAxis_ = function(node) { var xMargin = this.allDistMargin_(node, ol.structs.RBushNode.compareMinX); var yMargin = this.allDistMargin_(node, ol.structs.RBushNode.compareMinY); if(xMargin < yMargin) { goog.array.sort(node.children, ol.structs.RBushNode.compareMinX) } }; ol.structs.RBush.prototype.chooseSplitIndex_ = function(node) { var children = node.children; var m = this.minEntries_; var M = children.length; var minOverlap = Infinity; var minArea = Infinity; var extent1 = ol.extent.createEmpty(); var extent2 = ol.extent.createEmpty(); var index = 0; var i; for(i = m;i <= M - m;++i) { extent1 = node.getChildrenExtent(0, i, extent1); extent2 = node.getChildrenExtent(i, M, extent2); var overlap = ol.extent.getIntersectionArea(extent1, extent2); var area = ol.extent.getArea(extent1) + ol.extent.getArea(extent2); if(overlap < minOverlap) { minOverlap = overlap; minArea = Math.min(area, minArea); index = i }else { if(overlap == minOverlap && area < minArea) { minArea = area; index = i } } } return index }; ol.structs.RBush.prototype.chooseSubtree_ = function(extent, node, level, path) { while(!node.isLeaf() && path.length - 1 != level) { var minArea = Infinity; var minEnlargement = Infinity; var children = node.children; var bestChild = null; var i, ii; for(i = 0, ii = children.length;i < ii;++i) { var child = children[i]; var area = ol.extent.getArea(child.extent); var enlargement = ol.extent.getEnlargedArea(child.extent, extent) - area; if(enlargement < minEnlargement) { minEnlargement = enlargement; minArea = Math.min(area, minArea); bestChild = child }else { if(enlargement == minEnlargement && area < minArea) { minArea = area; bestChild = child } } } goog.asserts.assert(!goog.isNull(bestChild)); node = bestChild; path.push(node) } return node }; ol.structs.RBush.prototype.clear = function() { var node = this.root_; node.extent = ol.extent.createOrUpdateEmpty(this.root_.extent); node.height = 1; node.children.length = 0; node.value = null; goog.object.clear(this.valueExtent_) }; ol.structs.RBush.prototype.condense_ = function(path) { var i; for(i = path.length - 1;i >= 0;--i) { var node = path[i]; if(node.children.length === 0) { if(i > 0) { goog.array.remove(path[i - 1].children, node) }else { this.clear() } }else { node.updateExtent() } } }; ol.structs.RBush.prototype.forEach = function(callback, opt_this) { if(goog.DEBUG) { ++this.readers_; try { return this.forEach_(this.root_, callback, opt_this) }finally { --this.readers_ } }else { return this.forEach_(this.root_, callback, opt_this) } }; ol.structs.RBush.prototype.forEach_ = function(node, callback, opt_this) { goog.asserts.assert(!node.isLeaf()); var toVisit = [node]; var children, i, ii, result; while(toVisit.length > 0) { node = toVisit.pop(); children = node.children; if(node.height == 1) { for(i = 0, ii = children.length;i < ii;++i) { result = callback.call(opt_this, children[i].value); if(result) { return result } } }else { toVisit.push.apply(toVisit, children) } } }; ol.structs.RBush.prototype.forEachInExtent = function(extent, callback, opt_this) { if(goog.DEBUG) { ++this.readers_; try { return this.forEachInExtent_(extent, callback, opt_this) }finally { --this.readers_ } }else { return this.forEachInExtent_(extent, callback, opt_this) } }; ol.structs.RBush.prototype.forEachInExtent_ = function(extent, callback, opt_this) { var toVisit = [this.root_]; var result; while(toVisit.length > 0) { var node = toVisit.pop(); if(ol.extent.intersects(extent, node.extent)) { if(node.isLeaf()) { result = callback.call(opt_this, node.value); if(result) { return result } }else { if(ol.extent.containsExtent(extent, node.extent)) { result = this.forEach_(node, callback, opt_this); if(result) { return result } }else { toVisit.push.apply(toVisit, node.children) } } } } return undefined }; ol.structs.RBush.prototype.forEachNode = function(callback, opt_this) { var toVisit = [this.root_]; while(toVisit.length > 0) { var node = toVisit.pop(); var result = callback.call(opt_this, node); if(result) { return result } if(!node.isLeaf()) { toVisit.push.apply(toVisit, node.children) } } return undefined }; ol.structs.RBush.prototype.getAll = function() { var values = []; this.forEach(function(value) { values.push(value) }); return values }; ol.structs.RBush.prototype.getInExtent = function(extent) { var values = []; this.forEachInExtent(extent, function(value) { values.push(value) }); return values }; ol.structs.RBush.prototype.getExtent = function(opt_extent) { return ol.extent.returnOrUpdate(this.root_.extent, opt_extent) }; ol.structs.RBush.prototype.getKey_ = function(value) { goog.asserts.assert(goog.isObject(value)); return goog.getUid(value).toString() }; ol.structs.RBush.prototype.insert = function(extent, value) { if(goog.DEBUG && this.readers_) { throw new Error("cannot insert value while reading"); } var key = this.getKey_(value); goog.asserts.assert(!this.valueExtent_.hasOwnProperty(key)); this.insert_(extent, value, this.root_.height - 1); this.valueExtent_[key] = ol.extent.clone(extent) }; ol.structs.RBush.prototype.insert_ = function(extent, value, level) { var path = [this.root_]; var node = this.chooseSubtree_(extent, this.root_, level, path); node.children.push(new ol.structs.RBushNode(extent, 0, null, value)); ol.extent.extend(node.extent, extent); var i; for(i = path.length - 1;i >= 0;--i) { if(path[i].children.length > this.maxEntries_) { this.split_(path, i) }else { break } } for(;i >= 0;--i) { ol.extent.extend(path[i].extent, extent) } return node }; ol.structs.RBush.prototype.isEmpty = function() { return this.root_.children.length === 0 }; ol.structs.RBush.prototype.remove = function(value) { if(goog.DEBUG && this.readers_) { throw new Error("cannot remove value while reading"); } var key = this.getKey_(value); goog.asserts.assert(this.valueExtent_.hasOwnProperty(key)); var extent = this.valueExtent_[key]; delete this.valueExtent_[key]; return this.remove_(extent, value) }; ol.structs.RBush.prototype.remove_ = function(extent, value) { var root = this.root_; var path = [root]; var removed = root.remove(extent, value, path); if(removed) { this.condense_(path) }else { goog.asserts.assert(path.length == 1); goog.asserts.assert(path[0] === root) } return removed }; ol.structs.RBush.prototype.split_ = function(path, level) { var node = path[level]; this.chooseSplitAxis_(node); var splitIndex = this.chooseSplitIndex_(node); var newChildren = node.children.splice(splitIndex); var newNode = new ol.structs.RBushNode(ol.extent.createEmpty(), node.height, newChildren, null); node.updateExtent(); newNode.updateExtent(); if(level) { path[level - 1].children.push(newNode) }else { this.splitRoot_(node, newNode) } }; ol.structs.RBush.prototype.splitRoot_ = function(node1, node2) { goog.asserts.assert(node1 === this.root_); var height = node1.height + 1; var extent = ol.extent.extend(node1.extent.slice(), node2.extent); var children = [node1, node2]; this.root_ = new ol.structs.RBushNode(extent, height, children, null) }; ol.structs.RBush.prototype.update = function(extent, value) { if(goog.DEBUG && this.readers_) { throw new Error("cannot update value while reading"); } var key = this.getKey_(value); var currentExtent = this.valueExtent_[key]; goog.asserts.assert(goog.isDef(currentExtent)); if(!ol.extent.equals(currentExtent, extent)) { var removed = this.remove_(currentExtent, value); goog.asserts.assert(removed); this.insert_(extent, value, this.root_.height - 1); this.valueExtent_[key] = ol.extent.clone(extent, currentExtent) } }; goog.provide("ol.source.Vector"); goog.provide("ol.source.VectorEvent"); goog.provide("ol.source.VectorEventType"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.ObjectEventType"); goog.require("ol.proj"); goog.require("ol.source.Source"); goog.require("ol.structs.RBush"); ol.source.VectorEventType = {ADDFEATURE:"addfeature", REMOVEFEATURE:"removefeature"}; ol.source.Vector = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, projection:options.projection, state:options.state}); this.rBush_ = new ol.structs.RBush; this.nullGeometryFeatures_ = {}; this.featureChangeKeys_ = {}; if(goog.isDef(options.features)) { this.addFeaturesInternal(options.features) } }; goog.inherits(ol.source.Vector, ol.source.Source); ol.source.Vector.prototype.addFeature = function(feature) { this.addFeatureInternal(feature); this.dispatchChangeEvent() }; ol.source.Vector.prototype.addFeatureInternal = function(feature) { var featureKey = goog.getUid(feature).toString(); goog.asserts.assert(!(featureKey in this.featureChangeKeys_)); this.featureChangeKeys_[featureKey] = [goog.events.listen(feature, goog.events.EventType.CHANGE, this.handleFeatureChange_, false, this), goog.events.listen(feature, ol.ObjectEventType.PROPERTYCHANGE, this.handleFeatureChange_, false, this)]; var geometry = feature.getGeometry(); if(goog.isNull(geometry)) { this.nullGeometryFeatures_[goog.getUid(feature).toString()] = feature }else { var extent = geometry.getExtent(); this.rBush_.insert(extent, feature) } this.dispatchEvent(new ol.source.VectorEvent(ol.source.VectorEventType.ADDFEATURE, feature)) }; ol.source.Vector.prototype.addFeatures = function(features) { this.addFeaturesInternal(features); this.dispatchChangeEvent() }; ol.source.Vector.prototype.addFeaturesInternal = function(features) { var i, ii; for(i = 0, ii = features.length;i < ii;++i) { this.addFeatureInternal(features[i]) } }; ol.source.Vector.prototype.clear = function() { this.rBush_.forEach(this.removeFeatureInternal, this); this.rBush_.clear(); goog.object.forEach(this.nullGeometryFeatures_, this.removeFeatureInternal, this); goog.object.clear(this.nullGeometryFeatures_); goog.asserts.assert(goog.object.isEmpty(this.featureChangeKeys_)); this.dispatchChangeEvent() }; ol.source.Vector.prototype.forEachFeature = function(f, opt_this) { return this.rBush_.forEach(f, opt_this) }; ol.source.Vector.prototype.forEachFeatureAtCoordinate = function(coordinate, f, opt_this) { var extent = [coordinate[0], coordinate[1], coordinate[0], coordinate[1]]; return this.forEachFeatureInExtent(extent, function(feature) { var geometry = feature.getGeometry(); goog.asserts.assert(!goog.isNull(geometry)); if(geometry.containsCoordinate(coordinate)) { return f.call(opt_this, feature) }else { return undefined } }) }; ol.source.Vector.prototype.forEachFeatureInExtent = function(extent, f, opt_this) { return this.rBush_.forEachInExtent(extent, f, opt_this) }; ol.source.Vector.prototype.forEachFeatureInExtentAtResolution = function(extent, resolution, f, opt_this) { return this.forEachFeatureInExtent(extent, f, opt_this) }; ol.source.Vector.prototype.getFeatures = function() { var features = this.rBush_.getAll(); if(!goog.object.isEmpty(this.nullGeometryFeatures_)) { goog.array.extend(features, goog.object.getValues(this.nullGeometryFeatures_)) } return features }; ol.source.Vector.prototype.getFeaturesAtCoordinate = function(coordinate) { var features = []; this.forEachFeatureAtCoordinate(coordinate, function(feature) { features.push(feature) }); return features }; ol.source.Vector.prototype.getFeaturesInExtent = function(extent) { return this.rBush_.getInExtent(extent) }; ol.source.Vector.prototype.getClosestFeatureToCoordinate = function(coordinate) { var x = coordinate[0]; var y = coordinate[1]; var closestFeature = null; var closestPoint = [NaN, NaN]; var minSquaredDistance = Infinity; var extent = [-Infinity, -Infinity, Infinity, Infinity]; this.rBush_.forEachInExtent(extent, function(feature) { var geometry = feature.getGeometry(); goog.asserts.assert(!goog.isNull(geometry)); var previousMinSquaredDistance = minSquaredDistance; minSquaredDistance = geometry.closestPointXY(x, y, closestPoint, minSquaredDistance); if(minSquaredDistance < previousMinSquaredDistance) { closestFeature = feature; var minDistance = Math.sqrt(minSquaredDistance); extent[0] = x - minDistance; extent[1] = y - minDistance; extent[2] = x + minDistance; extent[3] = y + minDistance } }); return closestFeature }; ol.source.Vector.prototype.getExtent = function() { return this.rBush_.getExtent() }; ol.source.Vector.prototype.handleFeatureChange_ = function(event) { var feature = (event.target); var featureKey = goog.getUid(feature).toString(); var geometry = feature.getGeometry(); if(goog.isNull(geometry)) { if(!(featureKey in this.nullGeometryFeatures_)) { this.rBush_.remove(feature); this.nullGeometryFeatures_[featureKey] = feature } }else { var extent = geometry.getExtent(); if(featureKey in this.nullGeometryFeatures_) { delete this.nullGeometryFeatures_[featureKey]; this.rBush_.insert(extent, feature) }else { this.rBush_.update(extent, feature) } } this.dispatchChangeEvent() }; ol.source.Vector.prototype.isEmpty = function() { return this.rBush_.isEmpty() && goog.object.isEmpty(this.nullGeometryFeatures_) }; ol.source.Vector.prototype.loadFeatures = goog.nullFunction; ol.source.Vector.prototype.removeFeature = function(feature) { var featureKey = goog.getUid(feature).toString(); if(featureKey in this.nullGeometryFeatures_) { delete this.nullGeometryFeatures_[featureKey] }else { this.rBush_.remove(feature) } this.removeFeatureInternal(feature); this.dispatchChangeEvent() }; ol.source.Vector.prototype.removeFeatureInternal = function(feature) { var featureKey = goog.getUid(feature).toString(); goog.asserts.assert(featureKey in this.featureChangeKeys_); goog.array.forEach(this.featureChangeKeys_[featureKey], goog.events.unlistenByKey); delete this.featureChangeKeys_[featureKey]; this.dispatchEvent(new ol.source.VectorEvent(ol.source.VectorEventType.REMOVEFEATURE, feature)) }; ol.source.VectorEvent = function(type, opt_feature) { goog.base(this, type); this.feature = opt_feature }; goog.inherits(ol.source.VectorEvent, goog.events.Event); goog.provide("ol.renderer.canvas.VectorLayer"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("ol.ViewHint"); goog.require("ol.dom"); goog.require("ol.extent"); goog.require("ol.feature"); goog.require("ol.layer.Vector"); goog.require("ol.render.EventType"); goog.require("ol.render.canvas.ReplayGroup"); goog.require("ol.renderer.canvas.Layer"); goog.require("ol.renderer.vector"); goog.require("ol.source.Vector"); ol.renderer.canvas.VectorLayer = function(mapRenderer, vectorLayer) { goog.base(this, mapRenderer, vectorLayer); this.dirty_ = false; this.renderedRevision_ = -1; this.renderedResolution_ = NaN; this.renderedExtent_ = ol.extent.createEmpty(); this.renderedRenderOrder_ = null; this.replayGroup_ = null; this.context_ = ol.dom.createCanvasContext2D() }; goog.inherits(ol.renderer.canvas.VectorLayer, ol.renderer.canvas.Layer); ol.renderer.canvas.VectorLayer.prototype.composeFrame = function(frameState, layerState, context) { var transform = this.getTransform(frameState); this.dispatchPreComposeEvent(context, frameState, transform); var replayGroup = this.replayGroup_; if(!goog.isNull(replayGroup) && !replayGroup.isEmpty()) { var layer = this.getLayer(); var replayContext; if(layer.hasListener(ol.render.EventType.RENDER)) { this.context_.canvas.width = context.canvas.width; this.context_.canvas.height = context.canvas.height; replayContext = this.context_ }else { replayContext = context } replayContext.globalAlpha = layerState.opacity; replayGroup.replay(replayContext, frameState.extent, frameState.pixelRatio, transform, frameState.view2DState.rotation, frameState.skippedFeatureUids_); if(replayContext != context) { this.dispatchRenderEvent(replayContext, frameState, transform); context.drawImage(replayContext.canvas, 0, 0) } } this.dispatchPostComposeEvent(context, frameState, transform) }; ol.renderer.canvas.VectorLayer.prototype.forEachFeatureAtPixel = function(coordinate, frameState, callback, thisArg) { if(goog.isNull(this.replayGroup_)) { return undefined }else { var extent = frameState.extent; var resolution = frameState.view2DState.resolution; var rotation = frameState.view2DState.rotation; var layer = this.getLayer(); return this.replayGroup_.forEachGeometryAtPixel(extent, resolution, rotation, coordinate, frameState.skippedFeatureUids_, function(geometry, data) { var feature = (data); goog.asserts.assert(goog.isDef(feature)); return callback.call(thisArg, feature, layer) }) } }; ol.renderer.canvas.VectorLayer.prototype.handleImageChange_ = function(event) { this.renderIfReadyAndVisible() }; ol.renderer.canvas.VectorLayer.prototype.prepareFrame = function(frameState, layerState) { var vectorLayer = this.getLayer(); goog.asserts.assertInstanceof(vectorLayer, ol.layer.Vector); var vectorSource = vectorLayer.getSource(); goog.asserts.assertInstanceof(vectorSource, ol.source.Vector); this.updateAttributions(frameState.attributions, vectorSource.getAttributions()); this.updateLogos(frameState, vectorSource); if(!this.dirty_ && (frameState.viewHints[ol.ViewHint.ANIMATING] || frameState.viewHints[ol.ViewHint.INTERACTING])) { return } var frameStateExtent = frameState.extent; var view2DState = frameState.view2DState; var projection = view2DState.projection; var resolution = view2DState.resolution; var pixelRatio = frameState.pixelRatio; var vectorLayerRevision = vectorLayer.getRevision(); var vectorLayerRenderOrder = vectorLayer.getRenderOrder(); if(!goog.isDef(vectorLayerRenderOrder)) { vectorLayerRenderOrder = ol.renderer.vector.defaultOrder } if(!this.dirty_ && this.renderedResolution_ == resolution && this.renderedRevision_ == vectorLayerRevision && this.renderedRenderOrder_ == vectorLayerRenderOrder && ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) { return } var extent = this.renderedExtent_; var xBuffer = ol.extent.getWidth(frameStateExtent) / 4; var yBuffer = ol.extent.getHeight(frameStateExtent) / 4; extent[0] = frameStateExtent[0] - xBuffer; extent[1] = frameStateExtent[1] - yBuffer; extent[2] = frameStateExtent[2] + xBuffer; extent[3] = frameStateExtent[3] + yBuffer; goog.dispose(this.replayGroup_); this.replayGroup_ = null; this.dirty_ = false; var styleFunction = vectorLayer.getStyleFunction(); if(!goog.isDef(styleFunction)) { styleFunction = ol.feature.defaultStyleFunction } var tolerance = resolution / (2 * pixelRatio); var replayGroup = new ol.render.canvas.ReplayGroup(tolerance, extent, resolution); vectorSource.loadFeatures(extent, resolution, projection); var renderFeature = function(feature) { goog.asserts.assert(goog.isDef(styleFunction)); var dirty = this.renderFeature(feature, resolution, pixelRatio, styleFunction, replayGroup); this.dirty_ = this.dirty_ || dirty }; if(!goog.isNull(vectorLayerRenderOrder)) { var features = []; vectorSource.forEachFeatureInExtentAtResolution(extent, resolution, function(feature) { features.push(feature) }, this); goog.array.sort(features, vectorLayerRenderOrder); goog.array.forEach(features, renderFeature, this) }else { vectorSource.forEachFeatureInExtentAtResolution(extent, resolution, renderFeature, this) } replayGroup.finish(); this.renderedResolution_ = resolution; this.renderedRevision_ = vectorLayerRevision; this.renderedRenderOrder_ = vectorLayerRenderOrder; this.replayGroup_ = replayGroup }; ol.renderer.canvas.VectorLayer.prototype.renderFeature = function(feature, resolution, pixelRatio, styleFunction, replayGroup) { var styles = styleFunction(feature, resolution); if(!goog.isDefAndNotNull(styles)) { return false } var squaredTolerance = resolution * resolution / (4 * pixelRatio * pixelRatio); var i, ii, loading = false; for(i = 0, ii = styles.length;i < ii;++i) { loading = ol.renderer.vector.renderFeature(replayGroup, feature, styles[i], squaredTolerance, feature, this.handleImageChange_, this) || loading } return loading }; goog.provide("ol.renderer.canvas.Map"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.style"); goog.require("goog.vec.Mat4"); goog.require("ol"); goog.require("ol.css"); goog.require("ol.dom"); goog.require("ol.layer.Image"); goog.require("ol.layer.Tile"); goog.require("ol.layer.Vector"); goog.require("ol.render.Event"); goog.require("ol.render.EventType"); goog.require("ol.render.canvas.Immediate"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.canvas.ImageLayer"); goog.require("ol.renderer.canvas.Layer"); goog.require("ol.renderer.canvas.TileLayer"); goog.require("ol.renderer.canvas.VectorLayer"); goog.require("ol.source.State"); goog.require("ol.vec.Mat4"); ol.renderer.canvas.Map = function(container, map) { goog.base(this, container, map); this.context_ = ol.dom.createCanvasContext2D(); this.canvas_ = this.context_.canvas; this.canvas_.style.width = "100%"; this.canvas_.style.height = "100%"; this.canvas_.className = ol.css.CLASS_UNSELECTABLE; goog.dom.insertChildAt(container, this.canvas_, 0); this.renderedVisible_ = true; this.transform_ = goog.vec.Mat4.createNumber() }; goog.inherits(ol.renderer.canvas.Map, ol.renderer.Map); ol.renderer.canvas.Map.prototype.createLayerRenderer = function(layer) { if(ol.ENABLE_IMAGE && layer instanceof ol.layer.Image) { return new ol.renderer.canvas.ImageLayer(this, layer) }else { if(ol.ENABLE_TILE && layer instanceof ol.layer.Tile) { return new ol.renderer.canvas.TileLayer(this, layer) }else { if(ol.ENABLE_VECTOR && layer instanceof ol.layer.Vector) { return new ol.renderer.canvas.VectorLayer(this, layer) }else { goog.asserts.fail(); return null } } } }; ol.renderer.canvas.Map.prototype.dispatchComposeEvent_ = function(type, frameState) { var map = this.getMap(); var context = this.context_; if(map.hasListener(type)) { var view2DState = frameState.view2DState; var pixelRatio = frameState.pixelRatio; ol.vec.Mat4.makeTransform2D(this.transform_, this.canvas_.width / 2, this.canvas_.height / 2, pixelRatio / view2DState.resolution, -pixelRatio / view2DState.resolution, -view2DState.rotation, -view2DState.center[0], -view2DState.center[1]); var render = new ol.render.canvas.Immediate(context, pixelRatio, frameState.extent, this.transform_, view2DState.rotation); var composeEvent = new ol.render.Event(type, map, render, frameState, context, null); map.dispatchEvent(composeEvent); render.flush() } }; ol.renderer.canvas.Map.prototype.getCanvasLayerRenderer = function(layer) { var layerRenderer = this.getLayerRenderer(layer); goog.asserts.assertInstanceof(layerRenderer, ol.renderer.canvas.Layer); return(layerRenderer) }; ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) { if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.canvas_, false); this.renderedVisible_ = false } return } var context = this.context_; var width = frameState.size[0] * frameState.pixelRatio; var height = frameState.size[1] * frameState.pixelRatio; if(this.canvas_.width != width || this.canvas_.height != height) { this.canvas_.width = width; this.canvas_.height = height }else { context.clearRect(0, 0, this.canvas_.width, this.canvas_.height) } this.calculateMatrices2D(frameState); this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState); var layerStatesArray = frameState.layerStatesArray; var viewResolution = frameState.view2DState.resolution; var i, ii, layer, layerRenderer, layerState; for(i = 0, ii = layerStatesArray.length;i < ii;++i) { layerState = layerStatesArray[i]; layer = layerState.layer; layerRenderer = this.getLayerRenderer(layer); goog.asserts.assertInstanceof(layerRenderer, ol.renderer.canvas.Layer); if(!layerState.visible || layerState.sourceState != ol.source.State.READY || viewResolution >= layerState.maxResolution || viewResolution < layerState.minResolution) { continue } layerRenderer.prepareFrame(frameState, layerState); layerRenderer.composeFrame(frameState, layerState, context) } this.dispatchComposeEvent_(ol.render.EventType.POSTCOMPOSE, frameState); if(!this.renderedVisible_) { goog.style.setElementShown(this.canvas_, true); this.renderedVisible_ = true } this.scheduleRemoveUnusedLayerRenderers(frameState); this.scheduleExpireIconCache(frameState) }; goog.provide("ol.renderer.dom.Layer"); goog.require("goog.dom"); goog.require("ol.layer.Layer"); goog.require("ol.renderer.Layer"); ol.renderer.dom.Layer = function(mapRenderer, layer, target) { goog.base(this, mapRenderer, layer); this.target = target }; goog.inherits(ol.renderer.dom.Layer, ol.renderer.Layer); ol.renderer.dom.Layer.prototype.getTarget = function() { return this.target }; goog.provide("ol.renderer.dom.ImageLayer"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.vec.Mat4"); goog.require("ol.ImageBase"); goog.require("ol.ImageState"); goog.require("ol.ViewHint"); goog.require("ol.dom"); goog.require("ol.layer.Image"); goog.require("ol.renderer.dom.Layer"); goog.require("ol.source.Image"); goog.require("ol.vec.Mat4"); ol.renderer.dom.ImageLayer = function(mapRenderer, imageLayer) { var target = goog.dom.createElement(goog.dom.TagName.DIV); target.style.position = "absolute"; goog.base(this, mapRenderer, imageLayer, target); this.image_ = null; this.transform_ = goog.vec.Mat4.createNumberIdentity() }; goog.inherits(ol.renderer.dom.ImageLayer, ol.renderer.dom.Layer); ol.renderer.dom.ImageLayer.prototype.forEachFeatureAtPixel = function(coordinate, frameState, callback, thisArg) { var layer = this.getLayer(); var source = layer.getSource(); goog.asserts.assertInstanceof(source, ol.source.Image); var extent = frameState.extent; var resolution = frameState.view2DState.resolution; var rotation = frameState.view2DState.rotation; return source.forEachFeatureAtPixel(extent, resolution, rotation, coordinate, function(feature) { return callback.call(thisArg, feature, layer) }) }; ol.renderer.dom.ImageLayer.prototype.prepareFrame = function(frameState, layerState) { var view2DState = frameState.view2DState; var viewCenter = view2DState.center; var viewResolution = view2DState.resolution; var viewRotation = view2DState.rotation; var image = this.image_; var imageLayer = this.getLayer(); goog.asserts.assertInstanceof(imageLayer, ol.layer.Image); var imageSource = imageLayer.getSource(); goog.asserts.assertInstanceof(imageSource, ol.source.Image); var hints = frameState.viewHints; if(!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) { var image_ = imageSource.getImage(frameState.extent, viewResolution, frameState.pixelRatio, view2DState.projection); if(!goog.isNull(image_)) { var imageState = image_.getState(); if(imageState == ol.ImageState.IDLE) { goog.events.listenOnce(image_, goog.events.EventType.CHANGE, this.handleImageChange, false, this); image_.load() }else { if(imageState == ol.ImageState.LOADED) { image = image_ } } } } if(!goog.isNull(image)) { var imageExtent = image.getExtent(); var imageResolution = image.getResolution(); var transform = goog.vec.Mat4.createNumber(); ol.vec.Mat4.makeTransform2D(transform, frameState.size[0] / 2, frameState.size[1] / 2, imageResolution / viewResolution, imageResolution / viewResolution, viewRotation, (imageExtent[0] - viewCenter[0]) / imageResolution, (viewCenter[1] - imageExtent[3]) / imageResolution); if(image != this.image_) { var imageElement = image.getImageElement(this); imageElement.style.maxWidth = "none"; imageElement.style.position = "absolute"; goog.dom.removeChildren(this.target); goog.dom.appendChild(this.target, imageElement); this.image_ = image } this.setTransform_(transform); this.updateAttributions(frameState.attributions, image.getAttributions()); this.updateLogos(frameState, imageSource) } }; ol.renderer.dom.ImageLayer.prototype.setTransform_ = function(transform) { if(!ol.vec.Mat4.equals2D(transform, this.transform_)) { ol.dom.transformElement2D(this.target, transform, 6); goog.vec.Mat4.setFromArray(this.transform_, transform) } }; goog.provide("ol.renderer.dom.TileLayer"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.object"); goog.require("goog.style"); goog.require("goog.vec.Mat4"); goog.require("ol"); goog.require("ol.Coordinate"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.TileState"); goog.require("ol.ViewHint"); goog.require("ol.dom"); goog.require("ol.dom.BrowserFeature"); goog.require("ol.extent"); goog.require("ol.layer.Tile"); goog.require("ol.renderer.dom.Layer"); goog.require("ol.source.Tile"); goog.require("ol.tilegrid.TileGrid"); goog.require("ol.vec.Mat4"); ol.renderer.dom.TileLayer = function(mapRenderer, tileLayer) { var target = goog.dom.createElement(goog.dom.TagName.DIV); target.style.position = "absolute"; if(ol.dom.BrowserFeature.USE_MS_MATRIX_TRANSFORM) { target.style.width = "100%"; target.style.height = "100%" } goog.base(this, mapRenderer, tileLayer, target); this.renderedVisible_ = true; this.renderedOpacity_ = 1; this.renderedRevision_ = 0; this.tileLayerZs_ = {} }; goog.inherits(ol.renderer.dom.TileLayer, ol.renderer.dom.Layer); ol.renderer.dom.TileLayer.prototype.prepareFrame = function(frameState, layerState) { if(!layerState.visible) { if(this.renderedVisible_) { goog.style.setElementShown(this.target, false); this.renderedVisible_ = false } return } var pixelRatio = frameState.pixelRatio; var view2DState = frameState.view2DState; var projection = view2DState.projection; var tileLayer = this.getLayer(); goog.asserts.assertInstanceof(tileLayer, ol.layer.Tile); var tileSource = tileLayer.getSource(); goog.asserts.assertInstanceof(tileSource, ol.source.Tile); var tileGrid = tileSource.getTileGridForProjection(projection); var tileGutter = tileSource.getGutter(); var z = tileGrid.getZForResolution(view2DState.resolution); var tileResolution = tileGrid.getResolution(z); var center = view2DState.center; var extent; if(tileResolution == view2DState.resolution) { center = this.snapCenterToPixel(center, tileResolution, frameState.size); extent = ol.extent.getForView2DAndSize(center, tileResolution, view2DState.rotation, frameState.size) }else { extent = frameState.extent } var tileRange = tileGrid.getTileRangeForExtentAndResolution(extent, tileResolution); var tilesToDrawByZ = {}; tilesToDrawByZ[z] = {}; var getTileIfLoaded = this.createGetTileIfLoadedFunction(function(tile) { return!goog.isNull(tile) && tile.getState() == ol.TileState.LOADED }, tileSource, pixelRatio, projection); var findLoadedTiles = goog.bind(tileSource.findLoadedTiles, tileSource, tilesToDrawByZ, getTileIfLoaded); var useInterimTilesOnError = tileLayer.getUseInterimTilesOnError(); if(!goog.isDef(useInterimTilesOnError)) { useInterimTilesOnError = true } var tmpExtent = ol.extent.createEmpty(); var tmpTileRange = new ol.TileRange(0, 0, 0, 0); var childTileRange, fullyLoaded, tile, tileState, x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { tile = tileSource.getTile(z, x, y, pixelRatio, projection); tileState = tile.getState(); if(tileState == ol.TileState.LOADED) { tilesToDrawByZ[z][tile.tileCoord.toString()] = tile; continue }else { if(tileState == ol.TileState.EMPTY || tileState == ol.TileState.ERROR && !useInterimTilesOnError) { continue } } fullyLoaded = tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles, null, tmpTileRange, tmpExtent); if(!fullyLoaded) { childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord, tmpTileRange, tmpExtent); if(!goog.isNull(childTileRange)) { findLoadedTiles(z + 1, childTileRange) } } } } var tileLayerZ, tileLayerZKey; if(this.renderedRevision_ != tileSource.getRevision()) { for(tileLayerZKey in this.tileLayerZs_) { tileLayerZ = this.tileLayerZs_[+tileLayerZKey]; goog.dom.removeNode(tileLayerZ.target) } this.tileLayerZs_ = {}; this.renderedRevision_ = tileSource.getRevision() } var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); goog.array.sort(zs); var newTileLayerZKeys = {}; var iz, iziz, tileCoordKey, tileCoordOrigin, tilesToDraw; for(iz = 0, iziz = zs.length;iz < iziz;++iz) { tileLayerZKey = zs[iz]; if(tileLayerZKey in this.tileLayerZs_) { tileLayerZ = this.tileLayerZs_[tileLayerZKey] }else { tileCoordOrigin = tileGrid.getTileCoordForCoordAndZ(center, tileLayerZKey); tileLayerZ = new ol.renderer.dom.TileLayerZ_(tileGrid, tileCoordOrigin); newTileLayerZKeys[tileLayerZKey] = true; this.tileLayerZs_[tileLayerZKey] = tileLayerZ } tilesToDraw = tilesToDrawByZ[tileLayerZKey]; for(tileCoordKey in tilesToDraw) { tileLayerZ.addTile(tilesToDraw[tileCoordKey], tileGutter) } tileLayerZ.finalizeAddTiles() } var tileLayerZKeys = goog.array.map(goog.object.getKeys(this.tileLayerZs_), Number); goog.array.sort(tileLayerZKeys); var i, ii, j, origin, resolution; var transform = goog.vec.Mat4.createNumber(); for(i = 0, ii = tileLayerZKeys.length;i < ii;++i) { tileLayerZKey = tileLayerZKeys[i]; tileLayerZ = this.tileLayerZs_[tileLayerZKey]; if(!(tileLayerZKey in tilesToDrawByZ)) { goog.dom.removeNode(tileLayerZ.target); delete this.tileLayerZs_[tileLayerZKey]; continue } resolution = tileLayerZ.getResolution(); origin = tileLayerZ.getOrigin(); ol.vec.Mat4.makeTransform2D(transform, frameState.size[0] / 2, frameState.size[1] / 2, resolution / view2DState.resolution, resolution / view2DState.resolution, view2DState.rotation, (origin[0] - center[0]) / resolution, (center[1] - origin[1]) / resolution); tileLayerZ.setTransform(transform); if(tileLayerZKey in newTileLayerZKeys) { for(j = tileLayerZKey - 1;j >= 0;--j) { if(j in this.tileLayerZs_) { goog.dom.insertSiblingAfter(tileLayerZ.target, this.tileLayerZs_[j].target); break } } if(j < 0) { goog.dom.insertChildAt(this.target, tileLayerZ.target, 0) } }else { if(!frameState.viewHints[ol.ViewHint.ANIMATING] && !frameState.viewHints[ol.ViewHint.INTERACTING]) { tileLayerZ.removeTilesOutsideExtent(extent, tmpTileRange) } } } if(layerState.opacity != this.renderedOpacity_) { ol.dom.setOpacity(this.target, layerState.opacity); this.renderedOpacity_ = layerState.opacity } if(layerState.visible && !this.renderedVisible_) { goog.style.setElementShown(this.target, true); this.renderedVisible_ = true } this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange); this.manageTilePyramid(frameState, tileSource, tileGrid, pixelRatio, projection, extent, z, tileLayer.getPreload()); this.scheduleExpireCache(frameState, tileSource); this.updateLogos(frameState, tileSource) }; ol.renderer.dom.TileLayerZ_ = function(tileGrid, tileCoordOrigin) { this.target = goog.dom.createElement(goog.dom.TagName.DIV); this.target.style.position = "absolute"; this.target.style.width = "100%"; this.target.style.height = "100%"; if(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) { this.translateTarget_ = goog.dom.createElement(goog.dom.TagName.DIV); this.translateTarget_.style.position = "absolute"; this.translateTarget_.style.width = "100%"; this.translateTarget_.style.height = "100%"; goog.dom.appendChild(this.target, this.translateTarget_) } this.tileGrid_ = tileGrid; this.tileCoordOrigin_ = tileCoordOrigin; this.origin_ = ol.extent.getTopLeft(tileGrid.getTileCoordExtent(tileCoordOrigin)); this.resolution_ = tileGrid.getResolution(tileCoordOrigin.z); this.tiles_ = {}; this.documentFragment_ = null; this.transform_ = goog.vec.Mat4.createNumberIdentity() }; ol.renderer.dom.TileLayerZ_.prototype.addTile = function(tile, tileGutter) { var tileCoord = tile.tileCoord; goog.asserts.assert(tileCoord.z == this.tileCoordOrigin_.z); var tileCoordKey = tileCoord.toString(); if(tileCoordKey in this.tiles_) { return } var tileSize = this.tileGrid_.getTileSize(tileCoord.z); var image = tile.getImage(this); var imageStyle = image.style; imageStyle.maxWidth = "none"; var tileElement; var tileElementStyle; if(tileGutter > 0) { tileElement = goog.dom.createElement(goog.dom.TagName.DIV); tileElementStyle = tileElement.style; tileElementStyle.overflow = "hidden"; tileElementStyle.width = tileSize + "px"; tileElementStyle.height = tileSize + "px"; imageStyle.position = "absolute"; imageStyle.left = -tileGutter + "px"; imageStyle.top = -tileGutter + "px"; imageStyle.width = tileSize + 2 * tileGutter + "px"; imageStyle.height = tileSize + 2 * tileGutter + "px"; goog.dom.appendChild(tileElement, image) }else { imageStyle.width = tileSize + "px"; imageStyle.height = tileSize + "px"; tileElement = image; tileElementStyle = imageStyle } tileElementStyle.position = "absolute"; tileElementStyle.left = (tileCoord.x - this.tileCoordOrigin_.x) * tileSize + "px"; tileElementStyle.top = (this.tileCoordOrigin_.y - tileCoord.y) * tileSize + "px"; if(goog.isNull(this.documentFragment_)) { this.documentFragment_ = document.createDocumentFragment() } goog.dom.appendChild(this.documentFragment_, tileElement); this.tiles_[tileCoordKey] = tile }; ol.renderer.dom.TileLayerZ_.prototype.finalizeAddTiles = function() { if(!goog.isNull(this.documentFragment_)) { if(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) { goog.dom.appendChild(this.translateTarget_, this.documentFragment_) }else { goog.dom.appendChild(this.target, this.documentFragment_) } this.documentFragment_ = null } }; ol.renderer.dom.TileLayerZ_.prototype.getOrigin = function() { return this.origin_ }; ol.renderer.dom.TileLayerZ_.prototype.getResolution = function() { return this.resolution_ }; ol.renderer.dom.TileLayerZ_.prototype.removeTilesOutsideExtent = function(extent, opt_tileRange) { var tileRange = this.tileGrid_.getTileRangeForExtentAndZ(extent, this.tileCoordOrigin_.z, opt_tileRange); var tilesToRemove = []; var tile, tileCoordKey; for(tileCoordKey in this.tiles_) { tile = this.tiles_[tileCoordKey]; if(!tileRange.contains(tile.tileCoord)) { tilesToRemove.push(tile) } } var i, ii; for(i = 0, ii = tilesToRemove.length;i < ii;++i) { tile = tilesToRemove[i]; tileCoordKey = tile.tileCoord.toString(); goog.dom.removeNode(tile.getImage(this)); delete this.tiles_[tileCoordKey] } }; ol.renderer.dom.TileLayerZ_.prototype.setTransform = function(transform) { if(!ol.vec.Mat4.equals2D(transform, this.transform_)) { if(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) { ol.dom.transformElement2D(this.target, transform, 6, this.translateTarget_) }else { ol.dom.transformElement2D(this.target, transform, 6) } goog.vec.Mat4.setFromArray(this.transform_, transform) } }; goog.provide("ol.renderer.dom.Map"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.functions"); goog.require("goog.style"); goog.require("ol"); goog.require("ol.css"); goog.require("ol.layer.Image"); goog.require("ol.layer.Tile"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.dom.ImageLayer"); goog.require("ol.renderer.dom.Layer"); goog.require("ol.renderer.dom.TileLayer"); goog.require("ol.source.State"); ol.renderer.dom.Map = function(container, map) { goog.base(this, container, map); this.layersPane_ = goog.dom.createElement(goog.dom.TagName.DIV); this.layersPane_.className = ol.css.CLASS_UNSELECTABLE; var style = this.layersPane_.style; style.position = "absolute"; style.width = "100%"; style.height = "100%"; if(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) { this.layersPane_.ondragstart = goog.functions.FALSE; this.layersPane_.onselectstart = goog.functions.FALSE } goog.dom.insertChildAt(container, this.layersPane_, 0); this.renderedVisible_ = true }; goog.inherits(ol.renderer.dom.Map, ol.renderer.Map); ol.renderer.dom.Map.prototype.createLayerRenderer = function(layer) { var layerRenderer; if(ol.ENABLE_IMAGE && layer instanceof ol.layer.Image) { layerRenderer = new ol.renderer.dom.ImageLayer(this, layer) }else { if(ol.ENABLE_TILE && layer instanceof ol.layer.Tile) { layerRenderer = new ol.renderer.dom.TileLayer(this, layer) }else { goog.asserts.fail(); return null } } return layerRenderer }; ol.renderer.dom.Map.prototype.renderFrame = function(frameState) { if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.layersPane_, false); this.renderedVisible_ = false } return } var addChild; if(ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) { addChild = function(elem) { goog.dom.appendChild(this.layersPane_, elem) } }else { addChild = function(elem, i) { goog.dom.insertChildAt(this.layersPane_, elem, i) } } var layerStatesArray = frameState.layerStatesArray; var i, ii, layer, layerRenderer, layerState; for(i = 0, ii = layerStatesArray.length;i < ii;++i) { layerState = layerStatesArray[i]; layer = layerState.layer; layerRenderer = (this.getLayerRenderer(layer)); goog.asserts.assertInstanceof(layerRenderer, ol.renderer.dom.Layer); addChild.call(this, layerRenderer.getTarget(), i); if(layerState.sourceState == ol.source.State.READY) { layerRenderer.prepareFrame(frameState, layerState) } } var layerStates = frameState.layerStates; var layerKey; for(layerKey in this.getLayerRenderers()) { if(!(layerKey in layerStates)) { layerRenderer = this.getLayerRendererByKey(layerKey); goog.asserts.assertInstanceof(layerRenderer, ol.renderer.dom.Layer); goog.dom.removeNode(layerRenderer.getTarget()) } } if(!this.renderedVisible_) { goog.style.setElementShown(this.layersPane_, true); this.renderedVisible_ = true } this.calculateMatrices2D(frameState); this.scheduleRemoveUnusedLayerRenderers(frameState); this.scheduleExpireIconCache(frameState) }; goog.provide("goog.webgl"); goog.webgl.DEPTH_BUFFER_BIT = 256; goog.webgl.STENCIL_BUFFER_BIT = 1024; goog.webgl.COLOR_BUFFER_BIT = 16384; goog.webgl.POINTS = 0; goog.webgl.LINES = 1; goog.webgl.LINE_LOOP = 2; goog.webgl.LINE_STRIP = 3; goog.webgl.TRIANGLES = 4; goog.webgl.TRIANGLE_STRIP = 5; goog.webgl.TRIANGLE_FAN = 6; goog.webgl.ZERO = 0; goog.webgl.ONE = 1; goog.webgl.SRC_COLOR = 768; goog.webgl.ONE_MINUS_SRC_COLOR = 769; goog.webgl.SRC_ALPHA = 770; goog.webgl.ONE_MINUS_SRC_ALPHA = 771; goog.webgl.DST_ALPHA = 772; goog.webgl.ONE_MINUS_DST_ALPHA = 773; goog.webgl.DST_COLOR = 774; goog.webgl.ONE_MINUS_DST_COLOR = 775; goog.webgl.SRC_ALPHA_SATURATE = 776; goog.webgl.FUNC_ADD = 32774; goog.webgl.BLEND_EQUATION = 32777; goog.webgl.BLEND_EQUATION_RGB = 32777; goog.webgl.BLEND_EQUATION_ALPHA = 34877; goog.webgl.FUNC_SUBTRACT = 32778; goog.webgl.FUNC_REVERSE_SUBTRACT = 32779; goog.webgl.BLEND_DST_RGB = 32968; goog.webgl.BLEND_SRC_RGB = 32969; goog.webgl.BLEND_DST_ALPHA = 32970; goog.webgl.BLEND_SRC_ALPHA = 32971; goog.webgl.CONSTANT_COLOR = 32769; goog.webgl.ONE_MINUS_CONSTANT_COLOR = 32770; goog.webgl.CONSTANT_ALPHA = 32771; goog.webgl.ONE_MINUS_CONSTANT_ALPHA = 32772; goog.webgl.BLEND_COLOR = 32773; goog.webgl.ARRAY_BUFFER = 34962; goog.webgl.ELEMENT_ARRAY_BUFFER = 34963; goog.webgl.ARRAY_BUFFER_BINDING = 34964; goog.webgl.ELEMENT_ARRAY_BUFFER_BINDING = 34965; goog.webgl.STREAM_DRAW = 35040; goog.webgl.STATIC_DRAW = 35044; goog.webgl.DYNAMIC_DRAW = 35048; goog.webgl.BUFFER_SIZE = 34660; goog.webgl.BUFFER_USAGE = 34661; goog.webgl.CURRENT_VERTEX_ATTRIB = 34342; goog.webgl.FRONT = 1028; goog.webgl.BACK = 1029; goog.webgl.FRONT_AND_BACK = 1032; goog.webgl.CULL_FACE = 2884; goog.webgl.BLEND = 3042; goog.webgl.DITHER = 3024; goog.webgl.STENCIL_TEST = 2960; goog.webgl.DEPTH_TEST = 2929; goog.webgl.SCISSOR_TEST = 3089; goog.webgl.POLYGON_OFFSET_FILL = 32823; goog.webgl.SAMPLE_ALPHA_TO_COVERAGE = 32926; goog.webgl.SAMPLE_COVERAGE = 32928; goog.webgl.NO_ERROR = 0; goog.webgl.INVALID_ENUM = 1280; goog.webgl.INVALID_VALUE = 1281; goog.webgl.INVALID_OPERATION = 1282; goog.webgl.OUT_OF_MEMORY = 1285; goog.webgl.CW = 2304; goog.webgl.CCW = 2305; goog.webgl.LINE_WIDTH = 2849; goog.webgl.ALIASED_POINT_SIZE_RANGE = 33901; goog.webgl.ALIASED_LINE_WIDTH_RANGE = 33902; goog.webgl.CULL_FACE_MODE = 2885; goog.webgl.FRONT_FACE = 2886; goog.webgl.DEPTH_RANGE = 2928; goog.webgl.DEPTH_WRITEMASK = 2930; goog.webgl.DEPTH_CLEAR_VALUE = 2931; goog.webgl.DEPTH_FUNC = 2932; goog.webgl.STENCIL_CLEAR_VALUE = 2961; goog.webgl.STENCIL_FUNC = 2962; goog.webgl.STENCIL_FAIL = 2964; goog.webgl.STENCIL_PASS_DEPTH_FAIL = 2965; goog.webgl.STENCIL_PASS_DEPTH_PASS = 2966; goog.webgl.STENCIL_REF = 2967; goog.webgl.STENCIL_VALUE_MASK = 2963; goog.webgl.STENCIL_WRITEMASK = 2968; goog.webgl.STENCIL_BACK_FUNC = 34816; goog.webgl.STENCIL_BACK_FAIL = 34817; goog.webgl.STENCIL_BACK_PASS_DEPTH_FAIL = 34818; goog.webgl.STENCIL_BACK_PASS_DEPTH_PASS = 34819; goog.webgl.STENCIL_BACK_REF = 36003; goog.webgl.STENCIL_BACK_VALUE_MASK = 36004; goog.webgl.STENCIL_BACK_WRITEMASK = 36005; goog.webgl.VIEWPORT = 2978; goog.webgl.SCISSOR_BOX = 3088; goog.webgl.COLOR_CLEAR_VALUE = 3106; goog.webgl.COLOR_WRITEMASK = 3107; goog.webgl.UNPACK_ALIGNMENT = 3317; goog.webgl.PACK_ALIGNMENT = 3333; goog.webgl.MAX_TEXTURE_SIZE = 3379; goog.webgl.MAX_VIEWPORT_DIMS = 3386; goog.webgl.SUBPIXEL_BITS = 3408; goog.webgl.RED_BITS = 3410; goog.webgl.GREEN_BITS = 3411; goog.webgl.BLUE_BITS = 3412; goog.webgl.ALPHA_BITS = 3413; goog.webgl.DEPTH_BITS = 3414; goog.webgl.STENCIL_BITS = 3415; goog.webgl.POLYGON_OFFSET_UNITS = 10752; goog.webgl.POLYGON_OFFSET_FACTOR = 32824; goog.webgl.TEXTURE_BINDING_2D = 32873; goog.webgl.SAMPLE_BUFFERS = 32936; goog.webgl.SAMPLES = 32937; goog.webgl.SAMPLE_COVERAGE_VALUE = 32938; goog.webgl.SAMPLE_COVERAGE_INVERT = 32939; goog.webgl.COMPRESSED_TEXTURE_FORMATS = 34467; goog.webgl.DONT_CARE = 4352; goog.webgl.FASTEST = 4353; goog.webgl.NICEST = 4354; goog.webgl.GENERATE_MIPMAP_HINT = 33170; goog.webgl.BYTE = 5120; goog.webgl.UNSIGNED_BYTE = 5121; goog.webgl.SHORT = 5122; goog.webgl.UNSIGNED_SHORT = 5123; goog.webgl.INT = 5124; goog.webgl.UNSIGNED_INT = 5125; goog.webgl.FLOAT = 5126; goog.webgl.DEPTH_COMPONENT = 6402; goog.webgl.ALPHA = 6406; goog.webgl.RGB = 6407; goog.webgl.RGBA = 6408; goog.webgl.LUMINANCE = 6409; goog.webgl.LUMINANCE_ALPHA = 6410; goog.webgl.UNSIGNED_SHORT_4_4_4_4 = 32819; goog.webgl.UNSIGNED_SHORT_5_5_5_1 = 32820; goog.webgl.UNSIGNED_SHORT_5_6_5 = 33635; goog.webgl.FRAGMENT_SHADER = 35632; goog.webgl.VERTEX_SHADER = 35633; goog.webgl.MAX_VERTEX_ATTRIBS = 34921; goog.webgl.MAX_VERTEX_UNIFORM_VECTORS = 36347; goog.webgl.MAX_VARYING_VECTORS = 36348; goog.webgl.MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661; goog.webgl.MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660; goog.webgl.MAX_TEXTURE_IMAGE_UNITS = 34930; goog.webgl.MAX_FRAGMENT_UNIFORM_VECTORS = 36349; goog.webgl.SHADER_TYPE = 35663; goog.webgl.DELETE_STATUS = 35712; goog.webgl.LINK_STATUS = 35714; goog.webgl.VALIDATE_STATUS = 35715; goog.webgl.ATTACHED_SHADERS = 35717; goog.webgl.ACTIVE_UNIFORMS = 35718; goog.webgl.ACTIVE_ATTRIBUTES = 35721; goog.webgl.SHADING_LANGUAGE_VERSION = 35724; goog.webgl.CURRENT_PROGRAM = 35725; goog.webgl.NEVER = 512; goog.webgl.LESS = 513; goog.webgl.EQUAL = 514; goog.webgl.LEQUAL = 515; goog.webgl.GREATER = 516; goog.webgl.NOTEQUAL = 517; goog.webgl.GEQUAL = 518; goog.webgl.ALWAYS = 519; goog.webgl.KEEP = 7680; goog.webgl.REPLACE = 7681; goog.webgl.INCR = 7682; goog.webgl.DECR = 7683; goog.webgl.INVERT = 5386; goog.webgl.INCR_WRAP = 34055; goog.webgl.DECR_WRAP = 34056; goog.webgl.VENDOR = 7936; goog.webgl.RENDERER = 7937; goog.webgl.VERSION = 7938; goog.webgl.NEAREST = 9728; goog.webgl.LINEAR = 9729; goog.webgl.NEAREST_MIPMAP_NEAREST = 9984; goog.webgl.LINEAR_MIPMAP_NEAREST = 9985; goog.webgl.NEAREST_MIPMAP_LINEAR = 9986; goog.webgl.LINEAR_MIPMAP_LINEAR = 9987; goog.webgl.TEXTURE_MAG_FILTER = 10240; goog.webgl.TEXTURE_MIN_FILTER = 10241; goog.webgl.TEXTURE_WRAP_S = 10242; goog.webgl.TEXTURE_WRAP_T = 10243; goog.webgl.TEXTURE_2D = 3553; goog.webgl.TEXTURE = 5890; goog.webgl.TEXTURE_CUBE_MAP = 34067; goog.webgl.TEXTURE_BINDING_CUBE_MAP = 34068; goog.webgl.TEXTURE_CUBE_MAP_POSITIVE_X = 34069; goog.webgl.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070; goog.webgl.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071; goog.webgl.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072; goog.webgl.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073; goog.webgl.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074; goog.webgl.MAX_CUBE_MAP_TEXTURE_SIZE = 34076; goog.webgl.TEXTURE0 = 33984; goog.webgl.TEXTURE1 = 33985; goog.webgl.TEXTURE2 = 33986; goog.webgl.TEXTURE3 = 33987; goog.webgl.TEXTURE4 = 33988; goog.webgl.TEXTURE5 = 33989; goog.webgl.TEXTURE6 = 33990; goog.webgl.TEXTURE7 = 33991; goog.webgl.TEXTURE8 = 33992; goog.webgl.TEXTURE9 = 33993; goog.webgl.TEXTURE10 = 33994; goog.webgl.TEXTURE11 = 33995; goog.webgl.TEXTURE12 = 33996; goog.webgl.TEXTURE13 = 33997; goog.webgl.TEXTURE14 = 33998; goog.webgl.TEXTURE15 = 33999; goog.webgl.TEXTURE16 = 34E3; goog.webgl.TEXTURE17 = 34001; goog.webgl.TEXTURE18 = 34002; goog.webgl.TEXTURE19 = 34003; goog.webgl.TEXTURE20 = 34004; goog.webgl.TEXTURE21 = 34005; goog.webgl.TEXTURE22 = 34006; goog.webgl.TEXTURE23 = 34007; goog.webgl.TEXTURE24 = 34008; goog.webgl.TEXTURE25 = 34009; goog.webgl.TEXTURE26 = 34010; goog.webgl.TEXTURE27 = 34011; goog.webgl.TEXTURE28 = 34012; goog.webgl.TEXTURE29 = 34013; goog.webgl.TEXTURE30 = 34014; goog.webgl.TEXTURE31 = 34015; goog.webgl.ACTIVE_TEXTURE = 34016; goog.webgl.REPEAT = 10497; goog.webgl.CLAMP_TO_EDGE = 33071; goog.webgl.MIRRORED_REPEAT = 33648; goog.webgl.FLOAT_VEC2 = 35664; goog.webgl.FLOAT_VEC3 = 35665; goog.webgl.FLOAT_VEC4 = 35666; goog.webgl.INT_VEC2 = 35667; goog.webgl.INT_VEC3 = 35668; goog.webgl.INT_VEC4 = 35669; goog.webgl.BOOL = 35670; goog.webgl.BOOL_VEC2 = 35671; goog.webgl.BOOL_VEC3 = 35672; goog.webgl.BOOL_VEC4 = 35673; goog.webgl.FLOAT_MAT2 = 35674; goog.webgl.FLOAT_MAT3 = 35675; goog.webgl.FLOAT_MAT4 = 35676; goog.webgl.SAMPLER_2D = 35678; goog.webgl.SAMPLER_CUBE = 35680; goog.webgl.VERTEX_ATTRIB_ARRAY_ENABLED = 34338; goog.webgl.VERTEX_ATTRIB_ARRAY_SIZE = 34339; goog.webgl.VERTEX_ATTRIB_ARRAY_STRIDE = 34340; goog.webgl.VERTEX_ATTRIB_ARRAY_TYPE = 34341; goog.webgl.VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922; goog.webgl.VERTEX_ATTRIB_ARRAY_POINTER = 34373; goog.webgl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975; goog.webgl.COMPILE_STATUS = 35713; goog.webgl.LOW_FLOAT = 36336; goog.webgl.MEDIUM_FLOAT = 36337; goog.webgl.HIGH_FLOAT = 36338; goog.webgl.LOW_INT = 36339; goog.webgl.MEDIUM_INT = 36340; goog.webgl.HIGH_INT = 36341; goog.webgl.FRAMEBUFFER = 36160; goog.webgl.RENDERBUFFER = 36161; goog.webgl.RGBA4 = 32854; goog.webgl.RGB5_A1 = 32855; goog.webgl.RGB565 = 36194; goog.webgl.DEPTH_COMPONENT16 = 33189; goog.webgl.STENCIL_INDEX = 6401; goog.webgl.STENCIL_INDEX8 = 36168; goog.webgl.DEPTH_STENCIL = 34041; goog.webgl.RENDERBUFFER_WIDTH = 36162; goog.webgl.RENDERBUFFER_HEIGHT = 36163; goog.webgl.RENDERBUFFER_INTERNAL_FORMAT = 36164; goog.webgl.RENDERBUFFER_RED_SIZE = 36176; goog.webgl.RENDERBUFFER_GREEN_SIZE = 36177; goog.webgl.RENDERBUFFER_BLUE_SIZE = 36178; goog.webgl.RENDERBUFFER_ALPHA_SIZE = 36179; goog.webgl.RENDERBUFFER_DEPTH_SIZE = 36180; goog.webgl.RENDERBUFFER_STENCIL_SIZE = 36181; goog.webgl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048; goog.webgl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049; goog.webgl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050; goog.webgl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051; goog.webgl.COLOR_ATTACHMENT0 = 36064; goog.webgl.DEPTH_ATTACHMENT = 36096; goog.webgl.STENCIL_ATTACHMENT = 36128; goog.webgl.DEPTH_STENCIL_ATTACHMENT = 33306; goog.webgl.NONE = 0; goog.webgl.FRAMEBUFFER_COMPLETE = 36053; goog.webgl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054; goog.webgl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055; goog.webgl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057; goog.webgl.FRAMEBUFFER_UNSUPPORTED = 36061; goog.webgl.FRAMEBUFFER_BINDING = 36006; goog.webgl.RENDERBUFFER_BINDING = 36007; goog.webgl.MAX_RENDERBUFFER_SIZE = 34024; goog.webgl.INVALID_FRAMEBUFFER_OPERATION = 1286; goog.webgl.UNPACK_FLIP_Y_WEBGL = 37440; goog.webgl.UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441; goog.webgl.CONTEXT_LOST_WEBGL = 37442; goog.webgl.UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443; goog.webgl.BROWSER_DEFAULT_WEBGL = 37444; goog.webgl.HALF_FLOAT_OES = 36193; goog.webgl.FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723; goog.webgl.VERTEX_ARRAY_BINDING_OES = 34229; goog.webgl.UNMASKED_VENDOR_WEBGL = 37445; goog.webgl.UNMASKED_RENDERER_WEBGL = 37446; goog.webgl.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776; goog.webgl.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777; goog.webgl.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778; goog.webgl.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779; goog.webgl.TEXTURE_MAX_ANISOTROPY_EXT = 34046; goog.webgl.MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047; goog.provide("ol.render.webgl.Immediate"); ol.render.webgl.Immediate = function(context, pixelRatio) { }; ol.render.webgl.Immediate.prototype.drawAsync = function(zIndex, callback) { }; ol.render.webgl.Immediate.prototype.drawCircleGeometry = function(circleGeometry, data) { }; ol.render.webgl.Immediate.prototype.drawFeature = function(feature, style) { }; ol.render.webgl.Immediate.prototype.drawGeometryCollectionGeometry = function(geometryCollectionGeometry, data) { }; ol.render.webgl.Immediate.prototype.drawPointGeometry = function(pointGeometry, data) { }; ol.render.webgl.Immediate.prototype.drawLineStringGeometry = function(lineStringGeometry, data) { }; ol.render.webgl.Immediate.prototype.drawMultiLineStringGeometry = function(multiLineStringGeometry, data) { }; ol.render.webgl.Immediate.prototype.drawMultiPointGeometry = function(multiPointGeometry, data) { }; ol.render.webgl.Immediate.prototype.drawMultiPolygonGeometry = function(multiPolygonGeometry, data) { }; ol.render.webgl.Immediate.prototype.drawPolygonGeometry = function(polygonGeometry, data) { }; ol.render.webgl.Immediate.prototype.drawText = function(flatCoordinates, offset, end, stride, geometry, data) { }; ol.render.webgl.Immediate.prototype.setFillStrokeStyle = function(fillStyle, strokeStyle) { }; ol.render.webgl.Immediate.prototype.setImageStyle = function(imageStyle) { }; ol.render.webgl.Immediate.prototype.setTextStyle = function(textStyle) { }; goog.provide("ol.color.Matrix"); goog.require("goog.vec.Mat4"); ol.color.Matrix = function() { this.colorMatrix_ = goog.vec.Mat4.createNumber(); this.brightness_ = undefined; this.brightnessMatrix_ = goog.vec.Mat4.createNumber(); this.contrast_ = undefined; this.contrastMatrix_ = goog.vec.Mat4.createNumber(); this.hue_ = undefined; this.hueMatrix_ = goog.vec.Mat4.createNumber(); this.saturation_ = undefined; this.saturationMatrix_ = goog.vec.Mat4.createNumber() }; ol.color.Matrix.makeBrightness = function(matrix, value) { goog.vec.Mat4.makeTranslate(matrix, value, value, value); return matrix }; ol.color.Matrix.makeContrast = function(matrix, value) { goog.vec.Mat4.makeScale(matrix, value, value, value); var translateValue = -0.5 * value + 0.5; goog.vec.Mat4.setColumnValues(matrix, 3, translateValue, translateValue, translateValue, 1); return matrix }; ol.color.Matrix.makeHue = function(matrix, value) { var cosHue = Math.cos(value); var sinHue = Math.sin(value); var v00 = 0.213 + cosHue * 0.787 - sinHue * 0.213; var v01 = 0.715 - cosHue * 0.715 - sinHue * 0.715; var v02 = 0.072 - cosHue * 0.072 + sinHue * 0.928; var v03 = 0; var v10 = 0.213 - cosHue * 0.213 + sinHue * 0.143; var v11 = 0.715 + cosHue * 0.285 + sinHue * 0.14; var v12 = 0.072 - cosHue * 0.072 - sinHue * 0.283; var v13 = 0; var v20 = 0.213 - cosHue * 0.213 - sinHue * 0.787; var v21 = 0.715 - cosHue * 0.715 + sinHue * 0.715; var v22 = 0.072 + cosHue * 0.928 + sinHue * 0.072; var v23 = 0; var v30 = 0; var v31 = 0; var v32 = 0; var v33 = 1; goog.vec.Mat4.setFromValues(matrix, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33); return matrix }; ol.color.Matrix.makeSaturation = function(matrix, value) { var v00 = 0.213 + 0.787 * value; var v01 = 0.715 - 0.715 * value; var v02 = 0.072 - 0.072 * value; var v03 = 0; var v10 = 0.213 - 0.213 * value; var v11 = 0.715 + 0.285 * value; var v12 = 0.072 - 0.072 * value; var v13 = 0; var v20 = 0.213 - 0.213 * value; var v21 = 0.715 - 0.715 * value; var v22 = 0.072 + 0.928 * value; var v23 = 0; var v30 = 0; var v31 = 0; var v32 = 0; var v33 = 1; goog.vec.Mat4.setFromValues(matrix, v00, v10, v20, v30, v01, v11, v21, v31, v02, v12, v22, v32, v03, v13, v23, v33); return matrix }; ol.color.Matrix.prototype.getMatrix = function(brightness, contrast, hue, saturation) { var colorMatrixDirty = false; if(goog.isDef(brightness) && brightness !== this.brightness_) { ol.color.Matrix.makeBrightness(this.brightnessMatrix_, brightness); this.brightness_ = brightness; colorMatrixDirty = true } if(goog.isDef(contrast) && contrast !== this.contrast_) { ol.color.Matrix.makeContrast(this.contrastMatrix_, contrast); this.contrast_ = contrast; colorMatrixDirty = true } if(goog.isDef(hue) && hue !== this.hue_) { ol.color.Matrix.makeHue(this.hueMatrix_, hue); this.hue_ = hue; colorMatrixDirty = true } if(goog.isDef(saturation) && saturation !== this.saturation_) { ol.color.Matrix.makeSaturation(this.saturationMatrix_, saturation); this.saturation_ = saturation; colorMatrixDirty = true } if(colorMatrixDirty) { var colorMatrix = this.colorMatrix_; goog.vec.Mat4.makeIdentity(colorMatrix); if(goog.isDef(contrast)) { goog.vec.Mat4.multMat(colorMatrix, this.contrastMatrix_, colorMatrix) } if(goog.isDef(brightness)) { goog.vec.Mat4.multMat(colorMatrix, this.brightnessMatrix_, colorMatrix) } if(goog.isDef(saturation)) { goog.vec.Mat4.multMat(colorMatrix, this.saturationMatrix_, colorMatrix) } if(goog.isDef(hue)) { goog.vec.Mat4.multMat(colorMatrix, this.hueMatrix_, colorMatrix) } } return this.colorMatrix_ }; goog.provide("ol.webgl.shader"); goog.require("goog.functions"); goog.require("goog.webgl"); goog.require("ol.webgl"); ol.webgl.Shader = function(source) { this.source_ = source }; ol.webgl.Shader.prototype.getType = goog.abstractMethod; ol.webgl.Shader.prototype.getSource = function() { return this.source_ }; ol.webgl.Shader.prototype.isAnimated = goog.functions.FALSE; ol.webgl.shader.Fragment = function(source) { goog.base(this, source) }; goog.inherits(ol.webgl.shader.Fragment, ol.webgl.Shader); ol.webgl.shader.Fragment.prototype.getType = function() { return goog.webgl.FRAGMENT_SHADER }; ol.webgl.shader.Vertex = function(source) { goog.base(this, source) }; goog.inherits(ol.webgl.shader.Vertex, ol.webgl.Shader); ol.webgl.shader.Vertex.prototype.getType = function() { return goog.webgl.VERTEX_SHADER }; goog.provide("ol.renderer.webgl.map.shader.Color"); goog.require("ol.webgl.shader"); ol.renderer.webgl.map.shader.ColorFragment = function() { goog.base(this, ol.renderer.webgl.map.shader.ColorFragment.SOURCE) }; goog.inherits(ol.renderer.webgl.map.shader.ColorFragment, ol.webgl.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.map.shader.ColorFragment); ol.renderer.webgl.map.shader.ColorFragment.DEBUG_SOURCE = "precision mediump float;\nvarying vec2 v_texCoord;\n\n\n// @see https://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.cpp\nuniform mat4 u_colorMatrix;\nuniform float u_opacity;\nuniform sampler2D u_texture;\n\nvoid main(void) {\n vec4 texColor \x3d texture2D(u_texture, v_texCoord);\n gl_FragColor.rgb \x3d (u_colorMatrix * vec4(texColor.rgb, 1.)).rgb;\n gl_FragColor.a \x3d texColor.a * u_opacity;\n}\n"; ol.renderer.webgl.map.shader.ColorFragment.OPTIMIZED_SOURCE = "precision mediump float;varying vec2 a;uniform mat4 f;uniform float g;uniform sampler2D h;void main(void){vec4 texColor\x3dtexture2D(h,a);gl_FragColor.rgb\x3d(f*vec4(texColor.rgb,1.)).rgb;gl_FragColor.a\x3dtexColor.a*g;}"; ol.renderer.webgl.map.shader.ColorFragment.SOURCE = goog.DEBUG ? ol.renderer.webgl.map.shader.ColorFragment.DEBUG_SOURCE : ol.renderer.webgl.map.shader.ColorFragment.OPTIMIZED_SOURCE; ol.renderer.webgl.map.shader.ColorVertex = function() { goog.base(this, ol.renderer.webgl.map.shader.ColorVertex.SOURCE) }; goog.inherits(ol.renderer.webgl.map.shader.ColorVertex, ol.webgl.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.map.shader.ColorVertex); ol.renderer.webgl.map.shader.ColorVertex.DEBUG_SOURCE = "varying vec2 v_texCoord;\n\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat4 u_texCoordMatrix;\nuniform mat4 u_projectionMatrix;\n\nvoid main(void) {\n gl_Position \x3d u_projectionMatrix * vec4(a_position, 0., 1.);\n v_texCoord \x3d (u_texCoordMatrix * vec4(a_texCoord, 0., 1.)).st;\n}\n\n\n"; ol.renderer.webgl.map.shader.ColorVertex.OPTIMIZED_SOURCE = "varying vec2 a;attribute vec2 b;attribute vec2 c;uniform mat4 d;uniform mat4 e;void main(void){gl_Position\x3de*vec4(b,0.,1.);a\x3d(d*vec4(c,0.,1.)).st;}"; ol.renderer.webgl.map.shader.ColorVertex.SOURCE = goog.DEBUG ? ol.renderer.webgl.map.shader.ColorVertex.DEBUG_SOURCE : ol.renderer.webgl.map.shader.ColorVertex.OPTIMIZED_SOURCE; ol.renderer.webgl.map.shader.Color.Locations = function(gl, program) { this.u_colorMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_colorMatrix" : "f"); this.u_opacity = gl.getUniformLocation(program, goog.DEBUG ? "u_opacity" : "g"); this.u_projectionMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_projectionMatrix" : "e"); this.u_texCoordMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_texCoordMatrix" : "d"); this.u_texture = gl.getUniformLocation(program, goog.DEBUG ? "u_texture" : "h"); this.a_position = gl.getAttribLocation(program, goog.DEBUG ? "a_position" : "b"); this.a_texCoord = gl.getAttribLocation(program, goog.DEBUG ? "a_texCoord" : "c") }; goog.provide("ol.renderer.webgl.map.shader.Default"); goog.require("ol.webgl.shader"); ol.renderer.webgl.map.shader.DefaultFragment = function() { goog.base(this, ol.renderer.webgl.map.shader.DefaultFragment.SOURCE) }; goog.inherits(ol.renderer.webgl.map.shader.DefaultFragment, ol.webgl.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.map.shader.DefaultFragment); ol.renderer.webgl.map.shader.DefaultFragment.DEBUG_SOURCE = "precision mediump float;\nvarying vec2 v_texCoord;\n\n\nuniform float u_opacity;\nuniform sampler2D u_texture;\n\nvoid main(void) {\n vec4 texColor \x3d texture2D(u_texture, v_texCoord);\n gl_FragColor.rgb \x3d texColor.rgb;\n gl_FragColor.a \x3d texColor.a * u_opacity;\n}\n"; ol.renderer.webgl.map.shader.DefaultFragment.OPTIMIZED_SOURCE = "precision mediump float;varying vec2 a;uniform float f;uniform sampler2D g;void main(void){vec4 texColor\x3dtexture2D(g,a);gl_FragColor.rgb\x3dtexColor.rgb;gl_FragColor.a\x3dtexColor.a*f;}"; ol.renderer.webgl.map.shader.DefaultFragment.SOURCE = goog.DEBUG ? ol.renderer.webgl.map.shader.DefaultFragment.DEBUG_SOURCE : ol.renderer.webgl.map.shader.DefaultFragment.OPTIMIZED_SOURCE; ol.renderer.webgl.map.shader.DefaultVertex = function() { goog.base(this, ol.renderer.webgl.map.shader.DefaultVertex.SOURCE) }; goog.inherits(ol.renderer.webgl.map.shader.DefaultVertex, ol.webgl.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.map.shader.DefaultVertex); ol.renderer.webgl.map.shader.DefaultVertex.DEBUG_SOURCE = "varying vec2 v_texCoord;\n\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\n\nuniform mat4 u_texCoordMatrix;\nuniform mat4 u_projectionMatrix;\n\nvoid main(void) {\n gl_Position \x3d u_projectionMatrix * vec4(a_position, 0., 1.);\n v_texCoord \x3d (u_texCoordMatrix * vec4(a_texCoord, 0., 1.)).st;\n}\n\n\n"; ol.renderer.webgl.map.shader.DefaultVertex.OPTIMIZED_SOURCE = "varying vec2 a;attribute vec2 b;attribute vec2 c;uniform mat4 d;uniform mat4 e;void main(void){gl_Position\x3de*vec4(b,0.,1.);a\x3d(d*vec4(c,0.,1.)).st;}"; ol.renderer.webgl.map.shader.DefaultVertex.SOURCE = goog.DEBUG ? ol.renderer.webgl.map.shader.DefaultVertex.DEBUG_SOURCE : ol.renderer.webgl.map.shader.DefaultVertex.OPTIMIZED_SOURCE; ol.renderer.webgl.map.shader.Default.Locations = function(gl, program) { this.u_opacity = gl.getUniformLocation(program, goog.DEBUG ? "u_opacity" : "f"); this.u_projectionMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_projectionMatrix" : "e"); this.u_texCoordMatrix = gl.getUniformLocation(program, goog.DEBUG ? "u_texCoordMatrix" : "d"); this.u_texture = gl.getUniformLocation(program, goog.DEBUG ? "u_texture" : "g"); this.a_position = gl.getAttribLocation(program, goog.DEBUG ? "a_position" : "b"); this.a_texCoord = gl.getAttribLocation(program, goog.DEBUG ? "a_texCoord" : "c") }; goog.provide("ol.structs.IntegerSet"); goog.require("goog.asserts"); ol.structs.IntegerSet = function(opt_arr) { this.arr_ = goog.isDef(opt_arr) ? opt_arr : []; if(goog.DEBUG) { this.assertValid() } }; ol.structs.IntegerSet.prototype.addRange = function(addStart, addStop) { goog.asserts.assert(addStart <= addStop); if(addStart == addStop) { return } var arr = this.arr_; var n = arr.length; var i; for(i = 0;i < n;i += 2) { if(addStart <= arr[i]) { arr.splice(i, 0, addStart, addStop); this.compactRanges_(); return } } arr.push(addStart, addStop); this.compactRanges_() }; ol.structs.IntegerSet.prototype.assertValid = function() { var arr = this.arr_; var n = arr.length; goog.asserts.assert(n % 2 === 0); var i; for(i = 1;i < n;++i) { goog.asserts.assert(arr[i] > arr[i - 1]) } }; ol.structs.IntegerSet.prototype.clear = function() { this.arr_.length = 0 }; ol.structs.IntegerSet.prototype.compactRanges_ = function() { var arr = this.arr_; var n = arr.length; var rangeIndex = 0; var i; for(i = 0;i < n;i += 2) { if(arr[i] == arr[i + 1]) { }else { if(rangeIndex > 0 && arr[rangeIndex - 2] <= arr[i] && arr[i] <= arr[rangeIndex - 1]) { arr[rangeIndex - 1] = Math.max(arr[rangeIndex - 1], arr[i + 1]) }else { arr[rangeIndex++] = arr[i]; arr[rangeIndex++] = arr[i + 1] } } } arr.length = rangeIndex }; ol.structs.IntegerSet.prototype.findRange = function(minSize) { goog.asserts.assert(minSize > 0); var arr = this.arr_; var n = arr.length; var bestIndex = -1; var bestSize, i, size; for(i = 0;i < n;i += 2) { size = arr[i + 1] - arr[i]; if(size == minSize) { return arr[i] }else { if(size > minSize && (bestIndex == -1 || size < bestSize)) { bestIndex = arr[i]; bestSize = size } } } return bestIndex }; ol.structs.IntegerSet.prototype.forEachRange = function(f, opt_this) { var arr = this.arr_; var n = arr.length; var i; for(i = 0;i < n;i += 2) { f.call(opt_this, arr[i], arr[i + 1]) } }; ol.structs.IntegerSet.prototype.forEachRangeInverted = function(start, stop, f, opt_this) { goog.asserts.assert(start < stop); var arr = this.arr_; var n = arr.length; if(n === 0) { f.call(opt_this, start, stop) }else { if(start < arr[0]) { f.call(opt_this, start, arr[0]) } var i; for(i = 1;i < n - 1;i += 2) { f.call(opt_this, arr[i], arr[i + 1]) } if(arr[n - 1] < stop) { f.call(opt_this, arr[n - 1], stop) } } }; ol.structs.IntegerSet.prototype.getArray = function() { return this.arr_ }; ol.structs.IntegerSet.prototype.getFirst = function() { return this.arr_.length === 0 ? -1 : this.arr_[0] }; ol.structs.IntegerSet.prototype.getLast = function() { var n = this.arr_.length; return n === 0 ? -1 : this.arr_[n - 1] }; ol.structs.IntegerSet.prototype.getSize = function() { var arr = this.arr_; var n = arr.length; var size = 0; var i; for(i = 0;i < n;i += 2) { size += arr[i + 1] - arr[i] } return size }; ol.structs.IntegerSet.prototype.intersectsRange = function(start, stop) { goog.asserts.assert(start <= stop); if(start == stop) { return false }else { var arr = this.arr_; var n = arr.length; var i = 0; for(i = 0;i < n;i += 2) { if(arr[i] <= start && start < arr[i + 1] || arr[i] < stop && stop - 1 < arr[i + 1] || start < arr[i] && arr[i + 1] <= stop) { return true } } return false } }; ol.structs.IntegerSet.prototype.isEmpty = function() { return this.arr_.length === 0 }; ol.structs.IntegerSet.prototype.pack = function() { return this.arr_ }; ol.structs.IntegerSet.prototype.removeRange = function(removeStart, removeStop) { goog.asserts.assert(removeStart <= removeStop); var arr = this.arr_; var n = arr.length; var i; for(i = 0;i < n;i += 2) { if(removeStop < arr[i] || arr[i + 1] < removeStart) { continue }else { if(arr[i] > removeStop) { break } } if(removeStart < arr[i]) { if(removeStop == arr[i]) { break }else { if(removeStop < arr[i + 1]) { arr[i] = Math.max(arr[i], removeStop); break }else { arr.splice(i, 2); i -= 2; n -= 2 } } }else { if(removeStart == arr[i]) { if(removeStop < arr[i + 1]) { arr[i] = removeStop; break }else { if(removeStop == arr[i + 1]) { arr.splice(i, 2); break }else { arr.splice(i, 2); i -= 2; n -= 2 } } }else { if(removeStop < arr[i + 1]) { arr.splice(i, 2, arr[i], removeStart, removeStop, arr[i + 1]); break }else { if(removeStop == arr[i + 1]) { arr[i + 1] = removeStart; break }else { arr[i + 1] = removeStart } } } } } this.compactRanges_() }; if(goog.DEBUG) { ol.structs.IntegerSet.prototype.toString = function() { var arr = this.arr_; var n = arr.length; var result = new Array(n / 2); var resultIndex = 0; var i; for(i = 0;i < n;i += 2) { result[resultIndex++] = arr[i] + "-" + arr[i + 1] } return result.join(", ") } } ;goog.provide("ol.structs.Buffer"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.webgl"); goog.require("ol"); goog.require("ol.structs.IntegerSet"); ol.structs.BufferUsage = {STATIC_DRAW:goog.webgl.STATIC_DRAW, STREAM_DRAW:goog.webgl.STREAM_DRAW, DYNAMIC_DRAW:goog.webgl.DYNAMIC_DRAW}; ol.structs.Buffer = function(opt_arr, opt_used, opt_usage) { this.arr_ = goog.isDef(opt_arr) ? opt_arr : []; this.dirtySets_ = []; this.freeSet_ = new ol.structs.IntegerSet; var used = goog.isDef(opt_used) ? opt_used : this.arr_.length; if(used < this.arr_.length) { this.freeSet_.addRange(used, this.arr_.length) } if(ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS) { var arr = this.arr_; var n = arr.length; var i; for(i = used;i < n;++i) { arr[i] = NaN } } this.split32_ = null; this.split32DirtySet_ = null; this.usage_ = goog.isDef(opt_usage) ? opt_usage : ol.structs.BufferUsage.STATIC_DRAW }; ol.structs.Buffer.prototype.allocate = function(size) { goog.asserts.assert(size > 0); var offset = this.freeSet_.findRange(size); goog.asserts.assert(offset != -1); this.freeSet_.removeRange(offset, offset + size); return offset }; ol.structs.Buffer.prototype.add = function(values) { var size = values.length; var offset = this.allocate(size); var i; for(i = 0;i < size;++i) { this.arr_[offset + i] = values[i] } this.markDirty(size, offset); return offset }; ol.structs.Buffer.prototype.addDirtySet = function(dirtySet) { goog.asserts.assert(!goog.array.contains(this.dirtySets_, dirtySet)); this.dirtySets_.push(dirtySet) }; ol.structs.Buffer.prototype.forEachRange = function(f, opt_this) { if(this.arr_.length !== 0) { this.freeSet_.forEachRangeInverted(0, this.arr_.length, f, opt_this) } }; ol.structs.Buffer.prototype.getArray = function() { return this.arr_ }; ol.structs.Buffer.prototype.getCount = function() { return this.arr_.length - this.freeSet_.getSize() }; ol.structs.Buffer.prototype.getFreeSet = function() { return this.freeSet_ }; ol.structs.Buffer.prototype.getSplit32 = function() { var arr = this.arr_; var n = arr.length; if(goog.isNull(this.split32DirtySet_)) { this.split32DirtySet_ = new ol.structs.IntegerSet([0, n]); this.addDirtySet(this.split32DirtySet_) } if(goog.isNull(this.split32_)) { this.split32_ = new Float32Array(2 * n) } var split32 = this.split32_; this.split32DirtySet_.forEachRange(function(start, stop) { var doubleHigh, i, j, value; for(i = start, j = 2 * start;i < stop;++i, j += 2) { value = arr[i]; if(value < 0) { doubleHigh = 65536 * Math.floor(-value / 65536); split32[j] = -doubleHigh; split32[j + 1] = value + doubleHigh }else { doubleHigh = 65536 * Math.floor(value / 65536); split32[j] = doubleHigh; split32[j + 1] = value - doubleHigh } } }); this.split32DirtySet_.clear(); return this.split32_ }; ol.structs.Buffer.prototype.getUsage = function() { return this.usage_ }; ol.structs.Buffer.prototype.markDirty = function(size, offset) { var i, ii; for(i = 0, ii = this.dirtySets_.length;i < ii;++i) { this.dirtySets_[i].addRange(offset, offset + size) } }; ol.structs.Buffer.prototype.remove = function(size, offset) { var i, ii; this.freeSet_.addRange(offset, offset + size); for(i = 0, ii = this.dirtySets_.length;i < ii;++i) { this.dirtySets_[i].removeRange(offset, offset + size) } if(ol.BUFFER_REPLACE_UNUSED_ENTRIES_WITH_NANS) { var arr = this.arr_; for(i = 0;i < size;++i) { arr[offset + i] = NaN } } }; ol.structs.Buffer.prototype.removeDirtySet = function(dirtySet) { var removed = goog.array.remove(this.dirtySets_, dirtySet); goog.asserts.assert(removed) }; ol.structs.Buffer.prototype.set = function(values, offset) { var arr = this.arr_; var n = values.length; goog.asserts.assert(0 <= offset && offset + n <= arr.length); var i; for(i = 0;i < n;++i) { arr[offset + i] = values[i] } this.markDirty(n, offset) }; goog.provide("ol.renderer.webgl.Layer"); goog.require("goog.vec.Mat4"); goog.require("goog.webgl"); goog.require("ol.color.Matrix"); goog.require("ol.layer.Layer"); goog.require("ol.render.Event"); goog.require("ol.render.EventType"); goog.require("ol.render.webgl.Immediate"); goog.require("ol.renderer.Layer"); goog.require("ol.renderer.webgl.map.shader.Color"); goog.require("ol.renderer.webgl.map.shader.Default"); goog.require("ol.structs.Buffer"); ol.renderer.webgl.Layer = function(mapRenderer, layer) { goog.base(this, mapRenderer, layer); this.arrayBuffer_ = new ol.structs.Buffer([-1, -1, 0, 0, 1, -1, 1, 0, -1, 1, 0, 1, 1, 1, 1, 1]); this.texture = null; this.framebuffer = null; this.framebufferDimension = undefined; this.texCoordMatrix = goog.vec.Mat4.createNumber(); this.projectionMatrix = goog.vec.Mat4.createNumberIdentity(); this.colorMatrix_ = new ol.color.Matrix; this.colorLocations_ = null; this.defaultLocations_ = null }; goog.inherits(ol.renderer.webgl.Layer, ol.renderer.Layer); ol.renderer.webgl.Layer.prototype.bindFramebuffer = function(frameState, framebufferDimension) { var mapRenderer = this.getWebGLMapRenderer(); var gl = mapRenderer.getGL(); if(!goog.isDef(this.framebufferDimension) || this.framebufferDimension != framebufferDimension) { frameState.postRenderFunctions.push(goog.partial(function(gl, framebuffer, texture) { if(!gl.isContextLost()) { gl.deleteFramebuffer(framebuffer); gl.deleteTexture(texture) } }, gl, this.framebuffer, this.texture)); var texture = gl.createTexture(); gl.bindTexture(goog.webgl.TEXTURE_2D, texture); gl.texImage2D(goog.webgl.TEXTURE_2D, 0, goog.webgl.RGBA, framebufferDimension, framebufferDimension, 0, goog.webgl.RGBA, goog.webgl.UNSIGNED_BYTE, null); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, goog.webgl.LINEAR); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MIN_FILTER, goog.webgl.LINEAR); var framebuffer = gl.createFramebuffer(); gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, framebuffer); gl.framebufferTexture2D(goog.webgl.FRAMEBUFFER, goog.webgl.COLOR_ATTACHMENT0, goog.webgl.TEXTURE_2D, texture, 0); this.texture = texture; this.framebuffer = framebuffer; this.framebufferDimension = framebufferDimension }else { gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, this.framebuffer) } }; ol.renderer.webgl.Layer.prototype.composeFrame = function(frameState, layerState, context) { this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, context, frameState); context.bindBuffer(goog.webgl.ARRAY_BUFFER, this.arrayBuffer_); var gl = context.getGL(); var useColor = layerState.brightness || layerState.contrast != 1 || layerState.hue || layerState.saturation != 1; var fragmentShader, vertexShader; if(useColor) { fragmentShader = ol.renderer.webgl.map.shader.ColorFragment.getInstance(); vertexShader = ol.renderer.webgl.map.shader.ColorVertex.getInstance() }else { fragmentShader = ol.renderer.webgl.map.shader.DefaultFragment.getInstance(); vertexShader = ol.renderer.webgl.map.shader.DefaultVertex.getInstance() } var program = context.getProgram(fragmentShader, vertexShader); var locations; if(useColor) { if(goog.isNull(this.colorLocations_)) { locations = new ol.renderer.webgl.map.shader.Color.Locations(gl, program); this.colorLocations_ = locations }else { locations = this.colorLocations_ } }else { if(goog.isNull(this.defaultLocations_)) { locations = new ol.renderer.webgl.map.shader.Default.Locations(gl, program); this.defaultLocations_ = locations }else { locations = this.defaultLocations_ } } if(context.useProgram(program)) { gl.enableVertexAttribArray(locations.a_position); gl.vertexAttribPointer(locations.a_position, 2, goog.webgl.FLOAT, false, 16, 0); gl.enableVertexAttribArray(locations.a_texCoord); gl.vertexAttribPointer(locations.a_texCoord, 2, goog.webgl.FLOAT, false, 16, 8); gl.uniform1i(locations.u_texture, 0) } gl.uniformMatrix4fv(locations.u_texCoordMatrix, false, this.getTexCoordMatrix()); gl.uniformMatrix4fv(locations.u_projectionMatrix, false, this.getProjectionMatrix()); if(useColor) { gl.uniformMatrix4fv(locations.u_colorMatrix, false, this.colorMatrix_.getMatrix(layerState.brightness, layerState.contrast, layerState.hue, layerState.saturation)) } gl.uniform1f(locations.u_opacity, layerState.opacity); gl.bindTexture(goog.webgl.TEXTURE_2D, this.getTexture()); gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4); this.dispatchComposeEvent_(ol.render.EventType.POSTCOMPOSE, context, frameState) }; ol.renderer.webgl.Layer.prototype.dispatchComposeEvent_ = function(type, context, frameState) { var layer = this.getLayer(); if(layer.hasListener(type)) { var render = new ol.render.webgl.Immediate(context, frameState.pixelRatio); var composeEvent = new ol.render.Event(type, layer, render, frameState, null, context); layer.dispatchEvent(composeEvent) } }; ol.renderer.webgl.Layer.prototype.getWebGLMapRenderer = function() { return(this.getMapRenderer()) }; ol.renderer.webgl.Layer.prototype.getTexCoordMatrix = function() { return this.texCoordMatrix }; ol.renderer.webgl.Layer.prototype.getTexture = function() { return this.texture }; ol.renderer.webgl.Layer.prototype.getProjectionMatrix = function() { return this.projectionMatrix }; ol.renderer.webgl.Layer.prototype.handleWebGLContextLost = function() { this.texture = null; this.framebuffer = null; this.framebufferDimension = undefined }; goog.provide("ol.renderer.webgl.ImageLayer"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.vec.Mat4"); goog.require("goog.webgl"); goog.require("ol.Coordinate"); goog.require("ol.Extent"); goog.require("ol.ImageBase"); goog.require("ol.ImageState"); goog.require("ol.ViewHint"); goog.require("ol.layer.Image"); goog.require("ol.renderer.webgl.Layer"); goog.require("ol.source.Image"); ol.renderer.webgl.ImageLayer = function(mapRenderer, imageLayer) { goog.base(this, mapRenderer, imageLayer); this.image_ = null }; goog.inherits(ol.renderer.webgl.ImageLayer, ol.renderer.webgl.Layer); ol.renderer.webgl.ImageLayer.prototype.createTexture_ = function(image) { var imageElement = image.getImageElement(); var gl = this.getWebGLMapRenderer().getGL(); var texture = gl.createTexture(); gl.bindTexture(goog.webgl.TEXTURE_2D, texture); gl.texImage2D(goog.webgl.TEXTURE_2D, 0, goog.webgl.RGBA, goog.webgl.RGBA, goog.webgl.UNSIGNED_BYTE, imageElement); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_S, goog.webgl.CLAMP_TO_EDGE); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_T, goog.webgl.CLAMP_TO_EDGE); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MIN_FILTER, goog.webgl.LINEAR); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, goog.webgl.LINEAR); return texture }; ol.renderer.webgl.ImageLayer.prototype.forEachFeatureAtPixel = function(coordinate, frameState, callback, thisArg) { var layer = this.getLayer(); var source = layer.getSource(); goog.asserts.assertInstanceof(source, ol.source.Image); var extent = frameState.extent; var resolution = frameState.view2DState.resolution; var rotation = frameState.view2DState.rotation; return source.forEachFeatureAtPixel(extent, resolution, rotation, coordinate, function(feature) { return callback.call(thisArg, feature, layer) }) }; ol.renderer.webgl.ImageLayer.prototype.prepareFrame = function(frameState, layerState) { var gl = this.getWebGLMapRenderer().getGL(); var view2DState = frameState.view2DState; var viewCenter = view2DState.center; var viewResolution = view2DState.resolution; var viewRotation = view2DState.rotation; var image = this.image_; var texture = this.texture; var imageLayer = this.getLayer(); goog.asserts.assertInstanceof(imageLayer, ol.layer.Image); var imageSource = imageLayer.getSource(); goog.asserts.assertInstanceof(imageSource, ol.source.Image); var hints = frameState.viewHints; if(!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) { var image_ = imageSource.getImage(frameState.extent, viewResolution, frameState.pixelRatio, view2DState.projection); if(!goog.isNull(image_)) { var imageState = image_.getState(); if(imageState == ol.ImageState.IDLE) { goog.events.listenOnce(image_, goog.events.EventType.CHANGE, this.handleImageChange, false, this); image_.load() }else { if(imageState == ol.ImageState.LOADED) { image = image_; texture = this.createTexture_(image_); if(!goog.isNull(this.texture)) { frameState.postRenderFunctions.push(goog.partial(function(gl, texture) { if(!gl.isContextLost()) { gl.deleteTexture(texture) } }, gl, this.texture)) } } } } } if(!goog.isNull(image)) { goog.asserts.assert(!goog.isNull(texture)); var canvas = this.getWebGLMapRenderer().getContext().getCanvas(); this.updateProjectionMatrix_(canvas.width, canvas.height, viewCenter, viewResolution, viewRotation, image.getExtent()); var texCoordMatrix = this.texCoordMatrix; goog.vec.Mat4.makeIdentity(texCoordMatrix); goog.vec.Mat4.scale(texCoordMatrix, 1, -1, 1); goog.vec.Mat4.translate(texCoordMatrix, 0, -1, 0); this.image_ = image; this.texture = texture; this.updateAttributions(frameState.attributions, image.getAttributions()); this.updateLogos(frameState, imageSource) } }; ol.renderer.webgl.ImageLayer.prototype.updateProjectionMatrix_ = function(canvasWidth, canvasHeight, viewCenter, viewResolution, viewRotation, imageExtent) { var canvasExtentWidth = canvasWidth * viewResolution; var canvasExtentHeight = canvasHeight * viewResolution; var projectionMatrix = this.projectionMatrix; goog.vec.Mat4.makeIdentity(projectionMatrix); goog.vec.Mat4.scale(projectionMatrix, 2 / canvasExtentWidth, 2 / canvasExtentHeight, 1); goog.vec.Mat4.rotateZ(projectionMatrix, -viewRotation); goog.vec.Mat4.translate(projectionMatrix, imageExtent[0] - viewCenter[0], imageExtent[1] - viewCenter[1], 0); goog.vec.Mat4.scale(projectionMatrix, (imageExtent[2] - imageExtent[0]) / 2, (imageExtent[3] - imageExtent[1]) / 2, 1); goog.vec.Mat4.translate(projectionMatrix, 1, 1, 0) }; goog.provide("ol.renderer.webgl.tilelayer.shader"); goog.require("ol.webgl.shader"); ol.renderer.webgl.tilelayer.shader.Fragment = function() { goog.base(this, ol.renderer.webgl.tilelayer.shader.Fragment.SOURCE) }; goog.inherits(ol.renderer.webgl.tilelayer.shader.Fragment, ol.webgl.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Fragment); ol.renderer.webgl.tilelayer.shader.Fragment.DEBUG_SOURCE = "precision mediump float;\nvarying vec2 v_texCoord;\n\n\nuniform sampler2D u_texture;\n\nvoid main(void) {\n gl_FragColor \x3d texture2D(u_texture, v_texCoord);\n}\n"; ol.renderer.webgl.tilelayer.shader.Fragment.OPTIMIZED_SOURCE = "precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor\x3dtexture2D(e,a);}"; ol.renderer.webgl.tilelayer.shader.Fragment.SOURCE = goog.DEBUG ? ol.renderer.webgl.tilelayer.shader.Fragment.DEBUG_SOURCE : ol.renderer.webgl.tilelayer.shader.Fragment.OPTIMIZED_SOURCE; ol.renderer.webgl.tilelayer.shader.Vertex = function() { goog.base(this, ol.renderer.webgl.tilelayer.shader.Vertex.SOURCE) }; goog.inherits(ol.renderer.webgl.tilelayer.shader.Vertex, ol.webgl.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Vertex); ol.renderer.webgl.tilelayer.shader.Vertex.DEBUG_SOURCE = "varying vec2 v_texCoord;\n\n\nattribute vec2 a_position;\nattribute vec2 a_texCoord;\nuniform vec4 u_tileOffset;\n\nvoid main(void) {\n gl_Position \x3d vec4(a_position * u_tileOffset.xy + u_tileOffset.zw, 0., 1.);\n v_texCoord \x3d a_texCoord;\n}\n\n\n"; ol.renderer.webgl.tilelayer.shader.Vertex.OPTIMIZED_SOURCE = "varying vec2 a;attribute vec2 b;attribute vec2 c;uniform vec4 d;void main(void){gl_Position\x3dvec4(b*d.xy+d.zw,0.,1.);a\x3dc;}"; ol.renderer.webgl.tilelayer.shader.Vertex.SOURCE = goog.DEBUG ? ol.renderer.webgl.tilelayer.shader.Vertex.DEBUG_SOURCE : ol.renderer.webgl.tilelayer.shader.Vertex.OPTIMIZED_SOURCE; ol.renderer.webgl.tilelayer.shader.Locations = function(gl, program) { this.u_texture = gl.getUniformLocation(program, goog.DEBUG ? "u_texture" : "e"); this.u_tileOffset = gl.getUniformLocation(program, goog.DEBUG ? "u_tileOffset" : "d"); this.a_position = gl.getAttribLocation(program, goog.DEBUG ? "a_position" : "b"); this.a_texCoord = gl.getAttribLocation(program, goog.DEBUG ? "a_texCoord" : "c") }; goog.provide("ol.renderer.webgl.TileLayer"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("goog.vec.Mat4"); goog.require("goog.vec.Vec4"); goog.require("goog.webgl"); goog.require("ol.Tile"); goog.require("ol.TileRange"); goog.require("ol.TileState"); goog.require("ol.extent"); goog.require("ol.layer.Tile"); goog.require("ol.math"); goog.require("ol.renderer.webgl.Layer"); goog.require("ol.renderer.webgl.tilelayer.shader"); goog.require("ol.source.Tile"); goog.require("ol.structs.Buffer"); ol.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) { goog.base(this, mapRenderer, tileLayer); this.fragmentShader_ = ol.renderer.webgl.tilelayer.shader.Fragment.getInstance(); this.vertexShader_ = ol.renderer.webgl.tilelayer.shader.Vertex.getInstance(); this.locations_ = null; this.renderArrayBuffer_ = new ol.structs.Buffer([0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0]); this.renderedTileRange_ = null; this.renderedFramebufferExtent_ = null; this.renderedRevision_ = -1 }; goog.inherits(ol.renderer.webgl.TileLayer, ol.renderer.webgl.Layer); ol.renderer.webgl.TileLayer.prototype.disposeInternal = function() { var mapRenderer = this.getWebGLMapRenderer(); var context = mapRenderer.getContext(); context.deleteBuffer(this.renderArrayBuffer_); goog.base(this, "disposeInternal") }; ol.renderer.webgl.TileLayer.prototype.handleWebGLContextLost = function() { goog.base(this, "handleWebGLContextLost"); this.locations_ = null }; ol.renderer.webgl.TileLayer.prototype.prepareFrame = function(frameState, layerState) { var mapRenderer = this.getWebGLMapRenderer(); var context = mapRenderer.getContext(); var gl = mapRenderer.getGL(); var view2DState = frameState.view2DState; var projection = view2DState.projection; var tileLayer = this.getLayer(); goog.asserts.assertInstanceof(tileLayer, ol.layer.Tile); var tileSource = tileLayer.getSource(); goog.asserts.assertInstanceof(tileSource, ol.source.Tile); var tileGrid = tileSource.getTileGridForProjection(projection); var z = tileGrid.getZForResolution(view2DState.resolution); var tileResolution = tileGrid.getResolution(z); var tilePixelSize = tileSource.getTilePixelSize(z, frameState.pixelRatio, projection); var pixelRatio = tilePixelSize / tileGrid.getTileSize(z); var tilePixelResolution = tileResolution / pixelRatio; var tileGutter = tileSource.getGutter(); var center = view2DState.center; var extent; if(tileResolution == view2DState.resolution) { center = this.snapCenterToPixel(center, tileResolution, frameState.size); extent = ol.extent.getForView2DAndSize(center, tileResolution, view2DState.rotation, frameState.size) }else { extent = frameState.extent } var tileRange = tileGrid.getTileRangeForExtentAndResolution(extent, tileResolution); var framebufferExtent; if(!goog.isNull(this.renderedTileRange_) && this.renderedTileRange_.equals(tileRange) && this.renderedRevision_ == tileSource.getRevision()) { framebufferExtent = this.renderedFramebufferExtent_ }else { var tileRangeSize = tileRange.getSize(); var maxDimension = Math.max(tileRangeSize[0] * tilePixelSize, tileRangeSize[1] * tilePixelSize); var framebufferDimension = ol.math.roundUpToPowerOfTwo(maxDimension); var framebufferExtentDimension = tilePixelResolution * framebufferDimension; var origin = tileGrid.getOrigin(z); var minX = origin[0] + tileRange.minX * tilePixelSize * tilePixelResolution; var minY = origin[1] + tileRange.minY * tilePixelSize * tilePixelResolution; framebufferExtent = [minX, minY, minX + framebufferExtentDimension, minY + framebufferExtentDimension]; this.bindFramebuffer(frameState, framebufferDimension); gl.viewport(0, 0, framebufferDimension, framebufferDimension); gl.clearColor(0, 0, 0, 0); gl.clear(goog.webgl.COLOR_BUFFER_BIT); gl.disable(goog.webgl.BLEND); var program = context.getProgram(this.fragmentShader_, this.vertexShader_); context.useProgram(program); if(goog.isNull(this.locations_)) { this.locations_ = new ol.renderer.webgl.tilelayer.shader.Locations(gl, program) } context.bindBuffer(goog.webgl.ARRAY_BUFFER, this.renderArrayBuffer_); gl.enableVertexAttribArray(this.locations_.a_position); gl.vertexAttribPointer(this.locations_.a_position, 2, goog.webgl.FLOAT, false, 16, 0); gl.enableVertexAttribArray(this.locations_.a_texCoord); gl.vertexAttribPointer(this.locations_.a_texCoord, 2, goog.webgl.FLOAT, false, 16, 8); gl.uniform1i(this.locations_.u_texture, 0); var tilesToDrawByZ = {}; tilesToDrawByZ[z] = {}; var getTileIfLoaded = this.createGetTileIfLoadedFunction(function(tile) { return!goog.isNull(tile) && tile.getState() == ol.TileState.LOADED && mapRenderer.isTileTextureLoaded(tile) }, tileSource, pixelRatio, projection); var findLoadedTiles = goog.bind(tileSource.findLoadedTiles, tileSource, tilesToDrawByZ, getTileIfLoaded); var useInterimTilesOnError = tileLayer.getUseInterimTilesOnError(); if(!goog.isDef(useInterimTilesOnError)) { useInterimTilesOnError = true } var allTilesLoaded = true; var tmpExtent = ol.extent.createEmpty(); var tmpTileRange = new ol.TileRange(0, 0, 0, 0); var childTileRange, fullyLoaded, tile, tileState, x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { tile = tileSource.getTile(z, x, y, pixelRatio, projection); tileState = tile.getState(); if(tileState == ol.TileState.LOADED) { if(mapRenderer.isTileTextureLoaded(tile)) { tilesToDrawByZ[z][tile.tileCoord.toString()] = tile; continue } }else { if(tileState == ol.TileState.EMPTY || tileState == ol.TileState.ERROR && !useInterimTilesOnError) { continue } } allTilesLoaded = false; fullyLoaded = tileGrid.forEachTileCoordParentTileRange(tile.tileCoord, findLoadedTiles, null, tmpTileRange, tmpExtent); if(!fullyLoaded) { childTileRange = tileGrid.getTileCoordChildTileRange(tile.tileCoord, tmpTileRange, tmpExtent); if(!goog.isNull(childTileRange)) { findLoadedTiles(z + 1, childTileRange) } } } } var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); goog.array.sort(zs); var u_tileOffset = goog.vec.Vec4.createFloat32(); var i, ii, sx, sy, tileExtent, tileKey, tilesToDraw, tx, ty; for(i = 0, ii = zs.length;i < ii;++i) { tilesToDraw = tilesToDrawByZ[zs[i]]; for(tileKey in tilesToDraw) { tile = tilesToDraw[tileKey]; tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent); sx = 2 * (tileExtent[2] - tileExtent[0]) / framebufferExtentDimension; sy = 2 * (tileExtent[3] - tileExtent[1]) / framebufferExtentDimension; tx = 2 * (tileExtent[0] - framebufferExtent[0]) / framebufferExtentDimension - 1; ty = 2 * (tileExtent[1] - framebufferExtent[1]) / framebufferExtentDimension - 1; goog.vec.Vec4.setFromValues(u_tileOffset, sx, sy, tx, ty); gl.uniform4fv(this.locations_.u_tileOffset, u_tileOffset); mapRenderer.bindTileTexture(tile, tilePixelSize, tileGutter * pixelRatio, goog.webgl.LINEAR, goog.webgl.LINEAR); gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4) } } if(allTilesLoaded) { this.renderedTileRange_ = tileRange; this.renderedFramebufferExtent_ = framebufferExtent; this.renderedRevision_ = tileSource.getRevision() }else { this.renderedTileRange_ = null; this.renderedFramebufferExtent_ = null; this.renderedRevision_ = -1; frameState.animate = true } } this.updateUsedTiles(frameState.usedTiles, tileSource, z, tileRange); var tileTextureQueue = mapRenderer.getTileTextureQueue(); this.manageTilePyramid(frameState, tileSource, tileGrid, pixelRatio, projection, extent, z, tileLayer.getPreload(), function(tile) { if(tile.getState() == ol.TileState.LOADED && !mapRenderer.isTileTextureLoaded(tile) && !tileTextureQueue.isKeyQueued(tile.getKey())) { tileTextureQueue.enqueue([tile, tileGrid.getTileCoordCenter(tile.tileCoord), tileGrid.getResolution(tile.tileCoord.z), tilePixelSize, tileGutter * pixelRatio]) } }, this); this.scheduleExpireCache(frameState, tileSource); this.updateLogos(frameState, tileSource); var texCoordMatrix = this.texCoordMatrix; goog.vec.Mat4.makeIdentity(texCoordMatrix); goog.vec.Mat4.translate(texCoordMatrix, (center[0] - framebufferExtent[0]) / (framebufferExtent[2] - framebufferExtent[0]), (center[1] - framebufferExtent[1]) / (framebufferExtent[3] - framebufferExtent[1]), 0); if(view2DState.rotation !== 0) { goog.vec.Mat4.rotateZ(texCoordMatrix, view2DState.rotation) } goog.vec.Mat4.scale(texCoordMatrix, frameState.size[0] * view2DState.resolution / (framebufferExtent[2] - framebufferExtent[0]), frameState.size[1] * view2DState.resolution / (framebufferExtent[3] - framebufferExtent[1]), 1); goog.vec.Mat4.translate(texCoordMatrix, -0.5, -0.5, 0) }; goog.provide("ol.structs.LRUCache"); goog.require("goog.asserts"); goog.require("goog.object"); ol.structs.LRUCache = function() { this.count_ = 0; this.entries_ = {}; this.oldest_ = null; this.newest_ = null }; ol.structs.LRUCache.prototype.assertValid = function() { if(this.count_ === 0) { goog.asserts.assert(goog.object.isEmpty(this.entries_)); goog.asserts.assert(goog.isNull(this.oldest_)); goog.asserts.assert(goog.isNull(this.newest_)) }else { goog.asserts.assert(goog.object.getCount(this.entries_) == this.count_); goog.asserts.assert(!goog.isNull(this.oldest_)); goog.asserts.assert(goog.isNull(this.oldest_.older)); goog.asserts.assert(!goog.isNull(this.newest_)); goog.asserts.assert(goog.isNull(this.newest_.newer)); var i, entry; var older = null; i = 0; for(entry = this.oldest_;!goog.isNull(entry);entry = entry.newer) { goog.asserts.assert(entry.older === older); older = entry; ++i } goog.asserts.assert(i == this.count_); var newer = null; i = 0; for(entry = this.newest_;!goog.isNull(entry);entry = entry.older) { goog.asserts.assert(entry.newer === newer); newer = entry; ++i } goog.asserts.assert(i == this.count_) } }; ol.structs.LRUCache.prototype.clear = function() { this.count_ = 0; this.entries_ = {}; this.oldest_ = null; this.newest_ = null }; ol.structs.LRUCache.prototype.containsKey = function(key) { return this.entries_.hasOwnProperty(key) }; ol.structs.LRUCache.prototype.forEach = function(f, opt_this) { var entry = this.oldest_; while(!goog.isNull(entry)) { f.call(opt_this, entry.value_, entry.key_, this); entry = entry.newer } }; ol.structs.LRUCache.prototype.get = function(key) { var entry = this.entries_[key]; goog.asserts.assert(goog.isDef(entry)); if(entry === this.newest_) { return entry.value_ }else { if(entry === this.oldest_) { this.oldest_ = this.oldest_.newer; this.oldest_.older = null }else { entry.newer.older = entry.older; entry.older.newer = entry.newer } } entry.newer = null; entry.older = this.newest_; this.newest_.newer = entry; this.newest_ = entry; return entry.value_ }; ol.structs.LRUCache.prototype.getCount = function() { return this.count_ }; ol.structs.LRUCache.prototype.getKeys = function() { var keys = new Array(this.count_); var i = 0; var entry; for(entry = this.newest_;!goog.isNull(entry);entry = entry.older) { keys[i++] = entry.key_ } goog.asserts.assert(i == this.count_); return keys }; ol.structs.LRUCache.prototype.getValues = function() { var values = new Array(this.count_); var i = 0; var entry; for(entry = this.newest_;!goog.isNull(entry);entry = entry.older) { values[i++] = entry.value_ } goog.asserts.assert(i == this.count_); return values }; ol.structs.LRUCache.prototype.peekLast = function() { goog.asserts.assert(!goog.isNull(this.oldest_)); return this.oldest_.value_ }; ol.structs.LRUCache.prototype.peekLastKey = function() { goog.asserts.assert(!goog.isNull(this.oldest_)); return this.oldest_.key_ }; ol.structs.LRUCache.prototype.pop = function() { goog.asserts.assert(!goog.isNull(this.oldest_)); goog.asserts.assert(!goog.isNull(this.newest_)); var entry = this.oldest_; goog.asserts.assert(entry.key_ in this.entries_); delete this.entries_[entry.key_]; if(!goog.isNull(entry.newer)) { entry.newer.older = null } this.oldest_ = entry.newer; if(goog.isNull(this.oldest_)) { this.newest_ = null } --this.count_; return entry.value_ }; ol.structs.LRUCache.prototype.set = function(key, value) { goog.asserts.assert(!(key in {})); goog.asserts.assert(!(key in this.entries_)); var entry = {key_:key, newer:null, older:this.newest_, value_:value}; if(goog.isNull(this.newest_)) { this.oldest_ = entry }else { this.newest_.newer = entry } this.newest_ = entry; this.entries_[key] = entry; ++this.count_ }; ol.structs.LRUCacheEntry; goog.provide("ol.webgl.Context"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.log"); goog.require("goog.object"); goog.require("ol.structs.Buffer"); goog.require("ol.structs.IntegerSet"); goog.require("ol.webgl.WebGLContextEventType"); ol.webgl.BufferCacheEntry; ol.webgl.Context = function(canvas, gl) { this.canvas_ = canvas; this.gl_ = gl; this.bufferCache_ = {}; this.shaderCache_ = {}; this.programCache_ = {}; this.currentProgram_ = null; goog.events.listen(this.canvas_, ol.webgl.WebGLContextEventType.LOST, this.handleWebGLContextLost, false, this); goog.events.listen(this.canvas_, ol.webgl.WebGLContextEventType.RESTORED, this.handleWebGLContextRestored, false, this) }; ol.webgl.Context.prototype.bindBuffer = function(target, buf) { var gl = this.getGL(); var arr = buf.getArray(); var bufferKey = goog.getUid(buf); if(bufferKey in this.bufferCache_) { var bufferCacheEntry = this.bufferCache_[bufferKey]; gl.bindBuffer(target, bufferCacheEntry.buffer); bufferCacheEntry.dirtySet.forEachRange(function(start, stop) { var slice = arr.slice(start, stop); gl.bufferSubData(target, start, target == goog.webgl.ARRAY_BUFFER ? new Float32Array(slice) : new Uint16Array(slice)) }); bufferCacheEntry.dirtySet.clear() }else { var buffer = gl.createBuffer(); gl.bindBuffer(target, buffer); gl.bufferData(target, target == goog.webgl.ARRAY_BUFFER ? new Float32Array(arr) : new Uint16Array(arr), buf.getUsage()); var dirtySet = new ol.structs.IntegerSet; buf.addDirtySet(dirtySet); this.bufferCache_[bufferKey] = {buf:buf, buffer:buffer, dirtySet:dirtySet} } }; ol.webgl.Context.prototype.deleteBuffer = function(buf) { var gl = this.getGL(); var bufferKey = goog.getUid(buf); goog.asserts.assert(bufferKey in this.bufferCache_); var bufferCacheEntry = this.bufferCache_[bufferKey]; bufferCacheEntry.buf.removeDirtySet(bufferCacheEntry.dirtySet); if(!gl.isContextLost()) { gl.deleteBuffer(bufferCacheEntry.buffer) } delete this.bufferCache_[bufferKey] }; ol.webgl.Context.prototype.disposeInternal = function() { goog.object.forEach(this.bufferCache_, function(bufferCacheEntry) { bufferCacheEntry.buf.removeDirtySet(bufferCacheEntry.dirtySet) }); var gl = this.getGL(); if(!gl.isContextLost()) { goog.object.forEach(this.bufferCache_, function(bufferCacheEntry) { gl.deleteBuffer(bufferCacheEntry.buffer) }); goog.object.forEach(this.programCache_, function(program) { gl.deleteProgram(program) }); goog.object.forEach(this.shaderCache_, function(shader) { gl.deleteShader(shader) }) } }; ol.webgl.Context.prototype.getCanvas = function() { return this.canvas_ }; ol.webgl.Context.prototype.getGL = function() { return this.gl_ }; ol.webgl.Context.prototype.getShader = function(shaderObject) { var shaderKey = goog.getUid(shaderObject); if(shaderKey in this.shaderCache_) { return this.shaderCache_[shaderKey] }else { var gl = this.getGL(); var shader = gl.createShader(shaderObject.getType()); gl.shaderSource(shader, shaderObject.getSource()); gl.compileShader(shader); if(goog.DEBUG) { if(!gl.getShaderParameter(shader, goog.webgl.COMPILE_STATUS) && !gl.isContextLost()) { goog.log.error(this.logger_, gl.getShaderInfoLog(shader)) } } goog.asserts.assert(gl.getShaderParameter(shader, goog.webgl.COMPILE_STATUS) || gl.isContextLost()); this.shaderCache_[shaderKey] = shader; return shader } }; ol.webgl.Context.prototype.getProgram = function(fragmentShaderObject, vertexShaderObject) { var programKey = goog.getUid(fragmentShaderObject) + "/" + goog.getUid(vertexShaderObject); if(programKey in this.programCache_) { return this.programCache_[programKey] }else { var gl = this.getGL(); var program = gl.createProgram(); gl.attachShader(program, this.getShader(fragmentShaderObject)); gl.attachShader(program, this.getShader(vertexShaderObject)); gl.linkProgram(program); if(goog.DEBUG) { if(!gl.getProgramParameter(program, goog.webgl.LINK_STATUS) && !gl.isContextLost()) { goog.log.error(this.logger_, gl.getProgramInfoLog(program)) } } goog.asserts.assert(gl.getProgramParameter(program, goog.webgl.LINK_STATUS) || gl.isContextLost()); this.programCache_[programKey] = program; return program } }; ol.webgl.Context.prototype.handleWebGLContextLost = function() { goog.object.clear(this.bufferCache_); goog.object.clear(this.shaderCache_); goog.object.clear(this.programCache_); this.currentProgram_ = null }; ol.webgl.Context.prototype.handleWebGLContextRestored = function() { }; ol.webgl.Context.prototype.useProgram = function(program) { if(program == this.currentProgram_) { return false }else { var gl = this.getGL(); gl.useProgram(program); this.currentProgram_ = program; return true } }; ol.webgl.Context.prototype.logger_ = goog.log.getLogger("ol.webgl.Context"); goog.provide("ol.renderer.webgl.Map"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.log"); goog.require("goog.log.Logger"); goog.require("goog.object"); goog.require("goog.style"); goog.require("goog.webgl"); goog.require("ol"); goog.require("ol.Tile"); goog.require("ol.css"); goog.require("ol.dom"); goog.require("ol.layer.Image"); goog.require("ol.layer.Tile"); goog.require("ol.render.Event"); goog.require("ol.render.EventType"); goog.require("ol.render.webgl.Immediate"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.webgl.ImageLayer"); goog.require("ol.renderer.webgl.Layer"); goog.require("ol.renderer.webgl.TileLayer"); goog.require("ol.source.State"); goog.require("ol.structs.LRUCache"); goog.require("ol.structs.PriorityQueue"); goog.require("ol.webgl"); goog.require("ol.webgl.Context"); goog.require("ol.webgl.WebGLContextEventType"); ol.renderer.webgl.TextureCacheEntry; ol.renderer.webgl.Map = function(container, map) { goog.base(this, container, map); this.canvas_ = (goog.dom.createElement(goog.dom.TagName.CANVAS)); this.canvas_.style.width = "100%"; this.canvas_.style.height = "100%"; this.canvas_.className = ol.css.CLASS_UNSELECTABLE; goog.dom.insertChildAt(container, this.canvas_, 0); this.clipTileCanvasSize_ = 0; this.clipTileContext_ = ol.dom.createCanvasContext2D(); this.renderedVisible_ = true; this.gl_ = ol.webgl.getContext(this.canvas_, {antialias:true, depth:false, failIfMajorPerformanceCaveat:true, preserveDrawingBuffer:false, stencil:true}); goog.asserts.assert(!goog.isNull(this.gl_)); this.context_ = new ol.webgl.Context(this.canvas_, this.gl_); goog.events.listen(this.canvas_, ol.webgl.WebGLContextEventType.LOST, this.handleWebGLContextLost, false, this); goog.events.listen(this.canvas_, ol.webgl.WebGLContextEventType.RESTORED, this.handleWebGLContextRestored, false, this); this.textureCache_ = new ol.structs.LRUCache; this.focus_ = null; this.tileTextureQueue_ = new ol.structs.PriorityQueue(goog.bind(function(element) { var tileCenter = (element[1]); var tileResolution = (element[2]); var deltaX = tileCenter[0] - this.focus_[0]; var deltaY = tileCenter[1] - this.focus_[1]; return 65536 * Math.log(tileResolution) + Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution }, this), function(element) { return(element[0]).getKey() }); this.loadNextTileTexture_ = goog.bind(function(map, frameState) { if(!this.tileTextureQueue_.isEmpty()) { this.tileTextureQueue_.reprioritize(); var element = this.tileTextureQueue_.dequeue(); var tile = (element[0]); var tileSize = (element[3]); var tileGutter = (element[4]); this.bindTileTexture(tile, tileSize, tileGutter, goog.webgl.LINEAR, goog.webgl.LINEAR) } }, this); this.textureCacheFrameMarkerCount_ = 0; this.initializeGL_() }; goog.inherits(ol.renderer.webgl.Map, ol.renderer.Map); ol.renderer.webgl.Map.prototype.bindTileTexture = function(tile, tileSize, tileGutter, magFilter, minFilter) { var gl = this.getGL(); var tileKey = tile.getKey(); if(this.textureCache_.containsKey(tileKey)) { var textureCacheEntry = (this.textureCache_.get(tileKey)); gl.bindTexture(goog.webgl.TEXTURE_2D, textureCacheEntry.texture); if(textureCacheEntry.magFilter != magFilter) { gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, magFilter); textureCacheEntry.magFilter = magFilter } if(textureCacheEntry.minFilter != minFilter) { gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, minFilter); textureCacheEntry.minFilter = minFilter } }else { var texture = gl.createTexture(); gl.bindTexture(goog.webgl.TEXTURE_2D, texture); if(tileGutter > 0) { var clipTileCanvas = this.clipTileContext_.canvas; var clipTileContext = this.clipTileContext_; if(this.clipTileCanvasSize_ != tileSize) { clipTileCanvas.width = tileSize; clipTileCanvas.height = tileSize; this.clipTileCanvasSize_ = tileSize }else { clipTileContext.clearRect(0, 0, tileSize, tileSize) } clipTileContext.drawImage(tile.getImage(), tileGutter, tileGutter, tileSize, tileSize, 0, 0, tileSize, tileSize); gl.texImage2D(goog.webgl.TEXTURE_2D, 0, goog.webgl.RGBA, goog.webgl.RGBA, goog.webgl.UNSIGNED_BYTE, clipTileCanvas) }else { gl.texImage2D(goog.webgl.TEXTURE_2D, 0, goog.webgl.RGBA, goog.webgl.RGBA, goog.webgl.UNSIGNED_BYTE, tile.getImage()) } gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, magFilter); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MIN_FILTER, minFilter); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_S, goog.webgl.CLAMP_TO_EDGE); gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_T, goog.webgl.CLAMP_TO_EDGE); this.textureCache_.set(tileKey, {texture:texture, magFilter:magFilter, minFilter:minFilter}) } }; ol.renderer.webgl.Map.prototype.createLayerRenderer = function(layer) { if(ol.ENABLE_IMAGE && layer instanceof ol.layer.Image) { return new ol.renderer.webgl.ImageLayer(this, layer) }else { if(ol.ENABLE_TILE && layer instanceof ol.layer.Tile) { return new ol.renderer.webgl.TileLayer(this, layer) }else { goog.asserts.fail(); return null } } }; ol.renderer.webgl.Map.prototype.dispatchComposeEvent_ = function(type, frameState) { var map = this.getMap(); if(map.hasListener(type)) { var context = this.getContext(); var render = new ol.render.webgl.Immediate(context, frameState.pixelRatio); var composeEvent = new ol.render.Event(type, map, render, frameState, null, context); map.dispatchEvent(composeEvent) } }; ol.renderer.webgl.Map.prototype.disposeInternal = function() { var gl = this.getGL(); if(!gl.isContextLost()) { this.textureCache_.forEach(function(textureCacheEntry) { if(!goog.isNull(textureCacheEntry)) { gl.deleteTexture(textureCacheEntry.texture) } }) } goog.dispose(this.context_); goog.base(this, "disposeInternal") }; ol.renderer.webgl.Map.prototype.expireCache_ = function(map, frameState) { var gl = this.getGL(); var textureCacheEntry; while(this.textureCache_.getCount() - this.textureCacheFrameMarkerCount_ > ol.WEBGL_TEXTURE_CACHE_HIGH_WATER_MARK) { textureCacheEntry = (this.textureCache_.peekLast()); if(goog.isNull(textureCacheEntry)) { if(+this.textureCache_.peekLastKey() == frameState.index) { break }else { --this.textureCacheFrameMarkerCount_ } }else { gl.deleteTexture(textureCacheEntry.texture) } this.textureCache_.pop() } }; ol.renderer.webgl.Map.prototype.getContext = function() { return this.context_ }; ol.renderer.webgl.Map.prototype.getGL = function() { return this.gl_ }; ol.renderer.webgl.Map.prototype.getTileTextureQueue = function() { return this.tileTextureQueue_ }; ol.renderer.webgl.Map.prototype.handleWebGLContextLost = function(event) { event.preventDefault(); this.textureCache_.clear(); this.textureCacheFrameMarkerCount_ = 0; goog.object.forEach(this.getLayerRenderers(), function(layerRenderer, key, object) { goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer); var webGLLayerRenderer = (layerRenderer); webGLLayerRenderer.handleWebGLContextLost() }) }; ol.renderer.webgl.Map.prototype.handleWebGLContextRestored = function() { this.initializeGL_(); this.getMap().render() }; ol.renderer.webgl.Map.prototype.initializeGL_ = function() { var gl = this.gl_; gl.activeTexture(goog.webgl.TEXTURE0); gl.blendFuncSeparate(goog.webgl.SRC_ALPHA, goog.webgl.ONE_MINUS_SRC_ALPHA, goog.webgl.ONE, goog.webgl.ONE_MINUS_SRC_ALPHA); gl.disable(goog.webgl.CULL_FACE); gl.disable(goog.webgl.DEPTH_TEST); gl.disable(goog.webgl.SCISSOR_TEST); gl.disable(goog.webgl.STENCIL_TEST) }; ol.renderer.webgl.Map.prototype.isTileTextureLoaded = function(tile) { return this.textureCache_.containsKey(tile.getKey()) }; ol.renderer.webgl.Map.prototype.logger_ = goog.log.getLogger("ol.renderer.webgl.Map"); ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) { var context = this.getContext(); var gl = this.getGL(); if(gl.isContextLost()) { return false } if(goog.isNull(frameState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.canvas_, false); this.renderedVisible_ = false } return false } this.focus_ = frameState.focus; this.textureCache_.set((-frameState.index).toString(), null); ++this.textureCacheFrameMarkerCount_; var layerStatesToDraw = []; var layerStatesArray = frameState.layerStatesArray; var viewResolution = frameState.view2DState.resolution; var i, ii, layerState; for(i = 0, ii = layerStatesArray.length;i < ii;++i) { layerState = layerStatesArray[i]; if(layerState.visible && layerState.sourceState == ol.source.State.READY && viewResolution < layerState.maxResolution && viewResolution >= layerState.minResolution) { layerStatesToDraw.push(layerState) } } var layerRenderer; for(i = 0, ii = layerStatesToDraw.length;i < ii;++i) { layerState = layerStatesToDraw[i]; layerRenderer = this.getLayerRenderer(layerState.layer); goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer); layerRenderer.prepareFrame(frameState, layerState) } var width = frameState.size[0] * frameState.pixelRatio; var height = frameState.size[1] * frameState.pixelRatio; if(this.canvas_.width != width || this.canvas_.height != height) { this.canvas_.width = width; this.canvas_.height = height } gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, null); gl.clearColor(0, 0, 0, 0); gl.clear(goog.webgl.COLOR_BUFFER_BIT); gl.enable(goog.webgl.BLEND); gl.viewport(0, 0, this.canvas_.width, this.canvas_.height); this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState); for(i = 0, ii = layerStatesToDraw.length;i < ii;++i) { layerState = layerStatesToDraw[i]; layerRenderer = this.getLayerRenderer(layerState.layer); goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer); layerRenderer.composeFrame(frameState, layerState, context) } if(!this.renderedVisible_) { goog.style.setElementShown(this.canvas_, true); this.renderedVisible_ = true } this.calculateMatrices2D(frameState); if(this.textureCache_.getCount() - this.textureCacheFrameMarkerCount_ > ol.WEBGL_TEXTURE_CACHE_HIGH_WATER_MARK) { frameState.postRenderFunctions.push(goog.bind(this.expireCache_, this)) } if(!this.tileTextureQueue_.isEmpty()) { frameState.postRenderFunctions.push(this.loadNextTileTexture_); frameState.animate = true } this.dispatchComposeEvent_(ol.render.EventType.POSTCOMPOSE, frameState); this.scheduleRemoveUnusedLayerRenderers(frameState); this.scheduleExpireIconCache(frameState) }; goog.provide("ol.Map"); goog.provide("ol.MapProperty"); goog.require("goog.Uri.QueryData"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.async.AnimationDelay"); goog.require("goog.async.nextTick"); goog.require("goog.debug.Console"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.dom.ViewportSizeMonitor"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.Event"); goog.require("goog.events.EventType"); goog.require("goog.events.KeyHandler"); goog.require("goog.events.KeyHandler.EventType"); goog.require("goog.events.MouseWheelHandler"); goog.require("goog.events.MouseWheelHandler.EventType"); goog.require("goog.log"); goog.require("goog.log.Level"); goog.require("goog.object"); goog.require("goog.style"); goog.require("goog.vec.Mat4"); goog.require("ol.BrowserFeature"); goog.require("ol.Collection"); goog.require("ol.CollectionEventType"); goog.require("ol.IView"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.MapBrowserEventHandler"); goog.require("ol.MapEvent"); goog.require("ol.MapEventType"); goog.require("ol.Object"); goog.require("ol.ObjectEvent"); goog.require("ol.ObjectEventType"); goog.require("ol.Pixel"); goog.require("ol.PostRenderFunction"); goog.require("ol.PreRenderFunction"); goog.require("ol.Size"); goog.require("ol.Tile"); goog.require("ol.TileQueue"); goog.require("ol.View"); goog.require("ol.View2D"); goog.require("ol.ViewHint"); goog.require("ol.control"); goog.require("ol.extent"); goog.require("ol.interaction"); goog.require("ol.layer.Base"); goog.require("ol.layer.Group"); goog.require("ol.proj"); goog.require("ol.proj.common"); goog.require("ol.renderer.Map"); goog.require("ol.renderer.canvas.Map"); goog.require("ol.renderer.dom.Map"); goog.require("ol.renderer.webgl.Map"); goog.require("ol.structs.PriorityQueue"); goog.require("ol.vec.Mat4"); ol.OL3_URL = "http://ol3js.org/"; ol.OL3_LOGO_URL = "data:image/png;base64," + "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBI" + "WXMAAAHGAAABxgEXwfpGAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAA" + "AhNQTFRF////AP//AICAgP//AFVVQECA////K1VVSbbbYL/fJ05idsTYJFtbbcjbJllmZszW" + "WMTOIFhoHlNiZszTa9DdUcHNHlNlV8XRIVdiasrUHlZjIVZjaMnVH1RlIFRkH1RkH1ZlasvY" + "asvXVsPQH1VkacnVa8vWIVZjIFRjVMPQa8rXIVVkXsXRsNveIFVkIFZlIVVj3eDeh6GmbMvX" + "H1ZkIFRka8rWbMvXIFVkIFVjIFVkbMvWH1VjbMvWIFVlbcvWIFVla8vVIFVkbMvWbMvVH1Vk" + "bMvWIFVlbcvWIFVkbcvVbMvWjNPbIFVkU8LPwMzNIFVkbczWIFVkbsvWbMvXIFVkRnB8bcvW" + "2+TkW8XRIFVkIlZlJVloJlpoKlxrLl9tMmJwOWd0Omh1RXF8TneCT3iDUHiDU8LPVMLPVcLP" + "VcPQVsPPVsPQV8PQWMTQWsTQW8TQXMXSXsXRX4SNX8bSYMfTYcfTYsfTY8jUZcfSZsnUaIqT" + "acrVasrVa8jTa8rWbI2VbMvWbcvWdJObdcvUdszUd8vVeJaee87Yfc3WgJyjhqGnitDYjaar" + "ldPZnrK2oNbborW5o9bbo9fbpLa6q9ndrL3ArtndscDDutzfu8fJwN7gwt7gxc/QyuHhy+Hi" + "zeHi0NfX0+Pj19zb1+Tj2uXk29/e3uLg3+Lh3+bl4uXj4ufl4+fl5Ofl5ufl5ujm5+jmySDn" + "BAAAAFp0Uk5TAAECAgMEBAYHCA0NDg4UGRogIiMmKSssLzU7PkJJT1JTVFliY2hrdHZ3foSF" + "hYeJjY2QkpugqbG1tre5w8zQ09XY3uXn6+zx8vT09vf4+Pj5+fr6/P39/f3+gz7SsAAAAVVJ" + "REFUOMtjYKA7EBDnwCPLrObS1BRiLoJLnte6CQy8FLHLCzs2QUG4FjZ5GbcmBDDjxJBXDWxC" + "Brb8aM4zbkIDzpLYnAcE9VXlJSWlZRU13koIeW57mGx5XjoMZEUqwxWYQaQbSzLSkYGfKFSe" + "0QMsX5WbjgY0YS4MBplemI4BdGBW+DQ11eZiymfqQuXZIjqwyadPNoSZ4L+0FVM6e+oGI6g8" + "a9iKNT3o8kVzNkzRg5lgl7p4wyRUL9Yt2jAxVh6mQCogae6GmflI8p0r13VFWTHBQ0rWPW7a" + "hgWVcPm+9cuLoyy4kCJDzCm6d8PSFoh0zvQNC5OjDJhQopPPJqph1doJBUD5tnkbZiUEqaCn" + "B3bTqLTFG1bPn71kw4b+GFdpLElKIzRxxgYgWNYc5SCENVHKeUaltHdXx0dZ8uBI1hJ2UUDg" + "q82CM2MwKeibqAvSO7MCABq0wXEPiqWEAAAAAElFTkSuQmCC"; ol.RendererHint = {CANVAS:"canvas", DOM:"dom", WEBGL:"webgl"}; ol.DEFAULT_RENDERER_HINTS = [ol.RendererHint.CANVAS, ol.RendererHint.WEBGL, ol.RendererHint.DOM]; ol.MapProperty = {LAYERGROUP:"layergroup", SIZE:"size", TARGET:"target", VIEW:"view"}; ol.Map = function(options) { goog.base(this); var optionsInternal = ol.Map.createOptionsInternal(options); this.pixelRatio_ = goog.isDef(options.pixelRatio) ? options.pixelRatio : ol.BrowserFeature.DEVICE_PIXEL_RATIO; this.ol3Logo_ = optionsInternal.ol3Logo; this.animationDelay_ = new goog.async.AnimationDelay(this.renderFrame_, undefined, this); this.registerDisposable(this.animationDelay_); this.coordinateToPixelMatrix_ = goog.vec.Mat4.createNumber(); this.pixelToCoordinateMatrix_ = goog.vec.Mat4.createNumber(); this.frameIndex_ = 0; this.frameState_ = null; this.viewPropertyListenerKey_ = null; this.layerGroupPropertyListenerKeys_ = null; this.viewport_ = goog.dom.createDom(goog.dom.TagName.DIV, "ol-viewport"); this.viewport_.style.position = "relative"; this.viewport_.style.overflow = "hidden"; this.viewport_.style.width = "100%"; this.viewport_.style.height = "100%"; this.viewport_.style.msTouchAction = "none"; if(ol.BrowserFeature.HAS_TOUCH) { this.viewport_.className = "ol-touch" } this.overlayContainer_ = goog.dom.createDom(goog.dom.TagName.DIV, "ol-overlaycontainer"); goog.dom.appendChild(this.viewport_, this.overlayContainer_); this.overlayContainerStopEvent_ = goog.dom.createDom(goog.dom.TagName.DIV, "ol-overlaycontainer-stopevent"); goog.events.listen(this.overlayContainerStopEvent_, [goog.events.EventType.CLICK, goog.events.EventType.DBLCLICK, goog.events.EventType.MOUSEDOWN, goog.events.EventType.TOUCHSTART, goog.events.EventType.MSPOINTERDOWN, ol.MapBrowserEvent.EventType.POINTERDOWN, goog.events.MouseWheelHandler.EventType.MOUSEWHEEL], goog.events.Event.stopPropagation); goog.dom.appendChild(this.viewport_, this.overlayContainerStopEvent_); var mapBrowserEventHandler = new ol.MapBrowserEventHandler(this); goog.events.listen(mapBrowserEventHandler, goog.object.getValues(ol.MapBrowserEvent.EventType), this.handleMapBrowserEvent, false, this); this.registerDisposable(mapBrowserEventHandler); this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget; this.keyHandler_ = new goog.events.KeyHandler; goog.events.listen(this.keyHandler_, goog.events.KeyHandler.EventType.KEY, this.handleBrowserEvent, false, this); this.registerDisposable(this.keyHandler_); var mouseWheelHandler = new goog.events.MouseWheelHandler(this.viewport_); goog.events.listen(mouseWheelHandler, goog.events.MouseWheelHandler.EventType.MOUSEWHEEL, this.handleBrowserEvent, false, this); this.registerDisposable(mouseWheelHandler); this.controls_ = optionsInternal.controls; this.deviceOptions_ = optionsInternal.deviceOptions; this.interactions_ = optionsInternal.interactions; this.overlays_ = optionsInternal.overlays; this.renderer_ = new optionsInternal.rendererConstructor(this.viewport_, this); this.registerDisposable(this.renderer_); this.viewportSizeMonitor_ = new goog.dom.ViewportSizeMonitor; goog.events.listen(this.viewportSizeMonitor_, goog.events.EventType.RESIZE, this.updateSize, false, this); this.focus_ = null; this.preRenderFunctions_ = []; this.postRenderFunctions_ = []; this.tileQueue_ = new ol.TileQueue(goog.bind(this.getTilePriority, this), goog.bind(this.handleTileChange_, this)); this.skippedFeatureUids_ = {}; goog.events.listen(this, ol.Object.getChangeEventType(ol.MapProperty.LAYERGROUP), this.handleLayerGroupChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.MapProperty.VIEW), this.handleViewChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.MapProperty.SIZE), this.handleSizeChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.MapProperty.TARGET), this.handleTargetChanged_, false, this); this.setValues(optionsInternal.values); this.controls_.forEach(function(control) { control.setMap(this) }, this); goog.events.listen(this.controls_, ol.CollectionEventType.ADD, function(event) { event.element.setMap(this) }, false, this); goog.events.listen(this.controls_, ol.CollectionEventType.REMOVE, function(event) { event.element.setMap(null) }, false, this); this.interactions_.forEach(function(interaction) { interaction.setMap(this) }, this); goog.events.listen(this.interactions_, ol.CollectionEventType.ADD, function(event) { event.element.setMap(this) }, false, this); goog.events.listen(this.interactions_, ol.CollectionEventType.REMOVE, function(event) { event.element.setMap(null) }, false, this); this.overlays_.forEach(function(overlay) { overlay.setMap(this) }, this); goog.events.listen(this.overlays_, ol.CollectionEventType.ADD, function(event) { event.element.setMap(this) }, false, this); goog.events.listen(this.overlays_, ol.CollectionEventType.REMOVE, function(event) { event.element.setMap(null) }, false, this) }; goog.inherits(ol.Map, ol.Object); ol.Map.prototype.addControl = function(control) { var controls = this.getControls(); goog.asserts.assert(goog.isDef(controls)); controls.push(control) }; ol.Map.prototype.addInteraction = function(interaction) { var interactions = this.getInteractions(); goog.asserts.assert(goog.isDef(interactions)); interactions.push(interaction) }; ol.Map.prototype.addLayer = function(layer) { var layers = this.getLayerGroup().getLayers(); goog.asserts.assert(goog.isDef(layers)); layers.push(layer) }; ol.Map.prototype.addOverlay = function(overlay) { var overlays = this.getOverlays(); goog.asserts.assert(goog.isDef(overlays)); overlays.push(overlay) }; ol.Map.prototype.beforeRender = function(var_args) { this.render(); Array.prototype.push.apply(this.preRenderFunctions_, arguments) }; ol.Map.prototype.removePreRenderFunction = function(preRenderFunction) { return goog.array.remove(this.preRenderFunctions_, preRenderFunction) }; ol.Map.prototype.disposeInternal = function() { goog.dom.removeNode(this.viewport_); goog.base(this, "disposeInternal") }; ol.Map.prototype.forEachFeatureAtPixel = function(pixel, callback, opt_this, opt_layerFilter, opt_this2) { if(goog.isNull(this.frameState_)) { return } var coordinate = this.getCoordinateFromPixel(pixel); var thisArg = goog.isDef(opt_this) ? opt_this : null; var layerFilter = goog.isDef(opt_layerFilter) ? opt_layerFilter : goog.functions.TRUE; var thisArg2 = goog.isDef(opt_this2) ? opt_this2 : null; return this.renderer_.forEachFeatureAtPixel(coordinate, this.frameState_, callback, thisArg, layerFilter, thisArg2) }; ol.Map.prototype.getEventCoordinate = function(event) { return this.getCoordinateFromPixel(this.getEventPixel(event)) }; ol.Map.prototype.getEventPixel = function(event) { if(goog.isDef(event.changedTouches)) { var touch = event.changedTouches.item(0); var viewportPosition = goog.style.getClientPosition(this.viewport_); return[touch.clientX - viewportPosition.x, touch.clientY - viewportPosition.y] }else { var eventPosition = goog.style.getRelativePosition(event, this.viewport_); return[eventPosition.x, eventPosition.y] } }; ol.Map.prototype.getTarget = function() { return(this.get(ol.MapProperty.TARGET)) }; goog.exportProperty(ol.Map.prototype, "getTarget", ol.Map.prototype.getTarget); ol.Map.prototype.getCoordinateFromPixel = function(pixel) { var frameState = this.frameState_; if(goog.isNull(frameState)) { return null }else { var vec2 = pixel.slice(); return ol.vec.Mat4.multVec2(frameState.pixelToCoordinateMatrix, vec2, vec2) } }; ol.Map.prototype.getControls = function() { return this.controls_ }; ol.Map.prototype.getOverlays = function() { return this.overlays_ }; ol.Map.prototype.getInteractions = function() { return this.interactions_ }; ol.Map.prototype.getLayerGroup = function() { return(this.get(ol.MapProperty.LAYERGROUP)) }; goog.exportProperty(ol.Map.prototype, "getLayerGroup", ol.Map.prototype.getLayerGroup); ol.Map.prototype.getLayers = function() { var layerGroup = this.getLayerGroup(); if(goog.isDef(layerGroup)) { return layerGroup.getLayers() }else { return undefined } }; ol.Map.prototype.getPixelFromCoordinate = function(coordinate) { var frameState = this.frameState_; if(goog.isNull(frameState)) { return null }else { var vec2 = coordinate.slice(0, 2); return ol.vec.Mat4.multVec2(frameState.coordinateToPixelMatrix, vec2, vec2) } }; ol.Map.prototype.getSize = function() { return(this.get(ol.MapProperty.SIZE)) }; goog.exportProperty(ol.Map.prototype, "getSize", ol.Map.prototype.getSize); ol.Map.prototype.getView = function() { return(this.get(ol.MapProperty.VIEW)) }; goog.exportProperty(ol.Map.prototype, "getView", ol.Map.prototype.getView); ol.Map.prototype.getViewport = function() { return this.viewport_ }; ol.Map.prototype.getOverlayContainer = function() { return this.overlayContainer_ }; ol.Map.prototype.getOverlayContainerStopEvent = function() { return this.overlayContainerStopEvent_ }; ol.Map.prototype.getTilePriority = function(tile, tileSourceKey, tileCenter, tileResolution) { var frameState = this.frameState_; if(goog.isNull(frameState) || !(tileSourceKey in frameState.wantedTiles)) { return ol.structs.PriorityQueue.DROP } var coordKey = tile.tileCoord.toString(); if(!frameState.wantedTiles[tileSourceKey][coordKey]) { return ol.structs.PriorityQueue.DROP } var deltaX = tileCenter[0] - frameState.focus[0]; var deltaY = tileCenter[1] - frameState.focus[1]; return 65536 * Math.log(tileResolution) + Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution }; ol.Map.prototype.handleBrowserEvent = function(browserEvent, opt_type) { var type = opt_type || browserEvent.type; var mapBrowserEvent = new ol.MapBrowserEvent(type, this, browserEvent); this.handleMapBrowserEvent(mapBrowserEvent) }; ol.Map.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if(goog.isNull(this.frameState_)) { return } this.focus_ = mapBrowserEvent.coordinate; mapBrowserEvent.frameState = this.frameState_; var interactions = this.getInteractions(); var interactionsArray = (interactions.getArray()); var i; if(this.dispatchEvent(mapBrowserEvent) !== false) { for(i = interactionsArray.length - 1;i >= 0;i--) { var interaction = interactionsArray[i]; var cont = interaction.handleMapBrowserEvent(mapBrowserEvent); if(!cont) { break } } } }; ol.Map.prototype.handlePostRender = function() { var frameState = this.frameState_; var tileQueue = this.tileQueue_; if(!tileQueue.isEmpty()) { var maxTotalLoading = 16; var maxNewLoads = maxTotalLoading; var tileSourceCount = 0; if(!goog.isNull(frameState)) { var hints = frameState.viewHints; var deviceOptions = this.deviceOptions_; if(hints[ol.ViewHint.ANIMATING]) { maxTotalLoading = deviceOptions.loadTilesWhileAnimating === false ? 0 : 8; maxNewLoads = 2 } if(hints[ol.ViewHint.INTERACTING]) { maxTotalLoading = deviceOptions.loadTilesWhileInteracting === false ? 0 : 8; maxNewLoads = 2 } tileSourceCount = goog.object.getCount(frameState.wantedTiles) } maxTotalLoading *= tileSourceCount; maxNewLoads *= tileSourceCount; if(tileQueue.getTilesLoading() < maxTotalLoading) { tileQueue.reprioritize(); tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads) } } var postRenderFunctions = this.postRenderFunctions_; var i, ii; for(i = 0, ii = postRenderFunctions.length;i < ii;++i) { postRenderFunctions[i](this, frameState) } postRenderFunctions.length = 0 }; ol.Map.prototype.handleSizeChanged_ = function() { this.render() }; ol.Map.prototype.handleTargetChanged_ = function() { var target = this.getTarget(); var targetElement = goog.isDef(target) ? goog.dom.getElement(target) : null; this.keyHandler_.detach(); if(goog.isNull(targetElement)) { goog.dom.removeNode(this.viewport_) }else { goog.dom.appendChild(targetElement, this.viewport_); var keyboardEventTarget = goog.isNull(this.keyboardEventTarget_) ? targetElement : this.keyboardEventTarget_; this.keyHandler_.attach(keyboardEventTarget) } this.updateSize() }; ol.Map.prototype.handleTileChange_ = function() { this.render() }; ol.Map.prototype.handleViewPropertyChanged_ = function() { this.render() }; ol.Map.prototype.handleViewChanged_ = function() { if(!goog.isNull(this.viewPropertyListenerKey_)) { goog.events.unlistenByKey(this.viewPropertyListenerKey_); this.viewPropertyListenerKey_ = null } var view = this.getView(); if(goog.isDefAndNotNull(view)) { this.viewPropertyListenerKey_ = goog.events.listen(view, ol.ObjectEventType.PROPERTYCHANGE, this.handleViewPropertyChanged_, false, this) } this.render() }; ol.Map.prototype.handleLayerGroupMemberChanged_ = function(event) { goog.asserts.assertInstanceof(event, goog.events.Event); this.render() }; ol.Map.prototype.handleLayerGroupPropertyChanged_ = function(event) { goog.asserts.assertInstanceof(event, ol.ObjectEvent); this.render() }; ol.Map.prototype.handleLayerGroupChanged_ = function() { if(!goog.isNull(this.layerGroupPropertyListenerKeys_)) { var length = this.layerGroupPropertyListenerKeys_.length; for(var i = 0;i < length;++i) { goog.events.unlistenByKey(this.layerGroupPropertyListenerKeys_[i]) } this.layerGroupPropertyListenerKeys_ = null } var layerGroup = this.getLayerGroup(); if(goog.isDefAndNotNull(layerGroup)) { this.layerGroupPropertyListenerKeys_ = [goog.events.listen(layerGroup, ol.ObjectEventType.PROPERTYCHANGE, this.handleLayerGroupPropertyChanged_, false, this), goog.events.listen(layerGroup, goog.events.EventType.CHANGE, this.handleLayerGroupMemberChanged_, false, this)] } this.render() }; ol.Map.prototype.isDef = function() { if(!goog.dom.contains(document, this.viewport_)) { return false } if(!goog.style.isElementShown(this.viewport_)) { return false } var size = this.getSize(); if(!goog.isDefAndNotNull(size) || size[0] <= 0 || size[1] <= 0) { return false } var view = this.getView(); if(!goog.isDef(view) || !view.isDef()) { return false } return true }; ol.Map.prototype.isRendered = function() { return!goog.isNull(this.frameState_) }; ol.Map.prototype.renderSync = function() { this.animationDelay_.fire() }; ol.Map.prototype.render = function() { if(!this.animationDelay_.isActive()) { this.animationDelay_.start() } }; ol.Map.prototype.removeControl = function(control) { var controls = this.getControls(); goog.asserts.assert(goog.isDef(controls)); if(goog.isDef(controls.remove(control))) { return control } return undefined }; ol.Map.prototype.removeInteraction = function(interaction) { var removed; var interactions = this.getInteractions(); goog.asserts.assert(goog.isDef(interactions)); if(goog.isDef(interactions.remove(interaction))) { removed = interaction } return removed }; ol.Map.prototype.removeLayer = function(layer) { var layers = this.getLayerGroup().getLayers(); goog.asserts.assert(goog.isDef(layers)); return(layers.remove(layer)) }; ol.Map.prototype.removeOverlay = function(overlay) { var overlays = this.getOverlays(); goog.asserts.assert(goog.isDef(overlays)); if(goog.isDef(overlays.remove(overlay))) { return overlay } return undefined }; ol.Map.prototype.renderFrame_ = function(time) { var i, ii, view2DState; function hasArea(size) { return size[0] > 0 && size[1] > 0 } var size = this.getSize(); var view = this.getView(); var view2D = goog.isDef(view) ? this.getView().getView2D() : undefined; var frameState = null; if(goog.isDef(size) && hasArea(size) && goog.isDef(view2D) && view2D.isDef()) { var viewHints = view.getHints(); var layerStatesArray = this.getLayerGroup().getLayerStatesArray(); var layerStates = {}; for(i = 0, ii = layerStatesArray.length;i < ii;++i) { layerStates[goog.getUid(layerStatesArray[i].layer)] = layerStatesArray[i] } view2DState = view2D.getView2DState(); frameState = ({animate:false, attributions:{}, coordinateToPixelMatrix:this.coordinateToPixelMatrix_, extent:null, focus:goog.isNull(this.focus_) ? view2DState.center : this.focus_, index:this.frameIndex_++, layerStates:layerStates, layerStatesArray:layerStatesArray, logos:{}, pixelRatio:this.pixelRatio_, pixelToCoordinateMatrix:this.pixelToCoordinateMatrix_, postRenderFunctions:[], size:size, skippedFeatureUids_:this.skippedFeatureUids_, tileQueue:this.tileQueue_, time:time, usedTiles:{}, view2DState:view2DState, viewHints:viewHints, wantedTiles:{}}); if(this.ol3Logo_) { frameState.logos[ol.OL3_LOGO_URL] = ol.OL3_URL } } var preRenderFunctions = this.preRenderFunctions_; var n = 0, preRenderFunction; for(i = 0, ii = preRenderFunctions.length;i < ii;++i) { preRenderFunction = preRenderFunctions[i]; if(preRenderFunction(this, frameState)) { preRenderFunctions[n++] = preRenderFunction } } preRenderFunctions.length = n; if(!goog.isNull(frameState)) { frameState.extent = ol.extent.getForView2DAndSize(view2DState.center, view2DState.resolution, view2DState.rotation, frameState.size) } this.frameState_ = frameState; this.renderer_.renderFrame(frameState); if(!goog.isNull(frameState)) { if(frameState.animate) { this.render() } Array.prototype.push.apply(this.postRenderFunctions_, frameState.postRenderFunctions); var idle = this.preRenderFunctions_.length === 0 && !frameState.animate && !frameState.viewHints[ol.ViewHint.ANIMATING] && !frameState.viewHints[ol.ViewHint.INTERACTING]; if(idle) { this.dispatchEvent(new ol.MapEvent(ol.MapEventType.MOVEEND, this)) } } this.dispatchEvent(new ol.MapEvent(ol.MapEventType.POSTRENDER, this, frameState)); goog.async.nextTick(this.handlePostRender, this) }; ol.Map.prototype.setLayerGroup = function(layerGroup) { this.set(ol.MapProperty.LAYERGROUP, layerGroup) }; goog.exportProperty(ol.Map.prototype, "setLayerGroup", ol.Map.prototype.setLayerGroup); ol.Map.prototype.setSize = function(size) { this.set(ol.MapProperty.SIZE, size) }; goog.exportProperty(ol.Map.prototype, "setSize", ol.Map.prototype.setSize); ol.Map.prototype.setTarget = function(target) { this.set(ol.MapProperty.TARGET, target) }; goog.exportProperty(ol.Map.prototype, "setTarget", ol.Map.prototype.setTarget); ol.Map.prototype.setView = function(view) { this.set(ol.MapProperty.VIEW, view) }; goog.exportProperty(ol.Map.prototype, "setView", ol.Map.prototype.setView); ol.Map.prototype.skipFeature = function(feature) { var featureUid = goog.getUid(feature).toString(); this.skippedFeatureUids_[featureUid] = true; this.render() }; ol.Map.prototype.updateSize = function() { var target = this.getTarget(); var targetElement = goog.isDef(target) ? goog.dom.getElement(target) : null; if(goog.isNull(targetElement)) { this.setSize(undefined) }else { var size = goog.style.getContentBoxSize(targetElement); this.setSize([size.width, size.height]) } }; ol.Map.prototype.unskipFeature = function(feature) { var featureUid = goog.getUid(feature).toString(); delete this.skippedFeatureUids_[featureUid]; this.render() }; ol.MapOptionsInternal; ol.Map.createOptionsInternal = function(options) { var keyboardEventTarget = null; if(goog.isDef(options.keyboardEventTarget)) { keyboardEventTarget = goog.isString(options.keyboardEventTarget) ? document.getElementById(options.keyboardEventTarget) : options.keyboardEventTarget } var values = {}; var ol3Logo = goog.isDef(options.ol3Logo) ? options.ol3Logo : true; var layerGroup = options.layers instanceof ol.layer.Group ? options.layers : new ol.layer.Group({layers:options.layers}); values[ol.MapProperty.LAYERGROUP] = layerGroup; values[ol.MapProperty.TARGET] = options.target; values[ol.MapProperty.VIEW] = goog.isDef(options.view) ? options.view : new ol.View2D; var rendererConstructor = ol.renderer.Map; var rendererHints; if(goog.isDef(options.renderer)) { if(goog.isArray(options.renderer)) { rendererHints = options.renderer }else { if(goog.isString(options.renderer)) { rendererHints = [options.renderer] }else { goog.asserts.fail("Incorrect format for renderer option") } } }else { rendererHints = ol.DEFAULT_RENDERER_HINTS } var i, ii; for(i = 0, ii = rendererHints.length;i < ii;++i) { var rendererHint = rendererHints[i]; if(ol.ENABLE_CANVAS && rendererHint == ol.RendererHint.CANVAS) { if(ol.BrowserFeature.HAS_CANVAS) { rendererConstructor = ol.renderer.canvas.Map; break } }else { if(ol.ENABLE_DOM && rendererHint == ol.RendererHint.DOM) { if(ol.BrowserFeature.HAS_DOM) { rendererConstructor = ol.renderer.dom.Map; break } }else { if(ol.ENABLE_WEBGL && rendererHint == ol.RendererHint.WEBGL) { if(ol.BrowserFeature.HAS_WEBGL) { rendererConstructor = ol.renderer.webgl.Map; break } } } } } var controls; if(goog.isDef(options.controls)) { if(goog.isArray(options.controls)) { controls = new ol.Collection(goog.array.clone(options.controls)) }else { goog.asserts.assertInstanceof(options.controls, ol.Collection); controls = options.controls } }else { controls = ol.control.defaults() } var deviceOptions = goog.isDef(options.deviceOptions) ? options.deviceOptions : ({}); var interactions; if(goog.isDef(options.interactions)) { if(goog.isArray(options.interactions)) { interactions = new ol.Collection(goog.array.clone(options.interactions)) }else { goog.asserts.assertInstanceof(options.interactions, ol.Collection); interactions = options.interactions } }else { interactions = ol.interaction.defaults() } var overlays; if(goog.isDef(options.overlays)) { if(goog.isArray(options.overlays)) { overlays = new ol.Collection(goog.array.clone(options.overlays)) }else { goog.asserts.assertInstanceof(options.overlays, ol.Collection); overlays = options.overlays } }else { overlays = new ol.Collection } return{controls:controls, deviceOptions:deviceOptions, interactions:interactions, keyboardEventTarget:keyboardEventTarget, ol3Logo:ol3Logo, overlays:overlays, rendererConstructor:rendererConstructor, values:values} }; ol.proj.common.add(); if(goog.DEBUG) { (function() { goog.debug.Console.autoInstall(); var logger = goog.log.getLogger("ol"); logger.setLevel(goog.log.Level.FINEST) })() } ;goog.provide("ol.DrawEvent"); goog.provide("ol.interaction.Draw"); goog.require("goog.asserts"); goog.require("goog.events.Event"); goog.require("ol.Collection"); goog.require("ol.Coordinate"); goog.require("ol.Feature"); goog.require("ol.FeatureOverlay"); goog.require("ol.Map"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.feature"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.interaction.Pointer"); goog.require("ol.source.Vector"); ol.DrawEventType = {DRAWSTART:"drawstart", DRAWEND:"drawend"}; ol.DrawEvent = function(type, feature) { goog.base(this, type); this.feature = feature }; goog.inherits(ol.DrawEvent, goog.events.Event); ol.interaction.Draw = function(options) { goog.base(this); this.downPx_ = null; this.source_ = goog.isDef(options.source) ? options.source : null; this.features_ = goog.isDef(options.features) ? options.features : null; this.snapTolerance_ = goog.isDef(options.snapTolerance) ? options.snapTolerance : 12; this.minPointsPerRing_ = goog.isDef(options.minPointsPerRing) ? options.minPointsPerRing : 3; this.type_ = options.type; this.mode_ = ol.interaction.Draw.getMode_(this.type_); this.finishCoordinate_ = null; this.sketchFeature_ = null; this.sketchPoint_ = null; this.sketchLine_ = null; this.sketchRawPolygon_ = null; this.squaredClickTolerance_ = 4; this.overlay_ = new ol.FeatureOverlay({style:goog.isDef(options.style) ? options.style : ol.interaction.Draw.getDefaultStyleFunction()}) }; goog.inherits(ol.interaction.Draw, ol.interaction.Pointer); ol.interaction.Draw.getDefaultStyleFunction = function() { var styles = ol.feature.createDefaultEditingStyles(); return function(feature, resolution) { return styles[feature.getGeometry().getType()] } }; ol.interaction.Draw.prototype.setMap = function(map) { if(goog.isNull(map)) { this.abortDrawing_() } this.overlay_.setMap(map); goog.base(this, "setMap", map) }; ol.interaction.Draw.prototype.handleMapBrowserEvent = function(event) { var map = event.map; if(!map.isDef()) { return true } var pass = true; if(event.type === ol.MapBrowserEvent.EventType.POINTERMOVE) { pass = this.handlePointerMove_(event) }else { if(event.type === ol.MapBrowserEvent.EventType.DBLCLICK) { pass = false } } return goog.base(this, "handleMapBrowserEvent", event) && pass }; ol.interaction.Draw.prototype.handlePointerDown = function(event) { this.downPx_ = event.pixel; return true }; ol.interaction.Draw.prototype.handlePointerUp = function(event) { var downPx = this.downPx_; var clickPx = event.pixel; var dx = downPx[0] - clickPx[0]; var dy = downPx[1] - clickPx[1]; var squaredDistance = dx * dx + dy * dy; var pass = true; if(squaredDistance <= this.squaredClickTolerance_) { this.handlePointerMove_(event); if(goog.isNull(this.finishCoordinate_)) { this.startDrawing_(event) }else { if(this.mode_ === ol.interaction.DrawMode.POINT || this.atFinish_(event)) { this.finishDrawing_(event) }else { this.addToDrawing_(event) } } pass = false } return pass }; ol.interaction.Draw.prototype.handlePointerMove_ = function(event) { if(this.mode_ === ol.interaction.DrawMode.POINT && goog.isNull(this.finishCoordinate_)) { this.startDrawing_(event) }else { if(!goog.isNull(this.finishCoordinate_)) { this.modifyDrawing_(event) } } return true }; ol.interaction.Draw.prototype.atFinish_ = function(event) { var at = false; if(!goog.isNull(this.sketchFeature_)) { var geometry = this.sketchFeature_.getGeometry(); var potentiallyDone = false; var potentiallyFinishCoordinates = [this.finishCoordinate_]; if(this.mode_ === ol.interaction.DrawMode.LINE_STRING) { goog.asserts.assertInstanceof(geometry, ol.geom.LineString); potentiallyDone = geometry.getCoordinates().length > 2 }else { if(this.mode_ === ol.interaction.DrawMode.POLYGON) { goog.asserts.assertInstanceof(geometry, ol.geom.Polygon); potentiallyDone = geometry.getCoordinates()[0].length > this.minPointsPerRing_; potentiallyFinishCoordinates = [this.sketchRawPolygon_[0][0], this.sketchRawPolygon_[0][this.sketchRawPolygon_[0].length - 2]] } } if(potentiallyDone) { var map = event.map; for(var i = 0, ii = potentiallyFinishCoordinates.length;i < ii;i++) { var finishCoordinate = potentiallyFinishCoordinates[i]; var finishPixel = map.getPixelFromCoordinate(finishCoordinate); var pixel = event.pixel; var dx = pixel[0] - finishPixel[0]; var dy = pixel[1] - finishPixel[1]; at = Math.sqrt(dx * dx + dy * dy) <= this.snapTolerance_; if(at) { this.finishCoordinate_ = finishCoordinate; break } } } } return at }; ol.interaction.Draw.prototype.startDrawing_ = function(event) { var start = event.coordinate; this.finishCoordinate_ = start; var geometry; if(this.mode_ === ol.interaction.DrawMode.POINT) { geometry = new ol.geom.Point(start.slice()) }else { this.sketchPoint_ = new ol.Feature(new ol.geom.Point(start.slice())); if(this.mode_ === ol.interaction.DrawMode.LINE_STRING) { geometry = new ol.geom.LineString([start.slice(), start.slice()]) }else { if(this.mode_ === ol.interaction.DrawMode.POLYGON) { this.sketchLine_ = new ol.Feature(new ol.geom.LineString([start.slice(), start.slice()])); this.sketchRawPolygon_ = [[start.slice(), start.slice()]]; geometry = new ol.geom.Polygon(this.sketchRawPolygon_) } } } goog.asserts.assert(goog.isDef(geometry)); this.sketchFeature_ = new ol.Feature(geometry); this.updateSketchFeatures_(); this.dispatchEvent(new ol.DrawEvent(ol.DrawEventType.DRAWSTART, this.sketchFeature_)) }; ol.interaction.Draw.prototype.modifyDrawing_ = function(event) { var coordinate = event.coordinate; var geometry = this.sketchFeature_.getGeometry(); var coordinates, last; if(this.mode_ === ol.interaction.DrawMode.POINT) { goog.asserts.assertInstanceof(geometry, ol.geom.Point); last = geometry.getCoordinates(); last[0] = coordinate[0]; last[1] = coordinate[1]; geometry.setCoordinates(last) }else { if(this.mode_ === ol.interaction.DrawMode.LINE_STRING) { goog.asserts.assertInstanceof(geometry, ol.geom.LineString); coordinates = geometry.getCoordinates() }else { if(this.mode_ === ol.interaction.DrawMode.POLYGON) { goog.asserts.assertInstanceof(geometry, ol.geom.Polygon); coordinates = this.sketchRawPolygon_[0] } } if(this.atFinish_(event)) { coordinate = this.finishCoordinate_.slice() } var sketchPointGeom = this.sketchPoint_.getGeometry(); goog.asserts.assertInstanceof(sketchPointGeom, ol.geom.Point); sketchPointGeom.setCoordinates(coordinate); last = coordinates[coordinates.length - 1]; last[0] = coordinate[0]; last[1] = coordinate[1]; if(this.mode_ === ol.interaction.DrawMode.LINE_STRING) { goog.asserts.assertInstanceof(geometry, ol.geom.LineString); geometry.setCoordinates(coordinates) }else { if(this.mode_ === ol.interaction.DrawMode.POLYGON) { var sketchLineGeom = this.sketchLine_.getGeometry(); goog.asserts.assertInstanceof(sketchLineGeom, ol.geom.LineString); sketchLineGeom.setCoordinates(coordinates); goog.asserts.assertInstanceof(geometry, ol.geom.Polygon); geometry.setCoordinates(this.sketchRawPolygon_) } } } this.updateSketchFeatures_() }; ol.interaction.Draw.prototype.addToDrawing_ = function(event) { var coordinate = event.coordinate; var geometry = this.sketchFeature_.getGeometry(); var coordinates, last; if(this.mode_ === ol.interaction.DrawMode.LINE_STRING) { this.finishCoordinate_ = coordinate.slice(); goog.asserts.assertInstanceof(geometry, ol.geom.LineString); coordinates = geometry.getCoordinates(); coordinates.push(coordinate.slice()); geometry.setCoordinates(coordinates) }else { if(this.mode_ === ol.interaction.DrawMode.POLYGON) { this.sketchRawPolygon_[0].push(coordinate.slice()); goog.asserts.assertInstanceof(geometry, ol.geom.Polygon); geometry.setCoordinates(this.sketchRawPolygon_) } } this.updateSketchFeatures_() }; ol.interaction.Draw.prototype.finishDrawing_ = function(event) { var sketchFeature = this.abortDrawing_(); goog.asserts.assert(!goog.isNull(sketchFeature)); var coordinates; var geometry = sketchFeature.getGeometry(); if(this.mode_ === ol.interaction.DrawMode.POINT) { goog.asserts.assertInstanceof(geometry, ol.geom.Point); coordinates = geometry.getCoordinates() }else { if(this.mode_ === ol.interaction.DrawMode.LINE_STRING) { goog.asserts.assertInstanceof(geometry, ol.geom.LineString); coordinates = geometry.getCoordinates(); coordinates.pop(); geometry.setCoordinates(coordinates) }else { if(this.mode_ === ol.interaction.DrawMode.POLYGON) { goog.asserts.assertInstanceof(geometry, ol.geom.Polygon); this.sketchRawPolygon_[0].pop(); this.sketchRawPolygon_[0].push(this.sketchRawPolygon_[0][0]); geometry.setCoordinates(this.sketchRawPolygon_); coordinates = geometry.getCoordinates() } } } if(this.type_ === ol.geom.GeometryType.MULTI_POINT) { sketchFeature.setGeometry(new ol.geom.MultiPoint([coordinates])) }else { if(this.type_ === ol.geom.GeometryType.MULTI_LINE_STRING) { sketchFeature.setGeometry(new ol.geom.MultiLineString([coordinates])) }else { if(this.type_ === ol.geom.GeometryType.MULTI_POLYGON) { sketchFeature.setGeometry(new ol.geom.MultiPolygon([coordinates])) } } } if(!goog.isNull(this.features_)) { this.features_.push(sketchFeature) } if(!goog.isNull(this.source_)) { this.source_.addFeature(sketchFeature) } this.dispatchEvent(new ol.DrawEvent(ol.DrawEventType.DRAWEND, sketchFeature)) }; ol.interaction.Draw.prototype.abortDrawing_ = function() { this.finishCoordinate_ = null; var sketchFeature = this.sketchFeature_; if(!goog.isNull(sketchFeature)) { this.sketchFeature_ = null; this.sketchPoint_ = null; this.sketchLine_ = null; this.overlay_.getFeatures().clear() } return sketchFeature }; ol.interaction.Draw.prototype.updateSketchFeatures_ = function() { var sketchFeatures = [this.sketchFeature_]; if(!goog.isNull(this.sketchLine_)) { sketchFeatures.push(this.sketchLine_) } if(!goog.isNull(this.sketchPoint_)) { sketchFeatures.push(this.sketchPoint_) } this.overlay_.setFeatures(new ol.Collection(sketchFeatures)) }; ol.interaction.Draw.getMode_ = function(type) { var mode; if(type === ol.geom.GeometryType.POINT || type === ol.geom.GeometryType.MULTI_POINT) { mode = ol.interaction.DrawMode.POINT }else { if(type === ol.geom.GeometryType.LINE_STRING || type === ol.geom.GeometryType.MULTI_LINE_STRING) { mode = ol.interaction.DrawMode.LINE_STRING }else { if(type === ol.geom.GeometryType.POLYGON || type === ol.geom.GeometryType.MULTI_POLYGON) { mode = ol.interaction.DrawMode.POLYGON } } } goog.asserts.assert(goog.isDef(mode)); return mode }; ol.interaction.DrawMode = {POINT:"Point", LINE_STRING:"LineString", POLYGON:"Polygon"}; goog.provide("ol.sphere.WGS84"); goog.require("ol.Sphere"); ol.sphere.WGS84 = new ol.Sphere(6378137); goog.provide("ol.Geolocation"); goog.provide("ol.GeolocationProperty"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.math"); goog.require("ol.BrowserFeature"); goog.require("ol.Coordinate"); goog.require("ol.Object"); goog.require("ol.geom.Geometry"); goog.require("ol.proj"); goog.require("ol.sphere.WGS84"); ol.GeolocationProperty = {ACCURACY:"accuracy", ACCURACY_GEOMETRY:"accuracyGeometry", ALTITUDE:"altitude", ALTITUDE_ACCURACY:"altitudeAccuracy", HEADING:"heading", POSITION:"position", PROJECTION:"projection", SPEED:"speed", TRACKING:"tracking", TRACKING_OPTIONS:"trackingOptions"}; ol.Geolocation = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.position_ = null; this.transform_ = ol.proj.identityTransform; this.watchId_ = undefined; goog.events.listen(this, ol.Object.getChangeEventType(ol.GeolocationProperty.PROJECTION), this.handleProjectionChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.GeolocationProperty.TRACKING), this.handleTrackingChanged_, false, this); if(goog.isDef(options.projection)) { this.setProjection(ol.proj.get(options.projection)) } if(goog.isDef(options.trackingOptions)) { this.setTrackingOptions(options.trackingOptions) } this.setTracking(goog.isDef(options.tracking) ? options.tracking : false) }; goog.inherits(ol.Geolocation, ol.Object); ol.Geolocation.prototype.disposeInternal = function() { this.setTracking(false); goog.base(this, "disposeInternal") }; ol.Geolocation.prototype.handleProjectionChanged_ = function() { var projection = this.getProjection(); if(goog.isDefAndNotNull(projection)) { this.transform_ = ol.proj.getTransformFromProjections(ol.proj.get("EPSG:4326"), projection); if(!goog.isNull(this.position_)) { this.set(ol.GeolocationProperty.POSITION, this.transform_(this.position_)) } } }; ol.Geolocation.prototype.handleTrackingChanged_ = function() { if(ol.BrowserFeature.HAS_GEOLOCATION) { var tracking = this.getTracking(); if(tracking && !goog.isDef(this.watchId_)) { this.watchId_ = goog.global.navigator.geolocation.watchPosition(goog.bind(this.positionChange_, this), goog.bind(this.positionError_, this), this.getTrackingOptions()) }else { if(!tracking && goog.isDef(this.watchId_)) { goog.global.navigator.geolocation.clearWatch(this.watchId_); this.watchId_ = undefined } } } }; ol.Geolocation.prototype.positionChange_ = function(position) { var coords = position.coords; this.set(ol.GeolocationProperty.ACCURACY, coords.accuracy); this.set(ol.GeolocationProperty.ALTITUDE, goog.isNull(coords.altitude) ? undefined : coords.altitude); this.set(ol.GeolocationProperty.ALTITUDE_ACCURACY, goog.isNull(coords.altitudeAccuracy) ? undefined : coords.altitudeAccuracy); this.set(ol.GeolocationProperty.HEADING, goog.isNull(coords.heading) ? undefined : goog.math.toRadians(coords.heading)); if(goog.isNull(this.position_)) { this.position_ = [coords.longitude, coords.latitude] }else { this.position_[0] = coords.longitude; this.position_[1] = coords.latitude } var projectedPosition = this.transform_(this.position_); this.set(ol.GeolocationProperty.POSITION, projectedPosition); this.set(ol.GeolocationProperty.SPEED, goog.isNull(coords.speed) ? undefined : coords.speed); var geometry = ol.sphere.WGS84.circle(this.position_, coords.accuracy); geometry.transform(this.transform_); this.set(ol.GeolocationProperty.ACCURACY_GEOMETRY, geometry); this.dispatchChangeEvent() }; ol.Geolocation.prototype.positionError_ = function(error) { error.type = goog.events.EventType.ERROR; this.dispatchEvent(error) }; ol.Geolocation.prototype.getAccuracy = function() { return(this.get(ol.GeolocationProperty.ACCURACY)) }; goog.exportProperty(ol.Geolocation.prototype, "getAccuracy", ol.Geolocation.prototype.getAccuracy); ol.Geolocation.prototype.getAccuracyGeometry = function() { return(this.get(ol.GeolocationProperty.ACCURACY_GEOMETRY) || null) }; goog.exportProperty(ol.Geolocation.prototype, "getAccuracyGeometry", ol.Geolocation.prototype.getAccuracyGeometry); ol.Geolocation.prototype.getAltitude = function() { return(this.get(ol.GeolocationProperty.ALTITUDE)) }; goog.exportProperty(ol.Geolocation.prototype, "getAltitude", ol.Geolocation.prototype.getAltitude); ol.Geolocation.prototype.getAltitudeAccuracy = function() { return(this.get(ol.GeolocationProperty.ALTITUDE_ACCURACY)) }; goog.exportProperty(ol.Geolocation.prototype, "getAltitudeAccuracy", ol.Geolocation.prototype.getAltitudeAccuracy); ol.Geolocation.prototype.getHeading = function() { return(this.get(ol.GeolocationProperty.HEADING)) }; goog.exportProperty(ol.Geolocation.prototype, "getHeading", ol.Geolocation.prototype.getHeading); ol.Geolocation.prototype.getPosition = function() { return(this.get(ol.GeolocationProperty.POSITION)) }; goog.exportProperty(ol.Geolocation.prototype, "getPosition", ol.Geolocation.prototype.getPosition); ol.Geolocation.prototype.getProjection = function() { return(this.get(ol.GeolocationProperty.PROJECTION)) }; goog.exportProperty(ol.Geolocation.prototype, "getProjection", ol.Geolocation.prototype.getProjection); ol.Geolocation.prototype.getSpeed = function() { return(this.get(ol.GeolocationProperty.SPEED)) }; goog.exportProperty(ol.Geolocation.prototype, "getSpeed", ol.Geolocation.prototype.getSpeed); ol.Geolocation.prototype.getTracking = function() { return(this.get(ol.GeolocationProperty.TRACKING)) }; goog.exportProperty(ol.Geolocation.prototype, "getTracking", ol.Geolocation.prototype.getTracking); ol.Geolocation.prototype.getTrackingOptions = function() { return(this.get(ol.GeolocationProperty.TRACKING_OPTIONS)) }; goog.exportProperty(ol.Geolocation.prototype, "getTrackingOptions", ol.Geolocation.prototype.getTrackingOptions); ol.Geolocation.prototype.setProjection = function(projection) { this.set(ol.GeolocationProperty.PROJECTION, projection) }; goog.exportProperty(ol.Geolocation.prototype, "setProjection", ol.Geolocation.prototype.setProjection); ol.Geolocation.prototype.setTracking = function(tracking) { this.set(ol.GeolocationProperty.TRACKING, tracking) }; goog.exportProperty(ol.Geolocation.prototype, "setTracking", ol.Geolocation.prototype.setTracking); ol.Geolocation.prototype.setTrackingOptions = function(options) { this.set(ol.GeolocationProperty.TRACKING_OPTIONS, options) }; goog.exportProperty(ol.Geolocation.prototype, "setTrackingOptions", ol.Geolocation.prototype.setTrackingOptions); goog.provide("ol.TileLoadFunctionType"); ol.TileLoadFunctionType; goog.provide("ol.ImageTile"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.object"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileLoadFunctionType"); goog.require("ol.TileState"); ol.ImageTile = function(tileCoord, state, src, crossOrigin, tileLoadFunction) { goog.base(this, tileCoord, state); this.src_ = src; this.image_ = new Image; if(!goog.isNull(crossOrigin)) { this.image_.crossOrigin = crossOrigin } this.imageByContext_ = {}; this.imageListenerKeys_ = null; this.tileLoadFunction_ = tileLoadFunction }; goog.inherits(ol.ImageTile, ol.Tile); ol.ImageTile.prototype.getImage = function(opt_context) { if(goog.isDef(opt_context)) { var image; var key = goog.getUid(opt_context); if(key in this.imageByContext_) { return this.imageByContext_[key] }else { if(goog.object.isEmpty(this.imageByContext_)) { image = this.image_ }else { image = (this.image_.cloneNode(false)) } } this.imageByContext_[key] = image; return image }else { return this.image_ } }; ol.ImageTile.prototype.getKey = function() { return this.src_ }; ol.ImageTile.prototype.handleImageError_ = function() { this.state = ol.TileState.ERROR; this.unlistenImage_(); this.dispatchChangeEvent() }; ol.ImageTile.prototype.handleImageLoad_ = function() { if(!goog.isDef(this.image_.naturalWidth)) { this.image_.naturalWidth = this.image_.width; this.image_.naturalHeight = this.image_.height } if(this.image_.naturalWidth && this.image_.naturalHeight) { this.state = ol.TileState.LOADED }else { this.state = ol.TileState.EMPTY } this.unlistenImage_(); this.dispatchChangeEvent() }; ol.ImageTile.prototype.load = function() { if(this.state == ol.TileState.IDLE) { this.state = ol.TileState.LOADING; goog.asserts.assert(goog.isNull(this.imageListenerKeys_)); this.imageListenerKeys_ = [goog.events.listenOnce(this.image_, goog.events.EventType.ERROR, this.handleImageError_, false, this), goog.events.listenOnce(this.image_, goog.events.EventType.LOAD, this.handleImageLoad_, false, this)]; this.tileLoadFunction_(this, this.src_) } }; ol.ImageTile.prototype.unlistenImage_ = function() { goog.asserts.assert(!goog.isNull(this.imageListenerKeys_)); goog.array.forEach(this.imageListenerKeys_, goog.events.unlistenByKey); this.imageListenerKeys_ = null }; goog.provide("ol.Overlay"); goog.provide("ol.OverlayPositioning"); goog.provide("ol.OverlayProperty"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.style"); goog.require("ol.Coordinate"); goog.require("ol.Map"); goog.require("ol.MapEventType"); goog.require("ol.Object"); ol.OverlayProperty = {ELEMENT:"element", MAP:"map", POSITION:"position", POSITIONING:"positioning"}; ol.OverlayPositioning = {BOTTOM_LEFT:"bottom-left", BOTTOM_CENTER:"bottom-center", BOTTOM_RIGHT:"bottom-right", CENTER_LEFT:"center-left", CENTER_CENTER:"center-center", CENTER_RIGHT:"center-right", TOP_LEFT:"top-left", TOP_CENTER:"top-center", TOP_RIGHT:"top-right"}; ol.Overlay = function(options) { goog.base(this); this.insertFirst_ = goog.isDef(options.insertFirst) ? options.insertFirst : true; this.stopEvent_ = goog.isDef(options.stopEvent) ? options.stopEvent : true; this.offsetX_ = goog.isDef(options.offsetX) ? options.offsetX : 0; this.offsetY_ = goog.isDef(options.offsetY) ? options.offsetY : 0; this.element_ = goog.dom.createElement(goog.dom.TagName.DIV); this.element_.style.position = "absolute"; this.rendered_ = {bottom_:"", left_:"", right_:"", top_:"", visible:true}; this.mapPostrenderListenerKey_ = null; goog.events.listen(this, ol.Object.getChangeEventType(ol.OverlayProperty.ELEMENT), this.handleElementChanged, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.OverlayProperty.MAP), this.handleMapChanged, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.OverlayProperty.POSITION), this.handlePositionChanged, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.OverlayProperty.POSITIONING), this.handlePositioningChanged, false, this); if(goog.isDef(options.element)) { this.setElement(options.element) } if(goog.isDef(options.position)) { this.setPosition(options.position) } if(goog.isDef(options.positioning)) { this.setPositioning((options.positioning)) } }; goog.inherits(ol.Overlay, ol.Object); ol.Overlay.prototype.getElement = function() { return(this.get(ol.OverlayProperty.ELEMENT)) }; goog.exportProperty(ol.Overlay.prototype, "getElement", ol.Overlay.prototype.getElement); ol.Overlay.prototype.getMap = function() { return(this.get(ol.OverlayProperty.MAP)) }; goog.exportProperty(ol.Overlay.prototype, "getMap", ol.Overlay.prototype.getMap); ol.Overlay.prototype.getPosition = function() { return(this.get(ol.OverlayProperty.POSITION)) }; goog.exportProperty(ol.Overlay.prototype, "getPosition", ol.Overlay.prototype.getPosition); ol.Overlay.prototype.getPositioning = function() { return(this.get(ol.OverlayProperty.POSITIONING)) }; goog.exportProperty(ol.Overlay.prototype, "getPositioning", ol.Overlay.prototype.getPositioning); ol.Overlay.prototype.handleElementChanged = function() { goog.dom.removeChildren(this.element_); var element = this.getElement(); if(goog.isDefAndNotNull(element)) { goog.dom.append((this.element_), element) } }; ol.Overlay.prototype.handleMapChanged = function() { if(!goog.isNull(this.mapPostrenderListenerKey_)) { goog.dom.removeNode(this.element_); goog.events.unlistenByKey(this.mapPostrenderListenerKey_); this.mapPostrenderListenerKey_ = null } var map = this.getMap(); if(goog.isDefAndNotNull(map)) { this.mapPostrenderListenerKey_ = goog.events.listen(map, ol.MapEventType.POSTRENDER, this.handleMapPostrender, false, this); this.updatePixelPosition_(); var container = this.stopEvent_ ? map.getOverlayContainerStopEvent() : map.getOverlayContainer(); if(this.insertFirst_) { goog.dom.insertChildAt((container), this.element_, 0) }else { goog.dom.append((container), this.element_) } } }; ol.Overlay.prototype.handleMapPostrender = function() { this.updatePixelPosition_() }; ol.Overlay.prototype.handlePositionChanged = function() { this.updatePixelPosition_() }; ol.Overlay.prototype.handlePositioningChanged = function() { this.updatePixelPosition_() }; ol.Overlay.prototype.setElement = function(element) { this.set(ol.OverlayProperty.ELEMENT, element) }; goog.exportProperty(ol.Overlay.prototype, "setElement", ol.Overlay.prototype.setElement); ol.Overlay.prototype.setMap = function(map) { this.set(ol.OverlayProperty.MAP, map) }; goog.exportProperty(ol.Overlay.prototype, "setMap", ol.Overlay.prototype.setMap); ol.Overlay.prototype.setPosition = function(position) { this.set(ol.OverlayProperty.POSITION, position) }; goog.exportProperty(ol.Overlay.prototype, "setPosition", ol.Overlay.prototype.setPosition); ol.Overlay.prototype.setPositioning = function(positioning) { this.set(ol.OverlayProperty.POSITIONING, positioning) }; goog.exportProperty(ol.Overlay.prototype, "setPositioning", ol.Overlay.prototype.setPositioning); ol.Overlay.prototype.updatePixelPosition_ = function() { var map = this.getMap(); var position = this.getPosition(); if(!goog.isDef(map) || !map.isRendered() || !goog.isDef(position)) { if(this.rendered_.visible) { goog.style.setElementShown(this.element_, false); this.rendered_.visible = false } return } var pixel = map.getPixelFromCoordinate(position); goog.asserts.assert(!goog.isNull(pixel)); var mapSize = map.getSize(); goog.asserts.assert(goog.isDef(mapSize)); var style = this.element_.style; var positioning = this.getPositioning(); if(positioning == ol.OverlayPositioning.BOTTOM_RIGHT || positioning == ol.OverlayPositioning.CENTER_RIGHT || positioning == ol.OverlayPositioning.TOP_RIGHT) { if(this.rendered_.left_ !== "") { this.rendered_.left_ = style.left = "" } var right = Math.round(mapSize[0] - pixel[0]) + "px"; if(this.rendered_.right_ != right) { this.rendered_.right_ = style.right = right } }else { if(this.rendered_.right_ !== "") { this.rendered_.right_ = style.right = "" } var offsetX = -this.offsetX_; if(positioning == ol.OverlayPositioning.BOTTOM_CENTER || positioning == ol.OverlayPositioning.CENTER_CENTER || positioning == ol.OverlayPositioning.TOP_CENTER) { offsetX += goog.style.getSize(this.element_).width / 2 } var left = Math.round(pixel[0] - offsetX) + "px"; if(this.rendered_.left_ != left) { this.rendered_.left_ = style.left = left } } if(positioning == ol.OverlayPositioning.BOTTOM_LEFT || positioning == ol.OverlayPositioning.BOTTOM_CENTER || positioning == ol.OverlayPositioning.BOTTOM_RIGHT) { if(this.rendered_.top_ !== "") { this.rendered_.top_ = style.top = "" } var bottom = Math.round(mapSize[1] - pixel[1]) + "px"; if(this.rendered_.bottom_ != bottom) { this.rendered_.bottom_ = style.bottom = bottom } }else { if(this.rendered_.bottom_ !== "") { this.rendered_.bottom_ = style.bottom = "" } var offsetY = -this.offsetY_; if(positioning == ol.OverlayPositioning.CENTER_LEFT || positioning == ol.OverlayPositioning.CENTER_CENTER || positioning == ol.OverlayPositioning.CENTER_RIGHT) { offsetY += goog.style.getSize(this.element_).height / 2 } var top = Math.round(pixel[1] - offsetY) + "px"; if(this.rendered_.top_ != top) { this.rendered_.top_ = style.top = top } } if(!this.rendered_.visible) { goog.style.setElementShown(this.element_, true); this.rendered_.visible = true } }; goog.provide("googx.dom.fullscreen"); goog.provide("googx.dom.fullscreen.EventType"); goog.require("goog.dom"); goog.require("goog.userAgent"); googx.dom.fullscreen.EventType = {CHANGE:function() { if(goog.userAgent.WEBKIT) { return"webkitfullscreenchange" } if(goog.userAgent.GECKO) { return"mozfullscreenchange" } if(goog.userAgent.IE) { return"MSFullscreenChange" } return"fullscreenchange" }()}; googx.dom.fullscreen.isSupported = function(opt_domHelper) { var doc = googx.dom.fullscreen.getDocument_(opt_domHelper); var body = doc.body; return!!(body.webkitRequestFullscreen || body.mozRequestFullScreen && doc.mozFullScreenEnabled || body.msRequestFullscreen && doc.msFullscreenEnabled || body.requestFullscreen && doc.fullscreenEnabled) }; googx.dom.fullscreen.requestFullScreen = function(element) { if(element.webkitRequestFullscreen) { element.webkitRequestFullscreen() }else { if(element.mozRequestFullScreen) { element.mozRequestFullScreen() }else { if(element.msRequestFullscreen) { element.msRequestFullscreen() }else { if(element.requestFullscreen) { element.requestFullscreen() } } } } }; googx.dom.fullscreen.requestFullScreenWithKeys = function(element) { if(element.mozRequestFullScreenWithKeys) { element.mozRequestFullScreenWithKeys() }else { if(element.webkitRequestFullscreen) { element.webkitRequestFullscreen() }else { googx.dom.fullscreen.requestFullScreen(element) } } }; googx.dom.fullscreen.exitFullScreen = function(opt_domHelper) { var doc = googx.dom.fullscreen.getDocument_(opt_domHelper); if(doc.webkitCancelFullScreen) { doc.webkitCancelFullScreen() }else { if(doc.mozCancelFullScreen) { doc.mozCancelFullScreen() }else { if(doc.msExitFullscreen) { doc.msExitFullscreen() }else { if(doc.exitFullscreen) { doc.exitFullscreen() } } } } }; googx.dom.fullscreen.isFullScreen = function(opt_domHelper) { var doc = googx.dom.fullscreen.getDocument_(opt_domHelper); return!!(doc.webkitIsFullScreen || doc.mozFullScreen || doc.msFullscreenElement || doc.fullscreenElement) }; googx.dom.fullscreen.getDocument_ = function(opt_domHelper) { return opt_domHelper ? opt_domHelper.getDocument() : goog.dom.getDomHelper().getDocument() }; goog.provide("ol.control.FullScreen"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.dom.classes"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("googx.dom.fullscreen"); goog.require("googx.dom.fullscreen.EventType"); goog.require("ol.control.Control"); goog.require("ol.css"); goog.require("ol.pointer.PointerEventHandler"); ol.control.FullScreen = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.cssClassName_ = goog.isDef(options.className) ? options.className : "ol-full-screen"; var tipLabel = goog.isDef(options.tipLabel) ? options.tipLabel : "Toggle full-screen"; var tip = goog.dom.createDom(goog.dom.TagName.SPAN, {"role":"tooltip"}, tipLabel); var button = goog.dom.createDom(goog.dom.TagName.BUTTON, {"class":this.cssClassName_ + "-" + googx.dom.fullscreen.isFullScreen() + " ol-has-tooltip"}); goog.dom.appendChild(button, tip); var buttonHandler = new ol.pointer.PointerEventHandler(button); this.registerDisposable(buttonHandler); goog.events.listen(buttonHandler, ol.pointer.EventType.POINTERUP, this.handleClick_, false, this); goog.events.listen(button, [goog.events.EventType.MOUSEOUT, goog.events.EventType.FOCUSOUT], function() { this.blur() }, false); goog.events.listen(goog.global.document, googx.dom.fullscreen.EventType.CHANGE, this.handleFullScreenChange_, false, this); var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":this.cssClassName_ + " " + ol.css.CLASS_UNSELECTABLE + " " + (!googx.dom.fullscreen.isSupported() ? ol.css.CLASS_UNSUPPORTED : "")}, button); goog.base(this, {element:element, target:options.target}); this.keys_ = goog.isDef(options.keys) ? options.keys : false }; goog.inherits(ol.control.FullScreen, ol.control.Control); ol.control.FullScreen.prototype.handleClick_ = function(pointerEvent) { if(!googx.dom.fullscreen.isSupported()) { return } pointerEvent.browserEvent.preventDefault(); var map = this.getMap(); if(goog.isNull(map)) { return } if(googx.dom.fullscreen.isFullScreen()) { googx.dom.fullscreen.exitFullScreen() }else { var target = map.getTarget(); goog.asserts.assert(goog.isDefAndNotNull(target)); var element = goog.dom.getElement(target); goog.asserts.assert(goog.isDefAndNotNull(element)); if(this.keys_) { googx.dom.fullscreen.requestFullScreenWithKeys(element) }else { googx.dom.fullscreen.requestFullScreen(element) } } }; ol.control.FullScreen.prototype.handleFullScreenChange_ = function() { var opened = this.cssClassName_ + "-true"; var closed = this.cssClassName_ + "-false"; var anchor = goog.dom.getFirstElementChild(this.element); var map = this.getMap(); if(googx.dom.fullscreen.isFullScreen()) { goog.dom.classes.swap(anchor, closed, opened) }else { goog.dom.classes.swap(anchor, opened, closed) } if(!goog.isNull(map)) { map.updateSize() } }; goog.provide("ol.control.MousePosition"); goog.require("goog.array"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.style"); goog.require("ol.CoordinateFormatType"); goog.require("ol.Object"); goog.require("ol.Pixel"); goog.require("ol.TransformFunction"); goog.require("ol.control.Control"); goog.require("ol.proj"); goog.require("ol.proj.Projection"); ol.control.MousePositionProperty = {PROJECTION:"projection", COORDINATE_FORMAT:"coordinateFormat"}; ol.control.MousePosition = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var className = goog.isDef(options.className) ? options.className : "ol-mouse-position"; var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className}); goog.base(this, {element:element, target:options.target}); goog.events.listen(this, ol.Object.getChangeEventType(ol.control.MousePositionProperty.PROJECTION), this.handleProjectionChanged_, false, this); if(goog.isDef(options.coordinateFormat)) { this.setCoordinateFormat(options.coordinateFormat) } if(goog.isDef(options.projection)) { this.setProjection(ol.proj.get(options.projection)) } this.undefinedHTML_ = goog.isDef(options.undefinedHTML) ? options.undefinedHTML : ""; this.renderedHTML_ = element.innerHTML; this.mapProjection_ = null; this.transform_ = null; this.lastMouseMovePixel_ = null }; goog.inherits(ol.control.MousePosition, ol.control.Control); ol.control.MousePosition.prototype.handleMapPostrender = function(mapEvent) { var frameState = mapEvent.frameState; if(goog.isNull(frameState)) { this.mapProjection_ = null }else { if(this.mapProjection_ != frameState.view2DState.projection) { this.mapProjection_ = frameState.view2DState.projection; this.transform_ = null } } this.updateHTML_(this.lastMouseMovePixel_) }; ol.control.MousePosition.prototype.handleProjectionChanged_ = function() { this.transform_ = null }; ol.control.MousePosition.prototype.getCoordinateFormat = function() { return(this.get(ol.control.MousePositionProperty.COORDINATE_FORMAT)) }; goog.exportProperty(ol.control.MousePosition.prototype, "getCoordinateFormat", ol.control.MousePosition.prototype.getCoordinateFormat); ol.control.MousePosition.prototype.getProjection = function() { return(this.get(ol.control.MousePositionProperty.PROJECTION)) }; goog.exportProperty(ol.control.MousePosition.prototype, "getProjection", ol.control.MousePosition.prototype.getProjection); ol.control.MousePosition.prototype.handleMouseMove = function(browserEvent) { var map = this.getMap(); var eventPosition = goog.style.getRelativePosition(browserEvent, map.getViewport()); this.lastMouseMovePixel_ = [eventPosition.x, eventPosition.y]; this.updateHTML_(this.lastMouseMovePixel_) }; ol.control.MousePosition.prototype.handleMouseOut = function(browserEvent) { this.updateHTML_(null); this.lastMouseMovePixel_ = null }; ol.control.MousePosition.prototype.setMap = function(map) { goog.base(this, "setMap", map); if(!goog.isNull(map)) { var viewport = map.getViewport(); this.listenerKeys.push(goog.events.listen(viewport, goog.events.EventType.MOUSEMOVE, this.handleMouseMove, false, this), goog.events.listen(viewport, goog.events.EventType.MOUSEOUT, this.handleMouseOut, false, this)) } }; ol.control.MousePosition.prototype.setCoordinateFormat = function(format) { this.set(ol.control.MousePositionProperty.COORDINATE_FORMAT, format) }; goog.exportProperty(ol.control.MousePosition.prototype, "setCoordinateFormat", ol.control.MousePosition.prototype.setCoordinateFormat); ol.control.MousePosition.prototype.setProjection = function(projection) { this.set(ol.control.MousePositionProperty.PROJECTION, projection) }; goog.exportProperty(ol.control.MousePosition.prototype, "setProjection", ol.control.MousePosition.prototype.setProjection); ol.control.MousePosition.prototype.updateHTML_ = function(pixel) { var html = this.undefinedHTML_; if(!goog.isNull(pixel) && !goog.isNull(this.mapProjection_)) { if(goog.isNull(this.transform_)) { var projection = this.getProjection(); if(goog.isDef(projection)) { this.transform_ = ol.proj.getTransformFromProjections(this.mapProjection_, projection) }else { this.transform_ = ol.proj.identityTransform } } var map = this.getMap(); var coordinate = map.getCoordinateFromPixel(pixel); if(!goog.isNull(coordinate)) { this.transform_(coordinate, coordinate); var coordinateFormat = this.getCoordinateFormat(); if(goog.isDef(coordinateFormat)) { html = coordinateFormat(coordinate) }else { html = coordinate.toString() } } } if(!goog.isDef(this.renderedHTML_) || html != this.renderedHTML_) { this.element.innerHTML = html; this.renderedHTML_ = html } }; goog.provide("ol.control.ScaleLine"); goog.provide("ol.control.ScaleLineProperty"); goog.provide("ol.control.ScaleLineUnits"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.math"); goog.require("goog.style"); goog.require("ol.Object"); goog.require("ol.TransformFunction"); goog.require("ol.control.Control"); goog.require("ol.css"); goog.require("ol.proj"); goog.require("ol.proj.Units"); goog.require("ol.sphere.NORMAL"); ol.control.ScaleLineProperty = {UNITS:"units"}; ol.control.ScaleLineUnits = {DEGREES:"degrees", IMPERIAL:"imperial", NAUTICAL:"nautical", METRIC:"metric", US:"us"}; ol.control.ScaleLine = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var className = goog.isDef(options.className) ? options.className : "ol-scale-line"; this.innerElement_ = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + "-inner"}); this.element_ = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + " " + ol.css.CLASS_UNSELECTABLE}, this.innerElement_); this.view2DState_ = null; this.minWidth_ = goog.isDef(options.minWidth) ? options.minWidth : 64; this.renderedVisible_ = false; this.renderedWidth_ = undefined; this.renderedHTML_ = ""; this.toEPSG4326_ = null; goog.base(this, {element:this.element_, target:options.target}); goog.events.listen(this, ol.Object.getChangeEventType(ol.control.ScaleLineProperty.UNITS), this.handleUnitsChanged_, false, this); this.setUnits((options.units) || ol.control.ScaleLineUnits.METRIC) }; goog.inherits(ol.control.ScaleLine, ol.control.Control); ol.control.ScaleLine.LEADING_DIGITS = [1, 2, 5]; ol.control.ScaleLine.prototype.getUnits = function() { return(this.get(ol.control.ScaleLineProperty.UNITS)) }; goog.exportProperty(ol.control.ScaleLine.prototype, "getUnits", ol.control.ScaleLine.prototype.getUnits); ol.control.ScaleLine.prototype.handleMapPostrender = function(mapEvent) { var frameState = mapEvent.frameState; if(goog.isNull(frameState)) { this.view2DState_ = null }else { this.view2DState_ = frameState.view2DState } this.updateElement_() }; ol.control.ScaleLine.prototype.handleUnitsChanged_ = function() { this.updateElement_() }; ol.control.ScaleLine.prototype.setUnits = function(units) { this.set(ol.control.ScaleLineProperty.UNITS, units) }; goog.exportProperty(ol.control.ScaleLine.prototype, "setUnits", ol.control.ScaleLine.prototype.setUnits); ol.control.ScaleLine.prototype.updateElement_ = function() { var view2DState = this.view2DState_; if(goog.isNull(view2DState)) { if(this.renderedVisible_) { goog.style.setElementShown(this.element_, false); this.renderedVisible_ = false } return } var center = view2DState.center; var projection = view2DState.projection; var pointResolution = projection.getPointResolution(view2DState.resolution, center); var projectionUnits = projection.getUnits(); var cosLatitude; var units = this.getUnits(); if(projectionUnits == ol.proj.Units.DEGREES && (units == ol.control.ScaleLineUnits.METRIC || units == ol.control.ScaleLineUnits.IMPERIAL)) { this.toEPSG4326_ = null; cosLatitude = Math.cos(goog.math.toRadians(center[1])); pointResolution *= Math.PI * cosLatitude * ol.sphere.NORMAL.radius / 180; projectionUnits = ol.proj.Units.METERS }else { if((projectionUnits == ol.proj.Units.FEET || projectionUnits == ol.proj.Units.METERS) && units == ol.control.ScaleLineUnits.DEGREES) { if(goog.isNull(this.toEPSG4326_)) { this.toEPSG4326_ = ol.proj.getTransformFromProjections(projection, ol.proj.get("EPSG:4326")) } cosLatitude = Math.cos(goog.math.toRadians(this.toEPSG4326_(center)[1])); var radius = ol.sphere.NORMAL.radius; if(projectionUnits == ol.proj.Units.FEET) { radius /= 0.3048 } pointResolution *= 180 / (Math.PI * cosLatitude * radius); projectionUnits = ol.proj.Units.DEGREES }else { this.toEPSG4326_ = null } } goog.asserts.assert((units == ol.control.ScaleLineUnits.METRIC || units == ol.control.ScaleLineUnits.IMPERIAL) && projectionUnits == ol.proj.Units.METERS || units == ol.control.ScaleLineUnits.DEGREES && projectionUnits == ol.proj.Units.DEGREES); var nominalCount = this.minWidth_ * pointResolution; var suffix = ""; if(units == ol.control.ScaleLineUnits.DEGREES) { if(nominalCount < 1 / 60) { suffix = "\u2033"; pointResolution *= 3600 }else { if(nominalCount < 1) { suffix = "\u2032"; pointResolution *= 60 }else { suffix = "\u00b0" } } }else { if(units == ol.control.ScaleLineUnits.IMPERIAL) { if(nominalCount < 0.9144) { suffix = "in"; pointResolution /= 0.0254 }else { if(nominalCount < 1609.344) { suffix = "ft"; pointResolution /= 0.3048 }else { suffix = "mi"; pointResolution /= 1609.344 } } }else { if(units == ol.control.ScaleLineUnits.NAUTICAL) { pointResolution /= 1852; suffix = "nm" }else { if(units == ol.control.ScaleLineUnits.METRIC) { if(nominalCount < 1) { suffix = "mm"; pointResolution *= 1E3 }else { if(nominalCount < 1E3) { suffix = "m" }else { suffix = "km"; pointResolution /= 1E3 } } }else { if(units == ol.control.ScaleLineUnits.US) { if(nominalCount < 0.9144) { suffix = "in"; pointResolution *= 39.37 }else { if(nominalCount < 1609.344) { suffix = "ft"; pointResolution /= 0.30480061 }else { suffix = "mi"; pointResolution /= 1609.3472 } } }else { goog.asserts.fail() } } } } } var i = 3 * Math.floor(Math.log(this.minWidth_ * pointResolution) / Math.log(10)); var count, width; while(true) { count = ol.control.ScaleLine.LEADING_DIGITS[i % 3] * Math.pow(10, Math.floor(i / 3)); width = Math.round(count / pointResolution); if(width >= this.minWidth_) { break } ++i } var html = count + suffix; if(this.renderedHTML_ != html) { this.innerElement_.innerHTML = html; this.renderedHTML_ = html } if(this.renderedWidth_ != width) { this.innerElement_.style.width = width + "px"; this.renderedWidth_ = width } if(!this.renderedVisible_) { goog.style.setElementShown(this.element_, true); this.renderedVisible_ = true } }; goog.provide("goog.events.EventHandler"); goog.require("goog.Disposable"); goog.require("goog.events"); goog.require("goog.object"); goog.events.EventHandler = function(opt_handler) { goog.Disposable.call(this); this.handler_ = opt_handler; this.keys_ = {} }; goog.inherits(goog.events.EventHandler, goog.Disposable); goog.events.EventHandler.typeArray_ = []; goog.events.EventHandler.prototype.listen = function(src, type, opt_fn, opt_capture, opt_handler) { if(!goog.isArray(type)) { goog.events.EventHandler.typeArray_[0] = (type); type = goog.events.EventHandler.typeArray_ } for(var i = 0;i < type.length;i++) { var listenerObj = goog.events.listen(src, type[i], opt_fn || this, opt_capture || false, opt_handler || this.handler_ || this); if(goog.DEBUG && !listenerObj) { return this } var key = listenerObj.key; this.keys_[key] = listenerObj } return this }; goog.events.EventHandler.prototype.listenOnce = function(src, type, opt_fn, opt_capture, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { this.listenOnce(src, type[i], opt_fn, opt_capture, opt_handler) } }else { var listenerObj = goog.events.listenOnce(src, type, opt_fn || this, opt_capture, opt_handler || this.handler_ || this); var key = listenerObj.key; this.keys_[key] = listenerObj } return this }; goog.events.EventHandler.prototype.listenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) { wrapper.listen(src, listener, opt_capt, opt_handler || this.handler_ || this, this); return this }; goog.events.EventHandler.prototype.getListenerCount = function() { var count = 0; for(var key in this.keys_) { if(Object.prototype.hasOwnProperty.call(this.keys_, key)) { count++ } } return count }; goog.events.EventHandler.prototype.unlisten = function(src, type, opt_fn, opt_capture, opt_handler) { if(goog.isArray(type)) { for(var i = 0;i < type.length;i++) { this.unlisten(src, type[i], opt_fn, opt_capture, opt_handler) } }else { var listener = goog.events.getListener(src, type, opt_fn || this, opt_capture, opt_handler || this.handler_ || this); if(listener) { goog.events.unlistenByKey(listener); delete this.keys_[listener.key] } } return this }; goog.events.EventHandler.prototype.unlistenWithWrapper = function(src, wrapper, listener, opt_capt, opt_handler) { wrapper.unlisten(src, listener, opt_capt, opt_handler || this.handler_ || this, this); return this }; goog.events.EventHandler.prototype.removeAll = function() { goog.object.forEach(this.keys_, goog.events.unlistenByKey); this.keys_ = {} }; goog.events.EventHandler.prototype.disposeInternal = function() { goog.events.EventHandler.superClass_.disposeInternal.call(this); this.removeAll() }; goog.events.EventHandler.prototype.handleEvent = function(e) { throw Error("EventHandler.handleEvent not implemented"); }; goog.provide("goog.style.bidi"); goog.require("goog.dom"); goog.require("goog.style"); goog.require("goog.userAgent"); goog.style.bidi.getScrollLeft = function(element) { var isRtl = goog.style.isRightToLeft(element); if(isRtl && goog.userAgent.GECKO) { return-element.scrollLeft }else { if(isRtl && !(goog.userAgent.IE && goog.userAgent.isVersionOrHigher("8"))) { var overflowX = goog.style.getComputedOverflowX(element); if(overflowX == "visible") { return element.scrollLeft }else { return element.scrollWidth - element.clientWidth - element.scrollLeft } } } return element.scrollLeft }; goog.style.bidi.getOffsetStart = function(element) { var offsetLeftForReal = element.offsetLeft; var bestParent = element.offsetParent; if(!bestParent && goog.style.getComputedPosition(element) == "fixed") { bestParent = goog.dom.getOwnerDocument(element).documentElement } if(!bestParent) { return offsetLeftForReal } if(goog.userAgent.GECKO) { var borderWidths = goog.style.getBorderBox(bestParent); offsetLeftForReal += borderWidths.left }else { if(goog.userAgent.isDocumentModeOrHigher(8)) { var borderWidths = goog.style.getBorderBox(bestParent); offsetLeftForReal -= borderWidths.left } } if(goog.style.isRightToLeft(bestParent)) { var elementRightOffset = offsetLeftForReal + element.offsetWidth; return bestParent.clientWidth - elementRightOffset } return offsetLeftForReal }; goog.style.bidi.setScrollOffset = function(element, offsetStart) { offsetStart = Math.max(offsetStart, 0); if(!goog.style.isRightToLeft(element)) { element.scrollLeft = offsetStart }else { if(goog.userAgent.GECKO) { element.scrollLeft = -offsetStart }else { if(!(goog.userAgent.IE && goog.userAgent.isVersionOrHigher("8"))) { element.scrollLeft = element.scrollWidth - offsetStart - element.clientWidth }else { element.scrollLeft = offsetStart } } } }; goog.style.bidi.setPosition = function(elem, left, top, isRtl) { if(!goog.isNull(top)) { elem.style.top = top + "px" } if(isRtl) { elem.style.right = left + "px"; elem.style.left = "" }else { elem.style.left = left + "px"; elem.style.right = "" } }; goog.provide("goog.fx.DragEvent"); goog.provide("goog.fx.Dragger"); goog.provide("goog.fx.Dragger.EventType"); goog.require("goog.dom"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.events.EventHandler"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.math.Coordinate"); goog.require("goog.math.Rect"); goog.require("goog.style"); goog.require("goog.style.bidi"); goog.require("goog.userAgent"); goog.fx.Dragger = function(target, opt_handle, opt_limits) { goog.events.EventTarget.call(this); this.target = target; this.handle = opt_handle || target; this.limits = opt_limits || new goog.math.Rect(NaN, NaN, NaN, NaN); this.document_ = goog.dom.getOwnerDocument(target); this.eventHandler_ = new goog.events.EventHandler(this); this.registerDisposable(this.eventHandler_); goog.events.listen(this.handle, [goog.events.EventType.TOUCHSTART, goog.events.EventType.MOUSEDOWN], this.startDrag, false, this) }; goog.inherits(goog.fx.Dragger, goog.events.EventTarget); goog.fx.Dragger.HAS_SET_CAPTURE_ = goog.userAgent.IE || goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher("1.9.3"); goog.fx.Dragger.EventType = {EARLY_CANCEL:"earlycancel", START:"start", BEFOREDRAG:"beforedrag", DRAG:"drag", END:"end"}; goog.fx.Dragger.prototype.target; goog.fx.Dragger.prototype.handle; goog.fx.Dragger.prototype.limits; goog.fx.Dragger.prototype.rightToLeft_; goog.fx.Dragger.prototype.clientX = 0; goog.fx.Dragger.prototype.clientY = 0; goog.fx.Dragger.prototype.screenX = 0; goog.fx.Dragger.prototype.screenY = 0; goog.fx.Dragger.prototype.startX = 0; goog.fx.Dragger.prototype.startY = 0; goog.fx.Dragger.prototype.deltaX = 0; goog.fx.Dragger.prototype.deltaY = 0; goog.fx.Dragger.prototype.pageScroll; goog.fx.Dragger.prototype.enabled_ = true; goog.fx.Dragger.prototype.dragging_ = false; goog.fx.Dragger.prototype.hysteresisDistanceSquared_ = 0; goog.fx.Dragger.prototype.mouseDownTime_ = 0; goog.fx.Dragger.prototype.document_; goog.fx.Dragger.prototype.scrollTarget_; goog.fx.Dragger.prototype.ieDragStartCancellingOn_ = false; goog.fx.Dragger.prototype.useRightPositioningForRtl_ = false; goog.fx.Dragger.prototype.enableRightPositioningForRtl = function(useRightPositioningForRtl) { this.useRightPositioningForRtl_ = useRightPositioningForRtl }; goog.fx.Dragger.prototype.getHandler = function() { return this.eventHandler_ }; goog.fx.Dragger.prototype.setLimits = function(limits) { this.limits = limits || new goog.math.Rect(NaN, NaN, NaN, NaN) }; goog.fx.Dragger.prototype.setHysteresis = function(distance) { this.hysteresisDistanceSquared_ = Math.pow(distance, 2) }; goog.fx.Dragger.prototype.getHysteresis = function() { return Math.sqrt(this.hysteresisDistanceSquared_) }; goog.fx.Dragger.prototype.setScrollTarget = function(scrollTarget) { this.scrollTarget_ = scrollTarget }; goog.fx.Dragger.prototype.setCancelIeDragStart = function(cancelIeDragStart) { this.ieDragStartCancellingOn_ = cancelIeDragStart }; goog.fx.Dragger.prototype.getEnabled = function() { return this.enabled_ }; goog.fx.Dragger.prototype.setEnabled = function(enabled) { this.enabled_ = enabled }; goog.fx.Dragger.prototype.disposeInternal = function() { goog.fx.Dragger.superClass_.disposeInternal.call(this); goog.events.unlisten(this.handle, [goog.events.EventType.TOUCHSTART, goog.events.EventType.MOUSEDOWN], this.startDrag, false, this); this.cleanUpAfterDragging_(); this.target = null; this.handle = null }; goog.fx.Dragger.prototype.isRightToLeft_ = function() { if(!goog.isDef(this.rightToLeft_)) { this.rightToLeft_ = goog.style.isRightToLeft(this.target) } return this.rightToLeft_ }; goog.fx.Dragger.prototype.startDrag = function(e) { var isMouseDown = e.type == goog.events.EventType.MOUSEDOWN; if(this.enabled_ && !this.dragging_ && (!isMouseDown || e.isMouseActionButton())) { this.maybeReinitTouchEvent_(e); if(this.hysteresisDistanceSquared_ == 0) { if(this.fireDragStart_(e)) { this.dragging_ = true; e.preventDefault() }else { return } }else { e.preventDefault() } this.setupDragHandlers(); this.clientX = this.startX = e.clientX; this.clientY = this.startY = e.clientY; this.screenX = e.screenX; this.screenY = e.screenY; this.deltaX = this.useRightPositioningForRtl_ ? goog.style.bidi.getOffsetStart(this.target) : this.target.offsetLeft; this.deltaY = this.target.offsetTop; this.pageScroll = goog.dom.getDomHelper(this.document_).getDocumentScroll(); this.mouseDownTime_ = goog.now() }else { this.dispatchEvent(goog.fx.Dragger.EventType.EARLY_CANCEL) } }; goog.fx.Dragger.prototype.setupDragHandlers = function() { var doc = this.document_; var docEl = doc.documentElement; var useCapture = !goog.fx.Dragger.HAS_SET_CAPTURE_; this.eventHandler_.listen(doc, [goog.events.EventType.TOUCHMOVE, goog.events.EventType.MOUSEMOVE], this.handleMove_, useCapture); this.eventHandler_.listen(doc, [goog.events.EventType.TOUCHEND, goog.events.EventType.MOUSEUP], this.endDrag, useCapture); if(goog.fx.Dragger.HAS_SET_CAPTURE_) { docEl.setCapture(false); this.eventHandler_.listen(docEl, goog.events.EventType.LOSECAPTURE, this.endDrag) }else { this.eventHandler_.listen(goog.dom.getWindow(doc), goog.events.EventType.BLUR, this.endDrag) } if(goog.userAgent.IE && this.ieDragStartCancellingOn_) { this.eventHandler_.listen(doc, goog.events.EventType.DRAGSTART, goog.events.Event.preventDefault) } if(this.scrollTarget_) { this.eventHandler_.listen(this.scrollTarget_, goog.events.EventType.SCROLL, this.onScroll_, useCapture) } }; goog.fx.Dragger.prototype.fireDragStart_ = function(e) { return this.dispatchEvent(new goog.fx.DragEvent(goog.fx.Dragger.EventType.START, this, e.clientX, e.clientY, e)) }; goog.fx.Dragger.prototype.cleanUpAfterDragging_ = function() { this.eventHandler_.removeAll(); if(goog.fx.Dragger.HAS_SET_CAPTURE_) { this.document_.releaseCapture() } }; goog.fx.Dragger.prototype.endDrag = function(e, opt_dragCanceled) { this.cleanUpAfterDragging_(); if(this.dragging_) { this.maybeReinitTouchEvent_(e); this.dragging_ = false; var x = this.limitX(this.deltaX); var y = this.limitY(this.deltaY); var dragCanceled = opt_dragCanceled || e.type == goog.events.EventType.TOUCHCANCEL; this.dispatchEvent(new goog.fx.DragEvent(goog.fx.Dragger.EventType.END, this, e.clientX, e.clientY, e, x, y, dragCanceled)) }else { this.dispatchEvent(goog.fx.Dragger.EventType.EARLY_CANCEL) } }; goog.fx.Dragger.prototype.endDragCancel = function(e) { this.endDrag(e, true) }; goog.fx.Dragger.prototype.maybeReinitTouchEvent_ = function(e) { var type = e.type; if(type == goog.events.EventType.TOUCHSTART || type == goog.events.EventType.TOUCHMOVE) { e.init(e.getBrowserEvent().targetTouches[0], e.currentTarget) }else { if(type == goog.events.EventType.TOUCHEND || type == goog.events.EventType.TOUCHCANCEL) { e.init(e.getBrowserEvent().changedTouches[0], e.currentTarget) } } }; goog.fx.Dragger.prototype.handleMove_ = function(e) { if(this.enabled_) { this.maybeReinitTouchEvent_(e); var sign = this.useRightPositioningForRtl_ && this.isRightToLeft_() ? -1 : 1; var dx = sign * (e.clientX - this.clientX); var dy = e.clientY - this.clientY; this.clientX = e.clientX; this.clientY = e.clientY; this.screenX = e.screenX; this.screenY = e.screenY; if(!this.dragging_) { var diffX = this.startX - this.clientX; var diffY = this.startY - this.clientY; var distance = diffX * diffX + diffY * diffY; if(distance > this.hysteresisDistanceSquared_) { if(this.fireDragStart_(e)) { this.dragging_ = true }else { if(!this.isDisposed()) { this.endDrag(e) } return } } } var pos = this.calculatePosition_(dx, dy); var x = pos.x; var y = pos.y; if(this.dragging_) { var rv = this.dispatchEvent(new goog.fx.DragEvent(goog.fx.Dragger.EventType.BEFOREDRAG, this, e.clientX, e.clientY, e, x, y)); if(rv) { this.doDrag(e, x, y, false); e.preventDefault() } } } }; goog.fx.Dragger.prototype.calculatePosition_ = function(dx, dy) { var pageScroll = goog.dom.getDomHelper(this.document_).getDocumentScroll(); dx += pageScroll.x - this.pageScroll.x; dy += pageScroll.y - this.pageScroll.y; this.pageScroll = pageScroll; this.deltaX += dx; this.deltaY += dy; var x = this.limitX(this.deltaX); var y = this.limitY(this.deltaY); return new goog.math.Coordinate(x, y) }; goog.fx.Dragger.prototype.onScroll_ = function(e) { var pos = this.calculatePosition_(0, 0); e.clientX = this.clientX; e.clientY = this.clientY; this.doDrag(e, pos.x, pos.y, true) }; goog.fx.Dragger.prototype.doDrag = function(e, x, y, dragFromScroll) { this.defaultAction(x, y); this.dispatchEvent(new goog.fx.DragEvent(goog.fx.Dragger.EventType.DRAG, this, e.clientX, e.clientY, e, x, y)) }; goog.fx.Dragger.prototype.limitX = function(x) { var rect = this.limits; var left = !isNaN(rect.left) ? rect.left : null; var width = !isNaN(rect.width) ? rect.width : 0; var maxX = left != null ? left + width : Infinity; var minX = left != null ? left : -Infinity; return Math.min(maxX, Math.max(minX, x)) }; goog.fx.Dragger.prototype.limitY = function(y) { var rect = this.limits; var top = !isNaN(rect.top) ? rect.top : null; var height = !isNaN(rect.height) ? rect.height : 0; var maxY = top != null ? top + height : Infinity; var minY = top != null ? top : -Infinity; return Math.min(maxY, Math.max(minY, y)) }; goog.fx.Dragger.prototype.defaultAction = function(x, y) { if(this.useRightPositioningForRtl_ && this.isRightToLeft_()) { this.target.style.right = x + "px" }else { this.target.style.left = x + "px" } this.target.style.top = y + "px" }; goog.fx.Dragger.prototype.isDragging = function() { return this.dragging_ }; goog.fx.DragEvent = function(type, dragobj, clientX, clientY, browserEvent, opt_actX, opt_actY, opt_dragCanceled) { goog.events.Event.call(this, type); this.clientX = clientX; this.clientY = clientY; this.browserEvent = browserEvent; this.left = goog.isDef(opt_actX) ? opt_actX : dragobj.deltaX; this.top = goog.isDef(opt_actY) ? opt_actY : dragobj.deltaY; this.dragger = dragobj; this.dragCanceled = !!opt_dragCanceled }; goog.inherits(goog.fx.DragEvent, goog.events.Event); goog.provide("ol.control.ZoomSlider"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.events.EventType"); goog.require("goog.fx.Dragger"); goog.require("goog.fx.Dragger.EventType"); goog.require("goog.math"); goog.require("goog.math.Rect"); goog.require("goog.style"); goog.require("ol"); goog.require("ol.animation"); goog.require("ol.control.Control"); goog.require("ol.css"); goog.require("ol.easing"); ol.control.ZoomSlider = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.currentResolution_ = undefined; this.direction_ = ol.control.ZoomSlider.direction.VERTICAL; this.sliderInitialized_ = false; var className = goog.isDef(options.className) ? options.className : "ol-zoomslider"; var thumbElement = goog.dom.createDom(goog.dom.TagName.DIV, [className + "-thumb", ol.css.CLASS_UNSELECTABLE]); var sliderElement = goog.dom.createDom(goog.dom.TagName.DIV, [className, ol.css.CLASS_UNSELECTABLE], thumbElement); this.dragger_ = new goog.fx.Dragger(thumbElement); this.registerDisposable(this.dragger_); goog.events.listen(this.dragger_, [goog.fx.Dragger.EventType.DRAG, goog.fx.Dragger.EventType.END], this.handleSliderChange_, undefined, this); goog.events.listen(sliderElement, goog.events.EventType.CLICK, this.handleContainerClick_, false, this); goog.events.listen(thumbElement, goog.events.EventType.CLICK, goog.events.Event.stopPropagation); goog.base(this, {element:sliderElement}) }; goog.inherits(ol.control.ZoomSlider, ol.control.Control); ol.control.ZoomSlider.direction = {VERTICAL:0, HORIZONTAL:1}; ol.control.ZoomSlider.prototype.setMap = function(map) { goog.base(this, "setMap", map); if(!goog.isNull(map)) { map.render() } }; ol.control.ZoomSlider.prototype.initSlider_ = function() { var container = this.element, thumb = goog.dom.getFirstElementChild(container), elemSize = goog.style.getContentBoxSize(container), thumbBounds = goog.style.getBounds(thumb), thumbMargins = goog.style.getMarginBox(thumb), thumbBorderBox = goog.style.getBorderBox(thumb), w = elemSize.width - thumbMargins.left - thumbMargins.right - thumbBorderBox.left - thumbBorderBox.right - thumbBounds.width, h = elemSize.height - thumbMargins.top - thumbMargins.bottom - thumbBorderBox.top - thumbBorderBox.bottom - thumbBounds.height, limits; if(elemSize.width > elemSize.height) { this.direction_ = ol.control.ZoomSlider.direction.HORIZONTAL; limits = new goog.math.Rect(0, 0, w, 0) }else { this.direction_ = ol.control.ZoomSlider.direction.VERTICAL; limits = new goog.math.Rect(0, 0, 0, h) } this.dragger_.setLimits(limits); this.sliderInitialized_ = true }; ol.control.ZoomSlider.prototype.handleMapPostrender = function(mapEvent) { if(goog.isNull(mapEvent.frameState)) { return } goog.asserts.assert(goog.isDefAndNotNull(mapEvent.frameState.view2DState)); if(!this.sliderInitialized_) { this.initSlider_() } var res = mapEvent.frameState.view2DState.resolution; if(res !== this.currentResolution_) { this.currentResolution_ = res; this.positionThumbForResolution_(res) } }; ol.control.ZoomSlider.prototype.handleContainerClick_ = function(browserEvent) { var map = this.getMap(); var view = map.getView().getView2D(); var resolution; var amountDragged = this.amountDragged_(browserEvent.offsetX, browserEvent.offsetY); resolution = this.resolutionForAmount_(amountDragged); goog.asserts.assert(goog.isDef(resolution)); map.beforeRender(ol.animation.zoom({resolution:resolution, duration:ol.ZOOMSLIDER_ANIMATION_DURATION, easing:ol.easing.easeOut})); resolution = view.constrainResolution(resolution); view.setResolution(resolution) }; ol.control.ZoomSlider.prototype.positionThumbForResolution_ = function(res) { var amount = this.amountForResolution_(res), dragger = this.dragger_, thumb = goog.dom.getFirstElementChild(this.element); if(this.direction_ == ol.control.ZoomSlider.direction.HORIZONTAL) { var left = dragger.limits.left + dragger.limits.width * amount; goog.style.setPosition(thumb, left) }else { var top = dragger.limits.top + dragger.limits.height * amount; goog.style.setPosition(thumb, dragger.limits.left, top) } }; ol.control.ZoomSlider.prototype.amountDragged_ = function(x, y) { var draggerLimits = this.dragger_.limits, amount = 0; if(this.direction_ === ol.control.ZoomSlider.direction.HORIZONTAL) { amount = (x - draggerLimits.left) / draggerLimits.width }else { amount = (y - draggerLimits.top) / draggerLimits.height } return amount }; ol.control.ZoomSlider.prototype.resolutionForAmount_ = function(amount) { amount = (goog.math.clamp(amount, 0, 1) - 1) * -1; var fn = this.getMap().getView().getView2D().getResolutionForValueFunction(); return fn(amount) }; ol.control.ZoomSlider.prototype.amountForResolution_ = function(res) { var fn = this.getMap().getView().getView2D().getValueForResolutionFunction(); var value = fn(res); return(value - 1) * -1 }; ol.control.ZoomSlider.prototype.handleSliderChange_ = function(e) { var map = this.getMap(); var view = map.getView().getView2D(); var resolution; if(e.type === goog.fx.Dragger.EventType.DRAG) { var amountDragged = this.amountDragged_(e.left, e.top); resolution = this.resolutionForAmount_(amountDragged); if(resolution !== this.currentResolution_) { this.currentResolution_ = resolution; view.setResolution(resolution) } }else { goog.asserts.assert(goog.isDef(this.currentResolution_)); map.beforeRender(ol.animation.zoom({resolution:this.currentResolution_, duration:ol.ZOOMSLIDER_ANIMATION_DURATION, easing:ol.easing.easeOut})); resolution = view.constrainResolution(this.currentResolution_); view.setResolution(resolution) } }; goog.provide("ol.control.ZoomToExtent"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("ol.control.Control"); goog.require("ol.css"); goog.require("ol.pointer.PointerEventHandler"); ol.control.ZoomToExtent = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.extent_ = goog.isDef(options.extent) ? options.extent : null; var className = goog.isDef(options.className) ? options.className : "ol-zoom-extent"; var tipLabel = goog.isDef(options.tipLabel) ? options.tipLabel : "Fit to extent"; var tip = goog.dom.createDom(goog.dom.TagName.SPAN, {"role":"tooltip"}, tipLabel); var element = goog.dom.createDom(goog.dom.TagName.DIV, {"class":className + " " + ol.css.CLASS_UNSELECTABLE}); var button = goog.dom.createDom(goog.dom.TagName.BUTTON, {"class":"ol-has-tooltip"}); goog.dom.appendChild(button, tip); goog.dom.appendChild(element, button); var buttonHandler = new ol.pointer.PointerEventHandler(button); this.registerDisposable(buttonHandler); goog.events.listen(buttonHandler, ol.pointer.EventType.POINTERUP, this.handleZoomToExtent_, false, this); goog.events.listen(button, [goog.events.EventType.MOUSEOUT, goog.events.EventType.FOCUSOUT], function() { this.blur() }, false); goog.base(this, {element:element, target:options.target}) }; goog.inherits(ol.control.ZoomToExtent, ol.control.Control); ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function(pointerEvent) { pointerEvent.browserEvent.preventDefault(); var map = this.getMap(); var view = map.getView(); goog.asserts.assert(goog.isDef(view)); var view2D = view.getView2D(); var extent = goog.isNull(this.extent_) ? view2D.getProjection().getExtent() : this.extent_; view2D.fitExtent(extent, map.getSize()) }; goog.provide("ol.dom.Input"); goog.provide("ol.dom.InputProperty"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("ol.Object"); ol.dom.InputProperty = {VALUE:"value", CHECKED:"checked"}; ol.dom.Input = function(target) { goog.base(this); this.target_ = (target); goog.events.listen(this.target_, [goog.events.EventType.CHANGE, goog.events.EventType.INPUT], this.handleInputChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.dom.InputProperty.VALUE), this.handleValueChanged_, false, this); goog.events.listen(this, ol.Object.getChangeEventType(ol.dom.InputProperty.CHECKED), this.handleCheckedChanged_, false, this) }; goog.inherits(ol.dom.Input, ol.Object); ol.dom.Input.prototype.getChecked = function() { return(this.get(ol.dom.InputProperty.CHECKED)) }; goog.exportProperty(ol.dom.Input.prototype, "getChecked", ol.dom.Input.prototype.getChecked); ol.dom.Input.prototype.getValue = function() { return(this.get(ol.dom.InputProperty.VALUE)) }; goog.exportProperty(ol.dom.Input.prototype, "getValue", ol.dom.Input.prototype.getValue); ol.dom.Input.prototype.setValue = function(value) { this.set(ol.dom.InputProperty.VALUE, value) }; goog.exportProperty(ol.dom.Input.prototype, "setValue", ol.dom.Input.prototype.setValue); ol.dom.Input.prototype.setChecked = function(checked) { this.set(ol.dom.InputProperty.CHECKED, checked) }; goog.exportProperty(ol.dom.Input.prototype, "setChecked", ol.dom.Input.prototype.setChecked); ol.dom.Input.prototype.handleInputChanged_ = function(browserEvent) { goog.asserts.assert(browserEvent.currentTarget == this.target_); var target = this.target_; if(target.type === "checkbox" || target.type === "radio") { this.setChecked(target.checked) }else { this.setValue(target.value) } }; ol.dom.Input.prototype.handleCheckedChanged_ = function(event) { this.target_.checked = (this.getChecked()) }; ol.dom.Input.prototype.handleValueChanged_ = function(event) { this.target_.value = (this.getValue()) }; goog.provide("ol.format.Feature"); goog.require("goog.functions"); ol.format.Feature = function() { }; ol.format.Feature.prototype.getExtensions = goog.abstractMethod; ol.format.Feature.prototype.getType = goog.abstractMethod; ol.format.Feature.prototype.readFeature = goog.abstractMethod; ol.format.Feature.prototype.readFeatures = goog.abstractMethod; ol.format.Feature.prototype.readGeometry = goog.abstractMethod; ol.format.Feature.prototype.readProjection = goog.abstractMethod; ol.format.Feature.prototype.writeFeature = goog.abstractMethod; ol.format.Feature.prototype.writeFeatures = goog.abstractMethod; ol.format.Feature.prototype.writeGeometry = goog.abstractMethod; goog.provide("ol.format.FormatType"); ol.format.FormatType = {BINARY:"binary", JSON:"json", TEXT:"text", XML:"xml"}; goog.provide("goog.dom.xml"); goog.require("goog.dom"); goog.require("goog.dom.NodeType"); goog.dom.xml.MAX_XML_SIZE_KB = 2 * 1024; goog.dom.xml.MAX_ELEMENT_DEPTH = 256; goog.dom.xml.createDocument = function(opt_rootTagName, opt_namespaceUri) { if(opt_namespaceUri && !opt_rootTagName) { throw Error("Can't create document with namespace and no root tag"); } if(document.implementation && document.implementation.createDocument) { return document.implementation.createDocument(opt_namespaceUri || "", opt_rootTagName || "", null) }else { if(typeof ActiveXObject != "undefined") { var doc = goog.dom.xml.createMsXmlDocument_(); if(doc) { if(opt_rootTagName) { doc.appendChild(doc.createNode(goog.dom.NodeType.ELEMENT, opt_rootTagName, opt_namespaceUri || "")) } return doc } } } throw Error("Your browser does not support creating new documents"); }; goog.dom.xml.loadXml = function(xml) { if(typeof DOMParser != "undefined") { return(new DOMParser).parseFromString(xml, "application/xml") }else { if(typeof ActiveXObject != "undefined") { var doc = goog.dom.xml.createMsXmlDocument_(); doc.loadXML(xml); return doc } } throw Error("Your browser does not support loading xml documents"); }; goog.dom.xml.serialize = function(xml) { if(typeof XMLSerializer != "undefined") { return(new XMLSerializer).serializeToString(xml) } var text = xml.xml; if(text) { return text } throw Error("Your browser does not support serializing XML documents"); }; goog.dom.xml.selectSingleNode = function(node, path) { if(typeof node.selectSingleNode != "undefined") { var doc = goog.dom.getOwnerDocument(node); if(typeof doc.setProperty != "undefined") { doc.setProperty("SelectionLanguage", "XPath") } return node.selectSingleNode(path) }else { if(document.implementation.hasFeature("XPath", "3.0")) { var doc = goog.dom.getOwnerDocument(node); var resolver = doc.createNSResolver(doc.documentElement); var result = doc.evaluate(path, node, resolver, XPathResult.FIRST_ORDERED_NODE_TYPE, null); return result.singleNodeValue } } return null }; goog.dom.xml.selectNodes = function(node, path) { if(typeof node.selectNodes != "undefined") { var doc = goog.dom.getOwnerDocument(node); if(typeof doc.setProperty != "undefined") { doc.setProperty("SelectionLanguage", "XPath") } return node.selectNodes(path) }else { if(document.implementation.hasFeature("XPath", "3.0")) { var doc = goog.dom.getOwnerDocument(node); var resolver = doc.createNSResolver(doc.documentElement); var nodes = doc.evaluate(path, node, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); var results = []; var count = nodes.snapshotLength; for(var i = 0;i < count;i++) { results.push(nodes.snapshotItem(i)) } return results }else { return[] } } }; goog.dom.xml.setAttributes = function(element, attributes) { for(var key in attributes) { if(attributes.hasOwnProperty(key)) { element.setAttribute(key, attributes[key]) } } }; goog.dom.xml.createMsXmlDocument_ = function() { var doc = new ActiveXObject("MSXML2.DOMDocument"); if(doc) { doc.resolveExternals = false; doc.validateOnParse = false; try { doc.setProperty("ProhibitDTD", true); doc.setProperty("MaxXMLSize", goog.dom.xml.MAX_XML_SIZE_KB); doc.setProperty("MaxElementDepth", goog.dom.xml.MAX_ELEMENT_DEPTH) }catch(e) { } } return doc }; goog.provide("ol.xml"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom.NodeType"); goog.require("goog.dom.xml"); goog.require("goog.object"); goog.require("goog.userAgent"); ol.xml.NodeStackItem; ol.xml.Parser; ol.xml.Serializer; ol.xml.DOCUMENT = goog.dom.xml.createDocument(); ol.xml.createElementNS_ = function(namespaceURI, qualifiedName) { return ol.xml.DOCUMENT.createElementNS(namespaceURI, qualifiedName) }; ol.xml.createElementNSActiveX_ = function(namespaceURI, qualifiedName) { if(goog.isNull(namespaceURI)) { namespaceURI = "" } return ol.xml.DOCUMENT.createNode(1, qualifiedName, namespaceURI) }; ol.xml.createElementNS = document.implementation && document.implementation.createDocument ? ol.xml.createElementNS_ : ol.xml.createElementNSActiveX_; ol.xml.getAllTextContent = function(node, normalizeWhitespace) { return ol.xml.getAllTextContent_(node, normalizeWhitespace, []).join("") }; ol.xml.getAllTextContent_ = function(node, normalizeWhitespace, accumulator) { if(node.nodeType == goog.dom.NodeType.CDATA_SECTION || node.nodeType == goog.dom.NodeType.TEXT) { if(normalizeWhitespace) { accumulator.push(String(node.nodeValue).replace(/(\r\n|\r|\n)/g, "")) }else { accumulator.push(node.nodeValue) } }else { var n; for(n = node.firstChild;!goog.isNull(n);n = n.nextSibling) { ol.xml.getAllTextContent_(n, normalizeWhitespace, accumulator) } } return accumulator }; ol.xml.getLocalName_ = function(node) { return node.localName }; ol.xml.getLocalNameIE_ = function(node) { var localName = node.localName; if(goog.isDef(localName)) { return localName } var baseName = node.baseName; goog.asserts.assert(goog.isDefAndNotNull(baseName)); return baseName }; ol.xml.getLocalName = goog.userAgent.IE ? ol.xml.getLocalNameIE_ : ol.xml.getLocalName_; ol.xml.isDocument_ = function(value) { return value instanceof Document }; ol.xml.isDocumentIE_ = function(value) { return goog.isObject(value) && value.nodeType == goog.dom.NodeType.DOCUMENT }; ol.xml.isDocument = goog.userAgent.IE ? ol.xml.isDocumentIE_ : ol.xml.isDocument_; ol.xml.isNode_ = function(value) { return value instanceof Node }; ol.xml.isNodeIE_ = function(value) { return goog.isObject(value) && goog.isDef(value.nodeType) }; ol.xml.isNode = goog.userAgent.IE ? ol.xml.isNodeIE_ : ol.xml.isNode_; ol.xml.getAttributeNS_ = function(node, namespaceURI, name) { return node.getAttributeNS(namespaceURI, name) || "" }; ol.xml.getAttributeNSActiveX_ = function(node, namespaceURI, name) { var attributeValue = ""; var attributeNode = ol.xml.getAttributeNodeNS(node, namespaceURI, name); if(goog.isDef(attributeNode)) { attributeValue = attributeNode.nodeValue } return attributeValue }; ol.xml.getAttributeNS = document.implementation && document.implementation.createDocument ? ol.xml.getAttributeNS_ : ol.xml.getAttributeNSActiveX_; ol.xml.getAttributeNodeNS_ = function(node, namespaceURI, name) { return node.getAttributeNodeNS(namespaceURI, name) }; ol.xml.getAttributeNodeNSActiveX_ = function(node, namespaceURI, name) { var attributeNode = null; var attributes = node.attributes; var potentialNode, fullName; for(var i = 0, len = attributes.length;i < len;++i) { potentialNode = attributes[i]; if(potentialNode.namespaceURI == namespaceURI) { fullName = potentialNode.prefix ? potentialNode.prefix + ":" + name : name; if(fullName == potentialNode.nodeName) { attributeNode = potentialNode; break } } } return attributeNode }; ol.xml.getAttributeNodeNS = document.implementation && document.implementation.createDocument ? ol.xml.getAttributeNodeNS_ : ol.xml.getAttributeNodeNSActiveX_; ol.xml.setAttributeNS_ = function(node, namespaceURI, name, value) { node.setAttributeNS(namespaceURI, name, value) }; ol.xml.setAttributeNSActiveX_ = function(node, namespaceURI, name, value) { if(!goog.isNull(namespaceURI)) { var attribute = node.ownerDocument.createNode(2, name, namespaceURI); attribute.nodeValue = value; node.setAttributeNode(attribute) }else { node.setAttribute(name, value) } }; ol.xml.setAttributeNS = document.implementation && document.implementation.createDocument ? ol.xml.setAttributeNS_ : ol.xml.setAttributeNSActiveX_; ol.xml.load = function(xml) { return(new DOMParser).parseFromString(xml, "application/xml") }; ol.xml.makeArrayExtender = function(valueReader, opt_this) { return function(node, objectStack) { var value = valueReader.call(opt_this, node, objectStack); if(goog.isDef(value)) { goog.asserts.assert(goog.isArray(value)); var array = (objectStack[objectStack.length - 1]); goog.asserts.assert(goog.isArray(array)); goog.array.extend(array, value) } } }; ol.xml.makeArrayPusher = function(valueReader, opt_this) { return function(node, objectStack) { var value = valueReader.call(opt_this, node, objectStack); if(goog.isDef(value)) { var array = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isArray(array)); array.push(value) } } }; ol.xml.makeReplacer = function(valueReader, opt_this) { return function(node, objectStack) { var value = valueReader.call(opt_this, node, objectStack); if(goog.isDef(value)) { objectStack[objectStack.length - 1] = value } } }; ol.xml.makeObjectPropertyPusher = function(valueReader, opt_property, opt_this) { goog.asserts.assert(goog.isDef(valueReader)); return function(node, objectStack) { var value = valueReader.call(opt_this, node, objectStack); if(goog.isDef(value)) { var object = (objectStack[objectStack.length - 1]); var property = goog.isDef(opt_property) ? opt_property : node.localName; goog.asserts.assert(goog.isObject(object)); var array = goog.object.setIfUndefined(object, property, []); array.push(value) } } }; ol.xml.makeObjectPropertySetter = function(valueReader, opt_property, opt_this) { goog.asserts.assert(goog.isDef(valueReader)); return function(node, objectStack) { var value = valueReader.call(opt_this, node, objectStack); if(goog.isDef(value)) { var object = (objectStack[objectStack.length - 1]); var property = goog.isDef(opt_property) ? opt_property : node.localName; goog.asserts.assert(goog.isObject(object)); goog.object.set(object, property, value) } } }; ol.xml.makeParsersNS = function(namespaceURIs, parsers, opt_parsersNS) { return(ol.xml.makeStructureNS(namespaceURIs, parsers, opt_parsersNS)) }; ol.xml.makeChildAppender = function(nodeWriter, opt_this) { return function(node, value, objectStack) { nodeWriter.call(opt_this, node, value, objectStack); var parent = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(parent)); var parentNode = parent.node; goog.asserts.assert(ol.xml.isNode(parentNode) || ol.xml.isDocument(parentNode)); parentNode.appendChild(node) } }; ol.xml.makeArraySerializer = function(nodeWriter, opt_this) { var serializersNS, nodeFactory; return function(node, value, objectStack) { if(!goog.isDef(serializersNS)) { serializersNS = {}; var serializers = {}; goog.object.set(serializers, node.localName, nodeWriter); goog.object.set(serializersNS, node.namespaceURI, serializers); nodeFactory = ol.xml.makeSimpleNodeFactory(node.localName) } ol.xml.serialize(serializersNS, nodeFactory, value, objectStack) } }; ol.xml.makeSimpleNodeFactory = function(opt_nodeName, opt_namespaceURI) { var fixedNodeName = opt_nodeName; return function(value, objectStack, opt_nodeName) { var context = objectStack[objectStack.length - 1]; var node = context.node; goog.asserts.assert(ol.xml.isNode(node) || ol.xml.isDocument(node)); var nodeName = fixedNodeName; if(!goog.isDef(nodeName)) { nodeName = opt_nodeName } var namespaceURI = opt_namespaceURI; if(!goog.isDef(opt_namespaceURI)) { namespaceURI = node.namespaceURI } goog.asserts.assert(goog.isDef(nodeName)); return ol.xml.createElementNS(namespaceURI, nodeName) } }; ol.xml.OBJECT_PROPERTY_NODE_FACTORY = ol.xml.makeSimpleNodeFactory(); ol.xml.makeSequence = function(object, orderedKeys) { var length = orderedKeys.length; var sequence = new Array(length); for(var i = 0;i < length;++i) { sequence[i] = object[orderedKeys[i]] } return sequence }; ol.xml.makeStructureNS = function(namespaceURIs, structure, opt_structureNS) { var structureNS = goog.isDef(opt_structureNS) ? opt_structureNS : {}; var i, ii; for(i = 0, ii = namespaceURIs.length;i < ii;++i) { structureNS[namespaceURIs[i]] = structure } return structureNS }; ol.xml.parse = function(parsersNS, node, objectStack, opt_this) { var n; for(n = node.firstElementChild;!goog.isNull(n);n = n.nextElementSibling) { var parsers = parsersNS[n.namespaceURI]; if(goog.isDef(parsers)) { var parser = parsers[n.localName]; if(goog.isDef(parser)) { parser.call(opt_this, n, objectStack) } } } }; ol.xml.pushParseAndPop = function(object, parsersNS, node, objectStack, opt_this) { objectStack.push(object); ol.xml.parse(parsersNS, node, objectStack, opt_this); return objectStack.pop() }; ol.xml.serialize = function(serializersNS, nodeFactory, values, objectStack, opt_keys, opt_this) { var length = (goog.isDef(opt_keys) ? opt_keys : values).length; var value, node; for(var i = 0;i < length;++i) { value = values[i]; if(goog.isDef(value)) { node = nodeFactory.call(opt_this, value, objectStack, goog.isDef(opt_keys) ? opt_keys[i] : undefined); if(goog.isDef(node)) { serializersNS[node.namespaceURI][node.localName].call(opt_this, node, value, objectStack) } } } }; ol.xml.pushSerializeAndPop = function(object, serializersNS, nodeFactory, values, objectStack, opt_keys, opt_this) { objectStack.push(object); ol.xml.serialize(serializersNS, nodeFactory, values, objectStack, opt_keys, opt_this); return objectStack.pop() }; goog.provide("ol.format.XMLFeature"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom.NodeType"); goog.require("ol.format.Feature"); goog.require("ol.format.FormatType"); goog.require("ol.xml"); ol.format.XMLFeature = function() { goog.base(this) }; goog.inherits(ol.format.XMLFeature, ol.format.Feature); ol.format.XMLFeature.prototype.getType = function() { return ol.format.FormatType.XML }; ol.format.XMLFeature.prototype.readFeature = function(source) { if(ol.xml.isDocument(source)) { return this.readFeatureFromDocument((source)) }else { if(ol.xml.isNode(source)) { return this.readFeatureFromNode((source)) }else { if(goog.isString(source)) { var doc = ol.xml.load(source); return this.readFeatureFromDocument(doc) }else { goog.asserts.fail(); return null } } } }; ol.format.XMLFeature.prototype.readFeatureFromDocument = function(doc) { var features = this.readFeaturesFromDocument(doc); if(features.length > 0) { return features[0] }else { return null } }; ol.format.XMLFeature.prototype.readFeatureFromNode = goog.abstractMethod; ol.format.XMLFeature.prototype.readFeatures = function(source) { if(ol.xml.isDocument(source)) { return this.readFeaturesFromDocument((source)) }else { if(ol.xml.isNode(source)) { return this.readFeaturesFromNode((source)) }else { if(goog.isString(source)) { var doc = ol.xml.load(source); return this.readFeaturesFromDocument(doc) }else { goog.asserts.fail(); return[] } } } }; ol.format.XMLFeature.prototype.readFeaturesFromDocument = function(doc) { var features = []; var n; for(n = doc.firstChild;!goog.isNull(n);n = n.nextSibling) { if(n.nodeType == goog.dom.NodeType.ELEMENT) { goog.array.extend(features, this.readFeaturesFromNode(n)) } } return features }; ol.format.XMLFeature.prototype.readFeaturesFromNode = goog.abstractMethod; ol.format.XMLFeature.prototype.readGeometry = function(source) { if(ol.xml.isDocument(source)) { return this.readGeometryFromDocument((source)) }else { if(ol.xml.isNode(source)) { return this.readGeometryFromNode((source)) }else { if(goog.isString(source)) { var doc = ol.xml.load(source); return this.readGeometryFromDocument(doc) }else { goog.asserts.fail(); return null } } } }; ol.format.XMLFeature.prototype.readGeometryFromDocument = goog.abstractMethod; ol.format.XMLFeature.prototype.readGeometryFromNode = goog.abstractMethod; ol.format.XMLFeature.prototype.readProjection = function(source) { if(ol.xml.isDocument(source)) { return this.readProjectionFromDocument((source)) }else { if(ol.xml.isNode(source)) { return this.readProjectionFromNode((source)) }else { if(goog.isString(source)) { var doc = ol.xml.load(source); return this.readProjectionFromDocument(doc) }else { goog.asserts.fail(); return null } } } }; ol.format.XMLFeature.prototype.readProjectionFromDocument = goog.abstractMethod; ol.format.XMLFeature.prototype.readProjectionFromNode = goog.abstractMethod; ol.format.XMLFeature.prototype.writeFeature = function(feature) { return this.writeFeatureNode(feature) }; ol.format.XMLFeature.prototype.writeFeatureNode = goog.abstractMethod; ol.format.XMLFeature.prototype.writeFeatures = function(features) { return this.writeFeaturesNode(features) }; ol.format.XMLFeature.prototype.writeFeaturesNode = goog.abstractMethod; ol.format.XMLFeature.prototype.writeGeometry = function(geometry) { return this.writeGeometryNode(geometry) }; ol.format.XMLFeature.prototype.writeGeometryNode = goog.abstractMethod; goog.provide("ol.format.XSD"); goog.require("goog.asserts"); goog.require("goog.string"); goog.require("ol.xml"); ol.format.XSD.NAMESPACE_URI = "http://www.w3.org/2001/XMLSchema"; ol.format.XSD.readBoolean = function(node) { var s = ol.xml.getAllTextContent(node, false); return ol.format.XSD.readBooleanString(s) }; ol.format.XSD.readBooleanString = function(string) { var m = /^\s*(true|1)|(false|0)\s*$/.exec(string); if(m) { return goog.isDef(m[1]) || false }else { return undefined } }; ol.format.XSD.readDateTime = function(node) { var s = ol.xml.getAllTextContent(node, false); var re = /^\s*(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(Z|(?:([+\-])(\d{2})(?::(\d{2}))?))\s*$/; var m = re.exec(s); if(m) { var year = parseInt(m[1], 10); var month = parseInt(m[2], 10) - 1; var day = parseInt(m[3], 10); var hour = parseInt(m[4], 10); var minute = parseInt(m[5], 10); var second = parseInt(m[6], 10); var dateTime = Date.UTC(year, month, day, hour, minute, second) / 1E3; if(m[7] != "Z") { var sign = m[8] == "-" ? -1 : 1; dateTime += sign * 60 * parseInt(m[9], 10); if(goog.isDef(m[10])) { dateTime += sign * 60 * 60 * parseInt(m[10], 10) } } return dateTime }else { return undefined } }; ol.format.XSD.readDecimal = function(node) { var s = ol.xml.getAllTextContent(node, false); return ol.format.XSD.readDecimalString(s) }; ol.format.XSD.readDecimalString = function(string) { var m = /^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*$/i.exec(string); if(m) { return parseFloat(m[1]) }else { return undefined } }; ol.format.XSD.readNonNegativeInteger = function(node) { var s = ol.xml.getAllTextContent(node, false); return ol.format.XSD.readNonNegativeIntegerString(s) }; ol.format.XSD.readNonNegativeIntegerString = function(string) { var m = /^\s*(\d+)\s*$/.exec(string); if(m) { return parseInt(m[1], 10) }else { return undefined } }; ol.format.XSD.readString = function(node) { var s = ol.xml.getAllTextContent(node, false); return goog.string.trim(s) }; ol.format.XSD.writeDateTimeTextNode = function(node, dateTime) { var date = new Date(dateTime * 1E3); var string = date.getUTCFullYear() + "-" + goog.string.padNumber(date.getUTCMonth() + 1, 2) + "-" + goog.string.padNumber(date.getUTCDate(), 2) + "T" + goog.string.padNumber(date.getUTCHours(), 2) + ":" + goog.string.padNumber(date.getUTCMinutes(), 2) + ":" + goog.string.padNumber(date.getUTCSeconds(), 2) + "Z"; node.appendChild(ol.xml.DOCUMENT.createTextNode(string)) }; ol.format.XSD.writeDecimalTextNode = function(node, decimal) { var string = decimal.toPrecision(); node.appendChild(ol.xml.DOCUMENT.createTextNode(string)) }; ol.format.XSD.writeNonNegativeIntegerTextNode = function(node, nonNegativeInteger) { goog.asserts.assert(nonNegativeInteger >= 0); goog.asserts.assert(nonNegativeInteger == (nonNegativeInteger | 0)); var string = nonNegativeInteger.toString(); node.appendChild(ol.xml.DOCUMENT.createTextNode(string)) }; ol.format.XSD.writeStringTextNode = function(node, string) { node.appendChild(ol.xml.DOCUMENT.createTextNode(string)) }; goog.provide("ol.format.GPX"); goog.provide("ol.format.GPX.V1_1"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom.NodeType"); goog.require("goog.object"); goog.require("ol.Feature"); goog.require("ol.format.XMLFeature"); goog.require("ol.format.XSD"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.Point"); goog.require("ol.proj"); goog.require("ol.xml"); ol.format.GPX = function() { goog.base(this) }; goog.inherits(ol.format.GPX, ol.format.XMLFeature); ol.format.GPX.NAMESPACE_URIS_ = [null, "http://www.topografix.com/GPX/1/0", "http://www.topografix.com/GPX/1/1"]; ol.format.GPX.appendCoordinate_ = function(flatCoordinates, node, values) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); flatCoordinates.push(parseFloat(node.getAttribute("lon")), parseFloat(node.getAttribute("lat"))); if(goog.object.containsKey(values, "ele")) { flatCoordinates.push((goog.object.get(values, "ele"))); goog.object.remove(values, "ele") }else { flatCoordinates.push(0) } if(goog.object.containsKey(values, "time")) { flatCoordinates.push((goog.object.get(values, "time"))); goog.object.remove(values, "time") }else { flatCoordinates.push(0) } return flatCoordinates }; ol.format.GPX.parseLink_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "link"); var values = (objectStack[objectStack.length - 1]); var href = node.getAttribute("href"); if(!goog.isNull(href)) { goog.object.set(values, "link", href) } ol.xml.parse(ol.format.GPX.LINK_PARSERS_, node, objectStack) }; ol.format.GPX.parseRtePt_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "rtept"); var values = ol.xml.pushParseAndPop({}, ol.format.GPX.RTEPT_PARSERS_, node, objectStack); if(goog.isDef(values)) { var rteValues = (objectStack[objectStack.length - 1]); var flatCoordinates = (goog.object.get(rteValues, "flatCoordinates")); ol.format.GPX.appendCoordinate_(flatCoordinates, node, values) } }; ol.format.GPX.parseTrkPt_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "trkpt"); var values = ol.xml.pushParseAndPop({}, ol.format.GPX.TRKPT_PARSERS_, node, objectStack); if(goog.isDef(values)) { var trkValues = (objectStack[objectStack.length - 1]); var flatCoordinates = (goog.object.get(trkValues, "flatCoordinates")); ol.format.GPX.appendCoordinate_(flatCoordinates, node, values) } }; ol.format.GPX.parseTrkSeg_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "trkseg"); var values = (objectStack[objectStack.length - 1]); ol.xml.parse(ol.format.GPX.TRKSEG_PARSERS_, node, objectStack); var flatCoordinates = (goog.object.get(values, "flatCoordinates")); var ends = (goog.object.get(values, "ends")); ends.push(flatCoordinates.length) }; ol.format.GPX.readRte_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "rte"); var values = ol.xml.pushParseAndPop({"flatCoordinates":[]}, ol.format.GPX.RTE_PARSERS_, node, objectStack); if(!goog.isDef(values)) { return undefined } var flatCoordinates = (goog.object.get(values, "flatCoordinates")); goog.object.remove(values, "flatCoordinates"); var geometry = new ol.geom.LineString(null); geometry.setFlatCoordinates(ol.geom.GeometryLayout.XYZM, flatCoordinates); var feature = new ol.Feature(geometry); feature.setValues(values); return feature }; ol.format.GPX.readTrk_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "trk"); var values = ol.xml.pushParseAndPop({"flatCoordinates":[], "ends":[]}, ol.format.GPX.TRK_PARSERS_, node, objectStack); if(!goog.isDef(values)) { return undefined } var flatCoordinates = (goog.object.get(values, "flatCoordinates")); goog.object.remove(values, "flatCoordinates"); var ends = (goog.object.get(values, "ends")); goog.object.remove(values, "ends"); var geometry = new ol.geom.MultiLineString(null); geometry.setFlatCoordinates(ol.geom.GeometryLayout.XYZM, flatCoordinates, ends); var feature = new ol.Feature(geometry); feature.setValues(values); return feature }; ol.format.GPX.readWpt_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "wpt"); var values = ol.xml.pushParseAndPop({}, ol.format.GPX.WPT_PARSERS_, node, objectStack); if(!goog.isDef(values)) { return undefined } var coordinates = ol.format.GPX.appendCoordinate_([], node, values); var geometry = new ol.geom.Point(coordinates, ol.geom.GeometryLayout.XYZM); var feature = new ol.Feature(geometry); feature.setValues(values); return feature }; ol.format.GPX.FEATURE_READER_ = {"rte":ol.format.GPX.readRte_, "trk":ol.format.GPX.readTrk_, "wpt":ol.format.GPX.readWpt_}; ol.format.GPX.GPX_PARSERS_ = ol.xml.makeParsersNS(ol.format.GPX.NAMESPACE_URIS_, {"rte":ol.xml.makeArrayPusher(ol.format.GPX.readRte_), "trk":ol.xml.makeArrayPusher(ol.format.GPX.readTrk_), "wpt":ol.xml.makeArrayPusher(ol.format.GPX.readWpt_)}); ol.format.GPX.LINK_PARSERS_ = ol.xml.makeParsersNS(ol.format.GPX.NAMESPACE_URIS_, {"text":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString, "linkText"), "type":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString, "linkType")}); ol.format.GPX.RTE_PARSERS_ = ol.xml.makeParsersNS(ol.format.GPX.NAMESPACE_URIS_, {"name":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "cmt":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "desc":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "src":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "link":ol.format.GPX.parseLink_, "number":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger), "type":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "rtept":ol.format.GPX.parseRtePt_}); ol.format.GPX.RTEPT_PARSERS_ = ol.xml.makeParsersNS(ol.format.GPX.NAMESPACE_URIS_, {"ele":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "time":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDateTime)}); ol.format.GPX.TRK_PARSERS_ = ol.xml.makeParsersNS(ol.format.GPX.NAMESPACE_URIS_, {"name":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "cmt":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "desc":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "src":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "link":ol.format.GPX.parseLink_, "number":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger), "type":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "trkseg":ol.format.GPX.parseTrkSeg_}); ol.format.GPX.TRKSEG_PARSERS_ = ol.xml.makeParsersNS(ol.format.GPX.NAMESPACE_URIS_, {"trkpt":ol.format.GPX.parseTrkPt_}); ol.format.GPX.TRKPT_PARSERS_ = ol.xml.makeParsersNS(ol.format.GPX.NAMESPACE_URIS_, {"ele":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "time":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDateTime)}); ol.format.GPX.WPT_PARSERS_ = ol.xml.makeParsersNS(ol.format.GPX.NAMESPACE_URIS_, {"ele":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "time":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDateTime), "magvar":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "geoidheight":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "name":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "cmt":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "desc":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "src":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "link":ol.format.GPX.parseLink_, "sym":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "type":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "fix":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "sat":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger), "hdop":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "vdop":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "pdop":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "ageofdgpsdata":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "dgpsid":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger)}); ol.format.GPX.prototype.readFeature; ol.format.GPX.prototype.readFeatureFromNode = function(node) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); if(!goog.array.contains(ol.format.GPX.NAMESPACE_URIS_, node.namespaceURI)) { return null } var featureReader = ol.format.GPX.FEATURE_READER_[node.localName]; if(!goog.isDef(featureReader)) { return null } var feature = featureReader(node, []); if(!goog.isDef(feature)) { return null } return feature }; ol.format.GPX.prototype.readFeatures; ol.format.GPX.prototype.readFeaturesFromNode = function(node) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); if(!goog.array.contains(ol.format.GPX.NAMESPACE_URIS_, node.namespaceURI)) { return[] } if(node.localName == "gpx") { var features = ol.xml.pushParseAndPop(([]), ol.format.GPX.GPX_PARSERS_, node, []); if(goog.isDef(features)) { return features }else { return[] } } return[] }; ol.format.GPX.prototype.readProjection; ol.format.GPX.prototype.readProjectionFromDocument = function(doc) { return ol.proj.get("EPSG:4326") }; ol.format.GPX.prototype.readProjectionFromNode = function(node) { return ol.proj.get("EPSG:4326") }; ol.format.GPX.writeLink_ = function(node, value, objectStack) { node.setAttribute("href", value); var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var properties = goog.object.get(context, "properties"); var link = [goog.object.get(properties, "linkText"), goog.object.get(properties, "linkType")]; ol.xml.pushSerializeAndPop(({node:node}), ol.format.GPX.LINK_SERIALIZERS_, ol.xml.OBJECT_PROPERTY_NODE_FACTORY, link, objectStack, ol.format.GPX.LINK_SEQUENCE_) }; ol.format.GPX.writeWptType_ = function(node, coordinate, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var parentNode = context.node; goog.asserts.assert(ol.xml.isNode(parentNode)); var namespaceURI = parentNode.namespaceURI; var properties = goog.object.get(context, "properties"); ol.xml.setAttributeNS(node, null, "lat", coordinate[1]); ol.xml.setAttributeNS(node, null, "lon", coordinate[0]); var geometryLayout = goog.object.get(context, "geometryLayout"); switch(geometryLayout) { case ol.geom.GeometryLayout.XYZM: if(coordinate[3] !== 0) { goog.object.set(properties, "time", coordinate[3]) } ; case ol.geom.GeometryLayout.XYZ: if(coordinate[2] !== 0) { goog.object.set(properties, "ele", coordinate[2]) } break; case ol.geom.GeometryLayout.XYM: if(coordinate[2] !== 0) { goog.object.set(properties, "time", coordinate[2]) } } var orderedKeys = ol.format.GPX.WPT_TYPE_SEQUENCE_[namespaceURI]; var values = ol.xml.makeSequence(properties, orderedKeys); ol.xml.pushSerializeAndPop(({node:node, "properties":properties}), ol.format.GPX.WPT_TYPE_SERIALIZERS_, ol.xml.OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys) }; ol.format.GPX.writeRte_ = function(node, feature, objectStack) { var properties = feature.getProperties(); var context = {node:node, "properties":properties}; var geometry = feature.getGeometry(); if(goog.isDef(geometry)) { goog.asserts.assertInstanceof(geometry, ol.geom.LineString); goog.object.set(context, "geometryLayout", geometry.getLayout()); goog.object.set(properties, "rtept", geometry.getCoordinates()) } var parentNode = objectStack[objectStack.length - 1].node; var orderedKeys = ol.format.GPX.RTE_SEQUENCE_[parentNode.namespaceURI]; var values = ol.xml.makeSequence(properties, orderedKeys); ol.xml.pushSerializeAndPop((context), ol.format.GPX.RTE_SERIALIZERS_, ol.xml.OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys) }; ol.format.GPX.writeTrk_ = function(node, feature, objectStack) { var properties = feature.getProperties(); var context = {node:node, "properties":properties}; var geometry = feature.getGeometry(); if(goog.isDef(geometry)) { goog.asserts.assertInstanceof(geometry, ol.geom.MultiLineString); goog.object.set(properties, "trkseg", geometry.getLineStrings()) } var parentNode = objectStack[objectStack.length - 1].node; var orderedKeys = ol.format.GPX.TRK_SEQUENCE_[parentNode.namespaceURI]; var values = ol.xml.makeSequence(properties, orderedKeys); ol.xml.pushSerializeAndPop((context), ol.format.GPX.TRK_SERIALIZERS_, ol.xml.OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, orderedKeys) }; ol.format.GPX.writeTrkSeg_ = function(node, lineString, objectStack) { var context = {node:node, "geometryLayout":lineString.getLayout(), "properties":{}}; ol.xml.pushSerializeAndPop((context), ol.format.GPX.TRKSEG_SERIALIZERS_, ol.format.GPX.TRKSEG_NODE_FACTORY_, lineString.getCoordinates(), objectStack) }; ol.format.GPX.writeWpt_ = function(node, feature, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); goog.object.set(context, "properties", feature.getProperties()); var geometry = feature.getGeometry(); if(goog.isDef(geometry)) { goog.asserts.assertInstanceof(geometry, ol.geom.Point); goog.object.set(context, "geometryLayout", geometry.getLayout()); ol.format.GPX.writeWptType_(node, geometry.getCoordinates(), objectStack) } }; ol.format.GPX.LINK_SEQUENCE_ = ["text", "type"]; ol.format.GPX.LINK_SERIALIZERS_ = ol.xml.makeStructureNS(ol.format.GPX.NAMESPACE_URIS_, {"text":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "type":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode)}); ol.format.GPX.RTE_SEQUENCE_ = ol.xml.makeStructureNS(ol.format.GPX.NAMESPACE_URIS_, ["name", "cmt", "desc", "src", "link", "number", "type", "rtept"]); ol.format.GPX.RTE_SERIALIZERS_ = ol.xml.makeStructureNS(ol.format.GPX.NAMESPACE_URIS_, {"name":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "cmt":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "desc":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "src":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "link":ol.xml.makeChildAppender(ol.format.GPX.writeLink_), "number":ol.xml.makeChildAppender(ol.format.XSD.writeNonNegativeIntegerTextNode), "type":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "rtept":ol.xml.makeArraySerializer(ol.xml.makeChildAppender(ol.format.GPX.writeWptType_))}); ol.format.GPX.TRK_SEQUENCE_ = ol.xml.makeStructureNS(ol.format.GPX.NAMESPACE_URIS_, ["name", "cmt", "desc", "src", "link", "number", "type", "trkseg"]); ol.format.GPX.TRK_SERIALIZERS_ = ol.xml.makeStructureNS(ol.format.GPX.NAMESPACE_URIS_, {"name":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "cmt":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "desc":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "src":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "link":ol.xml.makeChildAppender(ol.format.GPX.writeLink_), "number":ol.xml.makeChildAppender(ol.format.XSD.writeNonNegativeIntegerTextNode), "type":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "trkseg":ol.xml.makeArraySerializer(ol.xml.makeChildAppender(ol.format.GPX.writeTrkSeg_))}); ol.format.GPX.TRKSEG_NODE_FACTORY_ = ol.xml.makeSimpleNodeFactory("trkpt"); ol.format.GPX.TRKSEG_SERIALIZERS_ = ol.xml.makeStructureNS(ol.format.GPX.NAMESPACE_URIS_, {"trkpt":ol.xml.makeChildAppender(ol.format.GPX.writeWptType_)}); ol.format.GPX.WPT_TYPE_SEQUENCE_ = ol.xml.makeStructureNS(ol.format.GPX.NAMESPACE_URIS_, ["ele", "time", "magvar", "geoidheight", "name", "cmt", "desc", "src", "link", "sym", "type", "fix", "sat", "hdop", "vdop", "pdop", "ageofdgpsdata", "dgpsid"]); ol.format.GPX.WPT_TYPE_SERIALIZERS_ = ol.xml.makeStructureNS(ol.format.GPX.NAMESPACE_URIS_, {"ele":ol.xml.makeChildAppender(ol.format.XSD.writeDecimalTextNode), "time":ol.xml.makeChildAppender(ol.format.XSD.writeDateTimeTextNode), "magvar":ol.xml.makeChildAppender(ol.format.XSD.writeDecimalTextNode), "geoidheight":ol.xml.makeChildAppender(ol.format.XSD.writeDecimalTextNode), "name":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "cmt":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "desc":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "src":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "link":ol.xml.makeChildAppender(ol.format.GPX.writeLink_), "sym":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "type":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "fix":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "sat":ol.xml.makeChildAppender(ol.format.XSD.writeNonNegativeIntegerTextNode), "hdop":ol.xml.makeChildAppender(ol.format.XSD.writeDecimalTextNode), "vdop":ol.xml.makeChildAppender(ol.format.XSD.writeDecimalTextNode), "pdop":ol.xml.makeChildAppender(ol.format.XSD.writeDecimalTextNode), "ageofdgpsdata":ol.xml.makeChildAppender(ol.format.XSD.writeDecimalTextNode), "dgpsid":ol.xml.makeChildAppender(ol.format.XSD.writeNonNegativeIntegerTextNode)}); ol.format.GPX.GEOMETRY_TYPE_TO_NODENAME_ = {"Point":"wpt", "LineString":"rte", "MultiLineString":"trk"}; ol.format.GPX.GPX_NODE_FACTORY_ = function(value, objectStack, opt_nodeName) { goog.asserts.assertInstanceof(value, ol.Feature); var geometry = value.getGeometry(); if(goog.isDef(geometry)) { var parentNode = objectStack[objectStack.length - 1].node; goog.asserts.assert(ol.xml.isNode(parentNode)); return ol.xml.createElementNS(parentNode.namespaceURI, ol.format.GPX.GEOMETRY_TYPE_TO_NODENAME_[geometry.getType()]) } }; ol.format.GPX.GPX_SERIALIZERS_ = ol.xml.makeStructureNS(ol.format.GPX.NAMESPACE_URIS_, {"rte":ol.xml.makeChildAppender(ol.format.GPX.writeRte_), "trk":ol.xml.makeChildAppender(ol.format.GPX.writeTrk_), "wpt":ol.xml.makeChildAppender(ol.format.GPX.writeWpt_)}); ol.format.GPX.V1_1 = function() { goog.base(this) }; goog.inherits(ol.format.GPX.V1_1, ol.format.GPX); ol.format.GPX.prototype.writeFeatures; ol.format.GPX.V1_1.prototype.writeFeaturesNode = function(features) { var gpx = ol.xml.createElementNS("http://www.topografix.com/GPX/1/1", "gpx"); ol.xml.pushSerializeAndPop(({node:gpx}), ol.format.GPX.GPX_SERIALIZERS_, ol.format.GPX.GPX_NODE_FACTORY_, features, []); return gpx }; goog.provide("goog.json"); goog.provide("goog.json.Serializer"); goog.json.isValid_ = function(s) { if(/^\s*$/.test(s)) { return false } var backslashesRe = /\\["\\\/bfnrtu]/g; var simpleValuesRe = /"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; var openBracketsRe = /(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g; var remainderRe = /^[\],:{}\s\u2028\u2029]*$/; return remainderRe.test(s.replace(backslashesRe, "@").replace(simpleValuesRe, "]").replace(openBracketsRe, "")) }; goog.json.parse = function(s) { var o = String(s); if(goog.json.isValid_(o)) { try { return(eval("(" + o + ")")) }catch(ex) { } } throw Error("Invalid JSON string: " + o); }; goog.json.unsafeParse = function(s) { return(eval("(" + s + ")")) }; goog.json.Replacer; goog.json.Reviver; goog.json.serialize = function(object, opt_replacer) { return(new goog.json.Serializer(opt_replacer)).serialize(object) }; goog.json.Serializer = function(opt_replacer) { this.replacer_ = opt_replacer }; goog.json.Serializer.prototype.serialize = function(object) { var sb = []; this.serialize_(object, sb); return sb.join("") }; goog.json.Serializer.prototype.serialize_ = function(object, sb) { switch(typeof object) { case "string": this.serializeString_((object), sb); break; case "number": this.serializeNumber_((object), sb); break; case "boolean": sb.push(object); break; case "undefined": sb.push("null"); break; case "object": if(object == null) { sb.push("null"); break } if(goog.isArray(object)) { this.serializeArray((object), sb); break } this.serializeObject_((object), sb); break; case "function": break; default: throw Error("Unknown type: " + typeof object); } }; goog.json.Serializer.charToJsonCharCache_ = {'"':'\\"', "\\":"\\\\", "/":"\\/", "\b":"\\b", "\f":"\\f", "\n":"\\n", "\r":"\\r", "\t":"\\t", "\x0B":"\\u000b"}; goog.json.Serializer.charsToReplace_ = /\uffff/.test("\uffff") ? /[\\\"\x00-\x1f\x7f-\uffff]/g : /[\\\"\x00-\x1f\x7f-\xff]/g; goog.json.Serializer.prototype.serializeString_ = function(s, sb) { sb.push('"', s.replace(goog.json.Serializer.charsToReplace_, function(c) { if(c in goog.json.Serializer.charToJsonCharCache_) { return goog.json.Serializer.charToJsonCharCache_[c] } var cc = c.charCodeAt(0); var rv = "\\u"; if(cc < 16) { rv += "000" }else { if(cc < 256) { rv += "00" }else { if(cc < 4096) { rv += "0" } } } return goog.json.Serializer.charToJsonCharCache_[c] = rv + cc.toString(16) }), '"') }; goog.json.Serializer.prototype.serializeNumber_ = function(n, sb) { sb.push(isFinite(n) && !isNaN(n) ? n : "null") }; goog.json.Serializer.prototype.serializeArray = function(arr, sb) { var l = arr.length; sb.push("["); var sep = ""; for(var i = 0;i < l;i++) { sb.push(sep); var value = arr[i]; this.serialize_(this.replacer_ ? this.replacer_.call(arr, String(i), value) : value, sb); sep = "," } sb.push("]") }; goog.json.Serializer.prototype.serializeObject_ = function(obj, sb) { sb.push("{"); var sep = ""; for(var key in obj) { if(Object.prototype.hasOwnProperty.call(obj, key)) { var value = obj[key]; if(typeof value != "function") { sb.push(sep); this.serializeString_(key, sb); sb.push(":"); this.serialize_(this.replacer_ ? this.replacer_.call(obj, key, value) : value, sb); sep = "," } } } sb.push("}") }; goog.provide("ol.format.JSONFeature"); goog.require("goog.asserts"); goog.require("goog.json"); goog.require("ol.BrowserFeature"); goog.require("ol.format.Feature"); goog.require("ol.format.FormatType"); ol.format.JSONFeature = function() { goog.base(this) }; goog.inherits(ol.format.JSONFeature, ol.format.Feature); ol.format.JSONFeature.prototype.getObject_ = function(source) { if(goog.isObject(source)) { return source }else { if(goog.isString(source)) { var object; if(ol.BrowserFeature.HAS_JSON_PARSE) { object = (JSON.parse(source)) }else { object = goog.json.parse(source) } return goog.isDef(object) ? object : null }else { goog.asserts.fail(); return null } } }; ol.format.JSONFeature.prototype.getType = function() { return ol.format.FormatType.JSON }; ol.format.JSONFeature.prototype.readFeature = function(source) { return this.readFeatureFromObject(this.getObject_(source)) }; ol.format.JSONFeature.prototype.readFeatures = function(source) { return this.readFeaturesFromObject(this.getObject_(source)) }; ol.format.JSONFeature.prototype.readFeatureFromObject = goog.abstractMethod; ol.format.JSONFeature.prototype.readFeaturesFromObject = goog.abstractMethod; ol.format.JSONFeature.prototype.readGeometry = function(source) { return this.readGeometryFromObject(this.getObject_(source)) }; ol.format.JSONFeature.prototype.readGeometryFromObject = goog.abstractMethod; ol.format.JSONFeature.prototype.readProjection = function(source) { return this.readProjectionFromObject(this.getObject_(source)) }; ol.format.JSONFeature.prototype.readProjectionFromObject = goog.abstractMethod; ol.format.JSONFeature.prototype.writeFeature = function(feature) { return this.writeFeatureObject(feature) }; ol.format.JSONFeature.prototype.writeFeatureObject = goog.abstractMethod; ol.format.JSONFeature.prototype.writeFeatures = function(features) { return this.writeFeaturesObject(features) }; ol.format.JSONFeature.prototype.writeFeaturesObject = goog.abstractMethod; ol.format.JSONFeature.prototype.writeGeometry = function(geometry) { return this.writeGeometryObject(geometry) }; ol.format.JSONFeature.prototype.writeGeometryObject = goog.abstractMethod; goog.provide("ol.format.GeoJSON"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol.Feature"); goog.require("ol.format.JSONFeature"); goog.require("ol.geom.GeometryCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.proj"); ol.format.GeoJSON = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.defaultProjection_ = ol.proj.get(options.defaultProjection ? options.defaultProjection : "EPSG:4326") }; goog.inherits(ol.format.GeoJSON, ol.format.JSONFeature); ol.format.GeoJSON.EXTENSIONS_ = [".geojson"]; ol.format.GeoJSON.readGeometry_ = function(object) { if(goog.isNull(object)) { return null } var geometryReader = ol.format.GeoJSON.GEOMETRY_READERS_[object.type]; goog.asserts.assert(goog.isDef(geometryReader)); return geometryReader(object) }; ol.format.GeoJSON.readGeometryCollectionGeometry_ = function(object) { goog.asserts.assert(object.type == "GeometryCollection"); var geometries = goog.array.map(object.geometries, ol.format.GeoJSON.readGeometry_); return new ol.geom.GeometryCollection(geometries) }; ol.format.GeoJSON.readPointGeometry_ = function(object) { goog.asserts.assert(object.type == "Point"); return new ol.geom.Point(object.coordinates) }; ol.format.GeoJSON.readLineStringGeometry_ = function(object) { goog.asserts.assert(object.type == "LineString"); return new ol.geom.LineString(object.coordinates) }; ol.format.GeoJSON.readMultiLineStringGeometry_ = function(object) { goog.asserts.assert(object.type == "MultiLineString"); return new ol.geom.MultiLineString(object.coordinates) }; ol.format.GeoJSON.readMultiPointGeometry_ = function(object) { goog.asserts.assert(object.type == "MultiPoint"); return new ol.geom.MultiPoint(object.coordinates) }; ol.format.GeoJSON.readMultiPolygonGeometry_ = function(object) { goog.asserts.assert(object.type == "MultiPolygon"); return new ol.geom.MultiPolygon(object.coordinates) }; ol.format.GeoJSON.readPolygonGeometry_ = function(object) { goog.asserts.assert(object.type == "Polygon"); return new ol.geom.Polygon(object.coordinates) }; ol.format.GeoJSON.writeGeometry_ = function(geometry) { var geometryWriter = ol.format.GeoJSON.GEOMETRY_WRITERS_[geometry.getType()]; goog.asserts.assert(goog.isDef(geometryWriter)); return geometryWriter(geometry) }; ol.format.GeoJSON.writeEmptyGeometryCollectionGeometry_ = function(geometry) { return({"type":"GeometryCollection", "geometries":[]}) }; ol.format.GeoJSON.writeGeometryCollectionGeometry_ = function(geometry) { goog.asserts.assertInstanceof(geometry, ol.geom.GeometryCollection); var geometries = goog.array.map(geometry.getGeometriesArray(), ol.format.GeoJSON.writeGeometry_); return({"type":"GeometryCollection", "geometries":geometries}) }; ol.format.GeoJSON.writeLineStringGeometry_ = function(geometry) { goog.asserts.assertInstanceof(geometry, ol.geom.LineString); return({"type":"LineString", "coordinates":geometry.getCoordinates()}) }; ol.format.GeoJSON.writeMultiLineStringGeometry_ = function(geometry) { goog.asserts.assertInstanceof(geometry, ol.geom.MultiLineString); goog.asserts.assert(geometry.getType() == ol.geom.GeometryType.MULTI_LINE_STRING); return({"type":"MultiLineString", "coordinates":geometry.getCoordinates()}) }; ol.format.GeoJSON.writeMultiPointGeometry_ = function(geometry) { goog.asserts.assertInstanceof(geometry, ol.geom.MultiPoint); return({"type":"MultiPoint", "coordinates":geometry.getCoordinates()}) }; ol.format.GeoJSON.writeMultiPolygonGeometry_ = function(geometry) { goog.asserts.assertInstanceof(geometry, ol.geom.MultiPolygon); return({"type":"MultiPolygon", "coordinates":geometry.getCoordinates()}) }; ol.format.GeoJSON.writePointGeometry_ = function(geometry) { goog.asserts.assertInstanceof(geometry, ol.geom.Point); return({"type":"Point", "coordinates":geometry.getCoordinates()}) }; ol.format.GeoJSON.writePolygonGeometry_ = function(geometry) { goog.asserts.assertInstanceof(geometry, ol.geom.Polygon); return({"type":"Polygon", "coordinates":geometry.getCoordinates()}) }; ol.format.GeoJSON.GEOMETRY_READERS_ = {"Point":ol.format.GeoJSON.readPointGeometry_, "LineString":ol.format.GeoJSON.readLineStringGeometry_, "Polygon":ol.format.GeoJSON.readPolygonGeometry_, "MultiPoint":ol.format.GeoJSON.readMultiPointGeometry_, "MultiLineString":ol.format.GeoJSON.readMultiLineStringGeometry_, "MultiPolygon":ol.format.GeoJSON.readMultiPolygonGeometry_, "GeometryCollection":ol.format.GeoJSON.readGeometryCollectionGeometry_}; ol.format.GeoJSON.GEOMETRY_WRITERS_ = {"Point":ol.format.GeoJSON.writePointGeometry_, "LineString":ol.format.GeoJSON.writeLineStringGeometry_, "Polygon":ol.format.GeoJSON.writePolygonGeometry_, "MultiPoint":ol.format.GeoJSON.writeMultiPointGeometry_, "MultiLineString":ol.format.GeoJSON.writeMultiLineStringGeometry_, "MultiPolygon":ol.format.GeoJSON.writeMultiPolygonGeometry_, "GeometryCollection":ol.format.GeoJSON.writeGeometryCollectionGeometry_, "Circle":ol.format.GeoJSON.writeEmptyGeometryCollectionGeometry_}; ol.format.GeoJSON.prototype.getExtensions = function() { return ol.format.GeoJSON.EXTENSIONS_ }; ol.format.GeoJSON.prototype.readFeature; ol.format.GeoJSON.prototype.readFeatures; ol.format.GeoJSON.prototype.readFeatureFromObject = function(object) { var geoJSONFeature = (object); goog.asserts.assert(geoJSONFeature.type == "Feature"); var geometry = ol.format.GeoJSON.readGeometry_(geoJSONFeature.geometry); var feature = new ol.Feature(geometry); if(goog.isDef(geoJSONFeature.id)) { feature.setId(geoJSONFeature.id) } if(goog.isDef(geoJSONFeature.properties)) { feature.setValues(geoJSONFeature.properties) } return feature }; ol.format.GeoJSON.prototype.readFeaturesFromObject = function(object) { var geoJSONObject = (object); if(geoJSONObject.type == "Feature") { return[this.readFeatureFromObject(object)] }else { if(geoJSONObject.type == "FeatureCollection") { var geoJSONFeatureCollection = (object); var features = []; var geoJSONFeatures = geoJSONFeatureCollection.features; var i, ii; for(i = 0, ii = geoJSONFeatures.length;i < ii;++i) { features.push(this.readFeatureFromObject(geoJSONFeatures[i])) } return features }else { goog.asserts.fail(); return[] } } }; ol.format.GeoJSON.prototype.readGeometry; ol.format.GeoJSON.prototype.readGeometryFromObject = function(object) { return ol.format.GeoJSON.readGeometry_((object)) }; ol.format.GeoJSON.prototype.readProjection = function(object) { var geoJSONObject = (object); var crs = geoJSONObject.crs; if(goog.isDefAndNotNull(crs)) { if(crs.type == "name") { return ol.proj.get(crs.properties.name) }else { if(crs.type == "EPSG") { return ol.proj.get("EPSG:" + crs.properties.code) }else { goog.asserts.fail(); return null } } }else { return this.defaultProjection_ } }; ol.format.GeoJSON.prototype.writeFeature; ol.format.GeoJSON.prototype.writeFeatureObject = function(feature) { var object = {"type":"Feature"}; var id = feature.getId(); if(goog.isDefAndNotNull(id)) { goog.object.set(object, "id", id) } var geometry = feature.getGeometry(); if(goog.isDefAndNotNull(geometry)) { goog.object.set(object, "geometry", ol.format.GeoJSON.writeGeometry_(geometry)) } var properties = feature.getProperties(); goog.object.remove(properties, "geometry"); if(!goog.object.isEmpty(properties)) { goog.object.set(object, "properties", properties) } return object }; ol.format.GeoJSON.prototype.writeFeatures; ol.format.GeoJSON.prototype.writeFeaturesObject = function(features) { var objects = []; var i, ii; for(i = 0, ii = features.length;i < ii;++i) { objects.push(this.writeFeatureObject(features[i])) } return({"type":"FeatureCollection", "features":objects}) }; ol.format.GeoJSON.prototype.writeGeometryObject = ol.format.GeoJSON.writeGeometry_; goog.provide("goog.string.newlines"); goog.provide("goog.string.newlines.Line"); goog.require("goog.array"); goog.string.newlines.splitLines = function(str, opt_keepNewlines) { var lines = goog.string.newlines.getLines(str); return goog.array.map(lines, function(line) { return opt_keepNewlines ? line.getFullLine() : line.getContent() }) }; goog.string.newlines.Line = function(string, startLineIndex, endContentIndex, endLineIndex) { this.string = string; this.startLineIndex = startLineIndex; this.endContentIndex = endContentIndex; this.endLineIndex = endLineIndex }; goog.string.newlines.Line.prototype.getContent = function() { return this.string.substring(this.startLineIndex, this.endContentIndex) }; goog.string.newlines.Line.prototype.getFullLine = function() { return this.string.substring(this.startLineIndex, this.endLineIndex) }; goog.string.newlines.Line.prototype.getNewline = function() { return this.string.substring(this.endContentIndex, this.endLineIndex) }; goog.string.newlines.getLines = function(str) { var re = RegExp("\r\n|\r|\n", "g"); var sliceIndex = 0; var result; var lines = []; while(result = re.exec(str)) { var line = new goog.string.newlines.Line(str, sliceIndex, result.index, result.index + result[0].length); lines.push(line); sliceIndex = re.lastIndex } if(sliceIndex < str.length) { var line = new goog.string.newlines.Line(str, sliceIndex, str.length, str.length); lines.push(line) } return lines }; goog.provide("ol.format.TextFeature"); goog.require("goog.asserts"); goog.require("ol.format.Feature"); goog.require("ol.format.FormatType"); ol.format.TextFeature = function() { goog.base(this) }; goog.inherits(ol.format.TextFeature, ol.format.Feature); ol.format.TextFeature.prototype.getText_ = function(source) { if(goog.isString(source)) { return source }else { goog.asserts.fail(); return"" } }; ol.format.TextFeature.prototype.getType = function() { return ol.format.FormatType.TEXT }; ol.format.TextFeature.prototype.readFeature = function(source) { return this.readFeatureFromText(this.getText_(source)) }; ol.format.TextFeature.prototype.readFeatureFromText = goog.abstractMethod; ol.format.TextFeature.prototype.readFeatures = function(source) { return this.readFeaturesFromText(this.getText_(source)) }; ol.format.TextFeature.prototype.readFeaturesFromText = goog.abstractMethod; ol.format.TextFeature.prototype.readGeometry = function(source) { return this.readGeometryFromText(this.getText_(source)) }; ol.format.TextFeature.prototype.readGeometryFromText = goog.abstractMethod; ol.format.TextFeature.prototype.readProjection = function(source) { return this.readProjectionFromText(this.getText_(source)) }; ol.format.TextFeature.prototype.readProjectionFromText = goog.abstractMethod; ol.format.TextFeature.prototype.writeFeature = function(feature) { return this.writeFeatureText(feature) }; ol.format.TextFeature.prototype.writeFeatureText = goog.abstractMethod; ol.format.TextFeature.prototype.writeFeatures = function(features) { return this.writeFeaturesText(features) }; ol.format.TextFeature.prototype.writeFeaturesText = goog.abstractMethod; ol.format.TextFeature.prototype.writeGeometry = function(geometry) { return this.writeGeometryText(geometry) }; ol.format.TextFeature.prototype.writeGeometryText = goog.abstractMethod; goog.provide("ol.format.IGC"); goog.provide("ol.format.IGCZ"); goog.require("goog.asserts"); goog.require("goog.string"); goog.require("goog.string.newlines"); goog.require("ol.Feature"); goog.require("ol.format.TextFeature"); goog.require("ol.geom.LineString"); goog.require("ol.proj"); ol.format.IGCZ = {BAROMETRIC:"barometric", GPS:"gps", NONE:"none"}; ol.format.IGC = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.altitudeMode_ = goog.isDef(options.altitudeMode) ? options.altitudeMode : ol.format.IGCZ.NONE }; goog.inherits(ol.format.IGC, ol.format.TextFeature); ol.format.IGC.EXTENSIONS_ = [".igc"]; ol.format.IGC.B_RECORD_RE_ = /^B(\d{2})(\d{2})(\d{2})(\d{2})(\d{5})([NS])(\d{3})(\d{5})([EW])([AV])(\d{5})(\d{5})/; ol.format.IGC.H_RECORD_RE_ = /^H.([A-Z]{3}).*?:(.*)/; ol.format.IGC.HFDTE_RECORD_RE_ = /^HFDTE(\d{2})(\d{2})(\d{2})/; ol.format.IGC.prototype.getExtensions = function() { return ol.format.IGC.EXTENSIONS_ }; ol.format.IGC.prototype.readFeature; ol.format.IGC.prototype.readFeatureFromText = function(text) { var altitudeMode = this.altitudeMode_; var lines = goog.string.newlines.splitLines(text); var properties = {}; var flatCoordinates = []; var year = 2E3; var month = 0; var day = 1; var i, ii; for(i = 0, ii = lines.length;i < ii;++i) { var line = lines[i]; var m; if(line.charAt(0) == "B") { m = ol.format.IGC.B_RECORD_RE_.exec(line); if(m) { var hour = parseInt(m[1], 10); var minute = parseInt(m[2], 10); var second = parseInt(m[3], 10); var y = parseInt(m[4], 10) + parseInt(m[5], 10) / 6E4; if(m[6] == "S") { y = -y } var x = parseInt(m[7], 10) + parseInt(m[8], 10) / 6E4; if(m[9] == "W") { x = -x } flatCoordinates.push(x, y); if(altitudeMode != ol.format.IGCZ.NONE) { var z; if(altitudeMode == ol.format.IGCZ.GPS) { z = parseInt(m[11], 10) }else { if(altitudeMode == ol.format.IGCZ.BAROMETRIC) { z = parseInt(m[12], 10) }else { goog.asserts.fail(); z = 0 } } flatCoordinates.push(z) } var dateTime = Date.UTC(year, month, day, hour, minute, second); flatCoordinates.push(dateTime / 1E3) } }else { if(line.charAt(0) == "H") { m = ol.format.IGC.HFDTE_RECORD_RE_.exec(line); if(m) { day = parseInt(m[1], 10); month = parseInt(m[2], 10) - 1; year = 2E3 + parseInt(m[3], 10) }else { m = ol.format.IGC.H_RECORD_RE_.exec(line); if(m) { properties[m[1]] = goog.string.trim(m[2]); m = ol.format.IGC.HFDTE_RECORD_RE_.exec(line) } } } } } if(flatCoordinates.length === 0) { return null } var lineString = new ol.geom.LineString(null); var layout = altitudeMode == ol.format.IGCZ.NONE ? ol.geom.GeometryLayout.XYM : ol.geom.GeometryLayout.XYZM; lineString.setFlatCoordinates(layout, flatCoordinates); var feature = new ol.Feature(lineString); feature.setValues(properties); return feature }; ol.format.IGC.prototype.readFeatures; ol.format.IGC.prototype.readFeaturesFromText = function(text) { var feature = this.readFeatureFromText(text); if(!goog.isNull(feature)) { return[feature] }else { return[] } }; ol.format.IGC.prototype.readProjection; ol.format.IGC.prototype.readProjectionFromText = function(text) { return ol.proj.get("EPSG:4326") }; goog.provide("ol.format.KML"); goog.require("goog.Uri"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom.NodeType"); goog.require("goog.math"); goog.require("goog.object"); goog.require("goog.string"); goog.require("ol.Feature"); goog.require("ol.array"); goog.require("ol.feature"); goog.require("ol.format.XMLFeature"); goog.require("ol.format.XSD"); goog.require("ol.geom.GeometryCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.proj"); goog.require("ol.style.Fill"); goog.require("ol.style.Icon"); goog.require("ol.style.IconAnchorOrigin"); goog.require("ol.style.IconAnchorUnits"); goog.require("ol.style.Image"); goog.require("ol.style.Stroke"); goog.require("ol.style.Style"); goog.require("ol.xml"); ol.format.KMLVec2_; ol.format.KMLGxTrackObject_; ol.format.KML = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); var defaultStyle = goog.isDef(options.defaultStyle) ? options.defaultStyle : ol.format.KML.DEFAULT_STYLE_ARRAY_; var sharedStyles = {}; var findStyle = function(styleValue) { if(goog.isArray(styleValue)) { return styleValue }else { if(goog.isString(styleValue)) { if(!(styleValue in sharedStyles) && "#" + styleValue in sharedStyles) { styleValue = "#" + styleValue } return findStyle(sharedStyles[styleValue]) }else { return defaultStyle } } }; this.sharedStyles_ = sharedStyles; this.featureStyleFunction_ = function(resolution) { var style = (this.get("Style")); if(goog.isDef(style)) { return style } var styleUrl = (this.get("styleUrl")); if(goog.isDef(styleUrl)) { return findStyle(styleUrl) } return defaultStyle } }; goog.inherits(ol.format.KML, ol.format.XMLFeature); ol.format.KML.EXTENSIONS_ = [".kml"]; ol.format.KML.GX_NAMESPACE_URIS_ = ["http://www.google.com/kml/ext/2.2"]; ol.format.KML.NAMESPACE_URIS_ = [null, "http://earth.google.com/kml/2.0", "http://earth.google.com/kml/2.1", "http://earth.google.com/kml/2.2", "http://www.opengis.net/kml/2.2"]; ol.format.KML.DEFAULT_COLOR_ = [255, 255, 255, 1]; ol.format.KML.DEFAULT_FILL_STYLE_ = new ol.style.Fill({color:ol.format.KML.DEFAULT_COLOR_}); ol.format.KML.DEFAULT_IMAGE_STYLE_ANCHOR_ = [2, 20]; ol.format.KML.DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS_ = ol.style.IconAnchorUnits.PIXELS; ol.format.KML.DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS_ = ol.style.IconAnchorUnits.PIXELS; ol.format.KML.DEFAULT_IMAGE_STYLE_SIZE_ = [32, 32]; ol.format.KML.DEFAULT_IMAGE_STYLE_SRC_ = "https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png"; ol.format.KML.DEFAULT_IMAGE_STYLE_ = new ol.style.Icon({anchor:ol.format.KML.DEFAULT_IMAGE_STYLE_ANCHOR_, anchorXUnits:ol.format.KML.DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS_, anchorYUnits:ol.format.KML.DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS_, crossOrigin:"anonymous", rotation:0, scale:1, size:ol.format.KML.DEFAULT_IMAGE_STYLE_SIZE_, src:ol.format.KML.DEFAULT_IMAGE_STYLE_SRC_}); ol.format.KML.DEFAULT_STROKE_STYLE_ = new ol.style.Stroke({color:ol.format.KML.DEFAULT_COLOR_, width:1}); ol.format.KML.DEFAULT_STYLE_ = new ol.style.Style({fill:ol.format.KML.DEFAULT_FILL_STYLE_, image:ol.format.KML.DEFAULT_IMAGE_STYLE_, text:null, stroke:ol.format.KML.DEFAULT_STROKE_STYLE_, zIndex:0}); ol.format.KML.DEFAULT_STYLE_ARRAY_ = [ol.format.KML.DEFAULT_STYLE_]; ol.format.KML.ICON_ANCHOR_UNITS_MAP_ = {"fraction":ol.style.IconAnchorUnits.FRACTION, "pixels":ol.style.IconAnchorUnits.PIXELS}; ol.format.KML.readColor_ = function(node) { var s = ol.xml.getAllTextContent(node, false); var m = /^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(s); if(m) { var hexColor = m[1]; return[parseInt(hexColor.substr(6, 2), 16), parseInt(hexColor.substr(4, 2), 16), parseInt(hexColor.substr(2, 2), 16), parseInt(hexColor.substr(0, 2), 16) / 255] }else { return undefined } }; ol.format.KML.readFlatCoordinates_ = function(node) { var s = ol.xml.getAllTextContent(node, false); var flatCoordinates = []; var re = /^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?))?\s*/i; var m; while(m = re.exec(s)) { var x = parseFloat(m[1]); var y = parseFloat(m[2]); var z = m[3] ? parseFloat(m[3]) : 0; flatCoordinates.push(x, y, z); s = s.substr(m[0].length) } if(s !== "") { return undefined } return flatCoordinates }; ol.format.KML.readStyleUrl_ = function(node) { var s = goog.string.trim(ol.xml.getAllTextContent(node, false)); if(goog.isDefAndNotNull(node.baseURI)) { return goog.Uri.resolve(node.baseURI, s).toString() }else { return s } }; ol.format.KML.readURI_ = function(node) { var s = ol.xml.getAllTextContent(node, false); if(goog.isDefAndNotNull(node.baseURI)) { return goog.Uri.resolve(node.baseURI, goog.string.trim(s)).toString() }else { return goog.string.trim(s) } }; ol.format.KML.readVec2_ = function(node) { var xunits = node.getAttribute("xunits"); var yunits = node.getAttribute("yunits"); return{x:parseFloat(node.getAttribute("x")), xunits:ol.format.KML.ICON_ANCHOR_UNITS_MAP_[xunits], y:parseFloat(node.getAttribute("y")), yunits:ol.format.KML.ICON_ANCHOR_UNITS_MAP_[yunits]} }; ol.format.KML.readScale_ = function(node) { var number = ol.format.XSD.readDecimal(node); if(goog.isDef(number)) { return Math.sqrt(number) }else { return undefined } }; ol.format.KML.readStyleMapValue_ = function(node, objectStack) { return ol.xml.pushParseAndPop((undefined), ol.format.KML.STYLE_MAP_PARSERS_, node, objectStack) }; ol.format.KML.IconStyleParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "IconStyle"); var object = ol.xml.pushParseAndPop({}, ol.format.KML.ICON_STYLE_PARSERS_, node, objectStack); if(!goog.isDef(object)) { return } var styleObject = (objectStack[objectStack.length - 1]); goog.asserts.assert(goog.isObject(styleObject)); var IconObject = (goog.object.get(object, "Icon", {})); var src; var href = (goog.object.get(IconObject, "href")); if(goog.isDef(href)) { src = href }else { src = ol.format.KML.DEFAULT_IMAGE_STYLE_SRC_ } var anchor, anchorXUnits, anchorYUnits; var hotSpot = (goog.object.get(object, "hotSpot")); if(goog.isDef(hotSpot)) { anchor = [hotSpot.x, hotSpot.y]; anchorXUnits = hotSpot.xunits; anchorYUnits = hotSpot.yunits }else { if(src === ol.format.KML.DEFAULT_IMAGE_STYLE_SRC_) { anchor = ol.format.KML.DEFAULT_IMAGE_STYLE_ANCHOR_; anchorXUnits = ol.format.KML.DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS_; anchorYUnits = ol.format.KML.DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS_ }else { if(/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(src)) { anchor = [0.5, 0]; anchorXUnits = ol.style.IconAnchorUnits.FRACTION; anchorYUnits = ol.style.IconAnchorUnits.FRACTION } } } var rotation; var heading = (goog.object.get(object, "heading")); if(goog.isDef(heading)) { rotation = goog.math.toRadians(heading) } var scale = (goog.object.get(object, "scale")); var size; if(src == ol.format.KML.DEFAULT_IMAGE_STYLE_SRC_) { size = ol.format.KML.DEFAULT_IMAGE_STYLE_SIZE_ } var imageStyle = new ol.style.Icon({anchor:anchor, anchorOrigin:ol.style.IconAnchorOrigin.BOTTOM_LEFT, anchorXUnits:anchorXUnits, anchorYUnits:anchorYUnits, crossOrigin:"anonymous", rotation:rotation, scale:scale, size:size, src:src}); goog.object.set(styleObject, "imageStyle", imageStyle) }; ol.format.KML.LineStyleParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "LineStyle"); var object = ol.xml.pushParseAndPop({}, ol.format.KML.LINE_STYLE_PARSERS_, node, objectStack); if(!goog.isDef(object)) { return } var styleObject = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(styleObject)); var strokeStyle = new ol.style.Stroke({color:(goog.object.get(object, "color", ol.format.KML.DEFAULT_COLOR_)), width:(goog.object.get(object, "width", 1))}); goog.object.set(styleObject, "strokeStyle", strokeStyle) }; ol.format.KML.PolyStyleParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "PolyStyle"); var object = ol.xml.pushParseAndPop({}, ol.format.KML.POLY_STYLE_PARSERS_, node, objectStack); if(!goog.isDef(object)) { return } var styleObject = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(styleObject)); var fillStyle = new ol.style.Fill({color:(goog.object.get(object, "color", ol.format.KML.DEFAULT_COLOR_))}); goog.object.set(styleObject, "fillStyle", fillStyle); var fill = (goog.object.get(object, "fill")); if(goog.isDef(fill)) { goog.object.set(styleObject, "fill", fill) } var outline = (goog.object.get(object, "outline")); if(goog.isDef(outline)) { goog.object.set(styleObject, "outline", outline) } }; ol.format.KML.readFlatLinearRing_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "LinearRing"); return(ol.xml.pushParseAndPop(null, ol.format.KML.FLAT_LINEAR_RING_PARSERS_, node, objectStack)) }; ol.format.KML.gxCoordParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(goog.array.contains(ol.format.KML.GX_NAMESPACE_URIS_, node.namespaceURI)); goog.asserts.assert(node.localName == "coord"); var gxTrackObject = (objectStack[objectStack.length - 1]); goog.asserts.assert(goog.isObject(gxTrackObject)); var flatCoordinates = gxTrackObject.flatCoordinates; var s = ol.xml.getAllTextContent(node, false); var re = /^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i; var m = re.exec(s); if(m) { var x = parseFloat(m[1]); var y = parseFloat(m[2]); var z = parseFloat(m[3]); flatCoordinates.push(x, y, z, 0) }else { flatCoordinates.push(0, 0, 0, 0) } }; ol.format.KML.readGxMultiTrack_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(goog.array.contains(ol.format.KML.GX_NAMESPACE_URIS_, node.namespaceURI)); goog.asserts.assert(node.localName == "MultiTrack"); var lineStrings = ol.xml.pushParseAndPop(([]), ol.format.KML.GX_MULTITRACK_GEOMETRY_PARSERS_, node, objectStack); if(!goog.isDef(lineStrings)) { return undefined } var multiLineString = new ol.geom.MultiLineString(null); multiLineString.setLineStrings(lineStrings); return multiLineString }; ol.format.KML.readGxTrack_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(goog.array.contains(ol.format.KML.GX_NAMESPACE_URIS_, node.namespaceURI)); goog.asserts.assert(node.localName == "Track"); var gxTrackObject = ol.xml.pushParseAndPop(({flatCoordinates:[], whens:[]}), ol.format.KML.GX_TRACK_PARSERS_, node, objectStack); if(!goog.isDef(gxTrackObject)) { return undefined } var flatCoordinates = gxTrackObject.flatCoordinates; var whens = gxTrackObject.whens; goog.asserts.assert(flatCoordinates.length / 4 == whens.length); var i, ii; for(i = 0, ii = Math.min(flatCoordinates.length, whens.length);i < ii;++i) { flatCoordinates[4 * i + 3] = whens[i] } var lineString = new ol.geom.LineString(null); lineString.setFlatCoordinates(ol.geom.GeometryLayout.XYZM, flatCoordinates); return lineString }; ol.format.KML.readIcon_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Icon"); var iconObject = ol.xml.pushParseAndPop({}, ol.format.KML.ICON_PARSERS_, node, objectStack); if(goog.isDef(iconObject)) { return iconObject }else { return null } }; ol.format.KML.readFlatCoordinatesFromNode_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); return(ol.xml.pushParseAndPop(null, ol.format.KML.GEOMETRY_FLAT_COORDINATES_PARSERS_, node, objectStack)) }; ol.format.KML.readLineString_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "LineString"); var flatCoordinates = ol.format.KML.readFlatCoordinatesFromNode_(node, objectStack); if(goog.isDef(flatCoordinates)) { var lineString = new ol.geom.LineString(null); lineString.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates); return lineString }else { return undefined } }; ol.format.KML.readLinearRing_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "LinearRing"); var flatCoordinates = ol.format.KML.readFlatCoordinatesFromNode_(node, objectStack); if(goog.isDef(flatCoordinates)) { var polygon = new ol.geom.Polygon(null); polygon.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates, [flatCoordinates.length]); return polygon }else { return undefined } }; ol.format.KML.readMultiGeometry_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "MultiGeometry"); var geometries = ol.xml.pushParseAndPop(([]), ol.format.KML.MULTI_GEOMETRY_PARSERS_, node, objectStack); if(!goog.isDef(geometries)) { return null } if(geometries.length === 0) { return new ol.geom.GeometryCollection(geometries) } var homogeneous = true; var type = geometries[0].getType(); var geometry, i, ii; for(i = 1, ii = geometries.length;i < ii;++i) { geometry = geometries[i]; if(geometry.getType() != type) { homogeneous = false; break } } if(homogeneous) { var layout; var flatCoordinates; if(type == ol.geom.GeometryType.POINT) { var point = geometries[0]; goog.asserts.assertInstanceof(point, ol.geom.Point); layout = point.getLayout(); flatCoordinates = point.getFlatCoordinates(); for(i = 1, ii = geometries.length;i < ii;++i) { geometry = geometries[i]; goog.asserts.assertInstanceof(geometry, ol.geom.Point); goog.asserts.assert(geometry.getLayout() == layout); ol.array.safeExtend(flatCoordinates, geometry.getFlatCoordinates()) } var multiPoint = new ol.geom.MultiPoint(null); multiPoint.setFlatCoordinates(layout, flatCoordinates); return multiPoint }else { if(type == ol.geom.GeometryType.LINE_STRING) { var multiLineString = new ol.geom.MultiLineString(null); multiLineString.setLineStrings(geometries); return multiLineString }else { if(type == ol.geom.GeometryType.POLYGON) { var multiPolygon = new ol.geom.MultiPolygon(null); multiPolygon.setPolygons(geometries); return multiPolygon }else { if(type == ol.geom.GeometryType.GEOMETRY_COLLECTION) { return new ol.geom.GeometryCollection(geometries) }else { goog.asserts.fail(); return null } } } } }else { return new ol.geom.GeometryCollection(geometries) } }; ol.format.KML.readPoint_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Point"); var flatCoordinates = ol.format.KML.readFlatCoordinatesFromNode_(node, objectStack); if(goog.isDefAndNotNull(flatCoordinates)) { var point = new ol.geom.Point(null); goog.asserts.assert(flatCoordinates.length == 3); point.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates); return point }else { return undefined } }; ol.format.KML.readPolygon_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Polygon"); var flatLinearRings = ol.xml.pushParseAndPop(([null]), ol.format.KML.FLAT_LINEAR_RINGS_PARSERS_, node, objectStack); if(goog.isDefAndNotNull(flatLinearRings) && !goog.isNull(flatLinearRings[0])) { var polygon = new ol.geom.Polygon(null); var flatCoordinates = flatLinearRings[0]; var ends = [flatCoordinates.length]; var i, ii; for(i = 1, ii = flatLinearRings.length;i < ii;++i) { ol.array.safeExtend(flatCoordinates, flatLinearRings[i]); ends.push(flatCoordinates.length) } polygon.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates, ends); return polygon }else { return undefined } }; ol.format.KML.readStyle_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Style"); var styleObject = ol.xml.pushParseAndPop({}, ol.format.KML.STYLE_PARSERS_, node, objectStack); if(!goog.isDef(styleObject)) { return null } var fillStyle = (goog.object.get(styleObject, "fillStyle", ol.format.KML.DEFAULT_FILL_STYLE_)); var fill = (goog.object.get(styleObject, "fill")); if(goog.isDef(fill) && !fill) { fillStyle = null } var imageStyle = (goog.object.get(styleObject, "imageStyle", ol.format.KML.DEFAULT_IMAGE_STYLE_)); var strokeStyle = (goog.object.get(styleObject, "strokeStyle", ol.format.KML.DEFAULT_STROKE_STYLE_)); var outline = (goog.object.get(styleObject, "outline")); if(goog.isDef(outline) && !outline) { strokeStyle = null } return[new ol.style.Style({fill:fillStyle, image:imageStyle, stroke:strokeStyle, text:null, zIndex:undefined})] }; ol.format.KML.DataParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Data"); var name = node.getAttribute("name"); if(!goog.isNull(name)) { var data = ol.xml.pushParseAndPop(undefined, ol.format.KML.DATA_PARSERS_, node, objectStack); if(goog.isDef(data)) { var featureObject = (objectStack[objectStack.length - 1]); goog.asserts.assert(goog.isObject(featureObject)); goog.object.set(featureObject, name, data) } } }; ol.format.KML.ExtendedDataParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "ExtendedData"); ol.xml.parse(ol.format.KML.EXTENDED_DATA_PARSERS_, node, objectStack) }; ol.format.KML.PairDataParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Pair"); var pairObject = ol.xml.pushParseAndPop({}, ol.format.KML.PAIR_PARSERS_, node, objectStack); if(!goog.isDef(pairObject)) { return } var key = (goog.object.get(pairObject, "key")); if(goog.isDef(key) && key == "normal") { var styleUrl = (goog.object.get(pairObject, "styleUrl")); if(goog.isDef(styleUrl)) { objectStack[objectStack.length - 1] = styleUrl } var Style = (goog.object.get(pairObject, "Style")); if(goog.isDef(Style)) { objectStack[objectStack.length - 1] = Style } } }; ol.format.KML.PlacemarkStyleMapParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "StyleMap"); var styleMapValue = ol.format.KML.readStyleMapValue_(node, objectStack); if(!goog.isDef(styleMapValue)) { return } var placemarkObject = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(placemarkObject)); if(goog.isArray(styleMapValue)) { goog.object.set(placemarkObject, "Style", styleMapValue) }else { if(goog.isString(styleMapValue)) { goog.object.set(placemarkObject, "styleUrl", styleMapValue) }else { goog.asserts.fail() } } }; ol.format.KML.SchemaDataParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "SchemaData"); ol.xml.parse(ol.format.KML.SCHEMA_DATA_PARSERS_, node, objectStack) }; ol.format.KML.SimpleDataParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "SimpleData"); var name = node.getAttribute("name"); if(!goog.isNull(name)) { var data = ol.format.XSD.readString(node); var featureObject = (objectStack[objectStack.length - 1]); goog.object.set(featureObject, name, data) } }; ol.format.KML.innerBoundaryIsParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "innerBoundaryIs"); var flatLinearRing = ol.xml.pushParseAndPop((undefined), ol.format.KML.INNER_BOUNDARY_IS_PARSERS_, node, objectStack); if(goog.isDef(flatLinearRing)) { var flatLinearRings = (objectStack[objectStack.length - 1]); goog.asserts.assert(goog.isArray(flatLinearRings)); goog.asserts.assert(flatLinearRings.length > 0); flatLinearRings.push(flatLinearRing) } }; ol.format.KML.outerBoundaryIsParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "outerBoundaryIs"); var flatLinearRing = ol.xml.pushParseAndPop((undefined), ol.format.KML.OUTER_BOUNDARY_IS_PARSERS_, node, objectStack); if(goog.isDef(flatLinearRing)) { var flatLinearRings = (objectStack[objectStack.length - 1]); goog.asserts.assert(goog.isArray(flatLinearRings)); goog.asserts.assert(flatLinearRings.length > 0); flatLinearRings[0] = flatLinearRing } }; ol.format.KML.whenParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "when"); var gxTrackObject = (objectStack[objectStack.length - 1]); goog.asserts.assert(goog.isObject(gxTrackObject)); var whens = gxTrackObject.whens; var s = ol.xml.getAllTextContent(node, false); var re = /^\s*(\d{4})($|-(\d{2})($|-(\d{2})($|T(\d{2}):(\d{2}):(\d{2})(Z|(?:([+\-])(\d{2})(?::(\d{2}))?)))))\s*$/; var m = re.exec(s); if(m) { var year = parseInt(m[1], 10); var month = goog.isDef(m[3]) ? parseInt(m[3], 10) - 1 : 0; var day = goog.isDef(m[5]) ? parseInt(m[5], 10) : 1; var hour = goog.isDef(m[7]) ? parseInt(m[7], 10) : 0; var minute = goog.isDef(m[8]) ? parseInt(m[8], 10) : 0; var second = goog.isDef(m[9]) ? parseInt(m[9], 10) : 0; var when = Date.UTC(year, month, day, hour, minute, second); if(goog.isDef(m[10]) && m[10] != "Z") { var sign = m[11] == "-" ? -1 : 1; when += sign * 60 * parseInt(m[12], 10); if(goog.isDef(m[13])) { when += sign * 60 * 60 * parseInt(m[13], 10) } } whens.push(when) }else { whens.push(0) } }; ol.format.KML.DATA_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"value":ol.xml.makeReplacer(ol.format.XSD.readString)}); ol.format.KML.EXTENDED_DATA_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"Data":ol.format.KML.DataParser_, "SchemaData":ol.format.KML.SchemaDataParser_}); ol.format.KML.FLAT_LINEAR_RING_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"coordinates":ol.xml.makeReplacer(ol.format.KML.readFlatCoordinates_)}); ol.format.KML.FLAT_LINEAR_RINGS_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"innerBoundaryIs":ol.format.KML.innerBoundaryIsParser_, "outerBoundaryIs":ol.format.KML.outerBoundaryIsParser_}); ol.format.KML.GX_TRACK_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"when":ol.format.KML.whenParser_}, ol.xml.makeParsersNS(ol.format.KML.GX_NAMESPACE_URIS_, {"coord":ol.format.KML.gxCoordParser_})); ol.format.KML.GEOMETRY_FLAT_COORDINATES_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"coordinates":ol.xml.makeReplacer(ol.format.KML.readFlatCoordinates_)}); ol.format.KML.ICON_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"href":ol.xml.makeObjectPropertySetter(ol.format.KML.readURI_)}); ol.format.KML.ICON_STYLE_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"Icon":ol.xml.makeObjectPropertySetter(ol.format.KML.readIcon_), "heading":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "hotSpot":ol.xml.makeObjectPropertySetter(ol.format.KML.readVec2_), "scale":ol.xml.makeObjectPropertySetter(ol.format.KML.readScale_)}); ol.format.KML.INNER_BOUNDARY_IS_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"LinearRing":ol.xml.makeReplacer(ol.format.KML.readFlatLinearRing_)}); ol.format.KML.LINE_STYLE_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"color":ol.xml.makeObjectPropertySetter(ol.format.KML.readColor_), "width":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal)}); ol.format.KML.MULTI_GEOMETRY_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"LineString":ol.xml.makeArrayPusher(ol.format.KML.readLineString_), "LinearRing":ol.xml.makeArrayPusher(ol.format.KML.readLinearRing_), "MultiGeometry":ol.xml.makeArrayPusher(ol.format.KML.readMultiGeometry_), "Point":ol.xml.makeArrayPusher(ol.format.KML.readPoint_), "Polygon":ol.xml.makeArrayPusher(ol.format.KML.readPolygon_)}); ol.format.KML.GX_MULTITRACK_GEOMETRY_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.GX_NAMESPACE_URIS_, {"Track":ol.xml.makeArrayPusher(ol.format.KML.readGxTrack_)}); ol.format.KML.OUTER_BOUNDARY_IS_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"LinearRing":ol.xml.makeReplacer(ol.format.KML.readFlatLinearRing_)}); ol.format.KML.PAIR_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"Style":ol.xml.makeObjectPropertySetter(ol.format.KML.readStyle_), "key":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "styleUrl":ol.xml.makeObjectPropertySetter(ol.format.KML.readStyleUrl_)}); ol.format.KML.PLACEMARK_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"ExtendedData":ol.format.KML.ExtendedDataParser_, "MultiGeometry":ol.xml.makeObjectPropertySetter(ol.format.KML.readMultiGeometry_, "geometry"), "LineString":ol.xml.makeObjectPropertySetter(ol.format.KML.readLineString_, "geometry"), "LinearRing":ol.xml.makeObjectPropertySetter(ol.format.KML.readLinearRing_, "geometry"), "Point":ol.xml.makeObjectPropertySetter(ol.format.KML.readPoint_, "geometry"), "Polygon":ol.xml.makeObjectPropertySetter(ol.format.KML.readPolygon_, "geometry"), "Style":ol.xml.makeObjectPropertySetter(ol.format.KML.readStyle_), "StyleMap":ol.format.KML.PlacemarkStyleMapParser_, "address":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "description":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "name":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "open":ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean), "phoneNumber":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "styleUrl":ol.xml.makeObjectPropertySetter(ol.format.KML.readURI_), "visibility":ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean)}, ol.xml.makeParsersNS(ol.format.KML.GX_NAMESPACE_URIS_, {"MultiTrack":ol.xml.makeObjectPropertySetter(ol.format.KML.readGxMultiTrack_, "geometry"), "Track":ol.xml.makeObjectPropertySetter(ol.format.KML.readGxTrack_, "geometry")})); ol.format.KML.POLY_STYLE_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"color":ol.xml.makeObjectPropertySetter(ol.format.KML.readColor_), "fill":ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean), "outline":ol.xml.makeObjectPropertySetter(ol.format.XSD.readBoolean)}); ol.format.KML.SCHEMA_DATA_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"SimpleData":ol.format.KML.SimpleDataParser_}); ol.format.KML.STYLE_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"IconStyle":ol.format.KML.IconStyleParser_, "LineStyle":ol.format.KML.LineStyleParser_, "PolyStyle":ol.format.KML.PolyStyleParser_}); ol.format.KML.STYLE_MAP_PARSERS_ = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"Pair":ol.format.KML.PairDataParser_}); ol.format.KML.prototype.getExtensions = function() { return ol.format.KML.EXTENSIONS_ }; ol.format.KML.prototype.readDocumentOrFolder_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); var localName = ol.xml.getLocalName(node); goog.asserts.assert(localName == "Document" || localName == "Folder"); var parsersNS = ol.xml.makeParsersNS(ol.format.KML.NAMESPACE_URIS_, {"Folder":ol.xml.makeArrayExtender(this.readDocumentOrFolder_, this), "Placemark":ol.xml.makeArrayPusher(this.readPlacemark_, this), "Style":goog.bind(this.readSharedStyle_, this), "StyleMap":goog.bind(this.readSharedStyleMap_, this)}); var features = ol.xml.pushParseAndPop(([]), parsersNS, node, objectStack, this); if(goog.isDef(features)) { return features }else { return undefined } }; ol.format.KML.prototype.readPlacemark_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Placemark"); var object = ol.xml.pushParseAndPop({"geometry":null}, ol.format.KML.PLACEMARK_PARSERS_, node, objectStack); if(!goog.isDef(object)) { return undefined } var feature = new ol.Feature; var id = node.getAttribute("id"); if(!goog.isNull(id)) { feature.setId(id) } feature.setValues(object); feature.setStyle(this.featureStyleFunction_); return feature }; ol.format.KML.prototype.readSharedStyle_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Style"); var id = node.getAttribute("id"); if(!goog.isNull(id)) { var style = ol.format.KML.readStyle_(node, objectStack); if(goog.isDef(style)) { var styleUri; if(goog.isDefAndNotNull(node.baseURI)) { styleUri = goog.Uri.resolve(node.baseURI, "#" + id).toString() }else { styleUri = "#" + id } this.sharedStyles_[styleUri] = style } } }; ol.format.KML.prototype.readSharedStyleMap_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "StyleMap"); var id = node.getAttribute("id"); if(goog.isNull(id)) { return } var styleMapValue = ol.format.KML.readStyleMapValue_(node, objectStack); if(!goog.isDef(styleMapValue)) { return } var styleUri; if(goog.isDefAndNotNull(node.baseURI)) { styleUri = goog.Uri.resolve(node.baseURI, "#" + id).toString() }else { styleUri = "#" + id } this.sharedStyles_[styleUri] = styleMapValue }; ol.format.KML.prototype.readFeature; ol.format.KML.prototype.readFeatureFromNode = function(node) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); if(!goog.array.contains(ol.format.KML.NAMESPACE_URIS_, node.namespaceURI)) { return null } goog.asserts.assert(node.localName == "Placemark"); var feature = this.readPlacemark_(node, []); if(goog.isDef(feature)) { return feature }else { return null } }; ol.format.KML.prototype.readFeatures; ol.format.KML.prototype.readFeaturesFromNode = function(node) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); if(!goog.array.contains(ol.format.KML.NAMESPACE_URIS_, node.namespaceURI)) { return[] } var features; var localName = ol.xml.getLocalName(node); if(localName == "Document" || localName == "Folder") { features = this.readDocumentOrFolder_(node, []); if(goog.isDef(features)) { return features }else { return[] } }else { if(localName == "Placemark") { var feature = this.readPlacemark_(node, []); if(goog.isDef(feature)) { return[feature] }else { return[] } }else { if(localName == "kml") { features = []; var n; for(n = node.firstElementChild;!goog.isNull(n);n = n.nextElementSibling) { var fs = this.readFeaturesFromNode(n); if(goog.isDef(fs)) { goog.array.extend(features, fs) } } return features }else { return[] } } } }; ol.format.KML.prototype.readName = function(source) { if(ol.xml.isDocument(source)) { return this.readNameFromDocument((source)) }else { if(ol.xml.isNode(source)) { return this.readNameFromNode((source)) }else { if(goog.isString(source)) { var doc = ol.xml.load(source); return this.readNameFromDocument(doc) }else { goog.asserts.fail(); return undefined } } } }; ol.format.KML.prototype.readNameFromDocument = function(doc) { var n; for(n = doc.firstChild;!goog.isNull(n);n = n.nextSibling) { if(n.nodeType == goog.dom.NodeType.ELEMENT) { var name = this.readNameFromNode(n); if(goog.isDef(name)) { return name } } } return undefined }; ol.format.KML.prototype.readNameFromNode = function(node) { var n; for(n = node.firstElementChild;!goog.isNull(n);n = n.nextElementSibling) { if(goog.array.contains(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) && n.localName == "name") { return ol.format.XSD.readString(n) } } for(n = node.firstElementChild;!goog.isNull(n);n = n.nextElementSibling) { var localName = ol.xml.getLocalName(n); if(goog.array.contains(ol.format.KML.NAMESPACE_URIS_, n.namespaceURI) && (localName == "Document" || localName == "Folder" || localName == "Placemark" || localName == "kml")) { var name = this.readNameFromNode(n); if(goog.isDef(name)) { return name } } } return undefined }; ol.format.KML.prototype.readProjection; ol.format.KML.prototype.readProjectionFromDocument = function(doc) { return ol.proj.get("EPSG:4326") }; ol.format.KML.prototype.readProjectionFromNode = function(node) { return ol.proj.get("EPSG:4326") }; goog.provide("ol.format.OSMXML"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom.NodeType"); goog.require("goog.object"); goog.require("ol.Feature"); goog.require("ol.format.XMLFeature"); goog.require("ol.geom.LineString"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.proj"); goog.require("ol.xml"); ol.format.OSMXML = function() { goog.base(this) }; goog.inherits(ol.format.OSMXML, ol.format.XMLFeature); ol.format.OSMXML.EXTENSIONS_ = [".osm"]; ol.format.OSMXML.prototype.getExtensions = function() { return ol.format.OSMXML.EXTENSIONS_ }; ol.format.OSMXML.readNode_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "node"); var state = (objectStack[objectStack.length - 1]); var id = node.getAttribute("id"); var coordinates = ([parseFloat(node.getAttribute("lon")), parseFloat(node.getAttribute("lat"))]); goog.object.set(state.nodes, id, coordinates); var values = ol.xml.pushParseAndPop({tags:{}}, ol.format.OSMXML.NODE_PARSERS_, node, objectStack); if(!goog.object.isEmpty(values.tags)) { var geometry = new ol.geom.Point(coordinates); var feature = new ol.Feature(geometry); feature.setId(id); feature.setValues(values.tags); state.features.push(feature) } }; ol.format.OSMXML.readWay_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "way"); var id = node.getAttribute("id"); var values = ol.xml.pushParseAndPop({ndrefs:[], tags:{}}, ol.format.OSMXML.WAY_PARSERS_, node, objectStack); var state = (objectStack[objectStack.length - 1]); var flatCoordinates = ([]); for(var i = 0, ii = values.ndrefs.length;i < ii;i++) { var point = goog.object.get(state.nodes, values.ndrefs[i]); goog.array.extend(flatCoordinates, point) } var geometry; if(values.ndrefs[0] == values.ndrefs[values.ndrefs.length - 1]) { geometry = new ol.geom.Polygon(null); geometry.setFlatCoordinates(ol.geom.GeometryLayout.XY, flatCoordinates, [flatCoordinates.length]) }else { geometry = new ol.geom.LineString(null); geometry.setFlatCoordinates(ol.geom.GeometryLayout.XY, flatCoordinates) } var feature = new ol.Feature(geometry); feature.setId(id); feature.setValues(values.tags); state.features.push(feature) }; ol.format.OSMXML.readNd_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "nd"); var values = (objectStack[objectStack.length - 1]); values.ndrefs.push(node.getAttribute("ref")) }; ol.format.OSMXML.readTag_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "tag"); var values = (objectStack[objectStack.length - 1]); goog.object.set(values.tags, node.getAttribute("k"), node.getAttribute("v")) }; ol.format.OSMXML.NAMESPACE_URIS_ = [null]; ol.format.OSMXML.WAY_PARSERS_ = ol.xml.makeParsersNS(ol.format.OSMXML.NAMESPACE_URIS_, {"nd":ol.format.OSMXML.readNd_, "tag":ol.format.OSMXML.readTag_}); ol.format.OSMXML.PARSERS_ = ol.xml.makeParsersNS(ol.format.OSMXML.NAMESPACE_URIS_, {"node":ol.format.OSMXML.readNode_, "way":ol.format.OSMXML.readWay_}); ol.format.OSMXML.NODE_PARSERS_ = ol.xml.makeParsersNS(ol.format.OSMXML.NAMESPACE_URIS_, {"tag":ol.format.OSMXML.readTag_}); ol.format.OSMXML.prototype.readFeaturesFromNode = function(node) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); if(node.localName == "osm") { var state = ol.xml.pushParseAndPop({nodes:{}, features:[]}, ol.format.OSMXML.PARSERS_, node, []); if(goog.isDef(state.features)) { return state.features } } return[] }; ol.format.OSMXML.prototype.readProjectionFromDocument = function(doc) { return ol.proj.get("EPSG:4326") }; ol.format.OSMXML.prototype.readProjectionFromNode = function(node) { return ol.proj.get("EPSG:4326") }; goog.provide("ol.format.TopoJSON"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("ol.Feature"); goog.require("ol.format.JSONFeature"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.proj"); ol.format.TopoJSON = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.defaultProjection_ = ol.proj.get(options.defaultProjection || "EPSG:4326") }; goog.inherits(ol.format.TopoJSON, ol.format.JSONFeature); ol.format.TopoJSON.EXTENSIONS_ = [".topojson"]; ol.format.TopoJSON.concatenateArcs_ = function(indices, arcs) { var coordinates = []; var index, arc; var i, ii; var j, jj; for(i = 0, ii = indices.length;i < ii;++i) { index = indices[i]; if(i > 0) { coordinates.pop() } if(index >= 0) { arc = arcs[index] }else { arc = arcs[~index].slice().reverse() } coordinates.push.apply(coordinates, arc) } for(j = 0, jj = coordinates.length;j < jj;++j) { coordinates[j] = coordinates[j].slice() } return coordinates }; ol.format.TopoJSON.readPointGeometry_ = function(object, scale, translate) { var coordinates = object.coordinates; if(!goog.isNull(scale) && !goog.isNull(translate)) { ol.format.TopoJSON.transformVertex_(coordinates, scale, translate) } return new ol.geom.Point(coordinates) }; ol.format.TopoJSON.readMultiPointGeometry_ = function(object, scale, translate) { var coordinates = object.coordinates; var i, ii; if(!goog.isNull(scale) && !goog.isNull(translate)) { for(i = 0, ii = coordinates.length;i < ii;++i) { ol.format.TopoJSON.transformVertex_(coordinates[i], scale, translate) } } return new ol.geom.MultiPoint(coordinates) }; ol.format.TopoJSON.readLineStringGeometry_ = function(object, arcs) { var coordinates = ol.format.TopoJSON.concatenateArcs_(object.arcs, arcs); return new ol.geom.LineString(coordinates) }; ol.format.TopoJSON.readMultiLineStringGeometry_ = function(object, arcs) { var coordinates = []; var i, ii; for(i = 0, ii = object.arcs.length;i < ii;++i) { coordinates[i] = ol.format.TopoJSON.concatenateArcs_(object.arcs[i], arcs) } return new ol.geom.MultiLineString(coordinates) }; ol.format.TopoJSON.readPolygonGeometry_ = function(object, arcs) { var coordinates = []; var i, ii; for(i = 0, ii = object.arcs.length;i < ii;++i) { coordinates[i] = ol.format.TopoJSON.concatenateArcs_(object.arcs[i], arcs) } return new ol.geom.Polygon(coordinates) }; ol.format.TopoJSON.readMultiPolygonGeometry_ = function(object, arcs) { var coordinates = []; var polyArray, ringCoords, j, jj; var i, ii; for(i = 0, ii = object.arcs.length;i < ii;++i) { polyArray = object.arcs[i]; ringCoords = []; for(j = 0, jj = polyArray.length;j < jj;++j) { ringCoords[j] = ol.format.TopoJSON.concatenateArcs_(polyArray[j], arcs) } coordinates[i] = ringCoords } return new ol.geom.MultiPolygon(coordinates) }; ol.format.TopoJSON.prototype.getExtensions = function() { return ol.format.TopoJSON.EXTENSIONS_ }; ol.format.TopoJSON.readFeaturesFromGeometryCollection_ = function(collection, arcs, scale, translate) { var geometries = collection.geometries; var features = []; var i, ii; for(i = 0, ii = geometries.length;i < ii;++i) { features[i] = ol.format.TopoJSON.readFeatureFromGeometry_(geometries[i], arcs, scale, translate) } return features }; ol.format.TopoJSON.readFeatureFromGeometry_ = function(object, arcs, scale, translate) { var geometry; var type = object.type; var geometryReader = ol.format.TopoJSON.GEOMETRY_READERS_[type]; goog.asserts.assert(goog.isDef(geometryReader)); if(type === "Point" || type === "MultiPoint") { geometry = geometryReader(object, scale, translate) }else { geometry = geometryReader(object, arcs) } var feature = new ol.Feature; feature.setGeometry(geometry); if(goog.isDef(object.id)) { feature.setId(object.id) } if(goog.isDef(object.properties)) { feature.setValues(object.properties) } return feature }; ol.format.TopoJSON.prototype.readFeatures; ol.format.TopoJSON.prototype.readFeaturesFromObject = function(object) { if(object.type == "Topology") { var topoJSONTopology = (object); var transform, scale = null, translate = null; if(goog.isDef(topoJSONTopology.transform)) { transform = (topoJSONTopology.transform); scale = transform.scale; translate = transform.translate } var arcs = topoJSONTopology.arcs; if(goog.isDef(transform)) { ol.format.TopoJSON.transformArcs_(arcs, scale, translate) } var features = []; var topoJSONFeatures = goog.object.getValues(topoJSONTopology.objects); var i, ii; var feature; for(i = 0, ii = topoJSONFeatures.length;i < ii;++i) { if(topoJSONFeatures[i].type === "GeometryCollection") { feature = (topoJSONFeatures[i]); features.push.apply(features, ol.format.TopoJSON.readFeaturesFromGeometryCollection_(feature, arcs, scale, translate)) }else { feature = (topoJSONFeatures[i]); features.push(ol.format.TopoJSON.readFeatureFromGeometry_(feature, arcs, scale, translate)) } } return features }else { return[] } }; ol.format.TopoJSON.transformArcs_ = function(arcs, scale, translate) { var i, ii; for(i = 0, ii = arcs.length;i < ii;++i) { ol.format.TopoJSON.transformArc_(arcs[i], scale, translate) } }; ol.format.TopoJSON.transformArc_ = function(arc, scale, translate) { var x = 0; var y = 0; var vertex; var i, ii; for(i = 0, ii = arc.length;i < ii;++i) { vertex = arc[i]; x += vertex[0]; y += vertex[1]; vertex[0] = x; vertex[1] = y; ol.format.TopoJSON.transformVertex_(vertex, scale, translate) } }; ol.format.TopoJSON.transformVertex_ = function(vertex, scale, translate) { vertex[0] = vertex[0] * scale[0] + translate[0]; vertex[1] = vertex[1] * scale[1] + translate[1] }; ol.format.TopoJSON.prototype.readProjection = function(object) { return this.defaultProjection_ }; ol.format.TopoJSON.GEOMETRY_READERS_ = {"Point":ol.format.TopoJSON.readPointGeometry_, "LineString":ol.format.TopoJSON.readLineStringGeometry_, "Polygon":ol.format.TopoJSON.readPolygonGeometry_, "MultiPoint":ol.format.TopoJSON.readMultiPointGeometry_, "MultiLineString":ol.format.TopoJSON.readMultiLineStringGeometry_, "MultiPolygon":ol.format.TopoJSON.readMultiPolygonGeometry_}; goog.provide("ol.format.GML"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom"); goog.require("goog.dom.NodeType"); goog.require("goog.object"); goog.require("goog.string"); goog.require("ol.Feature"); goog.require("ol.array"); goog.require("ol.extent"); goog.require("ol.format.XMLFeature"); goog.require("ol.format.XSD"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.LineString"); goog.require("ol.geom.LinearRing"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.proj"); goog.require("ol.xml"); ol.format.GML = function(opt_options) { var options = (goog.isDef(opt_options) ? opt_options : {}); this.featureType_ = options.featureType; this.featureNS_ = options.featureNS; this.srsName_ = options.srsName; this.surface_ = goog.isDef(options.surface) ? options.surface : false; this.curve_ = goog.isDef(options.curve) ? options.curve : false; this.multiCurve_ = goog.isDef(options.multiCurve) ? options.multiCurve : true; this.multiSurface_ = goog.isDef(options.multiSurface) ? options.multiSurface : true; this.schemaLocation_ = goog.isDef(options.schemaLocation) ? options.schemaLocation : ol.format.GML.schemaLocation_; goog.base(this) }; goog.inherits(ol.format.GML, ol.format.XMLFeature); ol.format.GML.schemaLocation_ = "http://www.opengis.net/gml " + "http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/" + "1.0.0/gmlsf.xsd"; ol.format.GML.readFeatures_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); var localName = ol.xml.getLocalName(node); var context = objectStack[0]; goog.asserts.assert(goog.isObject(context)); var featureType = goog.object.get(context, "featureType"); var features; if(localName == "FeatureCollection") { features = ol.xml.pushParseAndPop(null, ol.format.GML.FEATURE_COLLECTION_PARSERS, node, objectStack) }else { if(localName == "featureMembers" || localName == "featureMember") { var parsers = {}; var parsersNS = {}; parsers[featureType] = localName == "featureMembers" ? ol.xml.makeArrayPusher(ol.format.GML.readFeature_) : ol.xml.makeReplacer(ol.format.GML.readFeature_); parsersNS[goog.object.get(context, "featureNS")] = parsers; features = ol.xml.pushParseAndPop([], parsersNS, node, objectStack) } } if(!goog.isDef(features)) { features = [] } return features }; ol.format.GML.FEATURE_COLLECTION_PARSERS = {"http://www.opengis.net/gml":{"featureMember":ol.xml.makeArrayPusher(ol.format.GML.readFeatures_), "featureMembers":ol.xml.makeReplacer(ol.format.GML.readFeatures_)}}; ol.format.GML.readGeometry = function(node, objectStack) { var context = objectStack[0]; goog.asserts.assert(goog.isObject(context)); goog.object.set(context, "srsName", node.firstElementChild.getAttribute("srsName")); var geometry = ol.xml.pushParseAndPop((null), ol.format.GML.GEOMETRY_PARSERS_, node, objectStack); if(goog.isDefAndNotNull(geometry)) { return geometry }else { return undefined } }; ol.format.GML.readFeature_ = function(node, objectStack) { var n; var fid = node.getAttribute("fid") || ol.xml.getAttributeNS(node, "http://www.opengis.net/gml", "id"); var values = {}, geometryName; for(n = node.firstElementChild;!goog.isNull(n);n = n.nextElementSibling) { if(n.childNodes.length === 0 || n.childNodes.length === 1 && n.firstChild.nodeType === 3) { var value = ol.xml.getAllTextContent(n, false); if(goog.string.isEmpty(value)) { value = undefined } values[ol.xml.getLocalName(n)] = value }else { geometryName = ol.xml.getLocalName(n); values[geometryName] = ol.format.GML.readGeometry(n, objectStack) } } var feature = new ol.Feature(values); if(goog.isDef(geometryName)) { feature.setGeometryName(geometryName) } if(fid) { feature.setId(fid) } return feature }; ol.format.GML.readPoint_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Point"); var flatCoordinates = ol.format.GML.readFlatCoordinatesFromNode_(node, objectStack); if(goog.isDefAndNotNull(flatCoordinates)) { var point = new ol.geom.Point(null); goog.asserts.assert(flatCoordinates.length == 3); point.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates); return point } }; ol.format.GML.readMultiPoint_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "MultiPoint"); var coordinates = ol.xml.pushParseAndPop(([]), ol.format.GML.MULTIPOINT_PARSERS_, node, objectStack); if(goog.isDef(coordinates)) { return new ol.geom.MultiPoint(coordinates) }else { return undefined } }; ol.format.GML.readMultiLineString_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "MultiLineString"); var lineStrings = ol.xml.pushParseAndPop(([]), ol.format.GML.MULTILINESTRING_PARSERS_, node, objectStack); if(goog.isDef(lineStrings)) { var multiLineString = new ol.geom.MultiLineString(null); multiLineString.setLineStrings(lineStrings); return multiLineString }else { return undefined } }; ol.format.GML.readMultiCurve_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "MultiCurve"); var lineStrings = ol.xml.pushParseAndPop(([]), ol.format.GML.MULTICURVE_PARSERS_, node, objectStack); if(goog.isDef(lineStrings)) { var multiLineString = new ol.geom.MultiLineString(null); multiLineString.setLineStrings(lineStrings); return multiLineString }else { return undefined } }; ol.format.GML.readMultiSurface_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "MultiSurface"); var polygons = ol.xml.pushParseAndPop(([]), ol.format.GML.MULTISURFACE_PARSERS_, node, objectStack); if(goog.isDef(polygons)) { var multiPolygon = new ol.geom.MultiPolygon(null); multiPolygon.setPolygons(polygons); return multiPolygon }else { return undefined } }; ol.format.GML.readMultiPolygon_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "MultiPolygon"); var polygons = ol.xml.pushParseAndPop(([]), ol.format.GML.MULTIPOLYGON_PARSERS_, node, objectStack); if(goog.isDef(polygons)) { var multiPolygon = new ol.geom.MultiPolygon(null); multiPolygon.setPolygons(polygons); return multiPolygon }else { return undefined } }; ol.format.GML.pointMemberParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "pointMember" || node.localName == "pointMembers"); ol.xml.parse(ol.format.GML.POINTMEMBER_PARSERS_, node, objectStack) }; ol.format.GML.lineStringMemberParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "lineStringMember" || node.localName == "lineStringMembers"); ol.xml.parse(ol.format.GML.LINESTRINGMEMBER_PARSERS_, node, objectStack) }; ol.format.GML.curveMemberParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "curveMember" || node.localName == "curveMembers"); ol.xml.parse(ol.format.GML.CURVEMEMBER_PARSERS_, node, objectStack) }; ol.format.GML.surfaceMemberParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "surfaceMember" || node.localName == "surfaceMembers"); ol.xml.parse(ol.format.GML.SURFACEMEMBER_PARSERS_, node, objectStack) }; ol.format.GML.polygonMemberParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "polygonMember" || node.localName == "polygonMembers"); ol.xml.parse(ol.format.GML.POLYGONMEMBER_PARSERS_, node, objectStack) }; ol.format.GML.readLineString_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "LineString"); var flatCoordinates = ol.format.GML.readFlatCoordinatesFromNode_(node, objectStack); if(goog.isDefAndNotNull(flatCoordinates)) { var lineString = new ol.geom.LineString(null); lineString.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates); return lineString }else { return undefined } }; ol.format.GML.readPatch_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "patches"); return ol.xml.pushParseAndPop(([null]), ol.format.GML.PATCHES_PARSERS_, node, objectStack) }; ol.format.GML.readSegment_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "segments"); return ol.xml.pushParseAndPop(([null]), ol.format.GML.SEGMENTS_PARSERS_, node, objectStack) }; ol.format.GML.readPolygonPatch_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "PolygonPatch"); return ol.xml.pushParseAndPop(([null]), ol.format.GML.FLAT_LINEAR_RINGS_PARSERS_, node, objectStack) }; ol.format.GML.readLineStringSegment_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "LineStringSegment"); return ol.xml.pushParseAndPop(([null]), ol.format.GML.GEOMETRY_FLAT_COORDINATES_PARSERS_, node, objectStack) }; ol.format.GML.interiorParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "interior"); var flatLinearRing = ol.xml.pushParseAndPop((undefined), ol.format.GML.RING_PARSERS_, node, objectStack); if(goog.isDef(flatLinearRing)) { var flatLinearRings = (objectStack[objectStack.length - 1]); goog.asserts.assert(goog.isArray(flatLinearRings)); goog.asserts.assert(flatLinearRings.length > 0); flatLinearRings.push(flatLinearRing) } }; ol.format.GML.exteriorParser_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "exterior"); var flatLinearRing = ol.xml.pushParseAndPop((undefined), ol.format.GML.RING_PARSERS_, node, objectStack); if(goog.isDef(flatLinearRing)) { var flatLinearRings = (objectStack[objectStack.length - 1]); goog.asserts.assert(goog.isArray(flatLinearRings)); goog.asserts.assert(flatLinearRings.length > 0); flatLinearRings[0] = flatLinearRing } }; ol.format.GML.readFlatLinearRing_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "LinearRing"); var ring = ol.xml.pushParseAndPop((null), ol.format.GML.GEOMETRY_FLAT_COORDINATES_PARSERS_, node, objectStack); if(goog.isDefAndNotNull(ring)) { return ring }else { return undefined } }; ol.format.GML.readLinearRing_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "LinearRing"); var flatCoordinates = ol.format.GML.readFlatCoordinatesFromNode_(node, objectStack); if(goog.isDef(flatCoordinates)) { var ring = new ol.geom.LinearRing(null); ring.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates); return ring }else { return undefined } }; ol.format.GML.readPolygon_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Polygon"); var flatLinearRings = ol.xml.pushParseAndPop(([null]), ol.format.GML.FLAT_LINEAR_RINGS_PARSERS_, node, objectStack); if(goog.isDef(flatLinearRings) && !goog.isNull(flatLinearRings[0])) { var polygon = new ol.geom.Polygon(null); var flatCoordinates = flatLinearRings[0]; var ends = [flatCoordinates.length]; var i, ii; for(i = 1, ii = flatLinearRings.length;i < ii;++i) { ol.array.safeExtend(flatCoordinates, flatLinearRings[i]); ends.push(flatCoordinates.length) } polygon.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates, ends); return polygon }else { return undefined } }; ol.format.GML.readSurface_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Surface"); var flatLinearRings = ol.xml.pushParseAndPop(([null]), ol.format.GML.SURFACE_PARSERS_, node, objectStack); if(goog.isDef(flatLinearRings) && !goog.isNull(flatLinearRings[0])) { var polygon = new ol.geom.Polygon(null); var flatCoordinates = flatLinearRings[0]; var ends = [flatCoordinates.length]; var i, ii; for(i = 1, ii = flatLinearRings.length;i < ii;++i) { ol.array.safeExtend(flatCoordinates, flatLinearRings[i]); ends.push(flatCoordinates.length) } polygon.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates, ends); return polygon }else { return undefined } }; ol.format.GML.readCurve_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Curve"); var flatCoordinates = ol.xml.pushParseAndPop(([null]), ol.format.GML.CURVE_PARSERS_, node, objectStack); if(goog.isDef(flatCoordinates)) { var lineString = new ol.geom.LineString(null); lineString.setFlatCoordinates(ol.geom.GeometryLayout.XYZ, flatCoordinates); return lineString }else { return undefined } }; ol.format.GML.readEnvelope_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Envelope"); var flatCoordinates = ol.xml.pushParseAndPop(([null]), ol.format.GML.ENVELOPE_PARSERS_, node, objectStack); return ol.extent.createOrUpdate(flatCoordinates[1][0], flatCoordinates[1][1], flatCoordinates[2][0], flatCoordinates[2][1]) }; ol.format.GML.readFlatCoordinatesFromNode_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); return(ol.xml.pushParseAndPop(null, ol.format.GML.GEOMETRY_FLAT_COORDINATES_PARSERS_, node, objectStack)) }; ol.format.GML.readFlatPos_ = function(node, objectStack) { var s = ol.xml.getAllTextContent(node, false); var re = /^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*/; var flatCoordinates = []; var m; while(m = re.exec(s)) { flatCoordinates.push(parseFloat(m[1])); s = s.substr(m[0].length) } if(s !== "") { return undefined } var context = objectStack[0]; goog.asserts.assert(goog.isObject(context)); var containerSrs = goog.object.get(context, "srsName"); var axisOrientation = "enu"; if(!goog.isNull(containerSrs)) { var proj = ol.proj.get(containerSrs); axisOrientation = proj.getAxisOrientation() } if(axisOrientation === "neu") { var i, ii; for(i = 0, ii = flatCoordinates.length;i < ii;i += 3) { var y = flatCoordinates[i]; var x = flatCoordinates[i + 1]; flatCoordinates[i] = x; flatCoordinates[i + 1] = y } } var len = flatCoordinates.length; if(len == 2) { flatCoordinates.push(0) } if(len === 0) { return undefined } return flatCoordinates }; ol.format.GML.readFlatPosList_ = function(node, objectStack) { var s = ol.xml.getAllTextContent(node, false).replace(/^\s*|\s*$/g, ""); var context = objectStack[0]; goog.asserts.assert(goog.isObject(context)); var containerSrs = goog.object.get(context, "srsName"); var containerDimension = node.parentNode.getAttribute("srsDimension"); var axisOrientation = "enu"; if(!goog.isNull(containerSrs)) { var proj = ol.proj.get(containerSrs); axisOrientation = proj.getAxisOrientation() } var coords = s.split(/\s+/); var dim = 2; if(!goog.isNull(node.getAttribute("srsDimension"))) { dim = ol.format.XSD.readNonNegativeIntegerString(node.getAttribute("srsDimension")) }else { if(!goog.isNull(node.getAttribute("dimension"))) { dim = ol.format.XSD.readNonNegativeIntegerString(node.getAttribute("dimension")) }else { if(!goog.isNull(containerDimension)) { dim = ol.format.XSD.readNonNegativeIntegerString(containerDimension) } } } var x, y, z; var flatCoordinates = []; for(var i = 0, ii = coords.length;i < ii;i += dim) { x = parseFloat(coords[i]); y = parseFloat(coords[i + 1]); z = dim === 3 ? parseFloat(coords[i + 2]) : 0; if(axisOrientation.substr(0, 2) === "en") { flatCoordinates.push(x, y, z) }else { flatCoordinates.push(y, x, z) } } return flatCoordinates }; ol.format.GML.GEOMETRY_PARSERS_ = {"http://www.opengis.net/gml":{"Point":ol.xml.makeReplacer(ol.format.GML.readPoint_), "MultiPoint":ol.xml.makeReplacer(ol.format.GML.readMultiPoint_), "LineString":ol.xml.makeReplacer(ol.format.GML.readLineString_), "MultiLineString":ol.xml.makeReplacer(ol.format.GML.readMultiLineString_), "LinearRing":ol.xml.makeReplacer(ol.format.GML.readLinearRing_), "Polygon":ol.xml.makeReplacer(ol.format.GML.readPolygon_), "MultiPolygon":ol.xml.makeReplacer(ol.format.GML.readMultiPolygon_), "Surface":ol.xml.makeReplacer(ol.format.GML.readSurface_), "MultiSurface":ol.xml.makeReplacer(ol.format.GML.readMultiSurface_), "Curve":ol.xml.makeReplacer(ol.format.GML.readCurve_), "MultiCurve":ol.xml.makeReplacer(ol.format.GML.readMultiCurve_), "Envelope":ol.xml.makeReplacer(ol.format.GML.readEnvelope_)}}; ol.format.GML.GEOMETRY_FLAT_COORDINATES_PARSERS_ = {"http://www.opengis.net/gml":{"pos":ol.xml.makeReplacer(ol.format.GML.readFlatPos_), "posList":ol.xml.makeReplacer(ol.format.GML.readFlatPosList_)}}; ol.format.GML.FLAT_LINEAR_RINGS_PARSERS_ = {"http://www.opengis.net/gml":{"interior":ol.format.GML.interiorParser_, "exterior":ol.format.GML.exteriorParser_}}; ol.format.GML.MULTIPOINT_PARSERS_ = {"http://www.opengis.net/gml":{"pointMember":ol.xml.makeArrayPusher(ol.format.GML.pointMemberParser_), "pointMembers":ol.xml.makeArrayPusher(ol.format.GML.pointMemberParser_)}}; ol.format.GML.MULTILINESTRING_PARSERS_ = {"http://www.opengis.net/gml":{"lineStringMember":ol.xml.makeArrayPusher(ol.format.GML.lineStringMemberParser_), "lineStringMembers":ol.xml.makeArrayPusher(ol.format.GML.lineStringMemberParser_)}}; ol.format.GML.MULTICURVE_PARSERS_ = {"http://www.opengis.net/gml":{"curveMember":ol.xml.makeArrayPusher(ol.format.GML.curveMemberParser_), "curveMembers":ol.xml.makeArrayPusher(ol.format.GML.curveMemberParser_)}}; ol.format.GML.MULTISURFACE_PARSERS_ = {"http://www.opengis.net/gml":{"surfaceMember":ol.xml.makeArrayPusher(ol.format.GML.surfaceMemberParser_), "surfaceMembers":ol.xml.makeArrayPusher(ol.format.GML.surfaceMemberParser_)}}; ol.format.GML.MULTIPOLYGON_PARSERS_ = {"http://www.opengis.net/gml":{"polygonMember":ol.xml.makeArrayPusher(ol.format.GML.polygonMemberParser_), "polygonMembers":ol.xml.makeArrayPusher(ol.format.GML.polygonMemberParser_)}}; ol.format.GML.POINTMEMBER_PARSERS_ = {"http://www.opengis.net/gml":{"Point":ol.xml.makeArrayPusher(ol.format.GML.readFlatCoordinatesFromNode_)}}; ol.format.GML.LINESTRINGMEMBER_PARSERS_ = {"http://www.opengis.net/gml":{"LineString":ol.xml.makeArrayPusher(ol.format.GML.readLineString_)}}; ol.format.GML.CURVEMEMBER_PARSERS_ = {"http://www.opengis.net/gml":{"LineString":ol.xml.makeArrayPusher(ol.format.GML.readLineString_), "Curve":ol.xml.makeArrayPusher(ol.format.GML.readCurve_)}}; ol.format.GML.SURFACEMEMBER_PARSERS_ = {"http://www.opengis.net/gml":{"Polygon":ol.xml.makeArrayPusher(ol.format.GML.readPolygon_), "Surface":ol.xml.makeArrayPusher(ol.format.GML.readSurface_)}}; ol.format.GML.POLYGONMEMBER_PARSERS_ = {"http://www.opengis.net/gml":{"Polygon":ol.xml.makeArrayPusher(ol.format.GML.readPolygon_)}}; ol.format.GML.SURFACE_PARSERS_ = {"http://www.opengis.net/gml":{"patches":ol.xml.makeReplacer(ol.format.GML.readPatch_)}}; ol.format.GML.CURVE_PARSERS_ = {"http://www.opengis.net/gml":{"segments":ol.xml.makeReplacer(ol.format.GML.readSegment_)}}; ol.format.GML.ENVELOPE_PARSERS_ = {"http://www.opengis.net/gml":{"lowerCorner":ol.xml.makeArrayPusher(ol.format.GML.readFlatPosList_), "upperCorner":ol.xml.makeArrayPusher(ol.format.GML.readFlatPosList_)}}; ol.format.GML.PATCHES_PARSERS_ = {"http://www.opengis.net/gml":{"PolygonPatch":ol.xml.makeReplacer(ol.format.GML.readPolygonPatch_)}}; ol.format.GML.SEGMENTS_PARSERS_ = {"http://www.opengis.net/gml":{"LineStringSegment":ol.xml.makeReplacer(ol.format.GML.readLineStringSegment_)}}; ol.format.GML.RING_PARSERS_ = {"http://www.opengis.net/gml":{"LinearRing":ol.xml.makeReplacer(ol.format.GML.readFlatLinearRing_)}}; ol.format.GML.prototype.readGeometryFromNode = function(node) { var geometry = ol.format.GML.readGeometry(node, [{}]); return goog.isDef(geometry) ? geometry : null }; ol.format.GML.prototype.readFeaturesFromNode = function(node) { var objectStack = [{"featureType":this.featureType_, "featureNS":this.featureNS_}]; return ol.format.GML.readFeatures_(node, objectStack) }; ol.format.GML.writePos_ = function(node, value, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); var axisOrientation = "enu"; if(goog.isDefAndNotNull(srsName)) { axisOrientation = ol.proj.get(srsName).getAxisOrientation() } var point = value.getCoordinates(); var coords; if(axisOrientation.substr(0, 2) === "en") { coords = point[0] + " " + point[1] }else { coords = point[1] + " " + point[0] } ol.format.XSD.writeStringTextNode(node, coords) }; ol.format.GML.getCoords_ = function(point, opt_srsName) { var axisOrientation = "enu"; if(goog.isDefAndNotNull(opt_srsName)) { axisOrientation = ol.proj.get(opt_srsName).getAxisOrientation() } return axisOrientation.substr(0, 2) === "en" ? point[0] + " " + point[1] : point[1] + " " + point[0] }; ol.format.GML.writePosList_ = function(node, value, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); var points = value.getCoordinates(); var len = points.length; var parts = new Array(len); var point; for(var i = 0;i < len;++i) { point = points[i]; parts[i] = ol.format.GML.getCoords_(point, srsName) } ol.format.XSD.writeStringTextNode(node, parts.join(" ")) }; ol.format.GML.writePoint_ = function(node, geometry, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); if(goog.isDefAndNotNull(srsName)) { node.setAttribute("srsName", srsName) } var pos = ol.xml.createElementNS(node.namespaceURI, "pos"); node.appendChild(pos); ol.format.GML.writePos_(pos, geometry, objectStack) }; ol.format.GML.ENVELOPE_SERIALIZERS_ = {"http://www.opengis.net/gml":{"lowerCorner":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode), "upperCorner":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode)}}; ol.format.GML.writeEnvelope = function(node, extent, objectStack) { goog.asserts.assert(extent.length == 4); var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); if(goog.isDef(srsName)) { node.setAttribute("srsName", srsName) } var keys = ["lowerCorner", "upperCorner"]; var values = [extent[0] + " " + extent[1], extent[2] + " " + extent[3]]; ol.xml.pushSerializeAndPop(({node:node}), ol.format.GML.ENVELOPE_SERIALIZERS_, ol.xml.OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, keys) }; ol.format.GML.writeLinearRing_ = function(node, geometry, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); if(goog.isDefAndNotNull(srsName)) { node.setAttribute("srsName", srsName) } var posList = ol.xml.createElementNS(node.namespaceURI, "posList"); node.appendChild(posList); ol.format.GML.writePosList_(posList, geometry, objectStack) }; ol.format.GML.RING_NODE_FACTORY_ = function(value, objectStack, opt_nodeName) { var context = objectStack[objectStack.length - 1]; var parentNode = context.node; goog.asserts.assert(goog.isObject(context)); var exteriorWritten = goog.object.get(context, "exteriorWritten"); if(!goog.isDef(exteriorWritten)) { goog.object.set(context, "exteriorWritten", true) } return ol.xml.createElementNS(parentNode.namespaceURI, goog.isDef(exteriorWritten) ? "interior" : "exterior") }; ol.format.GML.writeSurfaceOrPolygon_ = function(node, geometry, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); if(node.nodeName !== "PolygonPatch" && goog.isDefAndNotNull(srsName)) { node.setAttribute("srsName", srsName) } if(node.nodeName === "Polygon" || node.nodeName === "PolygonPatch") { var rings = geometry.getLinearRings(); ol.xml.pushSerializeAndPop({node:node, srsName:srsName}, ol.format.GML.RING_SERIALIZERS_, ol.format.GML.RING_NODE_FACTORY_, rings, objectStack) }else { if(node.nodeName === "Surface") { var patches = ol.xml.createElementNS(node.namespaceURI, "patches"); node.appendChild(patches); ol.format.GML.writeSurfacePatches_(patches, geometry, objectStack) } } }; ol.format.GML.writeCurveOrLineString_ = function(node, geometry, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); if(node.nodeName !== "LineStringSegment" && goog.isDefAndNotNull(srsName)) { node.setAttribute("srsName", srsName) } if(node.nodeName === "LineString" || node.nodeName === "LineStringSegment") { var posList = ol.xml.createElementNS(node.namespaceURI, "posList"); node.appendChild(posList); ol.format.GML.writePosList_(posList, geometry, objectStack) }else { if(node.nodeName === "Curve") { var segments = ol.xml.createElementNS(node.namespaceURI, "segments"); node.appendChild(segments); ol.format.GML.writeCurveSegments_(segments, geometry, objectStack) } } }; ol.format.GML.writeMultiSurfaceOrPolygon_ = function(node, geometry, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); var surface = goog.object.get(context, "surface"); if(goog.isDefAndNotNull(srsName)) { node.setAttribute("srsName", srsName) } var polygons = geometry.getPolygons(); ol.xml.pushSerializeAndPop({node:node, srsName:srsName, surface:surface}, ol.format.GML.SURFACEORPOLYGONMEMBER_SERIALIZERS_, ol.format.GML.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, polygons, objectStack) }; ol.format.GML.writeMultiPoint_ = function(node, geometry, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); if(goog.isDefAndNotNull(srsName)) { node.setAttribute("srsName", srsName) } var points = geometry.getPoints(); ol.xml.pushSerializeAndPop({node:node, srsName:srsName}, ol.format.GML.POINTMEMBER_SERIALIZERS_, ol.xml.makeSimpleNodeFactory("pointMember"), points, objectStack) }; ol.format.GML.writeMultiCurveOrLineString_ = function(node, geometry, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var srsName = goog.object.get(context, "srsName"); var curve = goog.object.get(context, "curve"); if(goog.isDefAndNotNull(srsName)) { node.setAttribute("srsName", srsName) } var lines = geometry.getLineStrings(); ol.xml.pushSerializeAndPop({node:node, srsName:srsName, curve:curve}, ol.format.GML.LINESTRINGORCURVEMEMBER_SERIALIZERS_, ol.format.GML.MULTIGEOMETRY_MEMBER_NODE_FACTORY_, lines, objectStack) }; ol.format.GML.writeRing_ = function(node, ring, objectStack) { var linearRing = ol.xml.createElementNS(node.namespaceURI, "LinearRing"); node.appendChild(linearRing); ol.format.GML.writeLinearRing_(linearRing, ring, objectStack) }; ol.format.GML.writeSurfaceOrPolygonMember_ = function(node, polygon, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var child = ol.format.GML.GEOMETRY_NODE_FACTORY_(polygon, objectStack); if(goog.isDef(child)) { node.appendChild(child); ol.format.GML.writeSurfaceOrPolygon_(child, polygon, objectStack) } }; ol.format.GML.writePointMember_ = function(node, point, objectStack) { var child = ol.xml.createElementNS(node.namespaceURI, "Point"); node.appendChild(child); ol.format.GML.writePoint_(child, point, objectStack) }; ol.format.GML.writeLineStringOrCurveMember_ = function(node, line, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var child = ol.format.GML.GEOMETRY_NODE_FACTORY_(line, objectStack); if(goog.isDef(child)) { node.appendChild(child); ol.format.GML.writeCurveOrLineString_(child, line, objectStack) } }; ol.format.GML.writeSurfacePatches_ = function(node, polygon, objectStack) { var child = ol.xml.createElementNS(node.namespaceURI, "PolygonPatch"); node.appendChild(child); ol.format.GML.writeSurfaceOrPolygon_(child, polygon, objectStack) }; ol.format.GML.writeCurveSegments_ = function(node, line, objectStack) { var child = ol.xml.createElementNS(node.namespaceURI, "LineStringSegment"); node.appendChild(child); ol.format.GML.writeCurveOrLineString_(child, line, objectStack) }; ol.format.GML.writeGeometry = function(node, geometry, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var item = goog.object.clone(context); item.node = node; ol.xml.pushSerializeAndPop((item), ol.format.GML.GEOMETRY_SERIALIZERS_, ol.format.GML.GEOMETRY_NODE_FACTORY_, [geometry], objectStack) }; ol.format.GML.writeFeature = function(node, feature, objectStack) { var fid = feature.getId(); if(goog.isDef(fid)) { node.setAttribute("fid", fid) } var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var featureNS = goog.object.get(context, "featureNS"); var geometryName = feature.getGeometryName(); if(!goog.isDef(context.serializers)) { context.serializers = {}; context.serializers[featureNS] = {} } var properties = feature.getProperties(); var keys = [], values = []; for(var key in properties) { var value = properties[key]; if(!goog.isNull(value)) { keys.push(key); values.push(value); if(key == geometryName) { if(!(key in context.serializers[featureNS])) { context.serializers[featureNS][key] = ol.xml.makeChildAppender(ol.format.GML.writeGeometry) } }else { if(!(key in context.serializers[featureNS])) { context.serializers[featureNS][key] = ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode) } } } } var item = goog.object.clone(context); item.node = node; ol.xml.pushSerializeAndPop((item), context.serializers, ol.xml.makeSimpleNodeFactory(undefined, featureNS), values, objectStack, keys) }; ol.format.GML.writeFeatureMembers_ = function(node, features, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var featureType = goog.object.get(context, "featureType"); var featureNS = goog.object.get(context, "featureNS"); var serializers = {}; serializers[featureNS] = {}; serializers[featureNS][featureType] = ol.xml.makeChildAppender(ol.format.GML.writeFeature); var item = goog.object.clone(context); item.node = node; ol.xml.pushSerializeAndPop((item), serializers, ol.xml.makeSimpleNodeFactory(featureType, featureNS), features, objectStack) }; ol.format.GML.SURFACEORPOLYGONMEMBER_SERIALIZERS_ = {"http://www.opengis.net/gml":{"surfaceMember":ol.xml.makeChildAppender(ol.format.GML.writeSurfaceOrPolygonMember_), "polygonMember":ol.xml.makeChildAppender(ol.format.GML.writeSurfaceOrPolygonMember_)}}; ol.format.GML.POINTMEMBER_SERIALIZERS_ = {"http://www.opengis.net/gml":{"pointMember":ol.xml.makeChildAppender(ol.format.GML.writePointMember_)}}; ol.format.GML.LINESTRINGORCURVEMEMBER_SERIALIZERS_ = {"http://www.opengis.net/gml":{"lineStringMember":ol.xml.makeChildAppender(ol.format.GML.writeLineStringOrCurveMember_), "curveMember":ol.xml.makeChildAppender(ol.format.GML.writeLineStringOrCurveMember_)}}; ol.format.GML.RING_SERIALIZERS_ = {"http://www.opengis.net/gml":{"exterior":ol.xml.makeChildAppender(ol.format.GML.writeRing_), "interior":ol.xml.makeChildAppender(ol.format.GML.writeRing_)}}; ol.format.GML.GEOMETRY_SERIALIZERS_ = {"http://www.opengis.net/gml":{"Curve":ol.xml.makeChildAppender(ol.format.GML.writeCurveOrLineString_), "MultiCurve":ol.xml.makeChildAppender(ol.format.GML.writeMultiCurveOrLineString_), "Point":ol.xml.makeChildAppender(ol.format.GML.writePoint_), "MultiPoint":ol.xml.makeChildAppender(ol.format.GML.writeMultiPoint_), "LineString":ol.xml.makeChildAppender(ol.format.GML.writeCurveOrLineString_), "MultiLineString":ol.xml.makeChildAppender(ol.format.GML.writeMultiCurveOrLineString_), "LinearRing":ol.xml.makeChildAppender(ol.format.GML.writeLinearRing_), "Polygon":ol.xml.makeChildAppender(ol.format.GML.writeSurfaceOrPolygon_), "MultiPolygon":ol.xml.makeChildAppender(ol.format.GML.writeMultiSurfaceOrPolygon_), "Surface":ol.xml.makeChildAppender(ol.format.GML.writeSurfaceOrPolygon_), "MultiSurface":ol.xml.makeChildAppender(ol.format.GML.writeMultiSurfaceOrPolygon_), "Envelope":ol.xml.makeChildAppender(ol.format.GML.writeEnvelope)}}; ol.format.GML.MULTIGEOMETRY_TO_MEMBER_NODENAME_ = {"MultiLineString":"lineStringMember", "MultiCurve":"curveMember", "MultiPolygon":"polygonMember", "MultiSurface":"surfaceMember"}; ol.format.GML.MULTIGEOMETRY_MEMBER_NODE_FACTORY_ = function(value, objectStack, opt_nodeName) { var parentNode = objectStack[objectStack.length - 1].node; goog.asserts.assert(ol.xml.isNode(parentNode)); return ol.xml.createElementNS("http://www.opengis.net/gml", ol.format.GML.MULTIGEOMETRY_TO_MEMBER_NODENAME_[parentNode.nodeName]) }; ol.format.GML.GEOMETRY_NODE_FACTORY_ = function(value, objectStack, opt_nodeName) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var multiSurface = goog.object.get(context, "multiSurface"); var surface = goog.object.get(context, "surface"); var curve = goog.object.get(context, "curve"); var multiCurve = goog.object.get(context, "multiCurve"); var parentNode = objectStack[objectStack.length - 1].node; goog.asserts.assert(ol.xml.isNode(parentNode)); var nodeName; if(!goog.isArray(value)) { goog.asserts.assertInstanceof(value, ol.geom.Geometry); nodeName = value.getType(); if(nodeName === "MultiPolygon" && multiSurface === true) { nodeName = "MultiSurface" }else { if(nodeName === "Polygon" && surface === true) { nodeName = "Surface" }else { if(nodeName === "LineString" && curve === true) { nodeName = "Curve" }else { if(nodeName === "MultiLineString" && multiCurve === true) { nodeName = "MultiCurve" } } } } }else { nodeName = "Envelope" } return ol.xml.createElementNS("http://www.opengis.net/gml", nodeName) }; ol.format.GML.prototype.writeGeometryNode = function(geometry) { var geom = ol.xml.createElementNS("http://www.opengis.net/gml", "geom"); var context = {node:geom, srsName:this.srsName_, curve:this.curve_, surface:this.surface_, multiSurface:this.multiSurface_, multiCurve:this.multiCurve_}; ol.xml.pushSerializeAndPop((context), ol.format.GML.GEOMETRY_SERIALIZERS_, ol.format.GML.GEOMETRY_NODE_FACTORY_, [geometry], []); return geom }; ol.format.GML.prototype.writeFeaturesNode = function(features) { var node = ol.xml.createElementNS("http://www.opengis.net/gml", "featureMembers"); ol.xml.setAttributeNS(node, "http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", this.schemaLocation_); var context = {srsName:this.srsName_, curve:this.curve_, surface:this.surface_, multiSurface:this.multiSurface_, multiCurve:this.multiCurve_, featureNS:this.featureNS_, featureType:this.featureType_}; ol.format.GML.writeFeatureMembers_(node, features, [context]); return node }; goog.provide("ol.format.WFS"); goog.require("goog.asserts"); goog.require("goog.dom.NodeType"); goog.require("goog.object"); goog.require("ol.format.GML"); goog.require("ol.format.XMLFeature"); goog.require("ol.format.XSD"); goog.require("ol.geom.Geometry"); goog.require("ol.proj"); goog.require("ol.xml"); ol.format.WFS = function(opt_options) { var options = (goog.isDef(opt_options) ? opt_options : {}); this.featureType_ = options.featureType; this.featureNS_ = options.featureNS; this.schemaLocation_ = goog.isDef(options.schemaLocation) ? options.schemaLocation : ol.format.WFS.schemaLocation_; goog.base(this) }; goog.inherits(ol.format.WFS, ol.format.XMLFeature); ol.format.WFS.FeatureCollectionMetadata; ol.format.WFS.TransactionResponse; ol.format.WFS.schemaLocation_ = "http://www.opengis.net/wfs " + "http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"; ol.format.WFS.prototype.readFeaturesFromNode = function(node) { var objectStack = [{"featureType":this.featureType_, "featureNS":this.featureNS_}]; var features = ol.xml.pushParseAndPop([], ol.format.GML.FEATURE_COLLECTION_PARSERS, node, objectStack); if(!goog.isDef(features)) { features = [] } return features }; ol.format.WFS.prototype.readTransactionResponse = function(source) { if(ol.xml.isDocument(source)) { return this.readTransactionResponseFromDocument((source)) }else { if(ol.xml.isNode(source)) { return this.readTransactionResponseFromNode((source)) }else { if(goog.isString(source)) { var doc = ol.xml.load(source); return this.readTransactionResponseFromDocument(doc) }else { goog.asserts.fail(); return undefined } } } }; ol.format.WFS.prototype.readFeatureCollectionMetadata = function(source) { if(ol.xml.isDocument(source)) { return this.readFeatureCollectionMetadataFromDocument((source)) }else { if(ol.xml.isNode(source)) { return this.readFeatureCollectionMetadataFromNode((source)) }else { if(goog.isString(source)) { var doc = ol.xml.load(source); return this.readFeatureCollectionMetadataFromDocument(doc) }else { goog.asserts.fail(); return undefined } } } }; ol.format.WFS.prototype.readFeatureCollectionMetadataFromDocument = function(doc) { goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT); for(var n = doc.firstChild;!goog.isNull(n);n = n.nextSibling) { if(n.nodeType == goog.dom.NodeType.ELEMENT) { return this.readFeatureCollectionMetadataFromNode(n) } } return undefined }; ol.format.WFS.FEATURE_COLLECTION_PARSERS_ = {"http://www.opengis.net/gml":{"boundedBy":ol.xml.makeObjectPropertySetter(ol.format.GML.readGeometry, "bounds")}}; ol.format.WFS.prototype.readFeatureCollectionMetadataFromNode = function(node) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "FeatureCollection"); var result = {}; var value = ol.format.XSD.readNonNegativeIntegerString(node.getAttribute("numberOfFeatures")); goog.object.set(result, "numberOfFeatures", value); return ol.xml.pushParseAndPop((result), ol.format.WFS.FEATURE_COLLECTION_PARSERS_, node, []) }; ol.format.WFS.TRANSACTION_SUMMARY_PARSERS_ = {"http://www.opengis.net/wfs":{"totalInserted":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger), "totalUpdated":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger), "totalDeleted":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger)}}; ol.format.WFS.readTransactionSummary_ = function(node, objectStack) { return ol.xml.pushParseAndPop({}, ol.format.WFS.TRANSACTION_SUMMARY_PARSERS_, node, objectStack) }; ol.format.WFS.OGC_FID_PARSERS_ = {"http://www.opengis.net/ogc":{"FeatureId":ol.xml.makeArrayPusher(function(node, objectStack) { return node.getAttribute("fid") })}}; ol.format.WFS.fidParser_ = function(node, objectStack) { ol.xml.parse(ol.format.WFS.OGC_FID_PARSERS_, node, objectStack) }; ol.format.WFS.INSERT_RESULTS_PARSERS_ = {"http://www.opengis.net/wfs":{"Feature":ol.format.WFS.fidParser_}}; ol.format.WFS.readInsertResults_ = function(node, objectStack) { return ol.xml.pushParseAndPop([], ol.format.WFS.INSERT_RESULTS_PARSERS_, node, objectStack) }; ol.format.WFS.TRANSACTION_RESPONSE_PARSERS_ = {"http://www.opengis.net/wfs":{"TransactionSummary":ol.xml.makeObjectPropertySetter(ol.format.WFS.readTransactionSummary_, "transactionSummary"), "InsertResults":ol.xml.makeObjectPropertySetter(ol.format.WFS.readInsertResults_, "insertIds")}}; ol.format.WFS.prototype.readTransactionResponseFromDocument = function(doc) { goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT); for(var n = doc.firstChild;!goog.isNull(n);n = n.nextSibling) { if(n.nodeType == goog.dom.NodeType.ELEMENT) { return this.readTransactionResponseFromNode(n) } } return undefined }; ol.format.WFS.prototype.readTransactionResponseFromNode = function(node) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "TransactionResponse"); return ol.xml.pushParseAndPop(({}), ol.format.WFS.TRANSACTION_RESPONSE_PARSERS_, node, []) }; ol.format.WFS.QUERY_SERIALIZERS_ = {"http://www.opengis.net/wfs":{"PropertyName":ol.xml.makeChildAppender(ol.format.XSD.writeStringTextNode)}}; ol.format.WFS.writeFeature_ = function(node, feature, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var featureType = goog.object.get(context, "featureType"); var featureNS = goog.object.get(context, "featureNS"); var child = ol.xml.createElementNS(featureNS, featureType); node.appendChild(child); ol.format.GML.writeFeature(child, feature, objectStack) }; ol.format.WFS.writeOgcFidFilter_ = function(node, fid, objectStack) { var filter = ol.xml.createElementNS("http://www.opengis.net/ogc", "Filter"); var child = ol.xml.createElementNS("http://www.opengis.net/ogc", "FeatureId"); filter.appendChild(child); child.setAttribute("fid", fid); node.appendChild(filter) }; ol.format.WFS.writeDelete_ = function(node, feature, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var featureType = goog.object.get(context, "featureType"); var featurePrefix = goog.object.get(context, "featurePrefix"); node.setAttribute("typeName", featurePrefix + ":" + featureType); var fid = feature.getId(); if(goog.isDef(fid)) { ol.format.WFS.writeOgcFidFilter_(node, fid, objectStack) } }; ol.format.WFS.writeUpdate_ = function(node, feature, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var featureType = goog.object.get(context, "featureType"); var featurePrefix = goog.object.get(context, "featurePrefix"); node.setAttribute("typeName", featurePrefix + ":" + featureType); var fid = feature.getId(); if(goog.isDef(fid)) { var keys = feature.getKeys(); var values = []; for(var i = 0, ii = keys.length;i < ii;i++) { var value = feature.get(keys[i]); if(goog.isDef(value)) { values.push({name:keys[i], value:value}) } } ol.xml.pushSerializeAndPop({node:node}, ol.format.WFS.TRANSACTION_SERIALIZERS_, ol.xml.makeSimpleNodeFactory("Property"), values, objectStack); ol.format.WFS.writeOgcFidFilter_(node, fid, objectStack) } }; ol.format.WFS.writeProperty_ = function(node, pair, objectStack) { var name = ol.xml.createElementNS("http://www.opengis.net/wfs", "Name"); node.appendChild(name); ol.format.XSD.writeStringTextNode(name, pair.name); if(goog.isDefAndNotNull(pair.value)) { var value = ol.xml.createElementNS("http://www.opengis.net/wfs", "Value"); node.appendChild(value); if(pair.value instanceof ol.geom.Geometry) { ol.format.GML.writeGeometry(value, pair.value, objectStack) }else { ol.format.XSD.writeStringTextNode(value, pair.value) } } }; ol.format.WFS.writeNative_ = function(node, nativeElement, objectStack) { if(goog.isDef(nativeElement.vendorId)) { node.setAttribute("vendorId", nativeElement.vendorId) } if(goog.isDef(nativeElement.safeToIgnore)) { node.setAttribute("safeToIgnore", nativeElement.safeToIgnore) } if(goog.isDef(nativeElement.value)) { ol.format.XSD.writeStringTextNode(node, nativeElement.value) } }; ol.format.WFS.TRANSACTION_SERIALIZERS_ = {"http://www.opengis.net/wfs":{"Insert":ol.xml.makeChildAppender(ol.format.WFS.writeFeature_), "Update":ol.xml.makeChildAppender(ol.format.WFS.writeUpdate_), "Delete":ol.xml.makeChildAppender(ol.format.WFS.writeDelete_), "Property":ol.xml.makeChildAppender(ol.format.WFS.writeProperty_), "Native":ol.xml.makeChildAppender(ol.format.WFS.writeNative_)}}; ol.format.WFS.writeQuery_ = function(node, featureType, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var featurePrefix = goog.object.get(context, "featurePrefix"); var featureNS = goog.object.get(context, "featureNS"); var propertyNames = goog.object.get(context, "propertyNames"); var srsName = goog.object.get(context, "srsName"); var prefix = goog.isDef(featurePrefix) ? featurePrefix + ":" : ""; node.setAttribute("typeName", prefix + featureType); if(goog.isDef(srsName)) { node.setAttribute("srsName", srsName) } if(goog.isDef(featureNS)) { node.setAttribute("xmlns:" + featurePrefix, featureNS) } var item = goog.object.clone(context); item.node = node; ol.xml.pushSerializeAndPop(item, ol.format.WFS.QUERY_SERIALIZERS_, ol.xml.makeSimpleNodeFactory("PropertyName"), propertyNames, objectStack); var bbox = goog.object.get(context, "bbox"); if(goog.isDef(bbox)) { var child = ol.xml.createElementNS("http://www.opengis.net/ogc", "Filter"); ol.format.WFS.writeOgcBBOX_(child, bbox, objectStack); node.appendChild(child) } }; ol.format.WFS.writeOgcPropertyName_ = function(node, value, objectStack) { var property = ol.xml.createElementNS("http://www.opengis.net/ogc", "PropertyName"); ol.format.XSD.writeStringTextNode(property, value); node.appendChild(property) }; ol.format.WFS.writeOgcBBOX_ = function(node, bbox, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var geometryName = goog.object.get(context, "geometryName"); var bboxNode = ol.xml.createElementNS("http://www.opengis.net/ogc", "BBOX"); node.appendChild(bboxNode); ol.format.WFS.writeOgcPropertyName_(bboxNode, geometryName, objectStack); ol.format.GML.writeGeometry(bboxNode, bbox, objectStack) }; ol.format.WFS.GETFEATURE_SERIALIZERS_ = {"http://www.opengis.net/wfs":{"Query":ol.xml.makeChildAppender(ol.format.WFS.writeQuery_)}}; ol.format.WFS.writeGetFeature_ = function(node, featureTypes, objectStack) { var context = objectStack[objectStack.length - 1]; goog.asserts.assert(goog.isObject(context)); var item = goog.object.clone(context); item.node = node; ol.xml.pushSerializeAndPop(item, ol.format.WFS.GETFEATURE_SERIALIZERS_, ol.xml.makeSimpleNodeFactory("Query"), featureTypes, objectStack) }; ol.format.WFS.prototype.writeGetFeature = function(options) { var node = ol.xml.createElementNS("http://www.opengis.net/wfs", "GetFeature"); node.setAttribute("service", "WFS"); node.setAttribute("version", "1.1.0"); if(goog.isDef(options)) { if(goog.isDef(options.handle)) { node.setAttribute("handle", options.handle) } if(goog.isDef(options.outputFormat)) { node.setAttribute("outputFormat", options.outputFormat) } if(goog.isDef(options.maxFeatures)) { node.setAttribute("maxFeatures", options.maxFeatures) } if(goog.isDef(options.resultType)) { node.setAttribute("resultType", options.resultType) } if(goog.isDef(options.startIndex)) { node.setAttribute("startIndex", options.startIndex) } if(goog.isDef(options.count)) { node.setAttribute("count", options.count) } } ol.xml.setAttributeNS(node, "http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", this.schemaLocation_); var context = {node:node, srsName:options.srsName, featureNS:goog.isDef(options.featureNS) ? options.featureNS : this.featureNS_, featurePrefix:options.featurePrefix, geometryName:options.geometryName, bbox:options.bbox, propertyNames:goog.isDef(options.propertyNames) ? options.propertyNames : []}; goog.asserts.assert(goog.isArray(options.featureTypes)); ol.format.WFS.writeGetFeature_(node, options.featureTypes, [context]); return node }; ol.format.WFS.prototype.writeTransaction = function(inserts, updates, deletes, options) { var objectStack = []; var node = ol.xml.createElementNS("http://www.opengis.net/wfs", "Transaction"); node.setAttribute("service", "WFS"); node.setAttribute("version", "1.1.0"); if(goog.isDef(options)) { if(goog.isDef(options.handle)) { node.setAttribute("handle", options.handle) } } ol.xml.setAttributeNS(node, "http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", this.schemaLocation_); if(goog.isDefAndNotNull(inserts)) { ol.xml.pushSerializeAndPop({node:node, featureNS:options.featureNS, featureType:options.featureType}, ol.format.WFS.TRANSACTION_SERIALIZERS_, ol.xml.makeSimpleNodeFactory("Insert"), inserts, objectStack) } if(goog.isDefAndNotNull(updates)) { ol.xml.pushSerializeAndPop({node:node, featureNS:options.featureNS, featureType:options.featureType, featurePrefix:options.featurePrefix}, ol.format.WFS.TRANSACTION_SERIALIZERS_, ol.xml.makeSimpleNodeFactory("Update"), updates, objectStack) } if(goog.isDefAndNotNull(deletes)) { ol.xml.pushSerializeAndPop({node:node, featureNS:options.featureNS, featureType:options.featureType, featurePrefix:options.featurePrefix}, ol.format.WFS.TRANSACTION_SERIALIZERS_, ol.xml.makeSimpleNodeFactory("Delete"), deletes, objectStack) } if(goog.isDef(options.nativeElements)) { ol.xml.pushSerializeAndPop({node:node, featureNS:options.featureNS, featureType:options.featureType, featurePrefix:options.featurePrefix}, ol.format.WFS.TRANSACTION_SERIALIZERS_, ol.xml.makeSimpleNodeFactory("Native"), options.nativeElements, objectStack) } return node }; ol.format.WFS.prototype.readProjection; ol.format.WFS.prototype.readProjectionFromDocument = function(doc) { goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT); for(var n = doc.firstChild;!goog.isNull(n);n = n.nextSibling) { if(n.nodeType == goog.dom.NodeType.ELEMENT) { return this.readProjectionFromNode(n) } } return null }; ol.format.WFS.prototype.readProjectionFromNode = function(node) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "FeatureCollection"); node = node.firstElementChild.firstElementChild; if(goog.isDefAndNotNull(node)) { for(var n = node.firstElementChild;!goog.isNull(n);n = n.nextElementSibling) { if(!(n.childNodes.length === 0 || n.childNodes.length === 1 && n.firstChild.nodeType === 3)) { var objectStack = [{}]; ol.format.GML.readGeometry(n, objectStack); return ol.proj.get(objectStack.pop().srsName) } } } return null }; goog.provide("ol.format.XLink"); ol.format.XLink.NAMESPACE_URI = "http://www.w3.org/1999/xlink"; ol.format.XLink.readHref = function(node) { return node.getAttributeNS(ol.format.XLink.NAMESPACE_URI, "href") }; goog.provide("ol.format.XML"); goog.require("goog.asserts"); goog.require("ol.xml"); ol.format.XML = function() { }; ol.format.XML.prototype.read = function(source) { if(ol.xml.isDocument(source)) { return this.readFromDocument((source)) }else { if(ol.xml.isNode(source)) { return this.readFromNode((source)) }else { if(goog.isString(source)) { var doc = ol.xml.load(source); return this.readFromDocument(doc) }else { goog.asserts.fail(); return null } } } }; ol.format.XML.prototype.readFromDocument = goog.abstractMethod; ol.format.XML.prototype.readFromNode = goog.abstractMethod; goog.provide("ol.format.WMSCapabilities"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.dom.NodeType"); goog.require("goog.object"); goog.require("goog.string"); goog.require("ol.format.XLink"); goog.require("ol.format.XML"); goog.require("ol.format.XSD"); goog.require("ol.xml"); ol.format.WMSCapabilities = function() { goog.base(this); this.version = undefined }; goog.inherits(ol.format.WMSCapabilities, ol.format.XML); ol.format.WMSCapabilities.prototype.read; ol.format.WMSCapabilities.prototype.readFromDocument = function(doc) { goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT); for(var n = doc.firstChild;!goog.isNull(n);n = n.nextSibling) { if(n.nodeType == goog.dom.NodeType.ELEMENT) { return this.readFromNode(n) } } return null }; ol.format.WMSCapabilities.prototype.readFromNode = function(node) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "WMS_Capabilities" || node.localName == "WMT_MS_Capabilities"); this.version = goog.string.trim(node.getAttribute("version")); goog.asserts.assertString(this.version); var wmsCapabilityObject = ol.xml.pushParseAndPop({"version":this.version}, ol.format.WMSCapabilities.PARSERS_, node, []); return goog.isDef(wmsCapabilityObject) ? wmsCapabilityObject : null }; ol.format.WMSCapabilities.readAttribution_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Attribution"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.ATTRIBUTION_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readBoundingBox_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "BoundingBox"); var extent = [ol.format.XSD.readDecimalString(node.getAttribute("minx")), ol.format.XSD.readDecimalString(node.getAttribute("miny")), ol.format.XSD.readDecimalString(node.getAttribute("maxx")), ol.format.XSD.readDecimalString(node.getAttribute("maxy"))]; var resolutions = [ol.format.XSD.readDecimalString(node.getAttribute("resx")), ol.format.XSD.readDecimalString(node.getAttribute("resy"))]; return{"crs":node.getAttribute("CRS"), "extent":extent, "res":resolutions} }; ol.format.WMSCapabilities.readEXGeographicBoundingBox_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "EX_GeographicBoundingBox"); var geographicBoundingBox = ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS_, node, objectStack); if(!goog.isDef(geographicBoundingBox)) { return undefined } var westBoundLongitude = (goog.object.get(geographicBoundingBox, "westBoundLongitude")); var southBoundLatitude = (goog.object.get(geographicBoundingBox, "southBoundLatitude")); var eastBoundLongitude = (goog.object.get(geographicBoundingBox, "eastBoundLongitude")); var northBoundLatitude = (goog.object.get(geographicBoundingBox, "northBoundLatitude")); if(!goog.isDef(westBoundLongitude) || !goog.isDef(southBoundLatitude) || !goog.isDef(eastBoundLongitude) || !goog.isDef(northBoundLatitude)) { return undefined } return[westBoundLongitude, southBoundLatitude, eastBoundLongitude, northBoundLatitude] }; ol.format.WMSCapabilities.readCapability_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Capability"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.CAPABILITY_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readService_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Service"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.SERVICE_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readContactInformation_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "ContactInformation"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.CONTACT_INFORMATION_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readContactPersonPrimary_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "ContactPersonPrimary"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.CONTACT_PERSON_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readContactAddress_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "ContactAddress"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.CONTACT_ADDRESS_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readException_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Exception"); return ol.xml.pushParseAndPop([], ol.format.WMSCapabilities.EXCEPTION_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readCapabilityLayer_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Layer"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.LAYER_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readLayer_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Layer"); var parentLayerObject = (objectStack[objectStack.length - 1]); var layerObject = (ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.LAYER_PARSERS_, node, objectStack)); if(!goog.isDef(layerObject)) { return undefined } var queryable = ol.format.XSD.readBooleanString(node.getAttribute("queryable")); if(!goog.isDef(queryable)) { queryable = goog.object.get(parentLayerObject, "queryable") } goog.object.set(layerObject, "queryable", goog.isDef(queryable) ? queryable : false); var cascaded = ol.format.XSD.readNonNegativeIntegerString(node.getAttribute("cascaded")); if(!goog.isDef(cascaded)) { cascaded = goog.object.get(parentLayerObject, "cascaded") } goog.object.set(layerObject, "cascaded", cascaded); var opaque = ol.format.XSD.readBooleanString(node.getAttribute("opaque")); if(!goog.isDef(opaque)) { opaque = goog.object.get(parentLayerObject, "opaque") } goog.object.set(layerObject, "opaque", goog.isDef(opaque) ? opaque : false); var noSubsets = ol.format.XSD.readBooleanString(node.getAttribute("noSubsets")); if(!goog.isDef(noSubsets)) { noSubsets = goog.object.get(parentLayerObject, "noSubsets") } goog.object.set(layerObject, "noSubsets", goog.isDef(noSubsets) ? noSubsets : false); var fixedWidth = ol.format.XSD.readDecimalString(node.getAttribute("fixedWidth")); if(!goog.isDef(fixedWidth)) { fixedWidth = goog.object.get(parentLayerObject, "fixedWidth") } goog.object.set(layerObject, "fixedWidth", fixedWidth); var fixedHeight = ol.format.XSD.readDecimalString(node.getAttribute("fixedHeight")); if(!goog.isDef(fixedHeight)) { fixedHeight = goog.object.get(parentLayerObject, "fixedHeight") } goog.object.set(layerObject, "fixedHeight", fixedHeight); var addKeys = ["Style", "CRS", "AuthorityURL"]; goog.array.forEach(addKeys, function(key) { var parentValue = goog.object.get(parentLayerObject, key); if(goog.isDef(parentValue)) { var childValue = goog.object.setIfUndefined(layerObject, key, []); childValue = childValue.concat(parentValue) } }); var replaceKeys = ["EX_GeographicBoundingBox", "BoundingBox", "Dimension", "Attribution", "MinScaleDenominator", "MaxScaleDenominator"]; goog.array.forEach(replaceKeys, function(key) { var childValue = goog.object.get(layerObject, key); if(!goog.isDef(childValue)) { var parentValue = goog.object.get(parentLayerObject, key); goog.object.set(layerObject, key, parentValue) } }); return layerObject }; ol.format.WMSCapabilities.readDimension_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Dimension"); var dimensionObject = {"name":node.getAttribute("name"), "units":node.getAttribute("units"), "unitSymbol":node.getAttribute("unitSymbol"), "default":node.getAttribute("default"), "multipleValues":ol.format.XSD.readBooleanString(node.getAttribute("multipleValues")), "nearestValue":ol.format.XSD.readBooleanString(node.getAttribute("nearestValue")), "current":ol.format.XSD.readBooleanString(node.getAttribute("current")), "values":ol.format.XSD.readString(node)}; return dimensionObject }; ol.format.WMSCapabilities.readFormatOnlineresource_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.FORMAT_ONLINERESOURCE_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readRequest_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Request"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.REQUEST_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readDCPType_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "DCPType"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.DCPTYPE_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readHTTP_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "HTTP"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.HTTP_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readOperationType_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.OPERATIONTYPE_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readSizedFormatOnlineresource_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); var formatOnlineresource = ol.format.WMSCapabilities.readFormatOnlineresource_(node, objectStack); if(goog.isDef(formatOnlineresource)) { var size = [ol.format.XSD.readNonNegativeIntegerString(node.getAttribute("width")), ol.format.XSD.readNonNegativeIntegerString(node.getAttribute("height"))]; goog.object.set(formatOnlineresource, "size", size); return formatOnlineresource } return undefined }; ol.format.WMSCapabilities.readAuthorityURL_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "AuthorityURL"); var authorityObject = ol.format.WMSCapabilities.readFormatOnlineresource_(node, objectStack); if(goog.isDef(authorityObject)) { goog.object.set(authorityObject, "name", node.getAttribute("name")); return authorityObject } return undefined }; ol.format.WMSCapabilities.readMetadataURL_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "MetadataURL"); var metadataObject = ol.format.WMSCapabilities.readFormatOnlineresource_(node, objectStack); if(goog.isDef(metadataObject)) { goog.object.set(metadataObject, "type", node.getAttribute("type")); return metadataObject } return undefined }; ol.format.WMSCapabilities.readStyle_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "Style"); return ol.xml.pushParseAndPop({}, ol.format.WMSCapabilities.STYLE_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.readKeywordList_ = function(node, objectStack) { goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT); goog.asserts.assert(node.localName == "KeywordList"); return ol.xml.pushParseAndPop([], ol.format.WMSCapabilities.KEYWORDLIST_PARSERS_, node, objectStack) }; ol.format.WMSCapabilities.NAMESPACE_URIS_ = [null, "http://www.opengis.net/wms"]; ol.format.WMSCapabilities.PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Service":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readService_), "Capability":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readCapability_)}); ol.format.WMSCapabilities.CAPABILITY_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Request":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readRequest_), "Exception":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readException_), "Layer":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readCapabilityLayer_)}); ol.format.WMSCapabilities.SERVICE_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Name":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "Title":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "Abstract":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "KeywordList":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readKeywordList_), "OnlineResource":ol.xml.makeObjectPropertySetter(ol.format.XLink.readHref), "ContactInformation":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readContactInformation_), "Fees":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "AccessConstraints":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "LayerLimit":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger), "MaxWidth":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger), "MaxHeight":ol.xml.makeObjectPropertySetter(ol.format.XSD.readNonNegativeInteger)}); ol.format.WMSCapabilities.CONTACT_INFORMATION_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"ContactPersonPrimary":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readContactPersonPrimary_), "ContactPosition":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "ContactAddress":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readContactAddress_), "ContactVoiceTelephone":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "ContactFacsimileTelephone":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "ContactElectronicMailAddress":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString)}); ol.format.WMSCapabilities.CONTACT_PERSON_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"ContactPerson":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "ContactOrganization":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString)}); ol.format.WMSCapabilities.CONTACT_ADDRESS_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"AddressType":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "Address":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "City":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "StateOrProvince":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "PostCode":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "Country":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString)}); ol.format.WMSCapabilities.EXCEPTION_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Format":ol.xml.makeArrayPusher(ol.format.XSD.readString)}); ol.format.WMSCapabilities.LAYER_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Name":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "Title":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "Abstract":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "KeywordList":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readKeywordList_), "CRS":ol.xml.makeObjectPropertyPusher(ol.format.XSD.readString), "EX_GeographicBoundingBox":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readEXGeographicBoundingBox_), "BoundingBox":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readBoundingBox_), "Dimension":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readDimension_), "Attribution":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readAttribution_), "AuthorityURL":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readAuthorityURL_), "Identifier":ol.xml.makeObjectPropertyPusher(ol.format.XSD.readString), "MetadataURL":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readMetadataURL_), "DataURL":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readFormatOnlineresource_), "FeatureListURL":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readFormatOnlineresource_), "Style":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readStyle_), "MinScaleDenominator":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "MaxScaleDenominator":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "Layer":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readLayer_)}); ol.format.WMSCapabilities.ATTRIBUTION_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Title":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "OnlineResource":ol.xml.makeObjectPropertySetter(ol.format.XLink.readHref), "LogoURL":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readSizedFormatOnlineresource_)}); ol.format.WMSCapabilities.EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"westBoundLongitude":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "eastBoundLongitude":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "southBoundLatitude":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal), "northBoundLatitude":ol.xml.makeObjectPropertySetter(ol.format.XSD.readDecimal)}); ol.format.WMSCapabilities.REQUEST_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"GetCapabilities":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readOperationType_), "GetMap":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readOperationType_), "GetFeatureInfo":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readOperationType_)}); ol.format.WMSCapabilities.OPERATIONTYPE_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Format":ol.xml.makeObjectPropertyPusher(ol.format.XSD.readString), "DCPType":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readDCPType_)}); ol.format.WMSCapabilities.DCPTYPE_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"HTTP":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readHTTP_)}); ol.format.WMSCapabilities.HTTP_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Get":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readFormatOnlineresource_), "Post":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readFormatOnlineresource_)}); ol.format.WMSCapabilities.STYLE_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Name":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "Title":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "Abstract":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "LegendURL":ol.xml.makeObjectPropertyPusher(ol.format.WMSCapabilities.readSizedFormatOnlineresource_), "StyleSheetURL":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readFormatOnlineresource_), "StyleURL":ol.xml.makeObjectPropertySetter(ol.format.WMSCapabilities.readFormatOnlineresource_)}); ol.format.WMSCapabilities.FORMAT_ONLINERESOURCE_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Format":ol.xml.makeObjectPropertySetter(ol.format.XSD.readString), "OnlineResource":ol.xml.makeObjectPropertySetter(ol.format.XLink.readHref)}); ol.format.WMSCapabilities.KEYWORDLIST_PARSERS_ = ol.xml.makeParsersNS(ol.format.WMSCapabilities.NAMESPACE_URIS_, {"Keyword":ol.xml.makeArrayPusher(ol.format.XSD.readString)}); goog.provide("goog.events.FileDropHandler"); goog.provide("goog.events.FileDropHandler.EventType"); goog.require("goog.array"); goog.require("goog.dom"); goog.require("goog.events"); goog.require("goog.events.BrowserEvent"); goog.require("goog.events.EventHandler"); goog.require("goog.events.EventTarget"); goog.require("goog.events.EventType"); goog.require("goog.log"); goog.events.FileDropHandler = function(element, opt_preventDropOutside) { goog.events.EventTarget.call(this); this.eventHandler_ = new goog.events.EventHandler(this); var doc = element; if(opt_preventDropOutside) { doc = goog.dom.getOwnerDocument(element) } this.eventHandler_.listen(doc, goog.events.EventType.DRAGENTER, this.onDocDragEnter_); if(doc != element) { this.eventHandler_.listen(doc, goog.events.EventType.DRAGOVER, this.onDocDragOver_) } this.eventHandler_.listen(element, goog.events.EventType.DRAGOVER, this.onElemDragOver_); this.eventHandler_.listen(element, goog.events.EventType.DROP, this.onElemDrop_) }; goog.inherits(goog.events.FileDropHandler, goog.events.EventTarget); goog.events.FileDropHandler.prototype.dndContainsFiles_ = false; goog.events.FileDropHandler.prototype.logger_ = goog.log.getLogger("goog.events.FileDropHandler"); goog.events.FileDropHandler.EventType = {DROP:goog.events.EventType.DROP}; goog.events.FileDropHandler.prototype.disposeInternal = function() { goog.events.FileDropHandler.superClass_.disposeInternal.call(this); this.eventHandler_.dispose() }; goog.events.FileDropHandler.prototype.dispatch_ = function(e) { goog.log.fine(this.logger_, "Firing DROP event..."); var event = new goog.events.BrowserEvent(e.getBrowserEvent()); event.type = goog.events.FileDropHandler.EventType.DROP; this.dispatchEvent(event) }; goog.events.FileDropHandler.prototype.onDocDragEnter_ = function(e) { goog.log.log(this.logger_, goog.log.Level.FINER, '"' + e.target.id + '" (' + e.target + ") dispatched: " + e.type); var dt = e.getBrowserEvent().dataTransfer; this.dndContainsFiles_ = !!(dt && (dt.types && (goog.array.contains(dt.types, "Files") || goog.array.contains(dt.types, "public.file-url")) || dt.files && dt.files.length > 0)); if(this.dndContainsFiles_) { e.preventDefault() } goog.log.log(this.logger_, goog.log.Level.FINER, "dndContainsFiles_: " + this.dndContainsFiles_) }; goog.events.FileDropHandler.prototype.onDocDragOver_ = function(e) { goog.log.log(this.logger_, goog.log.Level.FINEST, '"' + e.target.id + '" (' + e.target + ") dispatched: " + e.type); if(this.dndContainsFiles_) { e.preventDefault(); var dt = e.getBrowserEvent().dataTransfer; dt.dropEffect = "none" } }; goog.events.FileDropHandler.prototype.onElemDragOver_ = function(e) { goog.log.log(this.logger_, goog.log.Level.FINEST, '"' + e.target.id + '" (' + e.target + ") dispatched: " + e.type); if(this.dndContainsFiles_) { e.preventDefault(); e.stopPropagation(); var dt = e.getBrowserEvent().dataTransfer; dt.effectAllowed = "all"; dt.dropEffect = "copy" } }; goog.events.FileDropHandler.prototype.onElemDrop_ = function(e) { goog.log.log(this.logger_, goog.log.Level.FINER, '"' + e.target.id + '" (' + e.target + ") dispatched: " + e.type); if(this.dndContainsFiles_) { e.preventDefault(); e.stopPropagation(); this.dispatch_(e) } }; /* Portions of this code are from MochiKit, received by The Closure Authors under the MIT license. All other code is Copyright 2005-2009 The Closure Authors. All Rights Reserved. */ goog.provide("goog.async.Deferred"); goog.provide("goog.async.Deferred.AlreadyCalledError"); goog.provide("goog.async.Deferred.CanceledError"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.debug.Error"); goog.require("goog.functions"); goog.async.Deferred = function(opt_onCancelFunction, opt_defaultScope) { this.sequence_ = []; this.onCancelFunction_ = opt_onCancelFunction; this.defaultScope_ = opt_defaultScope || null; if(goog.async.Deferred.LONG_STACK_TRACES) { this.constructorStack_ = null; if(Error.captureStackTrace) { var target = {stack:""}; Error.captureStackTrace(target, goog.async.Deferred); if(typeof target.stack == "string") { this.constructorStack_ = target.stack.replace(/^[^\n]*\n/, "") } } } }; goog.async.Deferred.prototype.fired_ = false; goog.async.Deferred.prototype.hadError_ = false; goog.async.Deferred.prototype.result_; goog.async.Deferred.prototype.blocked_ = false; goog.async.Deferred.prototype.blocking_ = false; goog.async.Deferred.prototype.silentlyCanceled_ = false; goog.async.Deferred.prototype.unhandledExceptionTimeoutId_; goog.async.Deferred.prototype.parent_; goog.async.Deferred.prototype.branches_ = 0; goog.define("goog.async.Deferred.STRICT_ERRORS", false); goog.define("goog.async.Deferred.LONG_STACK_TRACES", goog.DEBUG); goog.async.Deferred.prototype.cancel = function(opt_deepCancel) { if(!this.hasFired()) { if(this.parent_) { var parent = this.parent_; delete this.parent_; if(opt_deepCancel) { parent.cancel(opt_deepCancel) }else { parent.branchCancel_() } } if(this.onCancelFunction_) { this.onCancelFunction_.call(this.defaultScope_, this) }else { this.silentlyCanceled_ = true } if(!this.hasFired()) { this.errback(new goog.async.Deferred.CanceledError(this)) } }else { if(this.result_ instanceof goog.async.Deferred) { this.result_.cancel() } } }; goog.async.Deferred.prototype.branchCancel_ = function() { this.branches_--; if(this.branches_ <= 0) { this.cancel() } }; goog.async.Deferred.prototype.continue_ = function(isSuccess, res) { this.blocked_ = false; this.updateResult_(isSuccess, res) }; goog.async.Deferred.prototype.updateResult_ = function(isSuccess, res) { this.fired_ = true; this.result_ = res; this.hadError_ = !isSuccess; this.fire_() }; goog.async.Deferred.prototype.check_ = function() { if(this.hasFired()) { if(!this.silentlyCanceled_) { throw new goog.async.Deferred.AlreadyCalledError(this); } this.silentlyCanceled_ = false } }; goog.async.Deferred.prototype.callback = function(opt_result) { this.check_(); this.assertNotDeferred_(opt_result); this.updateResult_(true, opt_result) }; goog.async.Deferred.prototype.errback = function(opt_result) { this.check_(); this.assertNotDeferred_(opt_result); this.makeStackTraceLong_(opt_result); this.updateResult_(false, opt_result) }; goog.async.Deferred.prototype.makeStackTraceLong_ = function(error) { if(!goog.async.Deferred.LONG_STACK_TRACES) { return } if(this.constructorStack_ && goog.isObject(error) && error.stack && /^[^\n]+(\n [^\n]+)+/.test(error.stack)) { error.stack = error.stack + "\nDEFERRED OPERATION:\n" + this.constructorStack_ } }; goog.async.Deferred.prototype.assertNotDeferred_ = function(obj) { goog.asserts.assert(!(obj instanceof goog.async.Deferred), "An execution sequence may not be initiated with a blocking Deferred.") }; goog.async.Deferred.prototype.addCallback = function(cb, opt_scope) { return this.addCallbacks(cb, null, opt_scope) }; goog.async.Deferred.prototype.addErrback = function(eb, opt_scope) { return this.addCallbacks(null, eb, opt_scope) }; goog.async.Deferred.prototype.addBoth = function(f, opt_scope) { return this.addCallbacks(f, f, opt_scope) }; goog.async.Deferred.prototype.addCallbacks = function(cb, eb, opt_scope) { goog.asserts.assert(!this.blocking_, "Blocking Deferreds can not be re-used"); this.sequence_.push([cb, eb, opt_scope]); if(this.hasFired()) { this.fire_() } return this }; goog.async.Deferred.prototype.chainDeferred = function(otherDeferred) { this.addCallbacks(otherDeferred.callback, otherDeferred.errback, otherDeferred); return this }; goog.async.Deferred.prototype.awaitDeferred = function(otherDeferred) { return this.addCallback(goog.bind(otherDeferred.branch, otherDeferred)) }; goog.async.Deferred.prototype.branch = function(opt_propagateCancel) { var d = new goog.async.Deferred; this.chainDeferred(d); if(opt_propagateCancel) { d.parent_ = this; this.branches_++ } return d }; goog.async.Deferred.prototype.hasFired = function() { return this.fired_ }; goog.async.Deferred.prototype.isError = function(res) { return res instanceof Error }; goog.async.Deferred.prototype.hasErrback_ = function() { return goog.array.some(this.sequence_, function(sequenceRow) { return goog.isFunction(sequenceRow[1]) }) }; goog.async.Deferred.prototype.fire_ = function() { if(this.unhandledExceptionTimeoutId_ && this.hasFired() && this.hasErrback_()) { goog.global.clearTimeout(this.unhandledExceptionTimeoutId_); delete this.unhandledExceptionTimeoutId_ } if(this.parent_) { this.parent_.branches_--; delete this.parent_ } var res = this.result_; var unhandledException = false; var isNewlyBlocked = false; while(this.sequence_.length && !this.blocked_) { var sequenceEntry = this.sequence_.shift(); var callback = sequenceEntry[0]; var errback = sequenceEntry[1]; var scope = sequenceEntry[2]; var f = this.hadError_ ? errback : callback; if(f) { try { var ret = f.call(scope || this.defaultScope_, res); if(goog.isDef(ret)) { this.hadError_ = this.hadError_ && (ret == res || this.isError(ret)); this.result_ = res = ret } if(res instanceof goog.async.Deferred) { isNewlyBlocked = true; this.blocked_ = true } }catch(ex) { res = ex; this.hadError_ = true; this.makeStackTraceLong_(res); if(!this.hasErrback_()) { unhandledException = true } } } } this.result_ = res; if(isNewlyBlocked) { res.addCallbacks(goog.bind(this.continue_, this, true), goog.bind(this.continue_, this, false)); res.blocking_ = true }else { if(goog.async.Deferred.STRICT_ERRORS && this.isError(res) && !(res instanceof goog.async.Deferred.CanceledError)) { this.hadError_ = true; unhandledException = true } } if(unhandledException) { this.unhandledExceptionTimeoutId_ = goog.global.setTimeout(goog.functions.fail(res), 0) } }; goog.async.Deferred.succeed = function(opt_result) { var d = new goog.async.Deferred; d.callback(opt_result); return d }; goog.async.Deferred.fail = function(res) { var d = new goog.async.Deferred; d.errback(res); return d }; goog.async.Deferred.canceled = function() { var d = new goog.async.Deferred; d.cancel(); return d }; goog.async.Deferred.when = function(value, callback, opt_scope) { if(value instanceof goog.async.Deferred) { return value.branch(true).addCallback(callback, opt_scope) }else { return goog.async.Deferred.succeed(value).addCallback(callback, opt_scope) } }; goog.async.Deferred.AlreadyCalledError = function(deferred) { goog.debug.Error.call(this); this.deferred = deferred }; goog.inherits(goog.async.Deferred.AlreadyCalledError, goog.debug.Error); goog.async.Deferred.AlreadyCalledError.prototype.message = "Deferred has already fired"; goog.async.Deferred.AlreadyCalledError.prototype.name = "AlreadyCalledError"; goog.async.Deferred.CanceledError = function(deferred) { goog.debug.Error.call(this); this.deferred = deferred }; goog.inherits(goog.async.Deferred.CanceledError, goog.debug.Error); goog.async.Deferred.CanceledError.prototype.message = "Deferred was canceled"; goog.async.Deferred.CanceledError.prototype.name = "CanceledError"; goog.provide("goog.fs.Error"); goog.provide("goog.fs.Error.ErrorCode"); goog.require("goog.debug.Error"); goog.require("goog.string"); goog.fs.Error = function(code, action) { goog.base(this, goog.string.subs("Error %s: %s", action, goog.fs.Error.getDebugMessage(code))); this.code = (code) }; goog.inherits(goog.fs.Error, goog.debug.Error); goog.fs.Error.ErrorCode = {NOT_FOUND:1, SECURITY:2, ABORT:3, NOT_READABLE:4, ENCODING:5, NO_MODIFICATION_ALLOWED:6, INVALID_STATE:7, SYNTAX:8, INVALID_MODIFICATION:9, QUOTA_EXCEEDED:10, TYPE_MISMATCH:11, PATH_EXISTS:12}; goog.fs.Error.getDebugMessage = function(errorCode) { switch(errorCode) { case goog.fs.Error.ErrorCode.NOT_FOUND: return"File or directory not found"; case goog.fs.Error.ErrorCode.SECURITY: return"Insecure or disallowed operation"; case goog.fs.Error.ErrorCode.ABORT: return"Operation aborted"; case goog.fs.Error.ErrorCode.NOT_READABLE: return"File or directory not readable"; case goog.fs.Error.ErrorCode.ENCODING: return"Invalid encoding"; case goog.fs.Error.ErrorCode.NO_MODIFICATION_ALLOWED: return"Cannot modify file or directory"; case goog.fs.Error.ErrorCode.INVALID_STATE: return"Invalid state"; case goog.fs.Error.ErrorCode.SYNTAX: return"Invalid line-ending specifier"; case goog.fs.Error.ErrorCode.INVALID_MODIFICATION: return"Invalid modification"; case goog.fs.Error.ErrorCode.QUOTA_EXCEEDED: return"Quota exceeded"; case goog.fs.Error.ErrorCode.TYPE_MISMATCH: return"Invalid filetype"; case goog.fs.Error.ErrorCode.PATH_EXISTS: return"File or directory already exists at specified path"; default: return"Unrecognized error" } }; goog.provide("goog.fs.ProgressEvent"); goog.require("goog.events.Event"); goog.fs.ProgressEvent = function(event, target) { goog.base(this, event.type, target); this.event_ = event }; goog.inherits(goog.fs.ProgressEvent, goog.events.Event); goog.fs.ProgressEvent.prototype.isLengthComputable = function() { return this.event_.lengthComputable }; goog.fs.ProgressEvent.prototype.getLoaded = function() { return this.event_.loaded }; goog.fs.ProgressEvent.prototype.getTotal = function() { return this.event_.total }; goog.provide("goog.fs.FileReader"); goog.provide("goog.fs.FileReader.EventType"); goog.provide("goog.fs.FileReader.ReadyState"); goog.require("goog.async.Deferred"); goog.require("goog.events.Event"); goog.require("goog.events.EventTarget"); goog.require("goog.fs.Error"); goog.require("goog.fs.ProgressEvent"); goog.fs.FileReader = function() { goog.base(this); this.reader_ = new FileReader; this.reader_.onloadstart = goog.bind(this.dispatchProgressEvent_, this); this.reader_.onprogress = goog.bind(this.dispatchProgressEvent_, this); this.reader_.onload = goog.bind(this.dispatchProgressEvent_, this); this.reader_.onabort = goog.bind(this.dispatchProgressEvent_, this); this.reader_.onerror = goog.bind(this.dispatchProgressEvent_, this); this.reader_.onloadend = goog.bind(this.dispatchProgressEvent_, this) }; goog.inherits(goog.fs.FileReader, goog.events.EventTarget); goog.fs.FileReader.ReadyState = {INIT:0, LOADING:1, DONE:2}; goog.fs.FileReader.EventType = {LOAD_START:"loadstart", PROGRESS:"progress", LOAD:"load", ABORT:"abort", ERROR:"error", LOAD_END:"loadend"}; goog.fs.FileReader.prototype.abort = function() { try { this.reader_.abort() }catch(e) { throw new goog.fs.Error(e.code, "aborting read"); } }; goog.fs.FileReader.prototype.getReadyState = function() { return(this.reader_.readyState) }; goog.fs.FileReader.prototype.getResult = function() { return this.reader_.result }; goog.fs.FileReader.prototype.getError = function() { return this.reader_.error && new goog.fs.Error(this.reader_.error.code, "reading file") }; goog.fs.FileReader.prototype.dispatchProgressEvent_ = function(event) { this.dispatchEvent(new goog.fs.ProgressEvent(event, this)) }; goog.fs.FileReader.prototype.disposeInternal = function() { goog.base(this, "disposeInternal"); delete this.reader_ }; goog.fs.FileReader.prototype.readAsBinaryString = function(blob) { this.reader_.readAsBinaryString(blob) }; goog.fs.FileReader.readAsBinaryString = function(blob) { var reader = new goog.fs.FileReader; var d = goog.fs.FileReader.createDeferred_(reader); reader.readAsBinaryString(blob); return d }; goog.fs.FileReader.prototype.readAsArrayBuffer = function(blob) { this.reader_.readAsArrayBuffer(blob) }; goog.fs.FileReader.readAsArrayBuffer = function(blob) { var reader = new goog.fs.FileReader; var d = goog.fs.FileReader.createDeferred_(reader); reader.readAsArrayBuffer(blob); return d }; goog.fs.FileReader.prototype.readAsText = function(blob, opt_encoding) { this.reader_.readAsText(blob, opt_encoding) }; goog.fs.FileReader.readAsText = function(blob, opt_encoding) { var reader = new goog.fs.FileReader; var d = goog.fs.FileReader.createDeferred_(reader); reader.readAsText(blob, opt_encoding); return d }; goog.fs.FileReader.prototype.readAsDataUrl = function(blob) { this.reader_.readAsDataURL(blob) }; goog.fs.FileReader.readAsDataUrl = function(blob) { var reader = new goog.fs.FileReader; var d = goog.fs.FileReader.createDeferred_(reader); reader.readAsDataUrl(blob); return d }; goog.fs.FileReader.createDeferred_ = function(reader) { var deferred = new goog.async.Deferred; reader.addEventListener(goog.fs.FileReader.EventType.LOAD_END, goog.partial(function(d, r, e) { var result = r.getResult(); var error = r.getError(); if(result != null && !error) { d.callback(result) }else { d.errback(error) } r.dispose() }, deferred, reader)); return deferred }; goog.provide("ol.interaction.DragAndDrop"); goog.provide("ol.interaction.DragAndDropEvent"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.Event"); goog.require("goog.events.FileDropHandler"); goog.require("goog.events.FileDropHandler.EventType"); goog.require("goog.fs.FileReader"); goog.require("goog.functions"); goog.require("ol.interaction.Interaction"); goog.require("ol.proj"); ol.interaction.DragAndDrop = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.formatConstructors_ = goog.isDef(options.formatConstructors) ? options.formatConstructors : []; this.reprojectTo_ = goog.isDef(options.reprojectTo) ? ol.proj.get(options.reprojectTo) : null; this.fileDropHandler_ = null; this.dropListenKey_ = undefined }; goog.inherits(ol.interaction.DragAndDrop, ol.interaction.Interaction); ol.interaction.DragAndDrop.prototype.disposeInternal = function() { if(goog.isDef(this.dropListenKey_)) { goog.events.unlistenByKey(this.dropListenKey_) } goog.base(this, "disposeInternal") }; ol.interaction.DragAndDrop.prototype.handleDrop_ = function(event) { var files = event.getBrowserEvent().dataTransfer.files; var i, ii, file; for(i = 0, ii = files.length;i < ii;++i) { file = files[i]; var reader = goog.fs.FileReader.readAsText(file, ""); reader.addCallback(goog.partial(this.handleResult_, file), this) } }; ol.interaction.DragAndDrop.prototype.handleResult_ = function(file, result) { var map = this.getMap(); goog.asserts.assert(!goog.isNull(map)); var projection = this.reprojectTo_; if(goog.isNull(projection)) { var view = map.getView(); goog.asserts.assert(goog.isDef(view)); projection = view.getView2D().getProjection(); goog.asserts.assert(goog.isDef(projection)) } var formatConstructors = this.formatConstructors_; var features = []; var i, ii; for(i = 0, ii = formatConstructors.length;i < ii;++i) { var formatConstructor = formatConstructors[i]; var format = new formatConstructor; var readFeatures = this.tryReadFeatures_(format, result); if(!goog.isNull(readFeatures)) { var featureProjection = format.readProjection(result); var transform = ol.proj.getTransform(featureProjection, projection); var j, jj; for(j = 0, jj = readFeatures.length;j < jj;++j) { var feature = readFeatures[j]; var geometry = feature.getGeometry(); if(!goog.isNull(geometry)) { geometry.transform(transform) } features.push(feature) } } } this.dispatchEvent(new ol.interaction.DragAndDropEvent(ol.interaction.DragAndDropEventType.ADD_FEATURES, this, file, features, projection)) }; ol.interaction.DragAndDrop.prototype.handleMapBrowserEvent = goog.functions.TRUE; ol.interaction.DragAndDrop.prototype.setMap = function(map) { if(goog.isDef(this.dropListenKey_)) { goog.events.unlistenByKey(this.dropListenKey_); this.dropListenKey_ = undefined } if(!goog.isNull(this.fileDropHandler_)) { goog.dispose(this.fileDropHandler_); this.fileDropHandler_ = null } goog.asserts.assert(!goog.isDef(this.dropListenKey_)); goog.base(this, "setMap", map); if(!goog.isNull(map)) { this.fileDropHandler_ = new goog.events.FileDropHandler(map.getViewport()); this.dropListenKey_ = goog.events.listen(this.fileDropHandler_, goog.events.FileDropHandler.EventType.DROP, this.handleDrop_, false, this) } }; ol.interaction.DragAndDrop.prototype.tryReadFeatures_ = function(format, text) { try { return format.readFeatures(text) }catch(e) { return null } }; ol.interaction.DragAndDropEventType = {ADD_FEATURES:"addfeatures"}; ol.interaction.DragAndDropEvent = function(type, target, file, opt_features, opt_projection) { goog.base(this, type, target); this.features = opt_features; this.file = file; this.projection = opt_projection }; goog.inherits(ol.interaction.DragAndDropEvent, goog.events.Event); goog.provide("goog.math.Vec2"); goog.require("goog.math"); goog.require("goog.math.Coordinate"); goog.math.Vec2 = function(x, y) { this.x = x; this.y = y }; goog.inherits(goog.math.Vec2, goog.math.Coordinate); goog.math.Vec2.randomUnit = function() { var angle = Math.random() * Math.PI * 2; return new goog.math.Vec2(Math.cos(angle), Math.sin(angle)) }; goog.math.Vec2.random = function() { var mag = Math.sqrt(Math.random()); var angle = Math.random() * Math.PI * 2; return new goog.math.Vec2(Math.cos(angle) * mag, Math.sin(angle) * mag) }; goog.math.Vec2.fromCoordinate = function(a) { return new goog.math.Vec2(a.x, a.y) }; goog.math.Vec2.prototype.clone = function() { return new goog.math.Vec2(this.x, this.y) }; goog.math.Vec2.prototype.magnitude = function() { return Math.sqrt(this.x * this.x + this.y * this.y) }; goog.math.Vec2.prototype.squaredMagnitude = function() { return this.x * this.x + this.y * this.y }; goog.math.Vec2.prototype.scale = (goog.math.Coordinate.prototype.scale); goog.math.Vec2.prototype.invert = function() { this.x = -this.x; this.y = -this.y; return this }; goog.math.Vec2.prototype.normalize = function() { return this.scale(1 / this.magnitude()) }; goog.math.Vec2.prototype.add = function(b) { this.x += b.x; this.y += b.y; return this }; goog.math.Vec2.prototype.subtract = function(b) { this.x -= b.x; this.y -= b.y; return this }; goog.math.Vec2.prototype.rotate = function(angle) { var cos = Math.cos(angle); var sin = Math.sin(angle); var newX = this.x * cos - this.y * sin; var newY = this.y * cos + this.x * sin; this.x = newX; this.y = newY; return this }; goog.math.Vec2.rotateAroundPoint = function(v, axisPoint, angle) { var res = v.clone(); return res.subtract(axisPoint).rotate(angle).add(axisPoint) }; goog.math.Vec2.prototype.equals = function(b) { return this == b || !!b && this.x == b.x && this.y == b.y }; goog.math.Vec2.distance = goog.math.Coordinate.distance; goog.math.Vec2.squaredDistance = goog.math.Coordinate.squaredDistance; goog.math.Vec2.equals = goog.math.Coordinate.equals; goog.math.Vec2.sum = function(a, b) { return new goog.math.Vec2(a.x + b.x, a.y + b.y) }; goog.math.Vec2.difference = function(a, b) { return new goog.math.Vec2(a.x - b.x, a.y - b.y) }; goog.math.Vec2.dot = function(a, b) { return a.x * b.x + a.y * b.y }; goog.math.Vec2.lerp = function(a, b, x) { return new goog.math.Vec2(goog.math.lerp(a.x, b.x, x), goog.math.lerp(a.y, b.y, x)) }; goog.provide("ol.interaction.DragRotateAndZoom"); goog.require("goog.asserts"); goog.require("goog.functions"); goog.require("goog.math.Vec2"); goog.require("ol"); goog.require("ol.ViewHint"); goog.require("ol.events.ConditionType"); goog.require("ol.events.condition"); goog.require("ol.interaction.Interaction"); goog.require("ol.interaction.Pointer"); ol.interaction.DragRotateAndZoom = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this); this.condition_ = goog.isDef(options.condition) ? options.condition : ol.events.condition.shiftKeyOnly; this.lastAngle_ = undefined; this.lastMagnitude_ = undefined; this.lastScaleDelta_ = 0 }; goog.inherits(ol.interaction.DragRotateAndZoom, ol.interaction.Pointer); ol.interaction.DragRotateAndZoom.prototype.handlePointerDrag = function(mapBrowserEvent) { if(!ol.events.condition.mouseOnly(mapBrowserEvent)) { return } var map = mapBrowserEvent.map; var size = map.getSize(); var offset = mapBrowserEvent.pixel; var delta = new goog.math.Vec2(offset[0] - size[0] / 2, size[1] / 2 - offset[1]); var theta = Math.atan2(delta.y, delta.x); var magnitude = delta.magnitude(); var view = map.getView().getView2D(); var view2DState = view.getView2DState(); map.render(); if(goog.isDef(this.lastAngle_)) { var angleDelta = theta - this.lastAngle_; ol.interaction.Interaction.rotateWithoutConstraints(map, view, view2DState.rotation - angleDelta) } this.lastAngle_ = theta; if(goog.isDef(this.lastMagnitude_)) { var resolution = this.lastMagnitude_ * (view2DState.resolution / magnitude); ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution) } if(goog.isDef(this.lastMagnitude_)) { this.lastScaleDelta_ = this.lastMagnitude_ / magnitude } this.lastMagnitude_ = magnitude }; ol.interaction.DragRotateAndZoom.prototype.handlePointerUp = function(mapBrowserEvent) { if(!ol.events.condition.mouseOnly(mapBrowserEvent)) { return true } var map = mapBrowserEvent.map; var view = map.getView(); view.setHint(ol.ViewHint.INTERACTING, -1); var view2D = view.getView2D(); var view2DState = view2D.getView2DState(); var direction = this.lastScaleDelta_ - 1; ol.interaction.Interaction.rotate(map, view2D, view2DState.rotation); ol.interaction.Interaction.zoom(map, view2D, view2DState.resolution, undefined, ol.DRAGROTATEANDZOOM_ANIMATION_DURATION, direction); this.lastScaleDelta_ = 0; return false }; ol.interaction.DragRotateAndZoom.prototype.handlePointerDown = function(mapBrowserEvent) { if(!ol.events.condition.mouseOnly(mapBrowserEvent)) { return false } if(this.condition_(mapBrowserEvent)) { mapBrowserEvent.map.getView().setHint(ol.ViewHint.INTERACTING, 1); this.lastAngle_ = undefined; this.lastMagnitude_ = undefined; return true }else { return false } }; ol.interaction.DragRotateAndZoom.prototype.shouldStopEvent = goog.functions.identity; goog.provide("ol.interaction.Modify"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.functions"); goog.require("ol.Collection"); goog.require("ol.CollectionEventType"); goog.require("ol.Feature"); goog.require("ol.FeatureOverlay"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.ViewHint"); goog.require("ol.coordinate"); goog.require("ol.events.condition"); goog.require("ol.extent"); goog.require("ol.feature"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.interaction.Pointer"); goog.require("ol.structs.RBush"); ol.interaction.SegmentDataType; ol.interaction.Modify = function(options) { goog.base(this); this.deleteCondition_ = goog.isDef(options.deleteCondition) ? options.deleteCondition : (goog.functions.and(ol.events.condition.noModifierKeys, ol.events.condition.singleClick)); this.vertexFeature_ = null; this.vertexSegments_ = null; this.lastPixel_ = [0, 0]; this.rBush_ = new ol.structs.RBush; this.pixelTolerance_ = goog.isDef(options.pixelTolerance) ? options.pixelTolerance : 10; this.snappedToVertex_ = false; this.dragSegments_ = null; this.overlay_ = new ol.FeatureOverlay({style:goog.isDef(options.style) ? options.style : ol.interaction.Modify.getDefaultStyleFunction()}); this.SEGMENT_WRITERS_ = {"Point":this.writePointGeometry_, "LineString":this.writeLineStringGeometry_, "LinearRing":this.writeLineStringGeometry_, "Polygon":this.writePolygonGeometry_, "MultiPoint":this.writeMultiPointGeometry_, "MultiLineString":this.writeMultiLineStringGeometry_, "MultiPolygon":this.writeMultiPolygonGeometry_, "GeometryCollection":this.writeGeometryCollectionGeometry_}; this.features_ = options.features; this.features_.forEach(this.addFeature_, this); goog.events.listen(this.features_, ol.CollectionEventType.ADD, this.handleFeatureAdd_, false, this); goog.events.listen(this.features_, ol.CollectionEventType.REMOVE, this.handleFeatureRemove_, false, this) }; goog.inherits(ol.interaction.Modify, ol.interaction.Pointer); ol.interaction.Modify.prototype.addFeature_ = function(feature) { var geometry = feature.getGeometry(); if(goog.isDef(this.SEGMENT_WRITERS_[geometry.getType()])) { this.SEGMENT_WRITERS_[geometry.getType()].call(this, feature, geometry) } var map = this.getMap(); if(!goog.isNull(map)) { this.handlePointerAtPixel_(this.lastPixel_, map) } }; ol.interaction.Modify.prototype.setMap = function(map) { this.overlay_.setMap(map); goog.base(this, "setMap", map) }; ol.interaction.Modify.prototype.handleFeatureAdd_ = function(evt) { var feature = evt.element; goog.asserts.assertInstanceof(feature, ol.Feature); this.addFeature_(feature) }; ol.interaction.Modify.prototype.handleFeatureRemove_ = function(evt) { var feature = evt.element; var rBush = this.rBush_; var i, nodesToRemove = []; rBush.forEachInExtent(feature.getGeometry().getExtent(), function(node) { if(feature === node.feature) { nodesToRemove.push(node) } }); for(i = nodesToRemove.length - 1;i >= 0;--i) { rBush.remove(nodesToRemove[i]) } if(!goog.isNull(this.vertexFeature_) && this.features_.getLength() === 0) { this.overlay_.removeFeature(this.vertexFeature_); this.vertexFeature_ = null } }; ol.interaction.Modify.prototype.writePointGeometry_ = function(feature, geometry) { var coordinates = geometry.getCoordinates(); var segmentData = ({feature:feature, geometry:geometry, segment:[coordinates, coordinates]}); this.rBush_.insert(geometry.getExtent(), segmentData) }; ol.interaction.Modify.prototype.writeMultiPointGeometry_ = function(feature, geometry) { var points = geometry.getCoordinates(); var coordinates, i, ii, segmentData; for(i = 0, ii = points.length;i < ii;++i) { coordinates = points[i]; segmentData = ({feature:feature, geometry:geometry, depth:[i], index:i, segment:[coordinates, coordinates]}); this.rBush_.insert(geometry.getExtent(), segmentData) } }; ol.interaction.Modify.prototype.writeLineStringGeometry_ = function(feature, geometry) { var coordinates = geometry.getCoordinates(); var i, ii, segment, segmentData; for(i = 0, ii = coordinates.length - 1;i < ii;++i) { segment = coordinates.slice(i, i + 2); segmentData = ({feature:feature, geometry:geometry, index:i, segment:segment}); this.rBush_.insert(ol.extent.boundingExtent(segment), segmentData) } }; ol.interaction.Modify.prototype.writeMultiLineStringGeometry_ = function(feature, geometry) { var lines = geometry.getCoordinates(); var coordinates, i, ii, j, jj, segment, segmentData; for(j = 0, jj = lines.length;j < jj;++j) { coordinates = lines[j]; for(i = 0, ii = coordinates.length - 1;i < ii;++i) { segment = coordinates.slice(i, i + 2); segmentData = ({feature:feature, geometry:geometry, depth:[j], index:i, segment:segment}); this.rBush_.insert(ol.extent.boundingExtent(segment), segmentData) } } }; ol.interaction.Modify.prototype.writePolygonGeometry_ = function(feature, geometry) { var rings = geometry.getCoordinates(); var coordinates, i, ii, j, jj, segment, segmentData; for(j = 0, jj = rings.length;j < jj;++j) { coordinates = rings[j]; for(i = 0, ii = coordinates.length - 1;i < ii;++i) { segment = coordinates.slice(i, i + 2); segmentData = ({feature:feature, geometry:geometry, depth:[j], index:i, segment:segment}); this.rBush_.insert(ol.extent.boundingExtent(segment), segmentData) } } }; ol.interaction.Modify.prototype.writeMultiPolygonGeometry_ = function(feature, geometry) { var polygons = geometry.getCoordinates(); var coordinates, i, ii, j, jj, k, kk, rings, segment, segmentData; for(k = 0, kk = polygons.length;k < kk;++k) { rings = polygons[k]; for(j = 0, jj = rings.length;j < jj;++j) { coordinates = rings[j]; for(i = 0, ii = coordinates.length - 1;i < ii;++i) { segment = coordinates.slice(i, i + 2); segmentData = ({feature:feature, geometry:geometry, depth:[j, k], index:i, segment:segment}); this.rBush_.insert(ol.extent.boundingExtent(segment), segmentData) } } } }; ol.interaction.Modify.prototype.writeGeometryCollectionGeometry_ = function(feature, geometry) { var i, geometries = geometry.getGeometriesArray(); for(i = 0;i < geometries.length;++i) { this.SEGMENT_WRITERS_[geometries[i].getType()].call(this, feature, geometries[i]) } }; ol.interaction.Modify.prototype.createOrUpdateVertexFeature_ = function(coordinates) { var vertexFeature = this.vertexFeature_; if(goog.isNull(vertexFeature)) { vertexFeature = new ol.Feature(new ol.geom.Point(coordinates)); this.vertexFeature_ = vertexFeature; this.overlay_.addFeature(vertexFeature) }else { var geometry = (vertexFeature.getGeometry()); geometry.setCoordinates(coordinates) } return vertexFeature }; ol.interaction.Modify.prototype.handlePointerDown = function(evt) { this.handlePointerAtPixel_(evt.pixel, evt.map); this.dragSegments_ = []; var vertexFeature = this.vertexFeature_; if(!goog.isNull(vertexFeature)) { var insertVertices = []; var geometry = (vertexFeature.getGeometry()); var vertex = geometry.getCoordinates(); var vertexExtent = ol.extent.boundingExtent([vertex]); var segmentDataMatches = []; this.rBush_.forEachInExtent(vertexExtent, function(segmentData) { segmentDataMatches.push(segmentData) }); var distinctFeatures = {}; for(var i = 0, ii = segmentDataMatches.length;i < ii;++i) { var segmentDataMatch = segmentDataMatches[i]; var segment = segmentDataMatch.segment; if(!(goog.getUid(segmentDataMatch.feature) in distinctFeatures)) { var feature = segmentDataMatch.feature; distinctFeatures[goog.getUid(feature)] = true } if(ol.coordinate.equals(segment[0], vertex)) { this.dragSegments_.push([segmentDataMatch, 0]) }else { if(ol.coordinate.equals(segment[1], vertex)) { this.dragSegments_.push([segmentDataMatch, 1]) }else { if(goog.getUid(segment) in this.vertexSegments_) { insertVertices.push([segmentDataMatch, vertex]) } } } } for(i = insertVertices.length - 1;i >= 0;--i) { this.insertVertex_.apply(this, insertVertices[i]) } } return!goog.isNull(this.vertexFeature_) }; ol.interaction.Modify.prototype.handlePointerDrag = function(evt) { var vertex = evt.coordinate; for(var i = 0, ii = this.dragSegments_.length;i < ii;++i) { var dragSegment = this.dragSegments_[i]; var segmentData = dragSegment[0]; var depth = segmentData.depth; var geometry = segmentData.geometry; var coordinates = geometry.getCoordinates(); var segment = segmentData.segment; var index = dragSegment[1]; switch(geometry.getType()) { case ol.geom.GeometryType.POINT: coordinates = vertex; segment[0] = segment[1] = vertex; break; case ol.geom.GeometryType.MULTI_POINT: coordinates[segmentData.index] = vertex; segment[0] = segment[1] = vertex; break; case ol.geom.GeometryType.LINE_STRING: coordinates[segmentData.index + index] = vertex; segment[index] = vertex; break; case ol.geom.GeometryType.MULTI_LINE_STRING: coordinates[depth[0]][segmentData.index + index] = vertex; segment[index] = vertex; break; case ol.geom.GeometryType.POLYGON: coordinates[depth[0]][segmentData.index + index] = vertex; segment[index] = vertex; break; case ol.geom.GeometryType.MULTI_POLYGON: coordinates[depth[1]][depth[0]][segmentData.index + index] = vertex; segment[index] = vertex; break } geometry.setCoordinates(coordinates); this.createOrUpdateVertexFeature_(vertex) } }; ol.interaction.Modify.prototype.handlePointerUp = function(evt) { var segmentData; for(var i = this.dragSegments_.length - 1;i >= 0;--i) { segmentData = this.dragSegments_[i][0]; this.rBush_.update(ol.extent.boundingExtent(segmentData.segment), segmentData) } return false }; ol.interaction.Modify.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { var handled; if(!mapBrowserEvent.map.getView().getHints()[ol.ViewHint.INTERACTING] && mapBrowserEvent.type == ol.MapBrowserEvent.EventType.POINTERMOVE) { this.handlePointerMove_(mapBrowserEvent) } if(!goog.isNull(this.vertexFeature_) && this.snappedToVertex_ && this.deleteCondition_(mapBrowserEvent)) { var geometry = this.vertexFeature_.getGeometry(); goog.asserts.assertInstanceof(geometry, ol.geom.Point); handled = this.removeVertex_() } return goog.base(this, "handleMapBrowserEvent", mapBrowserEvent) && !handled }; ol.interaction.Modify.prototype.handlePointerMove_ = function(evt) { this.lastPixel_ = evt.pixel; this.handlePointerAtPixel_(evt.pixel, evt.map) }; ol.interaction.Modify.prototype.handlePointerAtPixel_ = function(pixel, map) { var pixelCoordinate = map.getCoordinateFromPixel(pixel); var sortByDistance = function(a, b) { return ol.coordinate.squaredDistanceToSegment(pixelCoordinate, a.segment) - ol.coordinate.squaredDistanceToSegment(pixelCoordinate, b.segment) }; var lowerLeft = map.getCoordinateFromPixel([pixel[0] - this.pixelTolerance_, pixel[1] + this.pixelTolerance_]); var upperRight = map.getCoordinateFromPixel([pixel[0] + this.pixelTolerance_, pixel[1] - this.pixelTolerance_]); var box = ol.extent.boundingExtent([lowerLeft, upperRight]); var rBush = this.rBush_; var nodes = rBush.getInExtent(box); if(nodes.length > 0) { nodes.sort(sortByDistance); var node = nodes[0]; var closestSegment = node.segment; var vertex = ol.coordinate.closestOnSegment(pixelCoordinate, closestSegment); var vertexPixel = map.getPixelFromCoordinate(vertex); if(Math.sqrt(ol.coordinate.squaredDistance(pixel, vertexPixel)) <= this.pixelTolerance_) { var pixel1 = map.getPixelFromCoordinate(closestSegment[0]); var pixel2 = map.getPixelFromCoordinate(closestSegment[1]); var squaredDist1 = ol.coordinate.squaredDistance(vertexPixel, pixel1); var squaredDist2 = ol.coordinate.squaredDistance(vertexPixel, pixel2); var dist = Math.sqrt(Math.min(squaredDist1, squaredDist2)); this.snappedToVertex_ = dist <= this.pixelTolerance_; if(this.snappedToVertex_) { vertex = squaredDist1 > squaredDist2 ? closestSegment[1] : closestSegment[0] } this.createOrUpdateVertexFeature_(vertex); var vertexSegments = {}; vertexSegments[goog.getUid(closestSegment)] = true; var segment; for(var i = 1, ii = nodes.length;i < ii;++i) { segment = nodes[i].segment; if(ol.coordinate.equals(closestSegment[0], segment[0]) && ol.coordinate.equals(closestSegment[1], segment[1]) || ol.coordinate.equals(closestSegment[0], segment[1]) && ol.coordinate.equals(closestSegment[1], segment[0])) { vertexSegments[goog.getUid(segment)] = true }else { break } } this.vertexSegments_ = vertexSegments; return } } if(!goog.isNull(this.vertexFeature_)) { this.overlay_.removeFeature(this.vertexFeature_); this.vertexFeature_ = null } }; ol.interaction.Modify.prototype.insertVertex_ = function(segmentData, vertex) { var segment = segmentData.segment; var feature = segmentData.feature; var geometry = segmentData.geometry; var depth = segmentData.depth; var index = segmentData.index; var coordinates; switch(geometry.getType()) { case ol.geom.GeometryType.MULTI_LINE_STRING: goog.asserts.assertInstanceof(geometry, ol.geom.MultiLineString); coordinates = geometry.getCoordinates(); coordinates[depth[0]].splice(index + 1, 0, vertex); break; case ol.geom.GeometryType.POLYGON: goog.asserts.assertInstanceof(geometry, ol.geom.Polygon); coordinates = geometry.getCoordinates(); coordinates[depth[0]].splice(index + 1, 0, vertex); break; case ol.geom.GeometryType.MULTI_POLYGON: goog.asserts.assertInstanceof(geometry, ol.geom.MultiPolygon); coordinates = geometry.getCoordinates(); coordinates[depth[1]][depth[0]].splice(index + 1, 0, vertex); break; case ol.geom.GeometryType.LINE_STRING: goog.asserts.assertInstanceof(geometry, ol.geom.LineString); coordinates = geometry.getCoordinates(); coordinates.splice(index + 1, 0, vertex); break; default: return } geometry.setCoordinates(coordinates); var rTree = this.rBush_; goog.asserts.assert(goog.isDef(segment)); rTree.remove(segmentData); goog.asserts.assert(goog.isDef(index)); this.updateSegmentIndices_(geometry, index, depth, 1); var newSegmentData = ({segment:[segment[0], vertex], feature:feature, geometry:geometry, depth:depth, index:index}); rTree.insert(ol.extent.boundingExtent(newSegmentData.segment), newSegmentData); this.dragSegments_.push([newSegmentData, 1]); var newSegmentData2 = ({segment:[vertex, segment[1]], feature:feature, geometry:geometry, depth:depth, index:index + 1}); rTree.insert(ol.extent.boundingExtent(newSegmentData2.segment), newSegmentData2); this.dragSegments_.push([newSegmentData2, 0]) }; ol.interaction.Modify.prototype.removeVertex_ = function() { var dragSegments = this.dragSegments_; var segmentsByFeature = {}; var deleted = false; var component, coordinates, dragSegment, geometry, i, index, left; var newIndex, newSegment, right, segmentData, uid; for(i = dragSegments.length - 1;i >= 0;--i) { dragSegment = dragSegments[i]; segmentData = dragSegment[0]; geometry = segmentData.geometry; coordinates = geometry.getCoordinates(); uid = goog.getUid(segmentData.feature); left = right = index = undefined; if(dragSegment[1] === 0) { right = segmentData; index = segmentData.index }else { if(dragSegment[1] == 1) { left = segmentData; index = segmentData.index + 1 } } if(!(uid in segmentsByFeature)) { segmentsByFeature[uid] = [left, right, index] } newSegment = segmentsByFeature[uid]; if(goog.isDef(left)) { newSegment[0] = left } if(goog.isDef(right)) { newSegment[1] = right } if(goog.isDef(newSegment[0]) && goog.isDef(newSegment[1])) { component = coordinates; deleted = false; newIndex = index - 1; switch(geometry.getType()) { case ol.geom.GeometryType.MULTI_LINE_STRING: coordinates[segmentData.depth[0]].splice(index, 1); deleted = true; break; case ol.geom.GeometryType.LINE_STRING: coordinates.splice(index, 1); deleted = true; break; case ol.geom.GeometryType.MULTI_POLYGON: component = component[segmentData.depth[1]]; case ol.geom.GeometryType.POLYGON: component = component[segmentData.depth[0]]; if(component.length > 4) { if(index == component.length - 1) { index = 0 } component.splice(index, 1); deleted = true; if(index === 0) { component.pop(); component.push(component[0]); newIndex = component.length - 1 } } break } if(deleted) { this.rBush_.remove(newSegment[0]); this.rBush_.remove(newSegment[1]); geometry.setCoordinates(coordinates); goog.asserts.assert(newIndex >= 0); var newSegmentData = ({depth:segmentData.depth, feature:segmentData.feature, geometry:segmentData.geometry, index:newIndex, segment:[newSegment[0].segment[0], newSegment[1].segment[1]]}); this.rBush_.insert(ol.extent.boundingExtent(newSegmentData.segment), newSegmentData); this.updateSegmentIndices_(geometry, index, segmentData.depth, -1); this.overlay_.removeFeature(this.vertexFeature_); this.vertexFeature_ = null } } } return deleted }; ol.interaction.Modify.prototype.shouldStopEvent = goog.functions.identity; ol.interaction.Modify.prototype.updateSegmentIndices_ = function(geometry, index, depth, delta) { this.rBush_.forEachInExtent(geometry.getExtent(), function(segmentDataMatch) { if(segmentDataMatch.geometry === geometry && (!goog.isDef(depth) || goog.array.equals(segmentDataMatch.depth, depth)) && segmentDataMatch.index > index) { segmentDataMatch.index += delta } }) }; ol.interaction.Modify.getDefaultStyleFunction = function() { var style = ol.feature.createDefaultEditingStyles(); return function(feature, resolution) { return style[ol.geom.GeometryType.POINT] } }; goog.provide("ol.interaction.Select"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.functions"); goog.require("ol.CollectionEventType"); goog.require("ol.Feature"); goog.require("ol.FeatureOverlay"); goog.require("ol.events.condition"); goog.require("ol.feature"); goog.require("ol.geom.GeometryType"); goog.require("ol.interaction.Interaction"); ol.interaction.Select = function(opt_options) { goog.base(this); var options = goog.isDef(opt_options) ? opt_options : {}; this.condition_ = goog.isDef(options.condition) ? options.condition : ol.events.condition.singleClick; this.addCondition_ = goog.isDef(options.addCondition) ? options.addCondition : ol.events.condition.never; this.removeCondition_ = goog.isDef(options.removeCondition) ? options.removeCondition : ol.events.condition.never; this.toggleCondition_ = goog.isDef(options.toggleCondition) ? options.toggleCondition : ol.events.condition.shiftKeyOnly; var layerFilter; if(goog.isDef(options.layers)) { if(goog.isFunction(options.layers)) { layerFilter = options.layers }else { var layers = options.layers; layerFilter = function(layer) { return goog.array.contains(layers, layer) } } }else { layerFilter = goog.functions.TRUE } this.layerFilter_ = layerFilter; this.featureOverlay_ = new ol.FeatureOverlay({style:goog.isDef(options.style) ? options.style : ol.interaction.Select.getDefaultStyleFunction()}); var features = this.featureOverlay_.getFeatures(); goog.events.listen(features, ol.CollectionEventType.ADD, this.addFeature_, false, this); goog.events.listen(features, ol.CollectionEventType.REMOVE, this.removeFeature_, false, this) }; goog.inherits(ol.interaction.Select, ol.interaction.Interaction); ol.interaction.Select.prototype.getFeatures = function() { return this.featureOverlay_.getFeatures() }; ol.interaction.Select.prototype.handleMapBrowserEvent = function(mapBrowserEvent) { if(!this.condition_(mapBrowserEvent)) { return true } var add = this.addCondition_(mapBrowserEvent); var remove = this.removeCondition_(mapBrowserEvent); var toggle = this.toggleCondition_(mapBrowserEvent); var set = !add && !remove && !toggle; var map = mapBrowserEvent.map; var features = this.featureOverlay_.getFeatures(); if(set) { var feature = map.forEachFeatureAtPixel(mapBrowserEvent.pixel, function(feature, layer) { return feature }, undefined, this.layerFilter_); if(goog.isDef(feature) && features.getLength() == 1 && features.getAt(0) == feature) { }else { if(features.getLength() !== 0) { features.clear() } if(goog.isDef(feature)) { features.push(feature) } } }else { map.forEachFeatureAtPixel(mapBrowserEvent.pixel, function(feature, layer) { var index = goog.array.indexOf(features.getArray(), feature); if(index == -1) { if(add || toggle) { features.push(feature) } }else { if(remove || toggle) { features.removeAt(index) } } }, undefined, this.layerFilter_) } return false }; ol.interaction.Select.prototype.setMap = function(map) { var currentMap = this.getMap(); var selectedFeatures = this.featureOverlay_.getFeatures(); if(!goog.isNull(currentMap)) { selectedFeatures.forEach(currentMap.unskipFeature, currentMap) } goog.base(this, "setMap", map); this.featureOverlay_.setMap(map); if(!goog.isNull(map)) { selectedFeatures.forEach(map.skipFeature, map) } }; ol.interaction.Select.getDefaultStyleFunction = function() { var styles = ol.feature.createDefaultEditingStyles(); goog.array.extend(styles[ol.geom.GeometryType.POLYGON], styles[ol.geom.GeometryType.LINE_STRING]); goog.array.extend(styles[ol.geom.GeometryType.GEOMETRY_COLLECTION], styles[ol.geom.GeometryType.LINE_STRING]); return function(feature, resolution) { return styles[feature.getGeometry().getType()] } }; ol.interaction.Select.prototype.addFeature_ = function(evt) { var feature = evt.element; var map = this.getMap(); goog.asserts.assertInstanceof(feature, ol.Feature); if(!goog.isNull(map)) { map.skipFeature(feature) } }; ol.interaction.Select.prototype.removeFeature_ = function(evt) { var feature = evt.element; var map = this.getMap(); goog.asserts.assertInstanceof(feature, ol.Feature); if(!goog.isNull(map)) { map.unskipFeature(feature) } }; goog.provide("ol.layer.Heatmap"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.math"); goog.require("ol.Object"); goog.require("ol.dom"); goog.require("ol.layer.Vector"); goog.require("ol.render.EventType"); goog.require("ol.style.Icon"); goog.require("ol.style.Style"); ol.layer.HeatmapLayerProperty = {GRADIENT:"gradient"}; ol.layer.Heatmap = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, (options)); this.gradient_ = null; goog.events.listen(this, ol.Object.getChangeEventType(ol.layer.HeatmapLayerProperty.GRADIENT), this.handleGradientChanged_, false, this); this.setGradient(goog.isDef(options.gradient) ? options.gradient : ol.layer.Heatmap.DEFAULT_GRADIENT); var circle = ol.layer.Heatmap.createCircle_(goog.isDef(options.radius) ? options.radius : 8, goog.isDef(options.blur) ? options.blur : 15, goog.isDef(options.shadow) ? options.shadow : 250); var styleCache = new Array(256); var weight = goog.isDef(options.weight) ? options.weight : "weight"; var weightFunction; if(goog.isString(weight)) { weightFunction = function(feature) { return feature.get(weight) } }else { weightFunction = weight } goog.asserts.assert(goog.isFunction(weightFunction)); this.setStyle(function(feature, resolution) { var weight = weightFunction(feature); var opacity = goog.isDef(weight) ? goog.math.clamp(weight, 0, 1) : 1; var index = 255 * opacity | 0; var style = styleCache[index]; if(!goog.isDef(style)) { style = [new ol.style.Style({image:new ol.style.Icon({opacity:opacity, src:circle})})]; styleCache[index] = style } return style }); this.setRenderOrder(null); goog.events.listen(this, ol.render.EventType.RENDER, this.handleRender_, false, this) }; goog.inherits(ol.layer.Heatmap, ol.layer.Vector); ol.layer.Heatmap.DEFAULT_GRADIENT = ["#00f", "#0ff", "#0f0", "#ff0", "#f00"]; ol.layer.Heatmap.createGradient_ = function(colors) { var width = 1; var height = 256; var context = ol.dom.createCanvasContext2D(width, height); var gradient = context.createLinearGradient(0, 0, width, height); var step = 1 / (colors.length - 1); for(var i = 0, ii = colors.length;i < ii;++i) { gradient.addColorStop(i * step, colors[i]) } context.fillStyle = gradient; context.fillRect(0, 0, width, height); return context.getImageData(0, 0, width, height).data }; ol.layer.Heatmap.createCircle_ = function(radius, blur, shadow) { var halfSize = radius + blur + 1; var size = 2 * halfSize; var context = ol.dom.createCanvasContext2D(size, size); context.shadowOffsetX = context.shadowOffsetY = shadow; context.shadowBlur = blur; context.shadowColor = "#000"; context.beginPath(); var center = halfSize - shadow; context.arc(center, center, radius, 0, Math.PI * 2, true); context.fill(); return context.canvas.toDataURL() }; ol.layer.Heatmap.prototype.getGradient = function() { return(this.get(ol.layer.HeatmapLayerProperty.GRADIENT)) }; goog.exportProperty(ol.layer.Heatmap.prototype, "getGradient", ol.layer.Heatmap.prototype.getGradient); ol.layer.Heatmap.prototype.handleGradientChanged_ = function() { this.gradient_ = ol.layer.Heatmap.createGradient_(this.getGradient()) }; ol.layer.Heatmap.prototype.handleRender_ = function(event) { goog.asserts.assert(event.type == ol.render.EventType.RENDER); var context = event.context; var canvas = context.canvas; var image = context.getImageData(0, 0, canvas.width, canvas.height); var view8 = image.data; var i, ii, alpha, offset; for(i = 0, ii = view8.length;i < ii;i += 4) { alpha = view8[i + 3] * 4; if(alpha) { view8[i] = this.gradient_[alpha]; view8[i + 1] = this.gradient_[alpha + 1]; view8[i + 2] = this.gradient_[alpha + 2] } } context.putImageData(image, 0, 0) }; ol.layer.Heatmap.prototype.setGradient = function(colors) { this.set(ol.layer.HeatmapLayerProperty.GRADIENT, colors) }; goog.exportProperty(ol.layer.Heatmap.prototype, "setGradient", ol.layer.Heatmap.prototype.setGradient); goog.provide("ol.loadingstrategy"); goog.require("ol.TileCoord"); ol.loadingstrategy.all = function(extent, resolution) { return[[-Infinity, -Infinity, Infinity, Infinity]] }; ol.loadingstrategy.bbox = function(extent, resolution) { return[extent] }; ol.loadingstrategy.createTile = function(tileGrid) { return function(extent, resolution) { var z = tileGrid.getZForResolution(resolution); var tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z); var extents = []; var tileCoord = new ol.TileCoord(z, 0, 0); for(tileCoord.x = tileRange.minX;tileCoord.x <= tileRange.maxX;++tileCoord.x) { for(tileCoord.y = tileRange.minY;tileCoord.y <= tileRange.maxY;++tileCoord.y) { extents.push(tileGrid.getTileCoordExtent(tileCoord)) } } return extents } }; goog.provide("ol.Ellipsoid"); goog.require("goog.math"); goog.require("ol.Coordinate"); ol.Ellipsoid = function(a, flattening) { this.a = a; this.flattening = flattening; this.b = this.a * (1 - this.flattening); this.eSquared = 2 * flattening - flattening * flattening; this.e = Math.sqrt(this.eSquared) }; ol.Ellipsoid.prototype.vincenty = function(c1, c2, opt_minDeltaLambda, opt_maxIterations) { var minDeltaLambda = goog.isDef(opt_minDeltaLambda) ? opt_minDeltaLambda : 1E-12; var maxIterations = goog.isDef(opt_maxIterations) ? opt_maxIterations : 100; var f = this.flattening; var lat1 = goog.math.toRadians(c1[1]); var lat2 = goog.math.toRadians(c2[1]); var deltaLon = goog.math.toRadians(c2[0] - c1[0]); var U1 = Math.atan((1 - f) * Math.tan(lat1)); var cosU1 = Math.cos(U1); var sinU1 = Math.sin(U1); var U2 = Math.atan((1 - f) * Math.tan(lat2)); var cosU2 = Math.cos(U2); var sinU2 = Math.sin(U2); var lambda = deltaLon; var cosSquaredAlpha, sinAlpha; var cosLambda, deltaLambda = Infinity, sinLambda; var cos2SigmaM, cosSigma, sigma, sinSigma; var i; for(i = maxIterations;i > 0;--i) { cosLambda = Math.cos(lambda); sinLambda = Math.sin(lambda); var x = cosU2 * sinLambda; var y = cosU1 * sinU2 - sinU1 * cosU2 * cosLambda; sinSigma = Math.sqrt(x * x + y * y); if(sinSigma === 0) { return{distance:0, initialBearing:0, finalBearing:0} } cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda; sigma = Math.atan2(sinSigma, cosSigma); sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma; cosSquaredAlpha = 1 - sinAlpha * sinAlpha; cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSquaredAlpha; if(isNaN(cos2SigmaM)) { cos2SigmaM = 0 } var C = f / 16 * cosSquaredAlpha * (4 + f * (4 - 3 * cosSquaredAlpha)); var lambdaPrime = deltaLon + (1 - C) * f * sinAlpha * (sigma + C * sinSigma * (cos2SigmaM + C * cosSigma * (2 * cos2SigmaM * cos2SigmaM - 1))); deltaLambda = Math.abs(lambdaPrime - lambda); lambda = lambdaPrime; if(deltaLambda < minDeltaLambda) { break } } if(i === 0) { return{distance:NaN, finalBearing:NaN, initialBearing:NaN} } var aSquared = this.a * this.a; var bSquared = this.b * this.b; var uSquared = cosSquaredAlpha * (aSquared - bSquared) / bSquared; var A = 1 + uSquared / 16384 * (4096 + uSquared * (uSquared * (320 - 175 * uSquared) - 768)); var B = uSquared / 1024 * (256 + uSquared * (uSquared * (74 - 47 * uSquared) - 128)); var deltaSigma = B * sinSigma * (cos2SigmaM + B / 4 * (cosSigma * (2 * cos2SigmaM * cos2SigmaM - 1) - B / 6 * cos2SigmaM * (4 * sinSigma * sinSigma - 3) * (4 * cos2SigmaM * cos2SigmaM - 3))); cosLambda = Math.cos(lambda); sinLambda = Math.sin(lambda); var alpha1 = Math.atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda); var alpha2 = Math.atan2(cosU1 * sinLambda, cosU1 * sinU2 * cosLambda - sinU1 * cosU2); return{distance:this.b * A * (sigma - deltaSigma), initialBearing:goog.math.toDegrees(alpha1), finalBearing:goog.math.toDegrees(alpha2)} }; ol.Ellipsoid.prototype.vincentyDistance = function(c1, c2, opt_minDeltaLambda, opt_maxIterations) { var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations); return vincenty.distance }; ol.Ellipsoid.prototype.vincentyFinalBearing = function(c1, c2, opt_minDeltaLambda, opt_maxIterations) { var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations); return vincenty.finalBearing }; ol.Ellipsoid.prototype.vincentyInitialBearing = function(c1, c2, opt_minDeltaLambda, opt_maxIterations) { var vincenty = this.vincenty(c1, c2, opt_minDeltaLambda, opt_maxIterations); return vincenty.initialBearing }; goog.provide("ol.ellipsoid.BESSEL1841"); goog.require("ol.Ellipsoid"); ol.ellipsoid.BESSEL1841 = new ol.Ellipsoid(6377397.155, 1 / 299.15281285); goog.provide("ol.proj.CH"); goog.provide("ol.proj.EPSG2056"); goog.provide("ol.proj.EPSG21781"); goog.require("goog.asserts"); goog.require("goog.math"); goog.require("ol.ellipsoid.BESSEL1841"); goog.require("ol.proj"); goog.require("ol.proj.EPSG4326"); goog.require("ol.proj.Projection"); goog.require("ol.proj.Units"); ol.proj.CH = function(options) { goog.base(this, {code:options.code, extent:options.extent, global:false, units:ol.proj.Units.METERS}) }; goog.inherits(ol.proj.CH, ol.proj.Projection); ol.proj.CH.PHI0 = goog.math.toRadians((3600 * 46 + 60 * 57 + 8.66) / 3600); ol.proj.CH.LAMBDA0 = goog.math.toRadians((3600 * 7 + 60 * 26 + 22.5) / 3600); ol.proj.CH.ELLIPSOID = ol.ellipsoid.BESSEL1841; ol.proj.CH.COS_PHI0 = Math.cos(ol.proj.CH.PHI0); ol.proj.CH.SIN_PHI0 = Math.sin(ol.proj.CH.PHI0); ol.proj.CH.R = ol.proj.CH.ELLIPSOID.a * Math.sqrt(1 - ol.proj.CH.ELLIPSOID.eSquared) / (1 - ol.proj.CH.ELLIPSOID.eSquared * ol.proj.CH.SIN_PHI0 * ol.proj.CH.SIN_PHI0); ol.proj.CH.ALPHA = Math.sqrt(1 + ol.proj.CH.ELLIPSOID.eSquared * Math.pow(ol.proj.CH.COS_PHI0, 4) / (1 - ol.proj.CH.ELLIPSOID.eSquared)); ol.proj.CH.SIN_B0 = ol.proj.CH.SIN_PHI0 / ol.proj.CH.ALPHA; ol.proj.CH.B0 = Math.asin(ol.proj.CH.SIN_B0); ol.proj.CH.COS_B0 = Math.cos(ol.proj.CH.B0); ol.proj.CH.K = Math.log(Math.tan(Math.PI / 4 + ol.proj.CH.B0 / 2)) - ol.proj.CH.ALPHA * Math.log(Math.tan(Math.PI / 4 + ol.proj.CH.PHI0 / 2)) + ol.proj.CH.ALPHA * ol.proj.CH.ELLIPSOID.e * Math.log((1 + ol.proj.CH.ELLIPSOID.e * ol.proj.CH.SIN_PHI0) / (1 - ol.proj.CH.ELLIPSOID.e * ol.proj.CH.SIN_PHI0)) / 2; ol.proj.CH.add = function() { ol.proj.EPSG2056.add(); ol.proj.EPSG21781.add(); var epsg2056 = ol.proj.get("EPSG:2056"); var epsg21781 = ol.proj.get("EPSG:21781"); ol.proj.addTransform(epsg2056, epsg21781, goog.partial(ol.proj.CH.translate_, -2E6, -1E6)); ol.proj.addTransform(epsg21781, epsg2056, goog.partial(ol.proj.CH.translate_, 2E6, 1E6)) }; ol.proj.CH.fromEPSG4326Approximate_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var auxLat, auxLon, i; for(i = 0;i < n;i += dimension) { auxLat = 36 * input[i + 1] / 100 - 16.902866; auxLon = 36 * input[i] / 100 - 2.67825; output[i] = offsetY + 72.37 + 211455.93 * auxLon - 10938.51 * auxLon * auxLat - 0.36 * auxLon * auxLat * auxLat - 44.54 * auxLon * auxLon * auxLon; output[i + 1] = offsetX + 147.07 + 308807.95 * auxLat + 3745.25 * auxLon * auxLon + 76.63 * auxLat * auxLat - 194.56 * auxLon * auxLon * auxLat + 119.79 * auxLat * auxLat * auxLat } return output }; ol.proj.CH.fromEPSG4326Rigorous_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var b, bBar, eSinPhi, i, l, lambda, lBar, phi, s; for(i = 0;i < n;i += dimension) { lambda = goog.math.toRadians(input[i]); phi = goog.math.toRadians(input[i + 1]); eSinPhi = ol.proj.CH.ELLIPSOID.e * Math.sin(phi); s = ol.proj.CH.ALPHA * Math.log(Math.tan(Math.PI / 4 + phi / 2)) - ol.proj.CH.ALPHA * ol.proj.CH.ELLIPSOID.e * Math.log((1 + eSinPhi) / (1 - eSinPhi)) / 2 + ol.proj.CH.K; b = 2 * (Math.atan(Math.exp(s)) - Math.PI / 4); l = ol.proj.CH.ALPHA * (lambda - ol.proj.CH.LAMBDA0); lBar = Math.atan2(Math.sin(l), ol.proj.CH.SIN_B0 * Math.tan(b) + ol.proj.CH.COS_B0 * Math.cos(l)); bBar = Math.asin(ol.proj.CH.COS_B0 * Math.sin(b) - ol.proj.CH.SIN_B0 * Math.cos(b) * Math.cos(l)); output[i] = offsetY + ol.proj.CH.R * lBar; output[i + 1] = offsetX + ol.proj.CH.R * Math.log((1 + Math.sin(bBar)) / (1 - Math.sin(bBar))) / 2 } return output }; ol.proj.CH.toEPSG4326Approximate_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var auxX, auxY, i; for(i = 0;i < n;i += dimension) { auxY = (input[i] - offsetY) / 1E6; auxX = (input[i + 1] - offsetX) / 1E6; output[i] = 100 * (2.6779094 + 4.728982 * auxY + 0.791484 * auxY * auxX + 0.1306 * auxY * auxX * auxX - 0.0436 * auxY * auxY * auxY) / 36; output[i + 1] = 100 * (16.9023892 + 3.238272 * auxX - 0.270978 * auxY * auxY - 0.002528 * auxX * auxX - 0.0447 * auxY * auxY * auxX - 0.014 * auxX * auxX * auxX) / 36 } return output }; ol.proj.CH.toEPSG4326Rigorous_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var b, bBar, eSinPhi, i, iterations, l, lambda, lastPhi, lBar, phi, s, x, y; for(i = 0;i < n;i += dimension) { y = input[i] - offsetY; x = input[i + 1] - offsetX; lBar = y / ol.proj.CH.R; bBar = 2 * (Math.atan(Math.exp(x / ol.proj.CH.R)) - Math.PI / 4); b = Math.asin(ol.proj.CH.COS_B0 * Math.sin(bBar) + ol.proj.CH.SIN_B0 * Math.cos(bBar) * Math.cos(lBar)); l = Math.atan2(Math.sin(lBar), ol.proj.CH.COS_B0 * Math.cos(lBar) - ol.proj.CH.SIN_B0 * Math.tan(bBar)); lambda = ol.proj.CH.LAMBDA0 + l / ol.proj.CH.ALPHA; lastPhi = phi = b; for(iterations = 20;iterations > 0;--iterations) { s = (Math.log(Math.tan(Math.PI / 4 + b / 2)) - ol.proj.CH.K) / ol.proj.CH.ALPHA + ol.proj.CH.ELLIPSOID.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(ol.proj.CH.ELLIPSOID.e * Math.sin(phi)) / 2)); phi = 2 * Math.atan(Math.exp(s)) - Math.PI / 2; if(Math.abs(phi - lastPhi) < 1E-7) { break } lastPhi = phi } goog.asserts.assert(iterations !== 0); output[i] = goog.math.toDegrees(lambda); output[i + 1] = goog.math.toDegrees(phi) } return output }; ol.proj.CH.translate_ = function(offsetY, offsetX, input, opt_output, opt_dimension) { var n = input.length; var dimension = goog.isDef(opt_dimension) ? opt_dimension : 2; var output; if(goog.isDef(opt_output)) { output = opt_output }else { if(dimension > 2) { output = input.slice() }else { output = new Array(n) } } goog.asserts.assert(dimension >= 2); goog.asserts.assert(output.length % dimension === 0); var i; for(i = 0;i < n;i += dimension) { output[i] = input[i] + offsetY; output[i + 1] = input[i + 1] + offsetX } return output }; ol.proj.CH.prototype.getPointResolution = function(resolution, point) { return resolution }; ol.proj.EPSG2056 = function() { goog.base(this, {code:"EPSG:2056", extent:ol.proj.EPSG2056.EXTENT}) }; goog.inherits(ol.proj.EPSG2056, ol.proj.CH); ol.proj.EPSG2056.EXTENT = [2485869.5728, 1076443.1884, 2837076.5648, 1299941.7864]; ol.proj.EPSG2056.add = function() { ol.proj.addEquivalentProjections(ol.proj.EPSG4326.PROJECTIONS); var epsg2056 = new ol.proj.EPSG2056; ol.proj.addProjection(epsg2056); ol.proj.addEquivalentTransforms(ol.proj.EPSG4326.PROJECTIONS, [epsg2056], goog.partial(ol.proj.CH.fromEPSG4326Rigorous_, 26E5, 12E5), goog.partial(ol.proj.CH.toEPSG4326Rigorous_, 26E5, 12E5)) }; ol.proj.EPSG21781 = function() { goog.base(this, {code:"EPSG:21781", extent:ol.proj.EPSG21781.EXTENT}) }; goog.inherits(ol.proj.EPSG21781, ol.proj.CH); ol.proj.EPSG21781.EXTENT = [485869.5728, 76443.1884, 837076.5648, 299941.7864]; ol.proj.EPSG21781.add = function() { ol.proj.addEquivalentProjections(ol.proj.EPSG4326.PROJECTIONS); var epsg21781 = new ol.proj.EPSG21781; ol.proj.addProjection(epsg21781); ol.proj.addEquivalentTransforms(ol.proj.EPSG4326.PROJECTIONS, [epsg21781], goog.partial(ol.proj.CH.fromEPSG4326Rigorous_, 6E5, 2E5), goog.partial(ol.proj.CH.toEPSG4326Rigorous_, 6E5, 2E5)) }; goog.provide("goog.net.jsloader"); goog.provide("goog.net.jsloader.Error"); goog.provide("goog.net.jsloader.ErrorCode"); goog.provide("goog.net.jsloader.Options"); goog.require("goog.array"); goog.require("goog.async.Deferred"); goog.require("goog.debug.Error"); goog.require("goog.dom"); goog.require("goog.dom.TagName"); goog.net.jsloader.GLOBAL_VERIFY_OBJS_ = "closure_verification"; goog.net.jsloader.DEFAULT_TIMEOUT = 5E3; goog.net.jsloader.Options; goog.net.jsloader.scriptsToLoad_ = []; goog.net.jsloader.loadMany = function(uris, opt_options) { if(!uris.length) { return } var isAnotherModuleLoading = goog.net.jsloader.scriptsToLoad_.length; goog.array.extend(goog.net.jsloader.scriptsToLoad_, uris); if(isAnotherModuleLoading) { return } uris = goog.net.jsloader.scriptsToLoad_; var popAndLoadNextScript = function() { var uri = uris.shift(); var deferred = goog.net.jsloader.load(uri, opt_options); if(uris.length) { deferred.addBoth(popAndLoadNextScript) } }; popAndLoadNextScript() }; goog.net.jsloader.load = function(uri, opt_options) { var options = opt_options || {}; var doc = options.document || document; var script = goog.dom.createElement(goog.dom.TagName.SCRIPT); var request = {script_:script, timeout_:undefined}; var deferred = new goog.async.Deferred(goog.net.jsloader.cancel_, request); var timeout = null; var timeoutDuration = goog.isDefAndNotNull(options.timeout) ? options.timeout : goog.net.jsloader.DEFAULT_TIMEOUT; if(timeoutDuration > 0) { timeout = window.setTimeout(function() { goog.net.jsloader.cleanup_(script, true); deferred.errback(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.TIMEOUT, "Timeout reached for loading script " + uri)) }, timeoutDuration); request.timeout_ = timeout } script.onload = script.onreadystatechange = function() { if(!script.readyState || script.readyState == "loaded" || script.readyState == "complete") { var removeScriptNode = options.cleanupWhenDone || false; goog.net.jsloader.cleanup_(script, removeScriptNode, timeout); deferred.callback(null) } }; script.onerror = function() { goog.net.jsloader.cleanup_(script, true, timeout); deferred.errback(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.LOAD_ERROR, "Error while loading script " + uri)) }; goog.dom.setProperties(script, {"type":"text/javascript", "charset":"UTF-8", "src":uri}); var scriptParent = goog.net.jsloader.getScriptParentElement_(doc); scriptParent.appendChild(script); return deferred }; goog.net.jsloader.loadAndVerify = function(uri, verificationObjName, options) { if(!goog.global[goog.net.jsloader.GLOBAL_VERIFY_OBJS_]) { goog.global[goog.net.jsloader.GLOBAL_VERIFY_OBJS_] = {} } var verifyObjs = goog.global[goog.net.jsloader.GLOBAL_VERIFY_OBJS_]; if(goog.isDef(verifyObjs[verificationObjName])) { return goog.async.Deferred.fail(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.VERIFY_OBJECT_ALREADY_EXISTS, "Verification object " + verificationObjName + " already defined.")) } var sendDeferred = goog.net.jsloader.load(uri, options); var deferred = new goog.async.Deferred(goog.bind(sendDeferred.cancel, sendDeferred)); sendDeferred.addCallback(function() { var result = verifyObjs[verificationObjName]; if(goog.isDef(result)) { deferred.callback(result); delete verifyObjs[verificationObjName] }else { deferred.errback(new goog.net.jsloader.Error(goog.net.jsloader.ErrorCode.VERIFY_ERROR, "Script " + uri + " loaded, but verification object " + verificationObjName + " was not defined.")) } }); sendDeferred.addErrback(function(error) { if(goog.isDef(verifyObjs[verificationObjName])) { delete verifyObjs[verificationObjName] } deferred.errback(error) }); return deferred }; goog.net.jsloader.getScriptParentElement_ = function(doc) { var headElements = doc.getElementsByTagName(goog.dom.TagName.HEAD); if(!headElements || goog.array.isEmpty(headElements)) { return doc.documentElement }else { return headElements[0] } }; goog.net.jsloader.cancel_ = function() { var request = this; if(request && request.script_) { var scriptNode = request.script_; if(scriptNode && scriptNode.tagName == "SCRIPT") { goog.net.jsloader.cleanup_(scriptNode, true, request.timeout_) } } }; goog.net.jsloader.cleanup_ = function(scriptNode, removeScriptNode, opt_timeout) { if(goog.isDefAndNotNull(opt_timeout)) { goog.global.clearTimeout(opt_timeout) } scriptNode.onload = goog.nullFunction; scriptNode.onerror = goog.nullFunction; scriptNode.onreadystatechange = goog.nullFunction; if(removeScriptNode) { window.setTimeout(function() { goog.dom.removeNode(scriptNode) }, 0) } }; goog.net.jsloader.ErrorCode = {LOAD_ERROR:0, TIMEOUT:1, VERIFY_ERROR:2, VERIFY_OBJECT_ALREADY_EXISTS:3}; goog.net.jsloader.Error = function(code, opt_message) { var msg = "Jsloader error (code #" + code + ")"; if(opt_message) { msg += ": " + opt_message } goog.base(this, msg); this.code = code }; goog.inherits(goog.net.jsloader.Error, goog.debug.Error); goog.provide("goog.net.Jsonp"); goog.require("goog.Uri"); goog.require("goog.net.jsloader"); goog.net.Jsonp = function(uri, opt_callbackParamName) { this.uri_ = new goog.Uri(uri); this.callbackParamName_ = opt_callbackParamName ? opt_callbackParamName : "callback"; this.timeout_ = 5E3 }; goog.net.Jsonp.CALLBACKS = "_callbacks_"; goog.net.Jsonp.scriptCounter_ = 0; goog.net.Jsonp.prototype.setRequestTimeout = function(timeout) { this.timeout_ = timeout }; goog.net.Jsonp.prototype.getRequestTimeout = function() { return this.timeout_ }; goog.net.Jsonp.prototype.send = function(opt_payload, opt_replyCallback, opt_errorCallback, opt_callbackParamValue) { var payload = opt_payload || null; var id = opt_callbackParamValue || "_" + (goog.net.Jsonp.scriptCounter_++).toString(36) + goog.now().toString(36); if(!goog.global[goog.net.Jsonp.CALLBACKS]) { goog.global[goog.net.Jsonp.CALLBACKS] = {} } var uri = this.uri_.clone(); if(payload) { goog.net.Jsonp.addPayloadToUri_(payload, uri) } if(opt_replyCallback) { var reply = goog.net.Jsonp.newReplyHandler_(id, opt_replyCallback); goog.global[goog.net.Jsonp.CALLBACKS][id] = reply; uri.setParameterValues(this.callbackParamName_, goog.net.Jsonp.CALLBACKS + "." + id) } var deferred = goog.net.jsloader.load(uri.toString(), {timeout:this.timeout_, cleanupWhenDone:true}); var error = goog.net.Jsonp.newErrorHandler_(id, payload, opt_errorCallback); deferred.addErrback(error); return{id_:id, deferred_:deferred} }; goog.net.Jsonp.prototype.cancel = function(request) { if(request) { if(request.deferred_) { request.deferred_.cancel() } if(request.id_) { goog.net.Jsonp.cleanup_(request.id_, false) } } }; goog.net.Jsonp.newErrorHandler_ = function(id, payload, opt_errorCallback) { return function() { goog.net.Jsonp.cleanup_(id, false); if(opt_errorCallback) { opt_errorCallback(payload) } } }; goog.net.Jsonp.newReplyHandler_ = function(id, replyCallback) { return function(var_args) { goog.net.Jsonp.cleanup_(id, true); replyCallback.apply(undefined, arguments) } }; goog.net.Jsonp.cleanup_ = function(id, deleteReplyHandler) { if(goog.global[goog.net.Jsonp.CALLBACKS][id]) { if(deleteReplyHandler) { delete goog.global[goog.net.Jsonp.CALLBACKS][id] }else { goog.global[goog.net.Jsonp.CALLBACKS][id] = goog.nullFunction } } }; goog.net.Jsonp.addPayloadToUri_ = function(payload, uri) { for(var name in payload) { if(!payload.hasOwnProperty || payload.hasOwnProperty(name)) { uri.setParameterValues(name, payload[name]) } } return uri }; goog.provide("ol.TileUrlFunction"); goog.provide("ol.TileUrlFunctionType"); goog.require("goog.array"); goog.require("goog.math"); goog.require("ol.TileCoord"); ol.TileUrlFunctionType; ol.TileCoordTransformType; ol.TileUrlFunction.createFromTemplate = function(template) { return function(tileCoord, pixelRatio, projection) { if(goog.isNull(tileCoord)) { return undefined }else { return template.replace("{z}", tileCoord.z.toString()).replace("{x}", tileCoord.x.toString()).replace("{y}", tileCoord.y.toString()).replace("{-y}", function() { var y = (1 << tileCoord.z) - tileCoord.y - 1; return y.toString() }) } } }; ol.TileUrlFunction.createFromTemplates = function(templates) { return ol.TileUrlFunction.createFromTileUrlFunctions(goog.array.map(templates, ol.TileUrlFunction.createFromTemplate)) }; ol.TileUrlFunction.createFromTileUrlFunctions = function(tileUrlFunctions) { if(tileUrlFunctions.length === 1) { return tileUrlFunctions[0] } return function(tileCoord, pixelRatio, projection) { if(goog.isNull(tileCoord)) { return undefined }else { var index = goog.math.modulo(tileCoord.hash(), tileUrlFunctions.length); return tileUrlFunctions[index](tileCoord, pixelRatio, projection) } } }; ol.TileUrlFunction.nullTileUrlFunction = function(tileCoord, pixelRatio, projection) { return undefined }; ol.TileUrlFunction.withTileCoordTransform = function(transformFn, tileUrlFunction) { var tmpTileCoord = new ol.TileCoord(0, 0, 0); return function(tileCoord, pixelRatio, projection) { if(goog.isNull(tileCoord)) { return undefined }else { return tileUrlFunction(transformFn(tileCoord, projection, tmpTileCoord), pixelRatio, projection) } } }; ol.TileUrlFunction.expandUrl = function(url) { var urls = []; var match = /\{(\d)-(\d)\}/.exec(url) || /\{([a-z])-([a-z])\}/.exec(url); if(match) { var startCharCode = match[1].charCodeAt(0); var stopCharCode = match[2].charCodeAt(0); var charCode; for(charCode = startCharCode;charCode <= stopCharCode;++charCode) { urls.push(url.replace(match[0], String.fromCharCode(charCode))) } }else { urls.push(url) } return urls }; goog.provide("ol.TileCache"); goog.require("goog.asserts"); goog.require("ol"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.structs.LRUCache"); ol.TileCache = function(opt_highWaterMark) { goog.base(this); this.highWaterMark_ = goog.isDef(opt_highWaterMark) ? opt_highWaterMark : ol.DEFAULT_TILE_CACHE_HIGH_WATER_MARK }; goog.inherits(ol.TileCache, ol.structs.LRUCache); ol.TileCache.prototype.canExpireCache = function() { return this.getCount() > this.highWaterMark_ }; ol.TileCache.prototype.expireCache = function(usedTiles) { var tile, zKey; while(this.canExpireCache()) { tile = (this.peekLast()); zKey = tile.tileCoord.z.toString(); if(zKey in usedTiles && usedTiles[zKey].contains(tile.tileCoord)) { break }else { this.pop() } } }; ol.TileCache.prototype.pruneTileRange = function(tileRange) { var i = this.getCount(), key; while(i--) { key = this.peekLastKey(); if(tileRange.contains(ol.TileCoord.createFromString(key))) { this.pop() }else { this.get(key) } } }; goog.provide("ol.source.TileImage"); goog.require("goog.asserts"); goog.require("ol.ImageTile"); goog.require("ol.Tile"); goog.require("ol.TileCache"); goog.require("ol.TileCoord"); goog.require("ol.TileLoadFunctionType"); goog.require("ol.TileState"); goog.require("ol.TileUrlFunction"); goog.require("ol.TileUrlFunctionType"); goog.require("ol.source.Tile"); ol.source.TileImage = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, opaque:options.opaque, projection:options.projection, tileGrid:options.tileGrid}); this.tileUrlFunction = goog.isDef(options.tileUrlFunction) ? options.tileUrlFunction : ol.TileUrlFunction.nullTileUrlFunction; this.crossOrigin = goog.isDef(options.crossOrigin) ? options.crossOrigin : null; this.tileCache = new ol.TileCache; this.tileLoadFunction = goog.isDef(options.tileLoadFunction) ? options.tileLoadFunction : ol.source.TileImage.defaultTileLoadFunction; this.tileClass = goog.isDef(options.tileClass) ? options.tileClass : ol.ImageTile }; goog.inherits(ol.source.TileImage, ol.source.Tile); ol.source.TileImage.defaultTileLoadFunction = function(imageTile, src) { imageTile.getImage().src = src }; ol.source.TileImage.prototype.canExpireCache = function() { return this.tileCache.canExpireCache() }; ol.source.TileImage.prototype.expireCache = function(usedTiles) { this.tileCache.expireCache(usedTiles) }; ol.source.TileImage.prototype.getTile = function(z, x, y, pixelRatio, projection) { var tileCoordKey = this.getKeyZXY(z, x, y); if(this.tileCache.containsKey(tileCoordKey)) { return(this.tileCache.get(tileCoordKey)) }else { goog.asserts.assert(projection); var tileCoord = new ol.TileCoord(z, x, y); var tileUrl = this.tileUrlFunction(tileCoord, pixelRatio, projection); var tile = new this.tileClass(tileCoord, goog.isDef(tileUrl) ? ol.TileState.IDLE : ol.TileState.EMPTY, goog.isDef(tileUrl) ? tileUrl : "", this.crossOrigin, this.tileLoadFunction); this.tileCache.set(tileCoordKey, tile); return tile } }; ol.source.TileImage.prototype.setTileUrlFunction = function(tileUrlFunction) { this.tileCache.clear(); this.tileUrlFunction = tileUrlFunction; this.dispatchChangeEvent() }; ol.source.TileImage.prototype.useTile = function(z, x, y) { var tileCoordKey = this.getKeyZXY(z, x, y); if(this.tileCache.containsKey(tileCoordKey)) { this.tileCache.get(tileCoordKey) } }; goog.provide("ol.tilegrid.XYZ"); goog.require("goog.math"); goog.require("ol"); goog.require("ol.TileCoord"); goog.require("ol.TileRange"); goog.require("ol.proj"); goog.require("ol.proj.EPSG3857"); goog.require("ol.tilegrid.TileGrid"); ol.tilegrid.XYZ = function(options) { var resolutions = new Array(options.maxZoom + 1); var z; var size = 2 * ol.proj.EPSG3857.HALF_SIZE / ol.DEFAULT_TILE_SIZE; for(z = 0;z <= options.maxZoom;++z) { resolutions[z] = size / Math.pow(2, z) } goog.base(this, {minZoom:options.minZoom, origin:[-ol.proj.EPSG3857.HALF_SIZE, ol.proj.EPSG3857.HALF_SIZE], resolutions:resolutions, tileSize:ol.DEFAULT_TILE_SIZE}) }; goog.inherits(ol.tilegrid.XYZ, ol.tilegrid.TileGrid); ol.tilegrid.XYZ.prototype.createTileCoordTransform = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var minZ = this.minZoom; var maxZ = this.maxZoom; var wrapX = goog.isDef(options.wrapX) ? options.wrapX : true; var tmpTileCoord = new ol.TileCoord(0, 0, 0); var tileRangeByZ = null; if(goog.isDef(options.extent)) { tileRangeByZ = new Array(maxZ + 1); var z; for(z = 0;z <= maxZ;++z) { if(z < minZ) { tileRangeByZ[z] = null }else { tileRangeByZ[z] = this.getTileRangeForExtentAndZ(options.extent, z) } } } return function(tileCoord, projection, opt_tileCoord) { var z = tileCoord.z; if(z < minZ || maxZ < z) { return null } var n = Math.pow(2, z); var x = tileCoord.x; if(wrapX) { x = goog.math.modulo(x, n) }else { if(x < 0 || n <= x) { return null } } var y = tileCoord.y; if(y < -n || -1 < y) { return null } if(!goog.isNull(tileRangeByZ)) { tmpTileCoord.z = z; tmpTileCoord.x = x; tmpTileCoord.y = y; if(!tileRangeByZ[z].contains(tmpTileCoord)) { return null } } return ol.TileCoord.createOrUpdate(z, x, -y - 1, opt_tileCoord) } }; ol.tilegrid.XYZ.prototype.getTileCoordChildTileRange = function(tileCoord, opt_tileRange) { if(tileCoord.z < this.maxZoom) { return ol.TileRange.createOrUpdate(2 * tileCoord.x, 2 * (tileCoord.x + 1), 2 * tileCoord.y, 2 * (tileCoord.y + 1), opt_tileRange) }else { return null } }; ol.tilegrid.XYZ.prototype.forEachTileCoordParentTileRange = function(tileCoord, callback, opt_this, opt_tileRange) { var tileRange = ol.TileRange.createOrUpdate(0, tileCoord.x, 0, tileCoord.y, opt_tileRange); var z; for(z = tileCoord.z - 1;z >= this.minZoom;--z) { tileRange.minX = tileRange.maxX >>= 1; tileRange.minY = tileRange.maxY >>= 1; if(callback.call(opt_this, z, tileRange)) { return true } } return false }; goog.provide("ol.source.BingMaps"); goog.require("goog.Uri"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.net.Jsonp"); goog.require("ol"); goog.require("ol.Attribution"); goog.require("ol.TileRange"); goog.require("ol.TileUrlFunction"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.source.State"); goog.require("ol.source.TileImage"); goog.require("ol.tilegrid.XYZ"); ol.source.BingMaps = function(options) { goog.base(this, {crossOrigin:"anonymous", opaque:true, projection:ol.proj.get("EPSG:3857"), state:ol.source.State.LOADING, tileLoadFunction:options.tileLoadFunction}); this.culture_ = goog.isDef(options.culture) ? options.culture : "en-us"; var protocol = ol.IS_HTTPS ? "https:" : "http:"; var uri = new goog.Uri(protocol + "//dev.virtualearth.net/REST/v1/Imagery/Metadata/" + options.imagerySet); var jsonp = new goog.net.Jsonp(uri, "jsonp"); jsonp.send({"include":"ImageryProviders", "key":options.key}, goog.bind(this.handleImageryMetadataResponse, this)) }; goog.inherits(ol.source.BingMaps, ol.source.TileImage); ol.source.BingMaps.TOS_ATTRIBUTION = new ol.Attribution({html:'\x3ca class\x3d"ol-attribution-bing-tos" target\x3d"_blank" ' + 'href\x3d"http://www.microsoft.com/maps/product/terms.html"\x3e' + "Terms of Use\x3c/a\x3e"}); ol.source.BingMaps.prototype.handleImageryMetadataResponse = function(response) { if(response.statusCode != 200 || response.statusDescription != "OK" || response.authenticationResultCode != "ValidCredentials" || response.resourceSets.length != 1 || response.resourceSets[0].resources.length != 1) { this.setState(ol.source.State.ERROR); return } var brandLogoUri = response.brandLogoUri; var resource = response.resourceSets[0].resources[0]; goog.asserts.assert(resource.imageWidth == resource.imageHeight); var tileGrid = new ol.tilegrid.XYZ({minZoom:resource.zoomMin, maxZoom:resource.zoomMax, tileSize:resource.imageWidth}); this.tileGrid = tileGrid; var culture = this.culture_; var sourceProjection = this.getProjection(); this.tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(tileGrid.createTileCoordTransform(), ol.TileUrlFunction.createFromTileUrlFunctions(goog.array.map(resource.imageUrlSubdomains, function(subdomain) { var imageUrl = resource.imageUrl.replace("{subdomain}", subdomain).replace("{culture}", culture); return function(tileCoord, pixelRatio, projection) { goog.asserts.assert(ol.proj.equivalent(projection, sourceProjection)); if(goog.isNull(tileCoord)) { return undefined }else { return imageUrl.replace("{quadkey}", tileCoord.quadKey()) } } }))); if(resource.imageryProviders) { var transform = ol.proj.getTransformFromProjections(ol.proj.get("EPSG:4326"), this.getProjection()); var attributions = goog.array.map(resource.imageryProviders, function(imageryProvider) { var html = imageryProvider.attribution; var tileRanges = {}; goog.array.forEach(imageryProvider.coverageAreas, function(coverageArea) { var minZ = coverageArea.zoomMin; var maxZ = coverageArea.zoomMax; var bbox = coverageArea.bbox; var epsg4326Extent = [bbox[1], bbox[0], bbox[3], bbox[2]]; var extent = ol.extent.transform(epsg4326Extent, transform); var tileRange, z, zKey; for(z = minZ;z <= maxZ;++z) { zKey = z.toString(); tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z); if(zKey in tileRanges) { tileRanges[zKey].push(tileRange) }else { tileRanges[zKey] = [tileRange] } } }); return new ol.Attribution({html:html, tileRanges:tileRanges}) }); attributions.push(ol.source.BingMaps.TOS_ATTRIBUTION); this.setAttributions(attributions) } this.setLogo(brandLogoUri); this.setState(ol.source.State.READY) }; goog.provide("goog.net.EventType"); goog.net.EventType = {COMPLETE:"complete", SUCCESS:"success", ERROR:"error", ABORT:"abort", READY:"ready", READY_STATE_CHANGE:"readystatechange", TIMEOUT:"timeout", INCREMENTAL_DATA:"incrementaldata", PROGRESS:"progress"}; goog.provide("goog.Timer"); goog.require("goog.events.EventTarget"); goog.Timer = function(opt_interval, opt_timerObject) { goog.events.EventTarget.call(this); this.interval_ = opt_interval || 1; this.timerObject_ = opt_timerObject || goog.Timer.defaultTimerObject; this.boundTick_ = goog.bind(this.tick_, this); this.last_ = goog.now() }; goog.inherits(goog.Timer, goog.events.EventTarget); goog.Timer.MAX_TIMEOUT_ = 2147483647; goog.Timer.prototype.enabled = false; goog.Timer.defaultTimerObject = goog.global; goog.Timer.intervalScale = 0.8; goog.Timer.prototype.timer_ = null; goog.Timer.prototype.getInterval = function() { return this.interval_ }; goog.Timer.prototype.setInterval = function(interval) { this.interval_ = interval; if(this.timer_ && this.enabled) { this.stop(); this.start() }else { if(this.timer_) { this.stop() } } }; goog.Timer.prototype.tick_ = function() { if(this.enabled) { var elapsed = goog.now() - this.last_; if(elapsed > 0 && elapsed < this.interval_ * goog.Timer.intervalScale) { this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_ - elapsed); return } if(this.timer_) { this.timerObject_.clearTimeout(this.timer_); this.timer_ = null } this.dispatchTick(); if(this.enabled) { this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_); this.last_ = goog.now() } } }; goog.Timer.prototype.dispatchTick = function() { this.dispatchEvent(goog.Timer.TICK) }; goog.Timer.prototype.start = function() { this.enabled = true; if(!this.timer_) { this.timer_ = this.timerObject_.setTimeout(this.boundTick_, this.interval_); this.last_ = goog.now() } }; goog.Timer.prototype.stop = function() { this.enabled = false; if(this.timer_) { this.timerObject_.clearTimeout(this.timer_); this.timer_ = null } }; goog.Timer.prototype.disposeInternal = function() { goog.Timer.superClass_.disposeInternal.call(this); this.stop(); delete this.timerObject_ }; goog.Timer.TICK = "tick"; goog.Timer.callOnce = function(listener, opt_delay, opt_handler) { if(goog.isFunction(listener)) { if(opt_handler) { listener = goog.bind(listener, opt_handler) } }else { if(listener && typeof listener.handleEvent == "function") { listener = goog.bind(listener.handleEvent, listener) }else { throw Error("Invalid listener argument"); } } if(opt_delay > goog.Timer.MAX_TIMEOUT_) { return-1 }else { return goog.Timer.defaultTimerObject.setTimeout(listener, opt_delay || 0) } }; goog.Timer.clear = function(timerId) { goog.Timer.defaultTimerObject.clearTimeout(timerId) }; goog.provide("goog.net.ErrorCode"); goog.net.ErrorCode = {NO_ERROR:0, ACCESS_DENIED:1, FILE_NOT_FOUND:2, FF_SILENT_ERROR:3, CUSTOM_ERROR:4, EXCEPTION:5, HTTP_ERROR:6, ABORT:7, TIMEOUT:8, OFFLINE:9}; goog.net.ErrorCode.getDebugMessage = function(errorCode) { switch(errorCode) { case goog.net.ErrorCode.NO_ERROR: return"No Error"; case goog.net.ErrorCode.ACCESS_DENIED: return"Access denied to content document"; case goog.net.ErrorCode.FILE_NOT_FOUND: return"File not found"; case goog.net.ErrorCode.FF_SILENT_ERROR: return"Firefox silently errored"; case goog.net.ErrorCode.CUSTOM_ERROR: return"Application custom error"; case goog.net.ErrorCode.EXCEPTION: return"An exception occurred"; case goog.net.ErrorCode.HTTP_ERROR: return"Http response at 400 or 500 level"; case goog.net.ErrorCode.ABORT: return"Request was aborted"; case goog.net.ErrorCode.TIMEOUT: return"Request timed out"; case goog.net.ErrorCode.OFFLINE: return"The resource is not available offline"; default: return"Unrecognized error code" } }; goog.provide("goog.net.HttpStatus"); goog.net.HttpStatus = {CONTINUE:100, SWITCHING_PROTOCOLS:101, OK:200, CREATED:201, ACCEPTED:202, NON_AUTHORITATIVE_INFORMATION:203, NO_CONTENT:204, RESET_CONTENT:205, PARTIAL_CONTENT:206, MULTIPLE_CHOICES:300, MOVED_PERMANENTLY:301, FOUND:302, SEE_OTHER:303, NOT_MODIFIED:304, USE_PROXY:305, TEMPORARY_REDIRECT:307, BAD_REQUEST:400, UNAUTHORIZED:401, PAYMENT_REQUIRED:402, FORBIDDEN:403, NOT_FOUND:404, METHOD_NOT_ALLOWED:405, NOT_ACCEPTABLE:406, PROXY_AUTHENTICATION_REQUIRED:407, REQUEST_TIMEOUT:408, CONFLICT:409, GONE:410, LENGTH_REQUIRED:411, PRECONDITION_FAILED:412, REQUEST_ENTITY_TOO_LARGE:413, REQUEST_URI_TOO_LONG:414, UNSUPPORTED_MEDIA_TYPE:415, REQUEST_RANGE_NOT_SATISFIABLE:416, EXPECTATION_FAILED:417, INTERNAL_SERVER_ERROR:500, NOT_IMPLEMENTED:501, BAD_GATEWAY:502, SERVICE_UNAVAILABLE:503, GATEWAY_TIMEOUT:504, HTTP_VERSION_NOT_SUPPORTED:505, QUIRK_IE_NO_CONTENT:1223}; goog.net.HttpStatus.isSuccess = function(status) { switch(status) { case goog.net.HttpStatus.OK: ; case goog.net.HttpStatus.CREATED: ; case goog.net.HttpStatus.ACCEPTED: ; case goog.net.HttpStatus.NO_CONTENT: ; case goog.net.HttpStatus.PARTIAL_CONTENT: ; case goog.net.HttpStatus.NOT_MODIFIED: ; case goog.net.HttpStatus.QUIRK_IE_NO_CONTENT: return true; default: return false } }; goog.provide("goog.net.XmlHttpFactory"); goog.net.XmlHttpFactory = function() { }; goog.net.XmlHttpFactory.prototype.cachedOptions_ = null; goog.net.XmlHttpFactory.prototype.createInstance = goog.abstractMethod; goog.net.XmlHttpFactory.prototype.getOptions = function() { return this.cachedOptions_ || (this.cachedOptions_ = this.internalGetOptions()) }; goog.net.XmlHttpFactory.prototype.internalGetOptions = goog.abstractMethod; goog.provide("goog.net.WrapperXmlHttpFactory"); goog.require("goog.net.XmlHttpFactory"); goog.net.WrapperXmlHttpFactory = function(xhrFactory, optionsFactory) { goog.net.XmlHttpFactory.call(this); this.xhrFactory_ = xhrFactory; this.optionsFactory_ = optionsFactory }; goog.inherits(goog.net.WrapperXmlHttpFactory, goog.net.XmlHttpFactory); goog.net.WrapperXmlHttpFactory.prototype.createInstance = function() { return this.xhrFactory_() }; goog.net.WrapperXmlHttpFactory.prototype.getOptions = function() { return this.optionsFactory_() }; goog.provide("goog.net.DefaultXmlHttpFactory"); goog.provide("goog.net.XmlHttp"); goog.provide("goog.net.XmlHttp.OptionType"); goog.provide("goog.net.XmlHttp.ReadyState"); goog.require("goog.net.WrapperXmlHttpFactory"); goog.require("goog.net.XmlHttpFactory"); goog.net.XmlHttp = function() { return goog.net.XmlHttp.factory_.createInstance() }; goog.define("goog.net.XmlHttp.ASSUME_NATIVE_XHR", false); goog.net.XmlHttp.getOptions = function() { return goog.net.XmlHttp.factory_.getOptions() }; goog.net.XmlHttp.OptionType = {USE_NULL_FUNCTION:0, LOCAL_REQUEST_ERROR:1}; goog.net.XmlHttp.ReadyState = {UNINITIALIZED:0, LOADING:1, LOADED:2, INTERACTIVE:3, COMPLETE:4}; goog.net.XmlHttp.factory_; goog.net.XmlHttp.setFactory = function(factory, optionsFactory) { goog.net.XmlHttp.setGlobalFactory(new goog.net.WrapperXmlHttpFactory((factory), (optionsFactory))) }; goog.net.XmlHttp.setGlobalFactory = function(factory) { goog.net.XmlHttp.factory_ = factory }; goog.net.DefaultXmlHttpFactory = function() { goog.net.XmlHttpFactory.call(this) }; goog.inherits(goog.net.DefaultXmlHttpFactory, goog.net.XmlHttpFactory); goog.net.DefaultXmlHttpFactory.prototype.createInstance = function() { var progId = this.getProgId_(); if(progId) { return new ActiveXObject(progId) }else { return new XMLHttpRequest } }; goog.net.DefaultXmlHttpFactory.prototype.internalGetOptions = function() { var progId = this.getProgId_(); var options = {}; if(progId) { options[goog.net.XmlHttp.OptionType.USE_NULL_FUNCTION] = true; options[goog.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR] = true } return options }; goog.net.DefaultXmlHttpFactory.prototype.ieProgId_; goog.net.DefaultXmlHttpFactory.prototype.getProgId_ = function() { if(goog.net.XmlHttp.ASSUME_NATIVE_XHR) { return"" } if(!this.ieProgId_ && typeof XMLHttpRequest == "undefined" && typeof ActiveXObject != "undefined") { var ACTIVE_X_IDENTS = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; for(var i = 0;i < ACTIVE_X_IDENTS.length;i++) { var candidate = ACTIVE_X_IDENTS[i]; try { new ActiveXObject(candidate); this.ieProgId_ = candidate; return candidate }catch(e) { } } throw Error("Could not create ActiveXObject. ActiveX might be disabled," + " or MSXML might not be installed"); } return(this.ieProgId_) }; goog.net.XmlHttp.setGlobalFactory(new goog.net.DefaultXmlHttpFactory); goog.provide("goog.net.XhrIo"); goog.provide("goog.net.XhrIo.ResponseType"); goog.require("goog.Timer"); goog.require("goog.array"); goog.require("goog.debug.entryPointRegistry"); goog.require("goog.events.EventTarget"); goog.require("goog.json"); goog.require("goog.log"); goog.require("goog.net.ErrorCode"); goog.require("goog.net.EventType"); goog.require("goog.net.HttpStatus"); goog.require("goog.net.XmlHttp"); goog.require("goog.object"); goog.require("goog.string"); goog.require("goog.structs"); goog.require("goog.structs.Map"); goog.require("goog.uri.utils"); goog.require("goog.userAgent"); goog.net.XhrIo = function(opt_xmlHttpFactory) { goog.base(this); this.headers = new goog.structs.Map; this.xmlHttpFactory_ = opt_xmlHttpFactory || null; this.active_ = false; this.xhr_ = null; this.xhrOptions_ = null; this.lastUri_ = ""; this.lastMethod_ = ""; this.lastErrorCode_ = goog.net.ErrorCode.NO_ERROR; this.lastError_ = ""; this.errorDispatched_ = false; this.inSend_ = false; this.inOpen_ = false; this.inAbort_ = false; this.timeoutInterval_ = 0; this.timeoutId_ = null; this.responseType_ = goog.net.XhrIo.ResponseType.DEFAULT; this.withCredentials_ = false; this.useXhr2Timeout_ = false }; goog.inherits(goog.net.XhrIo, goog.events.EventTarget); goog.net.XhrIo.ResponseType = {DEFAULT:"", TEXT:"text", DOCUMENT:"document", BLOB:"blob", ARRAY_BUFFER:"arraybuffer"}; goog.net.XhrIo.prototype.logger_ = goog.log.getLogger("goog.net.XhrIo"); goog.net.XhrIo.CONTENT_TYPE_HEADER = "Content-Type"; goog.net.XhrIo.HTTP_SCHEME_PATTERN = /^https?$/i; goog.net.XhrIo.METHODS_WITH_FORM_DATA = ["POST", "PUT"]; goog.net.XhrIo.FORM_CONTENT_TYPE = "application/x-www-form-urlencoded;charset\x3dutf-8"; goog.net.XhrIo.XHR2_TIMEOUT_ = "timeout"; goog.net.XhrIo.XHR2_ON_TIMEOUT_ = "ontimeout"; goog.net.XhrIo.sendInstances_ = []; goog.net.XhrIo.send = function(url, opt_callback, opt_method, opt_content, opt_headers, opt_timeoutInterval, opt_withCredentials) { var x = new goog.net.XhrIo; goog.net.XhrIo.sendInstances_.push(x); if(opt_callback) { x.listen(goog.net.EventType.COMPLETE, opt_callback) } x.listenOnce(goog.net.EventType.READY, x.cleanupSend_); if(opt_timeoutInterval) { x.setTimeoutInterval(opt_timeoutInterval) } if(opt_withCredentials) { x.setWithCredentials(opt_withCredentials) } x.send(url, opt_method, opt_content, opt_headers) }; goog.net.XhrIo.cleanup = function() { var instances = goog.net.XhrIo.sendInstances_; while(instances.length) { instances.pop().dispose() } }; goog.net.XhrIo.protectEntryPoints = function(errorHandler) { goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_ = errorHandler.protectEntryPoint(goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_) }; goog.net.XhrIo.prototype.cleanupSend_ = function() { this.dispose(); goog.array.remove(goog.net.XhrIo.sendInstances_, this) }; goog.net.XhrIo.prototype.getTimeoutInterval = function() { return this.timeoutInterval_ }; goog.net.XhrIo.prototype.setTimeoutInterval = function(ms) { this.timeoutInterval_ = Math.max(0, ms) }; goog.net.XhrIo.prototype.setResponseType = function(type) { this.responseType_ = type }; goog.net.XhrIo.prototype.getResponseType = function() { return this.responseType_ }; goog.net.XhrIo.prototype.setWithCredentials = function(withCredentials) { this.withCredentials_ = withCredentials }; goog.net.XhrIo.prototype.getWithCredentials = function() { return this.withCredentials_ }; goog.net.XhrIo.prototype.send = function(url, opt_method, opt_content, opt_headers) { if(this.xhr_) { throw Error("[goog.net.XhrIo] Object is active with another request\x3d" + this.lastUri_ + "; newUri\x3d" + url); } var method = opt_method ? opt_method.toUpperCase() : "GET"; this.lastUri_ = url; this.lastError_ = ""; this.lastErrorCode_ = goog.net.ErrorCode.NO_ERROR; this.lastMethod_ = method; this.errorDispatched_ = false; this.active_ = true; this.xhr_ = this.createXhr(); this.xhrOptions_ = this.xmlHttpFactory_ ? this.xmlHttpFactory_.getOptions() : goog.net.XmlHttp.getOptions(); this.xhr_.onreadystatechange = goog.bind(this.onReadyStateChange_, this); try { goog.log.fine(this.logger_, this.formatMsg_("Opening Xhr")); this.inOpen_ = true; this.xhr_.open(method, url, true); this.inOpen_ = false }catch(err) { goog.log.fine(this.logger_, this.formatMsg_("Error opening Xhr: " + err.message)); this.error_(goog.net.ErrorCode.EXCEPTION, err); return } var content = opt_content || ""; var headers = this.headers.clone(); if(opt_headers) { goog.structs.forEach(opt_headers, function(value, key) { headers.set(key, value) }) } var contentTypeKey = goog.array.find(headers.getKeys(), goog.net.XhrIo.isContentTypeHeader_); var contentIsFormData = goog.global["FormData"] && content instanceof goog.global["FormData"]; if(goog.array.contains(goog.net.XhrIo.METHODS_WITH_FORM_DATA, method) && !contentTypeKey && !contentIsFormData) { headers.set(goog.net.XhrIo.CONTENT_TYPE_HEADER, goog.net.XhrIo.FORM_CONTENT_TYPE) } goog.structs.forEach(headers, function(value, key) { this.xhr_.setRequestHeader(key, value) }, this); if(this.responseType_) { this.xhr_.responseType = this.responseType_ } if(goog.object.containsKey(this.xhr_, "withCredentials")) { this.xhr_.withCredentials = this.withCredentials_ } try { this.cleanUpTimeoutTimer_(); if(this.timeoutInterval_ > 0) { this.useXhr2Timeout_ = goog.net.XhrIo.shouldUseXhr2Timeout_(this.xhr_); goog.log.fine(this.logger_, this.formatMsg_("Will abort after " + this.timeoutInterval_ + "ms if incomplete, xhr2 " + this.useXhr2Timeout_)); if(this.useXhr2Timeout_) { this.xhr_[goog.net.XhrIo.XHR2_TIMEOUT_] = this.timeoutInterval_; this.xhr_[goog.net.XhrIo.XHR2_ON_TIMEOUT_] = goog.bind(this.timeout_, this) }else { this.timeoutId_ = goog.Timer.callOnce(this.timeout_, this.timeoutInterval_, this) } } goog.log.fine(this.logger_, this.formatMsg_("Sending request")); this.inSend_ = true; this.xhr_.send(content); this.inSend_ = false }catch(err) { goog.log.fine(this.logger_, this.formatMsg_("Send error: " + err.message)); this.error_(goog.net.ErrorCode.EXCEPTION, err) } }; goog.net.XhrIo.shouldUseXhr2Timeout_ = function(xhr) { return goog.userAgent.IE && goog.userAgent.isVersionOrHigher(9) && goog.isNumber(xhr[goog.net.XhrIo.XHR2_TIMEOUT_]) && goog.isDef(xhr[goog.net.XhrIo.XHR2_ON_TIMEOUT_]) }; goog.net.XhrIo.isContentTypeHeader_ = function(header) { return goog.string.caseInsensitiveEquals(goog.net.XhrIo.CONTENT_TYPE_HEADER, header) }; goog.net.XhrIo.prototype.createXhr = function() { return this.xmlHttpFactory_ ? this.xmlHttpFactory_.createInstance() : goog.net.XmlHttp() }; goog.net.XhrIo.prototype.timeout_ = function() { if(typeof goog == "undefined") { }else { if(this.xhr_) { this.lastError_ = "Timed out after " + this.timeoutInterval_ + "ms, aborting"; this.lastErrorCode_ = goog.net.ErrorCode.TIMEOUT; goog.log.fine(this.logger_, this.formatMsg_(this.lastError_)); this.dispatchEvent(goog.net.EventType.TIMEOUT); this.abort(goog.net.ErrorCode.TIMEOUT) } } }; goog.net.XhrIo.prototype.error_ = function(errorCode, err) { this.active_ = false; if(this.xhr_) { this.inAbort_ = true; this.xhr_.abort(); this.inAbort_ = false } this.lastError_ = err; this.lastErrorCode_ = errorCode; this.dispatchErrors_(); this.cleanUpXhr_() }; goog.net.XhrIo.prototype.dispatchErrors_ = function() { if(!this.errorDispatched_) { this.errorDispatched_ = true; this.dispatchEvent(goog.net.EventType.COMPLETE); this.dispatchEvent(goog.net.EventType.ERROR) } }; goog.net.XhrIo.prototype.abort = function(opt_failureCode) { if(this.xhr_ && this.active_) { goog.log.fine(this.logger_, this.formatMsg_("Aborting")); this.active_ = false; this.inAbort_ = true; this.xhr_.abort(); this.inAbort_ = false; this.lastErrorCode_ = opt_failureCode || goog.net.ErrorCode.ABORT; this.dispatchEvent(goog.net.EventType.COMPLETE); this.dispatchEvent(goog.net.EventType.ABORT); this.cleanUpXhr_() } }; goog.net.XhrIo.prototype.disposeInternal = function() { if(this.xhr_) { if(this.active_) { this.active_ = false; this.inAbort_ = true; this.xhr_.abort(); this.inAbort_ = false } this.cleanUpXhr_(true) } goog.base(this, "disposeInternal") }; goog.net.XhrIo.prototype.onReadyStateChange_ = function() { if(this.isDisposed()) { return } if(!this.inOpen_ && !this.inSend_ && !this.inAbort_) { this.onReadyStateChangeEntryPoint_() }else { this.onReadyStateChangeHelper_() } }; goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_ = function() { this.onReadyStateChangeHelper_() }; goog.net.XhrIo.prototype.onReadyStateChangeHelper_ = function() { if(!this.active_) { return } if(typeof goog == "undefined") { }else { if(this.xhrOptions_[goog.net.XmlHttp.OptionType.LOCAL_REQUEST_ERROR] && this.getReadyState() == goog.net.XmlHttp.ReadyState.COMPLETE && this.getStatus() == 2) { goog.log.fine(this.logger_, this.formatMsg_("Local request error detected and ignored")) }else { if(this.inSend_ && this.getReadyState() == goog.net.XmlHttp.ReadyState.COMPLETE) { goog.Timer.callOnce(this.onReadyStateChange_, 0, this); return } this.dispatchEvent(goog.net.EventType.READY_STATE_CHANGE); if(this.isComplete()) { goog.log.fine(this.logger_, this.formatMsg_("Request complete")); this.active_ = false; try { if(this.isSuccess()) { this.dispatchEvent(goog.net.EventType.COMPLETE); this.dispatchEvent(goog.net.EventType.SUCCESS) }else { this.lastErrorCode_ = goog.net.ErrorCode.HTTP_ERROR; this.lastError_ = this.getStatusText() + " [" + this.getStatus() + "]"; this.dispatchErrors_() } }finally { this.cleanUpXhr_() } } } } }; goog.net.XhrIo.prototype.cleanUpXhr_ = function(opt_fromDispose) { if(this.xhr_) { this.cleanUpTimeoutTimer_(); var xhr = this.xhr_; var clearedOnReadyStateChange = this.xhrOptions_[goog.net.XmlHttp.OptionType.USE_NULL_FUNCTION] ? goog.nullFunction : null; this.xhr_ = null; this.xhrOptions_ = null; if(!opt_fromDispose) { this.dispatchEvent(goog.net.EventType.READY) } try { xhr.onreadystatechange = clearedOnReadyStateChange }catch(e) { goog.log.error(this.logger_, "Problem encountered resetting onreadystatechange: " + e.message) } } }; goog.net.XhrIo.prototype.cleanUpTimeoutTimer_ = function() { if(this.xhr_ && this.useXhr2Timeout_) { this.xhr_[goog.net.XhrIo.XHR2_ON_TIMEOUT_] = null } if(goog.isNumber(this.timeoutId_)) { goog.Timer.clear(this.timeoutId_); this.timeoutId_ = null } }; goog.net.XhrIo.prototype.isActive = function() { return!!this.xhr_ }; goog.net.XhrIo.prototype.isComplete = function() { return this.getReadyState() == goog.net.XmlHttp.ReadyState.COMPLETE }; goog.net.XhrIo.prototype.isSuccess = function() { var status = this.getStatus(); return goog.net.HttpStatus.isSuccess(status) || status === 0 && !this.isLastUriEffectiveSchemeHttp_() }; goog.net.XhrIo.prototype.isLastUriEffectiveSchemeHttp_ = function() { var scheme = goog.uri.utils.getEffectiveScheme(String(this.lastUri_)); return goog.net.XhrIo.HTTP_SCHEME_PATTERN.test(scheme) }; goog.net.XhrIo.prototype.getReadyState = function() { return this.xhr_ ? (this.xhr_.readyState) : goog.net.XmlHttp.ReadyState.UNINITIALIZED }; goog.net.XhrIo.prototype.getStatus = function() { try { return this.getReadyState() > goog.net.XmlHttp.ReadyState.LOADED ? this.xhr_.status : -1 }catch(e) { goog.log.warning(this.logger_, "Can not get status: " + e.message); return-1 } }; goog.net.XhrIo.prototype.getStatusText = function() { try { return this.getReadyState() > goog.net.XmlHttp.ReadyState.LOADED ? this.xhr_.statusText : "" }catch(e) { goog.log.fine(this.logger_, "Can not get status: " + e.message); return"" } }; goog.net.XhrIo.prototype.getLastUri = function() { return String(this.lastUri_) }; goog.net.XhrIo.prototype.getResponseText = function() { try { return this.xhr_ ? this.xhr_.responseText : "" }catch(e) { goog.log.fine(this.logger_, "Can not get responseText: " + e.message); return"" } }; goog.net.XhrIo.prototype.getResponseBody = function() { try { if(this.xhr_ && "responseBody" in this.xhr_) { return this.xhr_["responseBody"] } }catch(e) { goog.log.fine(this.logger_, "Can not get responseBody: " + e.message) } return null }; goog.net.XhrIo.prototype.getResponseXml = function() { try { return this.xhr_ ? this.xhr_.responseXML : null }catch(e) { goog.log.fine(this.logger_, "Can not get responseXML: " + e.message); return null } }; goog.net.XhrIo.prototype.getResponseJson = function(opt_xssiPrefix) { if(!this.xhr_) { return undefined } var responseText = this.xhr_.responseText; if(opt_xssiPrefix && responseText.indexOf(opt_xssiPrefix) == 0) { responseText = responseText.substring(opt_xssiPrefix.length) } return goog.json.parse(responseText) }; goog.net.XhrIo.prototype.getResponse = function() { try { if(!this.xhr_) { return null } if("response" in this.xhr_) { return this.xhr_.response } switch(this.responseType_) { case goog.net.XhrIo.ResponseType.DEFAULT: ; case goog.net.XhrIo.ResponseType.TEXT: return this.xhr_.responseText; case goog.net.XhrIo.ResponseType.ARRAY_BUFFER: if("mozResponseArrayBuffer" in this.xhr_) { return this.xhr_.mozResponseArrayBuffer } } goog.log.error(this.logger_, "Response type " + this.responseType_ + " is not " + "supported on this browser"); return null }catch(e) { goog.log.fine(this.logger_, "Can not get response: " + e.message); return null } }; goog.net.XhrIo.prototype.getResponseHeader = function(key) { return this.xhr_ && this.isComplete() ? this.xhr_.getResponseHeader(key) : undefined }; goog.net.XhrIo.prototype.getAllResponseHeaders = function() { return this.xhr_ && this.isComplete() ? this.xhr_.getAllResponseHeaders() : "" }; goog.net.XhrIo.prototype.getLastErrorCode = function() { return this.lastErrorCode_ }; goog.net.XhrIo.prototype.getLastError = function() { return goog.isString(this.lastError_) ? this.lastError_ : String(this.lastError_) }; goog.net.XhrIo.prototype.formatMsg_ = function(msg) { return msg + " [" + this.lastMethod_ + " " + this.lastUri_ + " " + this.getStatus() + "]" }; goog.debug.entryPointRegistry.register(function(transformer) { goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_ = transformer(goog.net.XhrIo.prototype.onReadyStateChangeEntryPoint_) }); goog.provide("ol.source.FormatVector"); goog.require("goog.asserts"); goog.require("goog.dispose"); goog.require("goog.events"); goog.require("goog.net.EventType"); goog.require("goog.net.XhrIo"); goog.require("goog.net.XhrIo.ResponseType"); goog.require("goog.userAgent"); goog.require("ol.BrowserFeature"); goog.require("ol.format.FormatType"); goog.require("ol.proj"); goog.require("ol.source.State"); goog.require("ol.source.Vector"); goog.require("ol.xml"); ol.source.FormatVector = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, projection:options.projection}); this.format = options.format }; goog.inherits(ol.source.FormatVector, ol.source.Vector); ol.source.FormatVector.prototype.loadFeaturesFromURL = function(url, callback, thisArg) { var xhrIo = new goog.net.XhrIo; var type = this.format.getType(); var responseType; if(type == ol.format.FormatType.BINARY && ol.BrowserFeature.HAS_ARRAY_BUFFER) { responseType = goog.net.XhrIo.ResponseType.ARRAY_BUFFER }else { responseType = goog.net.XhrIo.ResponseType.TEXT } xhrIo.setResponseType(responseType); goog.events.listen(xhrIo, goog.net.EventType.COMPLETE, function(event) { var xhrIo = event.target; goog.asserts.assertInstanceof(xhrIo, goog.net.XhrIo); if(xhrIo.isSuccess()) { var type = this.format.getType(); var source; if(type == ol.format.FormatType.BINARY && ol.BrowserFeature.HAS_ARRAY_BUFFER) { source = xhrIo.getResponse(); goog.asserts.assertInstanceof(source, ArrayBuffer) }else { if(type == ol.format.FormatType.JSON) { source = xhrIo.getResponseText() }else { if(type == ol.format.FormatType.TEXT) { source = xhrIo.getResponseText() }else { if(type == ol.format.FormatType.XML) { if(!goog.userAgent.IE) { source = xhrIo.getResponseXml() } if(!goog.isDefAndNotNull(source)) { source = ol.xml.load(xhrIo.getResponseText()) } }else { goog.asserts.fail() } } } } if(goog.isDefAndNotNull(source)) { callback.call(thisArg, this.readFeatures(source)) }else { this.setState(ol.source.State.ERROR); goog.asserts.fail() } }else { this.setState(ol.source.State.ERROR) } goog.dispose(xhrIo) }, false, this); xhrIo.send(url) }; ol.source.FormatVector.prototype.readFeatures = function(source) { var format = this.format; var features = format.readFeatures(source); var featureProjection = format.readProjection(source); var projection = this.getProjection(); if(!goog.isNull(projection) && !goog.isNull(featureProjection)) { if(!ol.proj.equivalent(featureProjection, projection)) { var transform = ol.proj.getTransform(featureProjection, projection); var i, ii; for(i = 0, ii = features.length;i < ii;++i) { var feature = features[i]; var geometry = feature.getGeometry(); if(!goog.isNull(geometry)) { geometry.transform(transform) } } } } return features }; goog.provide("ol.source.StaticVector"); goog.require("ol.source.FormatVector"); goog.require("ol.source.State"); ol.source.StaticVector = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, format:options.format, logo:options.logo, projection:options.projection}); if(goog.isDef(options.arrayBuffer)) { this.addFeaturesInternal(this.readFeatures(options.arrayBuffer)) } if(goog.isDef(options.doc)) { this.addFeaturesInternal(this.readFeatures(options.doc)) } if(goog.isDef(options.node)) { this.addFeaturesInternal(this.readFeatures(options.node)) } if(goog.isDef(options.object)) { this.addFeaturesInternal(this.readFeatures(options.object)) } if(goog.isDef(options.text)) { this.addFeaturesInternal(this.readFeatures(options.text)) } if(goog.isDef(options.url) || goog.isDef(options.urls)) { this.setState(ol.source.State.LOADING); if(goog.isDef(options.url)) { this.loadFeaturesFromURL(options.url, function(features) { this.addFeaturesInternal(features); this.setState(ol.source.State.READY) }, this) } if(goog.isDef(options.urls)) { var urls = options.urls; var i, ii; for(i = 0, ii = urls.length;i < ii;++i) { this.loadFeaturesFromURL(urls[i], function(features) { this.addFeaturesInternal(features); this.setState(ol.source.State.READY) }, this) } } } }; goog.inherits(ol.source.StaticVector, ol.source.FormatVector); goog.provide("ol.source.GPX"); goog.require("ol.format.GPX"); goog.require("ol.source.StaticVector"); ol.source.GPX = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, {attributions:options.attributions, doc:options.doc, extent:options.extent, format:new ol.format.GPX, logo:options.logo, node:options.node, projection:options.projection, text:options.text, url:options.url, urls:options.urls}) }; goog.inherits(ol.source.GPX, ol.source.StaticVector); goog.provide("ol.source.GeoJSON"); goog.require("ol.format.GeoJSON"); goog.require("ol.source.StaticVector"); ol.source.GeoJSON = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, {attributions:options.attributions, extent:options.extent, format:new ol.format.GeoJSON({defaultProjection:options.defaultProjection}), logo:options.logo, object:options.object, projection:options.projection, text:options.text, url:options.url, urls:options.urls}) }; goog.inherits(ol.source.GeoJSON, ol.source.StaticVector); goog.provide("ol.source.IGC"); goog.require("ol.format.IGC"); goog.require("ol.source.StaticVector"); ol.source.IGC = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, {format:new ol.format.IGC({altitudeMode:options.altitudeMode}), projection:options.projection, text:options.text, url:options.url, urls:options.urls}) }; goog.inherits(ol.source.IGC, ol.source.StaticVector); goog.provide("ol.CanvasFunctionType"); ol.CanvasFunctionType; goog.provide("ol.ImageCanvas"); goog.require("ol.ImageBase"); goog.require("ol.ImageState"); ol.ImageCanvas = function(extent, resolution, pixelRatio, attributions, canvas) { goog.base(this, extent, resolution, pixelRatio, ol.ImageState.LOADED, attributions); this.canvas_ = canvas }; goog.inherits(ol.ImageCanvas, ol.ImageBase); ol.ImageCanvas.prototype.getImageElement = function(opt_context) { return this.canvas_ }; goog.provide("ol.source.ImageCanvas"); goog.require("ol.CanvasFunctionType"); goog.require("ol.ImageCanvas"); goog.require("ol.extent"); goog.require("ol.source.Image"); ol.source.ImageCanvas = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, projection:options.projection, resolutions:options.resolutions, state:options.state}); this.canvasFunction_ = options.canvasFunction; this.canvas_ = null; this.renderedRevision_ = 0; this.ratio_ = goog.isDef(options.ratio) ? options.ratio : 1.5 }; goog.inherits(ol.source.ImageCanvas, ol.source.Image); ol.source.ImageCanvas.prototype.getImage = function(extent, resolution, pixelRatio, projection) { resolution = this.findNearestResolution(resolution); var canvas = this.canvas_; if(!goog.isNull(canvas) && this.renderedRevision_ == this.getRevision() && canvas.getResolution() == resolution && canvas.getPixelRatio() == pixelRatio && ol.extent.containsExtent(canvas.getExtent(), extent)) { return canvas } extent = extent.slice(); ol.extent.scaleFromCenter(extent, this.ratio_); var width = ol.extent.getWidth(extent) / resolution; var height = ol.extent.getHeight(extent) / resolution; var size = [width * pixelRatio, height * pixelRatio]; var canvasElement = this.canvasFunction_(extent, resolution, pixelRatio, size, projection); if(!goog.isNull(canvasElement)) { canvas = new ol.ImageCanvas(extent, resolution, pixelRatio, this.getAttributions(), canvasElement) } this.canvas_ = canvas; this.renderedRevision_ = this.getRevision(); return canvas }; goog.provide("ol.source.ImageStatic"); goog.require("ol.Image"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.source.Image"); ol.source.ImageStatic = function(options) { var attributions = goog.isDef(options.attributions) ? options.attributions : null; var crossOrigin = goog.isDef(options.crossOrigin) ? options.crossOrigin : null; var imageExtent = options.imageExtent; var imageSize = options.imageSize; var imageResolution = (imageExtent[3] - imageExtent[1]) / imageSize[1]; var imageUrl = options.url; var projection = ol.proj.get(options.projection); goog.base(this, {attributions:attributions, extent:options.extent, logo:options.logo, projection:projection, resolutions:[imageResolution]}); this.image_ = new ol.Image(imageExtent, imageResolution, 1, attributions, imageUrl, crossOrigin) }; goog.inherits(ol.source.ImageStatic, ol.source.Image); ol.source.ImageStatic.prototype.getImage = function(extent, resolution, pixelRatio, projection) { if(ol.extent.intersects(extent, this.image_.getExtent())) { return this.image_ } return null }; goog.provide("ol.source.ImageVector"); goog.require("goog.asserts"); goog.require("goog.events"); goog.require("goog.events.EventType"); goog.require("goog.vec.Mat4"); goog.require("ol.dom"); goog.require("ol.extent"); goog.require("ol.feature"); goog.require("ol.render.canvas.ReplayGroup"); goog.require("ol.renderer.vector"); goog.require("ol.source.ImageCanvas"); goog.require("ol.source.Vector"); goog.require("ol.vec.Mat4"); ol.source.ImageVector = function(options) { this.source_ = options.source; this.styleFunction_ = goog.isDef(options.style) ? ol.feature.createStyleFunction(options.style) : ol.feature.defaultStyleFunction; this.transform_ = goog.vec.Mat4.createNumber(); this.canvasContext_ = ol.dom.createCanvasContext2D(); this.canvasSize_ = [0, 0]; this.replayGroup_ = null; goog.base(this, {attributions:options.attributions, canvasFunction:goog.bind(this.canvasFunctionInternal_, this), extent:options.extent, logo:options.logo, projection:options.projection, ratio:options.ratio, resolutions:options.resolutions, state:this.source_.getState()}); goog.events.listen(this.source_, goog.events.EventType.CHANGE, this.handleSourceChange_, undefined, this) }; goog.inherits(ol.source.ImageVector, ol.source.ImageCanvas); ol.source.ImageVector.prototype.canvasFunctionInternal_ = function(extent, resolution, pixelRatio, size, projection) { var tolerance = resolution / (2 * pixelRatio); var replayGroup = new ol.render.canvas.ReplayGroup(tolerance, extent, resolution); var loading = false; this.source_.forEachFeatureInExtentAtResolution(extent, resolution, function(feature) { loading = loading || this.renderFeature_(feature, resolution, pixelRatio, replayGroup) }, this); replayGroup.finish(); if(loading) { return null } if(this.canvasSize_[0] != size[0] || this.canvasSize_[1] != size[1]) { this.canvasContext_.canvas.width = size[0]; this.canvasContext_.canvas.height = size[1]; this.canvasSize_[0] = size[0]; this.canvasSize_[1] = size[1] }else { this.canvasContext_.clearRect(0, 0, size[0], size[1]) } var transform = this.getTransform_(ol.extent.getCenter(extent), resolution, pixelRatio, size); replayGroup.replay(this.canvasContext_, extent, pixelRatio, transform, 0, {}); this.replayGroup_ = replayGroup; return this.canvasContext_.canvas }; ol.source.ImageVector.prototype.forEachFeatureAtPixel = function(extent, resolution, rotation, coordinate, callback) { if(goog.isNull(this.replayGroup_)) { return undefined }else { return this.replayGroup_.forEachGeometryAtPixel(extent, resolution, 0, coordinate, {}, function(geometry, data) { var feature = (data); return callback(feature) }) } }; ol.source.ImageVector.prototype.getSource = function() { return this.source_ }; ol.source.ImageVector.prototype.getTransform_ = function(center, resolution, pixelRatio, size) { return ol.vec.Mat4.makeTransform2D(this.transform_, size[0] / 2, size[1] / 2, pixelRatio / resolution, -pixelRatio / resolution, 0, -center[0], -center[1]) }; ol.source.ImageVector.prototype.handleImageChange_ = function(event) { this.dispatchChangeEvent() }; ol.source.ImageVector.prototype.handleSourceChange_ = function() { this.setState(this.source_.getState()) }; ol.source.ImageVector.prototype.renderFeature_ = function(feature, resolution, pixelRatio, replayGroup) { var styles = this.styleFunction_(feature, resolution); if(!goog.isDefAndNotNull(styles)) { return false } var squaredTolerance = resolution * resolution / (4 * pixelRatio * pixelRatio); var i, ii, loading = false; for(i = 0, ii = styles.length;i < ii;++i) { loading = ol.renderer.vector.renderFeature(replayGroup, feature, styles[i], squaredTolerance, feature, this.handleImageChange_, this) || loading } return loading }; goog.provide("ol.source.wms"); goog.provide("ol.source.wms.ServerType"); ol.source.wms.ServerType = {CARMENTA_SERVER:"carmentaserver", GEOSERVER:"geoserver", MAPSERVER:"mapserver", QGIS:"qgis"}; goog.provide("ol.source.ImageWMS"); goog.require("goog.asserts"); goog.require("goog.object"); goog.require("goog.string"); goog.require("goog.uri.utils"); goog.require("ol"); goog.require("ol.Image"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.source.Image"); goog.require("ol.source.wms"); goog.require("ol.source.wms.ServerType"); ol.source.ImageWMS = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, {attributions:options.attributions, extent:options.extent, logo:options.logo, projection:options.projection, resolutions:options.resolutions}); this.crossOrigin_ = goog.isDef(options.crossOrigin) ? options.crossOrigin : null; this.url_ = options.url; this.params_ = options.params; this.v13_ = true; this.updateV13_(); this.serverType_ = (options.serverType); this.hidpi_ = goog.isDef(options.hidpi) ? options.hidpi : true; this.image_ = null; this.imageSize_ = [0, 0]; this.renderedProjection_ = null; this.renderedResolution_ = NaN; this.renderedRevision_ = 0; this.ratio_ = goog.isDef(options.ratio) ? options.ratio : 1.5 }; goog.inherits(ol.source.ImageWMS, ol.source.Image); ol.source.ImageWMS.prototype.getGetFeatureInfoUrl = function(coordinate, resolution, projection, params) { goog.asserts.assert(!("VERSION" in params)); if(!goog.isDef(this.url_) || goog.isNull(this.image_)) { return undefined } goog.asserts.assert(this.imageSize_[0] !== 0 && this.imageSize_[1] !== 0); goog.asserts.assert(!isNaN(this.renderedResolution_)); goog.asserts.assert(!goog.isNull(this.renderedProjection_)); if(resolution != this.renderedResolution_ || !ol.proj.equivalent(projection, this.renderedProjection_)) { return undefined } var extent = this.image_.getExtent(); var pixelRatio = this.image_.getPixelRatio(); var baseParams = {"SERVICE":"WMS", "VERSION":ol.DEFAULT_WMS_VERSION, "REQUEST":"GetFeatureInfo", "FORMAT":"image/png", "TRANSPARENT":true, "QUERY_LAYERS":goog.object.get(this.params_, "LAYERS")}; goog.object.extend(baseParams, this.params_, params); var imageResolution = resolution / pixelRatio; var x = Math.floor((coordinate[0] - extent[0]) / imageResolution); var y = Math.floor((extent[3] - coordinate[1]) / imageResolution); goog.object.set(baseParams, this.v13_ ? "I" : "X", x); goog.object.set(baseParams, this.v13_ ? "J" : "Y", y); return this.getRequestUrl_(extent, this.imageSize_, pixelRatio, projection, baseParams) }; ol.source.ImageWMS.prototype.getParams = function() { return this.params_ }; ol.source.ImageWMS.prototype.getImage = function(extent, resolution, pixelRatio, projection) { if(!goog.isDef(this.url_)) { return null } resolution = this.findNearestResolution(resolution); if(pixelRatio != 1 && (!this.hidpi_ || !goog.isDef(this.serverType_))) { pixelRatio = 1 } var image = this.image_; if(!goog.isNull(image) && this.renderedRevision_ == this.getRevision() && image.getResolution() == resolution && image.getPixelRatio() == pixelRatio && ol.extent.containsExtent(image.getExtent(), extent)) { return image } var params = {"SERVICE":"WMS", "VERSION":ol.DEFAULT_WMS_VERSION, "REQUEST":"GetMap", "FORMAT":"image/png", "TRANSPARENT":true}; goog.object.extend(params, this.params_); extent = extent.slice(); var centerX = (extent[0] + extent[2]) / 2; var centerY = (extent[1] + extent[3]) / 2; if(this.ratio_ != 1) { var halfWidth = this.ratio_ * ol.extent.getWidth(extent) / 2; var halfHeight = this.ratio_ * ol.extent.getHeight(extent) / 2; extent[0] = centerX - halfWidth; extent[1] = centerY - halfHeight; extent[2] = centerX + halfWidth; extent[3] = centerY + halfHeight } var imageResolution = resolution / pixelRatio; var width = Math.ceil(ol.extent.getWidth(extent) / imageResolution); var height = Math.ceil(ol.extent.getHeight(extent) / imageResolution); extent[0] = centerX - imageResolution * width / 2; extent[2] = centerX + imageResolution * width / 2; extent[1] = centerY - imageResolution * height / 2; extent[3] = centerY + imageResolution * height / 2; this.imageSize_[0] = width; this.imageSize_[1] = height; var url = this.getRequestUrl_(extent, this.imageSize_, pixelRatio, projection, params); this.image_ = new ol.Image(extent, resolution, pixelRatio, this.getAttributions(), url, this.crossOrigin_); this.renderedProjection_ = projection; this.renderedResolution_ = resolution; this.renderedRevision_ = this.getRevision(); return this.image_ }; ol.source.ImageWMS.prototype.getRequestUrl_ = function(extent, size, pixelRatio, projection, params) { goog.asserts.assert(goog.isDef(this.url_)); params[this.v13_ ? "CRS" : "SRS"] = projection.getCode(); if(!("STYLES" in this.params_)) { goog.object.set(params, "STYLES", new String("")) } if(pixelRatio != 1) { switch(this.serverType_) { case ol.source.wms.ServerType.GEOSERVER: var dpi = 90 * pixelRatio + 0.5 | 0; goog.object.set(params, "FORMAT_OPTIONS", "dpi:" + dpi); break; case ol.source.wms.ServerType.MAPSERVER: goog.object.set(params, "MAP_RESOLUTION", 90 * pixelRatio); break; case ol.source.wms.ServerType.CARMENTA_SERVER: ; case ol.source.wms.ServerType.QGIS: goog.object.set(params, "DPI", 90 * pixelRatio); break; default: goog.asserts.fail(); break } } goog.object.set(params, "WIDTH", size[0]); goog.object.set(params, "HEIGHT", size[1]); var axisOrientation = projection.getAxisOrientation(); var bbox; if(this.v13_ && axisOrientation.substr(0, 2) == "ne") { bbox = [extent[1], extent[0], extent[3], extent[2]] }else { bbox = extent } goog.object.set(params, "BBOX", bbox.join(",")); return goog.uri.utils.appendParamsFromMap(this.url_, params) }; ol.source.ImageWMS.prototype.getUrl = function() { return this.url_ }; ol.source.ImageWMS.prototype.setUrl = function(url) { if(url != this.url_) { this.url_ = url; this.image_ = null; this.dispatchChangeEvent() } }; ol.source.ImageWMS.prototype.updateParams = function(params) { goog.object.extend(this.params_, params); this.updateV13_(); this.image_ = null; this.dispatchChangeEvent() }; ol.source.ImageWMS.prototype.updateV13_ = function() { var version = goog.object.get(this.params_, "VERSION", ol.DEFAULT_WMS_VERSION); this.v13_ = goog.string.compareVersions(version, "1.3") >= 0 }; goog.provide("ol.source.KML"); goog.require("ol.format.KML"); goog.require("ol.source.StaticVector"); ol.source.KML = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, {attributions:options.attributions, doc:options.doc, extent:options.extent, format:new ol.format.KML({defaultStyle:options.defaultStyle}), logo:options.logo, node:options.node, projection:options.projection, text:options.text, url:options.url, urls:options.urls}) }; goog.inherits(ol.source.KML, ol.source.StaticVector); goog.provide("ol.ImageUrlFunction"); goog.provide("ol.ImageUrlFunctionType"); goog.require("ol.Size"); ol.ImageUrlFunctionType; ol.ImageUrlFunction.createFromParamsFunction = function(baseUrl, params, paramsFunction) { return function(extent, size, projection) { return paramsFunction(baseUrl, params, extent, size, projection) } }; ol.ImageUrlFunction.nullImageUrlFunction = function(extent, size) { return undefined }; goog.provide("ol.source.MapGuide"); goog.require("goog.object"); goog.require("goog.uri.utils"); goog.require("ol.Image"); goog.require("ol.ImageUrlFunction"); goog.require("ol.extent"); goog.require("ol.source.Image"); ol.source.MapGuide = function(options) { goog.base(this, {extent:options.extent, projection:options.projection, resolutions:options.resolutions}); this.crossOrigin_ = goog.isDef(options.crossOrigin) ? options.crossOrigin : null; this.displayDpi_ = goog.isDef(options.displayDpi) ? options.displayDpi : 96; var imageUrlFunction; if(goog.isDef(options.url)) { var params = goog.isDef(options.params) ? options.params : {}; imageUrlFunction = ol.ImageUrlFunction.createFromParamsFunction(options.url, params, goog.bind(this.getUrl, this)) }else { imageUrlFunction = ol.ImageUrlFunction.nullImageUrlFunction } this.imageUrlFunction_ = imageUrlFunction; this.hidpi_ = goog.isDef(options.hidpi) ? options.hidpi : true; this.metersPerUnit_ = goog.isDef(options.metersPerUnit) ? options.metersPerUnit : 1; this.ratio_ = goog.isDef(options.ratio) ? options.ratio : 1; this.useOverlay_ = goog.isDef(options.useOverlay) ? options.useOverlay : false; this.image_ = null }; goog.inherits(ol.source.MapGuide, ol.source.Image); ol.source.MapGuide.prototype.getImage = function(extent, resolution, pixelRatio, projection) { resolution = this.findNearestResolution(resolution); pixelRatio = this.hidpi_ ? pixelRatio : 1; var image = this.image_; if(!goog.isNull(image) && image.getResolution() == resolution && image.getPixelRatio() == pixelRatio && ol.extent.containsExtent(image.getExtent(), extent)) { return image } if(this.ratio_ != 1) { extent = extent.slice(); ol.extent.scaleFromCenter(extent, this.ratio_) } var width = ol.extent.getWidth(extent) / resolution; var height = ol.extent.getHeight(extent) / resolution; var size = [width * pixelRatio, height * pixelRatio]; var imageUrl = this.imageUrlFunction_(extent, size, projection); if(goog.isDef(imageUrl)) { image = new ol.Image(extent, resolution, pixelRatio, this.getAttributions(), imageUrl, this.crossOrigin_) }else { image = null } this.image_ = image; return image }; ol.source.MapGuide.getScale = function(extent, size, metersPerUnit, dpi) { var mcsW = ol.extent.getWidth(extent); var mcsH = ol.extent.getHeight(extent); var devW = size[0]; var devH = size[1]; var mpp = 0.0254 / dpi; if(devH * mcsW > devW * mcsH) { return mcsW * metersPerUnit / (devW * mpp) }else { return mcsH * metersPerUnit / (devH * mpp) } }; ol.source.MapGuide.prototype.getUrl = function(baseUrl, params, extent, size, projection) { var scale = ol.source.MapGuide.getScale(extent, size, this.metersPerUnit_, this.displayDpi_); var center = ol.extent.getCenter(extent); var baseParams = {"OPERATION":this.useOverlay_ ? "GETDYNAMICMAPOVERLAYIMAGE" : "GETMAPIMAGE", "VERSION":"2.0.0", "LOCALE":"en", "CLIENTAGENT":"ol.source.MapGuide source", "CLIP":"1", "SETDISPLAYDPI":this.displayDpi_, "SETDISPLAYWIDTH":Math.round(size[0]), "SETDISPLAYHEIGHT":Math.round(size[1]), "SETVIEWSCALE":scale, "SETVIEWCENTERX":center[0], "SETVIEWCENTERY":center[1]}; goog.object.extend(baseParams, params); return goog.uri.utils.appendParamsFromMap(baseUrl, baseParams) }; goog.provide("ol.source.XYZ"); goog.require("ol.Attribution"); goog.require("ol.TileUrlFunction"); goog.require("ol.TileUrlFunctionType"); goog.require("ol.source.TileImage"); goog.require("ol.tilegrid.XYZ"); ol.source.XYZ = function(options) { var projection = goog.isDef(options.projection) ? options.projection : "EPSG:3857"; var maxZoom = goog.isDef(options.maxZoom) ? options.maxZoom : 18; var tileGrid = new ol.tilegrid.XYZ({maxZoom:maxZoom}); goog.base(this, {attributions:options.attributions, crossOrigin:options.crossOrigin, extent:options.extent, logo:options.logo, projection:projection, tileGrid:tileGrid, tileLoadFunction:options.tileLoadFunction, tileUrlFunction:ol.TileUrlFunction.nullTileUrlFunction}); this.tileCoordTransform_ = tileGrid.createTileCoordTransform({extent:options.extent, wrapX:options.wrapX}); if(goog.isDef(options.tileUrlFunction)) { this.setTileUrlFunction(options.tileUrlFunction) }else { if(goog.isDef(options.urls)) { this.setUrls(options.urls) }else { if(goog.isDef(options.url)) { this.setUrl(options.url) } } } }; goog.inherits(ol.source.XYZ, ol.source.TileImage); ol.source.XYZ.prototype.setTileUrlFunction = function(tileUrlFunction) { goog.base(this, "setTileUrlFunction", ol.TileUrlFunction.withTileCoordTransform(this.tileCoordTransform_, tileUrlFunction)) }; ol.source.XYZ.prototype.setUrl = function(url) { this.setTileUrlFunction(ol.TileUrlFunction.createFromTemplates(ol.TileUrlFunction.expandUrl(url))) }; ol.source.XYZ.prototype.setUrls = function(urls) { this.setTileUrlFunction(ol.TileUrlFunction.createFromTemplates(urls)) }; goog.provide("ol.source.OSM"); goog.require("ol"); goog.require("ol.Attribution"); goog.require("ol.source.XYZ"); ol.source.OSM = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var attributions; if(goog.isDef(options.attributions)) { attributions = options.attributions }else { attributions = ol.source.OSM.ATTRIBUTIONS } var crossOrigin = goog.isDef(options.crossOrigin) ? options.crossOrigin : "anonymous"; var protocol = ol.IS_HTTPS ? "https:" : "http:"; var url = goog.isDef(options.url) ? options.url : protocol + "//{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png"; goog.base(this, {attributions:attributions, crossOrigin:crossOrigin, opaque:true, maxZoom:options.maxZoom, tileLoadFunction:options.tileLoadFunction, url:url}) }; goog.inherits(ol.source.OSM, ol.source.XYZ); ol.source.OSM.DATA_ATTRIBUTION = new ol.Attribution({html:"Data \x26copy; " + '\x3ca href\x3d"http://www.openstreetmap.org/"\x3eOpenStreetMap\x3c/a\x3e ' + "contributors, " + '\x3ca href\x3d"http://www.openstreetmap.org/copyright"\x3eODbL\x3c/a\x3e'}); ol.source.OSM.TILE_ATTRIBUTION = new ol.Attribution({html:"Tiles \x26copy; " + '\x3ca href\x3d"http://www.openstreetmap.org/"\x3eOpenStreetMap\x3c/a\x3e ' + "contributors, " + '\x3ca href\x3d"http://creativecommons.org/licenses/by-sa/2.0/"\x3eCC BY-SA\x3c/a\x3e'}); ol.source.OSM.ATTRIBUTIONS = [ol.source.OSM.TILE_ATTRIBUTION, ol.source.OSM.DATA_ATTRIBUTION]; goog.provide("ol.source.MapQuest"); goog.require("goog.asserts"); goog.require("ol"); goog.require("ol.Attribution"); goog.require("ol.source.OSM"); goog.require("ol.source.XYZ"); ol.source.MapQuest = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.asserts.assert(options.layer in ol.source.MapQuestConfig); var layerConfig = ol.source.MapQuestConfig[options.layer]; var protocol = ol.IS_HTTPS ? "https:" : "http:"; var url = protocol + "//otile{1-4}-s.mqcdn.com/tiles/1.0.0/" + options.layer + "/{z}/{x}/{y}.jpg"; goog.base(this, {attributions:layerConfig.attributions, crossOrigin:"anonymous", logo:"//developer.mapquest.com/content/osm/mq_logo.png", maxZoom:layerConfig.maxZoom, opaque:true, tileLoadFunction:options.tileLoadFunction, url:url}) }; goog.inherits(ol.source.MapQuest, ol.source.XYZ); ol.source.MapQuest.TILE_ATTRIBUTION = new ol.Attribution({html:"Tiles Courtesy of " + '\x3ca href\x3d"http://www.mapquest.com/" target\x3d"_blank"\x3eMapQuest\x3c/a\x3e'}); ol.source.MapQuestConfig = {"osm":{maxZoom:28, attributions:[ol.source.MapQuest.TILE_ATTRIBUTION, ol.source.OSM.DATA_ATTRIBUTION]}, "sat":{maxZoom:18, attributions:[ol.source.MapQuest.TILE_ATTRIBUTION, new ol.Attribution({html:"Portions Courtesy NASA/JPL-Caltech and " + "U.S. Depart. of Agriculture, Farm Service Agency"})]}, "hyb":{maxZoom:18, attributions:[ol.source.MapQuest.TILE_ATTRIBUTION, ol.source.OSM.DATA_ATTRIBUTION]}}; goog.provide("ol.source.OSMXML"); goog.require("ol.format.OSMXML"); goog.require("ol.source.StaticVector"); ol.source.OSMXML = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, {attributions:options.attributions, doc:options.doc, extent:options.extent, format:new ol.format.OSMXML, logo:options.logo, node:options.node, projection:options.projection, reprojectTo:options.reprojectTo, text:options.text, url:options.url}) }; goog.inherits(ol.source.OSMXML, ol.source.StaticVector); goog.provide("ol.source.ServerVector"); goog.require("ol.extent"); goog.require("ol.loadingstrategy"); goog.require("ol.source.FormatVector"); goog.require("ol.structs.RBush"); ol.source.ServerVector = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, format:options.format, logo:options.logo, projection:options.projection}); this.loadedExtents_ = new ol.structs.RBush; this.loader_ = options.loader; this.strategy_ = goog.isDef(options.strategy) ? options.strategy : ol.loadingstrategy.bbox; this.loadedFeatures_ = {} }; goog.inherits(ol.source.ServerVector, ol.source.FormatVector); ol.source.ServerVector.prototype.addFeaturesInternal = function(features) { var notLoadedFeatures = []; var i, ii; for(i = 0, ii = features.length;i < ii;++i) { var feature = features[i]; var featureId = feature.getId(); if(!(featureId in this.loadedFeatures_)) { notLoadedFeatures.push(feature); this.loadedFeatures_[featureId] = true } } goog.base(this, "addFeaturesInternal", notLoadedFeatures) }; ol.source.ServerVector.prototype.loadFeatures = function(extent, resolution, projection) { var loadedExtents = this.loadedExtents_; var extentsToLoad = this.strategy_(extent, resolution); var i, ii; for(i = 0, ii = extentsToLoad.length;i < ii;++i) { var extentToLoad = extentsToLoad[i]; var alreadyLoaded = loadedExtents.forEachInExtent(extentToLoad, function(object) { return ol.extent.containsExtent(object.extent, extentToLoad) }); if(!alreadyLoaded) { this.loader_.call(this, extentToLoad, resolution, projection); loadedExtents.insert(extentToLoad, {extent:extentToLoad.slice()}) } } }; ol.source.ServerVector.prototype.readFeatures; goog.provide("ol.source.Stamen"); goog.require("goog.asserts"); goog.require("ol"); goog.require("ol.Attribution"); goog.require("ol.source.OSM"); goog.require("ol.source.XYZ"); ol.source.StamenLayerConfig = {"terrain":{extension:"jpg", opaque:true}, "terrain-background":{extension:"jpg", opaque:true}, "terrain-labels":{extension:"png", opaque:false}, "terrain-lines":{extension:"png", opaque:false}, "toner-background":{extension:"png", opaque:true}, "toner":{extension:"png", opaque:true}, "toner-hybrid":{extension:"png", opaque:false}, "toner-labels":{extension:"png", opaque:false}, "toner-lines":{extension:"png", opaque:false}, "toner-lite":{extension:"png", opaque:true}, "watercolor":{extension:"jpg", opaque:true}}; ol.source.StamenProviderConfig = {"terrain":{minZoom:4, maxZoom:18}, "toner":{minZoom:0, maxZoom:20}, "watercolor":{minZoom:3, maxZoom:16}}; ol.source.Stamen = function(options) { var i = options.layer.indexOf("-"); var provider = i == -1 ? options.layer : options.layer.slice(0, i); goog.asserts.assert(provider in ol.source.StamenProviderConfig); var providerConfig = ol.source.StamenProviderConfig[provider]; goog.asserts.assert(options.layer in ol.source.StamenLayerConfig); var layerConfig = ol.source.StamenLayerConfig[options.layer]; var protocol = ol.IS_HTTPS ? "https:" : "http:"; var url = goog.isDef(options.url) ? options.url : protocol + "//{a-d}.tile.stamen.com/" + options.layer + "/{z}/{x}/{y}." + layerConfig.extension; goog.base(this, {attributions:ol.source.Stamen.ATTRIBUTIONS, crossOrigin:"anonymous", maxZoom:providerConfig.maxZoom, opaque:layerConfig.opaque, tileLoadFunction:options.tileLoadFunction, url:url}) }; goog.inherits(ol.source.Stamen, ol.source.XYZ); ol.source.Stamen.ATTRIBUTIONS = [new ol.Attribution({html:'Map tiles by \x3ca href\x3d"http://stamen.com/"\x3eStamen Design\x3c/a\x3e, ' + 'under \x3ca href\x3d"http://creativecommons.org/licenses/by/3.0/"\x3eCC BY' + " 3.0\x3c/a\x3e."}), ol.source.OSM.DATA_ATTRIBUTION]; goog.provide("ol.source.TileDebug"); goog.require("ol.Tile"); goog.require("ol.TileCache"); goog.require("ol.TileCoord"); goog.require("ol.TileState"); goog.require("ol.dom"); goog.require("ol.source.Tile"); goog.require("ol.tilegrid.TileGrid"); ol.DebugTile_ = function(tileCoord, tileGrid) { goog.base(this, tileCoord, ol.TileState.LOADED); this.tileCoord_ = tileCoord; this.tileSize_ = tileGrid.getTileSize(tileCoord.z); this.canvasByContext_ = {} }; goog.inherits(ol.DebugTile_, ol.Tile); ol.DebugTile_.prototype.getImage = function(opt_context) { var key = goog.isDef(opt_context) ? goog.getUid(opt_context) : -1; if(key in this.canvasByContext_) { return this.canvasByContext_[key] }else { var tileSize = this.tileSize_; var context = ol.dom.createCanvasContext2D(tileSize, tileSize); context.strokeStyle = "black"; context.strokeRect(0.5, 0.5, tileSize + 0.5, tileSize + 0.5); context.fillStyle = "black"; context.textAlign = "center"; context.textBaseline = "middle"; context.font = "24px sans-serif"; context.fillText(this.tileCoord_.toString(), tileSize / 2, tileSize / 2); this.canvasByContext_[key] = context.canvas; return context.canvas } }; ol.source.TileDebug = function(options) { goog.base(this, {extent:options.extent, opaque:false, projection:options.projection, tileGrid:options.tileGrid}); this.tileCache_ = new ol.TileCache }; goog.inherits(ol.source.TileDebug, ol.source.Tile); ol.source.TileDebug.prototype.canExpireCache = function() { return this.tileCache_.canExpireCache() }; ol.source.TileDebug.prototype.expireCache = function(usedTiles) { this.tileCache_.expireCache(usedTiles) }; ol.source.TileDebug.prototype.getTile = function(z, x, y) { var tileCoordKey = this.getKeyZXY(z, x, y); if(this.tileCache_.containsKey(tileCoordKey)) { return(this.tileCache_.get(tileCoordKey)) }else { var tile = new ol.DebugTile_(new ol.TileCoord(z, x, y), this.tileGrid); this.tileCache_.set(tileCoordKey, tile); return tile } }; goog.provide("ol.source.TileJSON"); goog.provide("ol.tilejson"); goog.require("goog.asserts"); goog.require("goog.net.Jsonp"); goog.require("ol.Attribution"); goog.require("ol.TileRange"); goog.require("ol.TileUrlFunction"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.source.State"); goog.require("ol.source.TileImage"); goog.require("ol.tilegrid.XYZ"); ol.source.TileJSON = function(options) { goog.base(this, {crossOrigin:options.crossOrigin, projection:ol.proj.get("EPSG:3857"), state:ol.source.State.LOADING, tileLoadFunction:options.tileLoadFunction}); var request = new goog.net.Jsonp(options.url); request.send(undefined, goog.bind(this.handleTileJSONResponse, this)) }; goog.inherits(ol.source.TileJSON, ol.source.TileImage); ol.source.TileJSON.prototype.handleTileJSONResponse = function(tileJSON) { var epsg4326Projection = ol.proj.get("EPSG:4326"); var extent; if(goog.isDef(tileJSON.bounds)) { var transform = ol.proj.getTransformFromProjections(epsg4326Projection, this.getProjection()); extent = ol.extent.transform(tileJSON.bounds, transform); this.setExtent(extent) } if(goog.isDef(tileJSON.scheme)) { goog.asserts.assert(tileJSON.scheme == "xyz") } var minZoom = tileJSON.minzoom || 0; var maxZoom = tileJSON.maxzoom || 22; var tileGrid = new ol.tilegrid.XYZ({maxZoom:maxZoom, minZoom:minZoom}); this.tileGrid = tileGrid; this.tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(tileGrid.createTileCoordTransform({extent:extent}), ol.TileUrlFunction.createFromTemplates(tileJSON.tiles)); if(goog.isDef(tileJSON.attribution)) { var attributionExtent = goog.isDef(extent) ? extent : epsg4326Projection.getExtent(); var tileRanges = {}; var z, zKey; for(z = minZoom;z <= maxZoom;++z) { zKey = z.toString(); tileRanges[zKey] = [tileGrid.getTileRangeForExtentAndZ(attributionExtent, z)] } this.setAttributions([new ol.Attribution({html:tileJSON.attribution, tileRanges:tileRanges})]) } this.setState(ol.source.State.READY) }; goog.provide("ol.source.TileVector"); goog.require("goog.array"); goog.require("goog.object"); goog.require("ol.TileCoord"); goog.require("ol.TileUrlFunction"); goog.require("ol.source.FormatVector"); goog.require("ol.source.State"); goog.require("ol.tilegrid.TileGrid"); ol.source.TileVector = function(options) { goog.base(this, {attributions:options.attributions, extent:options.extent, format:options.format, logo:options.logo, projection:options.projection}); var tileGrid = options.tileGrid; this.tileGrid_ = options.tileGrid; this.tileUrlFunction_ = ol.TileUrlFunction.nullTileUrlFunction; this.tileCoordTransform_ = tileGrid.createTileCoordTransform({extent:options.extent}); this.tiles_ = {}; if(goog.isDef(options.tileUrlFunction)) { this.setTileUrlFunction(options.tileUrlFunction) }else { if(goog.isDef(options.urls)) { this.setUrls(options.urls) }else { if(goog.isDef(options.url)) { this.setUrl(options.url) } } } }; goog.inherits(ol.source.TileVector, ol.source.FormatVector); ol.source.TileVector.prototype.addFeature = goog.abstractMethod; ol.source.TileVector.prototype.addFeatures = goog.abstractMethod; ol.source.TileVector.prototype.clear = function() { goog.object.clear(this.tiles_) }; ol.source.TileVector.prototype.forEachFeature = goog.abstractMethod; ol.source.TileVector.prototype.forEachFeatureInExtent = goog.abstractMethod; ol.source.TileVector.prototype.forEachFeatureInExtentAtResolution = function(extent, resolution, f, opt_this) { var tileGrid = this.tileGrid_; var tiles = this.tiles_; var z = tileGrid.getZForResolution(resolution); var tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z); var x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { var tileKey = this.getTileKeyZXY_(z, x, y); var features = tiles[tileKey]; if(goog.isDef(features)) { var i, ii; for(i = 0, ii = features.length;i < ii;++i) { var result = f.call(opt_this, features[i]); if(result) { return result } } } } } return undefined }; ol.source.TileVector.prototype.getClosestFeatureToCoordinate = goog.abstractMethod; ol.source.TileVector.prototype.getExtent = goog.abstractMethod; ol.source.TileVector.prototype.getFeatures = function() { var tiles = this.tiles_; var features = []; var tileKey; for(tileKey in tiles) { goog.array.extend(features, tiles[tileKey]) } return features }; ol.source.TileVector.prototype.getFeaturesInExtent = goog.abstractMethod; ol.source.TileVector.prototype.getTileKeyZXY_ = function(z, x, y) { return z + "/" + x + "/" + y }; ol.source.TileVector.prototype.loadFeatures = function(extent, resolution, projection) { var tileCoordTransform = this.tileCoordTransform_; var tileGrid = this.tileGrid_; var tileUrlFunction = this.tileUrlFunction_; var tiles = this.tiles_; var z = tileGrid.getZForResolution(resolution); var tileRange = tileGrid.getTileRangeForExtentAndZ(extent, z); var tileCoord = new ol.TileCoord(z, 0, 0); var x, y; for(x = tileRange.minX;x <= tileRange.maxX;++x) { for(y = tileRange.minY;y <= tileRange.maxY;++y) { var tileKey = this.getTileKeyZXY_(z, x, y); if(!(tileKey in tiles)) { tileCoord.z = z; tileCoord.x = x; tileCoord.y = y; tileCoordTransform(tileCoord, projection, tileCoord); var url = tileUrlFunction(tileCoord, 1, projection); if(goog.isDef(url)) { tiles[tileKey] = []; this.loadFeaturesFromURL(url, goog.partial(function(tileKey, features) { tiles[tileKey] = features; this.setState(ol.source.State.READY) }, tileKey), this) } } } } }; ol.source.TileVector.prototype.removeFeature = goog.abstractMethod; ol.source.TileVector.prototype.setTileUrlFunction = function(tileUrlFunction) { this.tileUrlFunction_ = tileUrlFunction; this.dispatchChangeEvent() }; ol.source.TileVector.prototype.setUrl = function(url) { this.setTileUrlFunction(ol.TileUrlFunction.createFromTemplates(ol.TileUrlFunction.expandUrl(url))) }; ol.source.TileVector.prototype.setUrls = function(urls) { this.setTileUrlFunction(ol.TileUrlFunction.createFromTemplates(urls)) }; goog.provide("ol.source.TileWMS"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.math"); goog.require("goog.object"); goog.require("goog.string"); goog.require("goog.uri.utils"); goog.require("ol"); goog.require("ol.TileCoord"); goog.require("ol.TileUrlFunction"); goog.require("ol.extent"); goog.require("ol.source.TileImage"); goog.require("ol.source.wms"); goog.require("ol.source.wms.ServerType"); ol.source.TileWMS = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var params = goog.isDef(options.params) ? options.params : {}; var transparent = goog.object.get(params, "TRANSPARENT", true); goog.base(this, {attributions:options.attributions, crossOrigin:options.crossOrigin, extent:options.extent, logo:options.logo, opaque:!transparent, projection:options.projection, tileGrid:options.tileGrid, tileLoadFunction:options.tileLoadFunction, tileUrlFunction:goog.bind(this.tileUrlFunction_, this)}); var urls = options.urls; if(!goog.isDef(urls) && goog.isDef(options.url)) { urls = ol.TileUrlFunction.expandUrl(options.url) } this.urls_ = urls; this.gutter_ = goog.isDef(options.gutter) ? options.gutter : 0; this.params_ = params; this.pixelRatio_ = NaN; this.v13_ = true; this.serverType_ = (options.serverType); this.hidpi_ = goog.isDef(options.hidpi) ? options.hidpi : true; this.coordKeyPrefix_ = ""; this.resetCoordKeyPrefix_(); this.tmpExtent_ = ol.extent.createEmpty(); this.updateV13_() }; goog.inherits(ol.source.TileWMS, ol.source.TileImage); ol.source.TileWMS.prototype.getGetFeatureInfoUrl = function(coordinate, resolution, projection, params) { goog.asserts.assert(!("VERSION" in params)); var pixelRatio = this.pixelRatio_; if(isNaN(this.pixelRatio_)) { return undefined } var tileGrid = this.getTileGrid(); if(goog.isNull(tileGrid)) { tileGrid = this.getTileGridForProjection(projection) } var tileCoord = tileGrid.getTileCoordForCoordAndResolution(coordinate, resolution); if(tileGrid.getResolutions().length <= tileCoord.z) { return undefined } var tileResolution = tileGrid.getResolution(tileCoord.z); var tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent_); var tileSize = tileGrid.getTileSize(tileCoord.z); var gutter = this.gutter_; if(gutter !== 0) { tileSize += 2 * gutter; tileExtent = ol.extent.buffer(tileExtent, tileResolution * gutter, tileExtent) } if(pixelRatio != 1) { tileSize = tileSize * pixelRatio + 0.5 | 0 } var baseParams = {"SERVICE":"WMS", "VERSION":ol.DEFAULT_WMS_VERSION, "REQUEST":"GetFeatureInfo", "FORMAT":"image/png", "TRANSPARENT":true, "QUERY_LAYERS":goog.object.get(this.params_, "LAYERS")}; goog.object.extend(baseParams, this.params_, params); var x = Math.floor((coordinate[0] - tileExtent[0]) / (tileResolution / pixelRatio)); var y = Math.floor((tileExtent[3] - coordinate[1]) / (tileResolution / pixelRatio)); goog.object.set(baseParams, this.v13_ ? "I" : "X", x); goog.object.set(baseParams, this.v13_ ? "J" : "Y", y); return this.getRequestUrl_(tileCoord, tileSize, tileExtent, pixelRatio, projection, baseParams) }; ol.source.TileWMS.prototype.getGutter = function() { return this.gutter_ }; ol.source.TileWMS.prototype.getKeyZXY = function(z, x, y) { return this.coordKeyPrefix_ + goog.base(this, "getKeyZXY", z, x, y) }; ol.source.TileWMS.prototype.getParams = function() { return this.params_ }; ol.source.TileWMS.prototype.getRequestUrl_ = function(tileCoord, tileSize, tileExtent, pixelRatio, projection, params) { var urls = this.urls_; if(!goog.isDef(urls) || goog.array.isEmpty(urls)) { return undefined } goog.object.set(params, "WIDTH", tileSize); goog.object.set(params, "HEIGHT", tileSize); params[this.v13_ ? "CRS" : "SRS"] = projection.getCode(); if(!("STYLES" in this.params_)) { goog.object.set(params, "STYLES", new String("")) } if(pixelRatio != 1) { switch(this.serverType_) { case ol.source.wms.ServerType.GEOSERVER: var dpi = 90 * pixelRatio + 0.5 | 0; goog.object.set(params, "FORMAT_OPTIONS", "dpi:" + dpi); break; case ol.source.wms.ServerType.MAPSERVER: goog.object.set(params, "MAP_RESOLUTION", 90 * pixelRatio); break; case ol.source.wms.ServerType.CARMENTA_SERVER: ; case ol.source.wms.ServerType.QGIS: goog.object.set(params, "DPI", 90 * pixelRatio); break; default: goog.asserts.fail(); break } } var axisOrientation = projection.getAxisOrientation(); var bbox = tileExtent; if(this.v13_ && axisOrientation.substr(0, 2) == "ne") { var tmp; tmp = tileExtent[0]; bbox[0] = tileExtent[1]; bbox[1] = tmp; tmp = tileExtent[2]; bbox[2] = tileExtent[3]; bbox[3] = tmp } goog.object.set(params, "BBOX", bbox.join(",")); var url; if(urls.length == 1) { url = urls[0] }else { var index = goog.math.modulo(tileCoord.hash(), this.urls_.length); url = urls[index] } return goog.uri.utils.appendParamsFromMap(url, params) }; ol.source.TileWMS.prototype.getTilePixelSize = function(z, pixelRatio, projection) { var tileSize = goog.base(this, "getTilePixelSize", z, pixelRatio, projection); if(pixelRatio == 1 || !this.hidpi_ || !goog.isDef(this.serverType_)) { return tileSize }else { return tileSize * pixelRatio + 0.5 | 0 } }; ol.source.TileWMS.prototype.getUrls = function() { return this.urls_ }; ol.source.TileWMS.prototype.resetCoordKeyPrefix_ = function() { var i = 0; var res = []; for(var key in this.params_) { res[i++] = key + "-" + this.params_[key] } this.coordKeyPrefix_ = res.join("/") }; ol.source.TileWMS.prototype.tileUrlFunction_ = function(tileCoord, pixelRatio, projection) { var tileGrid = this.getTileGrid(); if(goog.isNull(tileGrid)) { tileGrid = this.getTileGridForProjection(projection) } if(tileGrid.getResolutions().length <= tileCoord.z) { return undefined } if(pixelRatio != 1 && (!this.hidpi_ || !goog.isDef(this.serverType_))) { pixelRatio = 1 } var tileResolution = tileGrid.getResolution(tileCoord.z); var tileExtent = tileGrid.getTileCoordExtent(tileCoord, this.tmpExtent_); var tileSize = tileGrid.getTileSize(tileCoord.z); var gutter = this.gutter_; if(gutter !== 0) { tileSize += 2 * gutter; tileExtent = ol.extent.buffer(tileExtent, tileResolution * gutter, tileExtent) } var extent = this.getExtent(); if(!goog.isNull(extent) && (!ol.extent.intersects(tileExtent, extent) || ol.extent.touches(tileExtent, extent))) { return undefined } if(pixelRatio != 1) { tileSize = tileSize * pixelRatio + 0.5 | 0 } var baseParams = {"SERVICE":"WMS", "VERSION":ol.DEFAULT_WMS_VERSION, "REQUEST":"GetMap", "FORMAT":"image/png", "TRANSPARENT":true}; goog.object.extend(baseParams, this.params_); this.pixelRatio_ = pixelRatio; return this.getRequestUrl_(tileCoord, tileSize, tileExtent, pixelRatio, projection, baseParams) }; ol.source.TileWMS.prototype.updateParams = function(params) { goog.object.extend(this.params_, params); this.resetCoordKeyPrefix_(); this.updateV13_(); this.dispatchChangeEvent() }; ol.source.TileWMS.prototype.updateV13_ = function() { var version = goog.object.get(this.params_, "VERSION", ol.DEFAULT_WMS_VERSION); this.v13_ = goog.string.compareVersions(version, "1.3") >= 0 }; goog.provide("ol.source.TopoJSON"); goog.require("ol.format.TopoJSON"); goog.require("ol.source.StaticVector"); ol.source.TopoJSON = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; goog.base(this, {attributions:options.attributions, extent:options.extent, format:new ol.format.TopoJSON({defaultProjection:options.defaultProjection}), logo:options.logo, object:options.object, projection:options.projection, text:options.text, url:options.url}) }; goog.inherits(ol.source.TopoJSON, ol.source.StaticVector); goog.provide("ol.tilegrid.WMTS"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol.proj"); goog.require("ol.tilegrid.TileGrid"); ol.tilegrid.WMTS = function(options) { goog.asserts.assert(options.resolutions.length == options.matrixIds.length); this.matrixIds_ = options.matrixIds; goog.base(this, {origin:options.origin, origins:options.origins, resolutions:options.resolutions, tileSize:options.tileSize, tileSizes:options.tileSizes}) }; goog.inherits(ol.tilegrid.WMTS, ol.tilegrid.TileGrid); ol.tilegrid.WMTS.prototype.getMatrixId = function(z) { goog.asserts.assert(0 <= z && z < this.matrixIds_.length); return this.matrixIds_[z] }; ol.tilegrid.WMTS.prototype.getMatrixIds = function() { return this.matrixIds_ }; ol.tilegrid.WMTS.createFromCapabilitiesMatrixSet = function(matrixSet) { var resolutions = []; var matrixIds = []; var origins = []; var tileSizes = []; var supportedCRSPropName = "supportedCRS"; var matrixIdsPropName = "matrixIds"; var identifierPropName = "identifier"; var scaleDenominatorPropName = "scaleDenominator"; var topLeftCornerPropName = "topLeftCorner"; var tileWidthPropName = "tileWidth"; var tileHeightPropName = "tileHeight"; var projection = ol.proj.get(matrixSet[supportedCRSPropName]); var metersPerUnit = projection.getMetersPerUnit(); goog.array.sort(matrixSet[matrixIdsPropName], function(a, b) { return b[scaleDenominatorPropName] - a[scaleDenominatorPropName] }); goog.array.forEach(matrixSet[matrixIdsPropName], function(elt, index, array) { matrixIds.push(elt[identifierPropName]); origins.push(elt[topLeftCornerPropName]); resolutions.push(elt[scaleDenominatorPropName] * 2.8E-4 / metersPerUnit); var tileWidth = elt[tileWidthPropName]; var tileHeight = elt[tileHeightPropName]; goog.asserts.assert(tileWidth == tileHeight); tileSizes.push(tileWidth) }); return new ol.tilegrid.WMTS({origins:origins, resolutions:resolutions, matrixIds:matrixIds, tileSizes:tileSizes}) }; goog.provide("ol.source.WMTS"); goog.provide("ol.source.WMTSRequestEncoding"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("goog.math"); goog.require("goog.object"); goog.require("goog.uri.utils"); goog.require("ol.TileCoord"); goog.require("ol.TileUrlFunction"); goog.require("ol.TileUrlFunctionType"); goog.require("ol.extent"); goog.require("ol.proj"); goog.require("ol.source.TileImage"); goog.require("ol.tilegrid.WMTS"); ol.source.WMTSRequestEncoding = {KVP:"KVP", REST:"REST"}; ol.source.WMTS = function(options) { var version = goog.isDef(options.version) ? options.version : "1.0.0"; var format = goog.isDef(options.format) ? options.format : "image/jpeg"; this.dimensions_ = goog.isDef(options.dimensions) ? options.dimensions : {}; this.coordKeyPrefix_ = ""; this.resetCoordKeyPrefix_(); var requestEncoding = goog.isDef(options.requestEncoding) ? options.requestEncoding : ol.source.WMTSRequestEncoding.KVP; var tileGrid = options.tileGrid; var context = {"Layer":options.layer, "style":options.style, "Style":options.style, "TileMatrixSet":options.matrixSet}; if(requestEncoding == ol.source.WMTSRequestEncoding.KVP) { goog.object.extend(context, {"Service":"WMTS", "Request":"GetTile", "Version":version, "Format":format}) } var dimensions = this.dimensions_; function createFromWMTSTemplate(template) { template = requestEncoding == ol.source.WMTSRequestEncoding.KVP ? goog.uri.utils.appendParamsFromMap(template, context) : template.replace(/\{(\w+?)\}/g, function(m, p) { return p in context ? context[p] : m }); return function(tileCoord, pixelRatio, projection) { if(goog.isNull(tileCoord)) { return undefined }else { var localContext = {"TileMatrix":tileGrid.getMatrixId(tileCoord.z), "TileCol":tileCoord.x, "TileRow":tileCoord.y}; goog.object.extend(localContext, dimensions); var url = template; if(requestEncoding == ol.source.WMTSRequestEncoding.KVP) { url = goog.uri.utils.appendParamsFromMap(url, localContext) }else { url = url.replace(/\{(\w+?)\}/g, function(m, p) { return localContext[p] }) } return url } } } var tileUrlFunction = ol.TileUrlFunction.nullTileUrlFunction; var urls = options.urls; if(!goog.isDef(urls) && goog.isDef(options.url)) { urls = ol.TileUrlFunction.expandUrl(options.url) } if(goog.isDef(urls)) { tileUrlFunction = ol.TileUrlFunction.createFromTileUrlFunctions(goog.array.map(urls, createFromWMTSTemplate)) } var tmpExtent = ol.extent.createEmpty(); var tmpTileCoord = new ol.TileCoord(0, 0, 0); tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(function(tileCoord, projection, opt_tileCoord) { goog.asserts.assert(!goog.isNull(tileGrid)); if(tileGrid.getResolutions().length <= tileCoord.z) { return null } var x = tileCoord.x; var y = -tileCoord.y - 1; var tileExtent = tileGrid.getTileCoordExtent(tileCoord); var projectionExtent = projection.getExtent(); var extent = goog.isDef(options.extent) ? options.extent : projectionExtent; if(!goog.isNull(extent) && projection.isGlobal() && extent[0] === projectionExtent[0] && extent[2] === projectionExtent[2]) { var numCols = Math.ceil(ol.extent.getWidth(extent) / ol.extent.getWidth(tileExtent)); x = goog.math.modulo(x, numCols); tmpTileCoord.z = tileCoord.z; tmpTileCoord.x = x; tmpTileCoord.y = tileCoord.y; tileExtent = tileGrid.getTileCoordExtent(tmpTileCoord, tmpExtent) } if(!ol.extent.intersects(tileExtent, extent) || ol.extent.touches(tileExtent, extent)) { return null } return new ol.TileCoord(tileCoord.z, x, y) }, tileUrlFunction); goog.base(this, {attributions:options.attributions, crossOrigin:options.crossOrigin, extent:options.extent, logo:options.logo, projection:options.projection, tileGrid:tileGrid, tileLoadFunction:options.tileLoadFunction, tileUrlFunction:tileUrlFunction}) }; goog.inherits(ol.source.WMTS, ol.source.TileImage); ol.source.WMTS.prototype.getDimensions = function() { return this.dimensions_ }; ol.source.WMTS.prototype.getKeyZXY = function(z, x, y) { return this.coordKeyPrefix_ + goog.base(this, "getKeyZXY", z, x, y) }; ol.source.WMTS.prototype.resetCoordKeyPrefix_ = function() { var i = 0; var res = []; for(var key in this.dimensions_) { res[i++] = key + "-" + this.dimensions_[key] } this.coordKeyPrefix_ = res.join("/") }; ol.source.WMTS.prototype.updateDimensions = function(dimensions) { goog.object.extend(this.dimensions_, dimensions); this.resetCoordKeyPrefix_(); this.dispatchChangeEvent() }; ol.source.WMTS.optionsFromCapabilities = function(wmtsCap, layer) { var layers = wmtsCap["contents"]["layers"]; var l = goog.array.find(layers, function(elt, index, array) { return elt["identifier"] == layer }); goog.asserts.assert(!goog.isNull(l)); goog.asserts.assert(l["tileMatrixSetLinks"].length > 0); var matrixSet = (l["tileMatrixSetLinks"][0]["tileMatrixSet"]); var format = (l["formats"][0]); var idx = goog.array.findIndex(l["styles"], function(elt, index, array) { return elt["isDefault"] }); if(idx < 0) { idx = 0 } var style = (l["styles"][idx]["identifier"]); var dimensions = {}; goog.array.forEach(l["dimensions"], function(elt, index, array) { var key = elt["identifier"]; var value = elt["default"]; if(goog.isDef(value)) { goog.asserts.assert(goog.array.contains(elt["values"], value)) }else { value = elt["values"][0] } goog.asserts.assert(goog.isDef(value)); dimensions[key] = value }); var matrixSets = wmtsCap["contents"]["tileMatrixSets"]; goog.asserts.assert(matrixSet in matrixSets); var matrixSetObj = matrixSets[matrixSet]; var tileGrid = ol.tilegrid.WMTS.createFromCapabilitiesMatrixSet(matrixSetObj); var projection = ol.proj.get(matrixSetObj["supportedCRS"]); var gets = wmtsCap["operationsMetadata"]["GetTile"]["dcp"]["http"]["get"]; var encodings = goog.object.getKeys(gets[0]["constraints"]["GetEncoding"]["allowedValues"]); goog.asserts.assert(encodings.length > 0); var urls; var requestEncoding; switch(encodings[0]) { case "REST": ; case "RESTful": requestEncoding = ol.source.WMTSRequestEncoding.REST; goog.asserts.assert(l["resourceUrls"].hasOwnProperty("tile")); goog.asserts.assert(l["resourceUrls"]["tile"].hasOwnProperty(format)); urls = (l["resourceUrls"]["tile"][format]); break; case "KVP": requestEncoding = ol.source.WMTSRequestEncoding.KVP; urls = []; goog.array.forEach(gets, function(elt, index, array) { if(elt["constraints"]["GetEncoding"]["allowedValues"].hasOwnProperty(ol.source.WMTSRequestEncoding.KVP)) { urls.push((elt["url"])) } }); goog.asserts.assert(urls.length > 0); break; default: goog.asserts.fail() } return{urls:urls, layer:layer, matrixSet:matrixSet, format:format, projection:projection, requestEncoding:requestEncoding, tileGrid:tileGrid, style:style, dimensions:dimensions} }; goog.provide("ol.tilegrid.Zoomify"); goog.require("goog.math"); goog.require("ol.TileCoord"); goog.require("ol.proj"); goog.require("ol.tilegrid.TileGrid"); ol.tilegrid.Zoomify = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : options; goog.base(this, {origin:[0, 0], resolutions:options.resolutions}) }; goog.inherits(ol.tilegrid.Zoomify, ol.tilegrid.TileGrid); ol.tilegrid.Zoomify.prototype.createTileCoordTransform = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var minZ = this.minZoom; var maxZ = this.maxZoom; var tmpTileCoord = new ol.TileCoord(0, 0, 0); var tileRangeByZ = null; if(goog.isDef(options.extent)) { tileRangeByZ = new Array(maxZ + 1); var z; for(z = 0;z <= maxZ;++z) { if(z < minZ) { tileRangeByZ[z] = null }else { tileRangeByZ[z] = this.getTileRangeForExtentAndZ(options.extent, z) } } } return function(tileCoord, projection, opt_tileCoord) { var z = tileCoord.z; if(z < minZ || maxZ < z) { return null } var n = Math.pow(2, z); var x = tileCoord.x; if(x < 0 || n <= x) { return null } var y = tileCoord.y; if(y < -n || -1 < y) { return null } if(!goog.isNull(tileRangeByZ)) { tmpTileCoord.z = z; tmpTileCoord.x = x; tmpTileCoord.y = -y - 1; if(!tileRangeByZ[z].contains(tmpTileCoord)) { return null } } return ol.TileCoord.createOrUpdate(z, x, -y - 1, opt_tileCoord) } }; goog.provide("ol.source.Zoomify"); goog.require("goog.array"); goog.require("goog.asserts"); goog.require("ol"); goog.require("ol.ImageTile"); goog.require("ol.TileCoord"); goog.require("ol.TileState"); goog.require("ol.TileUrlFunction"); goog.require("ol.dom"); goog.require("ol.proj"); goog.require("ol.source.TileImage"); goog.require("ol.tilegrid.Zoomify"); ol.source.ZoomifyTierSizeCalculation = {DEFAULT:"default", TRUNCATED:"truncated"}; ol.source.Zoomify = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; var size = options.size; var tierSizeCalculation = goog.isDef(options.tierSizeCalculation) ? options.tierSizeCalculation : ol.source.ZoomifyTierSizeCalculation.DEFAULT; var imageWidth = size[0]; var imageHeight = size[1]; var tierSizeInTiles = []; var tileSize = ol.DEFAULT_TILE_SIZE; switch(tierSizeCalculation) { case ol.source.ZoomifyTierSizeCalculation.DEFAULT: while(imageWidth > tileSize || imageHeight > tileSize) { tierSizeInTiles.push([Math.ceil(imageWidth / tileSize), Math.ceil(imageHeight / tileSize)]); tileSize += tileSize } break; case ol.source.ZoomifyTierSizeCalculation.TRUNCATED: var width = imageWidth; var height = imageHeight; while(width > tileSize || height > tileSize) { tierSizeInTiles.push([Math.ceil(width / tileSize), Math.ceil(height / tileSize)]); width >>= 1; height >>= 1 } break; default: goog.asserts.fail(); break } tierSizeInTiles.push([1, 1]); tierSizeInTiles.reverse(); var resolutions = [1]; var tileCountUpToTier = [0]; var i, ii; for(i = 1, ii = tierSizeInTiles.length;i < ii;i++) { resolutions.push(1 << i); tileCountUpToTier.push(tierSizeInTiles[i - 1][0] * tierSizeInTiles[i - 1][1] + tileCountUpToTier[i - 1]) } resolutions.reverse(); var tileGrid = new ol.tilegrid.Zoomify({resolutions:resolutions}); var url = options.url; var tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(tileGrid.createTileCoordTransform({extent:[0, 0, size[0], size[1]]}), function(tileCoord, pixelRatio, projection) { if(goog.isNull(tileCoord)) { return undefined }else { var tileIndex = tileCoord.x + tileCoord.y * tierSizeInTiles[tileCoord.z][0] + tileCountUpToTier[tileCoord.z]; var tileGroup = tileIndex / ol.DEFAULT_TILE_SIZE | 0; return url + "TileGroup" + tileGroup + "/" + tileCoord.z + "-" + tileCoord.x + "-" + tileCoord.y + ".jpg" } }); goog.base(this, {attributions:options.attributions, crossOrigin:options.crossOrigin, logo:options.logo, tileClass:ol.source.ZoomifyTile_, tileGrid:tileGrid, tileUrlFunction:tileUrlFunction}) }; goog.inherits(ol.source.Zoomify, ol.source.TileImage); ol.source.ZoomifyTile_ = function(tileCoord, state, src, crossOrigin, tileLoadFunction) { goog.base(this, tileCoord, state, src, crossOrigin, tileLoadFunction); this.zoomifyImageByContext_ = {} }; goog.inherits(ol.source.ZoomifyTile_, ol.ImageTile); ol.source.ZoomifyTile_.prototype.getImage = function(opt_context) { var tileSize = ol.DEFAULT_TILE_SIZE; var key = goog.isDef(opt_context) ? goog.getUid(opt_context).toString() : ""; if(key in this.zoomifyImageByContext_) { return this.zoomifyImageByContext_[key] }else { var image = goog.base(this, "getImage", opt_context); if(this.state == ol.TileState.LOADED) { if(image.width == tileSize && image.height == tileSize) { this.zoomifyImageByContext_[key] = image; return image }else { var context = ol.dom.createCanvasContext2D(tileSize, tileSize); context.drawImage(image, 0, 0); this.zoomifyImageByContext_[key] = context.canvas; return context.canvas } }else { return image } } }; goog.provide("ol.style.Text"); ol.style.Text = function(opt_options) { var options = goog.isDef(opt_options) ? opt_options : {}; this.font_ = options.font; this.rotation_ = options.rotation; this.scale_ = options.scale; this.text_ = options.text; this.textAlign_ = options.textAlign; this.textBaseline_ = options.textBaseline; this.fill_ = goog.isDef(options.fill) ? options.fill : null; this.stroke_ = goog.isDef(options.stroke) ? options.stroke : null; this.offsetX_ = goog.isDef(options.offsetX) ? options.offsetX : 0; this.offsetY_ = goog.isDef(options.offsetY) ? options.offsetY : 0 }; ol.style.Text.prototype.getFont = function() { return this.font_ }; ol.style.Text.prototype.getOffsetX = function() { return this.offsetX_ }; ol.style.Text.prototype.getOffsetY = function() { return this.offsetY_ }; ol.style.Text.prototype.getFill = function() { return this.fill_ }; ol.style.Text.prototype.getRotation = function() { return this.rotation_ }; ol.style.Text.prototype.getScale = function() { return this.scale_ }; ol.style.Text.prototype.getStroke = function() { return this.stroke_ }; ol.style.Text.prototype.getText = function() { return this.text_ }; ol.style.Text.prototype.getTextAlign = function() { return this.textAlign_ }; ol.style.Text.prototype.getTextBaseline = function() { return this.textBaseline_ }; goog.require("ol"); goog.require("ol.Attribution"); goog.require("ol.BrowserFeature"); goog.require("ol.Collection"); goog.require("ol.CollectionEvent"); goog.require("ol.CollectionEventType"); goog.require("ol.Coordinate"); goog.require("ol.CoordinateArray"); goog.require("ol.CoordinateFormatType"); goog.require("ol.DeviceOrientation"); goog.require("ol.DeviceOrientationProperty"); goog.require("ol.DragBoxEvent"); goog.require("ol.DrawEvent"); goog.require("ol.Extent"); goog.require("ol.Feature"); goog.require("ol.FeatureOverlay"); goog.require("ol.Geolocation"); goog.require("ol.GeolocationProperty"); goog.require("ol.ImageTile"); goog.require("ol.Kinetic"); goog.require("ol.Map"); goog.require("ol.MapBrowserEvent"); goog.require("ol.MapBrowserEvent.EventType"); goog.require("ol.MapBrowserEventHandler"); goog.require("ol.MapBrowserPointerEvent"); goog.require("ol.MapProperty"); goog.require("ol.Object"); goog.require("ol.ObjectEvent"); goog.require("ol.ObjectEventType"); goog.require("ol.Observable"); goog.require("ol.Overlay"); goog.require("ol.OverlayPositioning"); goog.require("ol.OverlayProperty"); goog.require("ol.Sphere"); goog.require("ol.Tile"); goog.require("ol.TileCoord"); goog.require("ol.TileState"); goog.require("ol.View2D"); goog.require("ol.View2DProperty"); goog.require("ol.animation"); goog.require("ol.color"); goog.require("ol.control"); goog.require("ol.control.Attribution"); goog.require("ol.control.Control"); goog.require("ol.control.FullScreen"); goog.require("ol.control.Logo"); goog.require("ol.control.MousePosition"); goog.require("ol.control.ScaleLine"); goog.require("ol.control.ScaleLineProperty"); goog.require("ol.control.ScaleLineUnits"); goog.require("ol.control.Zoom"); goog.require("ol.control.ZoomSlider"); goog.require("ol.control.ZoomToExtent"); goog.require("ol.coordinate"); goog.require("ol.dom.Input"); goog.require("ol.dom.InputProperty"); goog.require("ol.easing"); goog.require("ol.events.ConditionType"); goog.require("ol.events.condition"); goog.require("ol.extent"); goog.require("ol.extent.Relationship"); goog.require("ol.feature"); goog.require("ol.format.GPX"); goog.require("ol.format.GPX.V1_1"); goog.require("ol.format.GeoJSON"); goog.require("ol.format.IGC"); goog.require("ol.format.IGCZ"); goog.require("ol.format.KML"); goog.require("ol.format.OSMXML"); goog.require("ol.format.TopoJSON"); goog.require("ol.format.WFS"); goog.require("ol.format.WMSCapabilities"); goog.require("ol.geom.Circle"); goog.require("ol.geom.Geometry"); goog.require("ol.geom.GeometryCollection"); goog.require("ol.geom.GeometryType"); goog.require("ol.geom.LineString"); goog.require("ol.geom.LinearRing"); goog.require("ol.geom.MultiLineString"); goog.require("ol.geom.MultiPoint"); goog.require("ol.geom.MultiPolygon"); goog.require("ol.geom.Point"); goog.require("ol.geom.Polygon"); goog.require("ol.geom.SimpleGeometry"); goog.require("ol.interaction"); goog.require("ol.interaction.DoubleClickZoom"); goog.require("ol.interaction.DragAndDrop"); goog.require("ol.interaction.DragAndDropEvent"); goog.require("ol.interaction.DragBox"); goog.require("ol.interaction.DragPan"); goog.require("ol.interaction.DragRotate"); goog.require("ol.interaction.DragRotateAndZoom"); goog.require("ol.interaction.DragZoom"); goog.require("ol.interaction.Draw"); goog.require("ol.interaction.KeyboardPan"); goog.require("ol.interaction.KeyboardZoom"); goog.require("ol.interaction.Modify"); goog.require("ol.interaction.MouseWheelZoom"); goog.require("ol.interaction.PinchRotate"); goog.require("ol.interaction.PinchZoom"); goog.require("ol.interaction.Select"); goog.require("ol.layer.Base"); goog.require("ol.layer.Group"); goog.require("ol.layer.Heatmap"); goog.require("ol.layer.Image"); goog.require("ol.layer.Layer"); goog.require("ol.layer.LayerProperty"); goog.require("ol.layer.LayerState"); goog.require("ol.layer.Tile"); goog.require("ol.layer.Vector"); goog.require("ol.loadingstrategy"); goog.require("ol.proj"); goog.require("ol.proj.CH"); goog.require("ol.proj.EPSG2056"); goog.require("ol.proj.EPSG21781"); goog.require("ol.proj.EPSG3857"); goog.require("ol.proj.EPSG4326"); goog.require("ol.proj.METERS_PER_UNIT"); goog.require("ol.proj.Projection"); goog.require("ol.proj.ProjectionLike"); goog.require("ol.proj.Units"); goog.require("ol.proj.common"); goog.require("ol.render.canvas.Immediate"); goog.require("ol.source.BingMaps"); goog.require("ol.source.GPX"); goog.require("ol.source.GeoJSON"); goog.require("ol.source.IGC"); goog.require("ol.source.ImageCanvas"); goog.require("ol.source.ImageStatic"); goog.require("ol.source.ImageVector"); goog.require("ol.source.ImageWMS"); goog.require("ol.source.KML"); goog.require("ol.source.MapGuide"); goog.require("ol.source.MapQuest"); goog.require("ol.source.OSM"); goog.require("ol.source.OSMXML"); goog.require("ol.source.ServerVector"); goog.require("ol.source.Source"); goog.require("ol.source.Stamen"); goog.require("ol.source.State"); goog.require("ol.source.StaticVector"); goog.require("ol.source.Tile"); goog.require("ol.source.TileDebug"); goog.require("ol.source.TileImage"); goog.require("ol.source.TileJSON"); goog.require("ol.source.TileOptions"); goog.require("ol.source.TileVector"); goog.require("ol.source.TileWMS"); goog.require("ol.source.TopoJSON"); goog.require("ol.source.Vector"); goog.require("ol.source.VectorEvent"); goog.require("ol.source.VectorEventType"); goog.require("ol.source.WMTS"); goog.require("ol.source.WMTSRequestEncoding"); goog.require("ol.source.XYZ"); goog.require("ol.source.Zoomify"); goog.require("ol.sphere.WGS84"); goog.require("ol.style.Circle"); goog.require("ol.style.Fill"); goog.require("ol.style.Icon"); goog.require("ol.style.IconAnchorOrigin"); goog.require("ol.style.IconAnchorUnits"); goog.require("ol.style.IconImageCache"); goog.require("ol.style.Image"); goog.require("ol.style.ImageState"); goog.require("ol.style.Stroke"); goog.require("ol.style.Style"); goog.require("ol.style.Text"); goog.require("ol.tilegrid.TileGrid"); goog.require("ol.tilegrid.WMTS"); goog.require("ol.tilegrid.XYZ"); goog.require("ol.tilegrid.Zoomify"); goog.require("ol.tilejson"); goog.require("ol.webgl.Context"); goog.exportSymbol("ol.Attribution", ol.Attribution); goog.exportSymbol("ol.BrowserFeature.DEVICE_PIXEL_RATIO", ol.BrowserFeature.DEVICE_PIXEL_RATIO); goog.exportSymbol("ol.BrowserFeature.HAS_CANVAS", ol.BrowserFeature.HAS_CANVAS); goog.exportSymbol("ol.BrowserFeature.HAS_DEVICE_ORIENTATION", ol.BrowserFeature.HAS_DEVICE_ORIENTATION); goog.exportSymbol("ol.BrowserFeature.HAS_GEOLOCATION", ol.BrowserFeature.HAS_GEOLOCATION); goog.exportSymbol("ol.BrowserFeature.HAS_TOUCH", ol.BrowserFeature.HAS_TOUCH); goog.exportSymbol("ol.Collection", ol.Collection); goog.exportProperty(ol.Collection.prototype, "bindTo", ol.Collection.prototype.bindTo); goog.exportProperty(ol.Collection.prototype, "clear", ol.Collection.prototype.clear); goog.exportProperty(ol.Collection.prototype, "dispatchChangeEvent", ol.Collection.prototype.dispatchChangeEvent); goog.exportProperty(ol.Collection.prototype, "extend", ol.Collection.prototype.extend); goog.exportProperty(ol.Collection.prototype, "forEach", ol.Collection.prototype.forEach); goog.exportProperty(ol.Collection.prototype, "get", ol.Collection.prototype.get); goog.exportProperty(ol.Collection.prototype, "getArray", ol.Collection.prototype.getArray); goog.exportProperty(ol.Collection.prototype, "getAt", ol.Collection.prototype.getAt); goog.exportProperty(ol.Collection.prototype, "getKeys", ol.Collection.prototype.getKeys); goog.exportProperty(ol.Collection.prototype, "getLength", ol.Collection.prototype.getLength); goog.exportProperty(ol.Collection.prototype, "getProperties", ol.Collection.prototype.getProperties); goog.exportProperty(ol.Collection.prototype, "insertAt", ol.Collection.prototype.insertAt); goog.exportProperty(ol.Collection.prototype, "notify", ol.Collection.prototype.notify); goog.exportProperty(ol.Collection.prototype, "on", ol.Collection.prototype.on); goog.exportProperty(ol.Collection.prototype, "once", ol.Collection.prototype.once); goog.exportProperty(ol.Collection.prototype, "pop", ol.Collection.prototype.pop); goog.exportProperty(ol.Collection.prototype, "push", ol.Collection.prototype.push); goog.exportProperty(ol.Collection.prototype, "remove", ol.Collection.prototype.remove); goog.exportProperty(ol.Collection.prototype, "removeAt", ol.Collection.prototype.removeAt); goog.exportProperty(ol.Collection.prototype, "set", ol.Collection.prototype.set); goog.exportProperty(ol.Collection.prototype, "setAt", ol.Collection.prototype.setAt); goog.exportProperty(ol.Collection.prototype, "setValues", ol.Collection.prototype.setValues); goog.exportProperty(ol.Collection.prototype, "un", ol.Collection.prototype.un); goog.exportProperty(ol.Collection.prototype, "unByKey", ol.Collection.prototype.unByKey); goog.exportProperty(ol.Collection.prototype, "unbind", ol.Collection.prototype.unbind); goog.exportProperty(ol.Collection.prototype, "unbindAll", ol.Collection.prototype.unbindAll); goog.exportSymbol("ol.DeviceOrientation", ol.DeviceOrientation); goog.exportProperty(ol.DeviceOrientation.prototype, "bindTo", ol.DeviceOrientation.prototype.bindTo); goog.exportProperty(ol.DeviceOrientation.prototype, "dispatchChangeEvent", ol.DeviceOrientation.prototype.dispatchChangeEvent); goog.exportProperty(ol.DeviceOrientation.prototype, "get", ol.DeviceOrientation.prototype.get); goog.exportProperty(ol.DeviceOrientation.prototype, "getAlpha", ol.DeviceOrientation.prototype.getAlpha); goog.exportProperty(ol.DeviceOrientation.prototype, "getBeta", ol.DeviceOrientation.prototype.getBeta); goog.exportProperty(ol.DeviceOrientation.prototype, "getGamma", ol.DeviceOrientation.prototype.getGamma); goog.exportProperty(ol.DeviceOrientation.prototype, "getHeading", ol.DeviceOrientation.prototype.getHeading); goog.exportProperty(ol.DeviceOrientation.prototype, "getKeys", ol.DeviceOrientation.prototype.getKeys); goog.exportProperty(ol.DeviceOrientation.prototype, "getProperties", ol.DeviceOrientation.prototype.getProperties); goog.exportProperty(ol.DeviceOrientation.prototype, "getTracking", ol.DeviceOrientation.prototype.getTracking); goog.exportProperty(ol.DeviceOrientation.prototype, "notify", ol.DeviceOrientation.prototype.notify); goog.exportProperty(ol.DeviceOrientation.prototype, "on", ol.DeviceOrientation.prototype.on); goog.exportProperty(ol.DeviceOrientation.prototype, "once", ol.DeviceOrientation.prototype.once); goog.exportProperty(ol.DeviceOrientation.prototype, "set", ol.DeviceOrientation.prototype.set); goog.exportProperty(ol.DeviceOrientation.prototype, "setTracking", ol.DeviceOrientation.prototype.setTracking); goog.exportProperty(ol.DeviceOrientation.prototype, "setValues", ol.DeviceOrientation.prototype.setValues); goog.exportProperty(ol.DeviceOrientation.prototype, "un", ol.DeviceOrientation.prototype.un); goog.exportProperty(ol.DeviceOrientation.prototype, "unByKey", ol.DeviceOrientation.prototype.unByKey); goog.exportProperty(ol.DeviceOrientation.prototype, "unbind", ol.DeviceOrientation.prototype.unbind); goog.exportProperty(ol.DeviceOrientation.prototype, "unbindAll", ol.DeviceOrientation.prototype.unbindAll); goog.exportSymbol("ol.Feature", ol.Feature); goog.exportProperty(ol.Feature.prototype, "bindTo", ol.Feature.prototype.bindTo); goog.exportProperty(ol.Feature.prototype, "dispatchChangeEvent", ol.Feature.prototype.dispatchChangeEvent); goog.exportProperty(ol.Feature.prototype, "get", ol.Feature.prototype.get); goog.exportProperty(ol.Feature.prototype, "getGeometry", ol.Feature.prototype.getGeometry); goog.exportProperty(ol.Feature.prototype, "getGeometryName", ol.Feature.prototype.getGeometryName); goog.exportProperty(ol.Feature.prototype, "getId", ol.Feature.prototype.getId); goog.exportProperty(ol.Feature.prototype, "getKeys", ol.Feature.prototype.getKeys); goog.exportProperty(ol.Feature.prototype, "getProperties", ol.Feature.prototype.getProperties); goog.exportProperty(ol.Feature.prototype, "getStyle", ol.Feature.prototype.getStyle); goog.exportProperty(ol.Feature.prototype, "getStyleFunction", ol.Feature.prototype.getStyleFunction); goog.exportProperty(ol.Feature.prototype, "notify", ol.Feature.prototype.notify); goog.exportProperty(ol.Feature.prototype, "on", ol.Feature.prototype.on); goog.exportProperty(ol.Feature.prototype, "once", ol.Feature.prototype.once); goog.exportProperty(ol.Feature.prototype, "set", ol.Feature.prototype.set); goog.exportProperty(ol.Feature.prototype, "setGeometry", ol.Feature.prototype.setGeometry); goog.exportProperty(ol.Feature.prototype, "setGeometryName", ol.Feature.prototype.setGeometryName); goog.exportProperty(ol.Feature.prototype, "setId", ol.Feature.prototype.setId); goog.exportProperty(ol.Feature.prototype, "setStyle", ol.Feature.prototype.setStyle); goog.exportProperty(ol.Feature.prototype, "setValues", ol.Feature.prototype.setValues); goog.exportProperty(ol.Feature.prototype, "un", ol.Feature.prototype.un); goog.exportProperty(ol.Feature.prototype, "unByKey", ol.Feature.prototype.unByKey); goog.exportProperty(ol.Feature.prototype, "unbind", ol.Feature.prototype.unbind); goog.exportProperty(ol.Feature.prototype, "unbindAll", ol.Feature.prototype.unbindAll); goog.exportSymbol("ol.FeatureOverlay", ol.FeatureOverlay); goog.exportProperty(ol.FeatureOverlay.prototype, "addFeature", ol.FeatureOverlay.prototype.addFeature); goog.exportProperty(ol.FeatureOverlay.prototype, "getFeatures", ol.FeatureOverlay.prototype.getFeatures); goog.exportProperty(ol.FeatureOverlay.prototype, "getStyle", ol.FeatureOverlay.prototype.getStyle); goog.exportProperty(ol.FeatureOverlay.prototype, "getStyleFunction", ol.FeatureOverlay.prototype.getStyleFunction); goog.exportProperty(ol.FeatureOverlay.prototype, "removeFeature", ol.FeatureOverlay.prototype.removeFeature); goog.exportProperty(ol.FeatureOverlay.prototype, "setFeatures", ol.FeatureOverlay.prototype.setFeatures); goog.exportProperty(ol.FeatureOverlay.prototype, "setMap", ol.FeatureOverlay.prototype.setMap); goog.exportProperty(ol.FeatureOverlay.prototype, "setStyle", ol.FeatureOverlay.prototype.setStyle); goog.exportSymbol("ol.Geolocation", ol.Geolocation); goog.exportProperty(ol.Geolocation.prototype, "bindTo", ol.Geolocation.prototype.bindTo); goog.exportProperty(ol.Geolocation.prototype, "dispatchChangeEvent", ol.Geolocation.prototype.dispatchChangeEvent); goog.exportProperty(ol.Geolocation.prototype, "get", ol.Geolocation.prototype.get); goog.exportProperty(ol.Geolocation.prototype, "getAccuracy", ol.Geolocation.prototype.getAccuracy); goog.exportProperty(ol.Geolocation.prototype, "getAccuracyGeometry", ol.Geolocation.prototype.getAccuracyGeometry); goog.exportProperty(ol.Geolocation.prototype, "getAltitude", ol.Geolocation.prototype.getAltitude); goog.exportProperty(ol.Geolocation.prototype, "getAltitudeAccuracy", ol.Geolocation.prototype.getAltitudeAccuracy); goog.exportProperty(ol.Geolocation.prototype, "getHeading", ol.Geolocation.prototype.getHeading); goog.exportProperty(ol.Geolocation.prototype, "getKeys", ol.Geolocation.prototype.getKeys); goog.exportProperty(ol.Geolocation.prototype, "getPosition", ol.Geolocation.prototype.getPosition); goog.exportProperty(ol.Geolocation.prototype, "getProjection", ol.Geolocation.prototype.getProjection); goog.exportProperty(ol.Geolocation.prototype, "getProperties", ol.Geolocation.prototype.getProperties); goog.exportProperty(ol.Geolocation.prototype, "getSpeed", ol.Geolocation.prototype.getSpeed); goog.exportProperty(ol.Geolocation.prototype, "getTracking", ol.Geolocation.prototype.getTracking); goog.exportProperty(ol.Geolocation.prototype, "getTrackingOptions", ol.Geolocation.prototype.getTrackingOptions); goog.exportProperty(ol.Geolocation.prototype, "notify", ol.Geolocation.prototype.notify); goog.exportProperty(ol.Geolocation.prototype, "on", ol.Geolocation.prototype.on); goog.exportProperty(ol.Geolocation.prototype, "once", ol.Geolocation.prototype.once); goog.exportProperty(ol.Geolocation.prototype, "set", ol.Geolocation.prototype.set); goog.exportProperty(ol.Geolocation.prototype, "setProjection", ol.Geolocation.prototype.setProjection); goog.exportProperty(ol.Geolocation.prototype, "setTracking", ol.Geolocation.prototype.setTracking); goog.exportProperty(ol.Geolocation.prototype, "setTrackingOptions", ol.Geolocation.prototype.setTrackingOptions); goog.exportProperty(ol.Geolocation.prototype, "setValues", ol.Geolocation.prototype.setValues); goog.exportProperty(ol.Geolocation.prototype, "un", ol.Geolocation.prototype.un); goog.exportProperty(ol.Geolocation.prototype, "unByKey", ol.Geolocation.prototype.unByKey); goog.exportProperty(ol.Geolocation.prototype, "unbind", ol.Geolocation.prototype.unbind); goog.exportProperty(ol.Geolocation.prototype, "unbindAll", ol.Geolocation.prototype.unbindAll); goog.exportProperty(ol.ImageTile.prototype, "getImage", ol.ImageTile.prototype.getImage); goog.exportProperty(ol.ImageTile.prototype, "getTileCoord", ol.ImageTile.prototype.getTileCoord); goog.exportSymbol("ol.Kinetic", ol.Kinetic); goog.exportSymbol("ol.Map", ol.Map); goog.exportProperty(ol.Map.prototype, "addControl", ol.Map.prototype.addControl); goog.exportProperty(ol.Map.prototype, "addInteraction", ol.Map.prototype.addInteraction); goog.exportProperty(ol.Map.prototype, "addLayer", ol.Map.prototype.addLayer); goog.exportProperty(ol.Map.prototype, "addOverlay", ol.Map.prototype.addOverlay); goog.exportProperty(ol.Map.prototype, "beforeRender", ol.Map.prototype.beforeRender); goog.exportProperty(ol.Map.prototype, "bindTo", ol.Map.prototype.bindTo); goog.exportProperty(ol.Map.prototype, "dispatchChangeEvent", ol.Map.prototype.dispatchChangeEvent); goog.exportProperty(ol.Map.prototype, "forEachFeatureAtPixel", ol.Map.prototype.forEachFeatureAtPixel); goog.exportProperty(ol.Map.prototype, "get", ol.Map.prototype.get); goog.exportProperty(ol.Map.prototype, "getControls", ol.Map.prototype.getControls); goog.exportProperty(ol.Map.prototype, "getCoordinateFromPixel", ol.Map.prototype.getCoordinateFromPixel); goog.exportProperty(ol.Map.prototype, "getEventCoordinate", ol.Map.prototype.getEventCoordinate); goog.exportProperty(ol.Map.prototype, "getEventPixel", ol.Map.prototype.getEventPixel); goog.exportProperty(ol.Map.prototype, "getInteractions", ol.Map.prototype.getInteractions); goog.exportProperty(ol.Map.prototype, "getKeys", ol.Map.prototype.getKeys); goog.exportProperty(ol.Map.prototype, "getLayerGroup", ol.Map.prototype.getLayerGroup); goog.exportProperty(ol.Map.prototype, "getLayers", ol.Map.prototype.getLayers); goog.exportProperty(ol.Map.prototype, "getOverlays", ol.Map.prototype.getOverlays); goog.exportProperty(ol.Map.prototype, "getPixelFromCoordinate", ol.Map.prototype.getPixelFromCoordinate); goog.exportProperty(ol.Map.prototype, "getProperties", ol.Map.prototype.getProperties); goog.exportProperty(ol.Map.prototype, "getSize", ol.Map.prototype.getSize); goog.exportProperty(ol.Map.prototype, "getTarget", ol.Map.prototype.getTarget); goog.exportProperty(ol.Map.prototype, "getView", ol.Map.prototype.getView); goog.exportProperty(ol.Map.prototype, "getViewport", ol.Map.prototype.getViewport); goog.exportProperty(ol.Map.prototype, "notify", ol.Map.prototype.notify); goog.exportProperty(ol.Map.prototype, "on", ol.Map.prototype.on); goog.exportProperty(ol.Map.prototype, "once", ol.Map.prototype.once); goog.exportProperty(ol.Map.prototype, "removeControl", ol.Map.prototype.removeControl); goog.exportProperty(ol.Map.prototype, "removeInteraction", ol.Map.prototype.removeInteraction); goog.exportProperty(ol.Map.prototype, "removeLayer", ol.Map.prototype.removeLayer); goog.exportProperty(ol.Map.prototype, "removeOverlay", ol.Map.prototype.removeOverlay); goog.exportProperty(ol.Map.prototype, "render", ol.Map.prototype.render); goog.exportProperty(ol.Map.prototype, "renderSync", ol.Map.prototype.renderSync); goog.exportProperty(ol.Map.prototype, "set", ol.Map.prototype.set); goog.exportProperty(ol.Map.prototype, "setLayerGroup", ol.Map.prototype.setLayerGroup); goog.exportProperty(ol.Map.prototype, "setSize", ol.Map.prototype.setSize); goog.exportProperty(ol.Map.prototype, "setTarget", ol.Map.prototype.setTarget); goog.exportProperty(ol.Map.prototype, "setValues", ol.Map.prototype.setValues); goog.exportProperty(ol.Map.prototype, "setView", ol.Map.prototype.setView); goog.exportProperty(ol.Map.prototype, "un", ol.Map.prototype.un); goog.exportProperty(ol.Map.prototype, "unByKey", ol.Map.prototype.unByKey); goog.exportProperty(ol.Map.prototype, "unbind", ol.Map.prototype.unbind); goog.exportProperty(ol.Map.prototype, "unbindAll", ol.Map.prototype.unbindAll); goog.exportProperty(ol.Map.prototype, "updateSize", ol.Map.prototype.updateSize); goog.exportProperty(ol.MapBrowserEvent.prototype, "preventDefault", ol.MapBrowserEvent.prototype.preventDefault); goog.exportProperty(ol.MapBrowserEvent.prototype, "stopPropagation", ol.MapBrowserEvent.prototype.stopPropagation); goog.exportProperty(ol.MapBrowserPointerEvent.prototype, "preventDefault", ol.MapBrowserPointerEvent.prototype.preventDefault); goog.exportProperty(ol.MapBrowserPointerEvent.prototype, "stopPropagation", ol.MapBrowserPointerEvent.prototype.stopPropagation); goog.exportSymbol("ol.Object", ol.Object); goog.exportProperty(ol.Object.prototype, "bindTo", ol.Object.prototype.bindTo); goog.exportProperty(ol.Object.prototype, "dispatchChangeEvent", ol.Object.prototype.dispatchChangeEvent); goog.exportProperty(ol.Object.prototype, "get", ol.Object.prototype.get); goog.exportProperty(ol.Object.prototype, "getKeys", ol.Object.prototype.getKeys); goog.exportProperty(ol.Object.prototype, "getProperties", ol.Object.prototype.getProperties); goog.exportProperty(ol.Object.prototype, "notify", ol.Object.prototype.notify); goog.exportProperty(ol.Object.prototype, "on", ol.Object.prototype.on); goog.exportProperty(ol.Object.prototype, "once", ol.Object.prototype.once); goog.exportProperty(ol.Object.prototype, "set", ol.Object.prototype.set); goog.exportProperty(ol.Object.prototype, "setValues", ol.Object.prototype.setValues); goog.exportProperty(ol.Object.prototype, "un", ol.Object.prototype.un); goog.exportProperty(ol.Object.prototype, "unByKey", ol.Object.prototype.unByKey); goog.exportProperty(ol.Object.prototype, "unbind", ol.Object.prototype.unbind); goog.exportProperty(ol.Object.prototype, "unbindAll", ol.Object.prototype.unbindAll); goog.exportSymbol("ol.Observable", ol.Observable); goog.exportProperty(ol.Observable.prototype, "dispatchChangeEvent", ol.Observable.prototype.dispatchChangeEvent); goog.exportProperty(ol.Observable.prototype, "on", ol.Observable.prototype.on); goog.exportProperty(ol.Observable.prototype, "once", ol.Observable.prototype.once); goog.exportProperty(ol.Observable.prototype, "un", ol.Observable.prototype.un); goog.exportProperty(ol.Observable.prototype, "unByKey", ol.Observable.prototype.unByKey); goog.exportSymbol("ol.Overlay", ol.Overlay); goog.exportProperty(ol.Overlay.prototype, "bindTo", ol.Overlay.prototype.bindTo); goog.exportProperty(ol.Overlay.prototype, "dispatchChangeEvent", ol.Overlay.prototype.dispatchChangeEvent); goog.exportProperty(ol.Overlay.prototype, "get", ol.Overlay.prototype.get); goog.exportProperty(ol.Overlay.prototype, "getElement", ol.Overlay.prototype.getElement); goog.exportProperty(ol.Overlay.prototype, "getKeys", ol.Overlay.prototype.getKeys); goog.exportProperty(ol.Overlay.prototype, "getMap", ol.Overlay.prototype.getMap); goog.exportProperty(ol.Overlay.prototype, "getPosition", ol.Overlay.prototype.getPosition); goog.exportProperty(ol.Overlay.prototype, "getPositioning", ol.Overlay.prototype.getPositioning); goog.exportProperty(ol.Overlay.prototype, "getProperties", ol.Overlay.prototype.getProperties); goog.exportProperty(ol.Overlay.prototype, "notify", ol.Overlay.prototype.notify); goog.exportProperty(ol.Overlay.prototype, "on", ol.Overlay.prototype.on); goog.exportProperty(ol.Overlay.prototype, "once", ol.Overlay.prototype.once); goog.exportProperty(ol.Overlay.prototype, "set", ol.Overlay.prototype.set); goog.exportProperty(ol.Overlay.prototype, "setElement", ol.Overlay.prototype.setElement); goog.exportProperty(ol.Overlay.prototype, "setMap", ol.Overlay.prototype.setMap); goog.exportProperty(ol.Overlay.prototype, "setPosition", ol.Overlay.prototype.setPosition); goog.exportProperty(ol.Overlay.prototype, "setPositioning", ol.Overlay.prototype.setPositioning); goog.exportProperty(ol.Overlay.prototype, "setValues", ol.Overlay.prototype.setValues); goog.exportProperty(ol.Overlay.prototype, "un", ol.Overlay.prototype.un); goog.exportProperty(ol.Overlay.prototype, "unByKey", ol.Overlay.prototype.unByKey); goog.exportProperty(ol.Overlay.prototype, "unbind", ol.Overlay.prototype.unbind); goog.exportProperty(ol.Overlay.prototype, "unbindAll", ol.Overlay.prototype.unbindAll); goog.exportProperty(ol.Sphere.prototype, "circle", ol.Sphere.prototype.circle); goog.exportProperty(ol.Tile.prototype, "getTileCoord", ol.Tile.prototype.getTileCoord); goog.exportProperty(ol.TileCoord.prototype, "getZXY", ol.TileCoord.prototype.getZXY); goog.exportSymbol("ol.View2D", ol.View2D); goog.exportProperty(ol.View2D.prototype, "calculateExtent", ol.View2D.prototype.calculateExtent); goog.exportProperty(ol.View2D.prototype, "centerOn", ol.View2D.prototype.centerOn); goog.exportProperty(ol.View2D.prototype, "constrainResolution", ol.View2D.prototype.constrainResolution); goog.exportProperty(ol.View2D.prototype, "constrainRotation", ol.View2D.prototype.constrainRotation); goog.exportProperty(ol.View2D.prototype, "fitExtent", ol.View2D.prototype.fitExtent); goog.exportProperty(ol.View2D.prototype, "fitGeometry", ol.View2D.prototype.fitGeometry); goog.exportProperty(ol.View2D.prototype, "getCenter", ol.View2D.prototype.getCenter); goog.exportProperty(ol.View2D.prototype, "getProjection", ol.View2D.prototype.getProjection); goog.exportProperty(ol.View2D.prototype, "getResolution", ol.View2D.prototype.getResolution); goog.exportProperty(ol.View2D.prototype, "getRotation", ol.View2D.prototype.getRotation); goog.exportProperty(ol.View2D.prototype, "getView2D", ol.View2D.prototype.getView2D); goog.exportProperty(ol.View2D.prototype, "getZoom", ol.View2D.prototype.getZoom); goog.exportProperty(ol.View2D.prototype, "rotate", ol.View2D.prototype.rotate); goog.exportProperty(ol.View2D.prototype, "setCenter", ol.View2D.prototype.setCenter); goog.exportProperty(ol.View2D.prototype, "setProjection", ol.View2D.prototype.setProjection); goog.exportProperty(ol.View2D.prototype, "setResolution", ol.View2D.prototype.setResolution); goog.exportProperty(ol.View2D.prototype, "setRotation", ol.View2D.prototype.setRotation); goog.exportProperty(ol.View2D.prototype, "setZoom", ol.View2D.prototype.setZoom); goog.exportSymbol("ol.animation.bounce", ol.animation.bounce); goog.exportSymbol("ol.animation.pan", ol.animation.pan); goog.exportSymbol("ol.animation.rotate", ol.animation.rotate); goog.exportSymbol("ol.animation.zoom", ol.animation.zoom); goog.exportSymbol("ol.color.asArray", ol.color.asArray); goog.exportSymbol("ol.color.asString", ol.color.asString); goog.exportSymbol("ol.control.Attribution", ol.control.Attribution); goog.exportProperty(ol.control.Attribution.prototype, "bindTo", ol.control.Attribution.prototype.bindTo); goog.exportProperty(ol.control.Attribution.prototype, "dispatchChangeEvent", ol.control.Attribution.prototype.dispatchChangeEvent); goog.exportProperty(ol.control.Attribution.prototype, "get", ol.control.Attribution.prototype.get); goog.exportProperty(ol.control.Attribution.prototype, "getKeys", ol.control.Attribution.prototype.getKeys); goog.exportProperty(ol.control.Attribution.prototype, "getMap", ol.control.Attribution.prototype.getMap); goog.exportProperty(ol.control.Attribution.prototype, "getProperties", ol.control.Attribution.prototype.getProperties); goog.exportProperty(ol.control.Attribution.prototype, "notify", ol.control.Attribution.prototype.notify); goog.exportProperty(ol.control.Attribution.prototype, "on", ol.control.Attribution.prototype.on); goog.exportProperty(ol.control.Attribution.prototype, "once", ol.control.Attribution.prototype.once); goog.exportProperty(ol.control.Attribution.prototype, "set", ol.control.Attribution.prototype.set); goog.exportProperty(ol.control.Attribution.prototype, "setMap", ol.control.Attribution.prototype.setMap); goog.exportProperty(ol.control.Attribution.prototype, "setValues", ol.control.Attribution.prototype.setValues); goog.exportProperty(ol.control.Attribution.prototype, "un", ol.control.Attribution.prototype.un); goog.exportProperty(ol.control.Attribution.prototype, "unByKey", ol.control.Attribution.prototype.unByKey); goog.exportProperty(ol.control.Attribution.prototype, "unbind", ol.control.Attribution.prototype.unbind); goog.exportProperty(ol.control.Attribution.prototype, "unbindAll", ol.control.Attribution.prototype.unbindAll); goog.exportSymbol("ol.control.Control", ol.control.Control); goog.exportProperty(ol.control.Control.prototype, "bindTo", ol.control.Control.prototype.bindTo); goog.exportProperty(ol.control.Control.prototype, "dispatchChangeEvent", ol.control.Control.prototype.dispatchChangeEvent); goog.exportProperty(ol.control.Control.prototype, "get", ol.control.Control.prototype.get); goog.exportProperty(ol.control.Control.prototype, "getKeys", ol.control.Control.prototype.getKeys); goog.exportProperty(ol.control.Control.prototype, "getMap", ol.control.Control.prototype.getMap); goog.exportProperty(ol.control.Control.prototype, "getProperties", ol.control.Control.prototype.getProperties); goog.exportProperty(ol.control.Control.prototype, "notify", ol.control.Control.prototype.notify); goog.exportProperty(ol.control.Control.prototype, "on", ol.control.Control.prototype.on); goog.exportProperty(ol.control.Control.prototype, "once", ol.control.Control.prototype.once); goog.exportProperty(ol.control.Control.prototype, "set", ol.control.Control.prototype.set); goog.exportProperty(ol.control.Control.prototype, "setMap", ol.control.Control.prototype.setMap); goog.exportProperty(ol.control.Control.prototype, "setValues", ol.control.Control.prototype.setValues); goog.exportProperty(ol.control.Control.prototype, "un", ol.control.Control.prototype.un); goog.exportProperty(ol.control.Control.prototype, "unByKey", ol.control.Control.prototype.unByKey); goog.exportProperty(ol.control.Control.prototype, "unbind", ol.control.Control.prototype.unbind); goog.exportProperty(ol.control.Control.prototype, "unbindAll", ol.control.Control.prototype.unbindAll); goog.exportSymbol("ol.control.FullScreen", ol.control.FullScreen); goog.exportProperty(ol.control.FullScreen.prototype, "bindTo", ol.control.FullScreen.prototype.bindTo); goog.exportProperty(ol.control.FullScreen.prototype, "dispatchChangeEvent", ol.control.FullScreen.prototype.dispatchChangeEvent); goog.exportProperty(ol.control.FullScreen.prototype, "get", ol.control.FullScreen.prototype.get); goog.exportProperty(ol.control.FullScreen.prototype, "getKeys", ol.control.FullScreen.prototype.getKeys); goog.exportProperty(ol.control.FullScreen.prototype, "getMap", ol.control.FullScreen.prototype.getMap); goog.exportProperty(ol.control.FullScreen.prototype, "getProperties", ol.control.FullScreen.prototype.getProperties); goog.exportProperty(ol.control.FullScreen.prototype, "notify", ol.control.FullScreen.prototype.notify); goog.exportProperty(ol.control.FullScreen.prototype, "on", ol.control.FullScreen.prototype.on); goog.exportProperty(ol.control.FullScreen.prototype, "once", ol.control.FullScreen.prototype.once); goog.exportProperty(ol.control.FullScreen.prototype, "set", ol.control.FullScreen.prototype.set); goog.exportProperty(ol.control.FullScreen.prototype, "setMap", ol.control.FullScreen.prototype.setMap); goog.exportProperty(ol.control.FullScreen.prototype, "setValues", ol.control.FullScreen.prototype.setValues); goog.exportProperty(ol.control.FullScreen.prototype, "un", ol.control.FullScreen.prototype.un); goog.exportProperty(ol.control.FullScreen.prototype, "unByKey", ol.control.FullScreen.prototype.unByKey); goog.exportProperty(ol.control.FullScreen.prototype, "unbind", ol.control.FullScreen.prototype.unbind); goog.exportProperty(ol.control.FullScreen.prototype, "unbindAll", ol.control.FullScreen.prototype.unbindAll); goog.exportSymbol("ol.control.Logo", ol.control.Logo); goog.exportProperty(ol.control.Logo.prototype, "bindTo", ol.control.Logo.prototype.bindTo); goog.exportProperty(ol.control.Logo.prototype, "dispatchChangeEvent", ol.control.Logo.prototype.dispatchChangeEvent); goog.exportProperty(ol.control.Logo.prototype, "get", ol.control.Logo.prototype.get); goog.exportProperty(ol.control.Logo.prototype, "getKeys", ol.control.Logo.prototype.getKeys); goog.exportProperty(ol.control.Logo.prototype, "getMap", ol.control.Logo.prototype.getMap); goog.exportProperty(ol.control.Logo.prototype, "getProperties", ol.control.Logo.prototype.getProperties); goog.exportProperty(ol.control.Logo.prototype, "notify", ol.control.Logo.prototype.notify); goog.exportProperty(ol.control.Logo.prototype, "on", ol.control.Logo.prototype.on); goog.exportProperty(ol.control.Logo.prototype, "once", ol.control.Logo.prototype.once); goog.exportProperty(ol.control.Logo.prototype, "set", ol.control.Logo.prototype.set); goog.exportProperty(ol.control.Logo.prototype, "setMap", ol.control.Logo.prototype.setMap); goog.exportProperty(ol.control.Logo.prototype, "setValues", ol.control.Logo.prototype.setValues); goog.exportProperty(ol.control.Logo.prototype, "un", ol.control.Logo.prototype.un); goog.exportProperty(ol.control.Logo.prototype, "unByKey", ol.control.Logo.prototype.unByKey); goog.exportProperty(ol.control.Logo.prototype, "unbind", ol.control.Logo.prototype.unbind); goog.exportProperty(ol.control.Logo.prototype, "unbindAll", ol.control.Logo.prototype.unbindAll); goog.exportSymbol("ol.control.MousePosition", ol.control.MousePosition); goog.exportProperty(ol.control.MousePosition.prototype, "bindTo", ol.control.MousePosition.prototype.bindTo); goog.exportProperty(ol.control.MousePosition.prototype, "dispatchChangeEvent", ol.control.MousePosition.prototype.dispatchChangeEvent); goog.exportProperty(ol.control.MousePosition.prototype, "get", ol.control.MousePosition.prototype.get); goog.exportProperty(ol.control.MousePosition.prototype, "getCoordinateFormat", ol.control.MousePosition.prototype.getCoordinateFormat); goog.exportProperty(ol.control.MousePosition.prototype, "getKeys", ol.control.MousePosition.prototype.getKeys); goog.exportProperty(ol.control.MousePosition.prototype, "getMap", ol.control.MousePosition.prototype.getMap); goog.exportProperty(ol.control.MousePosition.prototype, "getProjection", ol.control.MousePosition.prototype.getProjection); goog.exportProperty(ol.control.MousePosition.prototype, "getProperties", ol.control.MousePosition.prototype.getProperties); goog.exportProperty(ol.control.MousePosition.prototype, "notify", ol.control.MousePosition.prototype.notify); goog.exportProperty(ol.control.MousePosition.prototype, "on", ol.control.MousePosition.prototype.on); goog.exportProperty(ol.control.MousePosition.prototype, "once", ol.control.MousePosition.prototype.once); goog.exportProperty(ol.control.MousePosition.prototype, "set", ol.control.MousePosition.prototype.set); goog.exportProperty(ol.control.MousePosition.prototype, "setCoordinateFormat", ol.control.MousePosition.prototype.setCoordinateFormat); goog.exportProperty(ol.control.MousePosition.prototype, "setMap", ol.control.MousePosition.prototype.setMap); goog.exportProperty(ol.control.MousePosition.prototype, "setProjection", ol.control.MousePosition.prototype.setProjection); goog.exportProperty(ol.control.MousePosition.prototype, "setValues", ol.control.MousePosition.prototype.setValues); goog.exportProperty(ol.control.MousePosition.prototype, "un", ol.control.MousePosition.prototype.un); goog.exportProperty(ol.control.MousePosition.prototype, "unByKey", ol.control.MousePosition.prototype.unByKey); goog.exportProperty(ol.control.MousePosition.prototype, "unbind", ol.control.MousePosition.prototype.unbind); goog.exportProperty(ol.control.MousePosition.prototype, "unbindAll", ol.control.MousePosition.prototype.unbindAll); goog.exportSymbol("ol.control.ScaleLine", ol.control.ScaleLine); goog.exportProperty(ol.control.ScaleLine.prototype, "bindTo", ol.control.ScaleLine.prototype.bindTo); goog.exportProperty(ol.control.ScaleLine.prototype, "dispatchChangeEvent", ol.control.ScaleLine.prototype.dispatchChangeEvent); goog.exportProperty(ol.control.ScaleLine.prototype, "get", ol.control.ScaleLine.prototype.get); goog.exportProperty(ol.control.ScaleLine.prototype, "getKeys", ol.control.ScaleLine.prototype.getKeys); goog.exportProperty(ol.control.ScaleLine.prototype, "getMap", ol.control.ScaleLine.prototype.getMap); goog.exportProperty(ol.control.ScaleLine.prototype, "getProperties", ol.control.ScaleLine.prototype.getProperties); goog.exportProperty(ol.control.ScaleLine.prototype, "getUnits", ol.control.ScaleLine.prototype.getUnits); goog.exportProperty(ol.control.ScaleLine.prototype, "notify", ol.control.ScaleLine.prototype.notify); goog.exportProperty(ol.control.ScaleLine.prototype, "on", ol.control.ScaleLine.prototype.on); goog.exportProperty(ol.control.ScaleLine.prototype, "once", ol.control.ScaleLine.prototype.once); goog.exportProperty(ol.control.ScaleLine.prototype, "set", ol.control.ScaleLine.prototype.set); goog.exportProperty(ol.control.ScaleLine.prototype, "setMap", ol.control.ScaleLine.prototype.setMap); goog.exportProperty(ol.control.ScaleLine.prototype, "setUnits", ol.control.ScaleLine.prototype.setUnits); goog.exportProperty(ol.control.ScaleLine.prototype, "setValues", ol.control.ScaleLine.prototype.setValues); goog.exportProperty(ol.control.ScaleLine.prototype, "un", ol.control.ScaleLine.prototype.un); goog.exportProperty(ol.control.ScaleLine.prototype, "unByKey", ol.control.ScaleLine.prototype.unByKey); goog.exportProperty(ol.control.ScaleLine.prototype, "unbind", ol.control.ScaleLine.prototype.unbind); goog.exportProperty(ol.control.ScaleLine.prototype, "unbindAll", ol.control.ScaleLine.prototype.unbindAll); goog.exportSymbol("ol.control.Zoom", ol.control.Zoom); goog.exportProperty(ol.control.Zoom.prototype, "bindTo", ol.control.Zoom.prototype.bindTo); goog.exportProperty(ol.control.Zoom.prototype, "dispatchChangeEvent", ol.control.Zoom.prototype.dispatchChangeEvent); goog.exportProperty(ol.control.Zoom.prototype, "get", ol.control.Zoom.prototype.get); goog.exportProperty(ol.control.Zoom.prototype, "getKeys", ol.control.Zoom.prototype.getKeys); goog.exportProperty(ol.control.Zoom.prototype, "getMap", ol.control.Zoom.prototype.getMap); goog.exportProperty(ol.control.Zoom.prototype, "getProperties", ol.control.Zoom.prototype.getProperties); goog.exportProperty(ol.control.Zoom.prototype, "notify", ol.control.Zoom.prototype.notify); goog.exportProperty(ol.control.Zoom.prototype, "on", ol.control.Zoom.prototype.on); goog.exportProperty(ol.control.Zoom.prototype, "once", ol.control.Zoom.prototype.once); goog.exportProperty(ol.control.Zoom.prototype, "set", ol.control.Zoom.prototype.set); goog.exportProperty(ol.control.Zoom.prototype, "setMap", ol.control.Zoom.prototype.setMap); goog.exportProperty(ol.control.Zoom.prototype, "setValues", ol.control.Zoom.prototype.setValues); goog.exportProperty(ol.control.Zoom.prototype, "un", ol.control.Zoom.prototype.un); goog.exportProperty(ol.control.Zoom.prototype, "unByKey", ol.control.Zoom.prototype.unByKey); goog.exportProperty(ol.control.Zoom.prototype, "unbind", ol.control.Zoom.prototype.unbind); goog.exportProperty(ol.control.Zoom.prototype, "unbindAll", ol.control.Zoom.prototype.unbindAll); goog.exportSymbol("ol.control.ZoomSlider", ol.control.ZoomSlider); goog.exportProperty(ol.control.ZoomSlider.prototype, "bindTo", ol.control.ZoomSlider.prototype.bindTo); goog.exportProperty(ol.control.ZoomSlider.prototype, "dispatchChangeEvent", ol.control.ZoomSlider.prototype.dispatchChangeEvent); goog.exportProperty(ol.control.ZoomSlider.prototype, "get", ol.control.ZoomSlider.prototype.get); goog.exportProperty(ol.control.ZoomSlider.prototype, "getKeys", ol.control.ZoomSlider.prototype.getKeys); goog.exportProperty(ol.control.ZoomSlider.prototype, "getMap", ol.control.ZoomSlider.prototype.getMap); goog.exportProperty(ol.control.ZoomSlider.prototype, "getProperties", ol.control.ZoomSlider.prototype.getProperties); goog.exportProperty(ol.control.ZoomSlider.prototype, "notify", ol.control.ZoomSlider.prototype.notify); goog.exportProperty(ol.control.ZoomSlider.prototype, "on", ol.control.ZoomSlider.prototype.on); goog.exportProperty(ol.control.ZoomSlider.prototype, "once", ol.control.ZoomSlider.prototype.once); goog.exportProperty(ol.control.ZoomSlider.prototype, "set", ol.control.ZoomSlider.prototype.set); goog.exportProperty(ol.control.ZoomSlider.prototype, "setValues", ol.control.ZoomSlider.prototype.setValues); goog.exportProperty(ol.control.ZoomSlider.prototype, "un", ol.control.ZoomSlider.prototype.un); goog.exportProperty(ol.control.ZoomSlider.prototype, "unByKey", ol.control.ZoomSlider.prototype.unByKey); goog.exportProperty(ol.control.ZoomSlider.prototype, "unbind", ol.control.ZoomSlider.prototype.unbind); goog.exportProperty(ol.control.ZoomSlider.prototype, "unbindAll", ol.control.ZoomSlider.prototype.unbindAll); goog.exportSymbol("ol.control.ZoomToExtent", ol.control.ZoomToExtent); goog.exportProperty(ol.control.ZoomToExtent.prototype, "bindTo", ol.control.ZoomToExtent.prototype.bindTo); goog.exportProperty(ol.control.ZoomToExtent.prototype, "dispatchChangeEvent", ol.control.ZoomToExtent.prototype.dispatchChangeEvent); goog.exportProperty(ol.control.ZoomToExtent.prototype, "get", ol.control.ZoomToExtent.prototype.get); goog.exportProperty(ol.control.ZoomToExtent.prototype, "getKeys", ol.control.ZoomToExtent.prototype.getKeys); goog.exportProperty(ol.control.ZoomToExtent.prototype, "getMap", ol.control.ZoomToExtent.prototype.getMap); goog.exportProperty(ol.control.ZoomToExtent.prototype, "getProperties", ol.control.ZoomToExtent.prototype.getProperties); goog.exportProperty(ol.control.ZoomToExtent.prototype, "notify", ol.control.ZoomToExtent.prototype.notify); goog.exportProperty(ol.control.ZoomToExtent.prototype, "on", ol.control.ZoomToExtent.prototype.on); goog.exportProperty(ol.control.ZoomToExtent.prototype, "once", ol.control.ZoomToExtent.prototype.once); goog.exportProperty(ol.control.ZoomToExtent.prototype, "set", ol.control.ZoomToExtent.prototype.set); goog.exportProperty(ol.control.ZoomToExtent.prototype, "setMap", ol.control.ZoomToExtent.prototype.setMap); goog.exportProperty(ol.control.ZoomToExtent.prototype, "setValues", ol.control.ZoomToExtent.prototype.setValues); goog.exportProperty(ol.control.ZoomToExtent.prototype, "un", ol.control.ZoomToExtent.prototype.un); goog.exportProperty(ol.control.ZoomToExtent.prototype, "unByKey", ol.control.ZoomToExtent.prototype.unByKey); goog.exportProperty(ol.control.ZoomToExtent.prototype, "unbind", ol.control.ZoomToExtent.prototype.unbind); goog.exportProperty(ol.control.ZoomToExtent.prototype, "unbindAll", ol.control.ZoomToExtent.prototype.unbindAll); goog.exportSymbol("ol.control.defaults", ol.control.defaults); goog.exportSymbol("ol.coordinate.add", ol.coordinate.add); goog.exportSymbol("ol.coordinate.createStringXY", ol.coordinate.createStringXY); goog.exportSymbol("ol.coordinate.format", ol.coordinate.format); goog.exportSymbol("ol.coordinate.fromProjectedArray", ol.coordinate.fromProjectedArray); goog.exportSymbol("ol.coordinate.rotate", ol.coordinate.rotate); goog.exportSymbol("ol.coordinate.toStringHDMS", ol.coordinate.toStringHDMS); goog.exportSymbol("ol.coordinate.toStringXY", ol.coordinate.toStringXY); goog.exportSymbol("ol.dom.Input", ol.dom.Input); goog.exportProperty(ol.dom.Input.prototype, "bindTo", ol.dom.Input.prototype.bindTo); goog.exportProperty(ol.dom.Input.prototype, "dispatchChangeEvent", ol.dom.Input.prototype.dispatchChangeEvent); goog.exportProperty(ol.dom.Input.prototype, "get", ol.dom.Input.prototype.get); goog.exportProperty(ol.dom.Input.prototype, "getChecked", ol.dom.Input.prototype.getChecked); goog.exportProperty(ol.dom.Input.prototype, "getKeys", ol.dom.Input.prototype.getKeys); goog.exportProperty(ol.dom.Input.prototype, "getProperties", ol.dom.Input.prototype.getProperties); goog.exportProperty(ol.dom.Input.prototype, "getValue", ol.dom.Input.prototype.getValue); goog.exportProperty(ol.dom.Input.prototype, "notify", ol.dom.Input.prototype.notify); goog.exportProperty(ol.dom.Input.prototype, "on", ol.dom.Input.prototype.on); goog.exportProperty(ol.dom.Input.prototype, "once", ol.dom.Input.prototype.once); goog.exportProperty(ol.dom.Input.prototype, "set", ol.dom.Input.prototype.set); goog.exportProperty(ol.dom.Input.prototype, "setChecked", ol.dom.Input.prototype.setChecked); goog.exportProperty(ol.dom.Input.prototype, "setValue", ol.dom.Input.prototype.setValue); goog.exportProperty(ol.dom.Input.prototype, "setValues", ol.dom.Input.prototype.setValues); goog.exportProperty(ol.dom.Input.prototype, "un", ol.dom.Input.prototype.un); goog.exportProperty(ol.dom.Input.prototype, "unByKey", ol.dom.Input.prototype.unByKey); goog.exportProperty(ol.dom.Input.prototype, "unbind", ol.dom.Input.prototype.unbind); goog.exportProperty(ol.dom.Input.prototype, "unbindAll", ol.dom.Input.prototype.unbindAll); goog.exportSymbol("ol.easing.bounce", ol.easing.bounce); goog.exportSymbol("ol.easing.easeIn", ol.easing.easeIn); goog.exportSymbol("ol.easing.easeOut", ol.easing.easeOut); goog.exportSymbol("ol.easing.elastic", ol.easing.elastic); goog.exportSymbol("ol.easing.inAndOut", ol.easing.inAndOut); goog.exportSymbol("ol.easing.linear", ol.easing.linear); goog.exportSymbol("ol.easing.upAndDown", ol.easing.upAndDown); goog.exportSymbol("ol.events.condition.altKeyOnly", ol.events.condition.altKeyOnly); goog.exportSymbol("ol.events.condition.altShiftKeysOnly", ol.events.condition.altShiftKeysOnly); goog.exportSymbol("ol.events.condition.always", ol.events.condition.always); goog.exportSymbol("ol.events.condition.never", ol.events.condition.never); goog.exportSymbol("ol.events.condition.noModifierKeys", ol.events.condition.noModifierKeys); goog.exportSymbol("ol.events.condition.platformModifierKeyOnly", ol.events.condition.platformModifierKeyOnly); goog.exportSymbol("ol.events.condition.shiftKeyOnly", ol.events.condition.shiftKeyOnly); goog.exportSymbol("ol.events.condition.targetNotEditable", ol.events.condition.targetNotEditable); goog.exportSymbol("ol.extent.boundingExtent", ol.extent.boundingExtent); goog.exportSymbol("ol.extent.buffer", ol.extent.buffer); goog.exportSymbol("ol.extent.containsCoordinate", ol.extent.containsCoordinate); goog.exportSymbol("ol.extent.containsExtent", ol.extent.containsExtent); goog.exportSymbol("ol.extent.createEmpty", ol.extent.createEmpty); goog.exportSymbol("ol.extent.equals", ol.extent.equals); goog.exportSymbol("ol.extent.extend", ol.extent.extend); goog.exportSymbol("ol.extent.getBottomLeft", ol.extent.getBottomLeft); goog.exportSymbol("ol.extent.getBottomRight", ol.extent.getBottomRight); goog.exportSymbol("ol.extent.getCenter", ol.extent.getCenter); goog.exportSymbol("ol.extent.getHeight", ol.extent.getHeight); goog.exportSymbol("ol.extent.getSize", ol.extent.getSize); goog.exportSymbol("ol.extent.getTopLeft", ol.extent.getTopLeft); goog.exportSymbol("ol.extent.getTopRight", ol.extent.getTopRight); goog.exportSymbol("ol.extent.getWidth", ol.extent.getWidth); goog.exportSymbol("ol.extent.intersects", ol.extent.intersects); goog.exportSymbol("ol.extent.isEmpty", ol.extent.isEmpty); goog.exportSymbol("ol.extent.transform", ol.extent.transform); goog.exportSymbol("ol.format.GPX", ol.format.GPX); goog.exportProperty(ol.format.GPX.prototype, "readFeature", ol.format.GPX.prototype.readFeature); goog.exportProperty(ol.format.GPX.prototype, "readFeatures", ol.format.GPX.prototype.readFeatures); goog.exportProperty(ol.format.GPX.prototype, "readProjection", ol.format.GPX.prototype.readProjection); goog.exportProperty(ol.format.GPX.prototype, "writeFeatures", ol.format.GPX.prototype.writeFeatures); goog.exportProperty(ol.format.GPX.V1_1.prototype, "readFeature", ol.format.GPX.V1_1.prototype.readFeature); goog.exportProperty(ol.format.GPX.V1_1.prototype, "readFeatures", ol.format.GPX.V1_1.prototype.readFeatures); goog.exportProperty(ol.format.GPX.V1_1.prototype, "readProjection", ol.format.GPX.V1_1.prototype.readProjection); goog.exportProperty(ol.format.GPX.V1_1.prototype, "writeFeatures", ol.format.GPX.V1_1.prototype.writeFeatures); goog.exportSymbol("ol.format.GeoJSON", ol.format.GeoJSON); goog.exportProperty(ol.format.GeoJSON.prototype, "readFeature", ol.format.GeoJSON.prototype.readFeature); goog.exportProperty(ol.format.GeoJSON.prototype, "readFeatures", ol.format.GeoJSON.prototype.readFeatures); goog.exportProperty(ol.format.GeoJSON.prototype, "readGeometry", ol.format.GeoJSON.prototype.readGeometry); goog.exportProperty(ol.format.GeoJSON.prototype, "readProjection", ol.format.GeoJSON.prototype.readProjection); goog.exportProperty(ol.format.GeoJSON.prototype, "writeFeature", ol.format.GeoJSON.prototype.writeFeature); goog.exportProperty(ol.format.GeoJSON.prototype, "writeFeatures", ol.format.GeoJSON.prototype.writeFeatures); goog.exportSymbol("ol.format.IGC", ol.format.IGC); goog.exportProperty(ol.format.IGC.prototype, "readFeature", ol.format.IGC.prototype.readFeature); goog.exportProperty(ol.format.IGC.prototype, "readFeatures", ol.format.IGC.prototype.readFeatures); goog.exportProperty(ol.format.IGC.prototype, "readProjection", ol.format.IGC.prototype.readProjection); goog.exportSymbol("ol.format.KML", ol.format.KML); goog.exportProperty(ol.format.KML.prototype, "readFeature", ol.format.KML.prototype.readFeature); goog.exportProperty(ol.format.KML.prototype, "readFeatures", ol.format.KML.prototype.readFeatures); goog.exportProperty(ol.format.KML.prototype, "readProjection", ol.format.KML.prototype.readProjection); goog.exportSymbol("ol.format.OSMXML", ol.format.OSMXML); goog.exportSymbol("ol.format.TopoJSON", ol.format.TopoJSON); goog.exportProperty(ol.format.TopoJSON.prototype, "readFeatures", ol.format.TopoJSON.prototype.readFeatures); goog.exportProperty(ol.format.TopoJSON.prototype, "readProjection", ol.format.TopoJSON.prototype.readProjection); goog.exportSymbol("ol.format.WFS", ol.format.WFS); goog.exportProperty(ol.format.WFS.prototype, "readFeatureCollectionMetadata", ol.format.WFS.prototype.readFeatureCollectionMetadata); goog.exportProperty(ol.format.WFS.prototype, "readTransactionResponse", ol.format.WFS.prototype.readTransactionResponse); goog.exportProperty(ol.format.WFS.prototype, "writeGetFeature", ol.format.WFS.prototype.writeGetFeature); goog.exportProperty(ol.format.WFS.prototype, "writeTransaction", ol.format.WFS.prototype.writeTransaction); goog.exportSymbol("ol.format.WMSCapabilities", ol.format.WMSCapabilities); goog.exportProperty(ol.format.WMSCapabilities.prototype, "read", ol.format.WMSCapabilities.prototype.read); goog.exportSymbol("ol.geom.Circle", ol.geom.Circle); goog.exportProperty(ol.geom.Circle.prototype, "clone", ol.geom.Circle.prototype.clone); goog.exportProperty(ol.geom.Circle.prototype, "clone", ol.geom.Circle.prototype.clone); goog.exportProperty(ol.geom.Circle.prototype, "dispatchChangeEvent", ol.geom.Circle.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.Circle.prototype, "getCenter", ol.geom.Circle.prototype.getCenter); goog.exportProperty(ol.geom.Circle.prototype, "getCenter", ol.geom.Circle.prototype.getCenter); goog.exportProperty(ol.geom.Circle.prototype, "getClosestPoint", ol.geom.Circle.prototype.getClosestPoint); goog.exportProperty(ol.geom.Circle.prototype, "getExtent", ol.geom.Circle.prototype.getExtent); goog.exportProperty(ol.geom.Circle.prototype, "getExtent", ol.geom.Circle.prototype.getExtent); goog.exportProperty(ol.geom.Circle.prototype, "getFirstCoordinate", ol.geom.Circle.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.Circle.prototype, "getFirstCoordinate", ol.geom.Circle.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.Circle.prototype, "getLastCoordinate", ol.geom.Circle.prototype.getLastCoordinate); goog.exportProperty(ol.geom.Circle.prototype, "getLastCoordinate", ol.geom.Circle.prototype.getLastCoordinate); goog.exportProperty(ol.geom.Circle.prototype, "getLayout", ol.geom.Circle.prototype.getLayout); goog.exportProperty(ol.geom.Circle.prototype, "getLayout", ol.geom.Circle.prototype.getLayout); goog.exportProperty(ol.geom.Circle.prototype, "getRadius", ol.geom.Circle.prototype.getRadius); goog.exportProperty(ol.geom.Circle.prototype, "getRadius", ol.geom.Circle.prototype.getRadius); goog.exportProperty(ol.geom.Circle.prototype, "getSimplifiedGeometry", ol.geom.Circle.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.Circle.prototype, "getSimplifiedGeometry", ol.geom.Circle.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.Circle.prototype, "getType", ol.geom.Circle.prototype.getType); goog.exportProperty(ol.geom.Circle.prototype, "getType", ol.geom.Circle.prototype.getType); goog.exportProperty(ol.geom.Circle.prototype, "on", ol.geom.Circle.prototype.on); goog.exportProperty(ol.geom.Circle.prototype, "once", ol.geom.Circle.prototype.once); goog.exportProperty(ol.geom.Circle.prototype, "setCenter", ol.geom.Circle.prototype.setCenter); goog.exportProperty(ol.geom.Circle.prototype, "setCenter", ol.geom.Circle.prototype.setCenter); goog.exportProperty(ol.geom.Circle.prototype, "setCenterAndRadius", ol.geom.Circle.prototype.setCenterAndRadius); goog.exportProperty(ol.geom.Circle.prototype, "setCenterAndRadius", ol.geom.Circle.prototype.setCenterAndRadius); goog.exportProperty(ol.geom.Circle.prototype, "setRadius", ol.geom.Circle.prototype.setRadius); goog.exportProperty(ol.geom.Circle.prototype, "setRadius", ol.geom.Circle.prototype.setRadius); goog.exportProperty(ol.geom.Circle.prototype, "un", ol.geom.Circle.prototype.un); goog.exportProperty(ol.geom.Circle.prototype, "unByKey", ol.geom.Circle.prototype.unByKey); goog.exportSymbol("ol.geom.Geometry", ol.geom.Geometry); goog.exportProperty(ol.geom.Geometry.prototype, "dispatchChangeEvent", ol.geom.Geometry.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.Geometry.prototype, "getClosestPoint", ol.geom.Geometry.prototype.getClosestPoint); goog.exportProperty(ol.geom.Geometry.prototype, "getExtent", ol.geom.Geometry.prototype.getExtent); goog.exportProperty(ol.geom.Geometry.prototype, "on", ol.geom.Geometry.prototype.on); goog.exportProperty(ol.geom.Geometry.prototype, "once", ol.geom.Geometry.prototype.once); goog.exportProperty(ol.geom.Geometry.prototype, "un", ol.geom.Geometry.prototype.un); goog.exportProperty(ol.geom.Geometry.prototype, "unByKey", ol.geom.Geometry.prototype.unByKey); goog.exportSymbol("ol.geom.GeometryCollection", ol.geom.GeometryCollection); goog.exportProperty(ol.geom.GeometryCollection.prototype, "clone", ol.geom.GeometryCollection.prototype.clone); goog.exportProperty(ol.geom.GeometryCollection.prototype, "clone", ol.geom.GeometryCollection.prototype.clone); goog.exportProperty(ol.geom.GeometryCollection.prototype, "dispatchChangeEvent", ol.geom.GeometryCollection.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.GeometryCollection.prototype, "getClosestPoint", ol.geom.GeometryCollection.prototype.getClosestPoint); goog.exportProperty(ol.geom.GeometryCollection.prototype, "getExtent", ol.geom.GeometryCollection.prototype.getExtent); goog.exportProperty(ol.geom.GeometryCollection.prototype, "getExtent", ol.geom.GeometryCollection.prototype.getExtent); goog.exportProperty(ol.geom.GeometryCollection.prototype, "getGeometries", ol.geom.GeometryCollection.prototype.getGeometries); goog.exportProperty(ol.geom.GeometryCollection.prototype, "getGeometries", ol.geom.GeometryCollection.prototype.getGeometries); goog.exportProperty(ol.geom.GeometryCollection.prototype, "getSimplifiedGeometry", ol.geom.GeometryCollection.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.GeometryCollection.prototype, "getSimplifiedGeometry", ol.geom.GeometryCollection.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.GeometryCollection.prototype, "getType", ol.geom.GeometryCollection.prototype.getType); goog.exportProperty(ol.geom.GeometryCollection.prototype, "getType", ol.geom.GeometryCollection.prototype.getType); goog.exportProperty(ol.geom.GeometryCollection.prototype, "on", ol.geom.GeometryCollection.prototype.on); goog.exportProperty(ol.geom.GeometryCollection.prototype, "once", ol.geom.GeometryCollection.prototype.once); goog.exportProperty(ol.geom.GeometryCollection.prototype, "setGeometries", ol.geom.GeometryCollection.prototype.setGeometries); goog.exportProperty(ol.geom.GeometryCollection.prototype, "setGeometries", ol.geom.GeometryCollection.prototype.setGeometries); goog.exportProperty(ol.geom.GeometryCollection.prototype, "un", ol.geom.GeometryCollection.prototype.un); goog.exportProperty(ol.geom.GeometryCollection.prototype, "unByKey", ol.geom.GeometryCollection.prototype.unByKey); goog.exportSymbol("ol.geom.LineString", ol.geom.LineString); goog.exportProperty(ol.geom.LineString.prototype, "appendCoordinate", ol.geom.LineString.prototype.appendCoordinate); goog.exportProperty(ol.geom.LineString.prototype, "appendCoordinate", ol.geom.LineString.prototype.appendCoordinate); goog.exportProperty(ol.geom.LineString.prototype, "clone", ol.geom.LineString.prototype.clone); goog.exportProperty(ol.geom.LineString.prototype, "clone", ol.geom.LineString.prototype.clone); goog.exportProperty(ol.geom.LineString.prototype, "dispatchChangeEvent", ol.geom.LineString.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.LineString.prototype, "getClosestPoint", ol.geom.LineString.prototype.getClosestPoint); goog.exportProperty(ol.geom.LineString.prototype, "getCoordinateAtM", ol.geom.LineString.prototype.getCoordinateAtM); goog.exportProperty(ol.geom.LineString.prototype, "getCoordinateAtM", ol.geom.LineString.prototype.getCoordinateAtM); goog.exportProperty(ol.geom.LineString.prototype, "getCoordinates", ol.geom.LineString.prototype.getCoordinates); goog.exportProperty(ol.geom.LineString.prototype, "getCoordinates", ol.geom.LineString.prototype.getCoordinates); goog.exportProperty(ol.geom.LineString.prototype, "getExtent", ol.geom.LineString.prototype.getExtent); goog.exportProperty(ol.geom.LineString.prototype, "getExtent", ol.geom.LineString.prototype.getExtent); goog.exportProperty(ol.geom.LineString.prototype, "getFirstCoordinate", ol.geom.LineString.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.LineString.prototype, "getFirstCoordinate", ol.geom.LineString.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.LineString.prototype, "getLastCoordinate", ol.geom.LineString.prototype.getLastCoordinate); goog.exportProperty(ol.geom.LineString.prototype, "getLastCoordinate", ol.geom.LineString.prototype.getLastCoordinate); goog.exportProperty(ol.geom.LineString.prototype, "getLayout", ol.geom.LineString.prototype.getLayout); goog.exportProperty(ol.geom.LineString.prototype, "getLayout", ol.geom.LineString.prototype.getLayout); goog.exportProperty(ol.geom.LineString.prototype, "getLength", ol.geom.LineString.prototype.getLength); goog.exportProperty(ol.geom.LineString.prototype, "getLength", ol.geom.LineString.prototype.getLength); goog.exportProperty(ol.geom.LineString.prototype, "getSimplifiedGeometry", ol.geom.LineString.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.LineString.prototype, "getSimplifiedGeometry", ol.geom.LineString.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.LineString.prototype, "getType", ol.geom.LineString.prototype.getType); goog.exportProperty(ol.geom.LineString.prototype, "getType", ol.geom.LineString.prototype.getType); goog.exportProperty(ol.geom.LineString.prototype, "on", ol.geom.LineString.prototype.on); goog.exportProperty(ol.geom.LineString.prototype, "once", ol.geom.LineString.prototype.once); goog.exportProperty(ol.geom.LineString.prototype, "setCoordinates", ol.geom.LineString.prototype.setCoordinates); goog.exportProperty(ol.geom.LineString.prototype, "setCoordinates", ol.geom.LineString.prototype.setCoordinates); goog.exportProperty(ol.geom.LineString.prototype, "transform", ol.geom.LineString.prototype.transform); goog.exportProperty(ol.geom.LineString.prototype, "transform", ol.geom.LineString.prototype.transform); goog.exportProperty(ol.geom.LineString.prototype, "un", ol.geom.LineString.prototype.un); goog.exportProperty(ol.geom.LineString.prototype, "unByKey", ol.geom.LineString.prototype.unByKey); goog.exportSymbol("ol.geom.LinearRing", ol.geom.LinearRing); goog.exportProperty(ol.geom.LinearRing.prototype, "clone", ol.geom.LinearRing.prototype.clone); goog.exportProperty(ol.geom.LinearRing.prototype, "clone", ol.geom.LinearRing.prototype.clone); goog.exportProperty(ol.geom.LinearRing.prototype, "dispatchChangeEvent", ol.geom.LinearRing.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.LinearRing.prototype, "getArea", ol.geom.LinearRing.prototype.getArea); goog.exportProperty(ol.geom.LinearRing.prototype, "getArea", ol.geom.LinearRing.prototype.getArea); goog.exportProperty(ol.geom.LinearRing.prototype, "getClosestPoint", ol.geom.LinearRing.prototype.getClosestPoint); goog.exportProperty(ol.geom.LinearRing.prototype, "getCoordinates", ol.geom.LinearRing.prototype.getCoordinates); goog.exportProperty(ol.geom.LinearRing.prototype, "getCoordinates", ol.geom.LinearRing.prototype.getCoordinates); goog.exportProperty(ol.geom.LinearRing.prototype, "getExtent", ol.geom.LinearRing.prototype.getExtent); goog.exportProperty(ol.geom.LinearRing.prototype, "getExtent", ol.geom.LinearRing.prototype.getExtent); goog.exportProperty(ol.geom.LinearRing.prototype, "getFirstCoordinate", ol.geom.LinearRing.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.LinearRing.prototype, "getFirstCoordinate", ol.geom.LinearRing.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.LinearRing.prototype, "getLastCoordinate", ol.geom.LinearRing.prototype.getLastCoordinate); goog.exportProperty(ol.geom.LinearRing.prototype, "getLastCoordinate", ol.geom.LinearRing.prototype.getLastCoordinate); goog.exportProperty(ol.geom.LinearRing.prototype, "getLayout", ol.geom.LinearRing.prototype.getLayout); goog.exportProperty(ol.geom.LinearRing.prototype, "getLayout", ol.geom.LinearRing.prototype.getLayout); goog.exportProperty(ol.geom.LinearRing.prototype, "getSimplifiedGeometry", ol.geom.LinearRing.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.LinearRing.prototype, "getSimplifiedGeometry", ol.geom.LinearRing.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.LinearRing.prototype, "getType", ol.geom.LinearRing.prototype.getType); goog.exportProperty(ol.geom.LinearRing.prototype, "getType", ol.geom.LinearRing.prototype.getType); goog.exportProperty(ol.geom.LinearRing.prototype, "on", ol.geom.LinearRing.prototype.on); goog.exportProperty(ol.geom.LinearRing.prototype, "once", ol.geom.LinearRing.prototype.once); goog.exportProperty(ol.geom.LinearRing.prototype, "setCoordinates", ol.geom.LinearRing.prototype.setCoordinates); goog.exportProperty(ol.geom.LinearRing.prototype, "setCoordinates", ol.geom.LinearRing.prototype.setCoordinates); goog.exportProperty(ol.geom.LinearRing.prototype, "transform", ol.geom.LinearRing.prototype.transform); goog.exportProperty(ol.geom.LinearRing.prototype, "transform", ol.geom.LinearRing.prototype.transform); goog.exportProperty(ol.geom.LinearRing.prototype, "un", ol.geom.LinearRing.prototype.un); goog.exportProperty(ol.geom.LinearRing.prototype, "unByKey", ol.geom.LinearRing.prototype.unByKey); goog.exportSymbol("ol.geom.MultiLineString", ol.geom.MultiLineString); goog.exportProperty(ol.geom.MultiLineString.prototype, "appendLineString", ol.geom.MultiLineString.prototype.appendLineString); goog.exportProperty(ol.geom.MultiLineString.prototype, "appendLineString", ol.geom.MultiLineString.prototype.appendLineString); goog.exportProperty(ol.geom.MultiLineString.prototype, "clone", ol.geom.MultiLineString.prototype.clone); goog.exportProperty(ol.geom.MultiLineString.prototype, "clone", ol.geom.MultiLineString.prototype.clone); goog.exportProperty(ol.geom.MultiLineString.prototype, "dispatchChangeEvent", ol.geom.MultiLineString.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.MultiLineString.prototype, "getClosestPoint", ol.geom.MultiLineString.prototype.getClosestPoint); goog.exportProperty(ol.geom.MultiLineString.prototype, "getCoordinateAtM", ol.geom.MultiLineString.prototype.getCoordinateAtM); goog.exportProperty(ol.geom.MultiLineString.prototype, "getCoordinateAtM", ol.geom.MultiLineString.prototype.getCoordinateAtM); goog.exportProperty(ol.geom.MultiLineString.prototype, "getCoordinates", ol.geom.MultiLineString.prototype.getCoordinates); goog.exportProperty(ol.geom.MultiLineString.prototype, "getCoordinates", ol.geom.MultiLineString.prototype.getCoordinates); goog.exportProperty(ol.geom.MultiLineString.prototype, "getExtent", ol.geom.MultiLineString.prototype.getExtent); goog.exportProperty(ol.geom.MultiLineString.prototype, "getExtent", ol.geom.MultiLineString.prototype.getExtent); goog.exportProperty(ol.geom.MultiLineString.prototype, "getFirstCoordinate", ol.geom.MultiLineString.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.MultiLineString.prototype, "getFirstCoordinate", ol.geom.MultiLineString.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.MultiLineString.prototype, "getLastCoordinate", ol.geom.MultiLineString.prototype.getLastCoordinate); goog.exportProperty(ol.geom.MultiLineString.prototype, "getLastCoordinate", ol.geom.MultiLineString.prototype.getLastCoordinate); goog.exportProperty(ol.geom.MultiLineString.prototype, "getLayout", ol.geom.MultiLineString.prototype.getLayout); goog.exportProperty(ol.geom.MultiLineString.prototype, "getLayout", ol.geom.MultiLineString.prototype.getLayout); goog.exportProperty(ol.geom.MultiLineString.prototype, "getLineString", ol.geom.MultiLineString.prototype.getLineString); goog.exportProperty(ol.geom.MultiLineString.prototype, "getLineString", ol.geom.MultiLineString.prototype.getLineString); goog.exportProperty(ol.geom.MultiLineString.prototype, "getLineStrings", ol.geom.MultiLineString.prototype.getLineStrings); goog.exportProperty(ol.geom.MultiLineString.prototype, "getLineStrings", ol.geom.MultiLineString.prototype.getLineStrings); goog.exportProperty(ol.geom.MultiLineString.prototype, "getSimplifiedGeometry", ol.geom.MultiLineString.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.MultiLineString.prototype, "getSimplifiedGeometry", ol.geom.MultiLineString.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.MultiLineString.prototype, "getType", ol.geom.MultiLineString.prototype.getType); goog.exportProperty(ol.geom.MultiLineString.prototype, "getType", ol.geom.MultiLineString.prototype.getType); goog.exportProperty(ol.geom.MultiLineString.prototype, "on", ol.geom.MultiLineString.prototype.on); goog.exportProperty(ol.geom.MultiLineString.prototype, "once", ol.geom.MultiLineString.prototype.once); goog.exportProperty(ol.geom.MultiLineString.prototype, "setCoordinates", ol.geom.MultiLineString.prototype.setCoordinates); goog.exportProperty(ol.geom.MultiLineString.prototype, "setCoordinates", ol.geom.MultiLineString.prototype.setCoordinates); goog.exportProperty(ol.geom.MultiLineString.prototype, "transform", ol.geom.MultiLineString.prototype.transform); goog.exportProperty(ol.geom.MultiLineString.prototype, "transform", ol.geom.MultiLineString.prototype.transform); goog.exportProperty(ol.geom.MultiLineString.prototype, "un", ol.geom.MultiLineString.prototype.un); goog.exportProperty(ol.geom.MultiLineString.prototype, "unByKey", ol.geom.MultiLineString.prototype.unByKey); goog.exportSymbol("ol.geom.MultiPoint", ol.geom.MultiPoint); goog.exportProperty(ol.geom.MultiPoint.prototype, "appendPoint", ol.geom.MultiPoint.prototype.appendPoint); goog.exportProperty(ol.geom.MultiPoint.prototype, "appendPoint", ol.geom.MultiPoint.prototype.appendPoint); goog.exportProperty(ol.geom.MultiPoint.prototype, "clone", ol.geom.MultiPoint.prototype.clone); goog.exportProperty(ol.geom.MultiPoint.prototype, "clone", ol.geom.MultiPoint.prototype.clone); goog.exportProperty(ol.geom.MultiPoint.prototype, "dispatchChangeEvent", ol.geom.MultiPoint.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.MultiPoint.prototype, "getClosestPoint", ol.geom.MultiPoint.prototype.getClosestPoint); goog.exportProperty(ol.geom.MultiPoint.prototype, "getCoordinates", ol.geom.MultiPoint.prototype.getCoordinates); goog.exportProperty(ol.geom.MultiPoint.prototype, "getCoordinates", ol.geom.MultiPoint.prototype.getCoordinates); goog.exportProperty(ol.geom.MultiPoint.prototype, "getExtent", ol.geom.MultiPoint.prototype.getExtent); goog.exportProperty(ol.geom.MultiPoint.prototype, "getExtent", ol.geom.MultiPoint.prototype.getExtent); goog.exportProperty(ol.geom.MultiPoint.prototype, "getFirstCoordinate", ol.geom.MultiPoint.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.MultiPoint.prototype, "getFirstCoordinate", ol.geom.MultiPoint.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.MultiPoint.prototype, "getLastCoordinate", ol.geom.MultiPoint.prototype.getLastCoordinate); goog.exportProperty(ol.geom.MultiPoint.prototype, "getLastCoordinate", ol.geom.MultiPoint.prototype.getLastCoordinate); goog.exportProperty(ol.geom.MultiPoint.prototype, "getLayout", ol.geom.MultiPoint.prototype.getLayout); goog.exportProperty(ol.geom.MultiPoint.prototype, "getLayout", ol.geom.MultiPoint.prototype.getLayout); goog.exportProperty(ol.geom.MultiPoint.prototype, "getPoint", ol.geom.MultiPoint.prototype.getPoint); goog.exportProperty(ol.geom.MultiPoint.prototype, "getPoint", ol.geom.MultiPoint.prototype.getPoint); goog.exportProperty(ol.geom.MultiPoint.prototype, "getPoints", ol.geom.MultiPoint.prototype.getPoints); goog.exportProperty(ol.geom.MultiPoint.prototype, "getPoints", ol.geom.MultiPoint.prototype.getPoints); goog.exportProperty(ol.geom.MultiPoint.prototype, "getSimplifiedGeometry", ol.geom.MultiPoint.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.MultiPoint.prototype, "getSimplifiedGeometry", ol.geom.MultiPoint.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.MultiPoint.prototype, "getType", ol.geom.MultiPoint.prototype.getType); goog.exportProperty(ol.geom.MultiPoint.prototype, "getType", ol.geom.MultiPoint.prototype.getType); goog.exportProperty(ol.geom.MultiPoint.prototype, "on", ol.geom.MultiPoint.prototype.on); goog.exportProperty(ol.geom.MultiPoint.prototype, "once", ol.geom.MultiPoint.prototype.once); goog.exportProperty(ol.geom.MultiPoint.prototype, "setCoordinates", ol.geom.MultiPoint.prototype.setCoordinates); goog.exportProperty(ol.geom.MultiPoint.prototype, "setCoordinates", ol.geom.MultiPoint.prototype.setCoordinates); goog.exportProperty(ol.geom.MultiPoint.prototype, "transform", ol.geom.MultiPoint.prototype.transform); goog.exportProperty(ol.geom.MultiPoint.prototype, "transform", ol.geom.MultiPoint.prototype.transform); goog.exportProperty(ol.geom.MultiPoint.prototype, "un", ol.geom.MultiPoint.prototype.un); goog.exportProperty(ol.geom.MultiPoint.prototype, "unByKey", ol.geom.MultiPoint.prototype.unByKey); goog.exportSymbol("ol.geom.MultiPolygon", ol.geom.MultiPolygon); goog.exportProperty(ol.geom.MultiPolygon.prototype, "appendPolygon", ol.geom.MultiPolygon.prototype.appendPolygon); goog.exportProperty(ol.geom.MultiPolygon.prototype, "appendPolygon", ol.geom.MultiPolygon.prototype.appendPolygon); goog.exportProperty(ol.geom.MultiPolygon.prototype, "clone", ol.geom.MultiPolygon.prototype.clone); goog.exportProperty(ol.geom.MultiPolygon.prototype, "clone", ol.geom.MultiPolygon.prototype.clone); goog.exportProperty(ol.geom.MultiPolygon.prototype, "dispatchChangeEvent", ol.geom.MultiPolygon.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getArea", ol.geom.MultiPolygon.prototype.getArea); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getArea", ol.geom.MultiPolygon.prototype.getArea); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getClosestPoint", ol.geom.MultiPolygon.prototype.getClosestPoint); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getCoordinates", ol.geom.MultiPolygon.prototype.getCoordinates); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getCoordinates", ol.geom.MultiPolygon.prototype.getCoordinates); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getExtent", ol.geom.MultiPolygon.prototype.getExtent); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getExtent", ol.geom.MultiPolygon.prototype.getExtent); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getFirstCoordinate", ol.geom.MultiPolygon.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getFirstCoordinate", ol.geom.MultiPolygon.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getInteriorPoints", ol.geom.MultiPolygon.prototype.getInteriorPoints); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getInteriorPoints", ol.geom.MultiPolygon.prototype.getInteriorPoints); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getLastCoordinate", ol.geom.MultiPolygon.prototype.getLastCoordinate); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getLastCoordinate", ol.geom.MultiPolygon.prototype.getLastCoordinate); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getLayout", ol.geom.MultiPolygon.prototype.getLayout); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getLayout", ol.geom.MultiPolygon.prototype.getLayout); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getPolygon", ol.geom.MultiPolygon.prototype.getPolygon); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getPolygon", ol.geom.MultiPolygon.prototype.getPolygon); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getPolygons", ol.geom.MultiPolygon.prototype.getPolygons); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getPolygons", ol.geom.MultiPolygon.prototype.getPolygons); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getSimplifiedGeometry", ol.geom.MultiPolygon.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getSimplifiedGeometry", ol.geom.MultiPolygon.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getType", ol.geom.MultiPolygon.prototype.getType); goog.exportProperty(ol.geom.MultiPolygon.prototype, "getType", ol.geom.MultiPolygon.prototype.getType); goog.exportProperty(ol.geom.MultiPolygon.prototype, "on", ol.geom.MultiPolygon.prototype.on); goog.exportProperty(ol.geom.MultiPolygon.prototype, "once", ol.geom.MultiPolygon.prototype.once); goog.exportProperty(ol.geom.MultiPolygon.prototype, "setCoordinates", ol.geom.MultiPolygon.prototype.setCoordinates); goog.exportProperty(ol.geom.MultiPolygon.prototype, "setCoordinates", ol.geom.MultiPolygon.prototype.setCoordinates); goog.exportProperty(ol.geom.MultiPolygon.prototype, "transform", ol.geom.MultiPolygon.prototype.transform); goog.exportProperty(ol.geom.MultiPolygon.prototype, "transform", ol.geom.MultiPolygon.prototype.transform); goog.exportProperty(ol.geom.MultiPolygon.prototype, "un", ol.geom.MultiPolygon.prototype.un); goog.exportProperty(ol.geom.MultiPolygon.prototype, "unByKey", ol.geom.MultiPolygon.prototype.unByKey); goog.exportSymbol("ol.geom.Point", ol.geom.Point); goog.exportProperty(ol.geom.Point.prototype, "clone", ol.geom.Point.prototype.clone); goog.exportProperty(ol.geom.Point.prototype, "clone", ol.geom.Point.prototype.clone); goog.exportProperty(ol.geom.Point.prototype, "dispatchChangeEvent", ol.geom.Point.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.Point.prototype, "getClosestPoint", ol.geom.Point.prototype.getClosestPoint); goog.exportProperty(ol.geom.Point.prototype, "getCoordinates", ol.geom.Point.prototype.getCoordinates); goog.exportProperty(ol.geom.Point.prototype, "getCoordinates", ol.geom.Point.prototype.getCoordinates); goog.exportProperty(ol.geom.Point.prototype, "getFirstCoordinate", ol.geom.Point.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.Point.prototype, "getFirstCoordinate", ol.geom.Point.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.Point.prototype, "getLastCoordinate", ol.geom.Point.prototype.getLastCoordinate); goog.exportProperty(ol.geom.Point.prototype, "getLastCoordinate", ol.geom.Point.prototype.getLastCoordinate); goog.exportProperty(ol.geom.Point.prototype, "getLayout", ol.geom.Point.prototype.getLayout); goog.exportProperty(ol.geom.Point.prototype, "getLayout", ol.geom.Point.prototype.getLayout); goog.exportProperty(ol.geom.Point.prototype, "getSimplifiedGeometry", ol.geom.Point.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.Point.prototype, "getSimplifiedGeometry", ol.geom.Point.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.Point.prototype, "getType", ol.geom.Point.prototype.getType); goog.exportProperty(ol.geom.Point.prototype, "getType", ol.geom.Point.prototype.getType); goog.exportProperty(ol.geom.Point.prototype, "on", ol.geom.Point.prototype.on); goog.exportProperty(ol.geom.Point.prototype, "once", ol.geom.Point.prototype.once); goog.exportProperty(ol.geom.Point.prototype, "setCoordinates", ol.geom.Point.prototype.setCoordinates); goog.exportProperty(ol.geom.Point.prototype, "setCoordinates", ol.geom.Point.prototype.setCoordinates); goog.exportProperty(ol.geom.Point.prototype, "transform", ol.geom.Point.prototype.transform); goog.exportProperty(ol.geom.Point.prototype, "transform", ol.geom.Point.prototype.transform); goog.exportProperty(ol.geom.Point.prototype, "un", ol.geom.Point.prototype.un); goog.exportProperty(ol.geom.Point.prototype, "unByKey", ol.geom.Point.prototype.unByKey); goog.exportSymbol("ol.geom.Polygon", ol.geom.Polygon); goog.exportProperty(ol.geom.Polygon.prototype, "appendLinearRing", ol.geom.Polygon.prototype.appendLinearRing); goog.exportProperty(ol.geom.Polygon.prototype, "appendLinearRing", ol.geom.Polygon.prototype.appendLinearRing); goog.exportProperty(ol.geom.Polygon.prototype, "clone", ol.geom.Polygon.prototype.clone); goog.exportProperty(ol.geom.Polygon.prototype, "clone", ol.geom.Polygon.prototype.clone); goog.exportProperty(ol.geom.Polygon.prototype, "dispatchChangeEvent", ol.geom.Polygon.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.Polygon.prototype, "getArea", ol.geom.Polygon.prototype.getArea); goog.exportProperty(ol.geom.Polygon.prototype, "getArea", ol.geom.Polygon.prototype.getArea); goog.exportProperty(ol.geom.Polygon.prototype, "getClosestPoint", ol.geom.Polygon.prototype.getClosestPoint); goog.exportProperty(ol.geom.Polygon.prototype, "getCoordinates", ol.geom.Polygon.prototype.getCoordinates); goog.exportProperty(ol.geom.Polygon.prototype, "getCoordinates", ol.geom.Polygon.prototype.getCoordinates); goog.exportProperty(ol.geom.Polygon.prototype, "getExtent", ol.geom.Polygon.prototype.getExtent); goog.exportProperty(ol.geom.Polygon.prototype, "getExtent", ol.geom.Polygon.prototype.getExtent); goog.exportProperty(ol.geom.Polygon.prototype, "getFirstCoordinate", ol.geom.Polygon.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.Polygon.prototype, "getFirstCoordinate", ol.geom.Polygon.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.Polygon.prototype, "getInteriorPoint", ol.geom.Polygon.prototype.getInteriorPoint); goog.exportProperty(ol.geom.Polygon.prototype, "getInteriorPoint", ol.geom.Polygon.prototype.getInteriorPoint); goog.exportProperty(ol.geom.Polygon.prototype, "getLastCoordinate", ol.geom.Polygon.prototype.getLastCoordinate); goog.exportProperty(ol.geom.Polygon.prototype, "getLastCoordinate", ol.geom.Polygon.prototype.getLastCoordinate); goog.exportProperty(ol.geom.Polygon.prototype, "getLayout", ol.geom.Polygon.prototype.getLayout); goog.exportProperty(ol.geom.Polygon.prototype, "getLayout", ol.geom.Polygon.prototype.getLayout); goog.exportProperty(ol.geom.Polygon.prototype, "getLinearRing", ol.geom.Polygon.prototype.getLinearRing); goog.exportProperty(ol.geom.Polygon.prototype, "getLinearRing", ol.geom.Polygon.prototype.getLinearRing); goog.exportProperty(ol.geom.Polygon.prototype, "getLinearRings", ol.geom.Polygon.prototype.getLinearRings); goog.exportProperty(ol.geom.Polygon.prototype, "getLinearRings", ol.geom.Polygon.prototype.getLinearRings); goog.exportProperty(ol.geom.Polygon.prototype, "getSimplifiedGeometry", ol.geom.Polygon.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.Polygon.prototype, "getSimplifiedGeometry", ol.geom.Polygon.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.Polygon.prototype, "getType", ol.geom.Polygon.prototype.getType); goog.exportProperty(ol.geom.Polygon.prototype, "getType", ol.geom.Polygon.prototype.getType); goog.exportProperty(ol.geom.Polygon.prototype, "on", ol.geom.Polygon.prototype.on); goog.exportProperty(ol.geom.Polygon.prototype, "once", ol.geom.Polygon.prototype.once); goog.exportProperty(ol.geom.Polygon.prototype, "setCoordinates", ol.geom.Polygon.prototype.setCoordinates); goog.exportProperty(ol.geom.Polygon.prototype, "setCoordinates", ol.geom.Polygon.prototype.setCoordinates); goog.exportProperty(ol.geom.Polygon.prototype, "transform", ol.geom.Polygon.prototype.transform); goog.exportProperty(ol.geom.Polygon.prototype, "transform", ol.geom.Polygon.prototype.transform); goog.exportProperty(ol.geom.Polygon.prototype, "un", ol.geom.Polygon.prototype.un); goog.exportProperty(ol.geom.Polygon.prototype, "unByKey", ol.geom.Polygon.prototype.unByKey); goog.exportSymbol("ol.geom.SimpleGeometry", ol.geom.SimpleGeometry); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "dispatchChangeEvent", ol.geom.SimpleGeometry.prototype.dispatchChangeEvent); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getClosestPoint", ol.geom.SimpleGeometry.prototype.getClosestPoint); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getExtent", ol.geom.SimpleGeometry.prototype.getExtent); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getExtent", ol.geom.SimpleGeometry.prototype.getExtent); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getFirstCoordinate", ol.geom.SimpleGeometry.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getFirstCoordinate", ol.geom.SimpleGeometry.prototype.getFirstCoordinate); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getLastCoordinate", ol.geom.SimpleGeometry.prototype.getLastCoordinate); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getLastCoordinate", ol.geom.SimpleGeometry.prototype.getLastCoordinate); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getLayout", ol.geom.SimpleGeometry.prototype.getLayout); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getLayout", ol.geom.SimpleGeometry.prototype.getLayout); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getSimplifiedGeometry", ol.geom.SimpleGeometry.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "getSimplifiedGeometry", ol.geom.SimpleGeometry.prototype.getSimplifiedGeometry); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "on", ol.geom.SimpleGeometry.prototype.on); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "once", ol.geom.SimpleGeometry.prototype.once); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "transform", ol.geom.SimpleGeometry.prototype.transform); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "transform", ol.geom.SimpleGeometry.prototype.transform); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "un", ol.geom.SimpleGeometry.prototype.un); goog.exportProperty(ol.geom.SimpleGeometry.prototype, "unByKey", ol.geom.SimpleGeometry.prototype.unByKey); goog.exportSymbol("ol.inherits", ol.inherits); goog.exportSymbol("ol.interaction.DoubleClickZoom", ol.interaction.DoubleClickZoom); goog.exportProperty(ol.interaction.DoubleClickZoom.prototype, "dispatchChangeEvent", ol.interaction.DoubleClickZoom.prototype.dispatchChangeEvent); goog.exportProperty(ol.interaction.DoubleClickZoom.prototype, "on", ol.interaction.DoubleClickZoom.prototype.on); goog.exportProperty(ol.interaction.DoubleClickZoom.prototype, "once", ol.interaction.DoubleClickZoom.prototype.once); goog.exportProperty(ol.interaction.DoubleClickZoom.prototype, "un", ol.interaction.DoubleClickZoom.prototype.un); goog.exportProperty(ol.interaction.DoubleClickZoom.prototype, "unByKey", ol.interaction.DoubleClickZoom.prototype.unByKey); goog.exportSymbol("ol.interaction.DragAndDrop", ol.interaction.DragAndDrop); goog.exportProperty(ol.interaction.DragAndDrop.prototype, "dispatchChangeEvent", ol.interaction.DragAndDrop.prototype.dispatchChangeEvent); goog.exportProperty(ol.interaction.DragAndDrop.prototype, "on", ol.interaction.DragAndDrop.prototype.on); goog.exportProperty(ol.interaction.DragAndDrop.prototype, "once", ol.interaction.DragAndDrop.prototype.once); goog.exportProperty(ol.interaction.DragAndDrop.prototype, "un", ol.interaction.DragAndDrop.prototype.un); goog.exportProperty(ol.interaction.DragAndDrop.prototype, "unByKey", ol.interaction.DragAndDrop.prototype.unByKey); goog.exportSymbol("ol.interaction.DragBox", ol.interaction.DragBox); goog.exportProperty(ol.interaction.DragBox.prototype, "getGeometry", ol.interaction.DragBox.prototype.getGeometry); goog.exportSymbol("ol.interaction.DragPan", ol.interaction.DragPan); goog.exportSymbol("ol.interaction.DragRotate", ol.interaction.DragRotate); goog.exportSymbol("ol.interaction.DragRotateAndZoom", ol.interaction.DragRotateAndZoom); goog.exportSymbol("ol.interaction.DragZoom", ol.interaction.DragZoom); goog.exportProperty(ol.interaction.DragZoom.prototype, "getGeometry", ol.interaction.DragZoom.prototype.getGeometry); goog.exportSymbol("ol.interaction.Draw", ol.interaction.Draw); goog.exportProperty(ol.interaction.Interaction.prototype, "dispatchChangeEvent", ol.interaction.Interaction.prototype.dispatchChangeEvent); goog.exportProperty(ol.interaction.Interaction.prototype, "on", ol.interaction.Interaction.prototype.on); goog.exportProperty(ol.interaction.Interaction.prototype, "once", ol.interaction.Interaction.prototype.once); goog.exportProperty(ol.interaction.Interaction.prototype, "un", ol.interaction.Interaction.prototype.un); goog.exportProperty(ol.interaction.Interaction.prototype, "unByKey", ol.interaction.Interaction.prototype.unByKey); goog.exportSymbol("ol.interaction.KeyboardPan", ol.interaction.KeyboardPan); goog.exportProperty(ol.interaction.KeyboardPan.prototype, "dispatchChangeEvent", ol.interaction.KeyboardPan.prototype.dispatchChangeEvent); goog.exportProperty(ol.interaction.KeyboardPan.prototype, "on", ol.interaction.KeyboardPan.prototype.on); goog.exportProperty(ol.interaction.KeyboardPan.prototype, "once", ol.interaction.KeyboardPan.prototype.once); goog.exportProperty(ol.interaction.KeyboardPan.prototype, "un", ol.interaction.KeyboardPan.prototype.un); goog.exportProperty(ol.interaction.KeyboardPan.prototype, "unByKey", ol.interaction.KeyboardPan.prototype.unByKey); goog.exportSymbol("ol.interaction.KeyboardZoom", ol.interaction.KeyboardZoom); goog.exportProperty(ol.interaction.KeyboardZoom.prototype, "dispatchChangeEvent", ol.interaction.KeyboardZoom.prototype.dispatchChangeEvent); goog.exportProperty(ol.interaction.KeyboardZoom.prototype, "on", ol.interaction.KeyboardZoom.prototype.on); goog.exportProperty(ol.interaction.KeyboardZoom.prototype, "once", ol.interaction.KeyboardZoom.prototype.once); goog.exportProperty(ol.interaction.KeyboardZoom.prototype, "un", ol.interaction.KeyboardZoom.prototype.un); goog.exportProperty(ol.interaction.KeyboardZoom.prototype, "unByKey", ol.interaction.KeyboardZoom.prototype.unByKey); goog.exportSymbol("ol.interaction.Modify", ol.interaction.Modify); goog.exportSymbol("ol.interaction.MouseWheelZoom", ol.interaction.MouseWheelZoom); goog.exportProperty(ol.interaction.MouseWheelZoom.prototype, "dispatchChangeEvent", ol.interaction.MouseWheelZoom.prototype.dispatchChangeEvent); goog.exportProperty(ol.interaction.MouseWheelZoom.prototype, "on", ol.interaction.MouseWheelZoom.prototype.on); goog.exportProperty(ol.interaction.MouseWheelZoom.prototype, "once", ol.interaction.MouseWheelZoom.prototype.once); goog.exportProperty(ol.interaction.MouseWheelZoom.prototype, "un", ol.interaction.MouseWheelZoom.prototype.un); goog.exportProperty(ol.interaction.MouseWheelZoom.prototype, "unByKey", ol.interaction.MouseWheelZoom.prototype.unByKey); goog.exportSymbol("ol.interaction.PinchRotate", ol.interaction.PinchRotate); goog.exportSymbol("ol.interaction.PinchZoom", ol.interaction.PinchZoom); goog.exportSymbol("ol.interaction.Select", ol.interaction.Select); goog.exportProperty(ol.interaction.Select.prototype, "dispatchChangeEvent", ol.interaction.Select.prototype.dispatchChangeEvent); goog.exportProperty(ol.interaction.Select.prototype, "getFeatures", ol.interaction.Select.prototype.getFeatures); goog.exportProperty(ol.interaction.Select.prototype, "on", ol.interaction.Select.prototype.on); goog.exportProperty(ol.interaction.Select.prototype, "once", ol.interaction.Select.prototype.once); goog.exportProperty(ol.interaction.Select.prototype, "setMap", ol.interaction.Select.prototype.setMap); goog.exportProperty(ol.interaction.Select.prototype, "un", ol.interaction.Select.prototype.un); goog.exportProperty(ol.interaction.Select.prototype, "unByKey", ol.interaction.Select.prototype.unByKey); goog.exportSymbol("ol.interaction.defaults", ol.interaction.defaults); goog.exportProperty(ol.layer.Base.prototype, "bindTo", ol.layer.Base.prototype.bindTo); goog.exportProperty(ol.layer.Base.prototype, "dispatchChangeEvent", ol.layer.Base.prototype.dispatchChangeEvent); goog.exportProperty(ol.layer.Base.prototype, "get", ol.layer.Base.prototype.get); goog.exportProperty(ol.layer.Base.prototype, "getBrightness", ol.layer.Base.prototype.getBrightness); goog.exportProperty(ol.layer.Base.prototype, "getContrast", ol.layer.Base.prototype.getContrast); goog.exportProperty(ol.layer.Base.prototype, "getHue", ol.layer.Base.prototype.getHue); goog.exportProperty(ol.layer.Base.prototype, "getKeys", ol.layer.Base.prototype.getKeys); goog.exportProperty(ol.layer.Base.prototype, "getMaxResolution", ol.layer.Base.prototype.getMaxResolution); goog.exportProperty(ol.layer.Base.prototype, "getMinResolution", ol.layer.Base.prototype.getMinResolution); goog.exportProperty(ol.layer.Base.prototype, "getOpacity", ol.layer.Base.prototype.getOpacity); goog.exportProperty(ol.layer.Base.prototype, "getProperties", ol.layer.Base.prototype.getProperties); goog.exportProperty(ol.layer.Base.prototype, "getSaturation", ol.layer.Base.prototype.getSaturation); goog.exportProperty(ol.layer.Base.prototype, "getVisible", ol.layer.Base.prototype.getVisible); goog.exportProperty(ol.layer.Base.prototype, "notify", ol.layer.Base.prototype.notify); goog.exportProperty(ol.layer.Base.prototype, "on", ol.layer.Base.prototype.on); goog.exportProperty(ol.layer.Base.prototype, "once", ol.layer.Base.prototype.once); goog.exportProperty(ol.layer.Base.prototype, "set", ol.layer.Base.prototype.set); goog.exportProperty(ol.layer.Base.prototype, "setBrightness", ol.layer.Base.prototype.setBrightness); goog.exportProperty(ol.layer.Base.prototype, "setContrast", ol.layer.Base.prototype.setContrast); goog.exportProperty(ol.layer.Base.prototype, "setHue", ol.layer.Base.prototype.setHue); goog.exportProperty(ol.layer.Base.prototype, "setMaxResolution", ol.layer.Base.prototype.setMaxResolution); goog.exportProperty(ol.layer.Base.prototype, "setMinResolution", ol.layer.Base.prototype.setMinResolution); goog.exportProperty(ol.layer.Base.prototype, "setOpacity", ol.layer.Base.prototype.setOpacity); goog.exportProperty(ol.layer.Base.prototype, "setSaturation", ol.layer.Base.prototype.setSaturation); goog.exportProperty(ol.layer.Base.prototype, "setValues", ol.layer.Base.prototype.setValues); goog.exportProperty(ol.layer.Base.prototype, "setVisible", ol.layer.Base.prototype.setVisible); goog.exportProperty(ol.layer.Base.prototype, "un", ol.layer.Base.prototype.un); goog.exportProperty(ol.layer.Base.prototype, "unByKey", ol.layer.Base.prototype.unByKey); goog.exportProperty(ol.layer.Base.prototype, "unbind", ol.layer.Base.prototype.unbind); goog.exportProperty(ol.layer.Base.prototype, "unbindAll", ol.layer.Base.prototype.unbindAll); goog.exportSymbol("ol.layer.Group", ol.layer.Group); goog.exportProperty(ol.layer.Group.prototype, "bindTo", ol.layer.Group.prototype.bindTo); goog.exportProperty(ol.layer.Group.prototype, "dispatchChangeEvent", ol.layer.Group.prototype.dispatchChangeEvent); goog.exportProperty(ol.layer.Group.prototype, "get", ol.layer.Group.prototype.get); goog.exportProperty(ol.layer.Group.prototype, "getBrightness", ol.layer.Group.prototype.getBrightness); goog.exportProperty(ol.layer.Group.prototype, "getContrast", ol.layer.Group.prototype.getContrast); goog.exportProperty(ol.layer.Group.prototype, "getHue", ol.layer.Group.prototype.getHue); goog.exportProperty(ol.layer.Group.prototype, "getKeys", ol.layer.Group.prototype.getKeys); goog.exportProperty(ol.layer.Group.prototype, "getMaxResolution", ol.layer.Group.prototype.getMaxResolution); goog.exportProperty(ol.layer.Group.prototype, "getMinResolution", ol.layer.Group.prototype.getMinResolution); goog.exportProperty(ol.layer.Group.prototype, "getOpacity", ol.layer.Group.prototype.getOpacity); goog.exportProperty(ol.layer.Group.prototype, "getProperties", ol.layer.Group.prototype.getProperties); goog.exportProperty(ol.layer.Group.prototype, "getSaturation", ol.layer.Group.prototype.getSaturation); goog.exportProperty(ol.layer.Group.prototype, "getVisible", ol.layer.Group.prototype.getVisible); goog.exportProperty(ol.layer.Group.prototype, "notify", ol.layer.Group.prototype.notify); goog.exportProperty(ol.layer.Group.prototype, "on", ol.layer.Group.prototype.on); goog.exportProperty(ol.layer.Group.prototype, "once", ol.layer.Group.prototype.once); goog.exportProperty(ol.layer.Group.prototype, "set", ol.layer.Group.prototype.set); goog.exportProperty(ol.layer.Group.prototype, "setBrightness", ol.layer.Group.prototype.setBrightness); goog.exportProperty(ol.layer.Group.prototype, "setContrast", ol.layer.Group.prototype.setContrast); goog.exportProperty(ol.layer.Group.prototype, "setHue", ol.layer.Group.prototype.setHue); goog.exportProperty(ol.layer.Group.prototype, "setMaxResolution", ol.layer.Group.prototype.setMaxResolution); goog.exportProperty(ol.layer.Group.prototype, "setMinResolution", ol.layer.Group.prototype.setMinResolution); goog.exportProperty(ol.layer.Group.prototype, "setOpacity", ol.layer.Group.prototype.setOpacity); goog.exportProperty(ol.layer.Group.prototype, "setSaturation", ol.layer.Group.prototype.setSaturation); goog.exportProperty(ol.layer.Group.prototype, "setValues", ol.layer.Group.prototype.setValues); goog.exportProperty(ol.layer.Group.prototype, "setVisible", ol.layer.Group.prototype.setVisible); goog.exportProperty(ol.layer.Group.prototype, "un", ol.layer.Group.prototype.un); goog.exportProperty(ol.layer.Group.prototype, "unByKey", ol.layer.Group.prototype.unByKey); goog.exportProperty(ol.layer.Group.prototype, "unbind", ol.layer.Group.prototype.unbind); goog.exportProperty(ol.layer.Group.prototype, "unbindAll", ol.layer.Group.prototype.unbindAll); goog.exportSymbol("ol.layer.Heatmap", ol.layer.Heatmap); goog.exportProperty(ol.layer.Heatmap.prototype, "bindTo", ol.layer.Heatmap.prototype.bindTo); goog.exportProperty(ol.layer.Heatmap.prototype, "dispatchChangeEvent", ol.layer.Heatmap.prototype.dispatchChangeEvent); goog.exportProperty(ol.layer.Heatmap.prototype, "get", ol.layer.Heatmap.prototype.get); goog.exportProperty(ol.layer.Heatmap.prototype, "getBrightness", ol.layer.Heatmap.prototype.getBrightness); goog.exportProperty(ol.layer.Heatmap.prototype, "getContrast", ol.layer.Heatmap.prototype.getContrast); goog.exportProperty(ol.layer.Heatmap.prototype, "getHue", ol.layer.Heatmap.prototype.getHue); goog.exportProperty(ol.layer.Heatmap.prototype, "getKeys", ol.layer.Heatmap.prototype.getKeys); goog.exportProperty(ol.layer.Heatmap.prototype, "getMaxResolution", ol.layer.Heatmap.prototype.getMaxResolution); goog.exportProperty(ol.layer.Heatmap.prototype, "getMinResolution", ol.layer.Heatmap.prototype.getMinResolution); goog.exportProperty(ol.layer.Heatmap.prototype, "getOpacity", ol.layer.Heatmap.prototype.getOpacity); goog.exportProperty(ol.layer.Heatmap.prototype, "getProperties", ol.layer.Heatmap.prototype.getProperties); goog.exportProperty(ol.layer.Heatmap.prototype, "getSaturation", ol.layer.Heatmap.prototype.getSaturation); goog.exportProperty(ol.layer.Heatmap.prototype, "getSource", ol.layer.Heatmap.prototype.getSource); goog.exportProperty(ol.layer.Heatmap.prototype, "getStyle", ol.layer.Heatmap.prototype.getStyle); goog.exportProperty(ol.layer.Heatmap.prototype, "getStyleFunction", ol.layer.Heatmap.prototype.getStyleFunction); goog.exportProperty(ol.layer.Heatmap.prototype, "getVisible", ol.layer.Heatmap.prototype.getVisible); goog.exportProperty(ol.layer.Heatmap.prototype, "notify", ol.layer.Heatmap.prototype.notify); goog.exportProperty(ol.layer.Heatmap.prototype, "on", ol.layer.Heatmap.prototype.on); goog.exportProperty(ol.layer.Heatmap.prototype, "once", ol.layer.Heatmap.prototype.once); goog.exportProperty(ol.layer.Heatmap.prototype, "set", ol.layer.Heatmap.prototype.set); goog.exportProperty(ol.layer.Heatmap.prototype, "setBrightness", ol.layer.Heatmap.prototype.setBrightness); goog.exportProperty(ol.layer.Heatmap.prototype, "setContrast", ol.layer.Heatmap.prototype.setContrast); goog.exportProperty(ol.layer.Heatmap.prototype, "setHue", ol.layer.Heatmap.prototype.setHue); goog.exportProperty(ol.layer.Heatmap.prototype, "setMaxResolution", ol.layer.Heatmap.prototype.setMaxResolution); goog.exportProperty(ol.layer.Heatmap.prototype, "setMinResolution", ol.layer.Heatmap.prototype.setMinResolution); goog.exportProperty(ol.layer.Heatmap.prototype, "setOpacity", ol.layer.Heatmap.prototype.setOpacity); goog.exportProperty(ol.layer.Heatmap.prototype, "setSaturation", ol.layer.Heatmap.prototype.setSaturation); goog.exportProperty(ol.layer.Heatmap.prototype, "setStyle", ol.layer.Heatmap.prototype.setStyle); goog.exportProperty(ol.layer.Heatmap.prototype, "setValues", ol.layer.Heatmap.prototype.setValues); goog.exportProperty(ol.layer.Heatmap.prototype, "setVisible", ol.layer.Heatmap.prototype.setVisible); goog.exportProperty(ol.layer.Heatmap.prototype, "un", ol.layer.Heatmap.prototype.un); goog.exportProperty(ol.layer.Heatmap.prototype, "unByKey", ol.layer.Heatmap.prototype.unByKey); goog.exportProperty(ol.layer.Heatmap.prototype, "unbind", ol.layer.Heatmap.prototype.unbind); goog.exportProperty(ol.layer.Heatmap.prototype, "unbindAll", ol.layer.Heatmap.prototype.unbindAll); goog.exportSymbol("ol.layer.Image", ol.layer.Image); goog.exportProperty(ol.layer.Image.prototype, "bindTo", ol.layer.Image.prototype.bindTo); goog.exportProperty(ol.layer.Image.prototype, "dispatchChangeEvent", ol.layer.Image.prototype.dispatchChangeEvent); goog.exportProperty(ol.layer.Image.prototype, "get", ol.layer.Image.prototype.get); goog.exportProperty(ol.layer.Image.prototype, "getBrightness", ol.layer.Image.prototype.getBrightness); goog.exportProperty(ol.layer.Image.prototype, "getContrast", ol.layer.Image.prototype.getContrast); goog.exportProperty(ol.layer.Image.prototype, "getHue", ol.layer.Image.prototype.getHue); goog.exportProperty(ol.layer.Image.prototype, "getKeys", ol.layer.Image.prototype.getKeys); goog.exportProperty(ol.layer.Image.prototype, "getMaxResolution", ol.layer.Image.prototype.getMaxResolution); goog.exportProperty(ol.layer.Image.prototype, "getMinResolution", ol.layer.Image.prototype.getMinResolution); goog.exportProperty(ol.layer.Image.prototype, "getOpacity", ol.layer.Image.prototype.getOpacity); goog.exportProperty(ol.layer.Image.prototype, "getProperties", ol.layer.Image.prototype.getProperties); goog.exportProperty(ol.layer.Image.prototype, "getSaturation", ol.layer.Image.prototype.getSaturation); goog.exportProperty(ol.layer.Image.prototype, "getSource", ol.layer.Image.prototype.getSource); goog.exportProperty(ol.layer.Image.prototype, "getVisible", ol.layer.Image.prototype.getVisible); goog.exportProperty(ol.layer.Image.prototype, "notify", ol.layer.Image.prototype.notify); goog.exportProperty(ol.layer.Image.prototype, "on", ol.layer.Image.prototype.on); goog.exportProperty(ol.layer.Image.prototype, "once", ol.layer.Image.prototype.once); goog.exportProperty(ol.layer.Image.prototype, "set", ol.layer.Image.prototype.set); goog.exportProperty(ol.layer.Image.prototype, "setBrightness", ol.layer.Image.prototype.setBrightness); goog.exportProperty(ol.layer.Image.prototype, "setContrast", ol.layer.Image.prototype.setContrast); goog.exportProperty(ol.layer.Image.prototype, "setHue", ol.layer.Image.prototype.setHue); goog.exportProperty(ol.layer.Image.prototype, "setMaxResolution", ol.layer.Image.prototype.setMaxResolution); goog.exportProperty(ol.layer.Image.prototype, "setMinResolution", ol.layer.Image.prototype.setMinResolution); goog.exportProperty(ol.layer.Image.prototype, "setOpacity", ol.layer.Image.prototype.setOpacity); goog.exportProperty(ol.layer.Image.prototype, "setSaturation", ol.layer.Image.prototype.setSaturation); goog.exportProperty(ol.layer.Image.prototype, "setValues", ol.layer.Image.prototype.setValues); goog.exportProperty(ol.layer.Image.prototype, "setVisible", ol.layer.Image.prototype.setVisible); goog.exportProperty(ol.layer.Image.prototype, "un", ol.layer.Image.prototype.un); goog.exportProperty(ol.layer.Image.prototype, "unByKey", ol.layer.Image.prototype.unByKey); goog.exportProperty(ol.layer.Image.prototype, "unbind", ol.layer.Image.prototype.unbind); goog.exportProperty(ol.layer.Image.prototype, "unbindAll", ol.layer.Image.prototype.unbindAll); goog.exportSymbol("ol.layer.Layer", ol.layer.Layer); goog.exportProperty(ol.layer.Layer.prototype, "bindTo", ol.layer.Layer.prototype.bindTo); goog.exportProperty(ol.layer.Layer.prototype, "dispatchChangeEvent", ol.layer.Layer.prototype.dispatchChangeEvent); goog.exportProperty(ol.layer.Layer.prototype, "get", ol.layer.Layer.prototype.get); goog.exportProperty(ol.layer.Layer.prototype, "getBrightness", ol.layer.Layer.prototype.getBrightness); goog.exportProperty(ol.layer.Layer.prototype, "getContrast", ol.layer.Layer.prototype.getContrast); goog.exportProperty(ol.layer.Layer.prototype, "getHue", ol.layer.Layer.prototype.getHue); goog.exportProperty(ol.layer.Layer.prototype, "getKeys", ol.layer.Layer.prototype.getKeys); goog.exportProperty(ol.layer.Layer.prototype, "getMaxResolution", ol.layer.Layer.prototype.getMaxResolution); goog.exportProperty(ol.layer.Layer.prototype, "getMinResolution", ol.layer.Layer.prototype.getMinResolution); goog.exportProperty(ol.layer.Layer.prototype, "getOpacity", ol.layer.Layer.prototype.getOpacity); goog.exportProperty(ol.layer.Layer.prototype, "getProperties", ol.layer.Layer.prototype.getProperties); goog.exportProperty(ol.layer.Layer.prototype, "getSaturation", ol.layer.Layer.prototype.getSaturation); goog.exportProperty(ol.layer.Layer.prototype, "getSource", ol.layer.Layer.prototype.getSource); goog.exportProperty(ol.layer.Layer.prototype, "getVisible", ol.layer.Layer.prototype.getVisible); goog.exportProperty(ol.layer.Layer.prototype, "notify", ol.layer.Layer.prototype.notify); goog.exportProperty(ol.layer.Layer.prototype, "on", ol.layer.Layer.prototype.on); goog.exportProperty(ol.layer.Layer.prototype, "once", ol.layer.Layer.prototype.once); goog.exportProperty(ol.layer.Layer.prototype, "set", ol.layer.Layer.prototype.set); goog.exportProperty(ol.layer.Layer.prototype, "setBrightness", ol.layer.Layer.prototype.setBrightness); goog.exportProperty(ol.layer.Layer.prototype, "setContrast", ol.layer.Layer.prototype.setContrast); goog.exportProperty(ol.layer.Layer.prototype, "setHue", ol.layer.Layer.prototype.setHue); goog.exportProperty(ol.layer.Layer.prototype, "setMaxResolution", ol.layer.Layer.prototype.setMaxResolution); goog.exportProperty(ol.layer.Layer.prototype, "setMinResolution", ol.layer.Layer.prototype.setMinResolution); goog.exportProperty(ol.layer.Layer.prototype, "setOpacity", ol.layer.Layer.prototype.setOpacity); goog.exportProperty(ol.layer.Layer.prototype, "setSaturation", ol.layer.Layer.prototype.setSaturation); goog.exportProperty(ol.layer.Layer.prototype, "setValues", ol.layer.Layer.prototype.setValues); goog.exportProperty(ol.layer.Layer.prototype, "setVisible", ol.layer.Layer.prototype.setVisible); goog.exportProperty(ol.layer.Layer.prototype, "un", ol.layer.Layer.prototype.un); goog.exportProperty(ol.layer.Layer.prototype, "unByKey", ol.layer.Layer.prototype.unByKey); goog.exportProperty(ol.layer.Layer.prototype, "unbind", ol.layer.Layer.prototype.unbind); goog.exportProperty(ol.layer.Layer.prototype, "unbindAll", ol.layer.Layer.prototype.unbindAll); goog.exportSymbol("ol.layer.Tile", ol.layer.Tile); goog.exportProperty(ol.layer.Tile.prototype, "bindTo", ol.layer.Tile.prototype.bindTo); goog.exportProperty(ol.layer.Tile.prototype, "dispatchChangeEvent", ol.layer.Tile.prototype.dispatchChangeEvent); goog.exportProperty(ol.layer.Tile.prototype, "get", ol.layer.Tile.prototype.get); goog.exportProperty(ol.layer.Tile.prototype, "getBrightness", ol.layer.Tile.prototype.getBrightness); goog.exportProperty(ol.layer.Tile.prototype, "getContrast", ol.layer.Tile.prototype.getContrast); goog.exportProperty(ol.layer.Tile.prototype, "getHue", ol.layer.Tile.prototype.getHue); goog.exportProperty(ol.layer.Tile.prototype, "getKeys", ol.layer.Tile.prototype.getKeys); goog.exportProperty(ol.layer.Tile.prototype, "getMaxResolution", ol.layer.Tile.prototype.getMaxResolution); goog.exportProperty(ol.layer.Tile.prototype, "getMinResolution", ol.layer.Tile.prototype.getMinResolution); goog.exportProperty(ol.layer.Tile.prototype, "getOpacity", ol.layer.Tile.prototype.getOpacity); goog.exportProperty(ol.layer.Tile.prototype, "getProperties", ol.layer.Tile.prototype.getProperties); goog.exportProperty(ol.layer.Tile.prototype, "getSaturation", ol.layer.Tile.prototype.getSaturation); goog.exportProperty(ol.layer.Tile.prototype, "getSource", ol.layer.Tile.prototype.getSource); goog.exportProperty(ol.layer.Tile.prototype, "getVisible", ol.layer.Tile.prototype.getVisible); goog.exportProperty(ol.layer.Tile.prototype, "notify", ol.layer.Tile.prototype.notify); goog.exportProperty(ol.layer.Tile.prototype, "on", ol.layer.Tile.prototype.on); goog.exportProperty(ol.layer.Tile.prototype, "once", ol.layer.Tile.prototype.once); goog.exportProperty(ol.layer.Tile.prototype, "set", ol.layer.Tile.prototype.set); goog.exportProperty(ol.layer.Tile.prototype, "setBrightness", ol.layer.Tile.prototype.setBrightness); goog.exportProperty(ol.layer.Tile.prototype, "setContrast", ol.layer.Tile.prototype.setContrast); goog.exportProperty(ol.layer.Tile.prototype, "setHue", ol.layer.Tile.prototype.setHue); goog.exportProperty(ol.layer.Tile.prototype, "setMaxResolution", ol.layer.Tile.prototype.setMaxResolution); goog.exportProperty(ol.layer.Tile.prototype, "setMinResolution", ol.layer.Tile.prototype.setMinResolution); goog.exportProperty(ol.layer.Tile.prototype, "setOpacity", ol.layer.Tile.prototype.setOpacity); goog.exportProperty(ol.layer.Tile.prototype, "setSaturation", ol.layer.Tile.prototype.setSaturation); goog.exportProperty(ol.layer.Tile.prototype, "setValues", ol.layer.Tile.prototype.setValues); goog.exportProperty(ol.layer.Tile.prototype, "setVisible", ol.layer.Tile.prototype.setVisible); goog.exportProperty(ol.layer.Tile.prototype, "un", ol.layer.Tile.prototype.un); goog.exportProperty(ol.layer.Tile.prototype, "unByKey", ol.layer.Tile.prototype.unByKey); goog.exportProperty(ol.layer.Tile.prototype, "unbind", ol.layer.Tile.prototype.unbind); goog.exportProperty(ol.layer.Tile.prototype, "unbindAll", ol.layer.Tile.prototype.unbindAll); goog.exportSymbol("ol.layer.Vector", ol.layer.Vector); goog.exportProperty(ol.layer.Vector.prototype, "bindTo", ol.layer.Vector.prototype.bindTo); goog.exportProperty(ol.layer.Vector.prototype, "dispatchChangeEvent", ol.layer.Vector.prototype.dispatchChangeEvent); goog.exportProperty(ol.layer.Vector.prototype, "get", ol.layer.Vector.prototype.get); goog.exportProperty(ol.layer.Vector.prototype, "getBrightness", ol.layer.Vector.prototype.getBrightness); goog.exportProperty(ol.layer.Vector.prototype, "getContrast", ol.layer.Vector.prototype.getContrast); goog.exportProperty(ol.layer.Vector.prototype, "getHue", ol.layer.Vector.prototype.getHue); goog.exportProperty(ol.layer.Vector.prototype, "getKeys", ol.layer.Vector.prototype.getKeys); goog.exportProperty(ol.layer.Vector.prototype, "getMaxResolution", ol.layer.Vector.prototype.getMaxResolution); goog.exportProperty(ol.layer.Vector.prototype, "getMinResolution", ol.layer.Vector.prototype.getMinResolution); goog.exportProperty(ol.layer.Vector.prototype, "getOpacity", ol.layer.Vector.prototype.getOpacity); goog.exportProperty(ol.layer.Vector.prototype, "getProperties", ol.layer.Vector.prototype.getProperties); goog.exportProperty(ol.layer.Vector.prototype, "getSaturation", ol.layer.Vector.prototype.getSaturation); goog.exportProperty(ol.layer.Vector.prototype, "getSource", ol.layer.Vector.prototype.getSource); goog.exportProperty(ol.layer.Vector.prototype, "getStyle", ol.layer.Vector.prototype.getStyle); goog.exportProperty(ol.layer.Vector.prototype, "getStyleFunction", ol.layer.Vector.prototype.getStyleFunction); goog.exportProperty(ol.layer.Vector.prototype, "getVisible", ol.layer.Vector.prototype.getVisible); goog.exportProperty(ol.layer.Vector.prototype, "notify", ol.layer.Vector.prototype.notify); goog.exportProperty(ol.layer.Vector.prototype, "on", ol.layer.Vector.prototype.on); goog.exportProperty(ol.layer.Vector.prototype, "once", ol.layer.Vector.prototype.once); goog.exportProperty(ol.layer.Vector.prototype, "set", ol.layer.Vector.prototype.set); goog.exportProperty(ol.layer.Vector.prototype, "setBrightness", ol.layer.Vector.prototype.setBrightness); goog.exportProperty(ol.layer.Vector.prototype, "setContrast", ol.layer.Vector.prototype.setContrast); goog.exportProperty(ol.layer.Vector.prototype, "setHue", ol.layer.Vector.prototype.setHue); goog.exportProperty(ol.layer.Vector.prototype, "setMaxResolution", ol.layer.Vector.prototype.setMaxResolution); goog.exportProperty(ol.layer.Vector.prototype, "setMinResolution", ol.layer.Vector.prototype.setMinResolution); goog.exportProperty(ol.layer.Vector.prototype, "setOpacity", ol.layer.Vector.prototype.setOpacity); goog.exportProperty(ol.layer.Vector.prototype, "setSaturation", ol.layer.Vector.prototype.setSaturation); goog.exportProperty(ol.layer.Vector.prototype, "setStyle", ol.layer.Vector.prototype.setStyle); goog.exportProperty(ol.layer.Vector.prototype, "setValues", ol.layer.Vector.prototype.setValues); goog.exportProperty(ol.layer.Vector.prototype, "setVisible", ol.layer.Vector.prototype.setVisible); goog.exportProperty(ol.layer.Vector.prototype, "un", ol.layer.Vector.prototype.un); goog.exportProperty(ol.layer.Vector.prototype, "unByKey", ol.layer.Vector.prototype.unByKey); goog.exportProperty(ol.layer.Vector.prototype, "unbind", ol.layer.Vector.prototype.unbind); goog.exportProperty(ol.layer.Vector.prototype, "unbindAll", ol.layer.Vector.prototype.unbindAll); goog.exportSymbol("ol.loadingstrategy.all", ol.loadingstrategy.all); goog.exportSymbol("ol.loadingstrategy.bbox", ol.loadingstrategy.bbox); goog.exportSymbol("ol.loadingstrategy.createTile", ol.loadingstrategy.createTile); goog.exportSymbol("ol.proj.CH", ol.proj.CH); goog.exportProperty(ol.proj.CH.prototype, "getCode", ol.proj.CH.prototype.getCode); goog.exportProperty(ol.proj.CH.prototype, "getExtent", ol.proj.CH.prototype.getExtent); goog.exportProperty(ol.proj.CH.prototype, "getUnits", ol.proj.CH.prototype.getUnits); goog.exportSymbol("ol.proj.EPSG2056", ol.proj.EPSG2056); goog.exportProperty(ol.proj.EPSG2056.prototype, "getCode", ol.proj.EPSG2056.prototype.getCode); goog.exportProperty(ol.proj.EPSG2056.prototype, "getExtent", ol.proj.EPSG2056.prototype.getExtent); goog.exportProperty(ol.proj.EPSG2056.prototype, "getUnits", ol.proj.EPSG2056.prototype.getUnits); goog.exportSymbol("ol.proj.EPSG21781", ol.proj.EPSG21781); goog.exportProperty(ol.proj.EPSG21781.prototype, "getCode", ol.proj.EPSG21781.prototype.getCode); goog.exportProperty(ol.proj.EPSG21781.prototype, "getExtent", ol.proj.EPSG21781.prototype.getExtent); goog.exportProperty(ol.proj.EPSG21781.prototype, "getUnits", ol.proj.EPSG21781.prototype.getUnits); goog.exportSymbol("ol.proj.EPSG3857", ol.proj.EPSG3857); goog.exportProperty(ol.proj.EPSG3857.prototype, "getCode", ol.proj.EPSG3857.prototype.getCode); goog.exportProperty(ol.proj.EPSG3857.prototype, "getExtent", ol.proj.EPSG3857.prototype.getExtent); goog.exportProperty(ol.proj.EPSG3857.prototype, "getUnits", ol.proj.EPSG3857.prototype.getUnits); goog.exportSymbol("ol.proj.EPSG4326", ol.proj.EPSG4326); goog.exportProperty(ol.proj.EPSG4326.prototype, "getCode", ol.proj.EPSG4326.prototype.getCode); goog.exportProperty(ol.proj.EPSG4326.prototype, "getExtent", ol.proj.EPSG4326.prototype.getExtent); goog.exportProperty(ol.proj.EPSG4326.prototype, "getUnits", ol.proj.EPSG4326.prototype.getUnits); goog.exportSymbol("ol.proj.METERS_PER_UNIT[undefined]", ol.proj.METERS_PER_UNIT[undefined]); goog.exportSymbol("ol.proj.Projection", ol.proj.Projection); goog.exportProperty(ol.proj.Projection.prototype, "getCode", ol.proj.Projection.prototype.getCode); goog.exportProperty(ol.proj.Projection.prototype, "getExtent", ol.proj.Projection.prototype.getExtent); goog.exportProperty(ol.proj.Projection.prototype, "getUnits", ol.proj.Projection.prototype.getUnits); goog.exportSymbol("ol.proj.addProjection", ol.proj.addProjection); goog.exportSymbol("ol.proj.common.add", ol.proj.common.add); goog.exportSymbol("ol.proj.configureProj4jsProjection", ol.proj.configureProj4jsProjection); goog.exportSymbol("ol.proj.get", ol.proj.get); goog.exportSymbol("ol.proj.getTransform", ol.proj.getTransform); goog.exportSymbol("ol.proj.getTransformFromProjections", ol.proj.getTransformFromProjections); goog.exportSymbol("ol.proj.transform", ol.proj.transform); goog.exportSymbol("ol.proj.transformWithProjections", ol.proj.transformWithProjections); goog.exportProperty(ol.render.canvas.Immediate.prototype, "drawAsync", ol.render.canvas.Immediate.prototype.drawAsync); goog.exportProperty(ol.render.canvas.Immediate.prototype, "drawCircleGeometry", ol.render.canvas.Immediate.prototype.drawCircleGeometry); goog.exportProperty(ol.render.canvas.Immediate.prototype, "drawFeature", ol.render.canvas.Immediate.prototype.drawFeature); goog.exportProperty(ol.render.canvas.Immediate.prototype, "drawLineStringGeometry", ol.render.canvas.Immediate.prototype.drawLineStringGeometry); goog.exportProperty(ol.render.canvas.Immediate.prototype, "drawMultiLineStringGeometry", ol.render.canvas.Immediate.prototype.drawMultiLineStringGeometry); goog.exportProperty(ol.render.canvas.Immediate.prototype, "drawMultiPointGeometry", ol.render.canvas.Immediate.prototype.drawMultiPointGeometry); goog.exportProperty(ol.render.canvas.Immediate.prototype, "drawMultiPolygonGeometry", ol.render.canvas.Immediate.prototype.drawMultiPolygonGeometry); goog.exportProperty(ol.render.canvas.Immediate.prototype, "drawPointGeometry", ol.render.canvas.Immediate.prototype.drawPointGeometry); goog.exportProperty(ol.render.canvas.Immediate.prototype, "drawPolygonGeometry", ol.render.canvas.Immediate.prototype.drawPolygonGeometry); goog.exportProperty(ol.render.canvas.Immediate.prototype, "setFillStrokeStyle", ol.render.canvas.Immediate.prototype.setFillStrokeStyle); goog.exportProperty(ol.render.canvas.Immediate.prototype, "setImageStyle", ol.render.canvas.Immediate.prototype.setImageStyle); goog.exportProperty(ol.render.canvas.Immediate.prototype, "setTextStyle", ol.render.canvas.Immediate.prototype.setTextStyle); goog.exportSymbol("ol.source.BingMaps", ol.source.BingMaps); goog.exportProperty(ol.source.BingMaps.prototype, "dispatchChangeEvent", ol.source.BingMaps.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.BingMaps.prototype, "getState", ol.source.BingMaps.prototype.getState); goog.exportProperty(ol.source.BingMaps.prototype, "getTileGrid", ol.source.BingMaps.prototype.getTileGrid); goog.exportProperty(ol.source.BingMaps.prototype, "on", ol.source.BingMaps.prototype.on); goog.exportProperty(ol.source.BingMaps.prototype, "once", ol.source.BingMaps.prototype.once); goog.exportProperty(ol.source.BingMaps.prototype, "un", ol.source.BingMaps.prototype.un); goog.exportProperty(ol.source.BingMaps.prototype, "unByKey", ol.source.BingMaps.prototype.unByKey); goog.exportSymbol("ol.source.BingMaps.TOS_ATTRIBUTION", ol.source.BingMaps.TOS_ATTRIBUTION); goog.exportProperty(ol.source.FormatVector.prototype, "addFeature", ol.source.FormatVector.prototype.addFeature); goog.exportProperty(ol.source.FormatVector.prototype, "addFeatures", ol.source.FormatVector.prototype.addFeatures); goog.exportProperty(ol.source.FormatVector.prototype, "dispatchChangeEvent", ol.source.FormatVector.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.FormatVector.prototype, "forEachFeature", ol.source.FormatVector.prototype.forEachFeature); goog.exportProperty(ol.source.FormatVector.prototype, "forEachFeatureInExtent", ol.source.FormatVector.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.FormatVector.prototype, "getClosestFeatureToCoordinate", ol.source.FormatVector.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.FormatVector.prototype, "getExtent", ol.source.FormatVector.prototype.getExtent); goog.exportProperty(ol.source.FormatVector.prototype, "getFeatures", ol.source.FormatVector.prototype.getFeatures); goog.exportProperty(ol.source.FormatVector.prototype, "getFeaturesAtCoordinate", ol.source.FormatVector.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.FormatVector.prototype, "getState", ol.source.FormatVector.prototype.getState); goog.exportProperty(ol.source.FormatVector.prototype, "on", ol.source.FormatVector.prototype.on); goog.exportProperty(ol.source.FormatVector.prototype, "once", ol.source.FormatVector.prototype.once); goog.exportProperty(ol.source.FormatVector.prototype, "removeFeature", ol.source.FormatVector.prototype.removeFeature); goog.exportProperty(ol.source.FormatVector.prototype, "un", ol.source.FormatVector.prototype.un); goog.exportProperty(ol.source.FormatVector.prototype, "unByKey", ol.source.FormatVector.prototype.unByKey); goog.exportSymbol("ol.source.GPX", ol.source.GPX); goog.exportProperty(ol.source.GPX.prototype, "addFeature", ol.source.GPX.prototype.addFeature); goog.exportProperty(ol.source.GPX.prototype, "addFeatures", ol.source.GPX.prototype.addFeatures); goog.exportProperty(ol.source.GPX.prototype, "dispatchChangeEvent", ol.source.GPX.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.GPX.prototype, "forEachFeature", ol.source.GPX.prototype.forEachFeature); goog.exportProperty(ol.source.GPX.prototype, "forEachFeatureInExtent", ol.source.GPX.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.GPX.prototype, "getClosestFeatureToCoordinate", ol.source.GPX.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.GPX.prototype, "getExtent", ol.source.GPX.prototype.getExtent); goog.exportProperty(ol.source.GPX.prototype, "getFeatures", ol.source.GPX.prototype.getFeatures); goog.exportProperty(ol.source.GPX.prototype, "getFeaturesAtCoordinate", ol.source.GPX.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.GPX.prototype, "getState", ol.source.GPX.prototype.getState); goog.exportProperty(ol.source.GPX.prototype, "on", ol.source.GPX.prototype.on); goog.exportProperty(ol.source.GPX.prototype, "once", ol.source.GPX.prototype.once); goog.exportProperty(ol.source.GPX.prototype, "removeFeature", ol.source.GPX.prototype.removeFeature); goog.exportProperty(ol.source.GPX.prototype, "un", ol.source.GPX.prototype.un); goog.exportProperty(ol.source.GPX.prototype, "unByKey", ol.source.GPX.prototype.unByKey); goog.exportSymbol("ol.source.GeoJSON", ol.source.GeoJSON); goog.exportProperty(ol.source.GeoJSON.prototype, "addFeature", ol.source.GeoJSON.prototype.addFeature); goog.exportProperty(ol.source.GeoJSON.prototype, "addFeatures", ol.source.GeoJSON.prototype.addFeatures); goog.exportProperty(ol.source.GeoJSON.prototype, "dispatchChangeEvent", ol.source.GeoJSON.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.GeoJSON.prototype, "forEachFeature", ol.source.GeoJSON.prototype.forEachFeature); goog.exportProperty(ol.source.GeoJSON.prototype, "forEachFeatureInExtent", ol.source.GeoJSON.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.GeoJSON.prototype, "getClosestFeatureToCoordinate", ol.source.GeoJSON.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.GeoJSON.prototype, "getExtent", ol.source.GeoJSON.prototype.getExtent); goog.exportProperty(ol.source.GeoJSON.prototype, "getFeatures", ol.source.GeoJSON.prototype.getFeatures); goog.exportProperty(ol.source.GeoJSON.prototype, "getFeaturesAtCoordinate", ol.source.GeoJSON.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.GeoJSON.prototype, "getState", ol.source.GeoJSON.prototype.getState); goog.exportProperty(ol.source.GeoJSON.prototype, "on", ol.source.GeoJSON.prototype.on); goog.exportProperty(ol.source.GeoJSON.prototype, "once", ol.source.GeoJSON.prototype.once); goog.exportProperty(ol.source.GeoJSON.prototype, "removeFeature", ol.source.GeoJSON.prototype.removeFeature); goog.exportProperty(ol.source.GeoJSON.prototype, "un", ol.source.GeoJSON.prototype.un); goog.exportProperty(ol.source.GeoJSON.prototype, "unByKey", ol.source.GeoJSON.prototype.unByKey); goog.exportSymbol("ol.source.IGC", ol.source.IGC); goog.exportProperty(ol.source.IGC.prototype, "addFeature", ol.source.IGC.prototype.addFeature); goog.exportProperty(ol.source.IGC.prototype, "addFeatures", ol.source.IGC.prototype.addFeatures); goog.exportProperty(ol.source.IGC.prototype, "dispatchChangeEvent", ol.source.IGC.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.IGC.prototype, "forEachFeature", ol.source.IGC.prototype.forEachFeature); goog.exportProperty(ol.source.IGC.prototype, "forEachFeatureInExtent", ol.source.IGC.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.IGC.prototype, "getClosestFeatureToCoordinate", ol.source.IGC.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.IGC.prototype, "getExtent", ol.source.IGC.prototype.getExtent); goog.exportProperty(ol.source.IGC.prototype, "getFeatures", ol.source.IGC.prototype.getFeatures); goog.exportProperty(ol.source.IGC.prototype, "getFeaturesAtCoordinate", ol.source.IGC.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.IGC.prototype, "getState", ol.source.IGC.prototype.getState); goog.exportProperty(ol.source.IGC.prototype, "on", ol.source.IGC.prototype.on); goog.exportProperty(ol.source.IGC.prototype, "once", ol.source.IGC.prototype.once); goog.exportProperty(ol.source.IGC.prototype, "removeFeature", ol.source.IGC.prototype.removeFeature); goog.exportProperty(ol.source.IGC.prototype, "un", ol.source.IGC.prototype.un); goog.exportProperty(ol.source.IGC.prototype, "unByKey", ol.source.IGC.prototype.unByKey); goog.exportProperty(ol.source.Image.prototype, "dispatchChangeEvent", ol.source.Image.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.Image.prototype, "getState", ol.source.Image.prototype.getState); goog.exportProperty(ol.source.Image.prototype, "on", ol.source.Image.prototype.on); goog.exportProperty(ol.source.Image.prototype, "once", ol.source.Image.prototype.once); goog.exportProperty(ol.source.Image.prototype, "un", ol.source.Image.prototype.un); goog.exportProperty(ol.source.Image.prototype, "unByKey", ol.source.Image.prototype.unByKey); goog.exportSymbol("ol.source.ImageCanvas", ol.source.ImageCanvas); goog.exportProperty(ol.source.ImageCanvas.prototype, "dispatchChangeEvent", ol.source.ImageCanvas.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.ImageCanvas.prototype, "getState", ol.source.ImageCanvas.prototype.getState); goog.exportProperty(ol.source.ImageCanvas.prototype, "on", ol.source.ImageCanvas.prototype.on); goog.exportProperty(ol.source.ImageCanvas.prototype, "once", ol.source.ImageCanvas.prototype.once); goog.exportProperty(ol.source.ImageCanvas.prototype, "un", ol.source.ImageCanvas.prototype.un); goog.exportProperty(ol.source.ImageCanvas.prototype, "unByKey", ol.source.ImageCanvas.prototype.unByKey); goog.exportSymbol("ol.source.ImageStatic", ol.source.ImageStatic); goog.exportProperty(ol.source.ImageStatic.prototype, "dispatchChangeEvent", ol.source.ImageStatic.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.ImageStatic.prototype, "getState", ol.source.ImageStatic.prototype.getState); goog.exportProperty(ol.source.ImageStatic.prototype, "on", ol.source.ImageStatic.prototype.on); goog.exportProperty(ol.source.ImageStatic.prototype, "once", ol.source.ImageStatic.prototype.once); goog.exportProperty(ol.source.ImageStatic.prototype, "un", ol.source.ImageStatic.prototype.un); goog.exportProperty(ol.source.ImageStatic.prototype, "unByKey", ol.source.ImageStatic.prototype.unByKey); goog.exportSymbol("ol.source.ImageVector", ol.source.ImageVector); goog.exportProperty(ol.source.ImageVector.prototype, "dispatchChangeEvent", ol.source.ImageVector.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.ImageVector.prototype, "getSource", ol.source.ImageVector.prototype.getSource); goog.exportProperty(ol.source.ImageVector.prototype, "getState", ol.source.ImageVector.prototype.getState); goog.exportProperty(ol.source.ImageVector.prototype, "on", ol.source.ImageVector.prototype.on); goog.exportProperty(ol.source.ImageVector.prototype, "once", ol.source.ImageVector.prototype.once); goog.exportProperty(ol.source.ImageVector.prototype, "un", ol.source.ImageVector.prototype.un); goog.exportProperty(ol.source.ImageVector.prototype, "unByKey", ol.source.ImageVector.prototype.unByKey); goog.exportSymbol("ol.source.ImageWMS", ol.source.ImageWMS); goog.exportProperty(ol.source.ImageWMS.prototype, "dispatchChangeEvent", ol.source.ImageWMS.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.ImageWMS.prototype, "getGetFeatureInfoUrl", ol.source.ImageWMS.prototype.getGetFeatureInfoUrl); goog.exportProperty(ol.source.ImageWMS.prototype, "getParams", ol.source.ImageWMS.prototype.getParams); goog.exportProperty(ol.source.ImageWMS.prototype, "getState", ol.source.ImageWMS.prototype.getState); goog.exportProperty(ol.source.ImageWMS.prototype, "getUrl", ol.source.ImageWMS.prototype.getUrl); goog.exportProperty(ol.source.ImageWMS.prototype, "on", ol.source.ImageWMS.prototype.on); goog.exportProperty(ol.source.ImageWMS.prototype, "once", ol.source.ImageWMS.prototype.once); goog.exportProperty(ol.source.ImageWMS.prototype, "setUrl", ol.source.ImageWMS.prototype.setUrl); goog.exportProperty(ol.source.ImageWMS.prototype, "un", ol.source.ImageWMS.prototype.un); goog.exportProperty(ol.source.ImageWMS.prototype, "unByKey", ol.source.ImageWMS.prototype.unByKey); goog.exportProperty(ol.source.ImageWMS.prototype, "updateParams", ol.source.ImageWMS.prototype.updateParams); goog.exportSymbol("ol.source.KML", ol.source.KML); goog.exportProperty(ol.source.KML.prototype, "addFeature", ol.source.KML.prototype.addFeature); goog.exportProperty(ol.source.KML.prototype, "addFeatures", ol.source.KML.prototype.addFeatures); goog.exportProperty(ol.source.KML.prototype, "dispatchChangeEvent", ol.source.KML.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.KML.prototype, "forEachFeature", ol.source.KML.prototype.forEachFeature); goog.exportProperty(ol.source.KML.prototype, "forEachFeatureInExtent", ol.source.KML.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.KML.prototype, "getClosestFeatureToCoordinate", ol.source.KML.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.KML.prototype, "getExtent", ol.source.KML.prototype.getExtent); goog.exportProperty(ol.source.KML.prototype, "getFeatures", ol.source.KML.prototype.getFeatures); goog.exportProperty(ol.source.KML.prototype, "getFeaturesAtCoordinate", ol.source.KML.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.KML.prototype, "getState", ol.source.KML.prototype.getState); goog.exportProperty(ol.source.KML.prototype, "on", ol.source.KML.prototype.on); goog.exportProperty(ol.source.KML.prototype, "once", ol.source.KML.prototype.once); goog.exportProperty(ol.source.KML.prototype, "removeFeature", ol.source.KML.prototype.removeFeature); goog.exportProperty(ol.source.KML.prototype, "un", ol.source.KML.prototype.un); goog.exportProperty(ol.source.KML.prototype, "unByKey", ol.source.KML.prototype.unByKey); goog.exportSymbol("ol.source.MapGuide", ol.source.MapGuide); goog.exportProperty(ol.source.MapGuide.prototype, "dispatchChangeEvent", ol.source.MapGuide.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.MapGuide.prototype, "getState", ol.source.MapGuide.prototype.getState); goog.exportProperty(ol.source.MapGuide.prototype, "on", ol.source.MapGuide.prototype.on); goog.exportProperty(ol.source.MapGuide.prototype, "once", ol.source.MapGuide.prototype.once); goog.exportProperty(ol.source.MapGuide.prototype, "un", ol.source.MapGuide.prototype.un); goog.exportProperty(ol.source.MapGuide.prototype, "unByKey", ol.source.MapGuide.prototype.unByKey); goog.exportSymbol("ol.source.MapQuest", ol.source.MapQuest); goog.exportProperty(ol.source.MapQuest.prototype, "dispatchChangeEvent", ol.source.MapQuest.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.MapQuest.prototype, "getState", ol.source.MapQuest.prototype.getState); goog.exportProperty(ol.source.MapQuest.prototype, "getTileGrid", ol.source.MapQuest.prototype.getTileGrid); goog.exportProperty(ol.source.MapQuest.prototype, "on", ol.source.MapQuest.prototype.on); goog.exportProperty(ol.source.MapQuest.prototype, "once", ol.source.MapQuest.prototype.once); goog.exportProperty(ol.source.MapQuest.prototype, "setUrl", ol.source.MapQuest.prototype.setUrl); goog.exportProperty(ol.source.MapQuest.prototype, "un", ol.source.MapQuest.prototype.un); goog.exportProperty(ol.source.MapQuest.prototype, "unByKey", ol.source.MapQuest.prototype.unByKey); goog.exportSymbol("ol.source.OSM", ol.source.OSM); goog.exportProperty(ol.source.OSM.prototype, "dispatchChangeEvent", ol.source.OSM.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.OSM.prototype, "getState", ol.source.OSM.prototype.getState); goog.exportProperty(ol.source.OSM.prototype, "getTileGrid", ol.source.OSM.prototype.getTileGrid); goog.exportProperty(ol.source.OSM.prototype, "on", ol.source.OSM.prototype.on); goog.exportProperty(ol.source.OSM.prototype, "once", ol.source.OSM.prototype.once); goog.exportProperty(ol.source.OSM.prototype, "setUrl", ol.source.OSM.prototype.setUrl); goog.exportProperty(ol.source.OSM.prototype, "un", ol.source.OSM.prototype.un); goog.exportProperty(ol.source.OSM.prototype, "unByKey", ol.source.OSM.prototype.unByKey); goog.exportSymbol("ol.source.OSM.DATA_ATTRIBUTION", ol.source.OSM.DATA_ATTRIBUTION); goog.exportSymbol("ol.source.OSM.TILE_ATTRIBUTION", ol.source.OSM.TILE_ATTRIBUTION); goog.exportSymbol("ol.source.OSMXML", ol.source.OSMXML); goog.exportProperty(ol.source.OSMXML.prototype, "addFeature", ol.source.OSMXML.prototype.addFeature); goog.exportProperty(ol.source.OSMXML.prototype, "addFeatures", ol.source.OSMXML.prototype.addFeatures); goog.exportProperty(ol.source.OSMXML.prototype, "dispatchChangeEvent", ol.source.OSMXML.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.OSMXML.prototype, "forEachFeature", ol.source.OSMXML.prototype.forEachFeature); goog.exportProperty(ol.source.OSMXML.prototype, "forEachFeatureInExtent", ol.source.OSMXML.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.OSMXML.prototype, "getClosestFeatureToCoordinate", ol.source.OSMXML.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.OSMXML.prototype, "getExtent", ol.source.OSMXML.prototype.getExtent); goog.exportProperty(ol.source.OSMXML.prototype, "getFeatures", ol.source.OSMXML.prototype.getFeatures); goog.exportProperty(ol.source.OSMXML.prototype, "getFeaturesAtCoordinate", ol.source.OSMXML.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.OSMXML.prototype, "getState", ol.source.OSMXML.prototype.getState); goog.exportProperty(ol.source.OSMXML.prototype, "on", ol.source.OSMXML.prototype.on); goog.exportProperty(ol.source.OSMXML.prototype, "once", ol.source.OSMXML.prototype.once); goog.exportProperty(ol.source.OSMXML.prototype, "removeFeature", ol.source.OSMXML.prototype.removeFeature); goog.exportProperty(ol.source.OSMXML.prototype, "un", ol.source.OSMXML.prototype.un); goog.exportProperty(ol.source.OSMXML.prototype, "unByKey", ol.source.OSMXML.prototype.unByKey); goog.exportSymbol("ol.source.ServerVector", ol.source.ServerVector); goog.exportProperty(ol.source.ServerVector.prototype, "addFeature", ol.source.ServerVector.prototype.addFeature); goog.exportProperty(ol.source.ServerVector.prototype, "addFeatures", ol.source.ServerVector.prototype.addFeatures); goog.exportProperty(ol.source.ServerVector.prototype, "dispatchChangeEvent", ol.source.ServerVector.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.ServerVector.prototype, "forEachFeature", ol.source.ServerVector.prototype.forEachFeature); goog.exportProperty(ol.source.ServerVector.prototype, "forEachFeatureInExtent", ol.source.ServerVector.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.ServerVector.prototype, "getClosestFeatureToCoordinate", ol.source.ServerVector.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.ServerVector.prototype, "getExtent", ol.source.ServerVector.prototype.getExtent); goog.exportProperty(ol.source.ServerVector.prototype, "getFeatures", ol.source.ServerVector.prototype.getFeatures); goog.exportProperty(ol.source.ServerVector.prototype, "getFeaturesAtCoordinate", ol.source.ServerVector.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.ServerVector.prototype, "getState", ol.source.ServerVector.prototype.getState); goog.exportProperty(ol.source.ServerVector.prototype, "on", ol.source.ServerVector.prototype.on); goog.exportProperty(ol.source.ServerVector.prototype, "once", ol.source.ServerVector.prototype.once); goog.exportProperty(ol.source.ServerVector.prototype, "readFeatures", ol.source.ServerVector.prototype.readFeatures); goog.exportProperty(ol.source.ServerVector.prototype, "removeFeature", ol.source.ServerVector.prototype.removeFeature); goog.exportProperty(ol.source.ServerVector.prototype, "un", ol.source.ServerVector.prototype.un); goog.exportProperty(ol.source.ServerVector.prototype, "unByKey", ol.source.ServerVector.prototype.unByKey); goog.exportProperty(ol.source.Source.prototype, "dispatchChangeEvent", ol.source.Source.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.Source.prototype, "getState", ol.source.Source.prototype.getState); goog.exportProperty(ol.source.Source.prototype, "on", ol.source.Source.prototype.on); goog.exportProperty(ol.source.Source.prototype, "once", ol.source.Source.prototype.once); goog.exportProperty(ol.source.Source.prototype, "un", ol.source.Source.prototype.un); goog.exportProperty(ol.source.Source.prototype, "unByKey", ol.source.Source.prototype.unByKey); goog.exportSymbol("ol.source.Stamen", ol.source.Stamen); goog.exportProperty(ol.source.Stamen.prototype, "dispatchChangeEvent", ol.source.Stamen.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.Stamen.prototype, "getState", ol.source.Stamen.prototype.getState); goog.exportProperty(ol.source.Stamen.prototype, "getTileGrid", ol.source.Stamen.prototype.getTileGrid); goog.exportProperty(ol.source.Stamen.prototype, "on", ol.source.Stamen.prototype.on); goog.exportProperty(ol.source.Stamen.prototype, "once", ol.source.Stamen.prototype.once); goog.exportProperty(ol.source.Stamen.prototype, "setUrl", ol.source.Stamen.prototype.setUrl); goog.exportProperty(ol.source.Stamen.prototype, "un", ol.source.Stamen.prototype.un); goog.exportProperty(ol.source.Stamen.prototype, "unByKey", ol.source.Stamen.prototype.unByKey); goog.exportSymbol("ol.source.StaticVector", ol.source.StaticVector); goog.exportProperty(ol.source.StaticVector.prototype, "addFeature", ol.source.StaticVector.prototype.addFeature); goog.exportProperty(ol.source.StaticVector.prototype, "addFeatures", ol.source.StaticVector.prototype.addFeatures); goog.exportProperty(ol.source.StaticVector.prototype, "dispatchChangeEvent", ol.source.StaticVector.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.StaticVector.prototype, "forEachFeature", ol.source.StaticVector.prototype.forEachFeature); goog.exportProperty(ol.source.StaticVector.prototype, "forEachFeatureInExtent", ol.source.StaticVector.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.StaticVector.prototype, "getClosestFeatureToCoordinate", ol.source.StaticVector.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.StaticVector.prototype, "getExtent", ol.source.StaticVector.prototype.getExtent); goog.exportProperty(ol.source.StaticVector.prototype, "getFeatures", ol.source.StaticVector.prototype.getFeatures); goog.exportProperty(ol.source.StaticVector.prototype, "getFeaturesAtCoordinate", ol.source.StaticVector.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.StaticVector.prototype, "getState", ol.source.StaticVector.prototype.getState); goog.exportProperty(ol.source.StaticVector.prototype, "on", ol.source.StaticVector.prototype.on); goog.exportProperty(ol.source.StaticVector.prototype, "once", ol.source.StaticVector.prototype.once); goog.exportProperty(ol.source.StaticVector.prototype, "removeFeature", ol.source.StaticVector.prototype.removeFeature); goog.exportProperty(ol.source.StaticVector.prototype, "un", ol.source.StaticVector.prototype.un); goog.exportProperty(ol.source.StaticVector.prototype, "unByKey", ol.source.StaticVector.prototype.unByKey); goog.exportSymbol("ol.source.Tile", ol.source.Tile); goog.exportProperty(ol.source.Tile.prototype, "dispatchChangeEvent", ol.source.Tile.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.Tile.prototype, "getState", ol.source.Tile.prototype.getState); goog.exportProperty(ol.source.Tile.prototype, "getTileGrid", ol.source.Tile.prototype.getTileGrid); goog.exportProperty(ol.source.Tile.prototype, "on", ol.source.Tile.prototype.on); goog.exportProperty(ol.source.Tile.prototype, "once", ol.source.Tile.prototype.once); goog.exportProperty(ol.source.Tile.prototype, "un", ol.source.Tile.prototype.un); goog.exportProperty(ol.source.Tile.prototype, "unByKey", ol.source.Tile.prototype.unByKey); goog.exportSymbol("ol.source.TileDebug", ol.source.TileDebug); goog.exportProperty(ol.source.TileDebug.prototype, "dispatchChangeEvent", ol.source.TileDebug.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.TileDebug.prototype, "getState", ol.source.TileDebug.prototype.getState); goog.exportProperty(ol.source.TileDebug.prototype, "getTileGrid", ol.source.TileDebug.prototype.getTileGrid); goog.exportProperty(ol.source.TileDebug.prototype, "on", ol.source.TileDebug.prototype.on); goog.exportProperty(ol.source.TileDebug.prototype, "once", ol.source.TileDebug.prototype.once); goog.exportProperty(ol.source.TileDebug.prototype, "un", ol.source.TileDebug.prototype.un); goog.exportProperty(ol.source.TileDebug.prototype, "unByKey", ol.source.TileDebug.prototype.unByKey); goog.exportSymbol("ol.source.TileImage", ol.source.TileImage); goog.exportProperty(ol.source.TileImage.prototype, "dispatchChangeEvent", ol.source.TileImage.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.TileImage.prototype, "getState", ol.source.TileImage.prototype.getState); goog.exportProperty(ol.source.TileImage.prototype, "getTileGrid", ol.source.TileImage.prototype.getTileGrid); goog.exportProperty(ol.source.TileImage.prototype, "on", ol.source.TileImage.prototype.on); goog.exportProperty(ol.source.TileImage.prototype, "once", ol.source.TileImage.prototype.once); goog.exportProperty(ol.source.TileImage.prototype, "un", ol.source.TileImage.prototype.un); goog.exportProperty(ol.source.TileImage.prototype, "unByKey", ol.source.TileImage.prototype.unByKey); goog.exportSymbol("ol.source.TileJSON", ol.source.TileJSON); goog.exportProperty(ol.source.TileJSON.prototype, "dispatchChangeEvent", ol.source.TileJSON.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.TileJSON.prototype, "getState", ol.source.TileJSON.prototype.getState); goog.exportProperty(ol.source.TileJSON.prototype, "getTileGrid", ol.source.TileJSON.prototype.getTileGrid); goog.exportProperty(ol.source.TileJSON.prototype, "on", ol.source.TileJSON.prototype.on); goog.exportProperty(ol.source.TileJSON.prototype, "once", ol.source.TileJSON.prototype.once); goog.exportProperty(ol.source.TileJSON.prototype, "un", ol.source.TileJSON.prototype.un); goog.exportProperty(ol.source.TileJSON.prototype, "unByKey", ol.source.TileJSON.prototype.unByKey); goog.exportSymbol("ol.source.TileVector", ol.source.TileVector); goog.exportProperty(ol.source.TileVector.prototype, "dispatchChangeEvent", ol.source.TileVector.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.TileVector.prototype, "getFeaturesAtCoordinate", ol.source.TileVector.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.TileVector.prototype, "getState", ol.source.TileVector.prototype.getState); goog.exportProperty(ol.source.TileVector.prototype, "on", ol.source.TileVector.prototype.on); goog.exportProperty(ol.source.TileVector.prototype, "once", ol.source.TileVector.prototype.once); goog.exportProperty(ol.source.TileVector.prototype, "un", ol.source.TileVector.prototype.un); goog.exportProperty(ol.source.TileVector.prototype, "unByKey", ol.source.TileVector.prototype.unByKey); goog.exportSymbol("ol.source.TileWMS", ol.source.TileWMS); goog.exportProperty(ol.source.TileWMS.prototype, "dispatchChangeEvent", ol.source.TileWMS.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.TileWMS.prototype, "getGetFeatureInfoUrl", ol.source.TileWMS.prototype.getGetFeatureInfoUrl); goog.exportProperty(ol.source.TileWMS.prototype, "getParams", ol.source.TileWMS.prototype.getParams); goog.exportProperty(ol.source.TileWMS.prototype, "getState", ol.source.TileWMS.prototype.getState); goog.exportProperty(ol.source.TileWMS.prototype, "getTileGrid", ol.source.TileWMS.prototype.getTileGrid); goog.exportProperty(ol.source.TileWMS.prototype, "getUrls", ol.source.TileWMS.prototype.getUrls); goog.exportProperty(ol.source.TileWMS.prototype, "on", ol.source.TileWMS.prototype.on); goog.exportProperty(ol.source.TileWMS.prototype, "once", ol.source.TileWMS.prototype.once); goog.exportProperty(ol.source.TileWMS.prototype, "un", ol.source.TileWMS.prototype.un); goog.exportProperty(ol.source.TileWMS.prototype, "unByKey", ol.source.TileWMS.prototype.unByKey); goog.exportProperty(ol.source.TileWMS.prototype, "updateParams", ol.source.TileWMS.prototype.updateParams); goog.exportSymbol("ol.source.TopoJSON", ol.source.TopoJSON); goog.exportProperty(ol.source.TopoJSON.prototype, "addFeature", ol.source.TopoJSON.prototype.addFeature); goog.exportProperty(ol.source.TopoJSON.prototype, "addFeatures", ol.source.TopoJSON.prototype.addFeatures); goog.exportProperty(ol.source.TopoJSON.prototype, "dispatchChangeEvent", ol.source.TopoJSON.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.TopoJSON.prototype, "forEachFeature", ol.source.TopoJSON.prototype.forEachFeature); goog.exportProperty(ol.source.TopoJSON.prototype, "forEachFeatureInExtent", ol.source.TopoJSON.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.TopoJSON.prototype, "getClosestFeatureToCoordinate", ol.source.TopoJSON.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.TopoJSON.prototype, "getExtent", ol.source.TopoJSON.prototype.getExtent); goog.exportProperty(ol.source.TopoJSON.prototype, "getFeatures", ol.source.TopoJSON.prototype.getFeatures); goog.exportProperty(ol.source.TopoJSON.prototype, "getFeaturesAtCoordinate", ol.source.TopoJSON.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.TopoJSON.prototype, "getState", ol.source.TopoJSON.prototype.getState); goog.exportProperty(ol.source.TopoJSON.prototype, "on", ol.source.TopoJSON.prototype.on); goog.exportProperty(ol.source.TopoJSON.prototype, "once", ol.source.TopoJSON.prototype.once); goog.exportProperty(ol.source.TopoJSON.prototype, "removeFeature", ol.source.TopoJSON.prototype.removeFeature); goog.exportProperty(ol.source.TopoJSON.prototype, "un", ol.source.TopoJSON.prototype.un); goog.exportProperty(ol.source.TopoJSON.prototype, "unByKey", ol.source.TopoJSON.prototype.unByKey); goog.exportSymbol("ol.source.Vector", ol.source.Vector); goog.exportProperty(ol.source.Vector.prototype, "addFeature", ol.source.Vector.prototype.addFeature); goog.exportProperty(ol.source.Vector.prototype, "addFeatures", ol.source.Vector.prototype.addFeatures); goog.exportProperty(ol.source.Vector.prototype, "dispatchChangeEvent", ol.source.Vector.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.Vector.prototype, "forEachFeature", ol.source.Vector.prototype.forEachFeature); goog.exportProperty(ol.source.Vector.prototype, "forEachFeatureInExtent", ol.source.Vector.prototype.forEachFeatureInExtent); goog.exportProperty(ol.source.Vector.prototype, "getClosestFeatureToCoordinate", ol.source.Vector.prototype.getClosestFeatureToCoordinate); goog.exportProperty(ol.source.Vector.prototype, "getExtent", ol.source.Vector.prototype.getExtent); goog.exportProperty(ol.source.Vector.prototype, "getFeatures", ol.source.Vector.prototype.getFeatures); goog.exportProperty(ol.source.Vector.prototype, "getFeaturesAtCoordinate", ol.source.Vector.prototype.getFeaturesAtCoordinate); goog.exportProperty(ol.source.Vector.prototype, "getState", ol.source.Vector.prototype.getState); goog.exportProperty(ol.source.Vector.prototype, "on", ol.source.Vector.prototype.on); goog.exportProperty(ol.source.Vector.prototype, "once", ol.source.Vector.prototype.once); goog.exportProperty(ol.source.Vector.prototype, "removeFeature", ol.source.Vector.prototype.removeFeature); goog.exportProperty(ol.source.Vector.prototype, "un", ol.source.Vector.prototype.un); goog.exportProperty(ol.source.Vector.prototype, "unByKey", ol.source.Vector.prototype.unByKey); goog.exportSymbol("ol.source.WMTS", ol.source.WMTS); goog.exportProperty(ol.source.WMTS.prototype, "dispatchChangeEvent", ol.source.WMTS.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.WMTS.prototype, "getDimensions", ol.source.WMTS.prototype.getDimensions); goog.exportProperty(ol.source.WMTS.prototype, "getState", ol.source.WMTS.prototype.getState); goog.exportProperty(ol.source.WMTS.prototype, "getTileGrid", ol.source.WMTS.prototype.getTileGrid); goog.exportProperty(ol.source.WMTS.prototype, "on", ol.source.WMTS.prototype.on); goog.exportProperty(ol.source.WMTS.prototype, "once", ol.source.WMTS.prototype.once); goog.exportProperty(ol.source.WMTS.prototype, "un", ol.source.WMTS.prototype.un); goog.exportProperty(ol.source.WMTS.prototype, "unByKey", ol.source.WMTS.prototype.unByKey); goog.exportProperty(ol.source.WMTS.prototype, "updateDimensions", ol.source.WMTS.prototype.updateDimensions); goog.exportSymbol("ol.source.WMTS.optionsFromCapabilities", ol.source.WMTS.optionsFromCapabilities); goog.exportSymbol("ol.source.XYZ", ol.source.XYZ); goog.exportProperty(ol.source.XYZ.prototype, "dispatchChangeEvent", ol.source.XYZ.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.XYZ.prototype, "getState", ol.source.XYZ.prototype.getState); goog.exportProperty(ol.source.XYZ.prototype, "getTileGrid", ol.source.XYZ.prototype.getTileGrid); goog.exportProperty(ol.source.XYZ.prototype, "on", ol.source.XYZ.prototype.on); goog.exportProperty(ol.source.XYZ.prototype, "once", ol.source.XYZ.prototype.once); goog.exportProperty(ol.source.XYZ.prototype, "setUrl", ol.source.XYZ.prototype.setUrl); goog.exportProperty(ol.source.XYZ.prototype, "un", ol.source.XYZ.prototype.un); goog.exportProperty(ol.source.XYZ.prototype, "unByKey", ol.source.XYZ.prototype.unByKey); goog.exportSymbol("ol.source.Zoomify", ol.source.Zoomify); goog.exportProperty(ol.source.Zoomify.prototype, "dispatchChangeEvent", ol.source.Zoomify.prototype.dispatchChangeEvent); goog.exportProperty(ol.source.Zoomify.prototype, "getState", ol.source.Zoomify.prototype.getState); goog.exportProperty(ol.source.Zoomify.prototype, "getTileGrid", ol.source.Zoomify.prototype.getTileGrid); goog.exportProperty(ol.source.Zoomify.prototype, "on", ol.source.Zoomify.prototype.on); goog.exportProperty(ol.source.Zoomify.prototype, "once", ol.source.Zoomify.prototype.once); goog.exportProperty(ol.source.Zoomify.prototype, "un", ol.source.Zoomify.prototype.un); goog.exportProperty(ol.source.Zoomify.prototype, "unByKey", ol.source.Zoomify.prototype.unByKey); goog.exportSymbol("ol.sphere.WGS84", ol.sphere.WGS84); goog.exportSymbol("ol.style.Circle", ol.style.Circle); goog.exportProperty(ol.style.Circle.prototype, "getAnchor", ol.style.Circle.prototype.getAnchor); goog.exportProperty(ol.style.Circle.prototype, "getFill", ol.style.Circle.prototype.getFill); goog.exportProperty(ol.style.Circle.prototype, "getImage", ol.style.Circle.prototype.getImage); goog.exportProperty(ol.style.Circle.prototype, "getRadius", ol.style.Circle.prototype.getRadius); goog.exportProperty(ol.style.Circle.prototype, "getRotation", ol.style.Circle.prototype.getRotation); goog.exportProperty(ol.style.Circle.prototype, "getScale", ol.style.Circle.prototype.getScale); goog.exportProperty(ol.style.Circle.prototype, "getSize", ol.style.Circle.prototype.getSize); goog.exportProperty(ol.style.Circle.prototype, "getStroke", ol.style.Circle.prototype.getStroke); goog.exportSymbol("ol.style.Fill", ol.style.Fill); goog.exportProperty(ol.style.Fill.prototype, "getColor", ol.style.Fill.prototype.getColor); goog.exportSymbol("ol.style.Icon", ol.style.Icon); goog.exportProperty(ol.style.Icon.prototype, "getAnchor", ol.style.Icon.prototype.getAnchor); goog.exportProperty(ol.style.Icon.prototype, "getImage", ol.style.Icon.prototype.getImage); goog.exportProperty(ol.style.Icon.prototype, "getRotation", ol.style.Icon.prototype.getRotation); goog.exportProperty(ol.style.Icon.prototype, "getScale", ol.style.Icon.prototype.getScale); goog.exportProperty(ol.style.Icon.prototype, "getSize", ol.style.Icon.prototype.getSize); goog.exportProperty(ol.style.Icon.prototype, "getSrc", ol.style.Icon.prototype.getSrc); goog.exportSymbol("ol.style.Image", ol.style.Image); goog.exportProperty(ol.style.Image.prototype, "getRotation", ol.style.Image.prototype.getRotation); goog.exportProperty(ol.style.Image.prototype, "getScale", ol.style.Image.prototype.getScale); goog.exportSymbol("ol.style.Stroke", ol.style.Stroke); goog.exportProperty(ol.style.Stroke.prototype, "getColor", ol.style.Stroke.prototype.getColor); goog.exportProperty(ol.style.Stroke.prototype, "getLineCap", ol.style.Stroke.prototype.getLineCap); goog.exportProperty(ol.style.Stroke.prototype, "getLineDash", ol.style.Stroke.prototype.getLineDash); goog.exportProperty(ol.style.Stroke.prototype, "getLineJoin", ol.style.Stroke.prototype.getLineJoin); goog.exportProperty(ol.style.Stroke.prototype, "getMiterLimit", ol.style.Stroke.prototype.getMiterLimit); goog.exportProperty(ol.style.Stroke.prototype, "getWidth", ol.style.Stroke.prototype.getWidth); goog.exportSymbol("ol.style.Style", ol.style.Style); goog.exportProperty(ol.style.Style.prototype, "getFill", ol.style.Style.prototype.getFill); goog.exportProperty(ol.style.Style.prototype, "getImage", ol.style.Style.prototype.getImage); goog.exportProperty(ol.style.Style.prototype, "getStroke", ol.style.Style.prototype.getStroke); goog.exportProperty(ol.style.Style.prototype, "getText", ol.style.Style.prototype.getText); goog.exportProperty(ol.style.Style.prototype, "getZIndex", ol.style.Style.prototype.getZIndex); goog.exportSymbol("ol.style.Text", ol.style.Text); goog.exportProperty(ol.style.Text.prototype, "getFill", ol.style.Text.prototype.getFill); goog.exportProperty(ol.style.Text.prototype, "getFont", ol.style.Text.prototype.getFont); goog.exportProperty(ol.style.Text.prototype, "getRotation", ol.style.Text.prototype.getRotation); goog.exportProperty(ol.style.Text.prototype, "getScale", ol.style.Text.prototype.getScale); goog.exportProperty(ol.style.Text.prototype, "getStroke", ol.style.Text.prototype.getStroke); goog.exportProperty(ol.style.Text.prototype, "getText", ol.style.Text.prototype.getText); goog.exportProperty(ol.style.Text.prototype, "getTextAlign", ol.style.Text.prototype.getTextAlign); goog.exportProperty(ol.style.Text.prototype, "getTextBaseline", ol.style.Text.prototype.getTextBaseline); goog.exportSymbol("ol.tilegrid.TileGrid", ol.tilegrid.TileGrid); goog.exportProperty(ol.tilegrid.TileGrid.prototype, "getMinZoom", ol.tilegrid.TileGrid.prototype.getMinZoom); goog.exportProperty(ol.tilegrid.TileGrid.prototype, "getOrigin", ol.tilegrid.TileGrid.prototype.getOrigin); goog.exportProperty(ol.tilegrid.TileGrid.prototype, "getResolution", ol.tilegrid.TileGrid.prototype.getResolution); goog.exportProperty(ol.tilegrid.TileGrid.prototype, "getTileSize", ol.tilegrid.TileGrid.prototype.getTileSize); goog.exportSymbol("ol.tilegrid.WMTS", ol.tilegrid.WMTS); goog.exportProperty(ol.tilegrid.WMTS.prototype, "getMatrixIds", ol.tilegrid.WMTS.prototype.getMatrixIds); goog.exportProperty(ol.tilegrid.WMTS.prototype, "getMinZoom", ol.tilegrid.WMTS.prototype.getMinZoom); goog.exportProperty(ol.tilegrid.WMTS.prototype, "getOrigin", ol.tilegrid.WMTS.prototype.getOrigin); goog.exportProperty(ol.tilegrid.WMTS.prototype, "getResolution", ol.tilegrid.WMTS.prototype.getResolution); goog.exportProperty(ol.tilegrid.WMTS.prototype, "getTileSize", ol.tilegrid.WMTS.prototype.getTileSize); goog.exportSymbol("ol.tilegrid.XYZ", ol.tilegrid.XYZ); goog.exportProperty(ol.tilegrid.XYZ.prototype, "getMinZoom", ol.tilegrid.XYZ.prototype.getMinZoom); goog.exportProperty(ol.tilegrid.XYZ.prototype, "getOrigin", ol.tilegrid.XYZ.prototype.getOrigin); goog.exportProperty(ol.tilegrid.XYZ.prototype, "getResolution", ol.tilegrid.XYZ.prototype.getResolution); goog.exportProperty(ol.tilegrid.XYZ.prototype, "getTileSize", ol.tilegrid.XYZ.prototype.getTileSize); goog.exportSymbol("ol.tilegrid.Zoomify", ol.tilegrid.Zoomify); goog.exportProperty(ol.tilegrid.Zoomify.prototype, "getMinZoom", ol.tilegrid.Zoomify.prototype.getMinZoom); goog.exportProperty(ol.tilegrid.Zoomify.prototype, "getOrigin", ol.tilegrid.Zoomify.prototype.getOrigin); goog.exportProperty(ol.tilegrid.Zoomify.prototype, "getResolution", ol.tilegrid.Zoomify.prototype.getResolution); goog.exportProperty(ol.tilegrid.Zoomify.prototype, "getTileSize", ol.tilegrid.Zoomify.prototype.getTileSize); goog.exportSymbol("ol.webgl.Context", ol.webgl.Context); goog.exportProperty(ol.webgl.Context.prototype, "getGL", ol.webgl.Context.prototype.getGL); goog.exportProperty(ol.webgl.Context.prototype, "useProgram", ol.webgl.Context.prototype.useProgram);