PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.3
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
visualizer / vendor / phpoffice / phpexcel / Classes / PHPExcel / Worksheet / BaseDrawing.php

BaseDrawing.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.0.3, at vendor/phpoffice/phpexcel/Classes/PHPExcel/Worksheet/BaseDrawing.php

490 lines 10.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 != 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
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 != 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
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 != 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
394 /**
395 * Get ResizeProportional
396 *
397 * @return boolean
398 */
399 public function getResizeProportional() {
400 return $this->_resizeProportional;
401 }
402
403 /**
404 * Set ResizeProportional
405 *
406 * @param boolean $pValue
407 * @return PHPExcel_Worksheet_BaseDrawing
408 */
409 public function setResizeProportional($pValue = true) {
410 $this->_resizeProportional = $pValue;
411 return $this;
412 }
413
414 /**
415 * Get Rotation
416 *
417 * @return int
418 */
419 public function getRotation() {
420 return $this->_rotation;
421 }
422
423 /**
424 * Set Rotation
425 *
426 * @param int $pValue
427 * @return PHPExcel_Worksheet_BaseDrawing
428 */
429 public function setRotation($pValue = 0) {
430 $this->_rotation = $pValue;
431 return $this;
432 }
433
434 /**
435 * Get Shadow
436 *
437 * @return PHPExcel_Worksheet_Drawing_Shadow
438 */
439 public function getShadow() {
440 return $this->_shadow;
441 }
442
443 /**
444 * Set Shadow
445 *
446 * @param PHPExcel_Worksheet_Drawing_Shadow $pValue
447 * @throws PHPExcel_Exception
448 * @return PHPExcel_Worksheet_BaseDrawing
449 */
450 public function setShadow(PHPExcel_Worksheet_Drawing_Shadow $pValue = null) {
451 $this->_shadow = $pValue;
452 return $this;
453 }
454
455 /**
456 * Get hash code
457 *
458 * @return string Hash code
459 */
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
476 /**
477 * Implement PHP __clone to create a deep clone, not just a shallow copy.
478 */
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 }
490