| 1 |
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@antv/g-lite")):"function"==typeof define&&define.amd?define(["exports","@antv/g-lite"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).G=e.G||{},e.G.ImageLoader={}),e.window.G)}(this,(function(e,t){"use strict";function n(e,t){return n=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},n(e,t)}var r="undefined"!=typeof Float32Array?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var a={}.toString,i=function(e){return t="String",a.call(e)==="[object "+t+"]";var t},o=function(){function e(e){this.canvasConfig=void 0,this.imageCache={},this.gradientCache={},this.patternCache={},this.canvasConfig=e}var n=e.prototype;return n.getImageSync=function(e,t){return this.imageCache[e]?t&&t():this.getOrCreateImage(e).then((function(){t&&t()})),this.imageCache[e]},n.getOrCreateImage=function(e){var n=this;if(this.imageCache[e])return Promise.resolve(this.imageCache[e]);var r=this.canvasConfig.createImage;return new Promise((function(a,i){var o;r?o=r(e):t.isBrowser&&(o=new window.Image),o&&(o.onload=function(){n.imageCache[e]=o,a(o)},o.onerror=function(e){i(e)},o.crossOrigin="Anonymous",o.src=e)}))},n.getOrCreatePatternSync=function(e,n,a,o,c){var u=this.generatePatternKey(e);if(u&&this.patternCache[u])return this.patternCache[u];var s,d=e.image,f=e.repetition,g=e.transform,h=!1;i(d)?s=this.getImageSync(d,c):a?(s=a,h=!0):s=d;var l,p,v=s&&n.createPattern(s,f);v&&(l=g?t.parsedTransformToMat4(t.parseTransform(g)):function(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}((p=new r(16),r!=Float32Array&&(p[1]=0,p[2]=0,p[3]=0,p[4]=0,p[6]=0,p[7]=0,p[8]=0,p[9]=0,p[11]=0,p[12]=0,p[13]=0,p[14]=0),p[0]=1,p[5]=1,p[10]=1,p[15]=1,p)),h&&function(e,t,n){var r=n[0],a=n[1],i=n[2];e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*a,e[5]=t[5]*a,e[6]=t[6]*a,e[7]=t[7]*a,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]}(l,l,[1/o,1/o,1]),v.setTransform({a:l[0],b:l[1],c:l[4],d:l[5],e:l[12],f:l[13]}));return u&&v&&(this.patternCache[u]=v),v},n.getOrCreateGradient=function(e,n){var r=this.generateGradientKey(e),a=e.type,i=e.steps,o=e.width,c=e.height,u=e.cx,s=e.cy,d=e.size;if(this.gradientCache[r])return this.gradientCache[r];var f=null;if(a===t.GradientType.LinearGradient){var g=t.computeLinearGradient(o,c,e.angle);f=n.createLinearGradient(g.x1,g.y1,g.x2,g.y2)}else if(a===t.GradientType.RadialGradient){var h=t.computeRadialGradient(o,c,u,s,d),l=h.x,p=h.y;f=n.createRadialGradient(l,p,0,l,p,h.r)}return f&&(i.forEach((function(e){var n,r=e.offset;r.unit===t.UnitType.kPercentage&&(null===(n=f)||void 0===n||n.addColorStop(r.value/100,""+e.color))})),this.gradientCache[r]=f),this.gradientCache[r]},n.generateGradientKey=function(e){var t=e.angle,n=e.cx,r=e.cy,a=e.size;return"gradient-"+e.type+"-"+((null==t?void 0:""+t)||0)+"-"+((null==n?void 0:""+n)||0)+"-"+((null==r?void 0:""+r)||0)+"-"+((null==a?void 0:""+a)||0)+"-"+e.width+"-"+e.height+"-"+e.steps.map((function(e){return""+e.offset+e.color})).join("-")},n.generatePatternKey=function(e){var t=e.image,n=e.repetition;return i(t)?"pattern-"+t+"-"+n:"rect"===t.nodeName?"pattern-"+t.entity+"-"+n:void 0},e}(),c=function(){function e(){}return e.prototype.apply=function(n){var r=n.renderingService,a=n.imagePool,o=n.renderingContext.root.ownerDocument.defaultView,c=function(e){var n=e.target;if(n.nodeName===t.Shape.IMAGE){var o=n.attributes.img;i(o)&&a.getImageSync(o,(function(){n.renderable.dirty=!0,r.dirtify()}))}},u=function(e){var n=e.target,o=e.newValue;n.nodeName===t.Shape.IMAGE&&"img"===e.attrName&&i(o)&&a.getOrCreateImage(o).then((function(){n.renderable.dirty=!0,r.dirtify()}))};r.hooks.init.tap(e.tag,(function(){o.addEventListener(t.ElementEvent.MOUNTED,c),o.addEventListener(t.ElementEvent.ATTR_MODIFIED,u)})),r.hooks.destroy.tap(e.tag,(function(){o.removeEventListener(t.ElementEvent.MOUNTED,c),o.removeEventListener(t.ElementEvent.ATTR_MODIFIED,u)}))},e}();c.tag="LoadImage";var u=function(e){var t,r;function a(){for(var t,n=arguments.length,r=Array(n),a=0;n>a;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).name="image-loader",t}(t=a).prototype=Object.create((r=e).prototype),t.prototype.constructor=t,n(t,r);var i=a.prototype;return i.init=function(){this.context.imagePool=new o(this.context.config),this.addRenderingPlugin(new c)},i.destroy=function(){this.removeAllRenderingPlugins()},a}(t.AbstractRendererPlugin);e.ImagePool=o,e.Plugin=u,Object.defineProperty(e,"__esModule",{value:!0})}));
|