Ejemplo n.º 1
0
 /**
  * @test
  */
 public function moveButNotResizeChildWithRightFloatOnResizing()
 {
     $width = 100;
     $height = 100;
     $this->node->setWidth($width);
     $this->node->setHeight($height);
     $boundary = $this->objectMother->getBoundaryStub(0, $height, $width, $height);
     $this->invokeMethod($this->node, 'setBoundary', array($boundary));
     $childWidth = 50;
     $childHeight = 100;
     $child = new Container(array('width' => $childWidth, 'height' => $childHeight, 'float' => 'right'));
     $childBoundary = $this->objectMother->getBoundaryStub($width - $childWidth, $childHeight, $childWidth, $childHeight);
     $this->invokeMethod($child, 'setBoundary', array($childBoundary));
     $this->node->add($child);
     $xResize = 20;
     $this->node->resize($xResize, 0);
     $expectedChildDiagonalXCoord = $width + $xResize;
     $this->assertEquals($expectedChildDiagonalXCoord, $child->getDiagonalPoint()->getX());
     $this->assertEquals($childWidth, $child->getWidth());
     $xResize = -40;
     $this->node->resize($xResize, 0);
     $expectedChildDiagonalXCoord = $expectedChildDiagonalXCoord + $xResize;
     $this->assertEquals($expectedChildDiagonalXCoord, $child->getDiagonalPoint()->getX());
     $this->assertEquals($childWidth, $child->getWidth());
 }
Ejemplo n.º 2
0
 /**
  * @test
  */
 public function dontIgnorePaddingBottom()
 {
     $page = new Page();
     $paddingBottom = 10;
     $leftFloatedContainerHeight = 20;
     $rightFloatedContainerHeight = 40;
     $containerHeight = $paddingBottom + $leftFloatedContainerHeight + $rightFloatedContainerHeight;
     $container = new Container();
     $container->makeAttributesSnapshot();
     $container->setPaddingBottom($paddingBottom);
     $container->setHeight($containerHeight);
     $container->setWidth($page->getWidth());
     $this->invokeMethod($container, 'setBoundary', array($this->objectMother->getBoundaryStub(0, $page->getFirstPoint()->getY(), $page->getWidth(), $containerHeight)));
     $leftFloatedContainer = new Container();
     $leftFloatedContainer->setFloat(Node::FLOAT_LEFT);
     $leftFloatedContainer->setHeight($leftFloatedContainerHeight);
     $leftFloatedContainer->setWidth(10);
     $this->invokeMethod($leftFloatedContainer, 'setBoundary', array($this->objectMother->getBoundaryStub(0, $page->getFirstPoint()->getY(), 10, $leftFloatedContainerHeight)));
     $rightFloatedContainer = new Container();
     $rightFloatedContainer->setFloat(Node::FLOAT_RIGHT);
     $rightFloatedContainer->setHeight($rightFloatedContainerHeight);
     $rightFloatedContainer->setWidth(10);
     $this->invokeMethod($rightFloatedContainer, 'setBoundary', array($this->objectMother->getBoundaryStub(0, $page->getFirstPoint()->getY() + $leftFloatedContainerHeight, 10, $rightFloatedContainerHeight)));
     $page->add($container->add($leftFloatedContainer)->add($rightFloatedContainer));
     $this->formatter->format($container, $this->document);
     $expectedHeight = $paddingBottom + $rightFloatedContainerHeight;
     $this->assertEquals($expectedHeight, $container->getHeight());
     $this->assertEquals($expectedHeight, $container->getFirstPoint()->getY() - $container->getDiagonalPoint()->getY());
 }
Ejemplo n.º 3
0
 private function createParagraph($x, $y, $width, $height)
 {
     $parent = new Container();
     $parent->setWidth($width);
     $paragraph = new Paragraph();
     $parent->add($paragraph);
     $boundary = $this->objectMother->getBoundaryStub($x, $y, $width, $height);
     $this->invokeMethod($paragraph, 'setBoundary', array($boundary));
     return $paragraph;
 }
 /**
  * @test
  * @dataProvider autoMarginConvertProvider
  */
 public function autoMarginConvert($nodeWidth, $parentWidth, $expectedMarginLeft, $expectedMarginRight)
 {
     $node = new Container(array('width' => $nodeWidth));
     $node->setWidth($nodeWidth);
     $node->setMargin(0, 'auto');
     $mock = $this->getMock('\\PHPPdf\\Core\\Node\\Page', array('getWidth', 'setWidth'));
     $mock->expects($this->atLeastOnce())->method('getWidth')->will($this->returnValue($parentWidth));
     if ($nodeWidth > $parentWidth) {
         $mock->expects($this->once())->method('setWidth')->with($nodeWidth);
     }
     $mock->add($node);
     $this->formatter->format($node, $this->document);
     $this->assertEquals($expectedMarginLeft, $node->getMarginLeft());
     $this->assertEquals($expectedMarginRight, $node->getMarginRight());
 }
 private function createContainers(array $heights, $parent = null)
 {
     $parent = $parent ? $parent : $this->column;
     $width = 100;
     $yStart = 0;
     $containers = array();
     foreach ($heights as $height) {
         $container = new Container();
         $container->setHeight($height);
         $container->setWidth($width);
         $parent->add($container);
         $this->injectBoundary($container, $yStart);
         $yStart += $height;
         $containers[] = $container;
     }
     return $containers;
 }
 /**
  * @test
  */
 public function nodeFormatter()
 {
     $composeNode = new Container();
     $composeNode->setWidth(140);
     $children = array();
     $children[] = $this->objectMother->getNodeStub(0, 500, 100, 200);
     $children[] = $this->objectMother->getNodeStub(0, 300, 200, 200);
     foreach ($children as $child) {
         $composeNode->add($child);
     }
     $this->formatter->format($composeNode, $this->createDocumentStub());
     $height = 0;
     foreach ($children as $child) {
         $height += $child->getHeight();
     }
     $this->assertEquals($height, $composeNode->getHeight());
     $this->assertEquals(200, $composeNode->getWidth());
 }
 /**
  * @test
  */
 public function nodeWithAutoMarginPositioning()
 {
     $node = new Container(array('width' => 100, 'height' => 100));
     $node->hadAutoMargins(true);
     $node->makeAttributesSnapshot();
     $node->setWidth(110);
     $child = new Container(array('width' => 50, 'height' => 50));
     $node->add($child);
     $page = new Page();
     $page->add($node);
     $node->getBoundary()->setNext($page->getFirstPoint());
     $child->getBoundary()->setNext($page->getFirstPoint());
     foreach (array($node, $child) as $g) {
         $this->formatter->format($g, $this->createDocumentStub());
     }
     $nodeBoundary = $node->getBoundary();
     $childBoundary = $child->getBoundary();
     $pageBoundary = $page->getBoundary();
     $this->assertEquals($pageBoundary[0]->translate(-5, 0), $nodeBoundary[0]);
     $this->assertEquals($pageBoundary[0]->translate(105, 0), $nodeBoundary[1]);
     $this->assertEquals($pageBoundary[0]->translate(105, 100), $nodeBoundary[2]);
     $this->assertEquals($pageBoundary[0]->translate(-5, 100), $nodeBoundary[3]);
 }
Ejemplo n.º 8
0
 public function setWatermark(Container $watermark)
 {
     $watermark->setParent($this);
     $watermark->setAttribute('vertical-align', self::VERTICAL_ALIGN_MIDDLE);
     $watermark->setHeight($this->getHeight());
     $watermark->setWidth($this->getWidth());
     $watermark->setBoundary(clone $this->getBoundary());
     $this->watermark = $watermark;
 }
 private function setDimension(ColumnableContainer $columnableContainer, Container $container)
 {
     $container->setWidth($columnableContainer->getWidth());
     $container->setHeight($columnableContainer->getHeight());
     $this->setPointsToBoundary($columnableContainer->getBoundary(), $container->getBoundary());
 }
Ejemplo n.º 10
0
 /**
  * _____________________________
  * |                            |
  * |              ______________|
  * |_____________|              | <- breaking here
  * |                            |
  * |____________________________|
  * 
  * @test
  */
 public function breaking()
 {
     $x = 0;
     $y = 500;
     $width = 500;
     $height = 500;
     $firstPoint = Point::getInstance($x, $y);
     $paragraphParent = new Container();
     $paragraphParent->setWidth($width);
     $paragraphParent->setHeight($height);
     $paragraph = new Paragraph();
     $paragraph->setParent($paragraphParent);
     $text1 = new Text();
     $text1->getBoundary()->setNext($firstPoint)->setNext($firstPoint->translate($width, 0))->setNext($firstPoint->translate($width, 200))->setNext($firstPoint->translate($width / 2, 200))->setNext($firstPoint->translate($width / 2, 250))->setNext($firstPoint->translate(0, 250))->close();
     $text2 = new Text();
     $text2->getBoundary()->setNext($firstPoint->translate($width / 2, 200))->setNext($firstPoint->translate($width, 200))->setNext($firstPoint->translate($width, 500))->setNext($firstPoint->translate(0, 500))->setNext($firstPoint->translate(0, 250))->setNext($firstPoint->translate($width / 2, 250))->close();
     $text1->setWidth(500);
     $text1->setHeight(250);
     $text2->setWidth(500);
     $text2->setHeight(300);
     $text1->setAttribute('line-height', 100);
     $text2->setAttribute('line-height', 100);
     for ($i = 0; $i < 2; $i++) {
         $line = new Line($paragraph, 0, $i * 100);
         $part = new LinePart('', 500, 0, $text1);
         $line->addPart($part);
         $paragraph->addLine($line);
     }
     $line = new Line($paragraph, 0, 200);
     $line->addPart(new LinePart('', $width / 2, 0, $text1));
     $line->addPart(new LinePart('', $width / 2, 250, $text2));
     $paragraph->addLine($line);
     for ($i = 0; $i < 2; $i++) {
         $line = new Line($paragraph, 0, ($i + 3) * 100);
         $part = new LinePart('', 500, 0, $text2);
         $line->addPart($part);
         $paragraph->addLine($line);
     }
     $paragraph->add($text1);
     $paragraph->add($text2);
     $paragraph->getBoundary()->setNext($firstPoint)->setNext($firstPoint->translate($width, 0))->setNext($firstPoint->translate($width, 500))->setNext($firstPoint->translate(0, 500))->close();
     $paragraph->setHeight(500);
     $paragraphProduct = $paragraph->breakAt(225);
     $this->assertEquals(200, $paragraph->getHeight());
     $this->assertEquals(200, $paragraph->getFirstPoint()->getY() - $paragraph->getDiagonalPoint()->getY());
     $this->assertEquals(300, $paragraphProduct->getHeight());
     $this->assertEquals(300, $paragraphProduct->getFirstPoint()->getY() - $paragraphProduct->getDiagonalPoint()->getY());
     $this->assertTrue($paragraphProduct !== null);
     $this->assertEquals(200, $paragraph->getHeight());
     $this->assertEquals(2, count($paragraph->getLines()));
     $this->assertEquals(3, count($paragraphProduct->getLines()));
     $this->assertEquals(1, count($paragraph->getChildren()));
     $this->assertEquals(2, count($paragraphProduct->getChildren()));
     foreach ($paragraphProduct->getLines() as $i => $line) {
         $this->assertEquals($i * 100, $line->getYTranslation());
         foreach ($line->getParts() as $part) {
             //                $this->assertTrue($part->getText() !== $text1);
             //                $this->assertTrue($part->getText() !== $text2);
         }
     }
 }