123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.getTotalWidthOfEncodings = exports.calculateEncodingAttributes = exports.getBarcodePadding = exports.getEncodingHeight = exports.getMaximumHeightOfEncodings = undefined;
- var _merge = require("../help/merge.js");
- var _merge2 = _interopRequireDefault(_merge);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function getEncodingHeight(encoding, options) {
- return options.height + (options.displayValue && encoding.text.length > 0 ? options.fontSize + options.textMargin : 0) + options.marginTop + options.marginBottom;
- }
- function getBarcodePadding(textWidth, barcodeWidth, options) {
- if (options.displayValue && barcodeWidth < textWidth) {
- if (options.textAlign == "center") {
- return Math.floor((textWidth - barcodeWidth) / 2);
- } else if (options.textAlign == "left") {
- return 0;
- } else if (options.textAlign == "right") {
- return Math.floor(textWidth - barcodeWidth);
- }
- }
- return 0;
- }
- function calculateEncodingAttributes(encodings, barcodeOptions, context) {
- for (var i = 0; i < encodings.length; i++) {
- var encoding = encodings[i];
- var options = (0, _merge2.default)(barcodeOptions, encoding.options);
- // Calculate the width of the encoding
- var textWidth;
- if (options.displayValue) {
- textWidth = messureText(encoding.text, options, context);
- } else {
- textWidth = 0;
- }
- var barcodeWidth = encoding.data.length * options.width;
- encoding.width = Math.ceil(Math.max(textWidth, barcodeWidth));
- encoding.height = getEncodingHeight(encoding, options);
- encoding.barcodePadding = getBarcodePadding(textWidth, barcodeWidth, options);
- }
- }
- function getTotalWidthOfEncodings(encodings) {
- var totalWidth = 0;
- for (var i = 0; i < encodings.length; i++) {
- totalWidth += encodings[i].width;
- }
- return totalWidth;
- }
- function getMaximumHeightOfEncodings(encodings) {
- var maxHeight = 0;
- for (var i = 0; i < encodings.length; i++) {
- if (encodings[i].height > maxHeight) {
- maxHeight = encodings[i].height;
- }
- }
- return maxHeight;
- }
- function messureText(string, options, context) {
- var ctx;
- if (context) {
- ctx = context;
- } else if (typeof document !== "undefined") {
- ctx = document.createElement("canvas").getContext("2d");
- } else {
- // If the text cannot be messured we will return 0.
- // This will make some barcode with big text render incorrectly
- return 0;
- }
- ctx.font = options.fontOptions + " " + options.fontSize + "px " + options.font;
- // Calculate the width of the encoding
- var measureTextResult = ctx.measureText(string);
- if (!measureTextResult) {
- // Some implementations don't implement measureText and return undefined.
- // If the text cannot be measured we will return 0.
- // This will make some barcode with big text render incorrectly
- return 0;
- }
- var size = measureTextResult.width;
- return size;
- }
- exports.getMaximumHeightOfEncodings = getMaximumHeightOfEncodings;
- exports.getEncodingHeight = getEncodingHeight;
- exports.getBarcodePadding = getBarcodePadding;
- exports.calculateEncodingAttributes = calculateEncodingAttributes;
- exports.getTotalWidthOfEncodings = getTotalWidthOfEncodings;
|