diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Barcode/Object/Code25.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Barcode/Object/Code25.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,143 @@ + '00110', + '1' => '10001', + '2' => '01001', + '3' => '11000', + '4' => '00101', + '5' => '10100', + '6' => '01100', + '7' => '00011', + '8' => '10010', + '9' => '01010', + ); + + /** + * Width of the barcode (in pixels) + * @return integer + */ + protected function _calculateBarcodeWidth() + { + $quietZone = $this->getQuietZone(); + $startCharacter = (2 * $this->_barThickWidth + 4 * $this->_barThinWidth) * $this->_factor; + $characterLength = (3 * $this->_barThinWidth + 2 * $this->_barThickWidth + 5 * $this->_barThinWidth) + * $this->_factor; + $encodedData = strlen($this->getText()) * $characterLength; + $stopCharacter = (2 * $this->_barThickWidth + 4 * $this->_barThinWidth) * $this->_factor; + return $quietZone + $startCharacter + $encodedData + $stopCharacter + $quietZone; + } + + /** + * Partial check of interleaved 2 of 5 barcode + * @return void + */ + protected function _checkParams() + { + $this->_checkRatio(); + } + + /** + * Prepare array to draw barcode + * @return array + */ + protected function _prepareBarcode() + { + $barcodeTable = array(); + + // Start character (30301) + $barcodeTable[] = array(1 , $this->_barThickWidth , 0 , 1); + $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1); + $barcodeTable[] = array(1 , $this->_barThickWidth , 0 , 1); + $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1); + $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1); + $barcodeTable[] = array(0 , 1); + + $text = str_split($this->getText()); + foreach ($text as $char) { + $barcodeChar = str_split($this->_codingMap[$char]); + foreach ($barcodeChar as $c) { + /* visible, width, top, length */ + $width = $c ? $this->_barThickWidth : $this->_barThinWidth; + $barcodeTable[] = array(1 , $width , 0 , 1); + $barcodeTable[] = array(0 , 1); + } + } + + // Stop character (30103) + $barcodeTable[] = array(1 , $this->_barThickWidth , 0 , 1); + $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->_barThickWidth , 0 , 1); + return $barcodeTable; + } + + /** + * Get barcode checksum + * + * @param string $text + * @return int + */ + public function getChecksum($text) + { + $this->_checkText($text); + $factor = 3; + $checksum = 0; + + for ($i = strlen($text); $i > 0; $i --) { + $checksum += intval($text{$i - 1}) * $factor; + $factor = 4 - $factor; + } + + $checksum = (10 - ($checksum % 10)) % 10; + + return $checksum; + } +}