ol-cesium
Version:
OpenLayers Cesium integration library
78 lines • 4.86 kB
JavaScript
let _imageRenderingPixelatedSupported = undefined;
let _imageRenderingValue = undefined;
/**
* https://caniuse.com/mdn-css_properties_image-rendering_pixelated
* @return whether the browser supports
*/
export function supportsImageRenderingPixelated() {
if (_imageRenderingPixelatedSupported === undefined) {
const canvas = document.createElement('canvas');
canvas.setAttribute('style', 'image-rendering: -moz-crisp-edges; image-rendering: crisp-edges; image-rendering: pixelated;');
// canvas.style.imageRendering will be undefined, null or an
// empty string on unsupported browsers.
const imageRenderingValue = canvas.style.imageRendering;
_imageRenderingPixelatedSupported = !!imageRenderingValue;
if (_imageRenderingPixelatedSupported) {
_imageRenderingValue = imageRenderingValue;
}
}
return _imageRenderingPixelatedSupported;
}
/**
* The value supported by thie browser for the CSS property "image-rendering"
* @return {string}
*/
export function imageRenderingValue() {
supportsImageRenderingPixelated();
return _imageRenderingValue || '';
}
/**
* Return the projection of the source that Cesium should use.
*
* @param source Source.
* @return The projection of the source.
*/
export function getSourceProjection(source) {
return source.get('olcs.projection') || source.getProjection();
}
/**
* Counter for getUid.
* @type {number}
*/
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. Similar to OL getUid.
*
* @param obj The object to get the unique ID for.
* @return The unique ID for the object.
*/
export function getUid(obj) {
return obj.olcs_uid || (obj.olcs_uid = ++uidCounter_);
}
export function waitReady(object) {
const o = object;
const p = o.readyPromise;
if (p) {
return p;
}
if (o.ready !== undefined) {
if (o.ready) {
return Promise.resolve(object);
}
return new Promise((resolve, _) => {
// FIXME: this is crazy
// alternative: intercept _ready = true
// altnerative: pass a timeout
const stopper = setInterval(() => {
if (o.ready) {
clearInterval(stopper);
resolve(object);
}
}, 20);
});
}
return Promise.reject('Not a readyable object');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vbGNzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsSUFBSSxpQ0FBaUMsR0FBWSxTQUFTLENBQUM7QUFDM0QsSUFBSSxvQkFBb0IsR0FBVyxTQUFTLENBQUM7QUFHN0M7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQjtJQUM3QyxJQUFJLGlDQUFpQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsOEZBQThGLENBQUMsQ0FBQztRQUM3SCw0REFBNEQ7UUFDNUQsd0NBQXdDO1FBQ3hDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDeEQsaUNBQWlDLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO1FBQzFELElBQUksaUNBQWlDLEVBQUUsQ0FBQztZQUN0QyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8saUNBQWlDLENBQUM7QUFDM0MsQ0FBQztBQUdEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsK0JBQStCLEVBQUUsQ0FBQztJQUNsQyxPQUFPLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsTUFBYztJQUNoRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQWUsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7QUFDL0UsQ0FBQztBQUdEOzs7R0FHRztBQUNILElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztBQUVwQjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLE1BQU0sQ0FBQyxHQUFRO0lBQzdCLE9BQU8sR0FBRyxDQUFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBTyxNQUFZO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLE1BQWEsQ0FBQztJQUN4QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDTixPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEMsdUJBQXVCO1lBQ3ZCLHVDQUF1QztZQUN2Qyw4QkFBOEI7WUFDOUIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ1osYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN2QixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7WUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDVCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUNsRCxDQUFDIn0=