@antv/g-plugin-canvas-renderer
Advanced tools
| /*! | ||
| * @antv/g-plugin-canvas-renderer | ||
| * @description A G plugin of renderer implementation with Canvas2D API | ||
| * @version 2.3.3 | ||
| * @date 7/30/2025, 1:36:40 PM | ||
| * @version 2.4.0 | ||
| * @date 10/13/2025, 7:02:58 AM | ||
| * @author AntVis | ||
| * @docs https://g.antv.antgroup.com/ | ||
| */ | ||
| !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@antv/g-lite"),require("@antv/g-plugin-image-loader")):"function"==typeof define&&define.amd?define(["exports","@antv/g-lite","@antv/g-plugin-image-loader"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).G=e.G||{},e.G.CanvasRenderer={}),e.window.G,e.window.G.ImageLoader)}(this,function(e,t,r){"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==n(t)?t:t+""}function i(e,t,r){return(t=o(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;arguments.length>t;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach(function(t){i(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var r=0;t.length>r;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,o(n.key),n)}}function u(e,t,r){return t&&c(e.prototype,t),r&&c(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function h(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(h=function(){return!!e})()}function f(e,t){if(t&&("object"==n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function p(e,t,r){return t=d(t),f(e,h()?Reflect.construct(t,r||[],d(e).constructor):t.apply(e,r))}function y(e,t){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},y(e,t)}function v(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&y(e,t)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);t>r;r++)n[r]=e[r];return n}function g(e,t){if(e){if("string"==typeof e)return m(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,t):void 0}}function b(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,l=[],s=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){c=!0,o=e}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return l}}(e,t)||g(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e,t){if(!{}.hasOwnProperty.call(e,t))throw new TypeError("attempted to use private field on non-instance");return e}var x=0;function O(e){return"__private_"+x+++"_"+e}var C="undefined"!=typeof Float32Array?Float32Array:Array;function A(){var e=new C(16);return C!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function k(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function M(e,t,r){var n=t[0],o=t[1],i=t[2],a=t[3],l=t[4],s=t[5],c=t[6],u=t[7],d=t[8],h=t[9],f=t[10],p=t[11],y=t[12],v=t[13],m=t[14],g=t[15],b=r[0],S=r[1],w=r[2],x=r[3];return e[0]=b*n+S*l+w*d+x*y,e[1]=b*o+S*s+w*h+x*v,e[2]=b*i+S*c+w*f+x*m,e[3]=b*a+S*u+w*p+x*g,e[4]=(b=r[4])*n+(S=r[5])*l+(w=r[6])*d+(x=r[7])*y,e[5]=b*o+S*s+w*h+x*v,e[6]=b*i+S*c+w*f+x*m,e[7]=b*a+S*u+w*p+x*g,e[8]=(b=r[8])*n+(S=r[9])*l+(w=r[10])*d+(x=r[11])*y,e[9]=b*o+S*s+w*h+x*v,e[10]=b*i+S*c+w*f+x*m,e[11]=b*a+S*u+w*p+x*g,e[12]=(b=r[12])*n+(S=r[13])*l+(w=r[14])*d+(x=r[15])*y,e[13]=b*o+S*s+w*h+x*v,e[14]=b*i+S*c+w*f+x*m,e[15]=b*a+S*u+w*p+x*g,e}function T(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function R(){var e=new C(3);return C!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function P(e,t,r){var n=t[0],o=t[1],i=t[2],a=r[3]*n+r[7]*o+r[11]*i+r[15];return e[0]=(r[0]*n+r[4]*o+r[8]*i+r[12])/(a=a||1),e[1]=(r[1]*n+r[5]*o+r[9]*i+r[13])/a,e[2]=(r[2]*n+r[6]*o+r[10]*i+r[14])/a,e}function B(e){return null==e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)}),R();var E=O("renderState"),D=function(){function e(t){s(this,e),this.removedRBushNodeAABBs=[],this.renderQueue=[],Object.defineProperty(this,E,{writable:!0,value:{restoreStack:[],prevObject:null,currentContext:new Map}}),this.clearFullScreenLastFrame=!1,this.clearFullScreen=!1,this.vpMatrix=A(),this.dprMatrix=A(),this.tmpMat4=A(),this.vec3a=R(),this.vec3b=R(),this.vec3c=R(),this.vec3d=R(),this.canvasRendererPluginOptions=t}return u(e,[{key:"apply",value:function(r,n){var o=this;this.context=r;var i=this.context,a=i.config,l=i.camera,s=i.renderingService,c=i.renderingContext,u=i.rBushRoot,d=i.pathGeneratorFactory,h=a.renderer.getConfig().enableRenderingOptimization;a.renderer.getConfig().enableDirtyCheck=!1,a.renderer.getConfig().enableDirtyRectangleRendering=!1,this.rBush=u,this.pathGeneratorFactory=d;var f=r.contextService,p=c.root.ownerDocument.defaultView,y=function(e){var t=e.target.rBushNode;null!=t&&t.aabb&&o.removedRBushNodeAABBs.push(t.aabb)},v=function(e){var t=e.target.rBushNode;t.aabb&&o.removedRBushNodeAABBs.push(t.aabb)};s.hooks.init.tap(e.tag,function(){p.addEventListener(t.ElementEvent.UNMOUNTED,y),p.addEventListener(t.ElementEvent.CULLED,v);var e=f.getDPR(),r=a.width,n=a.height,i=f.getContext();o.clearRect(i,0,0,r*e,n*e,a.background)}),s.hooks.destroy.tap(e.tag,function(){p.removeEventListener(t.ElementEvent.UNMOUNTED,y),p.removeEventListener(t.ElementEvent.CULLED,v),o.renderQueue=[],o.removedRBushNodeAABBs=[],w(o,E)[E]={restoreStack:[],prevObject:null,currentContext:null}});var m=function(e,t){for(var r=[e];r.length>0;){var i,a=r.pop();a.isVisible()&&!a.isCulled()&&(h?o.renderDisplayObjectOptimized(a,t,o.context,w(o,E)[E],n):o.renderDisplayObject(a,t,o.context,w(o,E)[E],n));for(var l=(null===(i=a.sortable)||void 0===i||null===(i=i.sorted)||void 0===i?void 0:i.length)>0?a.sortable.sorted:a.childNodes,s=l.length-1;s>=0;s--)r.push(l[s])}};s.hooks.endFrame.tap(e.tag,function(){if(function(){var e,t=f.getContext(),r=f.getDPR(),n=a.width,i=a.height,l=o.canvasRendererPluginOptions,c=l.dirtyObjectNumThreshold,u=l.dirtyObjectRatioThreshold,d=s.getStats(),h=d.rendered,y=h/d.total;o.clearFullScreen=o.clearFullScreenLastFrame||!(null!==(e=p.context.renderingPlugins[1])&&void 0!==e&&e.isFirstTimeRenderingFinished)||s.disableDirtyRectangleRendering()||h>c&&y>u,t&&("function"==typeof t.resetTransform?t.resetTransform():t.setTransform(1,0,0,1,0,0),o.clearFullScreen&&o.clearRect(t,0,0,n*r,i*r,a.background))}(),0!==c.root.childNodes.length){h=a.renderer.getConfig().enableRenderingOptimization,w(o,E)[E]={restoreStack:[],prevObject:null,currentContext:w(o,E)[E].currentContext},w(o,E)[E].currentContext.clear(),o.clearFullScreenLastFrame=!1;var e,r,i=f.getContext(),u=f.getDPR();if((e=o.dprMatrix)[0]=(r=[u,u,1])[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=r[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=r[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,M(o.vpMatrix,o.dprMatrix,l.getOrthoMatrix()),o.clearFullScreen)h?(i.save(),m(c.root,i),i.restore()):m(c.root,i),o.removedRBushNodeAABBs=[];else{var d=o.safeMergeAABB.apply(o,[o.mergeDirtyAABBs(o.renderQueue)].concat(S(o.removedRBushNodeAABBs.map(function(e){var r=e.minX,n=e.minY,o=e.maxX,i=e.maxY,a=new t.AABB;return a.setMinMax([r,n,0],[o,i,0]),a}))));if(o.removedRBushNodeAABBs=[],t.AABB.isEmpty(d))return void(o.renderQueue=[]);var y=o.convertAABB2Rect(d),v=y.x,g=y.y,b=y.width,x=y.height,O=P(o.vec3a,[v,g,0],o.vpMatrix),C=P(o.vec3b,[v+b,g,0],o.vpMatrix),A=P(o.vec3c,[v,g+x,0],o.vpMatrix),k=P(o.vec3d,[v+b,g+x,0],o.vpMatrix),T=Math.min(O[0],C[0],k[0],A[0]),R=Math.min(O[1],C[1],k[1],A[1]),B=Math.max(O[0],C[0],k[0],A[0]),D=Math.max(O[1],C[1],k[1],A[1]),j=Math.floor(T),N=Math.floor(R),F=Math.ceil(B-T),L=Math.ceil(D-R);i.save(),o.clearRect(i,j,N,F,L,a.background),i.beginPath(),i.rect(j,N,F,L),i.clip(),i.setTransform(o.vpMatrix[0],o.vpMatrix[1],o.vpMatrix[4],o.vpMatrix[5],o.vpMatrix[12],o.vpMatrix[13]),a.renderer.getConfig().enableDirtyRectangleRenderingDebug&&p.dispatchEvent(new t.CustomEvent(t.CanvasEvent.DIRTY_RECTANGLE,{dirtyRect:{x:j,y:N,width:F,height:L}})),o.searchDirtyObjects(d).sort(function(e,t){return e.sortable.renderOrder-t.sortable.renderOrder}).forEach(function(e){e&&e.isVisible()&&!e.isCulled()&&o.renderDisplayObject(e,i,o.context,w(o,E)[E],n)}),i.restore(),o.renderQueue.forEach(function(e){o.saveDirtyAABB(e)}),o.renderQueue=[]}w(o,E)[E].restoreStack.forEach(function(){i.restore()}),w(o,E)[E].restoreStack=[]}else o.clearFullScreenLastFrame=!0}),s.hooks.render.tap(e.tag,function(e){o.clearFullScreen||o.renderQueue.push(e)})}},{key:"clearRect",value:function(e,t,r,n,o,i){e.clearRect(t,r,n,o),i&&(e.fillStyle=i,e.fillRect(t,r,n,o))}},{key:"renderDisplayObjectOptimized",value:function(e,r,n,o,i){var a=e.nodeName,l=!1,s=this.context.styleRendererFactory[a],c=this.pathGeneratorFactory[a],u=e.parsedStyle.clipPath;if(u){(!o.prevObject||!T(u.getWorldTransform(),o.prevObject.getWorldTransform()))&&(this.applyWorldTransform(r,u),o.prevObject=null);var d=this.pathGeneratorFactory[u.nodeName];d&&(r.save(),l=!0,r.beginPath(),d(r,u.parsedStyle),r.closePath(),r.clip())}if(s){(!o.prevObject||!T(e.getWorldTransform(),o.prevObject.getWorldTransform()))&&this.applyWorldTransform(r,e);var h=!o.prevObject;if(!h){var f=o.prevObject.nodeName;h=a===t.Shape.TEXT?f!==t.Shape.TEXT:a===t.Shape.IMAGE?f!==t.Shape.IMAGE:f===t.Shape.TEXT||f===t.Shape.IMAGE}s.applyStyleToContext(r,e,h,o),o.prevObject=e}c&&(r.beginPath(),c(r,e.parsedStyle),a!==t.Shape.LINE&&a!==t.Shape.PATH&&a!==t.Shape.POLYLINE&&r.closePath()),s&&s.drawToContext(r,e,w(this,E)[E],this,i),l&&r.restore(),e.dirty(!1)}},{key:"renderDisplayObject",value:function(e,r,n,o,i){var a=e.nodeName,l=o.restoreStack[o.restoreStack.length-1];!l||e.compareDocumentPosition(l)&t.Node.DOCUMENT_POSITION_CONTAINS||(r.restore(),o.restoreStack.pop());var s=this.context.styleRendererFactory[a],c=this.pathGeneratorFactory[a],u=e.parsedStyle.clipPath;if(u){this.applyWorldTransform(r,u);var d=this.pathGeneratorFactory[u.nodeName];d&&(r.save(),o.restoreStack.push(e),r.beginPath(),d(r,u.parsedStyle),r.closePath(),r.clip())}s&&(this.applyWorldTransform(r,e),r.save(),this.applyAttributesToContext(r,e)),c&&(r.beginPath(),c(r,e.parsedStyle),a!==t.Shape.LINE&&a!==t.Shape.PATH&&a!==t.Shape.POLYLINE&&r.closePath()),s&&(s.render(r,e.parsedStyle,e,n,this,i),r.restore()),e.dirty(!1)}},{key:"applyAttributesToContext",value:function(e,t){var r=t.parsedStyle,n=r.stroke,o=r.fill,i=r.opacity,a=r.lineDash,l=r.lineDashOffset;a&&e.setLineDash(a),B(l)||(e.lineDashOffset=l),B(i)||(e.globalAlpha*=i),B(n)||Array.isArray(n)||n.isNone||(e.strokeStyle=t.attributes.stroke),B(o)||Array.isArray(o)||o.isNone||(e.fillStyle=t.attributes.fill)}},{key:"convertAABB2Rect",value:function(e){var t=e.getMin(),r=e.getMax(),n=Math.floor(t[0]),o=Math.floor(t[1]);return{x:n,y:o,width:Math.ceil(r[0])-n,height:Math.ceil(r[1])-o}}},{key:"mergeDirtyAABBs",value:function(e){var r=new t.AABB;return e.forEach(function(e){var t=e.getRenderBounds();r.add(t);var n=e.renderable.dirtyRenderBounds;n&&r.add(n)}),r}},{key:"searchDirtyObjects",value:function(e){var t=b(e.getMin(),2),r=t[0],n=t[1],o=b(e.getMax(),2);return this.rBush.search({minX:r,minY:n,maxX:o[0],maxY:o[1]}).map(function(e){return e.displayObject})}},{key:"saveDirtyAABB",value:function(e){var r=e.renderable;r.dirtyRenderBounds||(r.dirtyRenderBounds=new t.AABB);var n=e.getRenderBounds();n&&r.dirtyRenderBounds.update(n.center,n.halfExtents)}},{key:"applyWorldTransform",value:function(e,t,r){r?(k(this.tmpMat4,t.getLocalTransform()),M(this.tmpMat4,r,this.tmpMat4),M(this.tmpMat4,this.vpMatrix,this.tmpMat4)):(k(this.tmpMat4,t.getWorldTransform()),M(this.tmpMat4,this.vpMatrix,this.tmpMat4)),e.setTransform(this.tmpMat4[0],this.tmpMat4[1],this.tmpMat4[4],this.tmpMat4[5],this.tmpMat4[12],this.tmpMat4[13])}},{key:"safeMergeAABB",value:function(){for(var e=new t.AABB,r=arguments.length,n=Array(r),o=0;r>o;o++)n[o]=arguments[o];return n.forEach(function(t){e.add(t)}),e}}])}();function j(e,t,r,n,o,i,a){var l,s;if("rect"===e.image.nodeName){var c=e.image.parsedStyle,u=c.width,d=c.height;s=n.contextService.getDPR();var h=n.config.offscreenCanvas;(l=i.offscreenCanvasCreator.getOrCreateCanvas(h)).width=u*s,l.height=d*s;var f=i.offscreenCanvasCreator.getOrCreateContext(h),p={restoreStack:[],prevObject:null,currentContext:new Map};e.image.forEach(function(e){o.renderDisplayObject(e,f,n,p,i)}),p.restoreStack.forEach(function(){f.restore()})}return a.getOrCreatePatternSync(t,e,r,l,s,t.getGeometryBounds().min,function(){t.dirty(),n.renderingService.dirtify()})}function N(e,r,n,o){var i;if(e.type===t.GradientType.LinearGradient||e.type===t.GradientType.RadialGradient){var a=r.getGeometryBounds(),s=a&&2*a.halfExtents[0]||1,c=a&&2*a.halfExtents[1]||1,u=a&&a.min||[0,0];i=o.getOrCreateGradient(l(l({type:e.type},e.value),{},{min:u,width:s,height:c}),n)}return i}D.tag="CanvasRenderer";var F=["shadowBlur","shadowOffsetX","shadowOffsetY"],L=["lineCap","lineJoin","miterLimit"],I={globalAlpha:1,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",filter:"none",globalCompositeOperation:"source-over",strokeStyle:"#000",strokeOpacity:1,lineWidth:1,lineDash:[],lineDashOffset:0,lineCap:"butt",lineJoin:"miter",miterLimit:10,fillStyle:"#000",fillOpacity:1},G={};function W(e,t,r,n){var o=n.has(t)?n.get(t):I[t];return o!==r&&("lineDash"===t?e.setLineDash(r):e[t]=r,n.set(t,r)),o}var Y=function(){return u(function e(t){s(this,e),this.imagePool=t},[{key:"applyAttributesToContext",value:function(e,t){}},{key:"render",value:function(e,t,r,n,o,i){}},{key:"applyCommonStyleToContext",value:function(e,t,r,n){var o=r?G:n.prevObject.parsedStyle,i=t.parsedStyle;(r||i.opacity!==o.opacity)&&W(e,"globalAlpha",B(i.opacity)?I.globalAlpha:i.opacity,n.currentContext),(r||i.blend!==o.blend)&&W(e,"globalCompositeOperation",B(i.blend)?I.globalCompositeOperation:i.blend,n.currentContext)}},{key:"applyStrokeFillStyleToContext",value:function(e,t,r,n){var o=r?G:n.prevObject.parsedStyle,i=t.parsedStyle,a=i.lineWidth,l=i.fill&&!i.fill.isNone;if(i.stroke&&!i.stroke.isNone&&(void 0===a?I.lineWidth:a)>0){if(r||t.attributes.stroke!==n.prevObject.attributes.stroke)W(e,"strokeStyle",B(i.stroke)||Array.isArray(i.stroke)||i.stroke.isNone?I.strokeStyle:t.attributes.stroke,n.currentContext);(r||i.lineWidth!==o.lineWidth)&&W(e,"lineWidth",B(i.lineWidth)?I.lineWidth:i.lineWidth,n.currentContext),(r||i.lineDash!==o.lineDash)&&W(e,"lineDash",i.lineDash||I.lineDash,n.currentContext),(r||i.lineDashOffset!==o.lineDashOffset)&&W(e,"lineDashOffset",B(i.lineDashOffset)?I.lineDashOffset:i.lineDashOffset,n.currentContext);for(var s=0;L.length>s;s++){var c=L[s];(r||i[c]!==o[c])&&W(e,c,B(i[c])?I[c]:i[c],n.currentContext)}}l&&(r||t.attributes.fill!==n.prevObject.attributes.fill)&&W(e,"fillStyle",B(i.fill)||Array.isArray(i.fill)||i.fill.isNone?I.fillStyle:t.attributes.fill,n.currentContext)}},{key:"applyStyleToContext",value:function(e,r,n,o){var i=r.nodeName;this.applyCommonStyleToContext(e,r,n,o),i===t.Shape.IMAGE||this.applyStrokeFillStyleToContext(e,r,n,o)}},{key:"applyShadowAndFilterStyleToContext",value:function(e,t,r,n){var o=t.parsedStyle;if(r){W(e,"shadowColor",""+o.shadowColor,n.currentContext);for(var i=0;F.length>i;i++){var a=F[i];W(e,a,o[a]||I[a],n.currentContext)}}o.filter&&o.filter.length&&W(e,"filter",t.attributes.filter,n.currentContext)}},{key:"clearShadowAndFilterStyleForContext",value:function(e,t,r,n){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(t){W(e,"shadowColor",I.shadowColor,n.currentContext);for(var i=0;F.length>i;i++){var a=F[i];W(e,a,I[a],n.currentContext)}}if(r)if(t&&o){var l=e.filter;!B(l)&&l.indexOf("drop-shadow")>-1&&W(e,"filter",l.replace(/drop-shadow\([^)]*\)/,"").trim()||I.filter,n.currentContext)}else W(e,"filter",I.filter,n.currentContext)}},{key:"fillToContext",value:function(e,r,n,o,i){var a=this,l=r.parsedStyle,s=l.fill,c=l.fillRule,u=null;if(Array.isArray(s)&&s.length>0)s.forEach(function(t){var o=W(e,"fillStyle",N(t,r,e,a.imagePool),n.currentContext);u=null!=u?u:o,c?e.fill(c):e.fill()});else{if(t.isPattern(s)){var d=j(s,r,e,r.ownerDocument.defaultView.context,o,i,this.imagePool);d&&(e.fillStyle=d,u=!0)}c?e.fill(c):e.fill()}null!==u&&W(e,"fillStyle",u,n.currentContext)}},{key:"strokeToContext",value:function(e,r,n,o,i){var a=this,l=r.parsedStyle.stroke,s=null;if(Array.isArray(l)&&l.length>0)l.forEach(function(t){var o=W(e,"strokeStyle",N(t,r,e,a.imagePool),n.currentContext);s=null!=s?s:o,e.stroke()});else{if(t.isPattern(l)){var c=j(l,r,e,r.ownerDocument.defaultView.context,o,i,this.imagePool);if(c){var u=W(e,"strokeStyle",c,n.currentContext);s=null!=s?s:u}}e.stroke()}null!==s&&W(e,"strokeStyle",s,n.currentContext)}},{key:"drawToContext",value:function(e,r,n,o,i){var a,l=r.nodeName,s=r.parsedStyle,c=s.opacity,u=void 0===c?I.globalAlpha:c,d=s.fillOpacity,h=void 0===d?I.fillOpacity:d,f=s.strokeOpacity,p=void 0===f?I.strokeOpacity:f,y=s.lineWidth,v=s.fill&&!s.fill.isNone,m=s.stroke&&!s.stroke.isNone&&(void 0===y?I.lineWidth:y)>0;if(v||m){var g=!B(s.shadowColor)&&s.shadowBlur>0,b="inner"===s.shadowType,S=0===(null===(a=s.fill)||void 0===a?void 0:a.alpha),w=!(!s.filter||!s.filter.length),x=g&&m&&(l===t.Shape.PATH||l===t.Shape.LINE||l===t.Shape.POLYLINE||S||b),O=null;if(v)x||this.applyShadowAndFilterStyleToContext(e,r,g,n),O=W(e,"globalAlpha",u*h,n.currentContext),this.fillToContext(e,r,n,o,i),x||this.clearShadowAndFilterStyleForContext(e,g,w,n);if(m){var C=!1,A=W(e,"globalAlpha",u*p,n.currentContext);if(O=v?O:A,x&&(this.applyShadowAndFilterStyleToContext(e,r,g,n),C=!0,b)){var k=e.globalCompositeOperation;e.globalCompositeOperation="source-atop",this.strokeToContext(e,r,n,o,i),e.globalCompositeOperation=k,this.clearShadowAndFilterStyleForContext(e,g,w,n,!0)}this.strokeToContext(e,r,n,o,i),C&&this.clearShadowAndFilterStyleForContext(e,g,w,n)}null!==O&&W(e,"globalAlpha",O,n.currentContext)}}}])}(),_=function(e){function r(){return s(this,r),p(this,r,arguments)}return v(r,e),u(r,[{key:"render",value:function(e,r,n,o,i,a){var l=r.fill,s=r.fillRule,c=r.opacity,u=void 0===c?1:c,d=r.fillOpacity,h=void 0===d?1:d,f=r.stroke,p=r.strokeOpacity,y=void 0===p?1:p,v=r.lineWidth,m=void 0===v?1:v,g=r.lineCap,b=r.lineJoin,S=r.shadowType,w=r.shadowBlur,x=r.filter,O=r.miterLimit,C=l&&!l.isNone,A=f&&!f.isNone&&m>0,k=0===(null==l?void 0:l.alpha),M=!(!x||!x.length),T=!B(r.shadowColor)&&w>0,R=n.nodeName,P="inner"===S,E=A&&T&&(R===t.Shape.PATH||R===t.Shape.LINE||R===t.Shape.POLYLINE||k||P);C&&(e.globalAlpha=u*h,E||X(n,e,T),z(e,n,l,s,o,i,a,this.imagePool),E||this.clearShadowAndFilter(e,M,T)),A&&(e.globalAlpha=u*y,e.lineWidth=m,B(O)||(e.miterLimit=O),B(g)||(e.lineCap=g),B(b)||(e.lineJoin=b),E&&(P&&(e.globalCompositeOperation="source-atop"),X(n,e,!0),P&&(V(e,n,f,o,i,a,this.imagePool),e.globalCompositeOperation=I.globalCompositeOperation,this.clearShadowAndFilter(e,M,!0))),V(e,n,f,o,i,a,this.imagePool))}},{key:"clearShadowAndFilter",value:function(e,t,r){if(r&&(e.shadowColor="transparent",e.shadowBlur=0),t){var n=e.filter;!B(n)&&n.indexOf("drop-shadow")>-1&&(e.filter=n.replace(/drop-shadow\([^)]*\)/,"").trim()||"none")}}}])}(Y);function X(e,t,r){var n=e.parsedStyle,o=n.filter,i=n.shadowColor,a=n.shadowBlur,l=n.shadowOffsetX,s=n.shadowOffsetY;o&&o.length&&(t.filter=e.style.filter),r&&(t.shadowColor=""+i,t.shadowBlur=a||0,t.shadowOffsetX=l||0,t.shadowOffsetY=s||0)}function z(e,r,n,o,i,a,l,s){var c=arguments.length>8&&void 0!==arguments[8]&&arguments[8];Array.isArray(n)?n.forEach(function(t){e.fillStyle=N(t,r,e,s),c||(o?e.fill(o):e.fill())}):(t.isPattern(n)&&(e.fillStyle=j(n,r,e,i,a,l,s)),c||(o?e.fill(o):e.fill()))}function V(e,r,n,o,i,a,l){var s=arguments.length>7&&void 0!==arguments[7]&&arguments[7];Array.isArray(n)?n.forEach(function(t){e.strokeStyle=N(t,r,e,l),s||e.stroke()}):(t.isPattern(n)&&(e.strokeStyle=j(n,r,e,o,i,a,l)),s||e.stroke())}var U=function(e){function t(){return s(this,t),p(this,t,arguments)}return v(t,e),u(t,[{key:"renderDownSampled",value:function(e,t,r,n){var o=n.src,i=n.imageCache;i.downSampled?e.drawImage(i.downSampled,Math.floor(n.drawRect[0]),Math.floor(n.drawRect[1]),Math.ceil(n.drawRect[2]),Math.ceil(n.drawRect[3])):this.imagePool.createDownSampledImage(o,r).then(function(){r.ownerDocument&&(r.dirty(),r.ownerDocument.defaultView.context.renderingService.dirtify())}).catch(function(e){console.error(e)})}},{key:"renderTile",value:function(e,t,r,n){var o=n.src,i=n.imageCache,a=n.imageRect,l=n.drawRect,s=i.size,c=e.getTransform(),u=c.a,d=c.b,h=c.c,f=c.d,p=c.e,y=c.f;if(e.resetTransform(),null!=i&&i.gridSize){for(var v=[s[0]/a[2],s[1]/a[3]],m=[i.tileSize[0]/v[0],i.tileSize[1]/v[1]],g=[Math.floor((l[0]-a[0])/m[0]),Math.ceil((l[0]+l[2]-a[0])/m[0])],b=g[0],S=g[1],w=[Math.floor((l[1]-a[1])/m[1]),Math.ceil((l[1]+l[3]-a[1])/m[1])],x=w[1],O=w[0];x>=O;O++)for(var C=b;S>=C;C++){var A=i.tiles[O][C];if(A){var k=[Math.floor(a[0]+A.tileX*m[0]),Math.floor(a[1]+A.tileY*m[1]),Math.ceil(m[0]),Math.ceil(m[1])];e.drawImage(A.data,k[0],k[1],k[2],k[3])}}e.setTransform(u,d,h,f,p,y)}else this.imagePool.createImageTiles(o,[],function(){r.ownerDocument&&(r.dirty(),r.ownerDocument.defaultView.context.renderingService.dirtify())},r).catch(function(e){console.error(e)})}},{key:"render",value:function(e,n,o){var i=n.x,a=void 0===i?0:i,l=n.y,s=void 0===l?0:l,c=n.width,u=n.height,d=n.src,h=n.shadowColor,f=n.shadowBlur,p=this.imagePool.getImageSync(d,o),y=null==p?void 0:p.img,v=c,m=u;if(y){var g,S,w,x,O,A,k,M,T,E,D,j,N,F,L,I,G,W,Y,_,z,V,U,H,Q,J,q,$,K,Z,ee,te,re,ne,oe,ie,ae,le;v||(v=y.width),m||(m=y.height),X(o,e,!B(h)&&f>0);try{var se=o.ownerDocument.defaultView.getContextService().getDomElement(),ce=se.width,ue=se.height,de=e.getTransform(),he=(V=de.a,U=de.c,H=0,Q=0,J=de.b,q=de.d,$=0,K=0,Z=0,ee=0,te=1,re=0,ne=de.e,oe=de.f,ie=0,ae=1,(le=new C(16))[0]=V,le[1]=U,le[2]=H,le[3]=Q,le[4]=J,le[5]=q,le[6]=$,le[7]=K,le[8]=Z,le[9]=ee,le[10]=te,le[11]=re,le[12]=ne,le[13]=oe,le[14]=ie,le[15]=ae,le),fe=(I=[a,s,v,m],G=he,W=P(R(),[I[0],I[1],0],G),Y=P(R(),[I[0]+I[2],I[1],0],G),_=P(R(),[I[0],I[1]+I[3],0],G),z=P(R(),[I[0]+I[2],I[1]+I[3],0],G),[Math.min(W[0],Y[0],_[0],z[0]),Math.min(W[1],Y[1],_[1],z[1]),Math.max(W[0],Y[0],_[0],z[0])-Math.min(W[0],Y[0],_[0],z[0]),Math.max(W[1],Y[1],_[1],z[1])-Math.min(W[1],Y[1],_[1],z[1])]),pe=(g=fe,S=b([0,0,ce,ue],4),w=S[0],x=S[1],O=S[2],A=S[3],k=b(g,4),T=k[1],E=k[2],D=k[3],j=Math.max(w,M=k[0]),N=Math.max(x,T),F=Math.min(w+O,M+E),L=Math.min(x+A,T+D),F>j&&L>N?[j,N,F-j,L-N]:null);if(!pe)return;if(!o.ownerDocument.defaultView.getConfig().enableLargeImageOptimization)return void t.renderFull(e,n,o,{image:y,drawRect:[a,s,v,m]});if((p.downSamplingRate||.5)>fe[2]/p.size[0])return void this.renderDownSampled(e,n,o,{src:d,imageCache:p,drawRect:[a,s,v,m]});if(!r.ImagePool.isSupportTile)return void t.renderFull(e,n,o,{image:y,drawRect:[a,s,v,m]});this.renderTile(e,n,o,{src:d,imageCache:p,imageRect:fe,drawRect:pe})}catch(e){}}}},{key:"drawToContext",value:function(e,t,r,n,o){this.render(e,t.parsedStyle,t)}}],[{key:"renderFull",value:function(e,t,r,n){e.drawImage(n.image,Math.floor(n.drawRect[0]),Math.floor(n.drawRect[1]),Math.ceil(n.drawRect[2]),Math.ceil(n.drawRect[3]))}}])}(_),H=function(e){function t(){return s(this,t),p(this,t,arguments)}return v(t,e),u(t,[{key:"render",value:function(e,t,r,n,o,i){r.getBounds();var a=t.lineWidth,l=void 0===a?1:a,s=t.textAlign,c=void 0===s?"start":s,u=t.textBaseline,d=void 0===u?"alphabetic":u,h=t.lineJoin,f=void 0===h?"miter":h,p=t.miterLimit,y=void 0===p?10:p,v=t.letterSpacing,m=void 0===v?0:v,g=t.stroke,b=t.fill,S=t.fillRule,w=t.fillOpacity,x=void 0===w?1:w,O=t.strokeOpacity,C=void 0===O?1:O,A=t.opacity,k=void 0===A?1:A,M=t.metrics,T=t.x,R=void 0===T?0:T,P=t.y,E=void 0===P?0:P,D=t.dx,j=t.dy,N=t.shadowColor,F=t.shadowBlur,L=M.lines,I=M.height,G=M.lineHeight,W=M.lineMetrics;e.font=M.font,e.lineWidth=l,e.textAlign="middle"===c?"center":c;var Y=d;"alphabetic"===Y&&(Y="bottom"),e.lineJoin=f,B(y)||(e.miterLimit=y);var _=E;"middle"===d?_+=-I/2-G/2:"bottom"===d||"alphabetic"===d||"ideographic"===d?_+=-I:"top"!==d&&"hanging"!==d||(_+=-G);var z=R+(D||0);_+=j||0,1===L.length&&("bottom"===Y?(Y="middle",_-=.5*I):"top"===Y&&(Y="middle",_+=.5*I)),e.textBaseline=Y,X(r,e,!B(N)&&F>0);for(var V=0;L.length>V;V++){var U=l/2+z;_+=G,B(g)||g.isNone||!l||this.drawLetterSpacing(e,r,L[V],W[V],c,U,_,m,b,S,x,g,C,k,!0,n,o,i),B(b)||this.drawLetterSpacing(e,r,L[V],W[V],c,U,_,m,b,S,x,g,C,k,!1,n,o,i)}}},{key:"drawLetterSpacing",value:function(e,t,r,n,o,i,a,l,s,c,u,d,h,f,p,y,v,m){if(0!==l){var g=e.textAlign;e.textAlign="left";var b=i;"center"===o||"middle"===o?b=i-n.width/2:"right"!==o&&"end"!==o||(b=i-n.width);for(var S=Array.from(r),w=e.measureText(r).width,x=0,O=0;S.length>O;++O){var C=S[O];p?this.strokeText(e,t,C,b,a,d,h,y,v,m):this.fillText(e,t,C,b,a,s,c,u,f,y,v,m),b+=w-(x=e.measureText(r.substring(O+1)).width)+l,w=x}e.textAlign=g}else p?this.strokeText(e,t,r,i,a,d,h,y,v,m):this.fillText(e,t,r,i,a,s,c,u,f,y,v,m)}},{key:"fillText",value:function(e,t,r,n,o,i,a,l,s,c,u,d){var h;z(e,t,i,a,c,u,d,this.imagePool,!0);var f=!B(l)&&1!==l;f&&(h=e.globalAlpha,e.globalAlpha=l*s),e.fillText(r,n,o),f&&(e.globalAlpha=h)}},{key:"strokeText",value:function(e,t,r,n,o,i,a,l,s,c){var u;V(e,t,i,l,s,c,this.imagePool,!0);var d=!B(a)&&1!==a;d&&(u=e.globalAlpha,e.globalAlpha=a),e.strokeText(r,n,o),d&&(e.globalAlpha=u)}},{key:"drawToContext",value:function(e,t,r,n,o){this.render(e,t.parsedStyle,t,t.ownerDocument.defaultView.context,n,o)}}])}(_),Q=function(e){function r(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s(this,r),(e=p(this,r)).name="canvas-renderer",e.options=t,e}return v(r,e),u(r,[{key:"init",value:function(){var e,r=l({dirtyObjectNumThreshold:500,dirtyObjectRatioThreshold:.8},this.options),n=this.context.imagePool,o=new _(n),a=(i(i(i(i(i(i(i(i(i(i(e={},t.Shape.CIRCLE,o),t.Shape.ELLIPSE,o),t.Shape.RECT,o),t.Shape.IMAGE,new U(n)),t.Shape.TEXT,new H(n)),t.Shape.LINE,o),t.Shape.POLYLINE,o),t.Shape.POLYGON,o),t.Shape.PATH,o),t.Shape.GROUP,void 0),i(i(i(e,t.Shape.HTML,void 0),t.Shape.MESH,void 0),t.Shape.FRAGMENT,void 0));this.context.defaultStyleRendererFactory=a,this.context.styleRendererFactory=a,this.addRenderingPlugin(new D(r))}},{key:"destroy",value:function(){this.removeAllRenderingPlugins(),delete this.context.defaultStyleRendererFactory,delete this.context.styleRendererFactory}}])}(t.AbstractRendererPlugin);e.CircleRenderer=_,e.DefaultRenderer=_,e.EllipseRenderer=_,e.ImageRenderer=U,e.LineRenderer=_,e.PathRenderer=_,e.Plugin=Q,e.PolygonRenderer=_,e.PolylineRenderer=_,e.RectRenderer=_,e.TextRenderer=H}); | ||
| !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@antv/g-lite"),require("@antv/g-plugin-image-loader")):"function"==typeof define&&define.amd?define(["exports","@antv/g-lite","@antv/g-plugin-image-loader"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).G=e.G||{},e.G.CanvasRenderer={}),e.window.G,e.window.G.ImageLoader)}(this,function(e,t,r){"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var o=r.call(e,t||"default");if("object"!=n(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==n(t)?t:t+""}function i(e,t,r){return(t=o(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function l(e){for(var t=1;arguments.length>t;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach(function(t){i(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var r=0;t.length>r;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,o(n.key),n)}}function u(e,t,r){return t&&c(e.prototype,t),r&&c(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function h(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(h=function(){return!!e})()}function f(e,t){if(t&&("object"==n(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function p(e,t,r){return t=d(t),f(e,h()?Reflect.construct(t,r||[],d(e).constructor):t.apply(e,r))}function v(e,t){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},v(e,t)}function y(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&v(e,t)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);t>r;r++)n[r]=e[r];return n}function g(e,t){if(e){if("string"==typeof e)return m(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?m(e,t):void 0}}function b(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,a,l=[],s=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;s=!1}else for(;!(s=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);s=!0);}catch(e){c=!0,o=e}finally{try{if(!s&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return l}}(e,t)||g(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e){return function(e){if(Array.isArray(e))return m(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(e,t){if(!{}.hasOwnProperty.call(e,t))throw new TypeError("attempted to use private field on non-instance");return e}var x=0;function O(e){return"__private_"+x+++"_"+e}var C="undefined"!=typeof Float32Array?Float32Array:Array;function A(){var e=new C(16);return C!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function k(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function T(e,t,r){var n=t[0],o=t[1],i=t[2],a=t[3],l=t[4],s=t[5],c=t[6],u=t[7],d=t[8],h=t[9],f=t[10],p=t[11],v=t[12],y=t[13],m=t[14],g=t[15],b=r[0],w=r[1],S=r[2],x=r[3];return e[0]=b*n+w*l+S*d+x*v,e[1]=b*o+w*s+S*h+x*y,e[2]=b*i+w*c+S*f+x*m,e[3]=b*a+w*u+S*p+x*g,e[4]=(b=r[4])*n+(w=r[5])*l+(S=r[6])*d+(x=r[7])*v,e[5]=b*o+w*s+S*h+x*y,e[6]=b*i+w*c+S*f+x*m,e[7]=b*a+w*u+S*p+x*g,e[8]=(b=r[8])*n+(w=r[9])*l+(S=r[10])*d+(x=r[11])*v,e[9]=b*o+w*s+S*h+x*y,e[10]=b*i+w*c+S*f+x*m,e[11]=b*a+w*u+S*p+x*g,e[12]=(b=r[12])*n+(w=r[13])*l+(S=r[14])*d+(x=r[15])*v,e[13]=b*o+w*s+S*h+x*y,e[14]=b*i+w*c+S*f+x*m,e[15]=b*a+w*u+S*p+x*g,e}function M(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function R(){var e=new C(3);return C!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function P(e,t,r){var n=t[0],o=t[1],i=t[2],a=r[3]*n+r[7]*o+r[11]*i+r[15];return e[0]=(r[0]*n+r[4]*o+r[8]*i+r[12])/(a=a||1),e[1]=(r[1]*n+r[5]*o+r[9]*i+r[13])/a,e[2]=(r[2]*n+r[6]*o+r[10]*i+r[14])/a,e}function D(e){return null==e}R();var B=O("renderState"),E=function(){function e(t){s(this,e),this.removedRBushNodeAABBs=[],this.renderQueue=[],Object.defineProperty(this,B,{writable:!0,value:{restoreStack:[],prevObject:null,currentContext:new Map}}),this.clearFullScreenLastFrame=!1,this.clearFullScreen=!1,this.vpMatrix=A(),this.dprMatrix=A(),this.tmpMat4=A(),this.vec3a=R(),this.vec3b=R(),this.vec3c=R(),this.vec3d=R(),this.canvasRendererPluginOptions=t}return u(e,[{key:"apply",value:function(r,n){var o=this;this.context=r;var i=this.context,a=i.config,l=i.camera,s=i.renderingService,c=i.renderingContext,u=i.rBushRoot,d=i.pathGeneratorFactory,h=a.renderer.getConfig().enableRenderingOptimization;a.renderer.getConfig().enableDirtyCheck=!1,a.renderer.getConfig().enableDirtyRectangleRendering=!1,this.rBush=u,this.pathGeneratorFactory=d;var f=r.contextService,p=c.root.ownerDocument.defaultView,v=function(e){var t=e.target.rBushNode;null!=t&&t.aabb&&o.removedRBushNodeAABBs.push(t.aabb)},y=function(e){var t=e.target.rBushNode;t.aabb&&o.removedRBushNodeAABBs.push(t.aabb)};s.hooks.init.tap(e.tag,function(){p.addEventListener(t.ElementEvent.UNMOUNTED,v),p.addEventListener(t.ElementEvent.CULLED,y);var e=f.getDPR(),r=a.width,n=a.height,i=f.getContext();o.clearRect(i,0,0,r*e,n*e,a.background)}),s.hooks.destroy.tap(e.tag,function(){p.removeEventListener(t.ElementEvent.UNMOUNTED,v),p.removeEventListener(t.ElementEvent.CULLED,y),o.renderQueue=[],o.removedRBushNodeAABBs=[],S(o,B)[B]={restoreStack:[],prevObject:null,currentContext:null}});var m=function(e,t){for(var r=[e];r.length>0;){var i,a=r.pop();a.isVisible()&&!a.isCulled()&&(h?o.renderDisplayObjectOptimized(a,t,o.context,S(o,B)[B],n):o.renderDisplayObject(a,t,o.context,S(o,B)[B],n));for(var l=(null===(i=a.sortable)||void 0===i||null===(i=i.sorted)||void 0===i?void 0:i.length)>0?a.sortable.sorted:a.childNodes,s=l.length-1;s>=0;s--)r.push(l[s])}};s.hooks.endFrame.tap(e.tag,function(){if(function(){var e,t=f.getContext(),r=f.getDPR(),n=a.width,i=a.height,l=o.canvasRendererPluginOptions,c=l.dirtyObjectNumThreshold,u=l.dirtyObjectRatioThreshold,d=s.getStats(),h=d.rendered,v=h/d.total;o.clearFullScreen=o.clearFullScreenLastFrame||!(null!==(e=p.context.renderingPlugins[1])&&void 0!==e&&e.isFirstTimeRenderingFinished)||s.disableDirtyRectangleRendering()||h>c&&v>u,t&&("function"==typeof t.resetTransform?t.resetTransform():t.setTransform(1,0,0,1,0,0),o.clearFullScreen&&o.clearRect(t,0,0,n*r,i*r,a.background))}(),0!==c.root.childNodes.length){h=a.renderer.getConfig().enableRenderingOptimization,S(o,B)[B]={restoreStack:[],prevObject:null,currentContext:S(o,B)[B].currentContext},S(o,B)[B].currentContext.clear(),o.clearFullScreenLastFrame=!1;var e,r,i=f.getContext(),u=f.getDPR();if((e=o.dprMatrix)[0]=(r=[u,u,1])[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=r[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=r[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,T(o.vpMatrix,o.dprMatrix,l.getOrthoMatrix()),o.clearFullScreen)h?(i.save(),m(c.root,i),i.restore()):m(c.root,i),o.removedRBushNodeAABBs=[];else{var d=o.safeMergeAABB.apply(o,[o.mergeDirtyAABBs(o.renderQueue)].concat(w(o.removedRBushNodeAABBs.map(function(e){var r=e.minX,n=e.minY,o=e.maxX,i=e.maxY,a=new t.AABB;return a.setMinMax([r,n,0],[o,i,0]),a}))));if(o.removedRBushNodeAABBs=[],t.AABB.isEmpty(d))return void(o.renderQueue=[]);var v=o.convertAABB2Rect(d),y=v.x,g=v.y,b=v.width,x=v.height,O=P(o.vec3a,[y,g,0],o.vpMatrix),C=P(o.vec3b,[y+b,g,0],o.vpMatrix),A=P(o.vec3c,[y,g+x,0],o.vpMatrix),k=P(o.vec3d,[y+b,g+x,0],o.vpMatrix),M=Math.min(O[0],C[0],k[0],A[0]),R=Math.min(O[1],C[1],k[1],A[1]),D=Math.max(O[0],C[0],k[0],A[0]),E=Math.max(O[1],C[1],k[1],A[1]),j=Math.floor(M),L=Math.floor(R),N=Math.ceil(D-M),F=Math.ceil(E-R);i.save(),o.clearRect(i,j,L,N,F,a.background),i.beginPath(),i.rect(j,L,N,F),i.clip(),i.setTransform(o.vpMatrix[0],o.vpMatrix[1],o.vpMatrix[4],o.vpMatrix[5],o.vpMatrix[12],o.vpMatrix[13]),a.renderer.getConfig().enableDirtyRectangleRenderingDebug&&p.dispatchEvent(new t.CustomEvent(t.CanvasEvent.DIRTY_RECTANGLE,{dirtyRect:{x:j,y:L,width:N,height:F}})),o.searchDirtyObjects(d).sort(function(e,t){return e.sortable.renderOrder-t.sortable.renderOrder}).forEach(function(e){e&&e.isVisible()&&!e.isCulled()&&o.renderDisplayObject(e,i,o.context,S(o,B)[B],n)}),i.restore(),o.renderQueue.forEach(function(e){o.saveDirtyAABB(e)}),o.renderQueue=[]}S(o,B)[B].restoreStack.forEach(function(){i.restore()}),S(o,B)[B].restoreStack=[]}else o.clearFullScreenLastFrame=!0}),s.hooks.render.tap(e.tag,function(e){o.clearFullScreen||o.renderQueue.push(e)})}},{key:"clearRect",value:function(e,t,r,n,o,i){e.clearRect(t,r,n,o),i&&(e.fillStyle=i,e.fillRect(t,r,n,o))}},{key:"renderDisplayObjectOptimized",value:function(e,r,n,o,i){var a=e.nodeName,l=!1,s=this.context.styleRendererFactory[a],c=this.pathGeneratorFactory[a],u=e.parsedStyle.clipPath;if(u){(!o.prevObject||!M(u.getWorldTransform(),o.prevObject.getWorldTransform()))&&(this.applyWorldTransform(r,u),o.prevObject=null);var d=this.pathGeneratorFactory[u.nodeName];d&&(r.save(),l=!0,r.beginPath(),d(r,u.parsedStyle),r.closePath(),r.clip())}if(s){(!o.prevObject||!M(e.getWorldTransform(),o.prevObject.getWorldTransform()))&&this.applyWorldTransform(r,e);var h=!o.prevObject;if(!h){var f=o.prevObject.nodeName;h=a===t.Shape.TEXT?f!==t.Shape.TEXT:a===t.Shape.IMAGE?f!==t.Shape.IMAGE:f===t.Shape.TEXT||f===t.Shape.IMAGE}s.applyStyleToContext(r,e,h,o),o.prevObject=e}c&&(r.beginPath(),c(r,e.parsedStyle),a!==t.Shape.LINE&&a!==t.Shape.PATH&&a!==t.Shape.POLYLINE&&r.closePath()),s&&s.drawToContext(r,e,S(this,B)[B],this,i),l&&r.restore(),e.dirty(!1)}},{key:"renderDisplayObject",value:function(e,r,n,o,i){var a=e.nodeName,l=o.restoreStack[o.restoreStack.length-1];!l||e.compareDocumentPosition(l)&t.Node.DOCUMENT_POSITION_CONTAINS||(r.restore(),o.restoreStack.pop());var s=this.context.styleRendererFactory[a],c=this.pathGeneratorFactory[a],u=e.parsedStyle.clipPath;if(u){this.applyWorldTransform(r,u);var d=this.pathGeneratorFactory[u.nodeName];d&&(r.save(),o.restoreStack.push(e),r.beginPath(),d(r,u.parsedStyle),r.closePath(),r.clip())}s&&(this.applyWorldTransform(r,e),r.save(),this.applyAttributesToContext(r,e)),c&&(r.beginPath(),c(r,e.parsedStyle),a!==t.Shape.LINE&&a!==t.Shape.PATH&&a!==t.Shape.POLYLINE&&r.closePath()),s&&(s.render(r,e.parsedStyle,e,n,this,i),r.restore()),e.dirty(!1)}},{key:"applyAttributesToContext",value:function(e,t){var r=t.parsedStyle,n=r.stroke,o=r.fill,i=r.opacity,a=r.lineDash,l=r.lineDashOffset;a&&e.setLineDash(a),D(l)||(e.lineDashOffset=l),D(i)||(e.globalAlpha*=i),D(n)||Array.isArray(n)||n.isNone||(e.strokeStyle=t.attributes.stroke),D(o)||Array.isArray(o)||o.isNone||(e.fillStyle=t.attributes.fill)}},{key:"convertAABB2Rect",value:function(e){var t=e.getMin(),r=e.getMax(),n=Math.floor(t[0]),o=Math.floor(t[1]);return{x:n,y:o,width:Math.ceil(r[0])-n,height:Math.ceil(r[1])-o}}},{key:"mergeDirtyAABBs",value:function(e){var r=new t.AABB;return e.forEach(function(e){var t=e.getRenderBounds();r.add(t);var n=e.renderable.dirtyRenderBounds;n&&r.add(n)}),r}},{key:"searchDirtyObjects",value:function(e){var t=b(e.getMin(),2),r=t[0],n=t[1],o=b(e.getMax(),2);return this.rBush.search({minX:r,minY:n,maxX:o[0],maxY:o[1]}).map(function(e){return e.displayObject})}},{key:"saveDirtyAABB",value:function(e){var r=e.renderable;r.dirtyRenderBounds||(r.dirtyRenderBounds=new t.AABB);var n=e.getRenderBounds();n&&r.dirtyRenderBounds.update(n.center,n.halfExtents)}},{key:"applyWorldTransform",value:function(e,t,r){r?(k(this.tmpMat4,t.getLocalTransform()),T(this.tmpMat4,r,this.tmpMat4),T(this.tmpMat4,this.vpMatrix,this.tmpMat4)):(k(this.tmpMat4,t.getWorldTransform()),T(this.tmpMat4,this.vpMatrix,this.tmpMat4)),e.setTransform(this.tmpMat4[0],this.tmpMat4[1],this.tmpMat4[4],this.tmpMat4[5],this.tmpMat4[12],this.tmpMat4[13])}},{key:"safeMergeAABB",value:function(){for(var e=new t.AABB,r=arguments.length,n=Array(r),o=0;r>o;o++)n[o]=arguments[o];return n.forEach(function(t){e.add(t)}),e}}])}();function j(e,t,r,n,o,i,a){var l,s;if("rect"===e.image.nodeName){var c=e.image.parsedStyle,u=c.width,d=c.height;s=n.contextService.getDPR();var h=n.config.offscreenCanvas;(l=i.offscreenCanvasCreator.getOrCreateCanvas(h)).width=u*s,l.height=d*s;var f=i.offscreenCanvasCreator.getOrCreateContext(h),p={restoreStack:[],prevObject:null,currentContext:new Map};e.image.forEach(function(e){o.renderDisplayObject(e,f,n,p,i)}),p.restoreStack.forEach(function(){f.restore()})}return a.getOrCreatePatternSync(t,e,r,l,s,t.getGeometryBounds().min,function(){t.dirty(),n.renderingService.dirty()})}function L(e,r,n,o){var i;if(e.type===t.GradientType.LinearGradient||e.type===t.GradientType.RadialGradient){var a=r.getGeometryBounds(),s=a&&2*a.halfExtents[0]||1,c=a&&2*a.halfExtents[1]||1,u=a&&a.min||[0,0];i=o.getOrCreateGradient(l(l({type:e.type},e.value),{},{min:u,width:s,height:c}),n)}return i}E.tag="CanvasRenderer";var N=["shadowBlur","shadowOffsetX","shadowOffsetY"],F=["lineCap","lineJoin","miterLimit"],I={globalAlpha:1,shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",filter:"none",globalCompositeOperation:"source-over",strokeStyle:"#000",strokeOpacity:1,lineWidth:1,lineDash:[],lineDashOffset:0,lineCap:"butt",lineJoin:"miter",miterLimit:10,fillStyle:"#000",fillOpacity:1},W={};function G(e,t,r,n){var o=n.has(t)?n.get(t):I[t];return o!==r&&("lineDash"===t?e.setLineDash(r):e[t]=r,n.set(t,r)),o}var Y=function(){return u(function e(t){s(this,e),this.imagePool=t},[{key:"applyAttributesToContext",value:function(e,t){}},{key:"render",value:function(e,t,r,n,o,i){}},{key:"applyCommonStyleToContext",value:function(e,t,r,n){var o=r?W:n.prevObject.parsedStyle,i=t.parsedStyle;(r||i.opacity!==o.opacity)&&G(e,"globalAlpha",D(i.opacity)?I.globalAlpha:i.opacity,n.currentContext),(r||i.blend!==o.blend)&&G(e,"globalCompositeOperation",D(i.blend)?I.globalCompositeOperation:i.blend,n.currentContext)}},{key:"applyStrokeFillStyleToContext",value:function(e,t,r,n){var o=r?W:n.prevObject.parsedStyle,i=t.parsedStyle,a=i.lineWidth,l=i.fill&&!i.fill.isNone;if(i.stroke&&!i.stroke.isNone&&(void 0===a?I.lineWidth:a)>0){if(r||t.attributes.stroke!==n.prevObject.attributes.stroke)G(e,"strokeStyle",D(i.stroke)||Array.isArray(i.stroke)||i.stroke.isNone?I.strokeStyle:t.attributes.stroke,n.currentContext);(r||i.lineWidth!==o.lineWidth)&&G(e,"lineWidth",D(i.lineWidth)?I.lineWidth:i.lineWidth,n.currentContext),(r||i.lineDash!==o.lineDash)&&G(e,"lineDash",i.lineDash||I.lineDash,n.currentContext),(r||i.lineDashOffset!==o.lineDashOffset)&&G(e,"lineDashOffset",D(i.lineDashOffset)?I.lineDashOffset:i.lineDashOffset,n.currentContext);for(var s=0;F.length>s;s++){var c=F[s];(r||i[c]!==o[c])&&G(e,c,D(i[c])?I[c]:i[c],n.currentContext)}}l&&(r||t.attributes.fill!==n.prevObject.attributes.fill)&&G(e,"fillStyle",D(i.fill)||Array.isArray(i.fill)||i.fill.isNone?I.fillStyle:t.attributes.fill,n.currentContext)}},{key:"applyStyleToContext",value:function(e,r,n,o){var i=r.nodeName;this.applyCommonStyleToContext(e,r,n,o),i===t.Shape.IMAGE||this.applyStrokeFillStyleToContext(e,r,n,o)}},{key:"applyShadowAndFilterStyleToContext",value:function(e,t,r,n){var o=t.parsedStyle;if(r){G(e,"shadowColor",""+o.shadowColor,n.currentContext);for(var i=0;N.length>i;i++){var a=N[i];G(e,a,o[a]||I[a],n.currentContext)}}o.filter&&o.filter.length&&G(e,"filter",t.attributes.filter,n.currentContext)}},{key:"clearShadowAndFilterStyleForContext",value:function(e,t,r,n){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(t){G(e,"shadowColor",I.shadowColor,n.currentContext);for(var i=0;N.length>i;i++){var a=N[i];G(e,a,I[a],n.currentContext)}}if(r)if(t&&o){var l=e.filter;!D(l)&&l.indexOf("drop-shadow")>-1&&G(e,"filter",l.replace(/drop-shadow\([^)]*\)/,"").trim()||I.filter,n.currentContext)}else G(e,"filter",I.filter,n.currentContext)}},{key:"fillToContext",value:function(e,r,n,o,i){var a=this,l=r.parsedStyle,s=l.fill,c=l.fillRule,u=null;if(Array.isArray(s)&&s.length>0)s.forEach(function(t){var o=G(e,"fillStyle",L(t,r,e,a.imagePool),n.currentContext);u=null!=u?u:o,c?e.fill(c):e.fill()});else{if(t.isPattern(s)){var d=j(s,r,e,r.ownerDocument.defaultView.context,o,i,this.imagePool);d&&(e.fillStyle=d,u=!0)}c?e.fill(c):e.fill()}null!==u&&G(e,"fillStyle",u,n.currentContext)}},{key:"strokeToContext",value:function(e,r,n,o,i){var a=this,l=r.parsedStyle.stroke,s=null;if(Array.isArray(l)&&l.length>0)l.forEach(function(t){var o=G(e,"strokeStyle",L(t,r,e,a.imagePool),n.currentContext);s=null!=s?s:o,e.stroke()});else{if(t.isPattern(l)){var c=j(l,r,e,r.ownerDocument.defaultView.context,o,i,this.imagePool);if(c){var u=G(e,"strokeStyle",c,n.currentContext);s=null!=s?s:u}}e.stroke()}null!==s&&G(e,"strokeStyle",s,n.currentContext)}},{key:"drawToContext",value:function(e,r,n,o,i){var a,l=r.nodeName,s=r.parsedStyle,c=s.opacity,u=void 0===c?I.globalAlpha:c,d=s.fillOpacity,h=void 0===d?I.fillOpacity:d,f=s.strokeOpacity,p=void 0===f?I.strokeOpacity:f,v=s.lineWidth,y=s.fill&&!s.fill.isNone,m=s.stroke&&!s.stroke.isNone&&(void 0===v?I.lineWidth:v)>0;if(y||m){var g=!D(s.shadowColor)&&s.shadowBlur>0,b="inner"===s.shadowType,w=0===(null===(a=s.fill)||void 0===a?void 0:a.alpha),S=!(!s.filter||!s.filter.length),x=g&&m&&(l===t.Shape.PATH||l===t.Shape.LINE||l===t.Shape.POLYLINE||w||b),O=null;if(y)x||this.applyShadowAndFilterStyleToContext(e,r,g,n),O=G(e,"globalAlpha",u*h,n.currentContext),this.fillToContext(e,r,n,o,i),x||this.clearShadowAndFilterStyleForContext(e,g,S,n);if(m){var C=!1,A=G(e,"globalAlpha",u*p,n.currentContext);if(O=y?O:A,x&&(this.applyShadowAndFilterStyleToContext(e,r,g,n),C=!0,b)){var k=e.globalCompositeOperation;e.globalCompositeOperation="source-atop",this.strokeToContext(e,r,n,o,i),e.globalCompositeOperation=k,this.clearShadowAndFilterStyleForContext(e,g,S,n,!0)}this.strokeToContext(e,r,n,o,i),C&&this.clearShadowAndFilterStyleForContext(e,g,S,n)}null!==O&&G(e,"globalAlpha",O,n.currentContext)}}}])}(),_=function(e){function r(){return s(this,r),p(this,r,arguments)}return y(r,e),u(r,[{key:"render",value:function(e,r,n,o,i,a){var l=r.fill,s=r.fillRule,c=r.opacity,u=void 0===c?1:c,d=r.fillOpacity,h=void 0===d?1:d,f=r.stroke,p=r.strokeOpacity,v=void 0===p?1:p,y=r.lineWidth,m=void 0===y?1:y,g=r.lineCap,b=r.lineJoin,w=r.shadowType,S=r.shadowBlur,x=r.filter,O=r.miterLimit,C=l&&!l.isNone,A=f&&!f.isNone&&m>0,k=0===(null==l?void 0:l.alpha),T=!(!x||!x.length),M=!D(r.shadowColor)&&S>0,R=n.nodeName,P="inner"===w,B=A&&M&&(R===t.Shape.PATH||R===t.Shape.LINE||R===t.Shape.POLYLINE||k||P);C&&(e.globalAlpha=u*h,B||X(n,e,M),z(e,n,l,s,o,i,a,this.imagePool),B||this.clearShadowAndFilter(e,T,M)),A&&(e.globalAlpha=u*v,e.lineWidth=m,D(O)||(e.miterLimit=O),D(g)||(e.lineCap=g),D(b)||(e.lineJoin=b),B&&(P&&(e.globalCompositeOperation="source-atop"),X(n,e,!0),P&&(V(e,n,f,o,i,a,this.imagePool),e.globalCompositeOperation=I.globalCompositeOperation,this.clearShadowAndFilter(e,T,!0))),V(e,n,f,o,i,a,this.imagePool))}},{key:"clearShadowAndFilter",value:function(e,t,r){if(r&&(e.shadowColor="transparent",e.shadowBlur=0),t){var n=e.filter;!D(n)&&n.indexOf("drop-shadow")>-1&&(e.filter=n.replace(/drop-shadow\([^)]*\)/,"").trim()||"none")}}}])}(Y);function X(e,t,r){var n=e.parsedStyle,o=n.filter,i=n.shadowColor,a=n.shadowBlur,l=n.shadowOffsetX,s=n.shadowOffsetY;o&&o.length&&(t.filter=e.style.filter),r&&(t.shadowColor=""+i,t.shadowBlur=a||0,t.shadowOffsetX=l||0,t.shadowOffsetY=s||0)}function z(e,r,n,o,i,a,l,s){var c=arguments.length>8&&void 0!==arguments[8]&&arguments[8];Array.isArray(n)?n.forEach(function(t){e.fillStyle=L(t,r,e,s),c||(o?e.fill(o):e.fill())}):(t.isPattern(n)&&(e.fillStyle=j(n,r,e,i,a,l,s)),c||(o?e.fill(o):e.fill()))}function V(e,r,n,o,i,a,l){var s=arguments.length>7&&void 0!==arguments[7]&&arguments[7];Array.isArray(n)?n.forEach(function(t){e.strokeStyle=L(t,r,e,l),s||e.stroke()}):(t.isPattern(n)&&(e.strokeStyle=j(n,r,e,o,i,a,l)),s||e.stroke())}var U=function(e){function t(){return s(this,t),p(this,t,arguments)}return y(t,e),u(t,[{key:"renderDownSampled",value:function(e,t,r,n){var o=n.src,i=n.imageCache;i.downSampled?e.drawImage(i.downSampled,Math.floor(n.drawRect[0]),Math.floor(n.drawRect[1]),Math.ceil(n.drawRect[2]),Math.ceil(n.drawRect[3])):this.imagePool.createDownSampledImage(o,r).then(function(){r.ownerDocument&&(r.dirty(),r.ownerDocument.defaultView.context.renderingService.dirty())}).catch(function(e){console.error(e)})}},{key:"renderTile",value:function(e,t,r,n){var o=n.src,i=n.imageCache,a=n.imageRect,l=n.drawRect,s=i.size,c=e.getTransform(),u=c.a,d=c.b,h=c.c,f=c.d,p=c.e,v=c.f;if(e.resetTransform(),null!=i&&i.gridSize){for(var y=[s[0]/a[2],s[1]/a[3]],m=[i.tileSize[0]/y[0],i.tileSize[1]/y[1]],g=[Math.floor((l[0]-a[0])/m[0]),Math.ceil((l[0]+l[2]-a[0])/m[0])],b=g[0],w=g[1],S=[Math.floor((l[1]-a[1])/m[1]),Math.ceil((l[1]+l[3]-a[1])/m[1])],x=S[1],O=S[0];x>=O;O++)for(var C=b;w>=C;C++){var A=i.tiles[O][C];if(A){var k=[Math.floor(a[0]+A.tileX*m[0]),Math.floor(a[1]+A.tileY*m[1]),Math.ceil(m[0]),Math.ceil(m[1])];e.drawImage(A.data,k[0],k[1],k[2],k[3])}}e.setTransform(u,d,h,f,p,v)}else this.imagePool.createImageTiles(o,[],function(){r.ownerDocument&&(r.dirty(),r.ownerDocument.defaultView.context.renderingService.dirty())},r).catch(function(e){console.error(e)})}},{key:"render",value:function(e,n,o){var i=n.x,a=void 0===i?0:i,l=n.y,s=void 0===l?0:l,c=n.width,u=n.height,d=n.src,h=n.shadowColor,f=n.shadowBlur,p=this.imagePool.getImageSync(d,o),v=null==p?void 0:p.img,y=c,m=u;if(v){var g,w,S,x,O,A,k,T,M,B,E,j,L,N,F,I,W,G,Y,_,z,V,U,H,Q,J,q,$,K,Z,ee,te,re,ne,oe,ie,ae,le;y||(y=v.width),m||(m=v.height),X(o,e,!D(h)&&f>0);try{var se=o.ownerDocument.defaultView.getContextService().getDomElement(),ce=se.width,ue=se.height,de=e.getTransform(),he=(V=de.a,U=de.c,H=0,Q=0,J=de.b,q=de.d,$=0,K=0,Z=0,ee=0,te=1,re=0,ne=de.e,oe=de.f,ie=0,ae=1,(le=new C(16))[0]=V,le[1]=U,le[2]=H,le[3]=Q,le[4]=J,le[5]=q,le[6]=$,le[7]=K,le[8]=Z,le[9]=ee,le[10]=te,le[11]=re,le[12]=ne,le[13]=oe,le[14]=ie,le[15]=ae,le),fe=(I=[a,s,y,m],W=he,G=P(R(),[I[0],I[1],0],W),Y=P(R(),[I[0]+I[2],I[1],0],W),_=P(R(),[I[0],I[1]+I[3],0],W),z=P(R(),[I[0]+I[2],I[1]+I[3],0],W),[Math.min(G[0],Y[0],_[0],z[0]),Math.min(G[1],Y[1],_[1],z[1]),Math.max(G[0],Y[0],_[0],z[0])-Math.min(G[0],Y[0],_[0],z[0]),Math.max(G[1],Y[1],_[1],z[1])-Math.min(G[1],Y[1],_[1],z[1])]),pe=(g=fe,w=b([0,0,ce,ue],4),S=w[0],x=w[1],O=w[2],A=w[3],k=b(g,4),M=k[1],B=k[2],E=k[3],j=Math.max(S,T=k[0]),L=Math.max(x,M),N=Math.min(S+O,T+B),F=Math.min(x+A,M+E),N>j&&F>L?[j,L,N-j,F-L]:null);if(!pe)return;if(!o.ownerDocument.defaultView.getConfig().enableLargeImageOptimization)return void t.renderFull(e,n,o,{image:v,drawRect:[a,s,y,m]});if((p.downSamplingRate||.5)>fe[2]/p.size[0])return void this.renderDownSampled(e,n,o,{src:d,imageCache:p,drawRect:[a,s,y,m]});if(!r.ImagePool.isSupportTile)return void t.renderFull(e,n,o,{image:v,drawRect:[a,s,y,m]});this.renderTile(e,n,o,{src:d,imageCache:p,imageRect:fe,drawRect:pe})}catch(e){}}}},{key:"drawToContext",value:function(e,t,r,n,o){this.render(e,t.parsedStyle,t)}}],[{key:"renderFull",value:function(e,t,r,n){e.drawImage(n.image,Math.floor(n.drawRect[0]),Math.floor(n.drawRect[1]),Math.ceil(n.drawRect[2]),Math.ceil(n.drawRect[3]))}}])}(_);function H(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=g(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return e.length>n?{done:!1,value:e[n++]}:{done:!0}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,l=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){l=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(l)throw i}}}}var Q=function(e){function t(){return s(this,t),p(this,t,arguments)}return y(t,e),u(t,[{key:"render",value:function(e,t,r,n,o,i){r.getBounds();var a=t.lineWidth,l=void 0===a?1:a,s=t.textAlign,c=void 0===s?"start":s,u=t.textBaseline,d=void 0===u?"alphabetic":u,h=t.lineJoin,f=void 0===h?"miter":h,p=t.miterLimit,v=void 0===p?10:p,y=t.letterSpacing,m=void 0===y?0:y,g=t.stroke,b=t.fill,w=t.fillRule,S=t.fillOpacity,x=void 0===S?1:S,O=t.strokeOpacity,C=void 0===O?1:O,A=t.opacity,k=void 0===A?1:A,T=t.metrics,M=t.x,R=void 0===M?0:M,P=t.y,B=void 0===P?0:P,E=t.dx,j=t.dy,L=t.shadowColor,N=t.shadowBlur,F=t.textDecorationLine,I=T.lines,W=T.height,G=T.lineHeight,Y=T.lineMetrics;e.font=T.font,e.lineWidth=l,e.textAlign="middle"===c?"center":c;var _=d;"alphabetic"===_&&(_="bottom"),e.lineJoin=f,D(v)||(e.miterLimit=v);var z=B;"middle"===d?z+=-W/2-G/2:"bottom"===d||"alphabetic"===d||"ideographic"===d?z+=-W:"top"!==d&&"hanging"!==d||(z+=-G);var V=R+(E||0);z+=j||0,1===I.length&&("bottom"===_?(_="middle",z-=.5*W):"top"===_&&(_="middle",z+=.5*W)),e.textBaseline=_,X(r,e,!D(L)&&N>0);for(var U=0;I.length>U;U++){var H=l/2+V;z+=G,D(g)||g.isNone||!l||this.drawLetterSpacing(e,r,I[U],Y[U],c,H,z,m,b,w,x,g,C,k,!0,n,o,i),D(b)||this.drawLetterSpacing(e,r,I[U],Y[U],c,H,z,m,b,w,x,g,C,k,!1,n,o,i)}F&&"none"!==F&&this.drawTextDecorations(e,t,r,I,G,V,B+(j||0),n,o,i)}},{key:"drawLetterSpacing",value:function(e,t,r,n,o,i,a,l,s,c,u,d,h,f,p,v,y,m){if(0!==l){var g=e.textAlign;e.textAlign="left";var b=i;"center"===o||"middle"===o?b=i-n.width/2:"right"!==o&&"end"!==o||(b=i-n.width);for(var w=Array.from(r),S=e.measureText(r).width,x=0,O=0;w.length>O;++O){var C=w[O];p?this.strokeText(e,t,C,b,a,d,h,v,y,m):this.fillText(e,t,C,b,a,s,c,u,f,v,y,m),b+=S-(x=e.measureText(r.substring(O+1)).width)+l,S=x}e.textAlign=g}else p?this.strokeText(e,t,r,i,a,d,h,v,y,m):this.fillText(e,t,r,i,a,s,c,u,f,v,y,m)}},{key:"fillText",value:function(e,t,r,n,o,i,a,l,s,c,u,d){var h;z(e,t,i,a,c,u,d,this.imagePool,!0);var f=!D(l)&&1!==l;f&&(h=e.globalAlpha,e.globalAlpha=l*s),e.fillText(r,n,o),f&&(e.globalAlpha=h)}},{key:"strokeText",value:function(e,t,r,n,o,i,a,l,s,c){var u;V(e,t,i,l,s,c,this.imagePool,!0);var d=!D(a)&&1!==a;d&&(u=e.globalAlpha,e.globalAlpha=a),e.strokeText(r,n,o),d&&(e.globalAlpha=u)}},{key:"drawTextDecorations",value:function(e,t,r,n,o,i,a,l,s,c){var u=t.textDecorationLine,d=t.textDecorationColor,h=t.textDecorationStyle,f=t.textDecorationThickness,p=void 0===f?1:f,v=t.textAlign,y=void 0===v?"start":v,m=t.lineWidth,g=void 0===m?1:m,b=t.metrics;if(u&&"none"!==u){var w=b.lineMetrics,S=u.split(" ");switch(e.lineWidth=p,d&&(e.strokeStyle="rgba(".concat(d.r,", ").concat(d.g,", ").concat(d.b,", ").concat(d.alpha,")")),h){case"dashed":e.setLineDash([5,5]);break;case"dotted":e.setLineDash([2,2]);break;default:e.setLineDash([])}var x=a,O=t.textBaseline,C=void 0===O?"alphabetic":O;"middle"===C?x+=-b.height/2-o/2:"bottom"===C||"alphabetic"===C||"ideographic"===C?x+=-b.height:"top"!==C&&"hanging"!==C||(x+=-o);for(var A=0;n.length>A;A++){x+=o;var k=w[A];if(k){var T=g/2,M=i,R=i+k.width;"center"===y||"middle"===y?(M=i-k.width/2,R=i+k.width/2):"right"!==y&&"end"!==y||(M=i-k.width,R=i),M+=T,R+=T;var P,D=H(S);try{for(D.s();!(P=D.n()).done;){var B=x;switch(P.value){case"underline":B+=2;break;case"overline":B-=o-2;break;case"line-through":B-=o/2;break;default:continue}"wavy"===h?this.drawWavyLine(e,M,R,B):(e.beginPath(),e.moveTo(M,B),e.lineTo(R,B),e.stroke())}}catch(e){D.e(e)}finally{D.f()}}}e.setLineDash([])}}},{key:"drawWavyLine",value:function(e,t,r,n){var o=10,i=Math.floor((r-t)/o);e.beginPath(),e.moveTo(t,n);for(var a=0;i>a;a++){e.quadraticCurveTo(t+a*o+2.5,n+2,t+a*o+5,n),e.quadraticCurveTo(t+a*o+7.5,n-2,t+(a+1)*o,n)}e.stroke()}},{key:"drawToContext",value:function(e,t,r,n,o){this.render(e,t.parsedStyle,t,t.ownerDocument.defaultView.context,n,o)}}])}(_),J=function(e){function r(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return s(this,r),(e=p(this,r)).name="canvas-renderer",e.options=t,e}return y(r,e),u(r,[{key:"init",value:function(){var e,r=l({dirtyObjectNumThreshold:500,dirtyObjectRatioThreshold:.8},this.options),n=this.context.imagePool,o=new _(n),a=(i(i(i(i(i(i(i(i(i(i(e={},t.Shape.CIRCLE,o),t.Shape.ELLIPSE,o),t.Shape.RECT,o),t.Shape.IMAGE,new U(n)),t.Shape.TEXT,new Q(n)),t.Shape.LINE,o),t.Shape.POLYLINE,o),t.Shape.POLYGON,o),t.Shape.PATH,o),t.Shape.GROUP,void 0),i(i(i(e,t.Shape.HTML,void 0),t.Shape.MESH,void 0),t.Shape.FRAGMENT,void 0));this.context.defaultStyleRendererFactory=a,this.context.styleRendererFactory=a,this.addRenderingPlugin(new E(r))}},{key:"destroy",value:function(){this.removeAllRenderingPlugins(),delete this.context.defaultStyleRendererFactory,delete this.context.styleRendererFactory}}])}(t.AbstractRendererPlugin);e.CircleRenderer=_,e.DefaultRenderer=_,e.EllipseRenderer=_,e.ImageRenderer=U,e.LineRenderer=_,e.PathRenderer=_,e.Plugin=J,e.PolygonRenderer=_,e.PolylineRenderer=_,e.RectRenderer=_,e.TextRenderer=Q}); | ||
| //# sourceMappingURL=index.umd.min.js.map |
+4
-4
| { | ||
| "name": "@antv/g-plugin-canvas-renderer", | ||
| "version": "2.3.3", | ||
| "version": "2.4.0", | ||
| "description": "A G plugin of renderer implementation with Canvas2D API", | ||
@@ -40,6 +40,6 @@ "keywords": [ | ||
| "tslib": "^2.5.3", | ||
| "@antv/g-lite": "2.3.2", | ||
| "@antv/g-math": "3.0.1", | ||
| "@antv/g-plugin-canvas-path-generator": "2.1.22", | ||
| "@antv/g-plugin-image-loader": "2.1.26" | ||
| "@antv/g-plugin-canvas-path-generator": "2.1.23", | ||
| "@antv/g-plugin-image-loader": "2.2.0", | ||
| "@antv/g-lite": "2.4.0" | ||
| }, | ||
@@ -46,0 +46,0 @@ "publishConfig": { |
@@ -9,4 +9,12 @@ import { type CanvasContext, type DisplayObject, type GlobalRuntime, type ParsedTextStyleProps } from '@antv/g-lite'; | ||
| private strokeText; | ||
| /** | ||
| * Draw text decoration lines (underline, overline, line-through) | ||
| */ | ||
| private drawTextDecorations; | ||
| /** | ||
| * Draw a wavy line as an approximation of the wavy text decoration style | ||
| */ | ||
| private drawWavyLine; | ||
| drawToContext(context: CanvasRenderingContext2D, object: DisplayObject, renderState: RenderState, plugin: CanvasRendererPlugin, runtime: GlobalRuntime): void; | ||
| } | ||
| //# sourceMappingURL=Text.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/shapes/styles/Text.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAI1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EAIhB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,YAAa,SAAQ,eAAe;IAC/C,MAAM,CACJ,OAAO,EAAE,wBAAwB,EACjC,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,aAAa;IAgIxB,OAAO,CAAC,iBAAiB;IA2GzB,OAAO,CAAC,QAAQ;IAsChB,OAAO,CAAC,UAAU;IAqClB,aAAa,CACX,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,aAAa;CAWzB"} | ||
| {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/shapes/styles/Text.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAI1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EAIhB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,YAAa,SAAQ,eAAe;IAC/C,MAAM,CACJ,OAAO,EAAE,wBAAwB,EACjC,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,aAAa;IAiJxB,OAAO,CAAC,iBAAiB;IA2GzB,OAAO,CAAC,QAAQ;IAsChB,OAAO,CAAC,UAAU;IAmClB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+H3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAgCpB,aAAa,CACX,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,oBAAoB,EAC5B,OAAO,EAAE,aAAa;CAWzB"} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
716421
7.44%3520
9.38%0
-100%1
Infinity%+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
Updated