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 1.8.0, 2014-03-02
26: */
27:
28:
29: /**
30: * PHPExcel_Worksheet_HeaderFooterDrawing
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_HeaderFooterDrawing extends PHPExcel_Worksheet_Drawing implements PHPExcel_IComparable
37: {
38: /**
39: * Path
40: *
41: * @var string
42: */
43: private $_path;
44:
45: /**
46: * Name
47: *
48: * @var string
49: */
50: protected $_name;
51:
52: /**
53: * Offset X
54: *
55: * @var int
56: */
57: protected $_offsetX;
58:
59: /**
60: * Offset Y
61: *
62: * @var int
63: */
64: protected $_offsetY;
65:
66: /**
67: * Width
68: *
69: * @var int
70: */
71: protected $_width;
72:
73: /**
74: * Height
75: *
76: * @var int
77: */
78: protected $_height;
79:
80: /**
81: * Proportional resize
82: *
83: * @var boolean
84: */
85: protected $_resizeProportional;
86:
87: /**
88: * Create a new PHPExcel_Worksheet_HeaderFooterDrawing
89: */
90: public function __construct()
91: {
92: // Initialise values
93: $this->_path = '';
94: $this->_name = '';
95: $this->_offsetX = 0;
96: $this->_offsetY = 0;
97: $this->_width = 0;
98: $this->_height = 0;
99: $this->_resizeProportional = true;
100: }
101:
102: /**
103: * Get Name
104: *
105: * @return string
106: */
107: public function getName() {
108: return $this->_name;
109: }
110:
111: /**
112: * Set Name
113: *
114: * @param string $pValue
115: * @return PHPExcel_Worksheet_HeaderFooterDrawing
116: */
117: public function setName($pValue = '') {
118: $this->_name = $pValue;
119: return $this;
120: }
121:
122: /**
123: * Get OffsetX
124: *
125: * @return int
126: */
127: public function getOffsetX() {
128: return $this->_offsetX;
129: }
130:
131: /**
132: * Set OffsetX
133: *
134: * @param int $pValue
135: * @return PHPExcel_Worksheet_HeaderFooterDrawing
136: */
137: public function setOffsetX($pValue = 0) {
138: $this->_offsetX = $pValue;
139: return $this;
140: }
141:
142: /**
143: * Get OffsetY
144: *
145: * @return int
146: */
147: public function getOffsetY() {
148: return $this->_offsetY;
149: }
150:
151: /**
152: * Set OffsetY
153: *
154: * @param int $pValue
155: * @return PHPExcel_Worksheet_HeaderFooterDrawing
156: */
157: public function setOffsetY($pValue = 0) {
158: $this->_offsetY = $pValue;
159: return $this;
160: }
161:
162: /**
163: * Get Width
164: *
165: * @return int
166: */
167: public function getWidth() {
168: return $this->_width;
169: }
170:
171: /**
172: * Set Width
173: *
174: * @param int $pValue
175: * @return PHPExcel_Worksheet_HeaderFooterDrawing
176: */
177: public function setWidth($pValue = 0) {
178: // Resize proportional?
179: if ($this->_resizeProportional && $pValue != 0) {
180: $ratio = $this->_width / $this->_height;
181: $this->_height = round($ratio * $pValue);
182: }
183:
184: // Set width
185: $this->_width = $pValue;
186:
187: return $this;
188: }
189:
190: /**
191: * Get Height
192: *
193: * @return int
194: */
195: public function getHeight() {
196: return $this->_height;
197: }
198:
199: /**
200: * Set Height
201: *
202: * @param int $pValue
203: * @return PHPExcel_Worksheet_HeaderFooterDrawing
204: */
205: public function setHeight($pValue = 0) {
206: // Resize proportional?
207: if ($this->_resizeProportional && $pValue != 0) {
208: $ratio = $this->_width / $this->_height;
209: $this->_width = round($ratio * $pValue);
210: }
211:
212: // Set height
213: $this->_height = $pValue;
214:
215: return $this;
216: }
217:
218: /**
219: * Set width and height with proportional resize
220: * Example:
221: * <code>
222: * $objDrawing->setResizeProportional(true);
223: * $objDrawing->setWidthAndHeight(160,120);
224: * </code>
225: *
226: * @author Vincent@luo MSN:kele_100@hotmail.com
227: * @param int $width
228: * @param int $height
229: * @return PHPExcel_Worksheet_HeaderFooterDrawing
230: */
231: public function setWidthAndHeight($width = 0, $height = 0) {
232: $xratio = $width / $this->_width;
233: $yratio = $height / $this->_height;
234: if ($this->_resizeProportional && !($width == 0 || $height == 0)) {
235: if (($xratio * $this->_height) < $height) {
236: $this->_height = ceil($xratio * $this->_height);
237: $this->_width = $width;
238: } else {
239: $this->_width = ceil($yratio * $this->_width);
240: $this->_height = $height;
241: }
242: }
243: return $this;
244: }
245:
246: /**
247: * Get ResizeProportional
248: *
249: * @return boolean
250: */
251: public function getResizeProportional() {
252: return $this->_resizeProportional;
253: }
254:
255: /**
256: * Set ResizeProportional
257: *
258: * @param boolean $pValue
259: * @return PHPExcel_Worksheet_HeaderFooterDrawing
260: */
261: public function setResizeProportional($pValue = true) {
262: $this->_resizeProportional = $pValue;
263: return $this;
264: }
265:
266: /**
267: * Get Filename
268: *
269: * @return string
270: */
271: public function getFilename() {
272: return basename($this->_path);
273: }
274:
275: /**
276: * Get Extension
277: *
278: * @return string
279: */
280: public function getExtension() {
281: $parts = explode(".", basename($this->_path));
282: return end($parts);
283: }
284:
285: /**
286: * Get Path
287: *
288: * @return string
289: */
290: public function getPath() {
291: return $this->_path;
292: }
293:
294: /**
295: * Set Path
296: *
297: * @param string $pValue File path
298: * @param boolean $pVerifyFile Verify file
299: * @throws PHPExcel_Exception
300: * @return PHPExcel_Worksheet_HeaderFooterDrawing
301: */
302: public function setPath($pValue = '', $pVerifyFile = true) {
303: if ($pVerifyFile) {
304: if (file_exists($pValue)) {
305: $this->_path = $pValue;
306:
307: if ($this->_width == 0 && $this->_height == 0) {
308: // Get width/height
309: list($this->_width, $this->_height) = getimagesize($pValue);
310: }
311: } else {
312: throw new PHPExcel_Exception("File $pValue not found!");
313: }
314: } else {
315: $this->_path = $pValue;
316: }
317: return $this;
318: }
319:
320: /**
321: * Get hash code
322: *
323: * @return string Hash code
324: */
325: public function getHashCode() {
326: return md5(
327: $this->_path
328: . $this->_name
329: . $this->_offsetX
330: . $this->_offsetY
331: . $this->_width
332: . $this->_height
333: . __CLASS__
334: );
335: }
336:
337: /**
338: * Implement PHP __clone to create a deep clone, not just a shallow copy.
339: */
340: public function __clone() {
341: $vars = get_object_vars($this);
342: foreach ($vars as $key => $value) {
343: if (is_object($value)) {
344: $this->$key = clone $value;
345: } else {
346: $this->$key = $value;
347: }
348: }
349: }
350: }
351: