BarcodeGenerator::upc_a_encode

  1. Bitrix24 API (v. 23.675.0)
  2. ui
  3. BarcodeGenerator
  4. upc_a_encode
  • Модуль: ui
  • Путь к файлу: ~/bitrix/modules/ui/lib/barcode/barcodegenerator.php
  • Класс: BitrixUIBarcodeBarcodeGenerator
  • Вызов: BarcodeGenerator::upc_a_encode
private function upc_a_encode($data) {
	$data = $this->upc_a_normalize($data);
	$blocks = array();
	/* Quiet zone, start, first digit. */
	$digit = substr($data, 0, 1);
	$blocks[] = array(
		'm' => array(array(0, 9, 0)),
		'l' => array($digit, 0, 1/3)
	);
	$blocks[] = array(
		'm' => array(
			array(1, 1, 1),
			array(0, 1, 1),
			array(1, 1, 1),
		)
	);
	$blocks[] = array(
		'm' => array(
			array(0, $this->upc_alphabet[$digit][0], 1),
			array(1, $this->upc_alphabet[$digit][1], 1),
			array(0, $this->upc_alphabet[$digit][2], 1),
			array(1, $this->upc_alphabet[$digit][3], 1),
		)
	);
	/* Left zone. */
	for ($i = 1; $i < 6; $i++) {
		$digit = substr($data, $i, 1);
		$blocks[] = array(
			'm' => array(
				array(0, $this->upc_alphabet[$digit][0], 1),
				array(1, $this->upc_alphabet[$digit][1], 1),
				array(0, $this->upc_alphabet[$digit][2], 1),
				array(1, $this->upc_alphabet[$digit][3], 1),
			),
			'l' => array($digit, 0.5, (6 - $i) / 6)
		);
	}
	/* Middle. */
	$blocks[] = array(
		'm' => array(
			array(0, 1, 1),
			array(1, 1, 1),
			array(0, 1, 1),
			array(1, 1, 1),
			array(0, 1, 1),
		)
	);
	/* Right zone. */
	for ($i = 6; $i < 11; $i++) {
		$digit = substr($data, $i, 1);
		$blocks[] = array(
			'm' => array(
				array(1, $this->upc_alphabet[$digit][0], 1),
				array(0, $this->upc_alphabet[$digit][1], 1),
				array(1, $this->upc_alphabet[$digit][2], 1),
				array(0, $this->upc_alphabet[$digit][3], 1),
			),
			'l' => array($digit, 0.5, (11 - $i) / 6)
		);
	}
	/* Last digit, end, quiet zone. */
	$digit = substr($data, 11, 1);
	$blocks[] = array(
		'm' => array(
			array(1, $this->upc_alphabet[$digit][0], 1),
			array(0, $this->upc_alphabet[$digit][1], 1),
			array(1, $this->upc_alphabet[$digit][2], 1),
			array(0, $this->upc_alphabet[$digit][3], 1),
		)
	);
	$blocks[] = array(
		'm' => array(
			array(1, 1, 1),
			array(0, 1, 1),
			array(1, 1, 1),
		)
	);
	$blocks[] = array(
		'm' => array(array(0, 9, 0)),
		'l' => array($digit, 0, 2/3)
	);
	/* Return code. */
	return array('g' => 'l', 'b' => $blocks);
}

Добавить комментарий