diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Barcode/Object/Code25interleaved.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Barcode/Object/Code25interleaved.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,179 @@ +_barcodeLength = 'even'; + } + + /** + * Activate/deactivate drawing of bearer bars + * @param boolean $value + * @return Zend_Barcode_Object_Int25 + */ + public function setWithBearerBars($value) + { + $this->_withBearerBars = (bool) $value; + return $this; + } + + /** + * Retrieve if bearer bars are enabled + * @return boolean + */ + public function getWithBearerBars() + { + return $this->_withBearerBars; + } + + /** + * Width of the barcode (in pixels) + * @return integer + */ + protected function _calculateBarcodeWidth() + { + $quietZone = $this->getQuietZone(); + $startCharacter = (4 * $this->_barThinWidth) * $this->_factor; + $characterLength = (3 * $this->_barThinWidth + 2 * $this->_barThickWidth) * $this->_factor; + $encodedData = strlen($this->getText()) * $characterLength; + $stopCharacter = ($this->_barThickWidth + 2 * $this->_barThinWidth) * $this->_factor; + return $quietZone + $startCharacter + $encodedData + $stopCharacter + $quietZone; + } + + /** + * Prepare array to draw barcode + * @return array + */ + protected function _prepareBarcode() + { + if ($this->_withBearerBars) { + $this->_withBorder = false; + } + + // Start character (0000) + $barcodeTable[] = array(1, $this->_barThinWidth, 0, 1); + $barcodeTable[] = array(0, $this->_barThinWidth, 0, 1); + $barcodeTable[] = array(1, $this->_barThinWidth, 0, 1); + $barcodeTable[] = array(0, $this->_barThinWidth, 0, 1); + + // Encoded $text + $text = $this->getText(); + for ($i = 0; $i < strlen($text); $i += 2) { // Draw 2 chars at a time + $char1 = substr($text, $i, 1); + $char2 = substr($text, $i + 1, 1); + + // Interleave + for ($ibar = 0; $ibar < 5; $ibar ++) { + // Draws char1 bar (fore color) + $barWidth = (substr($this->_codingMap[$char1], $ibar, 1)) + ? $this->_barThickWidth + : $this->_barThinWidth; + + $barcodeTable[] = array(1, $barWidth, 0, 1); + + // Left space corresponding to char2 (background color) + $barWidth = (substr($this->_codingMap[$char2], $ibar, 1)) + ? $this->_barThickWidth + : $this->_barThinWidth; + $barcodeTable[] = array(0, $barWidth, 0 , 1); + } + } + + // Stop character (100) + $barcodeTable[] = array(1 , $this->_barThickWidth, 0, 1); + $barcodeTable[] = array(0 , $this->_barThinWidth, 0, 1); + $barcodeTable[] = array(1 , $this->_barThinWidth, 0, 1); + return $barcodeTable; + } + + /** + * Drawing of bearer bars (if enabled) + * + * @return void + */ + protected function _postDrawBarcode() + { + if (!$this->_withBearerBars) { + return; + } + + $width = $this->_barThickWidth * $this->_factor; + $point1 = $this->_rotate(-1, -1); + $point2 = $this->_rotate($this->_calculateWidth() - 1, -1); + $point3 = $this->_rotate($this->_calculateWidth() - 1, $width - 1); + $point4 = $this->_rotate(-1, $width - 1); + $this->_addPolygon(array( + $point1, + $point2, + $point3, + $point4, + )); + $point1 = $this->_rotate( + 0, + 0 + $this->_barHeight * $this->_factor - 1 + ); + $point2 = $this->_rotate( + $this->_calculateWidth() - 1, + 0 + $this->_barHeight * $this->_factor - 1 + ); + $point3 = $this->_rotate( + $this->_calculateWidth() - 1, + 0 + $this->_barHeight * $this->_factor - $width + ); + $point4 = $this->_rotate( + 0, + 0 + $this->_barHeight * $this->_factor - $width + ); + $this->_addPolygon(array( + $point1, + $point2, + $point3, + $point4, + )); + } +}