37894 lines
1.8 MiB
37894 lines
1.8 MiB
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.gtRe_ = />/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(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
|
|
};
|
|
goog.string.repeat = function(string, length) {
|
|
return(new Array(length + 1)).join(string)
|
|
};
|
|
goog.string.padNumber = function(num, length, opt_precision) {
|
|
var s = goog.isDef(opt_precision) ? num.toFixed(opt_precision) : String(num);
|
|
var index = s.indexOf(".");
|
|
if(index == -1) {
|
|
index = s.length
|
|
}
|
|
return goog.string.repeat("0", Math.max(0, length - index)) + s
|
|
};
|
|
goog.string.makeSafe = function(obj) {
|
|
return obj == null ? "" : String(obj)
|
|
};
|
|
goog.string.buildString = function(var_args) {
|
|
return Array.prototype.join.call(arguments, "")
|
|
};
|
|
goog.string.getRandomString = function() {
|
|
var x = 2147483648;
|
|
return Math.floor(Math.random() * x).toString(36) + Math.abs(Math.floor(Math.random() * x) ^ goog.now()).toString(36)
|
|
};
|
|
goog.string.compareVersions = function(version1, version2) {
|
|
var order = 0;
|
|
var v1Subs = goog.string.trim(String(version1)).split(".");
|
|
var v2Subs = goog.string.trim(String(version2)).split(".");
|
|
var subCount = Math.max(v1Subs.length, v2Subs.length);
|
|
for(var subIdx = 0;order == 0 && subIdx < subCount;subIdx++) {
|
|
var v1Sub = v1Subs[subIdx] || "";
|
|
var v2Sub = v2Subs[subIdx] || "";
|
|
var v1CompParser = new RegExp("(\\d*)(\\D*)", "g");
|
|
var v2CompParser = new RegExp("(\\d*)(\\D*)", "g");
|
|
do {
|
|
var v1Comp = v1CompParser.exec(v1Sub) || ["", "", ""];
|
|
var v2Comp = v2CompParser.exec(v2Sub) || ["", "", ""];
|
|
if(v1Comp[0].length == 0 && v2Comp[0].length == 0) {
|
|
break
|
|
}
|
|
var v1CompNum = v1Comp[1].length == 0 ? 0 : parseInt(v1Comp[1], 10);
|
|
var v2CompNum = v2Comp[1].length == 0 ? 0 : parseInt(v2Comp[1], 10);
|
|
order = goog.string.compareElements_(v1CompNum, v2CompNum) || goog.string.compareElements_(v1Comp[2].length == 0, v2Comp[2].length == 0) || goog.string.compareElements_(v1Comp[2], v2Comp[2])
|
|
}while(order == 0)
|
|
}
|
|
return order
|
|
};
|
|
goog.string.compareElements_ = function(left, right) {
|
|
if(left < right) {
|
|
return-1
|
|
}else {
|
|
if(left > 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);
|
|
|