逐步完成前后端服务器
This commit is contained in:
54
frontend/node_modules/zrender/lib/graphic/helper/image.js
generated
vendored
Normal file
54
frontend/node_modules/zrender/lib/graphic/helper/image.js
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
import LRU from '../../core/LRU.js';
|
||||
import { platformApi } from '../../core/platform.js';
|
||||
var globalImageCache = new LRU(50);
|
||||
export function findExistImage(newImageOrSrc) {
|
||||
if (typeof newImageOrSrc === 'string') {
|
||||
var cachedImgObj = globalImageCache.get(newImageOrSrc);
|
||||
return cachedImgObj && cachedImgObj.image;
|
||||
}
|
||||
else {
|
||||
return newImageOrSrc;
|
||||
}
|
||||
}
|
||||
export function createOrUpdateImage(newImageOrSrc, image, hostEl, onload, cbPayload) {
|
||||
if (!newImageOrSrc) {
|
||||
return image;
|
||||
}
|
||||
else if (typeof newImageOrSrc === 'string') {
|
||||
if ((image && image.__zrImageSrc === newImageOrSrc) || !hostEl) {
|
||||
return image;
|
||||
}
|
||||
var cachedImgObj = globalImageCache.get(newImageOrSrc);
|
||||
var pendingWrap = { hostEl: hostEl, cb: onload, cbPayload: cbPayload };
|
||||
if (cachedImgObj) {
|
||||
image = cachedImgObj.image;
|
||||
!isImageReady(image) && cachedImgObj.pending.push(pendingWrap);
|
||||
}
|
||||
else {
|
||||
image = platformApi.loadImage(newImageOrSrc, imageOnLoad, imageOnLoad);
|
||||
image.__zrImageSrc = newImageOrSrc;
|
||||
globalImageCache.put(newImageOrSrc, image.__cachedImgObj = {
|
||||
image: image,
|
||||
pending: [pendingWrap]
|
||||
});
|
||||
}
|
||||
return image;
|
||||
}
|
||||
else {
|
||||
return newImageOrSrc;
|
||||
}
|
||||
}
|
||||
function imageOnLoad() {
|
||||
var cachedImgObj = this.__cachedImgObj;
|
||||
this.onload = this.onerror = this.__cachedImgObj = null;
|
||||
for (var i = 0; i < cachedImgObj.pending.length; i++) {
|
||||
var pendingWrap = cachedImgObj.pending[i];
|
||||
var cb = pendingWrap.cb;
|
||||
cb && cb(this, pendingWrap.cbPayload);
|
||||
pendingWrap.hostEl.dirty();
|
||||
}
|
||||
cachedImgObj.pending.length = 0;
|
||||
}
|
||||
export function isImageReady(image) {
|
||||
return image && image.width && image.height;
|
||||
}
|
Reference in New Issue
Block a user