PHPExcel_Worksheet
[ class tree: PHPExcel_Worksheet ] [ index: PHPExcel_Worksheet ] [ all elements ]

Source for file BaseDrawing.php

Documentation is available at BaseDrawing.php

  1. <?php
  2. /**
  3.  * PHPExcel
  4.  *
  5.  * Copyright (c) 2006 - 2011 PHPExcel
  6.  *
  7.  * This library is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * This library is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with this library; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
  20.  *
  21.  * @category   PHPExcel
  22.  * @package    PHPExcel_Worksheet
  23.  * @copyright  Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
  24.  * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25.  * @version    1.7.6, 2011-02-27
  26.  */
  27.  
  28.  
  29. /**
  30.  * PHPExcel_Worksheet_BaseDrawing
  31.  *
  32.  * @category   PHPExcel
  33.  * @package    PHPExcel_Worksheet
  34.  * @copyright  Copyright (c) 2006 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
  35.  */
  36. class PHPExcel_Worksheet_BaseDrawing implements PHPExcel_IComparable
  37. {
  38.     /**
  39.      * Image counter
  40.      *
  41.      * @var int 
  42.      */
  43.     private static $_imageCounter 0;
  44.  
  45.     /**
  46.      * Image index
  47.      *
  48.      * @var int 
  49.      */
  50.     private $_imageIndex 0;
  51.  
  52.     /**
  53.      * Name
  54.      *
  55.      * @var string 
  56.      */
  57.     protected $_name;
  58.  
  59.     /**
  60.      * Description
  61.      *
  62.      * @var string 
  63.      */
  64.     protected $_description;
  65.  
  66.     /**
  67.      * Worksheet
  68.      *
  69.      * @var PHPExcel_Worksheet 
  70.      */
  71.     protected $_worksheet;
  72.  
  73.     /**
  74.      * Coordinates
  75.      *
  76.      * @var string 
  77.      */
  78.     protected $_coordinates;
  79.  
  80.     /**
  81.      * Offset X
  82.      *
  83.      * @var int 
  84.      */
  85.     protected $_offsetX;
  86.  
  87.     /**
  88.      * Offset Y
  89.      *
  90.      * @var int 
  91.      */
  92.     protected $_offsetY;
  93.  
  94.     /**
  95.      * Width
  96.      *
  97.      * @var int 
  98.      */
  99.     protected $_width;
  100.  
  101.     /**
  102.      * Height
  103.      *
  104.      * @var int 
  105.      */
  106.     protected $_height;
  107.  
  108.     /**
  109.      * Proportional resize
  110.      *
  111.      * @var boolean 
  112.      */
  113.     protected $_resizeProportional;
  114.  
  115.     /**
  116.      * Rotation
  117.      *
  118.      * @var int 
  119.      */
  120.     protected $_rotation;
  121.  
  122.     /**
  123.      * Shadow
  124.      *
  125.      * @var PHPExcel_Worksheet_Drawing_Shadow 
  126.      */
  127.     protected $_shadow;
  128.  
  129.     /**
  130.      * Create a new PHPExcel_Worksheet_BaseDrawing
  131.      */
  132.     public function __construct()
  133.     {
  134.         // Initialise values
  135.         $this->_name                = '';
  136.         $this->_description            = '';
  137.         $this->_worksheet            = null;
  138.         $this->_coordinates            = 'A1';
  139.         $this->_offsetX                = 0;
  140.         $this->_offsetY                = 0;
  141.         $this->_width                = 0;
  142.         $this->_height                = 0;
  143.         $this->_resizeProportional    = true;
  144.         $this->_rotation            = 0;
  145.         $this->_shadow                = new PHPExcel_Worksheet_Drawing_Shadow();
  146.  
  147.         // Set image index
  148.         self::$_imageCounter++;
  149.         $this->_imageIndex             self::$_imageCounter;
  150.     }
  151.  
  152.     /**
  153.      * Get image index
  154.      *
  155.      * @return int 
  156.      */
  157.     public function getImageIndex({
  158.         return $this->_imageIndex;
  159.     }
  160.  
  161.     /**
  162.      * Get Name
  163.      *
  164.      * @return string 
  165.      */
  166.     public function getName({
  167.         return $this->_name;
  168.     }
  169.  
  170.     /**
  171.      * Set Name
  172.      *
  173.      * @param string $pValue 
  174.      * @return PHPExcel_Worksheet_BaseDrawing 
  175.      */
  176.     public function setName($pValue ''{
  177.         $this->_name = $pValue;
  178.         return $this;
  179.     }
  180.  
  181.     /**
  182.      * Get Description
  183.      *
  184.      * @return string 
  185.      */
  186.     public function getDescription({
  187.         return $this->_description;
  188.     }
  189.  
  190.     /**
  191.      * Set Description
  192.      *
  193.      * @param string $pValue 
  194.      * @return PHPExcel_Worksheet_BaseDrawing 
  195.      */
  196.     public function setDescription($pValue ''{
  197.         $this->_description = $pValue;
  198.         return $this;
  199.     }
  200.  
  201.     /**
  202.      * Get Worksheet
  203.      *
  204.      * @return PHPExcel_Worksheet 
  205.      */
  206.     public function getWorksheet({
  207.         return $this->_worksheet;
  208.     }
  209.  
  210.     /**
  211.      * Set Worksheet
  212.      *
  213.      * @param     PHPExcel_Worksheet     $pValue 
  214.      * @param     bool                $pOverrideOld    If a Worksheet has already been assigned, overwrite it and remove image from old Worksheet?
  215.      * @throws     Exception
  216.      * @return PHPExcel_Worksheet_BaseDrawing 
  217.      */
  218.     public function setWorksheet(PHPExcel_Worksheet $pValue null$pOverrideOld false{
  219.         if (is_null($this->_worksheet)) {
  220.             // Add drawing to PHPExcel_Worksheet
  221.             $this->_worksheet = $pValue;
  222.             $this->_worksheet->getCell($this->_coordinates);
  223.             $this->_worksheet->getDrawingCollection()->append($this);
  224.         else {
  225.             if ($pOverrideOld{
  226.                 // Remove drawing from old PHPExcel_Worksheet
  227.                 $iterator $this->_worksheet->getDrawingCollection()->getIterator();
  228.  
  229.                 while ($iterator->valid()) {
  230.                     if ($iterator->current()->getHashCode(== $this->getHashCode()) {
  231.                         $this->_worksheet->getDrawingCollection()->offsetUnset$iterator->key() );
  232.                         $this->_worksheet = null;
  233.                         break;
  234.                     }
  235.                 }
  236.  
  237.                 // Set new PHPExcel_Worksheet
  238.                 $this->setWorksheet($pValue);
  239.             else {
  240.                 throw new Exception("A PHPExcel_Worksheet has already been assigned. Drawings can only exist on one PHPExcel_Worksheet.");
  241.             }
  242.         }
  243.         return $this;
  244.     }
  245.  
  246.     /**
  247.      * Get Coordinates
  248.      *
  249.      * @return string 
  250.      */
  251.     public function getCoordinates({
  252.         return $this->_coordinates;
  253.     }
  254.  
  255.     /**
  256.      * Set Coordinates
  257.      *
  258.      * @param string $pValue 
  259.      * @return PHPExcel_Worksheet_BaseDrawing 
  260.      */
  261.     public function setCoordinates($pValue 'A1'{
  262.         $this->_coordinates = $pValue;
  263.         return $this;
  264.     }
  265.  
  266.     /**
  267.      * Get OffsetX
  268.      *
  269.      * @return int 
  270.      */
  271.     public function getOffsetX({
  272.         return $this->_offsetX;
  273.     }
  274.  
  275.     /**
  276.      * Set OffsetX
  277.      *
  278.      * @param int $pValue 
  279.      * @return PHPExcel_Worksheet_BaseDrawing 
  280.      */
  281.     public function setOffsetX($pValue 0{
  282.         $this->_offsetX = $pValue;
  283.         return $this;
  284.     }
  285.  
  286.     /**
  287.      * Get OffsetY
  288.      *
  289.      * @return int 
  290.      */
  291.     public function getOffsetY({
  292.         return $this->_offsetY;
  293.     }
  294.  
  295.     /**
  296.      * Set OffsetY
  297.      *
  298.      * @param int $pValue 
  299.      * @return PHPExcel_Worksheet_BaseDrawing 
  300.      */
  301.     public function setOffsetY($pValue 0{
  302.         $this->_offsetY = $pValue;
  303.         return $this;
  304.     }
  305.  
  306.     /**
  307.      * Get Width
  308.      *
  309.      * @return int 
  310.      */
  311.     public function getWidth({
  312.         return $this->_width;
  313.     }
  314.  
  315.     /**
  316.      * Set Width
  317.      *
  318.      * @param int $pValue 
  319.      * @return PHPExcel_Worksheet_BaseDrawing 
  320.      */
  321.     public function setWidth($pValue 0{
  322.         // Resize proportional?
  323.         if ($this->_resizeProportional && $pValue != 0{
  324.             $ratio $this->_height / $this->_width;
  325.             $this->_height = round($ratio $pValue);
  326.         }
  327.  
  328.         // Set width
  329.         $this->_width = $pValue;
  330.  
  331.         return $this;
  332.     }
  333.  
  334.     /**
  335.      * Get Height
  336.      *
  337.      * @return int 
  338.      */
  339.     public function getHeight({
  340.         return $this->_height;
  341.     }
  342.  
  343.     /**
  344.      * Set Height
  345.      *
  346.      * @param int $pValue 
  347.      * @return PHPExcel_Worksheet_BaseDrawing 
  348.      */
  349.     public function setHeight($pValue 0{
  350.         // Resize proportional?
  351.         if ($this->_resizeProportional && $pValue != 0{
  352.             $ratio $this->_width / $this->_height;
  353.             $this->_width = round($ratio $pValue);
  354.         }
  355.  
  356.         // Set height
  357.         $this->_height = $pValue;
  358.  
  359.         return $this;
  360.     }
  361.  
  362.     /**
  363.      * Set width and height with proportional resize
  364.      * Example:
  365.      * <code>
  366.      * $objDrawing->setResizeProportional(true);
  367.      * $objDrawing->setWidthAndHeight(160,120);
  368.      * </code>
  369.      *
  370.      * @author Vincent@luo MSN:kele_100@hotmail.com
  371.      * @param int $width 
  372.      * @param int $height 
  373.      * @return PHPExcel_Worksheet_BaseDrawing 
  374.      */
  375.     public function setWidthAndHeight($width 0$height 0{
  376.         $xratio $width $this->_width;
  377.         $yratio $height $this->_height;
  378.         if ($this->_resizeProportional && !($width == || $height == 0)) {
  379.             if (($xratio $this->_height$height{
  380.                 $this->_height = ceil($xratio $this->_height);
  381.                 $this->_width  = $width;
  382.             else {
  383.                 $this->_width    = ceil($yratio $this->_width);
  384.                 $this->_height    = $height;
  385.             }
  386.         }
  387.         return $this;
  388.     }
  389.  
  390.     /**
  391.      * Get ResizeProportional
  392.      *
  393.      * @return boolean 
  394.      */
  395.     public function getResizeProportional({
  396.         return $this->_resizeProportional;
  397.     }
  398.  
  399.     /**
  400.      * Set ResizeProportional
  401.      *
  402.      * @param boolean $pValue 
  403.      * @return PHPExcel_Worksheet_BaseDrawing 
  404.      */
  405.     public function setResizeProportional($pValue true{
  406.         $this->_resizeProportional = $pValue;
  407.         return $this;
  408.     }
  409.  
  410.     /**
  411.      * Get Rotation
  412.      *
  413.      * @return int 
  414.      */
  415.     public function getRotation({
  416.         return $this->_rotation;
  417.     }
  418.  
  419.     /**
  420.      * Set Rotation
  421.      *
  422.      * @param int $pValue 
  423.      * @return PHPExcel_Worksheet_BaseDrawing 
  424.      */
  425.     public function setRotation($pValue 0{
  426.         $this->_rotation = $pValue;
  427.         return $this;
  428.     }
  429.  
  430.     /**
  431.      * Get Shadow
  432.      *
  433.      * @return PHPExcel_Worksheet_Drawing_Shadow 
  434.      */
  435.     public function getShadow({
  436.         return $this->_shadow;
  437.     }
  438.  
  439.     /**
  440.      * Set Shadow
  441.      *
  442.      * @param     PHPExcel_Worksheet_Drawing_Shadow $pValue 
  443.      * @throws     Exception
  444.      * @return PHPExcel_Worksheet_BaseDrawing 
  445.      */
  446.     public function setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue null{
  447.            $this->_shadow = $pValue;
  448.            return $this;
  449.     }
  450.  
  451.     /**
  452.      * Get hash code
  453.      *
  454.      * @return string    Hash code
  455.      */
  456.     public function getHashCode({
  457.         return md5(
  458.               $this->_name
  459.             . $this->_description
  460.             . $this->_worksheet->getHashCode()
  461.             . $this->_coordinates
  462.             . $this->_offsetX
  463.             . $this->_offsetY
  464.             . $this->_width
  465.             . $this->_height
  466.             . $this->_rotation
  467.             . $this->_shadow->getHashCode()
  468.             . __CLASS__
  469.         );
  470.     }
  471.  
  472.     /**
  473.      * Implement PHP __clone to create a deep clone, not just a shallow copy.
  474.      */
  475.     public function __clone({
  476.         $vars get_object_vars($this);
  477.         foreach ($vars as $key => $value{
  478.             if (is_object($value)) {
  479.                 $this->$key clone $value;
  480.             else {
  481.                 $this->$key $value;
  482.             }
  483.         }
  484.     }
  485. }

Documentation generated on Sun, 27 Feb 2011 16:28:25 -0800 by phpDocumentor 1.4.3