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());
 }