ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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 PHPExcel_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 != 0 ? $this->_width : 1);
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 != 0 ? $this->_height : 1);
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 != 0 ? $this->_width : 1);
377  $yratio = $height / ($this->_height != 0 ? $this->_height : 1);
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  } else {
387  $this->_width = $width;
388  $this->_height = $height;
389  }
390 
391  return $this;
392  }
393 
399  public function getResizeProportional() {
401  }
402 
409  public function setResizeProportional($pValue = true) {
410  $this->_resizeProportional = $pValue;
411  return $this;
412  }
413 
419  public function getRotation() {
420  return $this->_rotation;
421  }
422 
429  public function setRotation($pValue = 0) {
430  $this->_rotation = $pValue;
431  return $this;
432  }
433 
439  public function getShadow() {
440  return $this->_shadow;
441  }
442 
450  public function setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue = null) {
451  $this->_shadow = $pValue;
452  return $this;
453  }
454 
460  public function getHashCode() {
461  return md5(
462  $this->_name
463  . $this->_description
464  . $this->_worksheet->getHashCode()
465  . $this->_coordinates
466  . $this->_offsetX
467  . $this->_offsetY
468  . $this->_width
469  . $this->_height
470  . $this->_rotation
471  . $this->_shadow->getHashCode()
472  . __CLASS__
473  );
474  }
475 
479  public function __clone() {
480  $vars = get_object_vars($this);
481  foreach ($vars as $key => $value) {
482  if (is_object($value)) {
483  $this->$key = clone $value;
484  } else {
485  $this->$key = $value;
486  }
487  }
488  }
489 }
setOffsetY($pValue=0)
Set OffsetY.
setName($pValue='')
Set Name.
__construct()
Create a new PHPExcel_Worksheet_BaseDrawing.
setWidth($pValue=0)
Set Width.
setOffsetX($pValue=0)
Set OffsetX.
__clone()
Implement PHP __clone to create a deep clone, not just a shallow copy.
setWidthAndHeight($width=0, $height=0)
Set width and height with proportional resize Example: $objDrawing->setResizeProportional(true); $ob...
setCoordinates($pValue='A1')
Set Coordinates.
setRotation($pValue=0)
Set Rotation.
getImageIndex()
Get image index.
setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue=null)
Set Shadow.
getCoordinates()
Get Coordinates.
setHeight($pValue=0)
Set Height.
setWorksheet(PHPExcel_Worksheet $pValue=null, $pOverrideOld=false)
Set Worksheet.
getDescription()
Get Description.
setResizeProportional($pValue=true)
Set ResizeProportional.
getResizeProportional()
Get ResizeProportional.
setDescription($pValue='')
Set Description.
$key
Definition: croninfo.php:18