• Модуль: 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);
}