ILIAS  eassessment Revision 61809
 All Data Structures Namespaces Files Functions Variables Groups Pages
BaseDrawing.php
Go to the documentation of this file.
1 <?php
37 {
43  private static $_imageCounter = 0;
44 
50  private $_imageIndex = 0;
51 
57  protected $_name;
58 
64  protected $_description;
65 
71  protected $_worksheet;
72 
78  protected $_coordinates;
79 
85  protected $_offsetX;
86 
92  protected $_offsetY;
93 
99  protected $_width;
100 
106  protected $_height;
107 
114 
120  protected $_rotation;
121 
127  protected $_shadow;
128 
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 
157  public function getImageIndex() {
158  return $this->_imageIndex;
159  }
160 
166  public function getName() {
167  return $this->_name;
168  }
169 
176  public function setName($pValue = '') {
177  $this->_name = $pValue;
178  return $this;
179  }
180 
186  public function getDescription() {
187  return $this->_description;
188  }
189 
196  public function setDescription($pValue = '') {
197  $this->_description = $pValue;
198  return $this;
199  }
200 
206  public function getWorksheet() {
207  return $this->_worksheet;
208  }
209 
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 
251  public function getCoordinates() {
252  return $this->_coordinates;
253  }
254 
261  public function setCoordinates($pValue = 'A1') {
262  $this->_coordinates = $pValue;
263  return $this;
264  }
265 
271  public function getOffsetX() {
272  return $this->_offsetX;
273  }
274 
281  public function setOffsetX($pValue = 0) {
282  $this->_offsetX = $pValue;
283  return $this;
284  }
285 
291  public function getOffsetY() {
292  return $this->_offsetY;
293  }
294 
301  public function setOffsetY($pValue = 0) {
302  $this->_offsetY = $pValue;
303  return $this;
304  }
305 
311  public function getWidth() {
312  return $this->_width;
313  }
314 
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 
339  public function getHeight() {
340  return $this->_height;
341  }
342 
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 
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 
395  public function getResizeProportional() {
397  }
398 
405  public function setResizeProportional($pValue = true) {
406  $this->_resizeProportional = $pValue;
407  return $this;
408  }
409 
415  public function getRotation() {
416  return $this->_rotation;
417  }
418 
425  public function setRotation($pValue = 0) {
426  $this->_rotation = $pValue;
427  return $this;
428  }
429 
435  public function getShadow() {
436  return $this->_shadow;
437  }
438 
446  public function setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue = null) {
447  $this->_shadow = $pValue;
448  return $this;
449  }
450 
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 
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 }