/** * @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()); }
/** * @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 getContainerStub($start, $end, array $methods = array()) { $stub = new Container(); $stub->setHeight($start[1] - $end[1]); $stub->getBoundary()->setNext($start[0], $start[1])->setNext($end[0], $start[1])->setNext($end[0], $end[1])->setNext($start[0], $end[1])->close(); $boundary = new Boundary(); $boundary->setNext($start[0], $start[1])->setNext($end[0], $start[1])->setNext($end[0], $end[1])->setNext($start[0], $end[1])->close(); return $stub; }
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; }
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; }
/** * @test */ public function watermarkShouldBeInTheMiddleOfPage() { $watermark = new Container(); $watermark->setHeight(100); $this->page->setWatermark($watermark); $this->assertEquals(Node::VERTICAL_ALIGN_MIDDLE, $watermark->getAttribute('vertical-align')); $this->assertEquals($this->page->getHeight(), $watermark->getHeight()); $this->assertEquals($this->page->getWidth(), $watermark->getWidth()); }
private function setDimension(ColumnableContainer $columnableContainer, Container $container) { $container->setWidth($columnableContainer->getWidth()); $container->setHeight($columnableContainer->getHeight()); $this->setPointsToBoundary($columnableContainer->getBoundary(), $container->getBoundary()); }
/** * _____________________________ * | | * | ______________| * |_____________| | <- 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); } } }