/** * @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()); }
private function createText($text) { $page = new Page(array('page-size' => self::TEXT_WIDTH . ':100')); $textNode = new TextDimensionFormatterTest_Text($text, new TextDimensionFormatterTest_Font()); $textNode->setFontSize(self::FONT_SIZE); $textNode->setWidth(self::TEXT_WIDTH); $page->add($textNode); return $textNode; }
private function createText($text, $parentWidth = null, $parentMaxWidth = null) { $page = new Page(); $container = new Container(array('width' => $parentWidth, 'max-width' => $parentMaxWidth)); $textNode = new TextDimensionFormatterTest_Text($text, new TextDimensionFormatterTest_Font()); $textNode->setFontSize(self::FONT_SIZE); $container->add($textNode); $page->add($container); return $textNode; }
/** * @test */ public function percentageConvert() { $page = new Page(); $unitConverter = new PdfUnitConverter(); $node = new Container(array('width' => 200, 'height' => 100), $unitConverter); $child = new Container(array('width' => '70%', 'height' => '50%'), $unitConverter); $node->add($child); $page->add($node); $node->setHeight(100); $node->setWidth(200); $this->formatter->format($child, $this->document); $this->assertEquals(200 * 0.7, $child->getWidth()); $this->assertEquals(100 * 0.5, $child->getHeight()); }
/** * @test * @dataProvider sizeProvider */ public function calculateSecondSize($width, $height) { $page = new Page(); $imageWidth = 100; $imageHeight = 120; $imagePath = 'image/path'; $imageResource = $this->createImageResourceMock($imageWidth, $imageHeight); $this->document->expects($this->atLeastOnce())->method('createImage')->with($imagePath)->will($this->returnValue($imageResource)); $image = new Image(array('src' => $imagePath, 'width' => $width, 'height' => $height)); $page->add($image); $this->formatter->format($image, $this->document); $ratio = $imageWidth / $imageHeight; if (!$height) { $ratio = 1 / $ratio; } $excepted = $ratio * ($width ? $width : $height); $this->assertEquals($excepted, $width ? $image->getHeight() : $image->getWidth()); }
/** * @test * @dataProvider correctHeightOfPageProvider */ public function correctHeightOfPage($originalHeight, array $childrenDiagonalYCoord) { $page = new Page(array('page-size' => '500:' . $originalHeight)); foreach ($childrenDiagonalYCoord as $yCoord) { $node = $this->nodeObjectMother->getNodeStub(0, $page->getHeight(), 100, $page->getHeight() - $yCoord); $page->add($node); } $minYCoord = $childrenDiagonalYCoord ? min($childrenDiagonalYCoord) : $originalHeight; $this->formatter->format($page, $this->document); $expectedHeight = $originalHeight - $minYCoord; $translation = $originalHeight - $expectedHeight; $this->assertEquals($expectedHeight, $page->getRealHeight()); foreach ($page->getChildren() as $i => $child) { $expectedDiagonalYCoord = $childrenDiagonalYCoord[$i] - $translation; $actualDiagonalYCoord = $child->getDiagonalPoint()->getY(); $this->assertEquals($expectedDiagonalYCoord, $actualDiagonalYCoord); } }
/** * @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]); }
/** * @test * @dataProvider calculateDiagonallyRotationProvider */ public function calculateDiagonallyRotation($rotate, $width, $height, $expectedRadians) { $page = new Page(array('page-size' => $width . ':' . $height)); $page->add($this->node); $this->node->setAttribute('rotate', $rotate); $this->assertEquals($expectedRadians, $this->node->getRotate(), 'diagonally rotate dosn\'t match', 0.001); }