2
0
Просмотр исходного кода

[ZF-8820]: Add a custom position for PDF

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20314 44c647ce-9c0f-0410-b52a-842ac1e357ba
mikaelkael 16 лет назад
Родитель
Сommit
e0becc1d4d

+ 2 - 2
library/Zend/Barcode/Renderer/RendererAbstract.php

@@ -386,7 +386,7 @@ abstract class Zend_Barcode_Renderer_RendererAbstract
     protected function _adjustPosition($supportHeight, $supportWidth)
     {
         $barcodeHeight = $this->_barcode->getHeight(true) * $this->_moduleSize;
-        if ($barcodeHeight != $supportHeight) {
+        if ($barcodeHeight != $supportHeight && $this->_topOffset == 0) {
             switch ($this->_verticalPosition) {
                 case 'middle':
                     $this->_topOffset = floor(
@@ -402,7 +402,7 @@ abstract class Zend_Barcode_Renderer_RendererAbstract
             }
         }
         $barcodeWidth = $this->_barcode->getWidth(true) * $this->_moduleSize;
-        if ($barcodeWidth != $supportWidth) {
+        if ($barcodeWidth != $supportWidth && $this->_leftOffset == 0) {
             switch ($this->_horizontalPosition) {
                 case 'center':
                     $this->_leftOffset = floor(

+ 26 - 0
tests/Zend/Barcode/Renderer/TestCommon.php

@@ -272,6 +272,19 @@ abstract class Zend_Barcode_Renderer_TestCommon extends PHPUnit_Framework_TestCa
         $this->assertEquals(289, $renderer->getLeftOffset());
     }
 
+    public function testLeftOffsetOverrideHorizontalPosition()
+    {
+        $renderer = $this->_getRendererWithWidth500AndHeight300();
+        $renderer->setModuleSize(1);
+        $barcode = new Zend_Barcode_Object_Code39(array('text' => '0123456789'));
+        $this->assertEquals(211, $barcode->getWidth());
+        $renderer->setBarcode($barcode);
+        $renderer->setLeftOffset(12);
+        $renderer->setHorizontalPosition('center');
+        $renderer->draw();
+        $this->assertEquals(12, $renderer->getLeftOffset());
+    }
+
     public function testVerticalPositionToTop()
     {
         $renderer = $this->_getRendererWithWidth500AndHeight300();
@@ -307,4 +320,17 @@ abstract class Zend_Barcode_Renderer_TestCommon extends PHPUnit_Framework_TestCa
         $renderer->draw();
         $this->assertEquals(238, $renderer->getTopOffset());
     }
+
+    public function testTopOffsetOverrideVerticalPosition()
+    {
+        $renderer = $this->_getRendererWithWidth500AndHeight300();
+        $renderer->setModuleSize(1);
+        $barcode = new Zend_Barcode_Object_Code39(array('text' => '0123456789'));
+        $this->assertEquals(62, $barcode->getHeight());
+        $renderer->setBarcode($barcode);
+        $renderer->setTopOffset(12);
+        $renderer->setVerticalPosition('middle');
+        $renderer->draw();
+        $this->assertEquals(12, $renderer->getTopOffset());
+    }
 }