Example #1
0
 /**
  * @param ZendPage $page
  * @param Viewport $viewport
  * @param float $x
  * @param float $y
  * @param float $width
  * @param float $height
  * @param bool $keepRatio
  */
 private function translateAndClipToViewport(ZendPage $page, Viewport $viewport, $x, $y, $width, $height, $keepRatio = true)
 {
     $scaleX = $width / $viewport->getWidth();
     $scaleY = $height / $viewport->getHeight();
     $mx = -$viewport->getX();
     $my = -$viewport->getY();
     if ($keepRatio) {
         if ($scaleX < $scaleY) {
             $scaleY = $scaleX;
             // center viewport
             $my += ($height / $scaleY - $viewport->getHeight()) / 2;
         } else {
             $scaleX = $scaleY;
             // center viewport
             $mx += ($width / $scaleX - $viewport->getWidth()) / 2;
         }
     }
     // translate origin to $x/$y
     $page->translate($x, $y);
     // scale to viewport
     $page->scale($scaleX, $scaleY);
     // translate origin to (centered) $viewport origin
     $page->translate($mx, $my);
     // clip viewport
     $page->clipRectangle($viewport->getX(), $viewport->getY(), $viewport->getX() + $viewport->getHeight(), $viewport->getY() + $viewport->getWidth());
 }
Example #2
0
 /**
  * @param float $width
  * @param float $height
  * @param Viewport $viewport
  * @param bool $keepRation
  *
  * @return SimpleXMLElement
  * @internal param Graphic $graphic
  *
  */
 private function createSVG($width, $height, Viewport $viewport, $keepRation)
 {
     $svg = new SimpleXMLElement("<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"></svg>");
     $svg->addAttribute("width", $width . "cm");
     $svg->addAttribute("height", $height . "cm");
     $svg->addAttribute("viewBox", sprintf("%f %f %f %f", $viewport->getX(), $viewport->getY(), $viewport->getWidth(), $viewport->getHeight()));
     if (!$keepRation) {
         $svg->addAttribute("preserveAspectRatio", "none");
     }
     return $svg;
 }