File Source for BaseDrawing.php

PHPExcel_Worksheet

# Source for file BaseDrawing.php

Documentation is available at BaseDrawing.php

1. <?php
2. /**
3. * PHPExcel
4. *
5. * Copyright (c) 2006 - 2011 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 - 2011 PHPExcel (http://www.codeplex.com/PHPExcel)
24. * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt LGPL
25. * @version 1.7.6, 2011-02-27
26. */
29. /**
30. * PHPExcel_Worksheet_BaseDrawing
31. *
32. * @category PHPExcel
33. * @package PHPExcel_Worksheet
34. * @copyright Copyright (c) 2006 - 2011 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;
45. /**
46. * Image index
47. *
48. * @var int
49. */
50. private $_imageIndex = 0;
52. /**
53. * Name
54. *
55. * @var string
56. */
57. protected $_name;
59. /**
60. * Description
61. *
62. * @var string
63. */
64. protected $_description;
66. /**
67. * Worksheet
68. *
69. * @var PHPExcel_Worksheet
70. */
71. protected $_worksheet;
73. /**
74. * Coordinates
75. *
76. * @var string
77. */
78. protected $_coordinates;
80. /**
81. * Offset X
82. *
83. * @var int
84. */
85. protected $_offsetX;
87. /**
88. * Offset Y
89. *
90. * @var int
91. */
92. protected $_offsetY;
94. /**
95. * Width
96. *
97. * @var int
98. */
99. protected $_width;
101. /**
102. * Height
103. *
104. * @var int
105. */
106. protected $_height;
108. /**
109. * Proportional resize
110. *
111. * @var boolean
112. */
113. protected $_resizeProportional;
115. /**
116. * Rotation
117. *
118. * @var int
119. */
120. protected $_rotation;
122. /**
123. * Shadow
124. *
125. * @var PHPExcel_Worksheet_Drawing_Shadow
126. */
127. protected $_shadow;
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();
147. // Set image index
148. self::$_imageCounter++;
149. $this->_imageIndex = self::$_imageCounter;
150. }
152. /**
153. * Get image index
154. *
155. * @return int
156. */
157. public function getImageIndex() {
158. return $this->_imageIndex;
159. }
161. /**
162. * Get Name
163. *
164. * @return string
165. */
166. public function getName() {
167. return $this->_name;
168. }
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. }
181. /**
182. * Get Description
183. *
184. * @return string
185. */
186. public function getDescription() {
187. return $this->_description;
188. }
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. }
201. /**
202. * Get Worksheet
203. *
204. * @return PHPExcel_Worksheet
205. */
206. public function getWorksheet() {
207. return $this->_worksheet;
208. }
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 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();
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. }
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. }
246. /**
247. * Get Coordinates
248. *
249. * @return string
250. */
251. public function getCoordinates() {
252. return $this->_coordinates;
253. }
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. }
266. /**
267. * Get OffsetX
268. *
269. * @return int
270. */
271. public function getOffsetX() {
272. return $this->_offsetX;
273. }
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. }
286. /**
287. * Get OffsetY
288. *
289. * @return int
290. */
291. public function getOffsetY() {
292. return $this->_offsetY;
293. }
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. }
306. /**
307. * Get Width
308. *
309. * @return int
310. */
311. public function getWidth() {
312. return $this->_width;
313. }
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. }
328. // Set width
329. $this->_width = $pValue;
331. return $this;
332. }
334. /**
335. * Get Height
336. *
337. * @return int
338. */
339. public function getHeight() {
340. return $this->_height;
341. }
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. }
356. // Set height
357. $this->_height = $pValue;
359. return $this;
360. }
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;
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. }
390. /**
391. * Get ResizeProportional
392. *
393. * @return boolean
394. */
395. public function getResizeProportional() {
396. return $this->_resizeProportional;
397. }
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. }
410. /**
411. * Get Rotation
412. *
413. * @return int
414. */
415. public function getRotation() {
416. return $this->_rotation;
417. }
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. }
430. /**
431. * Get Shadow
432. *
433. * @return PHPExcel_Worksheet_Drawing_Shadow
434. */
435. public function getShadow() {
436. return $this->_shadow;
437. }
439. /**
440. * Set Shadow
441. *
442. * @param PHPExcel_Worksheet_Drawing_Shadow $pValue
443. * @throws 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. }
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. }
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. }

Documentation generated on Sun, 27 Feb 2011 16:28:25 -0800 by phpDocumentor 1.4.3