Files
openlayers/src/ol/index.js
Frederic Junod b50a47114e Move the nullFunction to ol/functions
And rename it to `UNDEFINED`.
2018-03-01 14:41:18 +01:00

114 lines
2.6 KiB
JavaScript

/**
* @module ol
*/
import {getContext} from './webgl.js';
/**
* Include debuggable shader sources. Default is `true`. This should be set to
* `false` for production builds.
* TODO: move to a separate ol-webgl package
* @type {boolean}
*/
export const DEBUG_WEBGL = true;
/**
* TODO: move to a separate ol-webgl package
* The maximum supported WebGL texture size in pixels. If WebGL is not
* supported, the value is set to `undefined`.
* @const
* @type {number|undefined}
*/
let WEBGL_MAX_TEXTURE_SIZE; // value is set below
/**
* TODO: move to a separate ol-webgl package
* List of supported WebGL extensions.
* @const
* @type {Array.<string>}
*/
let WEBGL_EXTENSIONS; // value is set below
/**
* TODO: move to a separate ol-webgl package
* WebGL is available.
* @type {boolean}
*/
let HAS_WEBGL = false;
if ('WebGLRenderingContext' in window) {
try {
const canvas = /** @type {HTMLCanvasElement} */ (document.createElement('CANVAS'));
const gl = getContext(canvas, {failIfMajorPerformanceCaveat: true});
if (gl) {
HAS_WEBGL = true;
WEBGL_MAX_TEXTURE_SIZE = /** @type {number} */ (gl.getParameter(gl.MAX_TEXTURE_SIZE));
WEBGL_EXTENSIONS = gl.getSupportedExtensions();
}
} catch (e) {
// pass
}
}
export {HAS_WEBGL, WEBGL_MAX_TEXTURE_SIZE, WEBGL_EXTENSIONS};
/**
* OpenLayers version.
* @type {string}
*/
export const VERSION = 'v4.6.4';
/**
* Inherit the prototype methods from one constructor into another.
*
* Usage:
*
* function ParentClass(a, b) { }
* ParentClass.prototype.foo = function(a) { }
*
* function ChildClass(a, b, c) {
* // Call parent constructor
* ParentClass.call(this, a, b);
* }
* inherits(ChildClass, ParentClass);
*
* var child = new ChildClass('a', 'b', 'see');
* child.foo(); // This works.
*
* @param {!Function} childCtor Child constructor.
* @param {!Function} parentCtor Parent constructor.
* @function
* @api
*/
export function inherits(childCtor, parentCtor) {
childCtor.prototype = Object.create(parentCtor.prototype);
childCtor.prototype.constructor = childCtor;
}
/**
* Counter for getUid.
* @type {number}
* @private
*/
let uidCounter_ = 0;
/**
* Gets a unique ID for an object. This mutates the object so that further calls
* with the same object as a parameter returns the same value. Unique IDs are generated
* as a strictly increasing sequence. Adapted from goog.getUid.
*
* @param {Object} obj The object to get the unique ID for.
* @return {number} The unique ID for the object.
*/
export function getUid(obj) {
return obj.ol_uid || (obj.ol_uid = ++uidCounter_);
}