source: sourcecode/application/libraries/PHPExcel/Worksheet/HeaderFooterDrawing.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 7.2 KB
Line 
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 */
36class 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}
Note: See TracBrowser for help on using the repository browser.