diff -r bd595ad770fc -r 1c2f13fd785c web/enmi/Zend/Barcode/Object/Postnet.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/enmi/Zend/Barcode/Object/Postnet.php Thu Jan 20 19:30:54 2011 +0100 @@ -0,0 +1,136 @@ + "11000", + 1 => "00011", + 2 => "00101", + 3 => "00110", + 4 => "01001", + 5 => "01010", + 6 => "01100", + 7 => "10001", + 8 => "10010", + 9 => "10100" + ); + + /** + * Default options for Postnet barcode + * @return void + */ + protected function _getDefaultOptions() + { + $this->_barThinWidth = 2; + $this->_barHeight = 20; + $this->_drawText = false; + $this->_stretchText = true; + $this->_mandatoryChecksum = true; + } + + /** + * Width of the barcode (in pixels) + * @return integer + */ + protected function _calculateBarcodeWidth() + { + $quietZone = $this->getQuietZone(); + $startCharacter = (2 * $this->_barThinWidth) * $this->_factor; + $stopCharacter = (1 * $this->_barThinWidth) * $this->_factor; + $encodedData = (10 * $this->_barThinWidth) * $this->_factor * strlen($this->getText()); + return $quietZone + $startCharacter + $encodedData + $stopCharacter + $quietZone; + } + + /** + * Partial check of interleaved Postnet barcode + * @return void + */ + protected function _checkParams() + {} + + /** + * Prepare array to draw barcode + * @return array + */ + protected function _prepareBarcode() + { + $barcodeTable = array(); + + // Start character (1) + $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1); + $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1); + + // Text to encode + $textTable = str_split($this->getText()); + foreach ($textTable as $char) { + $bars = str_split($this->_codingMap[$char]); + foreach ($bars as $b) { + $barcodeTable[] = array(1 , $this->_barThinWidth , 0.5 - $b * 0.5 , 1); + $barcodeTable[] = array(0 , $this->_barThinWidth , 0 , 1); + } + } + + // Stop character (1) + $barcodeTable[] = array(1 , $this->_barThinWidth , 0 , 1); + return $barcodeTable; + } + + /** + * Get barcode checksum + * + * @param string $text + * @return int + */ + public function getChecksum($text) + { + $this->_checkText($text); + $sum = array_sum(str_split($text)); + $checksum = (10 - ($sum % 10)) % 10; + return $checksum; + } +}