ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
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}
An exception for terminatinating execution or to throw for unit testing.
__construct()
Create a new PHPExcel_Worksheet_BaseDrawing.
setDescription($pValue='')
Set Description.
setResizeProportional($pValue=true)
Set ResizeProportional.
setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue=null)
Set Shadow.
getImageIndex()
Get image index.
getResizeProportional()
Get ResizeProportional.
setWidth($pValue=0)
Set Width.
getCoordinates()
Get Coordinates.
setOffsetX($pValue=0)
Set OffsetX.
setWidthAndHeight($width=0, $height=0)
Set width and height with proportional resize Example: $objDrawing->setResizeProportional(true); $ob...
setOffsetY($pValue=0)
Set OffsetY.
__clone()
Implement PHP __clone to create a deep clone, not just a shallow copy.
setName($pValue='')
Set Name.
setCoordinates($pValue='A1')
Set Coordinates.
setRotation($pValue=0)
Set Rotation.
setWorksheet(PHPExcel_Worksheet $pValue=null, $pOverrideOld=false)
Set Worksheet.
setHeight($pValue=0)
Set Height.
getDescription()
Get Description.