...Человеческий поиск в разработке...
- Модуль: ui
- Путь к файлу: ~/bitrix/modules/ui/lib/barcode/barcodegenerator.php
- Класс: BitrixUIBarcodeBarcodeGenerator
- Вызов: BarcodeGenerator::qr_encode_data
private function qr_encode_data($data, $ecl) { $mode = $this->qr_detect_mode($data); $version = $this->qr_detect_version($data, $mode, $ecl); $version_group = (($version < 10) ? 0 : (($version < 27) ? 1 : 2)); $ec_params = $this->qr_ec_params[($version - 1) * 4 + $ecl]; /* Don't cut off mid-character if exceeding capacity. */ $max_chars = $this->qr_capacity[$version - 1][$ecl][$mode]; if ($mode == 3) $max_chars <<= 1; $data = substr($data, 0, $max_chars); /* Convert from character level to bit level. */ switch ($mode) { case 0: $code = $this->qr_encode_numeric($data, $version_group); break; case 1: $code = $this->qr_encode_alphanumeric($data, $version_group); break; case 2: $code = $this->qr_encode_binary($data, $version_group); break; case 3: $code = $this->qr_encode_kanji($data, $version_group); break; } for ($i = 0; $i < 4; $i++) $code[] = 0; while (count($code) % 8) $code[] = 0; /* Convert from bit level to byte level. */ $data = array(); for ($i = 0, $n = count($code); $i < $n; $i += 8) { $byte = 0; if ($code[$i + 0]) $byte |= 0x80; if ($code[$i + 1]) $byte |= 0x40; if ($code[$i + 2]) $byte |= 0x20; if ($code[$i + 3]) $byte |= 0x10; if ($code[$i + 4]) $byte |= 0x08; if ($code[$i + 5]) $byte |= 0x04; if ($code[$i + 6]) $byte |= 0x02; if ($code[$i + 7]) $byte |= 0x01; $data[] = $byte; } for ( $i = count($data), $a = 1, $n = $ec_params[0]; $i < $n; $i++, $a ^= 1 ) { $data[] = $a ? 236 : 17; } /* Return. */ return array($mode, $version, $ec_params, $data); }