Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
}