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_Drawing
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_Drawing_Shadow
31: *
32: * @category PHPExcel
33: * @package PHPExcel_Worksheet_Drawing
34: * @copyright Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35: */
36: class PHPExcel_Worksheet_Drawing_Shadow implements PHPExcel_IComparable
37: {
38: /* Shadow alignment */
39: const SHADOW_BOTTOM = 'b';
40: const SHADOW_BOTTOM_LEFT = 'bl';
41: const SHADOW_BOTTOM_RIGHT = 'br';
42: const SHADOW_CENTER = 'ctr';
43: const SHADOW_LEFT = 'l';
44: const SHADOW_TOP = 't';
45: const SHADOW_TOP_LEFT = 'tl';
46: const SHADOW_TOP_RIGHT = 'tr';
47:
48: /**
49: * Visible
50: *
51: * @var boolean
52: */
53: private $_visible;
54:
55: /**
56: * Blur radius
57: *
58: * Defaults to 6
59: *
60: * @var int
61: */
62: private $_blurRadius;
63:
64: /**
65: * Shadow distance
66: *
67: * Defaults to 2
68: *
69: * @var int
70: */
71: private $_distance;
72:
73: /**
74: * Shadow direction (in degrees)
75: *
76: * @var int
77: */
78: private $_direction;
79:
80: /**
81: * Shadow alignment
82: *
83: * @var int
84: */
85: private $_alignment;
86:
87: /**
88: * Color
89: *
90: * @var PHPExcel_Style_Color
91: */
92: private $_color;
93:
94: /**
95: * Alpha
96: *
97: * @var int
98: */
99: private $_alpha;
100:
101: /**
102: * Create a new PHPExcel_Worksheet_Drawing_Shadow
103: */
104: public function __construct()
105: {
106: // Initialise values
107: $this->_visible = false;
108: $this->_blurRadius = 6;
109: $this->_distance = 2;
110: $this->_direction = 0;
111: $this->_alignment = PHPExcel_Worksheet_Drawing_Shadow::SHADOW_BOTTOM_RIGHT;
112: $this->_color = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK);
113: $this->_alpha = 50;
114: }
115:
116: /**
117: * Get Visible
118: *
119: * @return boolean
120: */
121: public function getVisible() {
122: return $this->_visible;
123: }
124:
125: /**
126: * Set Visible
127: *
128: * @param boolean $pValue
129: * @return PHPExcel_Worksheet_Drawing_Shadow
130: */
131: public function setVisible($pValue = false) {
132: $this->_visible = $pValue;
133: return $this;
134: }
135:
136: /**
137: * Get Blur radius
138: *
139: * @return int
140: */
141: public function getBlurRadius() {
142: return $this->_blurRadius;
143: }
144:
145: /**
146: * Set Blur radius
147: *
148: * @param int $pValue
149: * @return PHPExcel_Worksheet_Drawing_Shadow
150: */
151: public function setBlurRadius($pValue = 6) {
152: $this->_blurRadius = $pValue;
153: return $this;
154: }
155:
156: /**
157: * Get Shadow distance
158: *
159: * @return int
160: */
161: public function getDistance() {
162: return $this->_distance;
163: }
164:
165: /**
166: * Set Shadow distance
167: *
168: * @param int $pValue
169: * @return PHPExcel_Worksheet_Drawing_Shadow
170: */
171: public function setDistance($pValue = 2) {
172: $this->_distance = $pValue;
173: return $this;
174: }
175:
176: /**
177: * Get Shadow direction (in degrees)
178: *
179: * @return int
180: */
181: public function getDirection() {
182: return $this->_direction;
183: }
184:
185: /**
186: * Set Shadow direction (in degrees)
187: *
188: * @param int $pValue
189: * @return PHPExcel_Worksheet_Drawing_Shadow
190: */
191: public function setDirection($pValue = 0) {
192: $this->_direction = $pValue;
193: return $this;
194: }
195:
196: /**
197: * Get Shadow alignment
198: *
199: * @return int
200: */
201: public function getAlignment() {
202: return $this->_alignment;
203: }
204:
205: /**
206: * Set Shadow alignment
207: *
208: * @param int $pValue
209: * @return PHPExcel_Worksheet_Drawing_Shadow
210: */
211: public function setAlignment($pValue = 0) {
212: $this->_alignment = $pValue;
213: return $this;
214: }
215:
216: /**
217: * Get Color
218: *
219: * @return PHPExcel_Style_Color
220: */
221: public function getColor() {
222: return $this->_color;
223: }
224:
225: /**
226: * Set Color
227: *
228: * @param PHPExcel_Style_Color $pValue
229: * @throws PHPExcel_Exception
230: * @return PHPExcel_Worksheet_Drawing_Shadow
231: */
232: public function setColor(PHPExcel_Style_Color $pValue = null) {
233: $this->_color = $pValue;
234: return $this;
235: }
236:
237: /**
238: * Get Alpha
239: *
240: * @return int
241: */
242: public function getAlpha() {
243: return $this->_alpha;
244: }
245:
246: /**
247: * Set Alpha
248: *
249: * @param int $pValue
250: * @return PHPExcel_Worksheet_Drawing_Shadow
251: */
252: public function setAlpha($pValue = 0) {
253: $this->_alpha = $pValue;
254: return $this;
255: }
256:
257: /**
258: * Get hash code
259: *
260: * @return string Hash code
261: */
262: public function getHashCode() {
263: return md5(
264: ($this->_visible ? 't' : 'f')
265: . $this->_blurRadius
266: . $this->_distance
267: . $this->_direction
268: . $this->_alignment
269: . $this->_color->getHashCode()
270: . $this->_alpha
271: . __CLASS__
272: );
273: }
274:
275: /**
276: * Implement PHP __clone to create a deep clone, not just a shallow copy.
277: */
278: public function __clone() {
279: $vars = get_object_vars($this);
280: foreach ($vars as $key => $value) {
281: if (is_object($value)) {
282: $this->$key = clone $value;
283: } else {
284: $this->$key = $value;
285: }
286: }
287: }
288: }
289: