Example #1
0
 /**
  * Clip to current path
  * Uses the current path as clipping path, and terminate the path.
  * 
  * @return bool Returns TRUE on success or FALSE on failure.
  */
 public function clip()
 {
     if (!is_array($this->_last_geometry)) {
         $this->_errmsg = "No Geometry";
         return false;
     }
     if (!$this->_page) {
         $this->_errmsg = "No Page";
         return false;
     }
     $shape = $this->_last_geometry[0];
     switch ($shape) {
         case 'rect':
             $this->_page->clipRectangle($this->_last_geometry[1][0], $this->_last_geometry[1][1], $this->_last_geometry[1][0] + $this->_last_geometry[1][2], $this->_last_geometry[1][1] + $this->_last_geometry[1][3]);
             return true;
             break;
     }
     $this->_errmsg = "Unknown shape '{$shape}'";
     return false;
 }
Example #2
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());
 }