- Модуль: ui
- Путь к файлу: ~/bitrix/modules/ui/lib/barcode/barcodegenerator.php
- Класс: BitrixUIBarcodeBarcodeGenerator
- Вызов: BarcodeGenerator::dmtx_encode_data
private function dmtx_encode_data($data, $rect, $fnc1) {
/* Convert to data codewords. */
$edata = ($fnc1 ? array(232) : array());
$length = strlen($data);
$offset = 0;
while ($offset < $length) {
$ch1 = ord(substr($data, $offset, 1));
$offset++;
if ($ch1 >= 0x30 && $ch1 <= 0x39) {
$ch2 = ord(substr($data, $offset, 1));
if ($ch2 >= 0x30 && $ch2 <= 0x39) {
$offset++;
$edata[] = (($ch1 - 0x30) * 10) + ($ch2 - 0x30) + 130;
} else {
$edata[] = $ch1 + 1;
}
} else if ($ch1 < 0x80) {
$edata[] = $ch1 + 1;
} else {
$edata[] = 235;
$edata[] = ($ch1 - 0x80) + 1;
}
}
/* Add padding. */
$length = count($edata);
$ec_params = $this->dmtx_detect_version($length, $rect);
if ($length > $ec_params[0]) {
$length = $ec_params[0];
$edata = array_slice($edata, 0, $length);
if ($edata[$length - 1] == 235) {
$edata[$length - 1] = 129;
}
} else if ($length < $ec_params[0]) {
$length++;
$edata[] = 129;
while ($length < $ec_params[0]) {
$length++;
$r = (($length * 149) % 253) + 1;
$edata[] = ($r + 129) % 254;
}
}
/* Return. */
return array($edata, $ec_params);
}