PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.8
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.8
4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 3.10.4 All 148 releases
visualizer / vendor / phpoffice / phpspreadsheet / src / PhpSpreadsheet / Style / Alignment.php

Alignment.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.4.8, at vendor/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Style/Alignment.php

467 lines 11.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace PhpOffice\PhpSpreadsheet\Style;
4
5 use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException;
6
7 class Alignment extends Supervisor
8 {
9 // Horizontal alignment styles
10 const HORIZONTAL_GENERAL = 'general';
11 const HORIZONTAL_LEFT = 'left';
12 const HORIZONTAL_RIGHT = 'right';
13 const HORIZONTAL_CENTER = 'center';
14 const HORIZONTAL_CENTER_CONTINUOUS = 'centerContinuous';
15 const HORIZONTAL_JUSTIFY = 'justify';
16 const HORIZONTAL_FILL = 'fill';
17 const HORIZONTAL_DISTRIBUTED = 'distributed'; // Excel2007 only
18
19 // Vertical alignment styles
20 const VERTICAL_BOTTOM = 'bottom';
21 const VERTICAL_TOP = 'top';
22 const VERTICAL_CENTER = 'center';
23 const VERTICAL_JUSTIFY = 'justify';
24 const VERTICAL_DISTRIBUTED = 'distributed'; // Excel2007 only
25
26 // Read order
27 const READORDER_CONTEXT = 0;
28 const READORDER_LTR = 1;
29 const READORDER_RTL = 2;
30
31 /**
32 * Horizontal alignment.
33 *
34 * @var string
35 */
36 protected $horizontal = self::HORIZONTAL_GENERAL;
37
38 /**
39 * Vertical alignment.
40 *
41 * @var string
42 */
43 protected $vertical = self::VERTICAL_BOTTOM;
44
45 /**
46 * Text rotation.
47 *
48 * @var int
49 */
50 protected $textRotation = 0;
51
52 /**
53 * Wrap text.
54 *
55 * @var bool
56 */
57 protected $wrapText = false;
58
59 /**
60 * Shrink to fit.
61 *
62 * @var bool
63 */
64 protected $shrinkToFit = false;
65
66 /**
67 * Indent - only possible with horizontal alignment left and right.
68 *
69 * @var int
70 */
71 protected $indent = 0;
72
73 /**
74 * Read order.
75 *
76 * @var int
77 */
78 protected $readOrder = 0;
79
80 /**
81 * Create a new Alignment.
82 *
83 * @param bool $isSupervisor Flag indicating if this is a supervisor or not
84 * Leave this value at default unless you understand exactly what
85 * its ramifications are
86 * @param bool $isConditional Flag indicating if this is a conditional style or not
87 * Leave this value at default unless you understand exactly what
88 * its ramifications are
89 */
90 public function __construct($isSupervisor = false, $isConditional = false)
91 {
92 // Supervisor?
93 parent::__construct($isSupervisor);
94
95 if ($isConditional) {
96 $this->horizontal = null;
97 $this->vertical = null;
98 $this->textRotation = null;
99 }
100 }
101
102 /**
103 * Get the shared style component for the currently active cell in currently active sheet.
104 * Only used for style supervisor.
105 *
106 * @return Alignment
107 */
108 public function getSharedComponent()
109 {
110 return $this->parent->getSharedComponent()->getAlignment();
111 }
112
113 /**
114 * Build style array from subcomponents.
115 *
116 * @param array $array
117 *
118 * @return array
119 */
120 public function getStyleArray($array)
121 {
122 return ['alignment' => $array];
123 }
124
125 /**
126 * Apply styles from array.
127 *
128 * <code>
129 * $spreadsheet->getActiveSheet()->getStyle('B2')->getAlignment()->applyFromArray(
130 * [
131 * 'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
132 * 'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER,
133 * 'textRotation' => 0,
134 * 'wrapText' => TRUE
135 * ]
136 * );
137 * </code>
138 *
139 * @param array $pStyles Array containing style information
140 *
141 * @throws PhpSpreadsheetException
142 *
143 * @return Alignment
144 */
145 public function applyFromArray(array $pStyles)
146 {
147 if ($this->isSupervisor) {
148 $this->getActiveSheet()->getStyle($this->getSelectedCells())
149 ->applyFromArray($this->getStyleArray($pStyles));
150 } else {
151 if (isset($pStyles['horizontal'])) {
152 $this->setHorizontal($pStyles['horizontal']);
153 }
154 if (isset($pStyles['vertical'])) {
155 $this->setVertical($pStyles['vertical']);
156 }
157 if (isset($pStyles['textRotation'])) {
158 $this->setTextRotation($pStyles['textRotation']);
159 }
160 if (isset($pStyles['wrapText'])) {
161 $this->setWrapText($pStyles['wrapText']);
162 }
163 if (isset($pStyles['shrinkToFit'])) {
164 $this->setShrinkToFit($pStyles['shrinkToFit']);
165 }
166 if (isset($pStyles['indent'])) {
167 $this->setIndent($pStyles['indent']);
168 }
169 if (isset($pStyles['readOrder'])) {
170 $this->setReadOrder($pStyles['readOrder']);
171 }
172 }
173
174 return $this;
175 }
176
177 /**
178 * Get Horizontal.
179 *
180 * @return string
181 */
182 public function getHorizontal()
183 {
184 if ($this->isSupervisor) {
185 return $this->getSharedComponent()->getHorizontal();
186 }
187
188 return $this->horizontal;
189 }
190
191 /**
192 * Set Horizontal.
193 *
194 * @param string $pValue see self::HORIZONTAL_*
195 *
196 * @return Alignment
197 */
198 public function setHorizontal($pValue)
199 {
200 if ($pValue == '') {
201 $pValue = self::HORIZONTAL_GENERAL;
202 }
203
204 if ($this->isSupervisor) {
205 $styleArray = $this->getStyleArray(['horizontal' => $pValue]);
206 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
207 } else {
208 $this->horizontal = $pValue;
209 }
210
211 return $this;
212 }
213
214 /**
215 * Get Vertical.
216 *
217 * @return string
218 */
219 public function getVertical()
220 {
221 if ($this->isSupervisor) {
222 return $this->getSharedComponent()->getVertical();
223 }
224
225 return $this->vertical;
226 }
227
228 /**
229 * Set Vertical.
230 *
231 * @param string $pValue see self::VERTICAL_*
232 *
233 * @return Alignment
234 */
235 public function setVertical($pValue)
236 {
237 if ($pValue == '') {
238 $pValue = self::VERTICAL_BOTTOM;
239 }
240
241 if ($this->isSupervisor) {
242 $styleArray = $this->getStyleArray(['vertical' => $pValue]);
243 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
244 } else {
245 $this->vertical = $pValue;
246 }
247
248 return $this;
249 }
250
251 /**
252 * Get TextRotation.
253 *
254 * @return int
255 */
256 public function getTextRotation()
257 {
258 if ($this->isSupervisor) {
259 return $this->getSharedComponent()->getTextRotation();
260 }
261
262 return $this->textRotation;
263 }
264
265 /**
266 * Set TextRotation.
267 *
268 * @param int $pValue
269 *
270 * @throws PhpSpreadsheetException
271 *
272 * @return Alignment
273 */
274 public function setTextRotation($pValue)
275 {
276 // Excel2007 value 255 => PhpSpreadsheet value -165
277 if ($pValue == 255) {
278 $pValue = -165;
279 }
280
281 // Set rotation
282 if (($pValue >= -90 && $pValue <= 90) || $pValue == -165) {
283 if ($this->isSupervisor) {
284 $styleArray = $this->getStyleArray(['textRotation' => $pValue]);
285 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
286 } else {
287 $this->textRotation = $pValue;
288 }
289 } else {
290 throw new PhpSpreadsheetException('Text rotation should be a value between -90 and 90.');
291 }
292
293 return $this;
294 }
295
296 /**
297 * Get Wrap Text.
298 *
299 * @return bool
300 */
301 public function getWrapText()
302 {
303 if ($this->isSupervisor) {
304 return $this->getSharedComponent()->getWrapText();
305 }
306
307 return $this->wrapText;
308 }
309
310 /**
311 * Set Wrap Text.
312 *
313 * @param bool $pValue
314 *
315 * @return Alignment
316 */
317 public function setWrapText($pValue)
318 {
319 if ($pValue == '') {
320 $pValue = false;
321 }
322 if ($this->isSupervisor) {
323 $styleArray = $this->getStyleArray(['wrapText' => $pValue]);
324 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
325 } else {
326 $this->wrapText = $pValue;
327 }
328
329 return $this;
330 }
331
332 /**
333 * Get Shrink to fit.
334 *
335 * @return bool
336 */
337 public function getShrinkToFit()
338 {
339 if ($this->isSupervisor) {
340 return $this->getSharedComponent()->getShrinkToFit();
341 }
342
343 return $this->shrinkToFit;
344 }
345
346 /**
347 * Set Shrink to fit.
348 *
349 * @param bool $pValue
350 *
351 * @return Alignment
352 */
353 public function setShrinkToFit($pValue)
354 {
355 if ($pValue == '') {
356 $pValue = false;
357 }
358 if ($this->isSupervisor) {
359 $styleArray = $this->getStyleArray(['shrinkToFit' => $pValue]);
360 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
361 } else {
362 $this->shrinkToFit = $pValue;
363 }
364
365 return $this;
366 }
367
368 /**
369 * Get indent.
370 *
371 * @return int
372 */
373 public function getIndent()
374 {
375 if ($this->isSupervisor) {
376 return $this->getSharedComponent()->getIndent();
377 }
378
379 return $this->indent;
380 }
381
382 /**
383 * Set indent.
384 *
385 * @param int $pValue
386 *
387 * @return Alignment
388 */
389 public function setIndent($pValue)
390 {
391 if ($pValue > 0) {
392 if ($this->getHorizontal() != self::HORIZONTAL_GENERAL &&
393 $this->getHorizontal() != self::HORIZONTAL_LEFT &&
394 $this->getHorizontal() != self::HORIZONTAL_RIGHT) {
395 $pValue = 0; // indent not supported
396 }
397 }
398 if ($this->isSupervisor) {
399 $styleArray = $this->getStyleArray(['indent' => $pValue]);
400 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
401 } else {
402 $this->indent = $pValue;
403 }
404
405 return $this;
406 }
407
408 /**
409 * Get read order.
410 *
411 * @return int
412 */
413 public function getReadOrder()
414 {
415 if ($this->isSupervisor) {
416 return $this->getSharedComponent()->getReadOrder();
417 }
418
419 return $this->readOrder;
420 }
421
422 /**
423 * Set read order.
424 *
425 * @param int $pValue
426 *
427 * @return Alignment
428 */
429 public function setReadOrder($pValue)
430 {
431 if ($pValue < 0 || $pValue > 2) {
432 $pValue = 0;
433 }
434 if ($this->isSupervisor) {
435 $styleArray = $this->getStyleArray(['readOrder' => $pValue]);
436 $this->getActiveSheet()->getStyle($this->getSelectedCells())->applyFromArray($styleArray);
437 } else {
438 $this->readOrder = $pValue;
439 }
440
441 return $this;
442 }
443
444 /**
445 * Get hash code.
446 *
447 * @return string Hash code
448 */
449 public function getHashCode()
450 {
451 if ($this->isSupervisor) {
452 return $this->getSharedComponent()->getHashCode();
453 }
454
455 return md5(
456 $this->horizontal .
457 $this->vertical .
458 $this->textRotation .
459 ($this->wrapText ? 't' : 'f') .
460 ($this->shrinkToFit ? 't' : 'f') .
461 $this->indent .
462 $this->readOrder .
463 __CLASS__
464 );
465 }
466 }
467