MCPcopy Index your code
hub / github.com/SuperMap/iClient-JavaScript / createOrUpdateImage

Function createOrUpdateImage

libs/echarts/echarts.simple.js:7522–7564  ·  view source on GitHub ↗

* Caution: User should cache loaded images, but not just count on LRU. * Consider if required images more than LRU size, will dead loop occur? * * @param {string|HTMLImageElement|HTMLCanvasElement|Canvas} newImageOrSrc * @param {HTMLImageElement|HTMLCanvasElement|Canvas} image Existent image. *

(newImageOrSrc, image, hostEl, cb, cbPayload)

Source from the content-addressed store, hash-verified

7520 * @return {HTMLImageElement|HTMLCanvasElement|Canvas} image
7521 */
7522function createOrUpdateImage(newImageOrSrc, image, hostEl, cb, cbPayload) {
7523 if (!newImageOrSrc) {
7524 return image;
7525 }
7526 else if (typeof newImageOrSrc === 'string') {
7527
7528 // Image should not be loaded repeatly.
7529 if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {
7530 return image;
7531 }
7532
7533 // Only when there is no existent image or existent image src
7534 // is different, this method is responsible for load.
7535 var cachedImgObj = globalImageCache.get(newImageOrSrc);
7536
7537 var pendingWrap = {hostEl: hostEl, cb: cb, cbPayload: cbPayload};
7538
7539 if (cachedImgObj) {
7540 image = cachedImgObj.image;
7541 !isImageReady(image) && cachedImgObj.pending.push(pendingWrap);
7542 }
7543 else {
7544 image = new Image();
7545 image.onload = image.onerror = imageOnLoad;
7546
7547 globalImageCache.put(
7548 newImageOrSrc,
7549 image.__cachedImgObj = {
7550 image: image,
7551 pending: [pendingWrap]
7552 }
7553 );
7554
7555 image.src = image.__zrImageSrc = newImageOrSrc;
7556 }
7557
7558 return image;
7559 }
7560 // newImageOrSrc is an HTMLImageElement or HTMLCanvasElement or Canvas
7561 else {
7562 return newImageOrSrc;
7563 }
7564}
7565
7566function imageOnLoad() {
7567 var cachedImgObj = this.__cachedImgObj;

Callers 2

drawBackgroundFunction · 0.70
echarts.simple.jsFile · 0.70

Calls 3

pushMethod · 0.80
isImageReadyFunction · 0.70
getMethod · 0.45

Tested by

no test coverage detected