1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
27:
28:
29: 30: 31: 32: 33: 34: 35:
36: class PHPExcel_Style_Fill extends PHPExcel_Style_Supervisor implements PHPExcel_IComparable
37: {
38:
39: const FILL_NONE = 'none';
40: const FILL_SOLID = 'solid';
41: const FILL_GRADIENT_LINEAR = 'linear';
42: const FILL_GRADIENT_PATH = 'path';
43: const FILL_PATTERN_DARKDOWN = 'darkDown';
44: const FILL_PATTERN_DARKGRAY = 'darkGray';
45: const FILL_PATTERN_DARKGRID = 'darkGrid';
46: const FILL_PATTERN_DARKHORIZONTAL = 'darkHorizontal';
47: const FILL_PATTERN_DARKTRELLIS = 'darkTrellis';
48: const FILL_PATTERN_DARKUP = 'darkUp';
49: const FILL_PATTERN_DARKVERTICAL = 'darkVertical';
50: const FILL_PATTERN_GRAY0625 = 'gray0625';
51: const FILL_PATTERN_GRAY125 = 'gray125';
52: const FILL_PATTERN_LIGHTDOWN = 'lightDown';
53: const FILL_PATTERN_LIGHTGRAY = 'lightGray';
54: const FILL_PATTERN_LIGHTGRID = 'lightGrid';
55: const FILL_PATTERN_LIGHTHORIZONTAL = 'lightHorizontal';
56: const FILL_PATTERN_LIGHTTRELLIS = 'lightTrellis';
57: const FILL_PATTERN_LIGHTUP = 'lightUp';
58: const FILL_PATTERN_LIGHTVERTICAL = 'lightVertical';
59: const FILL_PATTERN_MEDIUMGRAY = 'mediumGray';
60:
61: 62: 63: 64: 65:
66: protected $_fillType = PHPExcel_Style_Fill::FILL_NONE;
67:
68: 69: 70: 71: 72:
73: protected $_rotation = 0;
74:
75: 76: 77: 78: 79:
80: protected $_startColor;
81:
82: 83: 84: 85: 86:
87: protected $_endColor;
88:
89: 90: 91: 92: 93: 94: 95: 96: 97: 98:
99: public function __construct($isSupervisor = FALSE, $isConditional = FALSE)
100: {
101:
102: parent::__construct($isSupervisor);
103:
104:
105: if ($isConditional) {
106: $this->_fillType = NULL;
107: }
108: $this->_startColor = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_WHITE, $isSupervisor, $isConditional);
109: $this->_endColor = new PHPExcel_Style_Color(PHPExcel_Style_Color::COLOR_BLACK, $isSupervisor, $isConditional);
110:
111:
112: if ($isSupervisor) {
113: $this->_startColor->bindParent($this, '_startColor');
114: $this->_endColor->bindParent($this, '_endColor');
115: }
116: }
117:
118: 119: 120: 121: 122: 123:
124: public function getSharedComponent()
125: {
126: return $this->_parent->getSharedComponent()->getFill();
127: }
128:
129: 130: 131: 132: 133: 134:
135: public function getStyleArray($array)
136: {
137: return array('fill' => $array);
138: }
139:
140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161:
162: public function applyFromArray($pStyles = null) {
163: if (is_array($pStyles)) {
164: if ($this->_isSupervisor) {
165: $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($this->getStyleArray($pStyles));
166: } else {
167: if (array_key_exists('type', $pStyles)) {
168: $this->setFillType($pStyles['type']);
169: }
170: if (array_key_exists('rotation', $pStyles)) {
171: $this->setRotation($pStyles['rotation']);
172: }
173: if (array_key_exists('startcolor', $pStyles)) {
174: $this->getStartColor()->applyFromArray($pStyles['startcolor']);
175: }
176: if (array_key_exists('endcolor', $pStyles)) {
177: $this->getEndColor()->applyFromArray($pStyles['endcolor']);
178: }
179: if (array_key_exists('color', $pStyles)) {
180: $this->getStartColor()->applyFromArray($pStyles['color']);
181: }
182: }
183: } else {
184: throw new PHPExcel_Exception("Invalid style array passed.");
185: }
186: return $this;
187: }
188:
189: 190: 191: 192: 193:
194: public function getFillType() {
195: if ($this->_isSupervisor) {
196: return $this->getSharedComponent()->getFillType();
197: }
198: return $this->_fillType;
199: }
200:
201: 202: 203: 204: 205: 206:
207: public function setFillType($pValue = PHPExcel_Style_Fill::FILL_NONE) {
208: if ($this->_isSupervisor) {
209: $styleArray = $this->getStyleArray(array('type' => $pValue));
210: $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
211: } else {
212: $this->_fillType = $pValue;
213: }
214: return $this;
215: }
216:
217: 218: 219: 220: 221:
222: public function getRotation() {
223: if ($this->_isSupervisor) {
224: return $this->getSharedComponent()->getRotation();
225: }
226: return $this->_rotation;
227: }
228:
229: 230: 231: 232: 233: 234:
235: public function setRotation($pValue = 0) {
236: if ($this->_isSupervisor) {
237: $styleArray = $this->getStyleArray(array('rotation' => $pValue));
238: $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
239: } else {
240: $this->_rotation = $pValue;
241: }
242: return $this;
243: }
244:
245: 246: 247: 248: 249:
250: public function getStartColor() {
251: return $this->_startColor;
252: }
253:
254: 255: 256: 257: 258: 259: 260:
261: public function setStartColor(PHPExcel_Style_Color $pValue = null) {
262:
263: $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue;
264:
265: if ($this->_isSupervisor) {
266: $styleArray = $this->getStartColor()->getStyleArray(array('argb' => $color->getARGB()));
267: $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
268: } else {
269: $this->_startColor = $color;
270: }
271: return $this;
272: }
273:
274: 275: 276: 277: 278:
279: public function getEndColor() {
280: return $this->_endColor;
281: }
282:
283: 284: 285: 286: 287: 288: 289:
290: public function setEndColor(PHPExcel_Style_Color $pValue = null) {
291:
292: $color = $pValue->getIsSupervisor() ? $pValue->getSharedComponent() : $pValue;
293:
294: if ($this->_isSupervisor) {
295: $styleArray = $this->getEndColor()->getStyleArray(array('argb' => $color->getARGB()));
296: $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
297: } else {
298: $this->_endColor = $color;
299: }
300: return $this;
301: }
302:
303: 304: 305: 306: 307:
308: public function getHashCode() {
309: if ($this->_isSupervisor) {
310: return $this->getSharedComponent()->getHashCode();
311: }
312: return md5(
313: $this->getFillType()
314: . $this->getRotation()
315: . $this->getStartColor()->getHashCode()
316: . $this->getEndColor()->getHashCode()
317: . __CLASS__
318: );
319: }
320:
321: }
322: