UNPKG

fabric

Version:

Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.

2 lines 1.81 kB
import{iMatrix as e}from"../../constants.min.mjs";import{cos as t}from"./cos.min.mjs";import{sin as n}from"./sin.min.mjs";import{Point as r}from"../../Point.min.mjs";import{degreesToRadians as i,radiansToDegrees as a}from"./radiansDegreesConversion.min.mjs";const o=t=>t.every((t,n)=>t===e[n]),s=(e,t,n)=>new r(e).transform(t,n),c=e=>{let t=1/(e[0]*e[3]-e[1]*e[2]),n=[t*e[3],-t*e[1],-t*e[2],t*e[0],0,0],{x:i,y:a}=new r(e[4],e[5]).transform(n,!0);return n[4]=-i,n[5]=-a,n},l=(e,t,n)=>[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],n?0:e[0]*t[4]+e[2]*t[5]+e[4],n?0:e[1]*t[4]+e[3]*t[5]+e[5]],u=(t,n)=>t.reduceRight((e,t)=>t&&e?l(t,e,n):t||e,void 0)||e.concat(),d=([e,t])=>Math.atan2(t,e),f=e=>{let t=d(e),n=e[0]**2+e[1]**2,r=Math.sqrt(n),i=(e[0]*e[3]-e[2]*e[1])/r,o=Math.atan2(e[0]*e[2]+e[1]*e[3],n);return{angle:a(t),scaleX:r,scaleY:i,skewX:a(o),skewY:0,translateX:e[4]||0,translateY:e[5]||0}},p=(e,t=0)=>[1,0,0,1,e,t];function m({angle:e=0}={},{x:r=0,y:a=0}={}){let o=i(e),s=t(o),c=n(o);return[s,c,-c,s,r?r-(s*r-c*a):0,a?a-(c*r+s*a):0]}const h=(e,t=e)=>[e,0,0,t,0,0],g=e=>Math.tan(i(e)),_=e=>[1,0,g(e),1,0,0],v=e=>[1,g(e),0,1,0,0],y=({scaleX:e=1,scaleY:t=1,flipX:n=!1,flipY:r=!1,skewX:i=0,skewY:a=0})=>{let o=h(n?-e:e,r?-t:t);return i&&(o=l(o,_(i),!0)),a&&(o=l(o,v(a),!0)),o},b=e=>{let{translateX:t=0,translateY:n=0,angle:r=0}=e,i=p(t,n);r&&(i=l(i,m({angle:r})));let a=y(e);return o(a)||(i=l(i,a)),i};export{y as calcDimensionsMatrix,d as calcPlaneRotation,b as composeMatrix,m as createRotateMatrix,h as createScaleMatrix,_ as createSkewXMatrix,v as createSkewYMatrix,p as createTranslateMatrix,c as invertTransform,o as isIdentityMatrix,l as multiplyTransformMatrices,u as multiplyTransformMatrixArray,f as qrDecompose,s as transformPoint}; //# sourceMappingURL=matrix.min.mjs.map