cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
128 lines (127 loc) • 3.83 kB
JavaScript
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 };