Differences Between: [Versions 310 and 311] [Versions 311 and 400] [Versions 311 and 401] [Versions 311 and 402] [Versions 311 and 403] [Versions 39 and 311]
1 <?php 2 3 namespace PhpOffice\PhpSpreadsheet\Writer\Xlsx; 4 5 use PhpOffice\PhpSpreadsheet\Shared\XMLWriter; 6 use PhpOffice\PhpSpreadsheet\Spreadsheet; 7 8 class Theme extends WriterPart 9 { 10 /** 11 * Map of Major fonts to write. 12 * 13 * @var array of string 14 */ 15 private static $majorFonts = [ 16 'Jpan' => 'MS Pゴシック', 17 'Hang' => '맑은 고딕', 18 'Hans' => '宋体', 19 'Hant' => '新細明體', 20 'Arab' => 'Times New Roman', 21 'Hebr' => 'Times New Roman', 22 'Thai' => 'Tahoma', 23 'Ethi' => 'Nyala', 24 'Beng' => 'Vrinda', 25 'Gujr' => 'Shruti', 26 'Khmr' => 'MoolBoran', 27 'Knda' => 'Tunga', 28 'Guru' => 'Raavi', 29 'Cans' => 'Euphemia', 30 'Cher' => 'Plantagenet Cherokee', 31 'Yiii' => 'Microsoft Yi Baiti', 32 'Tibt' => 'Microsoft Himalaya', 33 'Thaa' => 'MV Boli', 34 'Deva' => 'Mangal', 35 'Telu' => 'Gautami', 36 'Taml' => 'Latha', 37 'Syrc' => 'Estrangelo Edessa', 38 'Orya' => 'Kalinga', 39 'Mlym' => 'Kartika', 40 'Laoo' => 'DokChampa', 41 'Sinh' => 'Iskoola Pota', 42 'Mong' => 'Mongolian Baiti', 43 'Viet' => 'Times New Roman', 44 'Uigh' => 'Microsoft Uighur', 45 'Geor' => 'Sylfaen', 46 ]; 47 48 /** 49 * Map of Minor fonts to write. 50 * 51 * @var array of string 52 */ 53 private static $minorFonts = [ 54 'Jpan' => 'MS Pゴシック', 55 'Hang' => '맑은 고딕', 56 'Hans' => '宋体', 57 'Hant' => '新細明體', 58 'Arab' => 'Arial', 59 'Hebr' => 'Arial', 60 'Thai' => 'Tahoma', 61 'Ethi' => 'Nyala', 62 'Beng' => 'Vrinda', 63 'Gujr' => 'Shruti', 64 'Khmr' => 'DaunPenh', 65 'Knda' => 'Tunga', 66 'Guru' => 'Raavi', 67 'Cans' => 'Euphemia', 68 'Cher' => 'Plantagenet Cherokee', 69 'Yiii' => 'Microsoft Yi Baiti', 70 'Tibt' => 'Microsoft Himalaya', 71 'Thaa' => 'MV Boli', 72 'Deva' => 'Mangal', 73 'Telu' => 'Gautami', 74 'Taml' => 'Latha', 75 'Syrc' => 'Estrangelo Edessa', 76 'Orya' => 'Kalinga', 77 'Mlym' => 'Kartika', 78 'Laoo' => 'DokChampa', 79 'Sinh' => 'Iskoola Pota', 80 'Mong' => 'Mongolian Baiti', 81 'Viet' => 'Arial', 82 'Uigh' => 'Microsoft Uighur', 83 'Geor' => 'Sylfaen', 84 ]; 85 86 /** 87 * Map of core colours. 88 * 89 * @var array of string 90 */ 91 private static $colourScheme = [ 92 'dk2' => '1F497D', 93 'lt2' => 'EEECE1', 94 'accent1' => '4F81BD', 95 'accent2' => 'C0504D', 96 'accent3' => '9BBB59', 97 'accent4' => '8064A2', 98 'accent5' => '4BACC6', 99 'accent6' => 'F79646', 100 'hlink' => '0000FF', 101 'folHlink' => '800080', 102 ]; 103 104 /** 105 * Write theme to XML format. 106 * 107 * @return string XML Output 108 */ 109 public function writeTheme(Spreadsheet $spreadsheet) 110 { 111 // Create XML writer 112 $objWriter = null; 113 if ($this->getParentWriter()->getUseDiskCaching()) { 114 $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); 115 } else { 116 $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY); 117 } 118 119 // XML header 120 $objWriter->startDocument('1.0', 'UTF-8', 'yes'); 121 122 // a:theme 123 $objWriter->startElement('a:theme'); 124 $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); 125 $objWriter->writeAttribute('name', 'Office Theme'); 126 127 // a:themeElements 128 $objWriter->startElement('a:themeElements'); 129 130 // a:clrScheme 131 $objWriter->startElement('a:clrScheme'); 132 $objWriter->writeAttribute('name', 'Office'); 133 134 // a:dk1 135 $objWriter->startElement('a:dk1'); 136 137 // a:sysClr 138 $objWriter->startElement('a:sysClr'); 139 $objWriter->writeAttribute('val', 'windowText'); 140 $objWriter->writeAttribute('lastClr', '000000'); 141 $objWriter->endElement(); 142 143 $objWriter->endElement(); 144 145 // a:lt1 146 $objWriter->startElement('a:lt1'); 147 148 // a:sysClr 149 $objWriter->startElement('a:sysClr'); 150 $objWriter->writeAttribute('val', 'window'); 151 $objWriter->writeAttribute('lastClr', 'FFFFFF'); 152 $objWriter->endElement(); 153 154 $objWriter->endElement(); 155 156 // a:dk2 157 $this->writeColourScheme($objWriter); 158 159 $objWriter->endElement(); 160 161 // a:fontScheme 162 $objWriter->startElement('a:fontScheme'); 163 $objWriter->writeAttribute('name', 'Office'); 164 165 // a:majorFont 166 $objWriter->startElement('a:majorFont'); 167 $this->writeFonts($objWriter, 'Cambria', self::$majorFonts); 168 $objWriter->endElement(); 169 170 // a:minorFont 171 $objWriter->startElement('a:minorFont'); 172 $this->writeFonts($objWriter, 'Calibri', self::$minorFonts); 173 $objWriter->endElement(); 174 175 $objWriter->endElement(); 176 177 // a:fmtScheme 178 $objWriter->startElement('a:fmtScheme'); 179 $objWriter->writeAttribute('name', 'Office'); 180 181 // a:fillStyleLst 182 $objWriter->startElement('a:fillStyleLst'); 183 184 // a:solidFill 185 $objWriter->startElement('a:solidFill'); 186 187 // a:schemeClr 188 $objWriter->startElement('a:schemeClr'); 189 $objWriter->writeAttribute('val', 'phClr'); 190 $objWriter->endElement(); 191 192 $objWriter->endElement(); 193 194 // a:gradFill 195 $objWriter->startElement('a:gradFill'); 196 $objWriter->writeAttribute('rotWithShape', '1'); 197 198 // a:gsLst 199 $objWriter->startElement('a:gsLst'); 200 201 // a:gs 202 $objWriter->startElement('a:gs'); 203 $objWriter->writeAttribute('pos', '0'); 204 205 // a:schemeClr 206 $objWriter->startElement('a:schemeClr'); 207 $objWriter->writeAttribute('val', 'phClr'); 208 209 // a:tint 210 $objWriter->startElement('a:tint'); 211 $objWriter->writeAttribute('val', '50000'); 212 $objWriter->endElement(); 213 214 // a:satMod 215 $objWriter->startElement('a:satMod'); 216 $objWriter->writeAttribute('val', '300000'); 217 $objWriter->endElement(); 218 219 $objWriter->endElement(); 220 221 $objWriter->endElement(); 222 223 // a:gs 224 $objWriter->startElement('a:gs'); 225 $objWriter->writeAttribute('pos', '35000'); 226 227 // a:schemeClr 228 $objWriter->startElement('a:schemeClr'); 229 $objWriter->writeAttribute('val', 'phClr'); 230 231 // a:tint 232 $objWriter->startElement('a:tint'); 233 $objWriter->writeAttribute('val', '37000'); 234 $objWriter->endElement(); 235 236 // a:satMod 237 $objWriter->startElement('a:satMod'); 238 $objWriter->writeAttribute('val', '300000'); 239 $objWriter->endElement(); 240 241 $objWriter->endElement(); 242 243 $objWriter->endElement(); 244 245 // a:gs 246 $objWriter->startElement('a:gs'); 247 $objWriter->writeAttribute('pos', '100000'); 248 249 // a:schemeClr 250 $objWriter->startElement('a:schemeClr'); 251 $objWriter->writeAttribute('val', 'phClr'); 252 253 // a:tint 254 $objWriter->startElement('a:tint'); 255 $objWriter->writeAttribute('val', '15000'); 256 $objWriter->endElement(); 257 258 // a:satMod 259 $objWriter->startElement('a:satMod'); 260 $objWriter->writeAttribute('val', '350000'); 261 $objWriter->endElement(); 262 263 $objWriter->endElement(); 264 265 $objWriter->endElement(); 266 267 $objWriter->endElement(); 268 269 // a:lin 270 $objWriter->startElement('a:lin'); 271 $objWriter->writeAttribute('ang', '16200000'); 272 $objWriter->writeAttribute('scaled', '1'); 273 $objWriter->endElement(); 274 275 $objWriter->endElement(); 276 277 // a:gradFill 278 $objWriter->startElement('a:gradFill'); 279 $objWriter->writeAttribute('rotWithShape', '1'); 280 281 // a:gsLst 282 $objWriter->startElement('a:gsLst'); 283 284 // a:gs 285 $objWriter->startElement('a:gs'); 286 $objWriter->writeAttribute('pos', '0'); 287 288 // a:schemeClr 289 $objWriter->startElement('a:schemeClr'); 290 $objWriter->writeAttribute('val', 'phClr'); 291 292 // a:shade 293 $objWriter->startElement('a:shade'); 294 $objWriter->writeAttribute('val', '51000'); 295 $objWriter->endElement(); 296 297 // a:satMod 298 $objWriter->startElement('a:satMod'); 299 $objWriter->writeAttribute('val', '130000'); 300 $objWriter->endElement(); 301 302 $objWriter->endElement(); 303 304 $objWriter->endElement(); 305 306 // a:gs 307 $objWriter->startElement('a:gs'); 308 $objWriter->writeAttribute('pos', '80000'); 309 310 // a:schemeClr 311 $objWriter->startElement('a:schemeClr'); 312 $objWriter->writeAttribute('val', 'phClr'); 313 314 // a:shade 315 $objWriter->startElement('a:shade'); 316 $objWriter->writeAttribute('val', '93000'); 317 $objWriter->endElement(); 318 319 // a:satMod 320 $objWriter->startElement('a:satMod'); 321 $objWriter->writeAttribute('val', '130000'); 322 $objWriter->endElement(); 323 324 $objWriter->endElement(); 325 326 $objWriter->endElement(); 327 328 // a:gs 329 $objWriter->startElement('a:gs'); 330 $objWriter->writeAttribute('pos', '100000'); 331 332 // a:schemeClr 333 $objWriter->startElement('a:schemeClr'); 334 $objWriter->writeAttribute('val', 'phClr'); 335 336 // a:shade 337 $objWriter->startElement('a:shade'); 338 $objWriter->writeAttribute('val', '94000'); 339 $objWriter->endElement(); 340 341 // a:satMod 342 $objWriter->startElement('a:satMod'); 343 $objWriter->writeAttribute('val', '135000'); 344 $objWriter->endElement(); 345 346 $objWriter->endElement(); 347 348 $objWriter->endElement(); 349 350 $objWriter->endElement(); 351 352 // a:lin 353 $objWriter->startElement('a:lin'); 354 $objWriter->writeAttribute('ang', '16200000'); 355 $objWriter->writeAttribute('scaled', '0'); 356 $objWriter->endElement(); 357 358 $objWriter->endElement(); 359 360 $objWriter->endElement(); 361 362 // a:lnStyleLst 363 $objWriter->startElement('a:lnStyleLst'); 364 365 // a:ln 366 $objWriter->startElement('a:ln'); 367 $objWriter->writeAttribute('w', '9525'); 368 $objWriter->writeAttribute('cap', 'flat'); 369 $objWriter->writeAttribute('cmpd', 'sng'); 370 $objWriter->writeAttribute('algn', 'ctr'); 371 372 // a:solidFill 373 $objWriter->startElement('a:solidFill'); 374 375 // a:schemeClr 376 $objWriter->startElement('a:schemeClr'); 377 $objWriter->writeAttribute('val', 'phClr'); 378 379 // a:shade 380 $objWriter->startElement('a:shade'); 381 $objWriter->writeAttribute('val', '95000'); 382 $objWriter->endElement(); 383 384 // a:satMod 385 $objWriter->startElement('a:satMod'); 386 $objWriter->writeAttribute('val', '105000'); 387 $objWriter->endElement(); 388 389 $objWriter->endElement(); 390 391 $objWriter->endElement(); 392 393 // a:prstDash 394 $objWriter->startElement('a:prstDash'); 395 $objWriter->writeAttribute('val', 'solid'); 396 $objWriter->endElement(); 397 398 $objWriter->endElement(); 399 400 // a:ln 401 $objWriter->startElement('a:ln'); 402 $objWriter->writeAttribute('w', '25400'); 403 $objWriter->writeAttribute('cap', 'flat'); 404 $objWriter->writeAttribute('cmpd', 'sng'); 405 $objWriter->writeAttribute('algn', 'ctr'); 406 407 // a:solidFill 408 $objWriter->startElement('a:solidFill'); 409 410 // a:schemeClr 411 $objWriter->startElement('a:schemeClr'); 412 $objWriter->writeAttribute('val', 'phClr'); 413 $objWriter->endElement(); 414 415 $objWriter->endElement(); 416 417 // a:prstDash 418 $objWriter->startElement('a:prstDash'); 419 $objWriter->writeAttribute('val', 'solid'); 420 $objWriter->endElement(); 421 422 $objWriter->endElement(); 423 424 // a:ln 425 $objWriter->startElement('a:ln'); 426 $objWriter->writeAttribute('w', '38100'); 427 $objWriter->writeAttribute('cap', 'flat'); 428 $objWriter->writeAttribute('cmpd', 'sng'); 429 $objWriter->writeAttribute('algn', 'ctr'); 430 431 // a:solidFill 432 $objWriter->startElement('a:solidFill'); 433 434 // a:schemeClr 435 $objWriter->startElement('a:schemeClr'); 436 $objWriter->writeAttribute('val', 'phClr'); 437 $objWriter->endElement(); 438 439 $objWriter->endElement(); 440 441 // a:prstDash 442 $objWriter->startElement('a:prstDash'); 443 $objWriter->writeAttribute('val', 'solid'); 444 $objWriter->endElement(); 445 446 $objWriter->endElement(); 447 448 $objWriter->endElement(); 449 450 // a:effectStyleLst 451 $objWriter->startElement('a:effectStyleLst'); 452 453 // a:effectStyle 454 $objWriter->startElement('a:effectStyle'); 455 456 // a:effectLst 457 $objWriter->startElement('a:effectLst'); 458 459 // a:outerShdw 460 $objWriter->startElement('a:outerShdw'); 461 $objWriter->writeAttribute('blurRad', '40000'); 462 $objWriter->writeAttribute('dist', '20000'); 463 $objWriter->writeAttribute('dir', '5400000'); 464 $objWriter->writeAttribute('rotWithShape', '0'); 465 466 // a:srgbClr 467 $objWriter->startElement('a:srgbClr'); 468 $objWriter->writeAttribute('val', '000000'); 469 470 // a:alpha 471 $objWriter->startElement('a:alpha'); 472 $objWriter->writeAttribute('val', '38000'); 473 $objWriter->endElement(); 474 475 $objWriter->endElement(); 476 477 $objWriter->endElement(); 478 479 $objWriter->endElement(); 480 481 $objWriter->endElement(); 482 483 // a:effectStyle 484 $objWriter->startElement('a:effectStyle'); 485 486 // a:effectLst 487 $objWriter->startElement('a:effectLst'); 488 489 // a:outerShdw 490 $objWriter->startElement('a:outerShdw'); 491 $objWriter->writeAttribute('blurRad', '40000'); 492 $objWriter->writeAttribute('dist', '23000'); 493 $objWriter->writeAttribute('dir', '5400000'); 494 $objWriter->writeAttribute('rotWithShape', '0'); 495 496 // a:srgbClr 497 $objWriter->startElement('a:srgbClr'); 498 $objWriter->writeAttribute('val', '000000'); 499 500 // a:alpha 501 $objWriter->startElement('a:alpha'); 502 $objWriter->writeAttribute('val', '35000'); 503 $objWriter->endElement(); 504 505 $objWriter->endElement(); 506 507 $objWriter->endElement(); 508 509 $objWriter->endElement(); 510 511 $objWriter->endElement(); 512 513 // a:effectStyle 514 $objWriter->startElement('a:effectStyle'); 515 516 // a:effectLst 517 $objWriter->startElement('a:effectLst'); 518 519 // a:outerShdw 520 $objWriter->startElement('a:outerShdw'); 521 $objWriter->writeAttribute('blurRad', '40000'); 522 $objWriter->writeAttribute('dist', '23000'); 523 $objWriter->writeAttribute('dir', '5400000'); 524 $objWriter->writeAttribute('rotWithShape', '0'); 525 526 // a:srgbClr 527 $objWriter->startElement('a:srgbClr'); 528 $objWriter->writeAttribute('val', '000000'); 529 530 // a:alpha 531 $objWriter->startElement('a:alpha'); 532 $objWriter->writeAttribute('val', '35000'); 533 $objWriter->endElement(); 534 535 $objWriter->endElement(); 536 537 $objWriter->endElement(); 538 539 $objWriter->endElement(); 540 541 // a:scene3d 542 $objWriter->startElement('a:scene3d'); 543 544 // a:camera 545 $objWriter->startElement('a:camera'); 546 $objWriter->writeAttribute('prst', 'orthographicFront'); 547 548 // a:rot 549 $objWriter->startElement('a:rot'); 550 $objWriter->writeAttribute('lat', '0'); 551 $objWriter->writeAttribute('lon', '0'); 552 $objWriter->writeAttribute('rev', '0'); 553 $objWriter->endElement(); 554 555 $objWriter->endElement(); 556 557 // a:lightRig 558 $objWriter->startElement('a:lightRig'); 559 $objWriter->writeAttribute('rig', 'threePt'); 560 $objWriter->writeAttribute('dir', 't'); 561 562 // a:rot 563 $objWriter->startElement('a:rot'); 564 $objWriter->writeAttribute('lat', '0'); 565 $objWriter->writeAttribute('lon', '0'); 566 $objWriter->writeAttribute('rev', '1200000'); 567 $objWriter->endElement(); 568 569 $objWriter->endElement(); 570 571 $objWriter->endElement(); 572 573 // a:sp3d 574 $objWriter->startElement('a:sp3d'); 575 576 // a:bevelT 577 $objWriter->startElement('a:bevelT'); 578 $objWriter->writeAttribute('w', '63500'); 579 $objWriter->writeAttribute('h', '25400'); 580 $objWriter->endElement(); 581 582 $objWriter->endElement(); 583 584 $objWriter->endElement(); 585 586 $objWriter->endElement(); 587 588 // a:bgFillStyleLst 589 $objWriter->startElement('a:bgFillStyleLst'); 590 591 // a:solidFill 592 $objWriter->startElement('a:solidFill'); 593 594 // a:schemeClr 595 $objWriter->startElement('a:schemeClr'); 596 $objWriter->writeAttribute('val', 'phClr'); 597 $objWriter->endElement(); 598 599 $objWriter->endElement(); 600 601 // a:gradFill 602 $objWriter->startElement('a:gradFill'); 603 $objWriter->writeAttribute('rotWithShape', '1'); 604 605 // a:gsLst 606 $objWriter->startElement('a:gsLst'); 607 608 // a:gs 609 $objWriter->startElement('a:gs'); 610 $objWriter->writeAttribute('pos', '0'); 611 612 // a:schemeClr 613 $objWriter->startElement('a:schemeClr'); 614 $objWriter->writeAttribute('val', 'phClr'); 615 616 // a:tint 617 $objWriter->startElement('a:tint'); 618 $objWriter->writeAttribute('val', '40000'); 619 $objWriter->endElement(); 620 621 // a:satMod 622 $objWriter->startElement('a:satMod'); 623 $objWriter->writeAttribute('val', '350000'); 624 $objWriter->endElement(); 625 626 $objWriter->endElement(); 627 628 $objWriter->endElement(); 629 630 // a:gs 631 $objWriter->startElement('a:gs'); 632 $objWriter->writeAttribute('pos', '40000'); 633 634 // a:schemeClr 635 $objWriter->startElement('a:schemeClr'); 636 $objWriter->writeAttribute('val', 'phClr'); 637 638 // a:tint 639 $objWriter->startElement('a:tint'); 640 $objWriter->writeAttribute('val', '45000'); 641 $objWriter->endElement(); 642 643 // a:shade 644 $objWriter->startElement('a:shade'); 645 $objWriter->writeAttribute('val', '99000'); 646 $objWriter->endElement(); 647 648 // a:satMod 649 $objWriter->startElement('a:satMod'); 650 $objWriter->writeAttribute('val', '350000'); 651 $objWriter->endElement(); 652 653 $objWriter->endElement(); 654 655 $objWriter->endElement(); 656 657 // a:gs 658 $objWriter->startElement('a:gs'); 659 $objWriter->writeAttribute('pos', '100000'); 660 661 // a:schemeClr 662 $objWriter->startElement('a:schemeClr'); 663 $objWriter->writeAttribute('val', 'phClr'); 664 665 // a:shade 666 $objWriter->startElement('a:shade'); 667 $objWriter->writeAttribute('val', '20000'); 668 $objWriter->endElement(); 669 670 // a:satMod 671 $objWriter->startElement('a:satMod'); 672 $objWriter->writeAttribute('val', '255000'); 673 $objWriter->endElement(); 674 675 $objWriter->endElement(); 676 677 $objWriter->endElement(); 678 679 $objWriter->endElement(); 680 681 // a:path 682 $objWriter->startElement('a:path'); 683 $objWriter->writeAttribute('path', 'circle'); 684 685 // a:fillToRect 686 $objWriter->startElement('a:fillToRect'); 687 $objWriter->writeAttribute('l', '50000'); 688 $objWriter->writeAttribute('t', '-80000'); 689 $objWriter->writeAttribute('r', '50000'); 690 $objWriter->writeAttribute('b', '180000'); 691 $objWriter->endElement(); 692 693 $objWriter->endElement(); 694 695 $objWriter->endElement(); 696 697 // a:gradFill 698 $objWriter->startElement('a:gradFill'); 699 $objWriter->writeAttribute('rotWithShape', '1'); 700 701 // a:gsLst 702 $objWriter->startElement('a:gsLst'); 703 704 // a:gs 705 $objWriter->startElement('a:gs'); 706 $objWriter->writeAttribute('pos', '0'); 707 708 // a:schemeClr 709 $objWriter->startElement('a:schemeClr'); 710 $objWriter->writeAttribute('val', 'phClr'); 711 712 // a:tint 713 $objWriter->startElement('a:tint'); 714 $objWriter->writeAttribute('val', '80000'); 715 $objWriter->endElement(); 716 717 // a:satMod 718 $objWriter->startElement('a:satMod'); 719 $objWriter->writeAttribute('val', '300000'); 720 $objWriter->endElement(); 721 722 $objWriter->endElement(); 723 724 $objWriter->endElement(); 725 726 // a:gs 727 $objWriter->startElement('a:gs'); 728 $objWriter->writeAttribute('pos', '100000'); 729 730 // a:schemeClr 731 $objWriter->startElement('a:schemeClr'); 732 $objWriter->writeAttribute('val', 'phClr'); 733 734 // a:shade 735 $objWriter->startElement('a:shade'); 736 $objWriter->writeAttribute('val', '30000'); 737 $objWriter->endElement(); 738 739 // a:satMod 740 $objWriter->startElement('a:satMod'); 741 $objWriter->writeAttribute('val', '200000'); 742 $objWriter->endElement(); 743 744 $objWriter->endElement(); 745 746 $objWriter->endElement(); 747 748 $objWriter->endElement(); 749 750 // a:path 751 $objWriter->startElement('a:path'); 752 $objWriter->writeAttribute('path', 'circle'); 753 754 // a:fillToRect 755 $objWriter->startElement('a:fillToRect'); 756 $objWriter->writeAttribute('l', '50000'); 757 $objWriter->writeAttribute('t', '50000'); 758 $objWriter->writeAttribute('r', '50000'); 759 $objWriter->writeAttribute('b', '50000'); 760 $objWriter->endElement(); 761 762 $objWriter->endElement(); 763 764 $objWriter->endElement(); 765 766 $objWriter->endElement(); 767 768 $objWriter->endElement(); 769 770 $objWriter->endElement(); 771 772 // a:objectDefaults 773 $objWriter->writeElement('a:objectDefaults', null); 774 775 // a:extraClrSchemeLst 776 $objWriter->writeElement('a:extraClrSchemeLst', null); 777 778 $objWriter->endElement(); 779 780 // Return 781 return $objWriter->getData(); 782 } 783 784 /** 785 * Write fonts to XML format. 786 * 787 * @param XMLWriter $objWriter 788 * @param string $latinFont 789 * @param array of string $fontSet 790 * 791 * @return string XML Output 792 */ 793 private function writeFonts($objWriter, $latinFont, $fontSet) 794 { 795 // a:latin 796 $objWriter->startElement('a:latin'); 797 $objWriter->writeAttribute('typeface', $latinFont); 798 $objWriter->endElement(); 799 800 // a:ea 801 $objWriter->startElement('a:ea'); 802 $objWriter->writeAttribute('typeface', ''); 803 $objWriter->endElement(); 804 805 // a:cs 806 $objWriter->startElement('a:cs'); 807 $objWriter->writeAttribute('typeface', ''); 808 $objWriter->endElement(); 809 810 foreach ($fontSet as $fontScript => $typeface) { 811 $objWriter->startElement('a:font'); 812 $objWriter->writeAttribute('script', $fontScript); 813 $objWriter->writeAttribute('typeface', $typeface); 814 $objWriter->endElement(); 815 } 816 } 817 818 /** 819 * Write colour scheme to XML format. 820 * 821 * @param XMLWriter $objWriter 822 * 823 * @return string XML Output 824 */ 825 private function writeColourScheme($objWriter) 826 { 827 foreach (self::$colourScheme as $colourName => $colourValue) { 828 $objWriter->startElement('a:' . $colourName); 829 830 $objWriter->startElement('a:srgbClr'); 831 $objWriter->writeAttribute('val', $colourValue); 832 $objWriter->endElement(); 833 834 $objWriter->endElement(); 835 } 836 } 837 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body