home *** CD-ROM | disk | FTP | other *** search
/ Cricao de Sites - 650 Layouts Prontos / WebMasters.iso / Servidores / xampp-win32-1.6.7-installer.exe / php / PEAR / Image / Canvas / WithMap.php < prev   
Encoding:
PHP Script  |  2008-07-02  |  8.0 KB  |  278 lines

  1. <?php
  2.  
  3. /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  4.  
  5. /**
  6.  * Image_Canvas
  7.  *
  8.  * Canvas based creation of images to facilitate different output formats
  9.  *
  10.  * PHP versions 4 and 5
  11.  *
  12.  * LICENSE: This library is free software; you can redistribute it and/or modify
  13.  * it under the terms of the GNU Lesser General Public License as published by
  14.  * the Free Software Foundation; either version 2.1 of the License, or (at your
  15.  * option) any later version. This library is distributed in the hope that it
  16.  * will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
  17.  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
  18.  * General Public License for more details. You should have received a copy of
  19.  * the GNU Lesser General Public License along with this library; if not, write
  20.  * to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  21.  * 02111-1307 USA
  22.  *
  23.  * @category   Images
  24.  * @package    Image_Canvas
  25.  * @author     Jesper Veggerby <pear.nosey@veggerby.dk>
  26.  * @copyright  Copyright (C) 2003, 2004 Jesper Veggerby Hansen
  27.  * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
  28.  * @version    CVS: $Id: WithMap.php,v 1.3 2005/08/24 20:37:35 nosey Exp $
  29.  * @link       http://pear.php.net/pepr/pepr-proposal-show.php?id=212
  30.  */
  31.  
  32. /**
  33.  *  Class for handling different output formats including a HTML image map
  34.  * 
  35.  * @category   Images
  36.  * @package    Image_Canvas
  37.  * @author     Jesper Veggerby <pear.nosey@veggerby.dk>
  38.  * @copyright  Copyright (C) 2003, 2004 Jesper Veggerby Hansen
  39.  * @license    http://www.gnu.org/copyleft/lesser.html  LGPL License 2.1
  40.  * @version    Release: @package_version@
  41.  * @link       http://pear.php.net/pepr/pepr-proposal-show.php?id=212
  42.  * @since      version 0.2.0
  43.  * @abstract
  44.  */
  45. class Image_Canvas_WithMap extends Image_Canvas
  46. {
  47.  
  48.     /**
  49.      * The image map
  50.      * @var Image_Canvas_ImageMap
  51.      * @access private
  52.      */
  53.     var $_imageMap = null;
  54.  
  55.     /**
  56.      * Create the canvas.
  57.      *
  58.      * Parameters available:
  59.      *
  60.      * 'width' The width of the graph on the canvas
  61.      *
  62.      * 'height' The height of the graph on the canvas
  63.      *
  64.      * 'left' The left offset of the graph on the canvas
  65.      *
  66.      * 'top' The top offset of the graph on the canvas
  67.      * 
  68.      * 'usemap' Initialize an image map
  69.      *
  70.      * @param array $params Parameter array
  71.      * @abstract
  72.      */
  73.     function Image_Canvas_WithMap($params)
  74.     {
  75.         parent::Image_Canvas($params);
  76.                 
  77.         if ((isset($params['usemap'])) && ($params['usemap'] === true)) {
  78.             $this->_imageMap =& Image_Canvas::factory(
  79.                 'ImageMap',
  80.                 array(
  81.                     'left' => $this->_left,
  82.                     'top' => $this->_top,
  83.                     'width' => $this->_width,
  84.                     'height' => $this->_height
  85.                 )
  86.             );
  87.         }
  88.     }
  89.     /**
  90.      * Draw a line
  91.      *
  92.      * Parameter array:
  93.      * 'x0': int X start point
  94.      * 'y0': int Y start point
  95.      * 'x1': int X end point
  96.      * 'y1': int Y end point
  97.      * 'color': mixed [optional] The line color
  98.      * @param array $params Parameter array
  99.      */
  100.     function line($params)
  101.     {
  102.         if (isset($this->_imageMap)) {
  103.             $this->_imageMap->line($params);
  104.         }
  105.         parent::line($params);
  106.     }
  107.  
  108.     /**
  109.      * Adds vertex to a polygon
  110.      *
  111.      * Parameter array:
  112.      * 'x': int X point
  113.      * 'y': int Y point
  114.      * @param array $params Parameter array
  115.      */
  116.     function addVertex($params)
  117.     {
  118.         if (isset($this->_imageMap)) {
  119.             $this->_imageMap->addVertex($params);
  120.         }
  121.         parent::addVertex($params);
  122.     }
  123.  
  124.     /**
  125.      * Adds "splined" vertex to a polygon
  126.      *
  127.      * Parameter array:
  128.      * 'x': int X point
  129.      * 'y': int Y point
  130.      * 'p1x': X Control point 1
  131.      * 'p1y': Y Control point 1
  132.      * 'p2x': X Control point 2
  133.      * 'p2y': Y Control point 2
  134.      * @param array $params Parameter array
  135.      */
  136.     function addSpline($params)
  137.     {
  138.         if (isset($this->_imageMap)) {
  139.             $this->_imageMap->addSpline($params);
  140.         }
  141.         parent::addSpline($params);
  142.     }
  143.  
  144.     /**
  145.      * Draws a polygon
  146.      *
  147.      * Parameter array:
  148.      * 'connect': bool [optional] Specifies whether the start point should be
  149.      *   connected to the endpoint (closed polygon) or not (connected line)
  150.      * 'fill': mixed [optional] The fill color
  151.      * 'line': mixed [optional] The line color
  152.      * @param array $params Parameter array
  153.      */
  154.     function polygon($params)
  155.     {
  156.         if (isset($this->_imageMap)) {
  157.             $this->_imageMap->polygon($params);
  158.         }
  159.         parent::polygon($params);
  160.     }
  161.  
  162.     /**
  163.      * Draw a rectangle
  164.      *
  165.      * Parameter array:
  166.      * 'x0': int X start point
  167.      * 'y0': int Y start point
  168.      * 'x1': int X end point
  169.      * 'y1': int Y end point
  170.      * 'fill': mixed [optional] The fill color
  171.      * 'line': mixed [optional] The line color
  172.      * @param array $params Parameter array
  173.      */
  174.     function rectangle($params)
  175.     {
  176.         if (isset($this->_imageMap)) {
  177.             $this->_imageMap->rectangle($params);
  178.         }        
  179.         parent::rectangle($params);
  180.     }
  181.  
  182.     /**
  183.      * Draw an ellipse
  184.      *
  185.      * Parameter array:
  186.      * 'x': int X center point
  187.      * 'y': int Y center point
  188.      * 'rx': int X radius
  189.      * 'ry': int Y radius
  190.      * 'fill': mixed [optional] The fill color
  191.      * 'line': mixed [optional] The line color
  192.      * @param array $params Parameter array
  193.      */
  194.     function ellipse($params)
  195.     {
  196.         if (isset($this->_imageMap)) {
  197.             $this->_imageMap->ellipse($params);
  198.         }        
  199.         parent::ellipse($params);
  200.     }
  201.  
  202.     /**
  203.      * Draw a pie slice
  204.      *
  205.      * Parameter array:
  206.      * 'x': int X center point
  207.      * 'y': int Y center point
  208.      * 'rx': int X radius
  209.      * 'ry': int Y radius
  210.      * 'v1': int The starting angle (in degrees)
  211.      * 'v2': int The end angle (in degrees)
  212.      * 'srx': int [optional] Starting X-radius of the pie slice (i.e. for a doughnut)
  213.      * 'sry': int [optional] Starting Y-radius of the pie slice (i.e. for a doughnut)
  214.      * 'fill': mixed [optional] The fill color
  215.      * 'line': mixed [optional] The line color
  216.      * @param array $params Parameter array
  217.      */
  218.     function pieslice($params)
  219.     {
  220.         if (isset($this->_imageMap)) {
  221.             $this->_imageMap->pieslice($params);
  222.         }        
  223.         parent::pieslice($params);
  224.     }
  225.  
  226.     /**
  227.      * Writes text
  228.      *
  229.      * Parameter array:
  230.      * 'x': int X-point of text
  231.      * 'y': int Y-point of text
  232.      * 'text': string The text to add
  233.      * 'alignment': array [optional] Alignment
  234.      * 'color': mixed [optional] The color of the text
  235.      */
  236.     function addText($params)
  237.     {
  238.         if (isset($this->_imageMap)) {
  239.             $this->_imageMap->addText($params);
  240.         }
  241.         parent::addText($params);
  242.     }
  243.  
  244.     /**
  245.      * Overlay image
  246.      *
  247.      * Parameter array:
  248.      * 'x': int X-point of overlayed image
  249.      * 'y': int Y-point of overlayed image
  250.      * 'filename': string The filename of the image to overlay
  251.      * 'width': int [optional] The width of the overlayed image (resizing if possible)
  252.      * 'height': int [optional] The height of the overlayed image (resizing if possible)
  253.      * 'alignment': array [optional] Alignment
  254.      */
  255.     function image($params)
  256.     {
  257.         if (isset($this->_imageMap)) {
  258.             $this->_imageMap->image($params);
  259.         }
  260.         parent::image($params);
  261.     }
  262.  
  263.     /**
  264.      * Get the imagemap
  265.      * @return Image_Graph_ImageMap The image map (or false if none)
  266.      */
  267.     function &getImageMap()
  268.     {
  269.         $result = null;
  270.         if (isset($this->_imageMap)) {
  271.             $result =& $this->_imageMap;
  272.         }
  273.         return $result;
  274.     }
  275.  
  276. }
  277.  
  278. ?>