UNPKG

myprint-design

Version:

操作简单,组件丰富的一站式打印解决方案打印设计器

71 lines (68 loc) 1.89 kB
import MathCalc from './numberUtil.mjs'; import { getCurrentPanelUnit } from './elementUtil.mjs'; let displayRatio = 3; const unitConvert = { px: { mm: { ratio: displayRatio, compute: "div" }, cm: { ratio: displayRatio * 10, compute: "div" } }, mm: { px: { ratio: displayRatio, compute: "mul" }, cm: { ratio: 10, compute: "div" } } }; function initDisplayRatio() { let mmDiv = document.createElement("div"); let body = document.querySelector("body"); mmDiv.id = "mm"; mmDiv.style.width = "1mm"; mmDiv.className = "scrollbar-measure"; body.appendChild(mmDiv); let mmDivRect = mmDiv.getBoundingClientRect(); displayRatio = MathCalc.ceil(mmDivRect.width); body.removeChild(mmDiv); unitConvert.px = { mm: { ratio: displayRatio, compute: "div" }, cm: { ratio: displayRatio * 10, compute: "div" } }; unitConvert.mm = { px: { ratio: displayRatio, compute: "mul" }, cm: { ratio: 10, compute: "div" } }; } function px2unit(val, panel) { return unit2unit("px", getCurrentPanelUnit(panel), val); } function unit2px(val, panel) { if (isNaN(val)) { return 0; } return unit2unit(getCurrentPanelUnit(panel), "px", val); } function unit2unit(oldUnit, newUnit, val) { if (val == null) { return 0; } if (isNaN(val)) { return 0; } if (oldUnit === newUnit) { return val; } let convert = unitConvert[oldUnit]?.[newUnit]; if (convert != null) { if (convert.compute === "div") { return MathCalc.div(val, convert.ratio); } else { return MathCalc.mul(val, convert.ratio); } } convert = unitConvert[newUnit]?.[oldUnit]; if (convert.compute === "div") { return MathCalc.mul(val, convert.ratio); } else { return MathCalc.div(val, convert.ratio); } } export { displayRatio, initDisplayRatio, px2unit, unit2px, unit2unit }; //# sourceMappingURL=devicePixelRatio.mjs.map