PluginProbe
wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin / 6.5.1.7
wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin v6.5.1.7
6.5.1.7 6.5.1.6 6.5.1.5 6.5.1.4 6.5.1.3 6.5.1.2 6.5.1.1 6.5.0.9 6.5.0.8 6.5.0.7 6.5.0.6 trunk 3.4.2.40 3.4.2.41 3.4.2.42 3.4.2.43 3.4.2.44 3.4.2.45 3.4.2.46 3.4.2.47 3.4.2.48 3.4.2.49 3.4.2.50 6.3.2 6.3.3.1 All 47 releases
wpdatatables / lib / phpoffice / phpspreadsheet / src / PhpSpreadsheet / Writer / Xlsx / Theme.php

Theme.php in wpDataTables – WordPress Data Table, Dynamic Tables & Table Charts Plugin 6.5.1.7, at lib/phpoffice/phpspreadsheet/src/PhpSpreadsheet/Writer/Xlsx/Theme.php

745 lines 21.2 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\Writer\Xlsx;
4
5 use PhpOffice\PhpSpreadsheet\Reader\Xlsx\Namespaces;
6 use PhpOffice\PhpSpreadsheet\Shared\XMLWriter;
7 use PhpOffice\PhpSpreadsheet\Spreadsheet;
8 use PhpOffice\PhpSpreadsheet\Theme as SpreadsheetTheme;
9
10 class Theme extends WriterPart
11 {
12 /**
13 * Write theme to XML format.
14 *
15 * @return string XML Output
16 */
17 public function writeTheme(Spreadsheet $spreadsheet)
18 {
19 // Create XML writer
20 $objWriter = null;
21 if ($this->getParentWriter()->getUseDiskCaching()) {
22 $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
23 } else {
24 $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY);
25 }
26 $theme = $spreadsheet->getTheme();
27
28 // XML header
29 $objWriter->startDocument('1.0', 'UTF-8', 'yes');
30
31 // a:theme
32 $objWriter->startElement('a:theme');
33 $objWriter->writeAttribute('xmlns:a', Namespaces::DRAWINGML);
34 $objWriter->writeAttribute('name', 'Office Theme');
35
36 // a:themeElements
37 $objWriter->startElement('a:themeElements');
38
39 // a:clrScheme
40 $objWriter->startElement('a:clrScheme');
41 $objWriter->writeAttribute('name', $theme->getThemeColorName());
42
43 $this->writeColourScheme($objWriter, $theme);
44
45 $objWriter->endElement();
46
47 // a:fontScheme
48 $objWriter->startElement('a:fontScheme');
49 $objWriter->writeAttribute('name', $theme->getThemeFontName());
50
51 // a:majorFont
52 $objWriter->startElement('a:majorFont');
53 $this->writeFonts(
54 $objWriter,
55 $theme->getMajorFontLatin(),
56 $theme->getMajorFontEastAsian(),
57 $theme->getMajorFontComplexScript(),
58 $theme->getMajorFontSubstitutions()
59 );
60 $objWriter->endElement(); // a:majorFont
61
62 // a:minorFont
63 $objWriter->startElement('a:minorFont');
64 $this->writeFonts(
65 $objWriter,
66 $theme->getMinorFontLatin(),
67 $theme->getMinorFontEastAsian(),
68 $theme->getMinorFontComplexScript(),
69 $theme->getMinorFontSubstitutions()
70 );
71 $objWriter->endElement(); // a:minorFont
72
73 $objWriter->endElement(); // a:fontScheme
74
75 // a:fmtScheme
76 $objWriter->startElement('a:fmtScheme');
77 $objWriter->writeAttribute('name', 'Office');
78
79 // a:fillStyleLst
80 $objWriter->startElement('a:fillStyleLst');
81
82 // a:solidFill
83 $objWriter->startElement('a:solidFill');
84
85 // a:schemeClr
86 $objWriter->startElement('a:schemeClr');
87 $objWriter->writeAttribute('val', 'phClr');
88 $objWriter->endElement();
89
90 $objWriter->endElement();
91
92 // a:gradFill
93 $objWriter->startElement('a:gradFill');
94 $objWriter->writeAttribute('rotWithShape', '1');
95
96 // a:gsLst
97 $objWriter->startElement('a:gsLst');
98
99 // a:gs
100 $objWriter->startElement('a:gs');
101 $objWriter->writeAttribute('pos', '0');
102
103 // a:schemeClr
104 $objWriter->startElement('a:schemeClr');
105 $objWriter->writeAttribute('val', 'phClr');
106
107 // a:tint
108 $objWriter->startElement('a:tint');
109 $objWriter->writeAttribute('val', '50000');
110 $objWriter->endElement();
111
112 // a:satMod
113 $objWriter->startElement('a:satMod');
114 $objWriter->writeAttribute('val', '300000');
115 $objWriter->endElement();
116
117 $objWriter->endElement();
118
119 $objWriter->endElement();
120
121 // a:gs
122 $objWriter->startElement('a:gs');
123 $objWriter->writeAttribute('pos', '35000');
124
125 // a:schemeClr
126 $objWriter->startElement('a:schemeClr');
127 $objWriter->writeAttribute('val', 'phClr');
128
129 // a:tint
130 $objWriter->startElement('a:tint');
131 $objWriter->writeAttribute('val', '37000');
132 $objWriter->endElement();
133
134 // a:satMod
135 $objWriter->startElement('a:satMod');
136 $objWriter->writeAttribute('val', '300000');
137 $objWriter->endElement();
138
139 $objWriter->endElement();
140
141 $objWriter->endElement();
142
143 // a:gs
144 $objWriter->startElement('a:gs');
145 $objWriter->writeAttribute('pos', '100000');
146
147 // a:schemeClr
148 $objWriter->startElement('a:schemeClr');
149 $objWriter->writeAttribute('val', 'phClr');
150
151 // a:tint
152 $objWriter->startElement('a:tint');
153 $objWriter->writeAttribute('val', '15000');
154 $objWriter->endElement();
155
156 // a:satMod
157 $objWriter->startElement('a:satMod');
158 $objWriter->writeAttribute('val', '350000');
159 $objWriter->endElement();
160
161 $objWriter->endElement();
162
163 $objWriter->endElement();
164
165 $objWriter->endElement();
166
167 // a:lin
168 $objWriter->startElement('a:lin');
169 $objWriter->writeAttribute('ang', '16200000');
170 $objWriter->writeAttribute('scaled', '1');
171 $objWriter->endElement();
172
173 $objWriter->endElement();
174
175 // a:gradFill
176 $objWriter->startElement('a:gradFill');
177 $objWriter->writeAttribute('rotWithShape', '1');
178
179 // a:gsLst
180 $objWriter->startElement('a:gsLst');
181
182 // a:gs
183 $objWriter->startElement('a:gs');
184 $objWriter->writeAttribute('pos', '0');
185
186 // a:schemeClr
187 $objWriter->startElement('a:schemeClr');
188 $objWriter->writeAttribute('val', 'phClr');
189
190 // a:shade
191 $objWriter->startElement('a:shade');
192 $objWriter->writeAttribute('val', '51000');
193 $objWriter->endElement();
194
195 // a:satMod
196 $objWriter->startElement('a:satMod');
197 $objWriter->writeAttribute('val', '130000');
198 $objWriter->endElement();
199
200 $objWriter->endElement();
201
202 $objWriter->endElement();
203
204 // a:gs
205 $objWriter->startElement('a:gs');
206 $objWriter->writeAttribute('pos', '80000');
207
208 // a:schemeClr
209 $objWriter->startElement('a:schemeClr');
210 $objWriter->writeAttribute('val', 'phClr');
211
212 // a:shade
213 $objWriter->startElement('a:shade');
214 $objWriter->writeAttribute('val', '93000');
215 $objWriter->endElement();
216
217 // a:satMod
218 $objWriter->startElement('a:satMod');
219 $objWriter->writeAttribute('val', '130000');
220 $objWriter->endElement();
221
222 $objWriter->endElement();
223
224 $objWriter->endElement();
225
226 // a:gs
227 $objWriter->startElement('a:gs');
228 $objWriter->writeAttribute('pos', '100000');
229
230 // a:schemeClr
231 $objWriter->startElement('a:schemeClr');
232 $objWriter->writeAttribute('val', 'phClr');
233
234 // a:shade
235 $objWriter->startElement('a:shade');
236 $objWriter->writeAttribute('val', '94000');
237 $objWriter->endElement();
238
239 // a:satMod
240 $objWriter->startElement('a:satMod');
241 $objWriter->writeAttribute('val', '135000');
242 $objWriter->endElement();
243
244 $objWriter->endElement();
245
246 $objWriter->endElement();
247
248 $objWriter->endElement();
249
250 // a:lin
251 $objWriter->startElement('a:lin');
252 $objWriter->writeAttribute('ang', '16200000');
253 $objWriter->writeAttribute('scaled', '0');
254 $objWriter->endElement();
255
256 $objWriter->endElement();
257
258 $objWriter->endElement();
259
260 // a:lnStyleLst
261 $objWriter->startElement('a:lnStyleLst');
262
263 // a:ln
264 $objWriter->startElement('a:ln');
265 $objWriter->writeAttribute('w', '9525');
266 $objWriter->writeAttribute('cap', 'flat');
267 $objWriter->writeAttribute('cmpd', 'sng');
268 $objWriter->writeAttribute('algn', 'ctr');
269
270 // a:solidFill
271 $objWriter->startElement('a:solidFill');
272
273 // a:schemeClr
274 $objWriter->startElement('a:schemeClr');
275 $objWriter->writeAttribute('val', 'phClr');
276
277 // a:shade
278 $objWriter->startElement('a:shade');
279 $objWriter->writeAttribute('val', '95000');
280 $objWriter->endElement();
281
282 // a:satMod
283 $objWriter->startElement('a:satMod');
284 $objWriter->writeAttribute('val', '105000');
285 $objWriter->endElement();
286
287 $objWriter->endElement();
288
289 $objWriter->endElement();
290
291 // a:prstDash
292 $objWriter->startElement('a:prstDash');
293 $objWriter->writeAttribute('val', 'solid');
294 $objWriter->endElement();
295
296 $objWriter->endElement();
297
298 // a:ln
299 $objWriter->startElement('a:ln');
300 $objWriter->writeAttribute('w', '25400');
301 $objWriter->writeAttribute('cap', 'flat');
302 $objWriter->writeAttribute('cmpd', 'sng');
303 $objWriter->writeAttribute('algn', 'ctr');
304
305 // a:solidFill
306 $objWriter->startElement('a:solidFill');
307
308 // a:schemeClr
309 $objWriter->startElement('a:schemeClr');
310 $objWriter->writeAttribute('val', 'phClr');
311 $objWriter->endElement();
312
313 $objWriter->endElement();
314
315 // a:prstDash
316 $objWriter->startElement('a:prstDash');
317 $objWriter->writeAttribute('val', 'solid');
318 $objWriter->endElement();
319
320 $objWriter->endElement();
321
322 // a:ln
323 $objWriter->startElement('a:ln');
324 $objWriter->writeAttribute('w', '38100');
325 $objWriter->writeAttribute('cap', 'flat');
326 $objWriter->writeAttribute('cmpd', 'sng');
327 $objWriter->writeAttribute('algn', 'ctr');
328
329 // a:solidFill
330 $objWriter->startElement('a:solidFill');
331
332 // a:schemeClr
333 $objWriter->startElement('a:schemeClr');
334 $objWriter->writeAttribute('val', 'phClr');
335 $objWriter->endElement();
336
337 $objWriter->endElement();
338
339 // a:prstDash
340 $objWriter->startElement('a:prstDash');
341 $objWriter->writeAttribute('val', 'solid');
342 $objWriter->endElement();
343
344 $objWriter->endElement();
345
346 $objWriter->endElement();
347
348 // a:effectStyleLst
349 $objWriter->startElement('a:effectStyleLst');
350
351 // a:effectStyle
352 $objWriter->startElement('a:effectStyle');
353
354 // a:effectLst
355 $objWriter->startElement('a:effectLst');
356
357 // a:outerShdw
358 $objWriter->startElement('a:outerShdw');
359 $objWriter->writeAttribute('blurRad', '40000');
360 $objWriter->writeAttribute('dist', '20000');
361 $objWriter->writeAttribute('dir', '5400000');
362 $objWriter->writeAttribute('rotWithShape', '0');
363
364 // a:srgbClr
365 $objWriter->startElement('a:srgbClr');
366 $objWriter->writeAttribute('val', '000000');
367
368 // a:alpha
369 $objWriter->startElement('a:alpha');
370 $objWriter->writeAttribute('val', '38000');
371 $objWriter->endElement();
372
373 $objWriter->endElement();
374
375 $objWriter->endElement();
376
377 $objWriter->endElement();
378
379 $objWriter->endElement();
380
381 // a:effectStyle
382 $objWriter->startElement('a:effectStyle');
383
384 // a:effectLst
385 $objWriter->startElement('a:effectLst');
386
387 // a:outerShdw
388 $objWriter->startElement('a:outerShdw');
389 $objWriter->writeAttribute('blurRad', '40000');
390 $objWriter->writeAttribute('dist', '23000');
391 $objWriter->writeAttribute('dir', '5400000');
392 $objWriter->writeAttribute('rotWithShape', '0');
393
394 // a:srgbClr
395 $objWriter->startElement('a:srgbClr');
396 $objWriter->writeAttribute('val', '000000');
397
398 // a:alpha
399 $objWriter->startElement('a:alpha');
400 $objWriter->writeAttribute('val', '35000');
401 $objWriter->endElement();
402
403 $objWriter->endElement();
404
405 $objWriter->endElement();
406
407 $objWriter->endElement();
408
409 $objWriter->endElement();
410
411 // a:effectStyle
412 $objWriter->startElement('a:effectStyle');
413
414 // a:effectLst
415 $objWriter->startElement('a:effectLst');
416
417 // a:outerShdw
418 $objWriter->startElement('a:outerShdw');
419 $objWriter->writeAttribute('blurRad', '40000');
420 $objWriter->writeAttribute('dist', '23000');
421 $objWriter->writeAttribute('dir', '5400000');
422 $objWriter->writeAttribute('rotWithShape', '0');
423
424 // a:srgbClr
425 $objWriter->startElement('a:srgbClr');
426 $objWriter->writeAttribute('val', '000000');
427
428 // a:alpha
429 $objWriter->startElement('a:alpha');
430 $objWriter->writeAttribute('val', '35000');
431 $objWriter->endElement();
432
433 $objWriter->endElement();
434
435 $objWriter->endElement();
436
437 $objWriter->endElement();
438
439 // a:scene3d
440 $objWriter->startElement('a:scene3d');
441
442 // a:camera
443 $objWriter->startElement('a:camera');
444 $objWriter->writeAttribute('prst', 'orthographicFront');
445
446 // a:rot
447 $objWriter->startElement('a:rot');
448 $objWriter->writeAttribute('lat', '0');
449 $objWriter->writeAttribute('lon', '0');
450 $objWriter->writeAttribute('rev', '0');
451 $objWriter->endElement();
452
453 $objWriter->endElement();
454
455 // a:lightRig
456 $objWriter->startElement('a:lightRig');
457 $objWriter->writeAttribute('rig', 'threePt');
458 $objWriter->writeAttribute('dir', 't');
459
460 // a:rot
461 $objWriter->startElement('a:rot');
462 $objWriter->writeAttribute('lat', '0');
463 $objWriter->writeAttribute('lon', '0');
464 $objWriter->writeAttribute('rev', '1200000');
465 $objWriter->endElement();
466
467 $objWriter->endElement();
468
469 $objWriter->endElement();
470
471 // a:sp3d
472 $objWriter->startElement('a:sp3d');
473
474 // a:bevelT
475 $objWriter->startElement('a:bevelT');
476 $objWriter->writeAttribute('w', '63500');
477 $objWriter->writeAttribute('h', '25400');
478 $objWriter->endElement();
479
480 $objWriter->endElement();
481
482 $objWriter->endElement();
483
484 $objWriter->endElement();
485
486 // a:bgFillStyleLst
487 $objWriter->startElement('a:bgFillStyleLst');
488
489 // a:solidFill
490 $objWriter->startElement('a:solidFill');
491
492 // a:schemeClr
493 $objWriter->startElement('a:schemeClr');
494 $objWriter->writeAttribute('val', 'phClr');
495 $objWriter->endElement();
496
497 $objWriter->endElement();
498
499 // a:gradFill
500 $objWriter->startElement('a:gradFill');
501 $objWriter->writeAttribute('rotWithShape', '1');
502
503 // a:gsLst
504 $objWriter->startElement('a:gsLst');
505
506 // a:gs
507 $objWriter->startElement('a:gs');
508 $objWriter->writeAttribute('pos', '0');
509
510 // a:schemeClr
511 $objWriter->startElement('a:schemeClr');
512 $objWriter->writeAttribute('val', 'phClr');
513
514 // a:tint
515 $objWriter->startElement('a:tint');
516 $objWriter->writeAttribute('val', '40000');
517 $objWriter->endElement();
518
519 // a:satMod
520 $objWriter->startElement('a:satMod');
521 $objWriter->writeAttribute('val', '350000');
522 $objWriter->endElement();
523
524 $objWriter->endElement();
525
526 $objWriter->endElement();
527
528 // a:gs
529 $objWriter->startElement('a:gs');
530 $objWriter->writeAttribute('pos', '40000');
531
532 // a:schemeClr
533 $objWriter->startElement('a:schemeClr');
534 $objWriter->writeAttribute('val', 'phClr');
535
536 // a:tint
537 $objWriter->startElement('a:tint');
538 $objWriter->writeAttribute('val', '45000');
539 $objWriter->endElement();
540
541 // a:shade
542 $objWriter->startElement('a:shade');
543 $objWriter->writeAttribute('val', '99000');
544 $objWriter->endElement();
545
546 // a:satMod
547 $objWriter->startElement('a:satMod');
548 $objWriter->writeAttribute('val', '350000');
549 $objWriter->endElement();
550
551 $objWriter->endElement();
552
553 $objWriter->endElement();
554
555 // a:gs
556 $objWriter->startElement('a:gs');
557 $objWriter->writeAttribute('pos', '100000');
558
559 // a:schemeClr
560 $objWriter->startElement('a:schemeClr');
561 $objWriter->writeAttribute('val', 'phClr');
562
563 // a:shade
564 $objWriter->startElement('a:shade');
565 $objWriter->writeAttribute('val', '20000');
566 $objWriter->endElement();
567
568 // a:satMod
569 $objWriter->startElement('a:satMod');
570 $objWriter->writeAttribute('val', '255000');
571 $objWriter->endElement();
572
573 $objWriter->endElement();
574
575 $objWriter->endElement();
576
577 $objWriter->endElement();
578
579 // a:path
580 $objWriter->startElement('a:path');
581 $objWriter->writeAttribute('path', 'circle');
582
583 // a:fillToRect
584 $objWriter->startElement('a:fillToRect');
585 $objWriter->writeAttribute('l', '50000');
586 $objWriter->writeAttribute('t', '-80000');
587 $objWriter->writeAttribute('r', '50000');
588 $objWriter->writeAttribute('b', '180000');
589 $objWriter->endElement();
590
591 $objWriter->endElement();
592
593 $objWriter->endElement();
594
595 // a:gradFill
596 $objWriter->startElement('a:gradFill');
597 $objWriter->writeAttribute('rotWithShape', '1');
598
599 // a:gsLst
600 $objWriter->startElement('a:gsLst');
601
602 // a:gs
603 $objWriter->startElement('a:gs');
604 $objWriter->writeAttribute('pos', '0');
605
606 // a:schemeClr
607 $objWriter->startElement('a:schemeClr');
608 $objWriter->writeAttribute('val', 'phClr');
609
610 // a:tint
611 $objWriter->startElement('a:tint');
612 $objWriter->writeAttribute('val', '80000');
613 $objWriter->endElement();
614
615 // a:satMod
616 $objWriter->startElement('a:satMod');
617 $objWriter->writeAttribute('val', '300000');
618 $objWriter->endElement();
619
620 $objWriter->endElement();
621
622 $objWriter->endElement();
623
624 // a:gs
625 $objWriter->startElement('a:gs');
626 $objWriter->writeAttribute('pos', '100000');
627
628 // a:schemeClr
629 $objWriter->startElement('a:schemeClr');
630 $objWriter->writeAttribute('val', 'phClr');
631
632 // a:shade
633 $objWriter->startElement('a:shade');
634 $objWriter->writeAttribute('val', '30000');
635 $objWriter->endElement();
636
637 // a:satMod
638 $objWriter->startElement('a:satMod');
639 $objWriter->writeAttribute('val', '200000');
640 $objWriter->endElement();
641
642 $objWriter->endElement();
643
644 $objWriter->endElement();
645
646 $objWriter->endElement();
647
648 // a:path
649 $objWriter->startElement('a:path');
650 $objWriter->writeAttribute('path', 'circle');
651
652 // a:fillToRect
653 $objWriter->startElement('a:fillToRect');
654 $objWriter->writeAttribute('l', '50000');
655 $objWriter->writeAttribute('t', '50000');
656 $objWriter->writeAttribute('r', '50000');
657 $objWriter->writeAttribute('b', '50000');
658 $objWriter->endElement();
659
660 $objWriter->endElement();
661
662 $objWriter->endElement();
663
664 $objWriter->endElement();
665
666 $objWriter->endElement();
667
668 $objWriter->endElement();
669
670 // a:objectDefaults
671 $objWriter->writeElement('a:objectDefaults', null);
672
673 // a:extraClrSchemeLst
674 $objWriter->writeElement('a:extraClrSchemeLst', null);
675
676 $objWriter->endElement();
677
678 // Return
679 return $objWriter->getData();
680 }
681
682 /**
683 * Write fonts to XML format.
684 *
685 * @param string[] $fontSet
686 */
687 private function writeFonts(XMLWriter $objWriter, string $latinFont, string $eastAsianFont, string $complexScriptFont, array $fontSet): void
688 {
689 // a:latin
690 $objWriter->startElement('a:latin');
691 $objWriter->writeAttribute('typeface', $latinFont);
692 $objWriter->endElement();
693
694 // a:ea
695 $objWriter->startElement('a:ea');
696 $objWriter->writeAttribute('typeface', $eastAsianFont);
697 $objWriter->endElement();
698
699 // a:cs
700 $objWriter->startElement('a:cs');
701 $objWriter->writeAttribute('typeface', $complexScriptFont);
702 $objWriter->endElement();
703
704 foreach ($fontSet as $fontScript => $typeface) {
705 $objWriter->startElement('a:font');
706 $objWriter->writeAttribute('script', $fontScript);
707 $objWriter->writeAttribute('typeface', $typeface);
708 $objWriter->endElement();
709 }
710 }
711
712 /**
713 * Write colour scheme to XML format.
714 */
715 private function writeColourScheme(XMLWriter $objWriter, SpreadsheetTheme $theme): void
716 {
717 $themeArray = $theme->getThemeColors();
718 // a:dk1
719 $objWriter->startElement('a:dk1');
720 $objWriter->startElement('a:sysClr');
721 $objWriter->writeAttribute('val', 'windowText');
722 $objWriter->writeAttribute('lastClr', $themeArray['dk1'] ?? '000000');
723 $objWriter->endElement(); // a:sysClr
724 $objWriter->endElement(); // a:dk1
725
726 // a:lt1
727 $objWriter->startElement('a:lt1');
728 $objWriter->startElement('a:sysClr');
729 $objWriter->writeAttribute('val', 'window');
730 $objWriter->writeAttribute('lastClr', $themeArray['lt1'] ?? 'FFFFFF');
731 $objWriter->endElement(); // a:sysClr
732 $objWriter->endElement(); // a:lt1
733
734 foreach ($themeArray as $colourName => $colourValue) {
735 if ($colourName !== 'dk1' && $colourName !== 'lt1') {
736 $objWriter->startElement('a:' . $colourName);
737 $objWriter->startElement('a:srgbClr');
738 $objWriter->writeAttribute('val', $colourValue);
739 $objWriter->endElement(); // a:srgbClr
740 $objWriter->endElement(); // a:$colourName
741 }
742 }
743 }
744 }
745