array('B','B','A','A','A'), 1 => array('B','A','B','A','A'), 2 => array('B','A','A','B','A'), 3 => array('B','A','A','A','B'), 4 => array('A','B','B','A','A'), 5 => array('A','A','B','B','A'), 6 => array('A','A','A','B','B'), 7 => array('A','B','A','B','A'), 8 => array('A','B','A','A','B'), 9 => array('A','A','B','A','B') ); /** * Default options for Ean5 barcode * @return void */ protected function _getDefaultOptions() { $this->_barcodeLength = 5; } /** * Width of the barcode (in pixels) * @return integer */ protected function _calculateBarcodeWidth() { $quietZone = $this->getQuietZone(); $startCharacter = (5 * $this->_barThinWidth) * $this->_factor; $middleCharacter = (2 * $this->_barThinWidth) * $this->_factor; $encodedData = (7 * $this->_barThinWidth) * $this->_factor; return $quietZone + $startCharacter + ($this->_barcodeLength - 1) * $middleCharacter + $this->_barcodeLength * $encodedData + $quietZone; } /** * Prepare array to draw barcode * @return array */ protected function _prepareBarcode() { $barcodeTable = array(); // Start character (01011) $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1); $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1); $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1); $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1); $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1); $firstCharacter = true; $textTable = str_split($this->getText()); // Characters for ($i = 0; $i < $this->_barcodeLength; $i++) { if ($firstCharacter) { $firstCharacter = false; } else { // Intermediate character (01) $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1); $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1); } $bars = str_split($this->_codingMap[$this->_getParity($i)][$textTable[$i]]); foreach ($bars as $b) { $barcodeTable[] = array($b , $this->_barThinWidth , 0 , 1); } } return $barcodeTable; } /** * Get barcode checksum * * @param string $text * @return int */ public function getChecksum($text) { $this->_checkText($text); $checksum = 0; for ($i = 0 ; $i < $this->_barcodeLength; $i ++) { $checksum += intval($text{$i}) * ($i % 2 ? 9 : 3); } return ($checksum % 10); } protected function _getParity($i) { $checksum = $this->getChecksum($this->getText()); return $this->_parities[$checksum][$i]; } /** * Retrieve text to encode * @return string */ public function getText() { return $this->_addLeadingZeros($this->_text); } }