UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

128 lines (127 loc) 3.83 kB
import { isFunction, RADIAN_TO_DEGREE, retrieve2 } from "../core/util.mjs"; import { parse } from "../tool/color.mjs"; import env from "../core/env.mjs"; var mathRound = Math.round; function normalizeColor(color) { var opacity; if (!color || color === "transparent") { color = "none"; } else if (typeof color === "string" && color.indexOf("rgba") > -1) { var arr = parse(color); if (arr) { color = "rgb(" + arr[0] + "," + arr[1] + "," + arr[2] + ")"; opacity = arr[3]; } } return { color, opacity: opacity == null ? 1 : opacity }; } var EPSILON = 1e-4; function isAroundZero(transform) { return transform < EPSILON && transform > -EPSILON; } function round3(transform) { return mathRound(transform * 1e3) / 1e3; } function round4(transform) { return mathRound(transform * 1e4) / 1e4; } function getMatrixStr(m) { return "matrix(" + round3(m[0]) + "," + round3(m[1]) + "," + round3(m[2]) + "," + round3(m[3]) + "," + round4(m[4]) + "," + round4(m[5]) + ")"; } var TEXT_ALIGN_TO_ANCHOR = { left: "start", right: "end", center: "middle", middle: "middle" }; function adjustTextY(y, lineHeight, textBaseline) { if (textBaseline === "top") { y += lineHeight / 2; } else if (textBaseline === "bottom") { y -= lineHeight / 2; } return y; } function hasShadow(style) { return style && (style.shadowBlur || style.shadowOffsetX || style.shadowOffsetY); } function getShadowKey(displayable) { var style = displayable.style; var globalScale = displayable.getGlobalScale(); return [ style.shadowColor, (style.shadowBlur || 0).toFixed(2), (style.shadowOffsetX || 0).toFixed(2), (style.shadowOffsetY || 0).toFixed(2), globalScale[0], globalScale[1] ].join(","); } function isImagePattern(val) { return val && !!val.image; } function isSVGPattern(val) { return val && !!val.svgElement; } function isPattern(val) { return isImagePattern(val) || isSVGPattern(val); } function isLinearGradient(val) { return val.type === "linear"; } function isRadialGradient(val) { return val.type === "radial"; } function isGradient(val) { return val && (val.type === "linear" || val.type === "radial"); } function getIdURL(id) { return "url(#" + id + ")"; } function getPathPrecision(el) { var scale = el.getGlobalScale(); var size = Math.max(scale[0], scale[1]); return Math.max(Math.ceil(Math.log(size) / Math.log(10)), 1); } function getSRTTransformString(transform) { var x = transform.x || 0; var y = transform.y || 0; var rotation = (transform.rotation || 0) * RADIAN_TO_DEGREE; var scaleX = retrieve2(transform.scaleX, 1); var scaleY = retrieve2(transform.scaleY, 1); var skewX = transform.skewX || 0; var skewY = transform.skewY || 0; var res = []; if (x || y) { res.push("translate(" + x + "px," + y + "px)"); } if (rotation) { res.push("rotate(" + rotation + ")"); } if (scaleX !== 1 || scaleY !== 1) { res.push("scale(" + scaleX + "," + scaleY + ")"); } if (skewX || skewY) { res.push("skew(" + mathRound(skewX * RADIAN_TO_DEGREE) + "deg, " + mathRound(skewY * RADIAN_TO_DEGREE) + "deg)"); } return res.join(" "); } var encodeBase64 = function() { if (env.hasGlobalWindow && isFunction(window.btoa)) { return function(str) { return window.btoa(unescape(encodeURIComponent(str))); }; } if (typeof Buffer !== "undefined") { return function(str) { return Buffer.from(str).toString("base64"); }; } return function(str) { return null; }; }(); export { TEXT_ALIGN_TO_ANCHOR, adjustTextY, encodeBase64, getIdURL, getMatrixStr, getPathPrecision, getSRTTransformString, getShadowKey, hasShadow, isAroundZero, isGradient, isImagePattern, isLinearGradient, isPattern, isRadialGradient, isSVGPattern, normalizeColor, round3, round4 };