expo-barcode-generator
Version:
A React Native barcode generator compatible with Expo
27 lines (21 loc) • 899 B
JavaScript
import { merge } from './merge';
import { messureText } from './messureText';
import { getBarcodePadding } from './getBarcodePadding';
import { getEncodingHeight } from './getEncodingHeight';
export function calculateEncodingAttributes(encodings, barcodeOptions, context) {
for (let i = 0; i < encodings.length; i++) {
const encoding = encodings[i];
const options = merge(barcodeOptions, encoding.options);
// Calculate the width of the encoding
let textWidth;
if (options.displayValue) {
textWidth = messureText(encoding.text, options, context);
} else {
textWidth = 0;
}
const 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);
}
}