[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/phpexcel/PHPExcel/Worksheet/ -> BaseDrawing.php (source)

   1  <?php
   2  /**
   3   * PHPExcel
   4   *
   5   * Copyright (c) 2006 - 2014 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 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
  24   * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
  25   * @version    ##VERSION##, ##DATE##
  26   */
  27  
  28  
  29  /**
  30   * PHPExcel_Worksheet_BaseDrawing
  31   *
  32   * @category   PHPExcel
  33   * @package    PHPExcel_Worksheet
  34   * @copyright  Copyright (c) 2006 - 2014 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     PHPExcel_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 PHPExcel_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:[email protected]
 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 == 0 || $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     PHPExcel_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  }


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1