From 08e1bba9074213ebb4b59e2918a8c1409004894c Mon Sep 17 00:00:00 2001 From: Progi1984 Date: Tue, 4 Mar 2025 17:14:47 +0100 Subject: [PATCH] PowerPoint2007 Reader : Support for BarChart --- docs/changes/1.2.0.md | 2 + docs/index.md | 4 +- phpmd.xml.dist | 2 +- samples/Sample_01_Complex.php | 2 +- samples/Sample_01_Simple.php | 2 +- samples/Sample_02_Serialized.php | 2 +- samples/Sample_03_Image.php | 2 +- samples/Sample_03_Video.php | 2 +- samples/Sample_04_Table.php | 2 +- samples/Sample_05_Chart.php | 2 +- samples/Sample_05_Chart_Line.php | 2 +- .../Sample_05_Chart_with_PhpSpreadsheet.php | 2 +- samples/Sample_06_Fill.php | 2 +- samples/Sample_07_Border.php | 2 +- samples/Sample_08_Group.php | 2 +- samples/Sample_09_SlideNote.php | 2 +- samples/Sample_10_Transition.php | 2 +- samples/Sample_11_Shape.php | 2 +- samples/Sample_12_Reader_ODPresentation.php | 6 +- samples/Sample_12_Reader_PowerPoint2007.php | 10 +- samples/Sample_12_Reader_PowerPoint97.php | 10 +- samples/Sample_13_MarkAsFinal.php | 2 +- samples/Sample_14_Zoom.php | 2 +- samples/Sample_15_Background.php | 2 +- samples/Sample_16_Thumbnail.php | 2 +- samples/Sample_17_Comment.php | 2 +- samples/Sample_18_Animation.php | 2 +- samples/Sample_19_SlideMaster.php | 2 +- samples/Sample_20_SlideLayout.php | 2 +- samples/Sample_21_AutoShape.php | 2 +- samples/Sample_22_ExternalSlide.php | 2 +- samples/Sample_Header.php | 308 +---------------- samples/Sample_PhpPptTree.php | 296 +++++++++++++++++ src/PhpPresentation/AbstractShape.php | 2 +- src/PhpPresentation/Reader/PowerPoint2007.php | 314 ++++++++++++++++-- src/PhpPresentation/Reader/PowerPoint97.php | 14 +- src/PhpPresentation/Slide.php | 4 +- src/PhpPresentation/Style/Border.php | 10 +- src/PhpPresentation/Writer/HTML.php | 5 +- .../Writer/ODPresentation/Styles.php | 4 +- .../AbstractDecoratorWriter.php | 34 +- .../Writer/PowerPoint2007/AbstractSlide.php | 2 +- .../Writer/PowerPoint2007/PptCharts.php | 9 +- .../Writer/PowerPoint2007/PptSlideMasters.php | 2 +- .../Tests/Reader/PowerPoint2007Test.php | 71 ++-- .../Writer/PowerPoint2007/PptChartsTest.php | 6 +- tests/resources/files/PPTX_ChartBar.pptx | Bin 0 -> 143784 bytes 47 files changed, 712 insertions(+), 453 deletions(-) create mode 100644 samples/Sample_PhpPptTree.php create mode 100644 tests/resources/files/PPTX_ChartBar.pptx diff --git a/docs/changes/1.2.0.md b/docs/changes/1.2.0.md index 787e3b376..159a5963b 100644 --- a/docs/changes/1.2.0.md +++ b/docs/changes/1.2.0.md @@ -13,6 +13,7 @@ - ODPresentation Writer : Support for rotation for RichText by [@Progi1984](https://github.com/Progi1984) fixing [#279](https://github.com/PHPOffice/PHPPresentation/pull/279) in [#409](https://github.com/PHPOffice/PHPPresentation/pull/409) - HTML Writer by [@Progi1984](https://github.com/Progi1984) fixing [#221](https://github.com/PHPOffice/PHPPresentation/pull/221), [#567](https://github.com/PHPOffice/PHPPresentation/pull/567), [#644](https://github.com/PHPOffice/PHPPresentation/pull/644) in [#850](https://github.com/PHPOffice/PHPPresentation/pull/855) - PDF Writer by [@Progi1984](https://github.com/Progi1984) fixing [#181](https://github.com/PHPOffice/PHPPresentation/pull/181), [#381](https://github.com/PHPOffice/PHPPresentation/pull/381), [#472](https://github.com/PHPOffice/PHPPresentation/pull/472), [#693](https://github.com/PHPOffice/PHPPresentation/pull/693), [#725](https://github.com/PHPOffice/PHPPresentation/pull/725) in [#850](https://github.com/PHPOffice/PHPPresentation/pull/855) +- PowerPoint2007 Reader : Support for BarChart by [@Progi1984](https://github.com/Progi1984) fixing [#824](https://github.com/PHPOffice/PHPPresentation/pull/824) in [#856](https://github.com/PHPOffice/PHPPresentation/pull/856) ## Bug fixes @@ -30,3 +31,4 @@ - CI: Added ODFValidator by [@Progi1984](https://github.com/Progi1984) fixing [#678](https://github.com/PHPOffice/PHPWord/issues/678) in [#653](https://github.com/PHPOffice/PHPWord/pull/653) ## BC Breaks +- \PhpOffice\PhpPresentation\Style\Border::lineWidth use pixels as reference (and not anymore points) diff --git a/docs/index.md b/docs/index.md index 84d4004d8..29649696f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -86,10 +86,10 @@ Below are the supported features for each file formats. | | Image | :material-check: | :material-check: | :material-check: | | | Hyperlink | :material-check: | :material-check: | :material-check: | | | RichText | :material-check: | :material-check: | :material-check: | -| | Table | | | | +| | Table | | | :material-check: | | | Text | :material-check: | :material-check: | :material-check: | | **Charts** | Area | | | | -| | Bar | | | | +| | Bar | | | :material-check: | | | Bar3D | | | | | | Doughnut | | | | | | Line | | | | diff --git a/phpmd.xml.dist b/phpmd.xml.dist index 2499a0658..ddaebf65e 100644 --- a/phpmd.xml.dist +++ b/phpmd.xml.dist @@ -26,7 +26,7 @@ - + diff --git a/samples/Sample_01_Complex.php b/samples/Sample_01_Complex.php index 15418fedd..33a75a301 100644 --- a/samples/Sample_01_Complex.php +++ b/samples/Sample_01_Complex.php @@ -182,7 +182,7 @@ ->setTooltip('PHPPresentation'); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_01_Simple.php b/samples/Sample_01_Simple.php index 706613782..4d7d63c52 100644 --- a/samples/Sample_01_Simple.php +++ b/samples/Sample_01_Simple.php @@ -72,7 +72,7 @@ ->setName('B Nazanin'); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_02_Serialized.php b/samples/Sample_02_Serialized.php index 26ec633f9..75986a1a2 100644 --- a/samples/Sample_02_Serialized.php +++ b/samples/Sample_02_Serialized.php @@ -62,7 +62,7 @@ $objPHPPresentationLoaded = IOFactory::load(__DIR__ . '/results/' . basename(__FILE__, '.php') . '.phppt'); // Save file -echo write($objPHPPresentationLoaded, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentationLoaded, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_03_Image.php b/samples/Sample_03_Image.php index 02a0032a2..f6110f143 100644 --- a/samples/Sample_03_Image.php +++ b/samples/Sample_03_Image.php @@ -96,7 +96,7 @@ $currentSlide->addShape($shape); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_03_Video.php b/samples/Sample_03_Video.php index c28892c0f..7b8cd0d9e 100644 --- a/samples/Sample_03_Video.php +++ b/samples/Sample_03_Video.php @@ -29,7 +29,7 @@ $currentSlide->addShape($shape); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_04_Table.php b/samples/Sample_04_Table.php index e6558d623..2a4825879 100644 --- a/samples/Sample_04_Table.php +++ b/samples/Sample_04_Table.php @@ -138,7 +138,7 @@ $textRunC3->getHyperlink()->setUrl('https://google.com')->setTooltip('Google'); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_05_Chart.php b/samples/Sample_05_Chart.php index ad9c32f74..0dafb9640 100644 --- a/samples/Sample_05_Chart.php +++ b/samples/Sample_05_Chart.php @@ -706,7 +706,7 @@ function fnSlide_Scatter(PhpPresentation $objPHPPresentation): void fnSlide_Scatter($objPHPPresentation); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_05_Chart_Line.php b/samples/Sample_05_Chart_Line.php index a09084430..76a20f77c 100644 --- a/samples/Sample_05_Chart_Line.php +++ b/samples/Sample_05_Chart_Line.php @@ -225,7 +225,7 @@ $currentSlide->addShape($shape6); // Save file -echo EOL . write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo EOL . write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; diff --git a/samples/Sample_05_Chart_with_PhpSpreadsheet.php b/samples/Sample_05_Chart_with_PhpSpreadsheet.php index bdbf79e75..1d3cf25ef 100644 --- a/samples/Sample_05_Chart_with_PhpSpreadsheet.php +++ b/samples/Sample_05_Chart_with_PhpSpreadsheet.php @@ -112,7 +112,7 @@ $shape->getLegend()->getFont()->setItalic(true); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; diff --git a/samples/Sample_06_Fill.php b/samples/Sample_06_Fill.php index 41bc149a6..7ba522ad3 100644 --- a/samples/Sample_06_Fill.php +++ b/samples/Sample_06_Fill.php @@ -69,7 +69,7 @@ } // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_07_Border.php b/samples/Sample_07_Border.php index fff1aa1bb..c994911e6 100644 --- a/samples/Sample_07_Border.php +++ b/samples/Sample_07_Border.php @@ -59,7 +59,7 @@ } // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_08_Group.php b/samples/Sample_08_Group.php index f22196696..c93eff148 100644 --- a/samples/Sample_08_Group.php +++ b/samples/Sample_08_Group.php @@ -51,7 +51,7 @@ ->setColor(new Color('FFE06B20')); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_09_SlideNote.php b/samples/Sample_09_SlideNote.php index 641c77863..685301de7 100644 --- a/samples/Sample_09_SlideNote.php +++ b/samples/Sample_09_SlideNote.php @@ -60,7 +60,7 @@ $oRichText->createParagraph()->createTextRun('Supports writing to different file formats'); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_10_Transition.php b/samples/Sample_10_Transition.php index 7cb732ecb..24581d43a 100644 --- a/samples/Sample_10_Transition.php +++ b/samples/Sample_10_Transition.php @@ -65,7 +65,7 @@ $slide1->addShape(clone $shapeRichText); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_11_Shape.php b/samples/Sample_11_Shape.php index 003746480..a4be8bbd0 100644 --- a/samples/Sample_11_Shape.php +++ b/samples/Sample_11_Shape.php @@ -167,7 +167,7 @@ function fnSlideRichTextList(PhpPresentation $objPHPPresentation): void fnSlideRichTextList($objPHPPresentation); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_12_Reader_ODPresentation.php b/samples/Sample_12_Reader_ODPresentation.php index e6a66ac5c..5a2232e12 100644 --- a/samples/Sample_12_Reader_ODPresentation.php +++ b/samples/Sample_12_Reader_ODPresentation.php @@ -2,6 +2,7 @@ set_time_limit(10); +include_once __DIR__ . '/Sample_PhpPptTree.php'; include_once __DIR__ . '/Sample_Header.php'; use PhpOffice\PhpPresentation\IOFactory; @@ -9,8 +10,9 @@ $pptReader = IOFactory::createReader('ODPresentation'); $oPHPPresentation = $pptReader->load(__DIR__ . '/resources/Sample_12.odp'); -$oTree = new PhpPptTree($oPHPPresentation); -echo $oTree->display(); if (!CLI) { + $oTree = new Sample_PhpPptTree($oPHPPresentation); + echo $oTree->display(); + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_12_Reader_PowerPoint2007.php b/samples/Sample_12_Reader_PowerPoint2007.php index 97636393e..c59df58dd 100644 --- a/samples/Sample_12_Reader_PowerPoint2007.php +++ b/samples/Sample_12_Reader_PowerPoint2007.php @@ -2,15 +2,17 @@ set_time_limit(10); -include_once 'Sample_Header.php'; +include_once __DIR__ . '/Sample_PhpPptTree.php'; +include_once __DIR__ . '/Sample_Header.php'; use PhpOffice\PhpPresentation\IOFactory; $pptReader = IOFactory::createReader('PowerPoint2007'); -$oPHPPresentation = $pptReader->load('resources/Sample_12.pptx'); +$oPHPPresentation = $pptReader->load(__DIR__ . '/resources/Sample_12.pptx'); -$oTree = new PhpPptTree($oPHPPresentation); -echo $oTree->display(); if (!CLI) { + $oTree = new Sample_PhpPptTree($oPHPPresentation); + echo $oTree->display(); + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_12_Reader_PowerPoint97.php b/samples/Sample_12_Reader_PowerPoint97.php index 6ecf74858..574145eea 100644 --- a/samples/Sample_12_Reader_PowerPoint97.php +++ b/samples/Sample_12_Reader_PowerPoint97.php @@ -2,15 +2,17 @@ set_time_limit(10); -include_once 'Sample_Header.php'; +include_once __DIR__ . '/Sample_PhpPptTree.php'; +include_once __DIR__ . '/Sample_Header.php'; use PhpOffice\PhpPresentation\IOFactory; $pptReader = IOFactory::createReader('PowerPoint97'); -$oPHPPresentation = $pptReader->load('resources/Sample_12.ppt'); +$oPHPPresentation = $pptReader->load(__DIR__ . '/resources/Sample_12.ppt'); -$oTree = new PhpPptTree($oPHPPresentation); -echo $oTree->display(); if (!CLI) { + $oTree = new Sample_PhpPptTree($oPHPPresentation); + echo $oTree->display(); + include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_13_MarkAsFinal.php b/samples/Sample_13_MarkAsFinal.php index f8670eba5..f305276ad 100644 --- a/samples/Sample_13_MarkAsFinal.php +++ b/samples/Sample_13_MarkAsFinal.php @@ -18,7 +18,7 @@ $currentSlide->addShape(clone $oShapeRichText); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_14_Zoom.php b/samples/Sample_14_Zoom.php index a134c2210..2c61723a7 100644 --- a/samples/Sample_14_Zoom.php +++ b/samples/Sample_14_Zoom.php @@ -18,7 +18,7 @@ $currentSlide->addShape(clone $oShapeRichText); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_15_Background.php b/samples/Sample_15_Background.php index 9e1280fd9..491af0933 100644 --- a/samples/Sample_15_Background.php +++ b/samples/Sample_15_Background.php @@ -35,7 +35,7 @@ $oSlide2->setBackground($oBkgImage); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_16_Thumbnail.php b/samples/Sample_16_Thumbnail.php index 884deb931..ba82b3e8c 100644 --- a/samples/Sample_16_Thumbnail.php +++ b/samples/Sample_16_Thumbnail.php @@ -18,7 +18,7 @@ $oSlide1->addShape(clone $oShapeRichText); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_17_Comment.php b/samples/Sample_17_Comment.php index d417c4bfd..f0c892593 100644 --- a/samples/Sample_17_Comment.php +++ b/samples/Sample_17_Comment.php @@ -39,7 +39,7 @@ $oSlide1->addShape($oComment2); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_18_Animation.php b/samples/Sample_18_Animation.php index f632cb49c..f960b4622 100644 --- a/samples/Sample_18_Animation.php +++ b/samples/Sample_18_Animation.php @@ -54,7 +54,7 @@ $oSlide3->addAnimation($oAnimation5); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_19_SlideMaster.php b/samples/Sample_19_SlideMaster.php index 9f851ac8e..a44410366 100644 --- a/samples/Sample_19_SlideMaster.php +++ b/samples/Sample_19_SlideMaster.php @@ -106,7 +106,7 @@ $currentSlide->setSlideLayout($oSlideLayout); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_20_SlideLayout.php b/samples/Sample_20_SlideLayout.php index 1e18ac5b3..c2ea1fb9c 100644 --- a/samples/Sample_20_SlideLayout.php +++ b/samples/Sample_20_SlideLayout.php @@ -67,7 +67,7 @@ $currentSlide->setSlideLayout($slideLayout); // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_21_AutoShape.php b/samples/Sample_21_AutoShape.php index 7a8278f4b..16af2f665 100644 --- a/samples/Sample_21_AutoShape.php +++ b/samples/Sample_21_AutoShape.php @@ -59,7 +59,7 @@ } // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_22_ExternalSlide.php b/samples/Sample_22_ExternalSlide.php index 763234a6b..1864ccaaa 100644 --- a/samples/Sample_22_ExternalSlide.php +++ b/samples/Sample_22_ExternalSlide.php @@ -17,7 +17,7 @@ } // Save file -echo write($objPHPPresentation, basename(__FILE__, '.php'), $writers); +echo write($objPHPPresentation, basename(__FILE__, '.php')); if (!CLI) { include_once 'Sample_Footer.php'; } diff --git a/samples/Sample_Header.php b/samples/Sample_Header.php index 7e33830e3..c9c0ca9cb 100644 --- a/samples/Sample_Header.php +++ b/samples/Sample_Header.php @@ -2,23 +2,20 @@ /** * Header file. */ -use PhpOffice\PhpPresentation\AbstractShape; use PhpOffice\PhpPresentation\Autoloader; -use PhpOffice\PhpPresentation\DocumentLayout; use PhpOffice\PhpPresentation\IOFactory; use PhpOffice\PhpPresentation\PhpPresentation; use PhpOffice\PhpPresentation\Shape\Drawing; -use PhpOffice\PhpPresentation\Shape\Group; use PhpOffice\PhpPresentation\Shape\RichText; -use PhpOffice\PhpPresentation\Shape\RichText\BreakElement; -use PhpOffice\PhpPresentation\Shape\RichText\TextElement; use PhpOffice\PhpPresentation\Slide; use PhpOffice\PhpPresentation\Style\Alignment; -use PhpOffice\PhpPresentation\Style\Bullet; use PhpOffice\PhpPresentation\Style\Color; use PhpOffice\PhpPresentation\Writer\PDF\DomPDF; +ini_set('display_errors', 1); +ini_set('display_startup_errors', 1); error_reporting(E_ALL); + define('CLI', (PHP_SAPI == 'cli') ? true : false); define('EOL', CLI ? PHP_EOL : '
'); define('SCRIPT_FILENAME', basename($_SERVER['SCRIPT_FILENAME'], '.php')); @@ -48,14 +45,6 @@ throw new Exception('The samples folder is not writable!'); } -// Set writers -$writers = [ - 'PowerPoint2007' => 'pptx', - 'ODPresentation' => 'odp', - 'HTML' => 'html', - 'PDF' => 'pdf', -]; - // Set titles and names $pageHeading = str_replace('_', ' ', SCRIPT_FILENAME); $pageTitle = IS_INDEX ? 'Welcome to ' : "{$pageHeading} - "; @@ -116,7 +105,12 @@ /** * Write documents. */ -function write(PhpPresentation $phpPresentation, string $filename, array $writers): string +function write(PhpPresentation $phpPresentation, string $filename, array $writers = [ + 'PowerPoint2007' => 'pptx', + 'ODPresentation' => 'odp', + 'HTML' => 'html', + 'PDF' => 'pdf', +]): string { $result = ''; @@ -206,290 +200,6 @@ function createTemplatedSlide(PhpPresentation $objPHPPresentation): Slide // Return slide return $slide; } - -class Sample_Header -{ - protected $oPhpPresentation; - - protected $htmlOutput; - - public function __construct(PhpPresentation $oPHPPpt) - { - $this->oPhpPresentation = $oPHPPpt; - } - - public function display() - { - $this->append('
'); - $this->append('
'); - $this->append('
'); - $this->append('
'); - $this->append('
    '); - $this->displayPhpPresentation($this->oPhpPresentation); - $this->append('
'); - $this->append('
'); - $this->append('
'); - $this->append('
'); - $this->displayPhpPresentationInfo($this->oPhpPresentation); - $this->append('
'); - $this->append('
'); - $this->append('
'); - - return $this->htmlOutput; - } - - protected function append($sHTML): void - { - $this->htmlOutput .= $sHTML; - } - - protected function displayPhpPresentation(PhpPresentation $oPHPPpt): void - { - $this->append('
  • PhpPresentation'); - $this->append('
      '); - $this->append('
    • Info "PhpPresentation"
    • '); - foreach ($oPHPPpt->getAllSlides() as $oSlide) { - $this->append('
    • Slide'); - $this->append('
        '); - $this->append('
      • Info "Slide"
      • '); - foreach ($oSlide->getShapeCollection() as $oShape) { - if ($oShape instanceof Group) { - $this->append('
      • Shape "Group"'); - $this->append('
          '); - // $this->append('
        • Info "Group"
        • '); - foreach ($oShape->getShapeCollection() as $oShapeChild) { - $this->displayShape($oShapeChild); - } - $this->append('
        '); - $this->append('
      • '); - } else { - $this->displayShape($oShape); - } - } - $this->append('
      '); - $this->append('
    • '); - } - $this->append('
    '); - $this->append('
  • '); - } - - protected function displayShape(AbstractShape $shape): void - { - if ($shape instanceof Drawing\Gd) { - $this->append('
  • Shape "Drawing\Gd"
  • '); - } elseif ($shape instanceof Drawing\File) { - $this->append('
  • Shape "Drawing\File"
  • '); - } elseif ($shape instanceof Drawing\Base64) { - $this->append('
  • Shape "Drawing\Base64"
  • '); - } elseif ($shape instanceof Drawing\ZipFile) { - $this->append('
  • Shape "Drawing\Zip"
  • '); - } elseif ($shape instanceof RichText) { - $this->append('
  • Shape "RichText"
  • '); - } else { - var_dump($shape); - } - } - - protected function displayPhpPresentationInfo(PhpPresentation $oPHPPpt): void - { - $this->append('
    '); - $this->append('
    '); - $this->append('
    Number of slides
    ' . $oPHPPpt->getSlideCount() . '
    '); - $this->append('
    Document Layout Name
    ' . (empty($oPHPPpt->getLayout()->getDocumentLayout()) ? 'Custom' : $oPHPPpt->getLayout()->getDocumentLayout()) . '
    '); - $this->append('
    Document Layout Height
    ' . $oPHPPpt->getLayout()->getCY(DocumentLayout::UNIT_MILLIMETER) . ' mm
    '); - $this->append('
    Document Layout Width
    ' . $oPHPPpt->getLayout()->getCX(DocumentLayout::UNIT_MILLIMETER) . ' mm
    '); - $this->append('
    Properties : Category
    ' . $oPHPPpt->getDocumentProperties()->getCategory() . '
    '); - $this->append('
    Properties : Company
    ' . $oPHPPpt->getDocumentProperties()->getCompany() . '
    '); - $this->append('
    Properties : Created
    ' . $oPHPPpt->getDocumentProperties()->getCreated() . '
    '); - $this->append('
    Properties : Creator
    ' . $oPHPPpt->getDocumentProperties()->getCreator() . '
    '); - $this->append('
    Properties : Description
    ' . $oPHPPpt->getDocumentProperties()->getDescription() . '
    '); - $this->append('
    Properties : Keywords
    ' . $oPHPPpt->getDocumentProperties()->getKeywords() . '
    '); - $this->append('
    Properties : Last Modified By
    ' . $oPHPPpt->getDocumentProperties()->getLastModifiedBy() . '
    '); - $this->append('
    Properties : Modified
    ' . $oPHPPpt->getDocumentProperties()->getModified() . '
    '); - $this->append('
    Properties : Subject
    ' . $oPHPPpt->getDocumentProperties()->getSubject() . '
    '); - $this->append('
    Properties : Title
    ' . $oPHPPpt->getDocumentProperties()->getTitle() . '
    '); - $this->append('
    '); - $this->append('
    '); - - foreach ($oPHPPpt->getAllSlides() as $oSlide) { - $this->append('
    '); - $this->append('
    '); - $this->append('
    HashCode
    ' . $oSlide->getHashCode() . '
    '); - $this->append('
    Slide Layout
    Layout::' . $this->getConstantName('\PhpOffice\PhpPresentation\Slide\Layout', $oSlide->getSlideLayout()) . '
    '); - - $this->append('
    Offset X
    ' . $oSlide->getOffsetX() . '
    '); - $this->append('
    Offset Y
    ' . $oSlide->getOffsetY() . '
    '); - $this->append('
    Extent X
    ' . $oSlide->getExtentX() . '
    '); - $this->append('
    Extent Y
    ' . $oSlide->getExtentY() . '
    '); - $oBkg = $oSlide->getBackground(); - if ($oBkg instanceof Slide\AbstractBackground) { - if ($oBkg instanceof Slide\Background\Color) { - $this->append('
    Background Color
    #' . $oBkg->getColor()->getRGB() . '
    '); - } - if ($oBkg instanceof Slide\Background\Image) { - $sBkgImgContents = file_get_contents($oBkg->getPath()); - $this->append('
    Background Image
    '); - } - } - $oNote = $oSlide->getNote(); - if (count($oNote->getShapeCollection()) > 0) { - $this->append('
    Notes
    '); - foreach ($oNote->getShapeCollection() as $oShape) { - if ($oShape instanceof RichText) { - $this->append('
    ' . $oShape->getPlainText() . '
    '); - } - } - } - - $this->append('
    '); - $this->append('
    '); - - foreach ($oSlide->getShapeCollection() as $oShape) { - if ($oShape instanceof Group) { - foreach ($oShape->getShapeCollection() as $oShapeChild) { - $this->displayShapeInfo($oShapeChild); - } - } else { - $this->displayShapeInfo($oShape); - } - } - } - } - - protected function displayShapeInfo(AbstractShape $oShape): void - { - $this->append('
    '); - $this->append('
    '); - $this->append('
    HashCode
    ' . $oShape->getHashCode() . '
    '); - $this->append('
    Offset X
    ' . $oShape->getOffsetX() . '
    '); - $this->append('
    Offset Y
    ' . $oShape->getOffsetY() . '
    '); - $this->append('
    Height
    ' . $oShape->getHeight() . '
    '); - $this->append('
    Width
    ' . $oShape->getWidth() . '
    '); - $this->append('
    Rotation
    ' . $oShape->getRotation() . '°
    '); - $this->append('
    Hyperlink
    ' . ucfirst(var_export($oShape->hasHyperlink(), true)) . '
    '); - $this->append('
    Fill
    '); - if (null === $oShape->getFill()) { - $this->append('
    None
    '); - } else { - switch ($oShape->getFill()->getFillType()) { - case PhpOffice\PhpPresentation\Style\Fill::FILL_NONE: - $this->append('
    None
    '); - - break; - case PhpOffice\PhpPresentation\Style\Fill::FILL_SOLID: - $this->append('
    Solid ('); - $this->append('Color : #' . $oShape->getFill()->getStartColor()->getRGB()); - $this->append(' - Alpha : ' . $oShape->getFill()->getStartColor()->getAlpha() . '%'); - $this->append(')
    '); - - break; - } - } - $this->append('
    Border
    @Todo
    '); - $this->append('
    IsPlaceholder
    ' . ($oShape->isPlaceholder() ? 'true' : 'false') . '
    '); - if ($oShape instanceof Drawing\Gd) { - $this->append('
    Name
    ' . $oShape->getName() . '
    '); - $this->append('
    Description
    ' . $oShape->getDescription() . '
    '); - ob_start(); - call_user_func($oShape->getRenderingFunction(), $oShape->getImageResource()); - $sShapeImgContents = ob_get_contents(); - ob_end_clean(); - $this->append('
    Mime-Type
    ' . $oShape->getMimeType() . '
    '); - $this->append('
    Image
    '); - if ($oShape->hasHyperlink()) { - $this->append('
    Hyperlink URL
    ' . $oShape->getHyperlink()->getUrl() . '
    '); - $this->append('
    Hyperlink Tooltip
    ' . $oShape->getHyperlink()->getTooltip() . '
    '); - } - } elseif ($oShape instanceof Drawing\AbstractDrawingAdapter) { - $this->append('
    Name
    ' . $oShape->getName() . '
    '); - $this->append('
    Description
    ' . $oShape->getDescription() . '
    '); - } elseif ($oShape instanceof RichText) { - $this->append('
    # of paragraphs
    ' . count($oShape->getParagraphs()) . '
    '); - $this->append('
    Inset (T / R / B / L)
    ' . $oShape->getInsetTop() . 'px / ' . $oShape->getInsetRight() . 'px / ' . $oShape->getInsetBottom() . 'px / ' . $oShape->getInsetLeft() . 'px
    '); - $this->append('
    Text
    '); - $this->append('
    '); - foreach ($oShape->getParagraphs() as $oParagraph) { - $this->append('Paragraph
    '); - $this->append('
    Alignment Horizontal
    Alignment::' . $this->getConstantName('\PhpOffice\PhpPresentation\Style\Alignment', $oParagraph->getAlignment()->getHorizontal()) . '
    '); - $this->append('
    Alignment Vertical
    Alignment::' . $this->getConstantName('\PhpOffice\PhpPresentation\Style\Alignment', $oParagraph->getAlignment()->getVertical()) . '
    '); - $this->append('
    Alignment Margin (L / R)
    ' . $oParagraph->getAlignment()->getMarginLeft() . ' px / ' . $oParagraph->getAlignment()->getMarginRight() . 'px
    '); - $this->append('
    Alignment Indent
    ' . $oParagraph->getAlignment()->getIndent() . ' px
    '); - $this->append('
    Alignment Level
    ' . $oParagraph->getAlignment()->getLevel() . '
    '); - $this->append('
    Bullet Style
    Bullet::' . $this->getConstantName('\PhpOffice\PhpPresentation\Style\Bullet', $oParagraph->getBulletStyle()->getBulletType()) . '
    '); - if (Bullet::TYPE_NONE != $oParagraph->getBulletStyle()->getBulletType()) { - $this->append('
    Bullet Font
    ' . $oParagraph->getBulletStyle()->getBulletFont() . '
    '); - $this->append('
    Bullet Color
    ' . $oParagraph->getBulletStyle()->getBulletColor()->getARGB() . '
    '); - } - if (Bullet::TYPE_BULLET == $oParagraph->getBulletStyle()->getBulletType()) { - $this->append('
    Bullet Char
    ' . $oParagraph->getBulletStyle()->getBulletChar() . '
    '); - } - if (Bullet::TYPE_NUMERIC == $oParagraph->getBulletStyle()->getBulletType()) { - $this->append('
    Bullet Start At
    ' . $oParagraph->getBulletStyle()->getBulletNumericStartAt() . '
    '); - $this->append('
    Bullet Style
    ' . $oParagraph->getBulletStyle()->getBulletNumericStyle() . '
    '); - } - $this->append('
    Line Spacing
    ' . $oParagraph->getLineSpacing() . '
    '); - $this->append('
    RichText
    '); - foreach ($oParagraph->getRichTextElements() as $oRichText) { - if ($oRichText instanceof BreakElement) { - $this->append('
    Break
    '); - } else { - if ($oRichText instanceof TextElement) { - $this->append('
    TextElement
    '); - } else { - $this->append('
    Run
    '); - } - $this->append('
    ' . $oRichText->getText()); - $this->append('
    '); - $this->append('
    Font Name
    ' . $oRichText->getFont()->getName() . '
    '); - $this->append('
    Font Size
    ' . $oRichText->getFont()->getSize() . '
    '); - $this->append('
    Font Color
    #' . $oRichText->getFont()->getColor()->getARGB() . '
    '); - $this->append('
    Font Transform
    '); - $this->append('Bold : ' . ($oRichText->getFont()->isBold() ? 'Y' : 'N') . ' - '); - $this->append('Italic : ' . ($oRichText->getFont()->isItalic() ? 'Y' : 'N') . ' - '); - $this->append('Underline : Underline::' . $this->getConstantName('\PhpOffice\PhpPresentation\Style\Font', $oRichText->getFont()->getUnderline()) . ' - '); - $this->append('Strikethrough : ' . ($oRichText->getFont()->isStrikethrough() ? 'Y' : 'N') . ' - '); - $this->append('Baseline : ' . $oRichText->getFont()->getBaseline() . ' - '); - $this->append('SubScript : ' . ($oRichText->getFont()->isSubScript() ? 'Y' : 'N') . ' - '); - $this->append('SuperScript : ' . ($oRichText->getFont()->isSuperScript() ? 'Y' : 'N')); - $this->append('
    '); - if ($oRichText instanceof TextElement) { - if ($oRichText->hasHyperlink()) { - $this->append('
    Hyperlink URL
    ' . $oRichText->getHyperlink()->getUrl() . '
    '); - $this->append('
    Hyperlink Tooltip
    ' . $oRichText->getHyperlink()->getTooltip() . '
    '); - } - } - $this->append('
    '); - $this->append('
    '); - } - } - $this->append('
    '); - } - $this->append('
    '); - } - // Add another shape - - $this->append('
    '); - $this->append('
    '); - } - - protected function getConstantName($class, $search, $startWith = '') - { - $fooClass = new ReflectionClass($class); - $constants = $fooClass->getConstants(); - $constName = null; - foreach ($constants as $key => $value) { - if ($value == $search) { - if (empty($startWith) || (!empty($startWith) && 0 === strpos($key, $startWith))) { - $constName = $key; - } - - break; - } - } - - return $constName; - } -} ?> <?php echo $pageTitle; ?> diff --git a/samples/Sample_PhpPptTree.php b/samples/Sample_PhpPptTree.php new file mode 100644 index 000000000..0289e25bb --- /dev/null +++ b/samples/Sample_PhpPptTree.php @@ -0,0 +1,296 @@ +oPhpPresentation = $oPHPPpt; + } + + public function display() + { + $this->append('
    '); + $this->append('
    '); + $this->append('
    '); + $this->append('
    '); + $this->append('
      '); + $this->displayPhpPresentation($this->oPhpPresentation); + $this->append('
    '); + $this->append('
    '); + $this->append('
    '); + $this->append('
    '); + $this->displayPhpPresentationInfo($this->oPhpPresentation); + $this->append('
    '); + $this->append('
    '); + $this->append('
    '); + + return $this->htmlOutput; + } + + protected function append($sHTML): void + { + $this->htmlOutput .= $sHTML; + } + + protected function displayPhpPresentation(PhpPresentation $oPHPPpt): void + { + $this->append('
  • PhpPresentation'); + $this->append('
      '); + $this->append('
    • Info "PhpPresentation"
    • '); + foreach ($oPHPPpt->getAllSlides() as $oSlide) { + $this->append('
    • Slide'); + $this->append('
        '); + $this->append('
      • Info "Slide"
      • '); + foreach ($oSlide->getShapeCollection() as $oShape) { + if ($oShape instanceof Group) { + $this->append('
      • Shape "Group"'); + $this->append('
          '); + // $this->append('
        • Info "Group"
        • '); + foreach ($oShape->getShapeCollection() as $oShapeChild) { + $this->displayShape($oShapeChild); + } + $this->append('
        '); + $this->append('
      • '); + } else { + $this->displayShape($oShape); + } + } + $this->append('
      '); + $this->append('
    • '); + } + $this->append('
    '); + $this->append('
  • '); + } + + protected function displayShape(AbstractShape $shape): void + { + if ($shape instanceof Drawing\Gd) { + $this->append('
  • Shape "Drawing\Gd"
  • '); + } elseif ($shape instanceof Drawing\File) { + $this->append('
  • Shape "Drawing\File"
  • '); + } elseif ($shape instanceof Drawing\Base64) { + $this->append('
  • Shape "Drawing\Base64"
  • '); + } elseif ($shape instanceof Drawing\ZipFile) { + $this->append('
  • Shape "Drawing\Zip"
  • '); + } elseif ($shape instanceof RichText) { + $this->append('
  • Shape "RichText"
  • '); + } elseif ($shape instanceof Table) { + $this->append('
  • Shape "Table"
  • '); + } else { + var_dump($shape); + } + } + + protected function displayPhpPresentationInfo(PhpPresentation $oPHPPpt): void + { + $this->append('
    '); + $this->append('
    '); + $this->append('
    Number of slides
    ' . $oPHPPpt->getSlideCount() . '
    '); + $this->append('
    Document Layout Name
    ' . (empty($oPHPPpt->getLayout()->getDocumentLayout()) ? 'Custom' : $oPHPPpt->getLayout()->getDocumentLayout()) . '
    '); + $this->append('
    Document Layout Height
    ' . $oPHPPpt->getLayout()->getCY(DocumentLayout::UNIT_MILLIMETER) . ' mm
    '); + $this->append('
    Document Layout Width
    ' . $oPHPPpt->getLayout()->getCX(DocumentLayout::UNIT_MILLIMETER) . ' mm
    '); + $this->append('
    Properties : Category
    ' . $oPHPPpt->getDocumentProperties()->getCategory() . '
    '); + $this->append('
    Properties : Company
    ' . $oPHPPpt->getDocumentProperties()->getCompany() . '
    '); + $this->append('
    Properties : Created
    ' . $oPHPPpt->getDocumentProperties()->getCreated() . '
    '); + $this->append('
    Properties : Creator
    ' . $oPHPPpt->getDocumentProperties()->getCreator() . '
    '); + $this->append('
    Properties : Description
    ' . $oPHPPpt->getDocumentProperties()->getDescription() . '
    '); + $this->append('
    Properties : Keywords
    ' . $oPHPPpt->getDocumentProperties()->getKeywords() . '
    '); + $this->append('
    Properties : Last Modified By
    ' . $oPHPPpt->getDocumentProperties()->getLastModifiedBy() . '
    '); + $this->append('
    Properties : Modified
    ' . $oPHPPpt->getDocumentProperties()->getModified() . '
    '); + $this->append('
    Properties : Subject
    ' . $oPHPPpt->getDocumentProperties()->getSubject() . '
    '); + $this->append('
    Properties : Title
    ' . $oPHPPpt->getDocumentProperties()->getTitle() . '
    '); + $this->append('
    '); + $this->append('
    '); + + foreach ($oPHPPpt->getAllSlides() as $oSlide) { + $this->append('
    '); + $this->append('
    '); + $this->append('
    HashCode
    ' . $oSlide->getHashCode() . '
    '); + $this->append('
    Slide Layout
    Layout::' . $this->getConstantName('\PhpOffice\PhpPresentation\Slide\Layout', $oSlide->getSlideLayout()) . '
    '); + + $this->append('
    Offset X
    ' . $oSlide->getOffsetX() . '
    '); + $this->append('
    Offset Y
    ' . $oSlide->getOffsetY() . '
    '); + $this->append('
    Extent X
    ' . $oSlide->getExtentX() . '
    '); + $this->append('
    Extent Y
    ' . $oSlide->getExtentY() . '
    '); + $oBkg = $oSlide->getBackground(); + if ($oBkg instanceof Slide\AbstractBackground) { + if ($oBkg instanceof Slide\Background\Color) { + $this->append('
    Background Color
    #' . $oBkg->getColor()->getRGB() . '
    '); + } + if ($oBkg instanceof Slide\Background\Image) { + $sBkgImgContents = file_get_contents($oBkg->getPath()); + $this->append('
    Background Image
    '); + } + } + $oNote = $oSlide->getNote(); + if (count($oNote->getShapeCollection()) > 0) { + $this->append('
    Notes
    '); + foreach ($oNote->getShapeCollection() as $oShape) { + if ($oShape instanceof RichText) { + $this->append('
    ' . $oShape->getPlainText() . '
    '); + } + } + } + + $this->append('
    '); + $this->append('
    '); + + foreach ($oSlide->getShapeCollection() as $oShape) { + if ($oShape instanceof Group) { + foreach ($oShape->getShapeCollection() as $oShapeChild) { + $this->displayShapeInfo($oShapeChild); + } + } else { + $this->displayShapeInfo($oShape); + } + } + } + } + + protected function displayShapeInfo(AbstractShape $oShape): void + { + $this->append('
    '); + $this->append('
    '); + $this->append('
    HashCode
    ' . $oShape->getHashCode() . '
    '); + $this->append('
    Offset X
    ' . $oShape->getOffsetX() . '
    '); + $this->append('
    Offset Y
    ' . $oShape->getOffsetY() . '
    '); + $this->append('
    Height
    ' . $oShape->getHeight() . '
    '); + $this->append('
    Width
    ' . $oShape->getWidth() . '
    '); + $this->append('
    Rotation
    ' . $oShape->getRotation() . '°
    '); + $this->append('
    Hyperlink
    ' . ucfirst(var_export($oShape->hasHyperlink(), true)) . '
    '); + $this->append('
    Fill
    '); + if (null === $oShape->getFill()) { + $this->append('
    None
    '); + } else { + switch ($oShape->getFill()->getFillType()) { + case PhpOffice\PhpPresentation\Style\Fill::FILL_NONE: + $this->append('
    None
    '); + + break; + case PhpOffice\PhpPresentation\Style\Fill::FILL_SOLID: + $this->append('
    Solid ('); + $this->append('Color : #' . $oShape->getFill()->getStartColor()->getRGB()); + $this->append(' - Alpha : ' . $oShape->getFill()->getStartColor()->getAlpha() . '%'); + $this->append(')
    '); + + break; + } + } + $this->append('
    Border
    @Todo
    '); + $this->append('
    IsPlaceholder
    ' . ($oShape->isPlaceholder() ? 'true' : 'false') . '
    '); + if ($oShape instanceof Drawing\Gd) { + $this->append('
    Name
    ' . $oShape->getName() . '
    '); + $this->append('
    Description
    ' . $oShape->getDescription() . '
    '); + ob_start(); + call_user_func($oShape->getRenderingFunction(), $oShape->getImageResource()); + $sShapeImgContents = ob_get_contents(); + ob_end_clean(); + $this->append('
    Mime-Type
    ' . $oShape->getMimeType() . '
    '); + $this->append('
    Image
    '); + if ($oShape->hasHyperlink()) { + $this->append('
    Hyperlink URL
    ' . $oShape->getHyperlink()->getUrl() . '
    '); + $this->append('
    Hyperlink Tooltip
    ' . $oShape->getHyperlink()->getTooltip() . '
    '); + } + } elseif ($oShape instanceof Drawing\AbstractDrawingAdapter) { + $this->append('
    Name
    ' . $oShape->getName() . '
    '); + $this->append('
    Description
    ' . $oShape->getDescription() . '
    '); + } elseif ($oShape instanceof RichText) { + $this->append('
    # of paragraphs
    ' . count($oShape->getParagraphs()) . '
    '); + $this->append('
    Inset (T / R / B / L)
    ' . $oShape->getInsetTop() . 'px / ' . $oShape->getInsetRight() . 'px / ' . $oShape->getInsetBottom() . 'px / ' . $oShape->getInsetLeft() . 'px
    '); + $this->append('
    Text
    '); + $this->append('
    '); + foreach ($oShape->getParagraphs() as $oParagraph) { + $this->append('Paragraph
    '); + $this->append('
    Alignment Horizontal
    Alignment::' . $this->getConstantName('\PhpOffice\PhpPresentation\Style\Alignment', $oParagraph->getAlignment()->getHorizontal()) . '
    '); + $this->append('
    Alignment Vertical
    Alignment::' . $this->getConstantName('\PhpOffice\PhpPresentation\Style\Alignment', $oParagraph->getAlignment()->getVertical()) . '
    '); + $this->append('
    Alignment Margin (L / R)
    ' . $oParagraph->getAlignment()->getMarginLeft() . ' px / ' . $oParagraph->getAlignment()->getMarginRight() . 'px
    '); + $this->append('
    Alignment Indent
    ' . $oParagraph->getAlignment()->getIndent() . ' px
    '); + $this->append('
    Alignment Level
    ' . $oParagraph->getAlignment()->getLevel() . '
    '); + $this->append('
    Bullet Style
    Bullet::' . $this->getConstantName('\PhpOffice\PhpPresentation\Style\Bullet', $oParagraph->getBulletStyle()->getBulletType()) . '
    '); + if (Bullet::TYPE_NONE != $oParagraph->getBulletStyle()->getBulletType()) { + $this->append('
    Bullet Font
    ' . $oParagraph->getBulletStyle()->getBulletFont() . '
    '); + $this->append('
    Bullet Color
    ' . $oParagraph->getBulletStyle()->getBulletColor()->getARGB() . '
    '); + } + if (Bullet::TYPE_BULLET == $oParagraph->getBulletStyle()->getBulletType()) { + $this->append('
    Bullet Char
    ' . $oParagraph->getBulletStyle()->getBulletChar() . '
    '); + } + if (Bullet::TYPE_NUMERIC == $oParagraph->getBulletStyle()->getBulletType()) { + $this->append('
    Bullet Start At
    ' . $oParagraph->getBulletStyle()->getBulletNumericStartAt() . '
    '); + $this->append('
    Bullet Style
    ' . $oParagraph->getBulletStyle()->getBulletNumericStyle() . '
    '); + } + $this->append('
    Line Spacing
    ' . $oParagraph->getLineSpacing() . '
    '); + $this->append('
    RichText
    '); + foreach ($oParagraph->getRichTextElements() as $oRichText) { + if ($oRichText instanceof BreakElement) { + $this->append('
    Break
    '); + } else { + if ($oRichText instanceof TextElement) { + $this->append('
    TextElement
    '); + } else { + $this->append('
    Run
    '); + } + $this->append('
    ' . $oRichText->getText()); + $this->append('
    '); + $this->append('
    Font Name
    ' . $oRichText->getFont()->getName() . '
    '); + $this->append('
    Font Size
    ' . $oRichText->getFont()->getSize() . '
    '); + $this->append('
    Font Color
    #' . $oRichText->getFont()->getColor()->getARGB() . '
    '); + $this->append('
    Font Transform
    '); + $this->append('Bold : ' . ($oRichText->getFont()->isBold() ? 'Y' : 'N') . ' - '); + $this->append('Italic : ' . ($oRichText->getFont()->isItalic() ? 'Y' : 'N') . ' - '); + $this->append('Underline : Underline::' . $this->getConstantName('\PhpOffice\PhpPresentation\Style\Font', $oRichText->getFont()->getUnderline()) . ' - '); + $this->append('Strikethrough : ' . ($oRichText->getFont()->isStrikethrough() ? 'Y' : 'N') . ' - '); + $this->append('Baseline : ' . $oRichText->getFont()->getBaseline() . ' - '); + $this->append('SubScript : ' . ($oRichText->getFont()->isSubScript() ? 'Y' : 'N') . ' - '); + $this->append('SuperScript : ' . ($oRichText->getFont()->isSuperScript() ? 'Y' : 'N')); + $this->append('
    '); + if ($oRichText instanceof TextElement) { + if ($oRichText->hasHyperlink()) { + $this->append('
    Hyperlink URL
    ' . $oRichText->getHyperlink()->getUrl() . '
    '); + $this->append('
    Hyperlink Tooltip
    ' . $oRichText->getHyperlink()->getTooltip() . '
    '); + } + } + $this->append('
    '); + $this->append('
    '); + } + } + $this->append('
    '); + } + $this->append('
    '); + } + // Add another shape + + $this->append('
    '); + $this->append('
    '); + } + + protected function getConstantName($class, $search, $startWith = '') + { + $fooClass = new ReflectionClass($class); + $constants = $fooClass->getConstants(); + $constName = null; + foreach ($constants as $key => $value) { + if ($value == $search) { + if (empty($startWith) || (!empty($startWith) && 0 === strpos($key, $startWith))) { + $constName = $key; + } + + break; + } + } + + return $constName; + } +} diff --git a/src/PhpPresentation/AbstractShape.php b/src/PhpPresentation/AbstractShape.php index 6abde9e83..4b002808f 100644 --- a/src/PhpPresentation/AbstractShape.php +++ b/src/PhpPresentation/AbstractShape.php @@ -227,7 +227,7 @@ public function getOffsetX(): int } /** - * Set OffsetX. + * Set OffsetX (in pixels). * * @return $this */ diff --git a/src/PhpPresentation/Reader/PowerPoint2007.php b/src/PhpPresentation/Reader/PowerPoint2007.php index 16f4ddcca..d93a19168 100644 --- a/src/PhpPresentation/Reader/PowerPoint2007.php +++ b/src/PhpPresentation/Reader/PowerPoint2007.php @@ -33,6 +33,7 @@ use PhpOffice\PhpPresentation\Exception\InvalidFileFormatException; use PhpOffice\PhpPresentation\PhpPresentation; use PhpOffice\PhpPresentation\PresentationProperties; +use PhpOffice\PhpPresentation\Shape\Chart; use PhpOffice\PhpPresentation\Shape\Drawing\Base64; use PhpOffice\PhpPresentation\Shape\Drawing\Gd; use PhpOffice\PhpPresentation\Shape\Hyperlink; @@ -51,6 +52,7 @@ use PhpOffice\PhpPresentation\Style\Color; use PhpOffice\PhpPresentation\Style\Fill; use PhpOffice\PhpPresentation\Style\Font; +use PhpOffice\PhpPresentation\Style\Outline; use PhpOffice\PhpPresentation\Style\SchemeColor; use PhpOffice\PhpPresentation\Style\Shadow; use PhpOffice\PhpPresentation\Style\TextStyle; @@ -441,6 +443,7 @@ protected function loadSlide(string $sPart, string $baseFile): void $xmlReader = new XMLReader(); // @phpstan-ignore-next-line if ($xmlReader->getDomFromString($sPart)) { + $xmlReader->registerNamespace('c', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); // Core $oSlide = $this->oPhpPresentation->createSlide(); $this->oPhpPresentation->setActiveSlideIndex($this->oPhpPresentation->getSlideCount() - 1); @@ -504,7 +507,7 @@ protected function loadSlide(string $sPart, string $baseFile): void // Shapes $arrayElements = $xmlReader->getElements('/p:sld/p:cSld/p:spTree/*'); - $this->loadSlideShapes($oSlide, $arrayElements, $xmlReader); + $this->loadSlideShapes($xmlReader, $oSlide, $arrayElements, $xmlReader); // Layout $oSlide = $this->oPhpPresentation->getActiveSlide(); @@ -539,7 +542,7 @@ protected function loadMasterSlide(string $sPart, string $baseFile): void // Shapes $arrayElements = $xmlReader->getElements('/p:sldMaster/p:cSld/p:spTree/*'); - $this->loadSlideShapes($oSlideMaster, $arrayElements, $xmlReader); + $this->loadSlideShapes($xmlReader, $oSlideMaster, $arrayElements, $xmlReader); // Header & Footer @@ -576,17 +579,17 @@ protected function loadMasterSlide(string $sPart, string $baseFile): void } if ($oElementLvl->hasAttribute('marL')) { $val = (int) $oElementLvl->getAttribute('marL'); - $val = CommonDrawing::emuToPixels((int) $val); + $val = (int) CommonDrawing::emuToPixels((int) $val); $oRTParagraph->getAlignment()->setMarginLeft($val); } if ($oElementLvl->hasAttribute('marR')) { $val = (int) $oElementLvl->getAttribute('marR'); - $val = CommonDrawing::emuToPixels((int) $val); + $val = (int) CommonDrawing::emuToPixels((int) $val); $oRTParagraph->getAlignment()->setMarginRight($val); } if ($oElementLvl->hasAttribute('indent')) { $val = (int) $oElementLvl->getAttribute('indent'); - $val = CommonDrawing::emuToPixels((int) $val); + $val = (int) CommonDrawing::emuToPixels((int) $val); $oRTParagraph->getAlignment()->setIndent($val); } $oElementLvlDefRPR = $xmlReader->getElement('a:defRPr', $oElementLvl); @@ -694,7 +697,7 @@ protected function loadLayoutSlide(string $sPart, string $baseFile, SlideMaster // Shapes $oElements = $xmlReader->getElements('/p:sldLayout/p:cSld/p:spTree/*'); - $this->loadSlideShapes($oSlideLayout, $oElements, $xmlReader); + $this->loadSlideShapes($xmlReader, $oSlideLayout, $oElements, $xmlReader); $this->arraySlideLayouts[$baseFile] = &$oSlideLayout; return $oSlideLayout; @@ -792,7 +795,7 @@ protected function loadSlideNote(string $baseFile, Slide $oSlide): void $oNote = $oSlide->getNote(); $arrayElements = $xmlReader->getElements('/p:notes/p:cSld/p:spTree/*'); - $this->loadSlideShapes($oNote, $arrayElements, $xmlReader); + $this->loadSlideShapes($xmlReader, $oNote, $arrayElements, $xmlReader); } } @@ -871,20 +874,20 @@ protected function loadShapeDrawing(XMLReader $document, DOMElement $node, Abstr $oElement = $document->getElement('p:spPr/a:xfrm/a:off', $node); if ($oElement instanceof DOMElement) { if ($oElement->hasAttribute('x')) { - $oShape->setOffsetX(CommonDrawing::emuToPixels((int) $oElement->getAttribute('x'))); + $oShape->setOffsetX((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('x'))); } if ($oElement->hasAttribute('y')) { - $oShape->setOffsetY(CommonDrawing::emuToPixels((int) $oElement->getAttribute('y'))); + $oShape->setOffsetY((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('y'))); } } $oElement = $document->getElement('p:spPr/a:xfrm/a:ext', $node); if ($oElement instanceof DOMElement) { if ($oElement->hasAttribute('cx')) { - $oShape->setWidth(CommonDrawing::emuToPixels((int) $oElement->getAttribute('cx'))); + $oShape->setWidth((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('cx'))); } if ($oElement->hasAttribute('cy')) { - $oShape->setHeight(CommonDrawing::emuToPixels((int) $oElement->getAttribute('cy'))); + $oShape->setHeight((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('cy'))); } } // Load shape effects @@ -912,10 +915,10 @@ protected function loadShadow(XMLReader $document, DOMElement $node): ?Shadow $oShadow->setVisible(true); $oShadow->setType($type); if ($nodeShadow->hasAttribute('blurRad')) { - $oShadow->setBlurRadius(CommonDrawing::emuToPixels((int) $nodeShadow->getAttribute('blurRad'))); + $oShadow->setBlurRadius((int) CommonDrawing::emuToPixels((int) $nodeShadow->getAttribute('blurRad'))); } if ($nodeShadow->hasAttribute('dist')) { - $oShadow->setDistance(CommonDrawing::emuToPixels((int) $nodeShadow->getAttribute('dist'))); + $oShadow->setDistance((int) CommonDrawing::emuToPixels((int) $nodeShadow->getAttribute('dist'))); } if ($nodeShadow->hasAttribute('dir')) { $oShadow->setDirection((int) CommonDrawing::angleToDegrees((int) $nodeShadow->getAttribute('dir'))); @@ -972,20 +975,20 @@ protected function loadShapeRichText(XMLReader $document, DOMElement $node, $oSl $oElement = $document->getElement('p:spPr/a:xfrm/a:off', $node); if ($oElement instanceof DOMElement) { if ($oElement->hasAttribute('x')) { - $oShape->setOffsetX(CommonDrawing::emuToPixels((int) $oElement->getAttribute('x'))); + $oShape->setOffsetX((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('x'))); } if ($oElement->hasAttribute('y')) { - $oShape->setOffsetY(CommonDrawing::emuToPixels((int) $oElement->getAttribute('y'))); + $oShape->setOffsetY((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('y'))); } } $oElement = $document->getElement('p:spPr/a:xfrm/a:ext', $node); if ($oElement instanceof DOMElement) { if ($oElement->hasAttribute('cx')) { - $oShape->setWidth(CommonDrawing::emuToPixels((int) $oElement->getAttribute('cx'))); + $oShape->setWidth((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('cx'))); } if ($oElement->hasAttribute('cy')) { - $oShape->setHeight(CommonDrawing::emuToPixels((int) $oElement->getAttribute('cy'))); + $oShape->setHeight((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('cy'))); } } @@ -1063,20 +1066,20 @@ protected function loadShapeTable(XMLReader $document, DOMElement $node, Abstrac $oElement = $document->getElement('p:xfrm/a:off', $node); if ($oElement instanceof DOMElement) { if ($oElement->hasAttribute('x')) { - $oShape->setOffsetX(CommonDrawing::emuToPixels((int) $oElement->getAttribute('x'))); + $oShape->setOffsetX((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('x'))); } if ($oElement->hasAttribute('y')) { - $oShape->setOffsetY(CommonDrawing::emuToPixels((int) $oElement->getAttribute('y'))); + $oShape->setOffsetY((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('y'))); } } $oElement = $document->getElement('p:xfrm/a:ext', $node); if ($oElement instanceof DOMElement) { if ($oElement->hasAttribute('cx')) { - $oShape->setWidth(CommonDrawing::emuToPixels((int) $oElement->getAttribute('cx'))); + $oShape->setWidth((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('cx'))); } if ($oElement->hasAttribute('cy')) { - $oShape->setHeight(CommonDrawing::emuToPixels((int) $oElement->getAttribute('cy'))); + $oShape->setHeight((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('cy'))); } } @@ -1085,7 +1088,7 @@ protected function loadShapeTable(XMLReader $document, DOMElement $node, Abstrac $oShape->createRow(); foreach ($arrayElements as $key => $oElement) { if ($oElement instanceof DOMElement && $oElement->getAttribute('w')) { - $oShape->getRow(0)->getCell($key)->setWidth(CommonDrawing::emuToPixels((int) $oElement->getAttribute('w'))); + $oShape->getRow(0)->getCell($key)->setWidth((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('w'))); } } @@ -1100,7 +1103,7 @@ protected function loadShapeTable(XMLReader $document, DOMElement $node, Abstrac $oRow = $oShape->createRow(); } if ($oElementRow->hasAttribute('h')) { - $oRow->setHeight(CommonDrawing::emuToPixels((int) $oElementRow->getAttribute('h'))); + $oRow->setHeight((int) CommonDrawing::emuToPixels((int) $oElementRow->getAttribute('h'))); } $arrayElementsCell = $document->getElements('a:tc', $oElementRow); foreach ($arrayElementsCell as $keyCell => $oElementCell) { @@ -1133,16 +1136,16 @@ protected function loadShapeTable(XMLReader $document, DOMElement $node, Abstrac $oCell->getParagraph(0)->getAlignment()->setVertical($oElementTcPr->getAttribute('anchor')); } if ($oElementTcPr->hasAttribute('marB')) { - $oCell->getParagraph(0)->getAlignment()->setMarginBottom((int) $oElementTcPr->getAttribute('marB')); + $oCell->getParagraph(0)->getAlignment()->setMarginBottom(CommonDrawing::emuToPixels((int) $oElementTcPr->getAttribute('marB'))); } if ($oElementTcPr->hasAttribute('marL')) { - $oCell->getParagraph(0)->getAlignment()->setMarginLeft((int) $oElementTcPr->getAttribute('marL')); + $oCell->getParagraph(0)->getAlignment()->setMarginLeft(CommonDrawing::emuToPixels((int) $oElementTcPr->getAttribute('marL'))); } if ($oElementTcPr->hasAttribute('marR')) { - $oCell->getParagraph(0)->getAlignment()->setMarginRight((int) $oElementTcPr->getAttribute('marR')); + $oCell->getParagraph(0)->getAlignment()->setMarginRight(CommonDrawing::emuToPixels((int) $oElementTcPr->getAttribute('marR'))); } if ($oElementTcPr->hasAttribute('marT')) { - $oCell->getParagraph(0)->getAlignment()->setMarginTop((int) $oElementTcPr->getAttribute('marT')); + $oCell->getParagraph(0)->getAlignment()->setMarginTop(CommonDrawing::emuToPixels((int) $oElementTcPr->getAttribute('marT'))); } } @@ -1182,6 +1185,232 @@ protected function loadShapeTable(XMLReader $document, DOMElement $node, Abstrac } } + protected function loadShapeChart(XMLReader $document, DOMElement $node, AbstractSlide $oSlide): void + { + $this->fileRels = $oSlide->getRelsIndex(); + + $oShape = new Chart(); + + $oElement = $document->getElement('p:cNvPr', $node); + if ($oElement instanceof DOMElement) { + if ($oElement->hasAttribute('name')) { + $oShape->setName($oElement->getAttribute('name')); + } + if ($oElement->hasAttribute('descr')) { + $oShape->setDescription($oElement->getAttribute('descr')); + } + } + + $oElement = $document->getElement('p:xfrm/a:off', $node); + if ($oElement instanceof DOMElement) { + if ($oElement->hasAttribute('x')) { + $oShape->setOffsetX((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('x'))); + } + if ($oElement->hasAttribute('y')) { + $oShape->setOffsetY((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('y'))); + } + } + + $oElement = $document->getElement('p:xfrm/a:ext', $node); + if ($oElement instanceof DOMElement) { + if ($oElement->hasAttribute('cx')) { + $oShape->setWidth((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('cx'))); + } + if ($oElement->hasAttribute('cy')) { + $oShape->setHeight((int) CommonDrawing::emuToPixels((int) $oElement->getAttribute('cy'))); + } + } + + $chartElement = $document->getElement('a:graphic/a:graphicData/c:chart', $node); + if ($chartElement->hasAttribute('r:id') && isset($this->arrayRels[$this->fileRels][$chartElement->getAttribute('r:id')]['Target'])) { + $pathImage = 'ppt/slides/' . $this->arrayRels[$this->fileRels][$chartElement->getAttribute('r:id')]['Target']; + $pathImage = explode('/', $pathImage); + foreach ($pathImage as $key => $partPath) { + if ('..' == $partPath) { + unset($pathImage[$key - 1], $pathImage[$key]); + } + } + $pathChart = implode('/', $pathImage); + $fileChart = $this->oZip->getFromName($pathChart); + if (false !== $fileChart) { + $xmlReader = new XMLReader(); + // @phpstan-ignore-next-line + if ($xmlReader->getDomFromString($fileChart)) { + if ($oElement = $xmlReader->getElement('/c:chartSpace/c:chart/c:autoTitleDeleted')) { + $oShape->getTitle()->setVisible(false); + } + + if ($oElement = $xmlReader->getElement('/c:chartSpace/c:chart/c:plotArea/c:barChart')) { + $shapeType = new Chart\Type\Bar(); + + $elementBarDir = $xmlReader->getElement('c:barDir', $oElement); + if ($elementBarDir instanceof DOMElement) { + $shapeType->setBarDirection($elementBarDir->getAttribute('val')); + } + + $elementGrouping = $xmlReader->getElement('c:grouping', $oElement); + if ($elementGrouping instanceof DOMElement) { + $shapeType->setBarGrouping($elementGrouping->getAttribute('val')); + } + + $elementSeries = $xmlReader->getElements('c:ser', $oElement); + foreach ($elementSeries as $elementSerie) { + $series = new Chart\Series(); + if ($elementTitle = $xmlReader->getElement('c:tx/c:strRef/c:strCache/c:pt/c:v', $elementSerie)) { + $series->setTitle($elementTitle->nodeValue); + } + + $numPoints = 0; + $elementCategory = $xmlReader->getElement('c:cat/c:strRef/c:strCache', $elementSerie); + if ($elementCategoryNumPoints = $xmlReader->getElement('c:ptCount', $elementCategory)) { + $numPoints = (int) $elementCategoryNumPoints->getAttribute('val'); + } + $elementValue = $xmlReader->getElement('c:val/c:numRef/c:numCache', $elementSerie); + for ($inc = 0; $inc < $numPoints; ++$inc) { + $key = ''; + $val = '0'; + if ($subElementCategory = $xmlReader->getElement('c:pt[@idx="' . $inc . '"]/c:v', $elementCategory)) { + $key = $subElementCategory->nodeValue; + } + if ($subElementValue = $xmlReader->getElement('c:pt[@idx="' . $inc . '"]/c:v', $elementValue)) { + $val = $subElementValue->nodeValue; + } + $series->addValue($key, $val); + } + + if ($elementFill = $xmlReader->getElement('c:spPr', $elementSerie)) { + $series->setFill( + $this->loadStyleFill($xmlReader, $elementFill) + ); + } + + if ($elementFill = $xmlReader->getElement('a:ln', $elementSerie)) { + $series->setOutline( + $this->loadStyleOutline($xmlReader, $elementFill) + ); + } + + if ($elementShowLegendKey = $xmlReader->getElement('c:dLbls/c:showLegendKey', $elementSerie)) { + $series->setShowLegendKey((bool) $elementShowLegendKey->getAttribute('val')); + } + + if ($elementShowVal = $xmlReader->getElement('c:dLbls/c:showVal', $elementSerie)) { + $series->setShowValue((bool) $elementShowVal->getAttribute('val')); + } + + if ($elementShowCatName = $xmlReader->getElement('c:dLbls/c:showCatName', $elementSerie)) { + $series->setShowCategoryName((bool) $elementShowCatName->getAttribute('val')); + } + + if ($elementShowSerName = $xmlReader->getElement('c:dLbls/c:showSerName', $elementSerie)) { + $series->setShowSeriesName((bool) $elementShowSerName->getAttribute('val')); + } + + if ($elementShowPercent = $xmlReader->getElement('c:dLbls/c:showPercent', $elementSerie)) { + $series->setShowPercentage((bool) $elementShowPercent->getAttribute('val')); + } + + if ($elementShowLeaderLines = $xmlReader->getElement('c:dLbls/c:showLeaderLines', $elementSerie)) { + $series->setShowLeaderLines((bool) $elementShowLeaderLines->getAttribute('val')); + } + + $shapeType->addSeries($series); + } + + $elementGapWidth = $xmlReader->getElement('c:gapWidth', $oElement); + if ($elementGapWidth instanceof DOMElement) { + $shapeType->setGapWidthPercent((int) $elementGapWidth->getAttribute('val')); + } + + $elementOverlap = $xmlReader->getElement('c:overlap', $oElement); + if ($elementOverlap instanceof DOMElement) { + $shapeType->setOverlapWidthPercent((int) $elementOverlap->getAttribute('val')); + } + + $oShape->getPlotArea()->setType($shapeType); + } + + if ($oElement = $xmlReader->getElement('/c:chartSpace/c:chart/c:plotArea/c:catAx')) { + if ($elementOrientation = $xmlReader->getElement('c:scaling/c:orientation', $oElement)) { + $oShape->getPlotArea()->getAxisX()->setIsReversedOrder( + (bool) ($elementOrientation->getAttribute('val') === 'maxMin') + ); + } + if ($elementDelete = $xmlReader->getElement('c:delete', $oElement)) { + $oShape->getPlotArea()->getAxisX()->setIsVisible( + (bool) ($elementDelete->getAttribute('val') === '0') + ); + } + if ($elementMajorTickMark = $xmlReader->getElement('c:majorTickMark', $oElement)) { + $oShape->getPlotArea()->getAxisX()->setMajorTickMark($elementMajorTickMark->getAttribute('val')); + } + if ($elementMinorTickMark = $xmlReader->getElement('c:minorTickMark', $oElement)) { + $oShape->getPlotArea()->getAxisX()->setMajorTickMark($elementMinorTickMark->getAttribute('val')); + } + if ($elementTickLabelPosition = $xmlReader->getElement('c:tickLblPos', $oElement)) { + $oShape->getPlotArea()->getAxisX()->setTickLabelPosition($elementTickLabelPosition->getAttribute('val')); + } + if ($elementCrosses = $xmlReader->getElement('c:crosses', $oElement)) { + $oShape->getPlotArea()->getAxisX()->setCrossesAt($elementCrosses->getAttribute('val')); + } + + if ($elementFill = $xmlReader->getElement('c:spPr', $oElement)) { + $outline = $this->loadStyleOutline($xmlReader, $elementFill); + if ($outline) { + $oShape->getPlotArea()->getAxisX()->setOutline($outline); + } + } + } + + if ($oElement = $xmlReader->getElement('/c:chartSpace/c:chart/c:plotArea/c:valAx')) { + if ($elementOrientation = $xmlReader->getElement('c:scaling/c:orientation', $oElement)) { + $oShape->getPlotArea()->getAxisY()->setIsReversedOrder( + (bool) ($elementOrientation->getAttribute('val') === 'maxMin') + ); + } + if ($elementDelete = $xmlReader->getElement('c:delete', $oElement)) { + $oShape->getPlotArea()->getAxisY()->setIsVisible( + (bool) ($elementDelete->getAttribute('val') === '0') + ); + } + if ($elementMajorTickMark = $xmlReader->getElement('c:majorTickMark', $oElement)) { + $oShape->getPlotArea()->getAxisY()->setMajorTickMark($elementMajorTickMark->getAttribute('val')); + } + if ($elementMinorTickMark = $xmlReader->getElement('c:minorTickMark', $oElement)) { + $oShape->getPlotArea()->getAxisY()->setMajorTickMark($elementMinorTickMark->getAttribute('val')); + } + if ($elementTickLabelPosition = $xmlReader->getElement('c:tickLblPos', $oElement)) { + $oShape->getPlotArea()->getAxisY()->setTickLabelPosition($elementTickLabelPosition->getAttribute('val')); + } + if ($elementCrosses = $xmlReader->getElement('c:crosses', $oElement)) { + $oShape->getPlotArea()->getAxisY()->setCrossesAt($elementCrosses->getAttribute('val')); + } + if ($elementFill = $xmlReader->getElement('c:spPr/a:ln', $oElement)) { + if ($outline = $this->loadStyleOutline($xmlReader, $elementFill)) { + $oShape->getPlotArea()->getAxisY()->setOutline($outline); + } + } + } + + if ($oElement = $xmlReader->getElement('/c:chartSpace/c:chart/c:legend')) { + $oShape->getLegend()->setVisible(true); + + if ($elementLegendPos = $xmlReader->getElement('c:legendPos', $oElement)) { + $oShape->getLegend()->setPosition($elementLegendPos->getAttribute('val')); + } + } else { + $oShape->getLegend()->setVisible(false); + } + + if ($oElement = $xmlReader->getElement('/c:chartSpace/c:chart/c:dispBlanksAs')) { + $oShape->setDisplayBlankAs($oElement->getAttribute('val')); + } + } + } + $oSlide->addShape($oShape); + } + } + /** * @param Cell|RichText $oShape */ @@ -1206,7 +1435,7 @@ protected function loadParagraph(XMLReader $document, DOMElement $oElement, $oSh $oParagraph->getAlignment()->setMarginRight(CommonDrawing::emuToPixels((int) $oSubElement->getAttribute('marR'))); } if ($oSubElement->hasAttribute('indent')) { - $oParagraph->getAlignment()->setIndent(CommonDrawing::emuToPixels((int) $oSubElement->getAttribute('indent'))); + $oParagraph->getAlignment()->setIndent((int) CommonDrawing::emuToPixels((int) $oSubElement->getAttribute('indent'))); } if ($oSubElement->hasAttribute('lvl')) { $oParagraph->getAlignment()->setLevel((int) $oSubElement->getAttribute('lvl')); @@ -1390,7 +1619,7 @@ protected function loadHyperlink(XMLReader $xmlReader, DOMElement $element, Hype protected function loadStyleBorder(XMLReader $xmlReader, DOMElement $oElement, Border $oBorder): void { if ($oElement->hasAttribute('w')) { - $oBorder->setLineWidth((int) ((int) $oElement->getAttribute('w') / 12700)); + $oBorder->setLineWidth(CommonDrawing::emuToPixels((int) $oElement->getAttribute('w'))); } if ($oElement->hasAttribute('cmpd')) { $oBorder->setLineStyle($oElement->getAttribute('cmpd')); @@ -1468,6 +1697,24 @@ protected function loadStyleFill(XMLReader $xmlReader, DOMElement $oElement): ?F return null; } + protected function loadStyleOutline(XMLReader $xmlReader, DOMElement $oElement): ?Outline + { + if ($element = $xmlReader->getElement('a:ln', $oElement)) { + $outline = new Outline(); + + $outline->setWidth((int) CommonDrawing::emuToPixels((int) $element->getAttribute('w'))); + + $fill = $this->loadStyleFill($xmlReader, $element); + if ($fill) { + $outline->setFill($fill); + } + + return $outline; + } + + return null; + } + protected function loadRels(string $fileRels): void { $sPart = $this->oZip->getFromName($fileRels); @@ -1494,7 +1741,7 @@ protected function loadRels(string $fileRels): void * * @internal param $baseFile */ - protected function loadSlideShapes($oSlide, DOMNodeList $oElements, XMLReader $xmlReader): void + protected function loadSlideShapes(XMLReader $document, $oSlide, DOMNodeList $oElements, XMLReader $xmlReader): void { foreach ($oElements as $oNode) { if (!($oNode instanceof DOMElement)) { @@ -1503,7 +1750,12 @@ protected function loadSlideShapes($oSlide, DOMNodeList $oElements, XMLReader $x switch ($oNode->tagName) { case 'p:graphicFrame': if ($oSlide instanceof AbstractSlide) { - $this->loadShapeTable($xmlReader, $oNode, $oSlide); + if ($document->elementExists('a:graphic/a:graphicData/a:tbl', $oNode)) { + $this->loadShapeTable($xmlReader, $oNode, $oSlide); + } + if ($document->elementExists('a:graphic/a:graphicData/c:chart', $oNode)) { + $this->loadShapeChart($xmlReader, $oNode, $oSlide); + } } break; diff --git a/src/PhpPresentation/Reader/PowerPoint97.php b/src/PhpPresentation/Reader/PowerPoint97.php index 8a416d7f3..6882c53b7 100644 --- a/src/PhpPresentation/Reader/PowerPoint97.php +++ b/src/PhpPresentation/Reader/PowerPoint97.php @@ -2015,25 +2015,25 @@ private function readRecordOfficeArtFOPT(string $stream, int $pos): array case 0x0081: // Text : dxTextLeft //@link : http://msdn.microsoft.com/en-us/library/dd953234(v=office.12).aspx - $arrayReturn['insetLeft'] = \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); + $arrayReturn['insetLeft'] = (int) \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); break; case 0x0082: // Text : dyTextTop //@link : http://msdn.microsoft.com/en-us/library/dd925068(v=office.12).aspx - $arrayReturn['insetTop'] = \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); + $arrayReturn['insetTop'] = (int) \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); break; case 0x0083: // Text : dxTextRight //@link : http://msdn.microsoft.com/en-us/library/dd906782(v=office.12).aspx - $arrayReturn['insetRight'] = \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); + $arrayReturn['insetRight'] = (int) \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); break; case 0x0084: // Text : dyTextBottom //@link : http://msdn.microsoft.com/en-us/library/dd772858(v=office.12).aspx - $arrayReturn['insetBottom'] = \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); + $arrayReturn['insetBottom'] = (int) \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); break; case 0x0085: @@ -2194,7 +2194,7 @@ private function readRecordOfficeArtFOPT(string $stream, int $pos): array case 0x01CB: // Line Style : lineWidth //@link : http://msdn.microsoft.com/en-us/library/dd926964(v=office.12).aspx - $arrayReturn['lineWidth'] = \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); + $arrayReturn['lineWidth'] = (int) \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); break; case 0x01D6: @@ -2220,13 +2220,13 @@ private function readRecordOfficeArtFOPT(string $stream, int $pos): array case 0x0205: // Shadow Style : shadowOffsetX //@link : http://msdn.microsoft.com/en-us/library/dd945280(v=office.12).aspx - $arrayReturn['shadowOffsetX'] = \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); + $arrayReturn['shadowOffsetX'] = (int) \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); break; case 0x0206: // Shadow Style : shadowOffsetY //@link : http://msdn.microsoft.com/en-us/library/dd907855(v=office.12).aspx - $arrayReturn['shadowOffsetY'] = \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); + $arrayReturn['shadowOffsetY'] = (int) \PhpOffice\Common\Drawing::emuToPixels((int) $opt['op']); break; case 0x023F: diff --git a/src/PhpPresentation/Slide.php b/src/PhpPresentation/Slide.php index ea4864913..6927d0e41 100644 --- a/src/PhpPresentation/Slide.php +++ b/src/PhpPresentation/Slide.php @@ -82,7 +82,9 @@ public function __construct(?PhpPresentation $pParent = null) $oMasterSlide = reset($arrayMasterSlides); $arraySlideLayouts = $oMasterSlide->getAllSlideLayouts(); $oSlideLayout = reset($arraySlideLayouts); - $this->setSlideLayout($oSlideLayout); + if ($oSlideLayout) { + $this->setSlideLayout($oSlideLayout); + } } // Set note $this->setNote(new Note()); diff --git a/src/PhpPresentation/Style/Border.php b/src/PhpPresentation/Style/Border.php index 6dea6a395..4961c6c9c 100644 --- a/src/PhpPresentation/Style/Border.php +++ b/src/PhpPresentation/Style/Border.php @@ -48,7 +48,7 @@ class Border implements ComparableInterface /** * Line width. * - * @var int + * @var float */ private $lineWidth = 1; @@ -86,17 +86,17 @@ public function __construct() } /** - * Get line width (in points). + * Get line width (in pixels). */ - public function getLineWidth(): int + public function getLineWidth(): float { return $this->lineWidth; } /** - * Set line width (in points). + * Set line width (in pixels). */ - public function setLineWidth(int $pValue = 1): self + public function setLineWidth(float $pValue = 1): self { $this->lineWidth = $pValue; diff --git a/src/PhpPresentation/Writer/HTML.php b/src/PhpPresentation/Writer/HTML.php index 669423604..fda0ba0ff 100644 --- a/src/PhpPresentation/Writer/HTML.php +++ b/src/PhpPresentation/Writer/HTML.php @@ -109,7 +109,10 @@ protected function getHtmlContent(): string } return '' - . '' + . '' + . '' + . '' + . '' . '' . $this->bodyList . $this->bodySlides . '' . ''; } diff --git a/src/PhpPresentation/Writer/ODPresentation/Styles.php b/src/PhpPresentation/Writer/ODPresentation/Styles.php index 21e1fb2c9..e3f2f8cbe 100644 --- a/src/PhpPresentation/Writer/ODPresentation/Styles.php +++ b/src/PhpPresentation/Writer/ODPresentation/Styles.php @@ -150,8 +150,8 @@ protected function writePart(): string $objWriter->writeAttribute('fo:margin-bottom', '0cm'); $objWriter->writeAttribute('fo:margin-left', '0cm'); $objWriter->writeAttribute('fo:margin-right', '0cm'); - $objWriter->writeAttribute('fo:page-width', Text::numberFormat(CommonDrawing::pixelsToCentimeters(CommonDrawing::emuToPixels((int) $this->getPresentation()->getLayout()->getCX())), 1) . 'cm'); - $objWriter->writeAttribute('fo:page-height', Text::numberFormat(CommonDrawing::pixelsToCentimeters(CommonDrawing::emuToPixels((int) $this->getPresentation()->getLayout()->getCY())), 1) . 'cm'); + $objWriter->writeAttribute('fo:page-width', Text::numberFormat(CommonDrawing::pixelsToCentimeters((int) CommonDrawing::emuToPixels((int) $this->getPresentation()->getLayout()->getCX())), 1) . 'cm'); + $objWriter->writeAttribute('fo:page-height', Text::numberFormat(CommonDrawing::pixelsToCentimeters((int) CommonDrawing::emuToPixels((int) $this->getPresentation()->getLayout()->getCY())), 1) . 'cm'); $printOrientation = 'portrait'; if ($this->getPresentation()->getLayout()->getCX() > $this->getPresentation()->getLayout()->getCY()) { $printOrientation = 'landscape'; diff --git a/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php b/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php index 115cf0a16..869e0e2b4 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/AbstractDecoratorWriter.php @@ -76,12 +76,9 @@ protected function writeBorder(XMLWriter $objWriter, Border $pBorder, string $pE $lineStyle = Border::LINE_SINGLE; } - // Line width - $lineWidth = 12700 * $pBorder->getLineWidth(); - // a:ln $pElementName $objWriter->startElement('a:ln' . $pElementName); - $objWriter->writeAttribute('w', $lineWidth); + $objWriter->writeAttribute('w', (int) CommonDrawing::pixelsToEmu($pBorder->getLineWidth())); $objWriter->writeAttribute('cap', 'flat'); $objWriter->writeAttribute('cmpd', $lineStyle); $objWriter->writeAttribute('algn', 'ctr'); @@ -140,12 +137,6 @@ protected function writeColor(XMLWriter $objWriter, Color $color, ?int $alpha = $objWriter->endElement(); } - /** - * Write Fill. - * - * @param XMLWriter $objWriter XML Writer - * @param null|Fill $pFill Fill style - */ protected function writeFill(XMLWriter $objWriter, ?Fill $pFill): void { if (!$pFill) { @@ -177,12 +168,6 @@ protected function writeFill(XMLWriter $objWriter, ?Fill $pFill): void $this->writePatternFill($objWriter, $pFill); } - /** - * Write Solid Fill. - * - * @param XMLWriter $objWriter XML Writer - * @param Fill $pFill Fill style - */ protected function writeSolidFill(XMLWriter $objWriter, Fill $pFill): void { // a:gradFill @@ -191,12 +176,6 @@ protected function writeSolidFill(XMLWriter $objWriter, Fill $pFill): void $objWriter->endElement(); } - /** - * Write Gradient Fill. - * - * @param XMLWriter $objWriter XML Writer - * @param Fill $pFill Fill style - */ protected function writeGradientFill(XMLWriter $objWriter, Fill $pFill): void { // a:gradFill @@ -227,12 +206,6 @@ protected function writeGradientFill(XMLWriter $objWriter, Fill $pFill): void $objWriter->endElement(); } - /** - * Write Pattern Fill. - * - * @param XMLWriter $objWriter XML Writer - * @param Fill $pFill Fill style - */ protected function writePatternFill(XMLWriter $objWriter, Fill $pFill): void { // a:pattFill @@ -255,15 +228,12 @@ protected function writePatternFill(XMLWriter $objWriter, Fill $pFill): void $objWriter->endElement(); } - /** - * Write Outline. - */ protected function writeOutline(XMLWriter $objWriter, ?Outline $oOutline): void { if (!$oOutline) { return; } - // Width : pts + // Width : pixels $width = CommonDrawing::pixelsToEmu($oOutline->getWidth()); // a:ln diff --git a/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php b/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php index 38dc4eec4..2f0544fd7 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/AbstractSlide.php @@ -571,7 +571,7 @@ protected function writeParagraphStyles(XMLWriter $objWriter, Paragraph $paragra $objWriter->writeAttribute('fontAlgn', $paragraph->getAlignment()->getVertical()); $objWriter->writeAttribute('marL', CommonDrawing::pixelsToEmu($paragraph->getAlignment()->getMarginLeft())); $objWriter->writeAttribute('marR', CommonDrawing::pixelsToEmu($paragraph->getAlignment()->getMarginRight())); - $objWriter->writeAttribute('indent', CommonDrawing::pixelsToEmu($paragraph->getAlignment()->getIndent())); + $objWriter->writeAttribute('indent', (int) CommonDrawing::pixelsToEmu($paragraph->getAlignment()->getIndent())); $objWriter->writeAttribute('lvl', $paragraph->getAlignment()->getLevel()); $objWriter->startElement('a:lnSpc'); diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php index 40ac9d44a..a9a0ec758 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptCharts.php @@ -431,7 +431,7 @@ protected function writeTitle(XMLWriter $objWriter, Title $subject): void $objWriter->writeAttribute('fontAlgn', $subject->getAlignment()->getVertical()); $objWriter->writeAttribute('marL', CommonDrawing::pixelsToEmu($subject->getAlignment()->getMarginLeft())); $objWriter->writeAttribute('marR', CommonDrawing::pixelsToEmu($subject->getAlignment()->getMarginRight())); - $objWriter->writeAttribute('indent', CommonDrawing::pixelsToEmu($subject->getAlignment()->getIndent())); + $objWriter->writeAttribute('indent', (int) CommonDrawing::pixelsToEmu($subject->getAlignment()->getIndent())); $objWriter->writeAttribute('lvl', $subject->getAlignment()->getLevel()); // a:defRPr @@ -546,11 +546,6 @@ protected function writePlotArea(XMLWriter $objWriter, PlotArea $subject, Chart $objWriter->endElement(); } - /** - * Write Legend. - * - * @param XMLWriter $objWriter XML Writer - */ protected function writeLegend(XMLWriter $objWriter, Legend $subject): void { // c:legend @@ -600,7 +595,7 @@ protected function writeLegend(XMLWriter $objWriter, Legend $subject): void $objWriter->writeAttribute('fontAlgn', $subject->getAlignment()->getVertical()); $objWriter->writeAttribute('marL', CommonDrawing::pixelsToEmu($subject->getAlignment()->getMarginLeft())); $objWriter->writeAttribute('marR', CommonDrawing::pixelsToEmu($subject->getAlignment()->getMarginRight())); - $objWriter->writeAttribute('indent', CommonDrawing::pixelsToEmu($subject->getAlignment()->getIndent())); + $objWriter->writeAttribute('indent', (int) CommonDrawing::pixelsToEmu($subject->getAlignment()->getIndent())); $objWriter->writeAttribute('lvl', $subject->getAlignment()->getLevel()); // a:defRPr diff --git a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideMasters.php b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideMasters.php index 8c289bfc4..95abfb339 100644 --- a/src/PhpPresentation/Writer/PowerPoint2007/PptSlideMasters.php +++ b/src/PhpPresentation/Writer/PowerPoint2007/PptSlideMasters.php @@ -211,7 +211,7 @@ protected function writeSlideMaster(SlideMaster $pSlide): string $objWriter->writeAttributeIf( 0 != $oParagraph->getAlignment()->getIndent(), 'indent', - CommonDrawing::pixelsToEmu($oParagraph->getAlignment()->getIndent()) + (int) CommonDrawing::pixelsToEmu($oParagraph->getAlignment()->getIndent()) ); $objWriter->startElement('a:defRPr'); $objWriter->writeAttributeIf(10 != $oParagraph->getFont()->getSize(), 'sz', $oParagraph->getFont()->getSize() * 100); diff --git a/tests/PhpPresentation/Tests/Reader/PowerPoint2007Test.php b/tests/PhpPresentation/Tests/Reader/PowerPoint2007Test.php index bdbaf7a96..a4b8ad67b 100644 --- a/tests/PhpPresentation/Tests/Reader/PowerPoint2007Test.php +++ b/tests/PhpPresentation/Tests/Reader/PowerPoint2007Test.php @@ -25,6 +25,7 @@ use PhpOffice\PhpPresentation\Exception\InvalidFileFormatException; use PhpOffice\PhpPresentation\PresentationProperties; use PhpOffice\PhpPresentation\Reader\PowerPoint2007; +use PhpOffice\PhpPresentation\Shape\Chart; use PhpOffice\PhpPresentation\Shape\Drawing\Gd; use PhpOffice\PhpPresentation\Shape\RichText; use PhpOffice\PhpPresentation\Shape\RichText\Paragraph; @@ -594,6 +595,28 @@ public function testLoadFile01(): void self::assertEquals(Font::CAPITALIZATION_NONE, $oRichText->getFont()->getCapitalization()); } + public function testLoadFileChartBar(): void + { + $file = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/files/PPTX_ChartBar.pptx'; + $object = new PowerPoint2007(); + $oPhpPresentation = $object->load($file); + self::assertInstanceOf('PhpOffice\\PhpPresentation\\PhpPresentation', $oPhpPresentation); + // Document Properties + + // Slides + self::assertCount(3, $oPhpPresentation->getAllSlides()); + + // Slide 2 + $oSlide2 = $oPhpPresentation->getSlide(1); + $arrayShape = (array) $oSlide2->getShapeCollection(); + self::assertCount(2, $arrayShape); + // Slide 2 : Shape 2 + /** @var Chart $oShape */ + $oShape = $arrayShape[1]; + self::assertInstanceOf(Chart::class, $oShape); + self::assertInstanceOf(Chart\Type\Bar::class, $oShape->getPlotArea()->getType()); + } + public function testLoadFileWithoutImages(): void { $file = PHPPRESENTATION_TESTS_BASE_DIR . '/resources/files/Sample_12.pptx'; @@ -703,8 +726,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[0]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); self::assertCount(1, $arrayRichText); @@ -720,8 +743,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[1]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); self::assertCount(1, $arrayRichText); @@ -737,8 +760,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[2]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); self::assertCount(1, $arrayRichText); @@ -754,8 +777,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[3]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); self::assertCount(1, $arrayRichText); @@ -815,8 +838,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[0]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(0, $oParagraph->getAlignment()->getLevel()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); @@ -833,8 +856,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[1]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(1, $oParagraph->getAlignment()->getLevel()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); @@ -851,8 +874,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[2]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(1, $oParagraph->getAlignment()->getLevel()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); @@ -869,8 +892,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[3]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(1, $oParagraph->getAlignment()->getLevel()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); @@ -887,8 +910,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[4]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(25, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(0, $oParagraph->getAlignment()->getLevel()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); @@ -905,8 +928,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[5]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(1, $oParagraph->getAlignment()->getLevel()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); @@ -923,8 +946,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[6]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(1, $oParagraph->getAlignment()->getLevel()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); @@ -941,8 +964,8 @@ public function testLoadFileWithoutImages(): void $oParagraph = $arrayParagraphs[7]; self::assertEquals(Alignment::HORIZONTAL_LEFT, $oParagraph->getAlignment()->getHorizontal()); self::assertFalse($oParagraph->getAlignment()->isRTL()); -// $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); -// $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); + // $this->assertEquals(75, $oParagraph->getAlignment()->getMarginLeft()); + // $this->assertEquals(-25, $oParagraph->getAlignment()->getIndent()); self::assertEquals(1, $oParagraph->getAlignment()->getLevel()); self::assertEquals(Bullet::TYPE_BULLET, $oParagraph->getBulletStyle()->getBulletType()); $arrayRichText = $oParagraph->getRichTextElements(); diff --git a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php index b540b916d..21ff6c5ac 100644 --- a/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php +++ b/tests/PhpPresentation/Tests/Writer/PowerPoint2007/PptChartsTest.php @@ -789,7 +789,7 @@ public function testAxisXUnit(): void public function testAxisYUnit(): void { - $value = mt_rand(0, 100); + $value = mt_rand(1, 100); $oSeries = new Series('Downloads', $this->seriesData); $oLine = new Line(); @@ -1232,7 +1232,7 @@ public function testTypeLineMarkerBorder(): void $oShape->getPlotArea()->setType($oLine); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'w', 12700); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'w', 9525); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'cmpd', Border::LINE_SINGLE); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element . '/a:prstDash'); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element . '/a:prstDash', 'val', Border::DASH_SOLID); @@ -1646,7 +1646,7 @@ public function testTypeScatterMarkerBorder(): void $oShape->getPlotArea()->setType($oScatter); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element); - $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'w', 12700); + $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'w', 9525); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element, 'cmpd', Border::LINE_SINGLE); $this->assertZipXmlElementExists('ppt/charts/' . $oShape->getIndexedFilename(), $element . '/a:prstDash'); $this->assertZipXmlAttributeEquals('ppt/charts/' . $oShape->getIndexedFilename(), $element . '/a:prstDash', 'val', Border::DASH_SOLID); diff --git a/tests/resources/files/PPTX_ChartBar.pptx b/tests/resources/files/PPTX_ChartBar.pptx new file mode 100644 index 0000000000000000000000000000000000000000..ddd4e48838b582b6fa6f979ea64a9c5b9f50384a GIT binary patch literal 143784 zcmeFZWmFv9wl<2p1qe=Xhd}V)?(Xg`!Ciy9yG!Hl1b26LcXyYM$ zbMN?ijPB~HuGLjj)|6+?S~B9GV5mS)P*6ZracXKn|MY_W_^xehXkkbD_4jAlRHs-E z9a7)rGnZh}GxO?a0l=x2z(T5shj*03vQ8`}Y3@t|IvOvmxa`H-W#+nW%5;p;b%Y$@ zE*gR&JVZ?a()B`@_L7vf=-puv_2{&>*R#} z79vEg<4Q(k2K)0R7AbK!M{Nr3uIczedA>UU7QGjT&LS4)I^kfCTkyD-B|w!17Hz~; z)$6BYxF)B-J+zECB$SbrLiO4Q(ZV1=Kr;W9EuTKlFtE~>v9+?cqt&;vHT>#qX<-?& zEY(d17jW(pLV0gFCE0=MkPZd~4NXiOz_a4ta}4sG;M;Idm?? z0`{Bf`5u58W3WTCqSkzG$HgUeTqHq;l_boGj?7KOKsHm6-ujS;LkJH)Cm^nFuCd23 zDV9lZBaZYJ1eM$-XyaT;e58^NrMra*(v>_T4_TO|3@mvZ4=;N+M_9y;PSK7DCiCPC zgqR$iPN!~;q3o0u8o`o%b+)o+l+rd=hv*G?gnjA_)R|+m9?R(@v_6T4N2AwKMT+@6 zXFQmka-gp@CNF+rsbmV`cEr%|&6AOf_z^S}tsV2Qczqh3C)f6Fue#v-jZ*;siT-NQ zdT@*eZ;UMD%o_Ywg-^^1)VzfNXkFjSk3}N=qGvH8WG?4CWvrRmw(^7E6gZA9C8toi znhcET9|B7)Ufw;rZ%O2XvbjIA-QnJ8q+h{*%j7Jap-T}M2q@@pWrFn2GSRiR{wKKDRpm> z2{)h8#85#W1{XPn3T$&Q5aI6KayP+m4?2vMY})kb3@A&#`0Io#EoLREUw_^_#p*0hVXn=e)iZx#z0Djg z)}HN6&qe&y&TFj1;(p12#U2;0bKeN-=7g>O6^~*+O&h+QyK_%-7x6dWz@Cuyo<6ve z_QAVBEVsZc7Cg@4sPc6M@PC(N|ztj{#{1I7v# zOT;Na)!ZM2&$cv~(PW`v{v^`Q%cs#Cf1*AnRDDC8MuL?uO@?#E3UFHxYvS5D9m9Sx z5s>8jMP{K(iWRoHK-P9G)ad;uu`$wU1x0?c+v*ZDq@`*Ut=wSc`Ehpdijo!+;t1rX z(r7Eae$gpWf0=ez1?v|3I&qe0i;s86R^Chk9{y7oxu<-IB#UU{|(f8)K zey2U{#ce?UeUKAVj$a(HG(GC2M|cQz>TWL(Ba$DUMJC^Q4sqsWjAsJYduuP`Z*jbd z)gw!Oh=K$3@5DjF4@ph~46sz|t{s zOs8r^>>gI(BwdN;_{z?vXmR0E^{pm8Z5%m4ZmR}Kl~#oE8fmg(XD>=5euST%kkUf| zLU5ijl2DUgr!eV+PE;hY2%I^C=*=H@Z_&&h`bpqmIQ~-(wFs1j!k|uc$76y;-8R*C zq?yGcZ~b?pNtD1Z-wciLj~VhEr4=jF~t=Cn4*7b68rFEYowho z(E`C%=M%j?zQdSf7r0U^3dV!5^30ufCZ?cZt#CD$A>AHLXVP>x&1V5hs3`7pq(*Y- zx5>U=Nir~p<#JJy1A^Mvn*DYJ1{sNabD|Klqi|F92BsQ-U;Bu+M+n00U=3V_U-}V- z^@z26+}Un+`@yKNa6ys<SmWoFd1dsGbSYI%_;R6&Y-hG6-EWE%|@$EH9L89sOr9H6*7d$wuz z8wkx?gw;BhLs2#`=tpV2lOBdk#M-Qmz`*`M;fv?CNuCv#U(}c?NJWJk6awQOP*CFn zQjgUBc+z)}&|qTv8TzEGqMIS)54QKs>1H`9Z(pb+iB%H9N}#1SHIB`;TqsjxkxTY- z2;Ehy`38{9Z#4#z6UE(y9!m|hHlC}L^@em=+L{I*#E=CW`%+-qD1urzUVIwLB)k=l1S}AVS z#>&Eo-i+m5kTO!P1uvc8Pd&fiM;HP^Eq}mYX%?}zt5rRNZ{A!Z`MUVhzjnF!@_hO! zWlB?|Fxg*nai**+nUk9~&I;C{$6Ck}iJA-<-^A=k3){UTaYo@0k3j*9^~ViJrgI*f z>0kelVS;p3j7Bvp#yoskk~-J>S{!Oo%}u*Cf!N2Z9y}qeJ0Wq$_o?5LBO<08i9G0) z?ymW>0jQ$fVS_+imMK6cMxwhf0v%GUp?ogyo84q7o870rPF497aifZ=)D^|VUs`Qw zkHt1AA?^;uz;6BV6h*c0me}&k9UQ5!$z2k|U*Ag9LVX-D>!Kx|_9j+HGf>KxJ1zRg z1L-|A3{NEoBj{JTB(?|cElK7Ork`Z2_4e{FZ+H&NXTc4S6!_|3&GdyCalqf^*1m=0 zoVJqVWH%PDL&q4nIUx~Otxt1?bY+aBv}Me6IkO&#((sWViI&j}&7C;{Tb)P5G?LYA zvckB@nFrhf(8#(0WOcGZ0h~qQLb+LFb;MA8oJAxy$oGJ`uV~GDr)D=Ja#ljMfke>x zM!gIx2cX4}=Ti7GnQ|rxSTbr;@-cj0BP3ycn!ay>-N}bram^P&NFU|fR9j?vl~S-A zC~kxSF5&@64!#Dd`D?5Fs0Lw1S%k=OgazQEmBilk6LNV#-*tIV4Am82Nk>YTMIgqV zJ^e`Dti8zGGj!cj;lR`muBjU=j4^71b$!?klOPz|19T?HrJgWJVPY@17$lIgbx?*6 z&S0ufR3I><9(bltUhL zdZoe68e>a*8znllauz5e2gjm1uQrdoo>J6yTUx;|3r?&LYt(pvO|VqEreEzfW}ax; zO54~*H;AH!4302}`G7ArvaHBncE6|MV-aBp^ZxuAd8_6)a2PdBus=_@|7{R#99+kq z7Xu{{3(dD5Hq?tv#lG@D=WUp;Cz@v%#W7@U4lu|LQAx(LvEE3?lsHvJFqX9((Sh*c&*KenZN6S=o zhTLD}pHwO^zMX>eCpPT;Fs_+6?RQ|j!Z$I{cRI<yvYiiQS@% zLg9LFUIF?31mUK|Ldoqz>)b-nzL9Be9ro+Ur=i9q^Artv=?=Vbp)!13*S{Mk@H0zq z$T;~DWDu75?sM27`uDj76lCtyL-Yo;mV1LfCwz}?$tjj5`9pP+Mbq_-xh0mcoSv7E zD#@1s6P$?5;)l~OJ8$oK-+$Px>@|)a>Of*6FymOTineGXE8ncQ^GNaf8^>`w=;Bx+ z_jR*>?hDxsbXYXqzL;BbMg_~A-1o%LdXK#e{+KZ~5nDLD-woZV3{QBve+Gbt(@yq+ z4~M%xG2w*Yzs$eA;Rj8cAhlu&`x3(l`?eZz!ytwDw$8spEQ(c>;IfICIgc!gmge6rt2AkpETyvhsIc+RRxZ;K~1EQ zi|Pn(4qa+^ilQcNLK9slFh^gTkX_d^hs;lB9G96t;m#`qb;oaBS!Q&$Cm00jOk(!> z)hh9sS^l}HXZ8J$M_0yDU-gCn0npi_-eTWl8OwsZL`>w)l$cRYHm zJnDX1jXc&BnL*qhZ(=139T?ClfPB%C(*nx?#d*~7S?WnFz#H>IIEOSRSIh#MLuOPc zw_x(%@rejFrKV!;Gbj}yHl;JLFFF^PpT4Xd7wrb(e4;Ooj}U?WzBTcDHZ!Ts7&LocH0iN` zm;=8dSU7Mxw~j0Q+;K|B#T_ph@@YYG z#%*~nShcsx;4F{s;*}aNK=VsAF=l?%`sb*0?O~x-f*cSv@+@K%-ZJ5m5}~^MIf0U2 z6F-wm=n&S9#lIACma*_Q{B&I|Wp+r#NIlUslTTgx#-HR)q#{ZTb(ZfmMblbT0oG;; zgl=U}7P?TAKgV)TIt!b{%tVou6Y{BX_0uBs+*<~K)Dv~j(kPbt_Er6G)JHd=pSk(x z;Ei_5iYs6aJ!d7!2YJ_s8rW?ZTONK2W(Y=}3O@p!4-JWG@zLv-f}T)wkeW29`*prk zaH1a-HsW?HRs;6WewDfd#<1oWXE%uHUG~mk)hNE{5+Mg<9*Z&90sKP28k*&1P@5S4 zx7OTl{D^Zr_>aKaE#R7N{2ULV+r42^IG~30C|Dx$)(+SUQU}+b;_*UI;n>qmE)Iio6&rZQ3em&8kkR?V@}~MU@co^Wb*tj zKc~P{W{MP8MAK9D(_FY5*JJFI{6%B=6F=Kgo}75F)S0N)eewAnfRk9C%BW5DT{4JS zvrVtsYg9e<@Ji0Qu3^AjEgGVQ=)Chjhp(k<>F{b6MAREy1nuJe{cXHH0oRso$9~|^ zINFY{aw88YtQ<;zOSD_>!Cvuut$d}>;4ipKA|8$eUNrk9o8KjgMj^vcw zA8*$ge%U-9?*#K#!8d7~aItHS@a=NO)5$`*km-&u;bK0z7sqUww*b z#Q{-d#7}zVZ5+uLo`h7MU`Om6LLS?~d2I|N>}RQIBObY|W3MfNFG8JkSX|0i%c}!- z+;bXMcCDkg%>BOaL6GbV)|Hz&-LhNDagF)!&!6K^XH29X?a2CmdWB(U*7-g%f4$`ZXcPfJ|q?bBaVqX+_#LXsfmKjtx#eQ z2bWLqT1KW^L4m4V1GGN#zMIFPp`ql6fu< zlQdw8p6yXWQJ2(X3Z4Zh#qw3^#I2)Fy!_N5U0^Be5}V*?DA(QnycCq@s-9xYJ&|OK z=*t>G`q42uYmZ1PldB$6f&t`4y@gFH<)Lt2doH-Qb}^5&t0 zzH7$qx5nKaE>Rj7NLEG~)-Bom0dep9hQwzwYo%y1i7wQQP`HS0P3@)}gPzaks9Z(M zwtB~O9ct!>Ee$q#VRIq`YqlwZ3`*t#=-d<;M6}-@1M59*Fp0V|wXH6PIr^hB3||I% zZqak%?uhIA^w8CQ`QNqoD+01<)5~nRik>km3Y+l2Svw}4LmMmR$1&Re#1A5o;^!S7 z#3}!6I{Xi0%ihG$(vbGg=bsFCHGcTVG98lO{VR;#9XtsYGY*lx3^7v^)P&&DS^tcP zURNLwJ>t8E?ogGXxL`;QPqZx&g3H-%6pm=3GObVz*%j}1Dtzu?@96k)g?hA$*X5&a z9F-sw@tLt0Z+P%VHP6N#L5l$-w{J@U;4mh77U*e^i&34{dur9RLds*W6eV7pus~wr0}S;kv^(UD}Aa5 zm3wASraxa$ue+N;i9>w6`{dr*HkZMfjTV&$;qEec?;XKkE@s((>V2hqm9P%D#M5mav*qQvQ2?r?r7`fD ze3Mnqj=f3dA|>qZgH?9YeGoiN)hbL`&>prmZ5nZXi@+_@qRf@P)|abyG#lONwy!+a zXa5T$-q2=R&OZjs{R)PuQb};Jbb`F~QxtG4{1cBXPn#wdx*z8#{OWe3uwx)|OIh6J zc-#xIP3{T%YA=D!T6>|rWj-Ex+4+{xw53QYoK%TzUab^w*PY=c^ZXLO?aH|QWb{EM z`^9E`Eoa0+jkoHz)i1d9Ae7;sk{B&1@E5Q!j+S7eCJXd_cm%Ovq_Yt{R!UJ$f%)pANswolijYJgFcW&ioCy+*Mxs z;D6vvlTd#*!TuW!`xBJ@Uk&@e8utH=hT;8(3I7WL{(oZhe<8p#z<76n45BTJ=`8 zJX(8?0fE~Hg~sU?^UzSuDiMAa)7aEChmd+ z>~C=3;;fq|AM9eb?Cpa^xu%M z?>``6s~m(p)Ld~2R(py&V7?YJleYoMP><(w7~G~W2hK=psBSoo=!%ZpS3j+)Lz};p}m4QZQA9ElJrvFbf&eKI)&>mTgqC?ha@I z>Wq5#4X+@-tyHLdxqjIP8%Y1w5B~4i@UO`D{}0*lFL1&?wBZjr{@2c5=(x(_k8NgD zk8@=t9Gx|s)71VUd^boaIsF(#%ZhxY8Dqq@(=mVR&#yKiKXs zu0-y3uA6jq1OYidiFB-&1o$|iAy+QYUS5q~c9F=#o&A$G0Djmx8~fARq^BxXM`)Hk za=s4Tjaa$JUu%E#XB1rcFp8uHC0sakn-O3GW`m>bDq;?TuUxuYChp}cc;omJ*V{hwDsW6tu&4-W? zs`Fabb*!ILiLA*HuTV{G%rnm6KQ>wjt1!|`*$ZLLVlRIIbDfSsK4Jn(;QK{L0=IDp zz}w+u>M@d($LySSH*($+aTx*bbfm!J{SS`y(o)}WFS)6z#?Z`V#el#;q za;6QHUb=i)ZqB}JN*KLcQWMbhb%6GOV%}R`zK^McXtdkr_iTBvq{E{vk5Eo>cJr1% z=QJ2r?^pGD4J)LPmk*$ORICgU(OJ0DND4idn^dW50O6+W=nc1kpVY!zLf`*dq%2iQoK zPqZ?iFG8t7%qiO==$oC5BxcRM4h{#V>-|VZmHNRD@cglztfj<+ghFZ&*a@t%qmx1V z#H-#MEmA)$fp}1z{q1;y+RO~W5vA(G-LM5p1=Kv}m%elL6-%%TJ$R*{_{tz$?zI~4 z#VaXmJ?tqH$C6rg;GVq}KR6$y!XF_BY+J;zueoc4LEGDF_(MMS9qEBCo-4Qkk3YH* z8*5mxc#PaZCvs*YrYFmN@xOS_McdA#Kj?k~q6xmX2U3&knFL~tWdr(1;N5}L(7*?Q zYN?02fK6O5&_E}y7^NYz9J;5ZO}N7|(yiPIU6=%sJ<`SKY6|=at_urXZ+3w}ZUYyY z)>#leMDawSe>FBxK_%?@ptv!{>D1B}%xVohp7;!&xj)=(|7b_AXABK=a5{<3Uole( zr=!?R1_b>A;C3N2eD=`-YSGe#v}fi3)NDQf7`yRl`r4ZuUuoZYHXyU$j0$mYe#f4#8; z^*p+k_IO)AuzSFp-+zeW5YB(#_INI<^Yc~`a%{gx;K27vmy@NlK^Bc1w@c={0T zK^FKFv7T$yTik58ttP#mcblS!c9YrrsF>le`weE?CsZ~~V<)!;5G3^0`?#x!tgWS) zKdEgE>!;*Li@osaKKf7^k8A9<0N07BWUWujHK=umbD^YG|Ep(vcJv;_)5(UT9fJet zZL#c?V|!=onX;?#@w?;qSM1-$H=$H2kL<($w0xvl|GvEbKUtl>Kund@AIr=bt?Tkg zI1}u`UU4MNN+AHvCJNU^_R6~?(5g!1qTlbm=K1HvMxjAn_s^zUekB1lA`er}T zKn-GZf-lW%fT(Qe4q<>d452xx(&raT8wN@OIu<`Qm{A)Pj(MMAT@>Zm3t{!Th|g0Kybo?U~YKdg&PETUy^ogV*Utn3@BqsN2l zp{GsS(dCz%Y~rbmY*W*Kes=j5p+A4hfEH>X7gwmCBQhj<1e(K-n-~5nVF@hXH$XVpTq8%KYupaSSFbf^<(1ys!9SquzMLI+>OS{Y zYwPgN$tg#vtj@MCsVr6^$QJHwK8G%o%F64yacHbiAv61o1cR%OP_gpja!=NH@9s&# z9AQ^GyO>)vfFxB2fPV)QOQ91a!zHJkdMI^@!M9&aH4vo#Vx4HJn&DJn>auWwat2}u zI*?`sq{e)=ZC`&(%nLdJLSek>k|qU_wOfdT$TLhvj_tiC2bmQ<+=An+WFX1~R7M{1 zVUCjXV}VU}8$V8g{mbk`XIgm`3Uc;iy|c~h97;p?pIMHd91MeiTsJS*u{xf6jD9fz z_iwqUf?_@slJQ~;+bMM{m|Z`Zy&{_5bnkha=X@i#*hUN0WW8IU-()K3^i#SJV;E@$ zfOdH=!}8Js$yQW?vV}?=T0G^mnKKXfQsvD_mL)C$+;fhy>S7y%JiMpX;^G&7j=ZNV z)T^v3(ebOEtZ}y9M7Z)}9Jj4F(Y%%Sz6;Yxy|1dd%Y`r~zhqKc>ob9sI>tOX5pv*L zPR0_t;M`paiHX;(e_g+%dLEO$4PVQ#>OTGmsq45rW9P87+$OvL$}A=tIktXR$F_b` zteBennOl<%Kg(qtQM{-pZ!<5Tp-PGtYUz;fBbM*E+te5DA~mjfIH~HI-B|h79Nz6%1R-7Y5nE>UY+>fqeO+@8_+U zc#bZzB}r?(n*kt$1#+>qStbr5LB_pQ=V6pga4|WDhqR)B%}gn$hE?y*_U?^i;nL8X zkcUjt44n?DwZFdEtVyI7>u6G)=IbS_x~@xHuMDb}`X47l+%_q}>YHzBjxQK$sa^)( zR4ci(lMA`fh!~f7UVncI7Ytm2l@{VQ>hX;DRHG8rvmOS=WR@AGqA*$5oY!ZGAMXo! zXBIQZT64i^dNil7mLzS0%|EH8dh)D@@E#WZmJzMy8KGZSiN|*>k<#=jV-GN}E_h!Z zdTm5mq1fAgZTQqyjlQpU6qa-3BuBZnu>0a)U5RX#K(j?QOgnbn`opCl&8c3)PXE)R zScTT&Uem8?^a)Srjp5mN@M0s?`a5%<07t??4y{?#;=|Ha;$+^L7 z2%W{=m!B_(WijtA`5KYU=)QGv#&j>2PgfD!Xb>?uyr*f-~Zukw%% zF;Ph0ekk-2dw-b<$*jmYc_{1K*D`=GxbJ48HU|YK6{K%L-tJ)|4la`PQ|#dMmZujz zB|=cY?=}q=-VQ&Nq47#J>D{<`g)x z59=d6ya{Zwec9**v;`HWBp#c5Tg72qjZ|3e&Qm5 zrzEPajJEd;JYJ{o=hI^IG2DumvnVRK9ilj%b%LoKZUsG*d+s-OjjoUf7nQCa#*5xj zwo|IE*of3EK9MxTaT@4Z%0;kg?Urw7=2?CIY_2f?o8#%(_{yzQPO<@RH;-$5)+)gy zKD>tEAE_hFZ1!1L;a^IGUfXN2e$ll*#)1c5v!MZOtD$G>3DZAsd#>#NB7~PB^X=T| zrx7Kw0_%^lrxxvxx#>;-*gkB>6BmZjqv5z9F+HI~39-k0@u^@U+FdBH$3+e~8xCX>x3>6cuE$}+)>1A?^v!@1!L@@uNMj`8aF@bT+>7vi8f+@w53r0e0ikvkli@4?jk<6hUjgDah zVj5Ww!xX9hiMuPX3G&>Oa#IcV)6;(FsuP-kI zGC62)bs!o!*Ihr2ddR{Ij5+9(kg34L5h#(FsAZzre=5pIUUU(eH*OF!?ffk8^Mea% zBsb&Pce@}|`9_vO5a{4bfmAxz$6Qw*4Lt?f|5KJunNOJ`vZAh^WJz+tPpX?TC6_5{ zWJN_9A?Q@W&lBZ+sj^>vU0x(7k#9(bJ)8HMQgxF?6aqzm;mFQ{bO2kO+u7=)~(AGi^3$sp8ng1N~mvGl|Y?JG`bqN-~91C8qzKd39)avsuJdA*7&* zLA&7aLWQOCwBtdq>#kM)g+P~G=|SJ0Tj`;_unUjHdmF-f1?a60yF;4)k|nG*j~ONz zBEzBx*VV)aex=iGFO%lGUkLH_j6k$wAx(|+XFME2SaS-6?)PJrNt@dU6B<9_&%Yk* zX2|V@Z&_xFNq%x6Ft%D zhgYuUGiMK2dFp2Trs)rJX-tdkoFCGHGNyTbBumX7!5F}50UWx zwaPQWR3m$oCl$tOir4OS4kL4ow~<6~)m{nLbER&{tLJDArX9g191riC9pcI%kr5hT zhPs)lIOJ)po$jM4<<}CAzu3y@A;2!^H6t(p*S)v07d?`h1B0qa#MAkg$^~!VSE!)# z@dtD<)_%YK@-cV7E!IG zd%nDp2qory4eIgbj@{?Yla7UC3X4PIB@w3HN(@;7UgneL-CIU zuJv%W4ErgO=X%C+JP9lFC*=9JP>J)!A$7K=c8@!3QQ^32)|pF?A zaQ&4wT$a+Sde@l*=K@Va>zzG6gUv1G>~Oygp7JEaIazEmP%!A%gJ$dzL$`}l&PU9d zEgvk;)6U8+V^2vYWrNCl*nlOQ7P3XXHRtVWTwR}twA=%Z_jZRDmOMZT-SG7y30}qRUNzki+D_K5!Qz1 zU5FG{+4PCu#83M5kp3oq52yZv_?+LwbAMl!|3f?y?_nsGOlgSTM+5U?=#&^3dA-U^!Qs7H}Cve3Zz;*{3By(l#0z9 z8MNKlCbhs616w>R_)YI(bdLOYn~+#2vGy6iEg41OPwns~ETqlw$Xk|$KX1)DyezPU zb1(T^Z4Ry@p`%MNFUpnF=qt5)p=-d#+OH)KJ3?#lmo$l(y_Wxw-hOk)`#&*q_;Kg?8$q9`c7K9q}1jWaR$3sdg%G{F0`y*>OO$-wOKA#N9Cz*QAfE8%BR&Mr##^V zuCS%42~aWDe!HZ6j5toTFp-W_tyLSRx#B*ubRWyJYY8xdQ{GYTG|S%+EzDSZeUV`{V#GH%Z7BaFH!?Z4sqv zC7qMhpBp{BEV3gSM<%<#OB126?p%0NC{eoW5sR0T~IGyngrW?yn+?xYsK7x z`>onmSQB!~=w52Zjop;s=v4yPaky?c!VIzxK4xVKGE^zVr4FswFJ4wRyaAgifwA(+ zWDNYivS^EGGk>?|!MD_%zF5`pg#rscw-CNlw@c5CjMYX8v*n>w5(9Wd=>xz6p{QLK zMgQE*D4kxu7!N@jiJ<&aKwG?$#_iCI0a&(x6>=+sE~>_G+PJ&B^yS~yB~*#^n;_5;p)4O~T*HE=@|{0-+h zTN6Ps-}$2~Xm=6byQy_uIO{`Rr?)FtX0K?5h-*Y6w<)65=m0n*8Cq5K4bu>{&c1SL zjaPQv8{ZWDYD#}+KfuF$%4!a+ZpD{X|EUBs%v8ojxq?&tAbSO1{v1g82EcJRow$+d zU4HUFa8uIUvS6%ColQtIP{FbCt#30BOo)h)(S|rI#PA2P^MhGSgIm}4?G&2CJCLDD zb!1If&}V@;T?lQe3Kj9P%Pj6=COWE*;O~;=;PS|P8rxYS*0(b;;s0fR1m`5I z7(sHkm~NN(hU(**D`pb99%E|;1r}oB8&5$%rk;bpkwa>?Zpe7ghq3NmPEoQ?Q%b7M zUbzUqKon*ffHyD?%esGa1nWD@upA1ld&8RJ!4k^xL0<(7 zjBU^lr}7a^4yF3qA%k(@x+fs z!X%h44G}{Z1vv2_Z-|i{3})XGLM+Dh#q0C^e8y21yMExPa%yARV=?VmzKCg3OF2qU zp=F&9jJc!RL&ExFJ+Ou~qA-!?gB-3V_TUQ`B?(vC9DfMT&KF<7M=jZrjHVpmeO*4F_;_vcOjnv= zaUs8d-cz4_QDZ2YaR2k?`wV1&9V%epON~DGtoHnFv&3f-CigLL7WM`=16!?#8tmxh z@yDrl>D!&O2r3fiw`kZ+r5jsM0{hBrLK4_}!p$8HjwNaftU$@q;xyB~lb99vsa?tM zv$0v8ixKS>`D`05VtU9TYL#(O7h@0(HMx4fe$iB>uflt3MI<`8`i!Yx8>sRu$W`k2t-Qv$rgzVza^VyIx4R<3VexQY^ zAHZ2Wb+%CC(W_IW$BY~_MQYCp(Kx5aNA5Xxwl4CM*pW)c#zwIi?jZ^>kA}5}2(6Nv z1?aSQy1xpF?l}%kJSrL<<#~tXNd)8b7EyYUa;i+8!m~{dF3GN(W|W7=@~&7FeQ^xv zo}Nt~tHi5QKx`5fH>xiusROKI*8=9kw||J6dCEvB-RF!IlGJHAEm(<`u^f@o6fNe{ z6x{~4>WZ8B5}(xpm@(kkXo}$3(`CiYy5B0-V^X+PrIhb;8%gR|LtMM-V`+|hTi@P5 zOr-86G`Z@7y;6^K&c5>Up5j8ro_jVE@ZJ`1lH?4mxtYAh=Lr;JHwgIDX-0?DqM-en z_vkuswnR5l=dO_H&Pzo_XVj;76ttr}5?U%SC1qekA361z26(Qt zAtP|E4(fj#IgrOZ{jcA2Zi>S0-oV4Sj0nZ)qIC(o1sqwUTYJTEokkkK9Y^9Di!a;4`WxD>?^4Jb853f-xL{DW&lu`Od`)o`b|!=3CNeBxU036PbXjVzjAyT zH*)HJy5O#OTKgW?Lu*$=obGiaCmPe>P-OoeEZ+O;&dUipt?+Aqo>6ME{xCBsiI^1A za@4jB>Z65eSGO#z2lo234fSCCJ%T#!6YO%zIgAG?RVn=I`m@Cy6a0DhvDp>+@5sgg zyazt1jHr1jDIW&x zQ|e8D`h8@+gpE|t-iK$Hl81jhPHv5nY%a4Gcqz@#(P2k?Yv)IYAv(~AwGsV&o()SS zq00^`+AIXh8JS*t0LgR~mA*1afNID$O10e5sZ1hRm7J$S28nQJ_<5J)9(KI|;|wf< ze}he#@F#&JxUwA}fsS~jc_SCt9a9cj=2XN>FaMn&qaj^(GBP6f7QtFjA%;&(1#VF_+ zjXP7S;MjJHex~j}v;x!&3q{wt- zHC7G5^MHPxn$!rod{Ip{`EXS7}2M^7x@uHHt-~iMHQSAJqRAC zfB>H~HSRi!e=M*l{Z+cd%QY?_(Ts6sooKr1v^I}Klc#v|yLqyZMj?B{(v6)-oz0T7 zsI7Ta{>sELl)ImS&34GAnELBjj#Bl~y8p}4Y zbm4&uhiP=~Zo`E*mwrUB6bJR&eh?)i0y#!Im(r}>LQ14Yok`u$c?WR8<$ zN=RqgSW7}lXg`V5av+q%TTOIrSE^Y@>=ohDy+Pp+>m@H3-S8FMq#A2(F)#1qOtF>c z*$X!>F4^@N@y;2IDs6(7bX|Q-Pv>M~FE~7Di61-bJ-?J=d-hze+Z5ZUO0Teg%Q$S| z9d?`eHOtYoG)2;Cbe_haX0)Hi{v_#^X;aZt(;R4g&zP~=u;tQT-GVy~*!==F_jz2I zL;Lcjb;HFs;l9JJdGUJ_lOtudW8{=mjYr$}{iw4aB#mj~z#*Qw0^^}b)x+K4Bq9Mh zW$wI#1zS74r+25GCEF(v_pW#0%javTKUKKHJ4K{pf$^7GKOj8#gzBHr`M^)(e7mfOLt&yhG-N~_65q3yD_ z{x!E~e9(%MH2m(_r2d(psPPKa!>{JA=Cki0*zbQH7+}(a*xdN2D2rnMUGn#l83L*E zTm7*ASO`K}!NuCpPV+a)+?yyKxr~q0fBsBCU9N~Pnpa$Wa*`b>kLR|KK?R1AN<-U8 zeCzoPlU5uNKdK+gimnb}^v0b8Y3s6%rCCZKuxlY`WG@C&*(GXt9P;A+LhmAdhVHbx zT@$EME3~W<4KeAZLmdJE7dhinSvDz-4%aWDS(v=P#ZvKev|!pvf;Cjf#%B;xH7-+U zP#G(9oW|$WUOiXzvPwM>K-twgFJ`SUR?Rr%#3O=C%iNpCHR;8}-+H0c_K*9CVaaDVz!*3PH_>LvGp4fQtt#RCUwhwT&USfvae9 z=!;LVn&?9x5noVh;eEhfuvHi}YZ!eq<`B|W%;nLeC(ZOrfW#pE{1np_D?68fH$28c z#y%uj^LO6Mmt1bKsuF+QWsDLuIFVk}HhQC*j@ud*r}iu3hOV-yvw*&HdfJ?@b;Gx8 zID)TQlj-O4^qK|3X&trMzs44EL?^@(8*<5p5?&riYDl;}lW*=lN-o|JUk<=>Hi7l; z+1kMjHoW4>!t)n5g&>Dl|^#HASsF!gl=iK02 zH5lW{G3V^5I~$}GVLGTj@G!!uw_!r?3l>FQ!f?%k&w~KXVpbO+7-M=$FozPpJ7qku(0EkCOR!F6&7Jf|edj6D=a96s_L%b~h*7fK|Iu46dig9uga~O+J4r$wLm40TObd^IjJn?k^YO z3}$~o$QrZjsek>#@EX6&n$LJFqLGQf6if+=9rrU63>1zZvV;6FjaJ0Y6nK5xewfrr zkgnf8M8jX1;9JjmNwO+FatQ507u4c>90@Ze4a2sk4;fI9i&-hGyR~TWAd`-QGEGO+ zsOx6XO+4}d8W}Mt*C8I)t~v^WJ~oIqdSZzf2T*d_M9(mLGKe9Q&F)3p=y;>I?3^)< zH=tHIL-lZQBeY&4t&0C(T2c9kvb7jiD#GXg05d?$zs!=TaWNI#fCS>yIlz!42?o44 z9H;nJfW-Kb0R_t5hSu`Z)};fEs44lv8`FRDxtueE;4O{Xdr=!vWZzf|BV_6gCcEc! zK9fjw+Q_6(c4B$lw9X9}NdFJ~yo7qu~N{$zxZY9LD<)}LR#JLudiYC)4dt|i8 z?r0f=LQ4xAWqro+tts6Se~zMzMZSi1`~a{^($+>+QgehCPj%K0@4#*Xudqz z0nbcmvg#5T0pK-e({ST_Ze&4be@NpmnWL76nCQNbEsT)u4g>AFnDi%!9FfZtI|Z9` z&}ON=f!A|G>XjAjr<|rDyBn=~e>}nkUX6C4Db3ZCnnacuD$C0um)C>1VZ2Q-=*f_E zZXU-@x!&SjnR@-EN<9YscI_q{-ysVl6MO&oamjxeBrwo?0 zSS2Y<5m^_o(bj{ruMj9mCY#d>gSQ)$^5Af!y(8 z;6ABF5%VIBojE%DG09-nARAXL$bEZvXzoX;Jd*EesY8z6W7A+H2C4*2z&9ol-$u7; z{3}Pzcu5xg-whrApsMXTS1m|ud_p5$%hK1BRYTnGaZb>9{*!e)0C<&RP)|BMSYY~q zR`U&QC{$R6gX1k|SW(3>c@yP%N#j1_YM_^%f;cFyfq@#`o$a_#9~VQ(rr+<$dm{i?`sDc1 zbyNP4CdW!$md*!RjHD;wnKnDZmBb7>Azep4$G%4VNDjnb1r6rhn}-M$kC zc9&s1Vr-Lu7DXcE{FEU`R4!P-!Vzh5&g=oG!qP>CcmAZvkr8{zOB*9t!KlzTB;&+a zo(%kuW={Fj%^5#*+bGX(T=E@-_-r%240Sd01QR{q5JdQsgOzC!M?T6Dkrq;~yzY@C zvyyfBDJZ)I%b}L=3|wsd_hy=Y&es<;@6 zV(wY`H4;&&_1U^-b&X2#(PZYQt3s~9MHk)I$gAxOkHK&9%NVKM?J?z%gfn^@yQ1|I zn49UKQZ7HknUs2277haFUUaee5D|effY);`I|S6hZ@53b+%C$!))2Wv(6b&N)R}N` zS9fUIaJ;8}M5D94ckWCGF)iXqM(4fNdvRI02#ZSiY7)LW^>7dZ*o|Uuu&|KYV&u9~ za;f+H>QdhmvH01TM5JGOU6^5I|J;geyiHwQ)t=qT#!6{l{20v&52LXEECpvL`FP}4 zfCY$oes#@CaLTKlO}3$!vbkP0Z82RM$HkP9$s%Ba)(`Rf5uHNknB&D2*S@=@>OP9O zV^Z1)sP#*J9xOGCB-z)tiUP<8;@M**C7738ChG2f1rH47G;6^#Tau%LJ68GynFgRD zXbogL@Y;4&t>_Ykd^5{ihZo2Fvu#88tIy1Nvs4TTkbq(jm(^kJ>tRI>wr|l4)7+K= z?*91!{NzzyCS3e>94J3(<=^Vu$W~5CtG$R_#1_}PC3dTBLygAT={;9)SXjrW-cSo4 zW9;6e|3pUv2oI)|ywCk6AsSb1_u`Z5IrW&{`IA(#DAqoW9$h?13)uEoRKm9y9Z@Bp zlt~7e+5|uC)a#+ST%6H}aZSh-T3Bau76rasP$wiV+oS!ifai$(qe7oYr@92}T+J1H zM$(YoLu$oMvLGe>vND#L@uL{1JP7Zk5To!v(zQM@8nLVP+@6Ux-B<5nJR z@BMzVe5huml5DB6?0H9C=rpNf){slq*$m9@Nu^iUN5h;#V#8ry9Q1Nq(gAOAa4a`D zcY^r39RDNbP_D|@LPH+e?POM%AlWDYuMf*Pd&Q`OjwC+)<^g>rO~YVfRzLG%!3=c6+F z<<_MR@U}pOQxYFsRKnqr6`rg^{45$1)lTP3vf)!bFaJlD*q*ZLY)o<>SV2R#YQp&o1ABV_kZG_(Xap%`>Y%@}w zO^nRs9Da}G(rjf4P5kjdTK5{h}D5{DN0N}Ns9O4 zJQs(SLe{mtGUrdesJ#sTS%*d4)^zSU&a(S6_eZfuxXDKlVCq2pN$V5ifR^u9xuW!U zPSB{m_crk4mySux>vNHdwS=YNd0?`e9T=6aZM?a8(qa2JugLO7Ku&k2rD9-a3|mMj zCNdz*Xl`orGf|xG3nSAWH?ORlgKwr|UA({Cm#---?WMzg74+bk8L)!Acr9PO-gkIt z{%)Nh`Pxo4wkn-yB&7o(t5wJ*2oQEK547=3W?Prw?N*;qCnVml{<+Fc|F(!NL3GVT zrI($vnAr|4x5q~2slmOAH?(P7bmr#xZP+$M?z#Z8buMkVyZ%+b7}9I~I;yCj(3cB0 zE(2Cp>94WhRx<)cZ_dFp!*=AxRyVeLf6uh%J^#_$|@ZTO)p`9sts`d z0H7W|wv$}QEG(P*tf90l)?jP&BMCoMohBreTO)`@mT;?a>zUZwhS~3DakSNxIuwq} zdACb9XEn+`W4KJG1KP%41DB0^_8thOm8hqE-ZOkunvb0C;Lo7~kW?8ai+U@wzyCoe z+(#(qh?wVef-3K{J5BP{I1=k6kH&LDv}(f0mbRR%h0c;mw33I0dl~9hGGj#JQQSWT zW_0Dh%V&VG0OcF$gUuLVRcI)|R#7fytXxIh1J&rWO9BoT<+hK<{5R!qO0*#0pxLts zbc&*d7AdCNr8b@suz`-Jxs`eISu-*+QGlN;Hbb9M;)|_H{GCcL3Glid8FrLCug`R6 zRG{n@Ew7PRwQ>ma^1AL*yg6CCYWBHZE|O$um$}>axj4Vy7P{|YTqK(}Ek*nQzHV3D;>P3~?sb5}DI*D$DZo*+jY#2~r6s@zBG`oaV+!8^8UGZ`ou)K>Up%V<8bE``PI^v7slQC!+nV zM(A|S;NIr+V(a9no`w6J*0t2))-A$R3u&4C?DsIC1VBiJ{qdMV9Jp= zRC^BB=4372HT3+Dw`ut1!>Odc&$Vk&gP@>*dR`VLDwA#G)PNamPf>!o(BwRMZFxjz z{2}G5o;0*i=hZkb2f0W4q25#o_*M#C&r=8l>%&{Wcz4o$2@0BierX5&7f<^z9Xz(C2bv;?RzdoQVUZu`o_H^j4f?-`FuOc^fqBz>lD^lPqcD)6H0R zUG}`^bCHI&(J1PCanHF`Nu5^1FtCQSpVbV-nK*t2r&IPFgw0@*vp#R_J_x5xAitZ!h4R=gkPF=&Z7*KTZ^bA^C@R{%f#Hs9M4-!q z%g^eSYW*Q)g51}Rm~8IRa}Yt&MiXr}CPcn7Jl7k+y*0VfeuE05J1J#uM1Shnq!qR= z?om`!+%Oi;&2}rQVW4B23f-M50Fx~v6qgFYQ=-i_S~ka|J0-T9ZNHNV{K`bWEBxqPOL=d$Z0f9DUWOJ=r{uQ|{Y>vff= z>@09y)S!1QNBv-*bBZ9I6M)paR&^y+kQJMxxF~7KGq;4Pt)GP@U>cSpEh(+_2S2BS zehx{bzT`LJcd4cT2jK~N-KOq0UoDqWEV`7Z7Oo)ni^6*xc@W2&hP2!;8`k*#)XZqj zxC%p^J`#*9N_xH~=O7`r>V}Fd_{Z&vuq|VqO`2?H?&PjjR9Nn5>5vvF%Q}$kOSeH*xHQf#G zPx<`lQ3&cB;8D*z4pG|JFG=eDCWh6R#*uw0EPTDOgV$0|e6m;9LGqyfdicXRnT_`= z6KUvyS>+T*Pg6H+xWJS&F`=%T#m11--aliJGXxh9#y z;DXSV&Xw(buhzTI>4o7z1L*}x_iyflE|C%Bqgear4jM5-54pQl6!brrocn819r89g zYq%Y%V zGcJ@hMIqh$+EwW0d-@x_(ss0+>H_%GME`#C#RZ9N5|jYZ#tyEfWaJzDsxki|#X?F| zyVp_NSU;jI~UtQ9@OW1OY&) z!!kRW(k%Eg(m-U&UI1b4S>wOE*}Z%)Tjq0~C3GE+K5dBX0G}eMv}HZOU(av$gxALD z6zy@9%D*#U&SrqzIf{2S&IP7_ zP#$x~Of|jeZb>t;}V)J!hZ>++I2M$GYVJn9h3+&*a&TWJ1)QI~Z24#~E zpCSx*2T6-Q)mEKT4ClMf?FkB+6w4<`XRuM7#qyz#5L$BV zmlbBdrJYzQ*nCqaMnTUM$$eoTRMoxhs+~b`H4ev?(oEn7DFB6UfbFgek$l}2*lc5)qplD z8B*q7a=IyW5vJI3i50uku0N*GxO2QQNJ;kkJ#Pu>{j{CX_qJzZ`_M`p&KNzG5si84 zaUzU~_<4IhE&tui%L#+48pYOAR|RdDZ-5JY8qBdU*~5MbUfmM4 zo-&-!G2Dl@@mU$q7|ZU-_wkjGQY}EZOZ<1Ig`CYhQyzBLx0Ari;)Wti%81=`U%A9@ zi@r0Fkaj4*QH^#<%YXLT8wu#W+v?b))c($Zl!-3?6NXs z78G}$Hfv8mKXG9xAVf3JgTh@szpF>)23YKmWfFd{f`bpmH_=|d%vP0N&XT5Ha;bc2w%{?OJw@#^acjc z3;u9~)q1kldR-LTj8i_5HY>`Zpu0joP{>q)!>?TJ;lo=J88E$mUeSFoHpVwrKy{&5 z%LlU&_;zMf1+R{;UNK8KY+k%H{ABU z#xGzNO%QKis__c4d{5->QH5g*j?lb#D^x@_Z;9Oct(I>wKRxyM)YMgfttnXtemy-s z%}9gJRHUx0vLj)X>NXzgsF}fXhALO_v>9UQYyu}+R!1JgueXpD2)`M7s z+i(?82hX&4)ro-?;^>yjazmXP^~R}U7wdxJfp-0~XY(E(EUvqkPp3q$V1e=P8XMJg zoXh-ZZg8d(XC|FXRqwY@k`64!4$Obpv=Zo)zNs6Jd-t|VJ2B5fp=OtJHBe8)0TF8S za7rKk2?fyQ@%xPaO1Dp<+9thGM`$9 zR*aqZQd`*r9ulv>teRA}?%QM?nnsN^j5EclE>NtcVOY{KlmW&GFC?j}b%a{^LDH}gIhq92v%^wD9WmgWAaJG6E#=rCDB z77@n0*<+p%KV0b5#@)DP>#+a@IC4~Z+;6-uFed+0g7576%#@}>t$oS0A~KHER2XH= zvSh%*)q2}q)$=&3BEqDvL&w6b$;3ru%@&$I%Lj^K5QF5=I+x2PtH$KXGEOH}(lQRA zy>>65o9fS$pPc7b&Osz1zLULIT zH^tPlwaiXrs?fWO_6vmW3DpRQ)>2~f9psNDPc|)2JG>W_SWg(ACNHZ5; zE0E^8S~HaoidgdA_v$;!&=fz<)>+=3Rnn(SWKp{_bHt69 zhU`lgSO80E+b6M8Y5S`h3h=xsjMC?1Tj*rues`rOJs4wrzMA3zP6`DU3Cz^~64JR{ zs$LuazHv%r`u1uHx4v=YJY~8V>KTgAmIoh8a&2j)XT`lIJAFO2bsIE>D>osYM&7V? zH%wsd((XRVb6tf}1&5ZOy(EY#QJ;j}cf#M05)uF@0!ZEZZ(yCU^s-lj+Z14-BYK|; z&-=YY+4Lk#L!s|y8^GmM>EP^Zwygn$%A(_MGeg9c*g9@LI{SxN&8=h$k4TPt}peyYta;S?rr6%?~?C+C)!)DvXy8Uz8bz&C9P zYDV#RWSU=26_gwvCt)nR?H)c(cyqbE6}4zcp3V@Bz_(b|hUJTjJsB^Ih*r@5uiB-TwVD z)!lpN3NxMab0|2ba+zfxtn}2rEv<|&#%4zY0 z)N9R!dfl5sSbm-Pm>vMemIfU9G*W1weyU>-fQI{OuRSxFF^!A3Yb8&7a+9GtlZ!8`S?fz&8*&ja5=V)3^n%7Pnl70?^j<%RJ5kz8-6AGFk0dj91 z*GpRqCSYE#v$}(1%yRGtaR9@Qezemb_wMI!I`4JM@*w9Ni5_L1vwoc|x`HL=QZs(( zTX)-23taS3fLyNkkQ*&EaW=iX900t#DPK#2EOWG@M0$mQWcIDtwP)q90qW5y{al+? z?cPH0?uh;e^NWaDAJ?+b0KN{7xrX3|>!Df=EwVj5M*_^YPoDT_7EOVyq+;|glN11y zx2--vXB|c9TrZmBdi6xiTqW@_&?bkhc(%ip8MY;hbu;0bF09?G;|gv@*~;GDdG23!ni2XZoP~DGy4xHga2GkSveq zKtY|hZAyJxo;W>Eg)W_;1^{%@%Odjxb*9rkxwzfdE0e!#%u0qKjg*#t&~eqO$1HOj z{ycwR1yLXcVetQalF|O8MJ_VATGZEXp|5AI3XAizhUAUdHzAU_D8OjiBTm_P z9H%Ph`{T+INV}#=iHpzm(P7r^#;HoH(@JGP`V`JdDK7&Gby`+3=t)7vfS8ekggnUi zarn|6*@mVT*F2pSudE!MW1y`d08CwbgI#CL8a+gvXP**ZhHdW+6y@E*(9}t~VfB zUnxc9CtA8lOJg2FAVYXr@gYR06&~tx*}cvbwx`vz`LghO;k3=!?YVf;B~HBh&Rs^8 zuy2Q@0f!1QNpKxLYX}A~$gggf&g;*|_@fXr)K$&s2SIQm0Ell=oV|5Pl;x%M4%aFO@kG-y{ z+~e7y`CdQ5p0j89HDSO){ zr-n^pP8Bo1vz@Og;z26?AUImHK8Tl*Qsn&~xQxh>LJ&9pblRgmXnPyCDYA5hT_IGz zsS;;UMkyfg{S!bK6TVPsqk|Ccob|w}!ZDyKaWYfsQ4JhuHxS%#zAJNX$5bl*vY0s0 zVz!hitn^X5xowp`V)kboMYjz#osYJ-*c>!}uwqhDXqwwRC zfcn(``XI`CX*R>}zWO#`7v(e@72{^O(cG|8@!_t3?8%-GC~~p8=^JUTa;T_` zlzL(td0=$yGuL}5Z;#~80wUQQVny|A8WHJ&@qRSm`CcVr$I3wa!cn}ev<`ZU(^oMA zJ=HG*XRw8;@!X`RAV4NwAX|$-%Snewf~V@w*fjl^_vJd!9AUa)ttwW}RTw^ZBjZ zi{Lk&;aM`_1!$~MEASFAY?=oxR;%Z-W##AKu;p9lh@lc2e-UZ#li02D< zVqt1MF!#X;2QP9KwcegIi)KJXP)bFwjT1R~L8M-}53OpLGqju~q*5&*nn+m+S9=!l z#Xv0$cd2dN-Rcv*#z7AC60hXfp>WVjKH;j5;qcvI?FbuqjH88dBofW|(H%ANe0YdL zVLHKVT^%g0{7~A4FiHa|!$bz)7qxZ6%+elr-Mt>Wu)V`g*LIeDeULgl05Uk|r+cH(h-Rccl;&E!F z?3@)%ou*i}$%9Xs`|C41F3o_Xw(maLlV%-05P2P}%*^Hk)YXtU-^V06_7R0-lRu#O zUUOW*rjrwk14#Aci^J(S+XPZ}o!`I9bDs6$$yyGCDz`rHRSU;LGyU?N3AEgcAJA3} zqV_7=&V6B=7s;E2Kil=liE>e5c~;Q4^*J!0byAyDLrbBzdT z)}f5>Yb3EpZ0f)}OUYd*qo3n(@}gV3`A`*Zq$Us>FgC3-``+hc-WK z3-~$B66P@{!O-*%O@9~%@i5~m5~12LLv;V4Z*tI6pFw1hvWHe=+y- zX9BAcTA;Q{Nzl1keF}|PcMEOgeF~66Pl{<_itJ0FccxSmwB9CI)JCswb9^zj=M&DC zTv+R6?^swf$!br56gi56w8Adz&*jx8g|}?X4n&U9bk1v5b$A6o_gPj{P;`o}Px95^ z1`Iu$=|fx)a60}qhqAXf`P*F{Q?1Qz?!-6Tz|&S%LnSne@<3MNF&cL{WPts3UEOO>Y&bgQG^U}^dPy@)C~f}JV)7I zAalMmCJFtC|E3U6I4+3B)l@bOt?<`tWF)EYh~%1}rO9A&R}IY!A`Ha%?%)x64jk0uI2Q=Ar|N zttJ`umV4ID-t~y!iyN3|t zTctn9%vtRIIV}uWnsO|I3_Y>VVrVO*bei`sd*Jjgtk0|%;U(6`l6uBK-3iyzERJ`^ z@t;St!?clw9eM<7U9bx3L~Tjys_9qhI1?Yg0m=ghxbsej-y1b9>uxxqH)(c69*g5Z zfNOmOS=1P5aRru`Meq|^G~Yx?X&$#K)@lOVIB0$V9icHgKv3ychG;p@*-l|GO4bmg z4+b!In{oO_v8UTipT1iC@&l>uhonkvFb7M;j}Sii==14;t`0B&l;TQ!F8aK?moPt# z-n;(VTq)4(pHl;ki76_;{RX~8-&SfE)p8VkNXjR`6$VD$QFqiu?o)*~nXlmLFlSN51)zqH2$lN{pD zYW!4FyUTiiSQ+W?pXh@I!M+q_Q(?WMUnbjfXjq;XCjr8PLE!VqDu#TOU#E<2E?)c+ zFaWr+DsVjRu8v9Piw5a>pKhm)aJAN7KLjM_*d^6EMnfom9RxH8Bp!l%6N8*xBRF2< zJS|Nsck8CbK}H9rUqjy6-j+dZEDXY*uD;A)5d4XWX>$NiVMh|HMDUPjamZ!G1r~RO z9)SRR%By(^h2~(!x?fZsA*=BZRRaRG3fS)5648c7YHw!u(qc0Te~_4QpaZ_j8+h|;Ln^KI-Zgn8`uljrCSm5j z&{#C;&&GZaNt0eZse6G!`%Vo9Z2#%_?gbdiR8>!_{U$(%L8twJ75ItvECA4@C~)d2 z?n;YS{eDw3 zDimojU1u(;lg{|9RFO$YjYPRhZ1jsj$&xFejZS=115mNICFJ#g zn3CZ$Q7lpnIdOWC&34pnpkZ{L%F9@7e)Xtd)OA?*<1ql8s6hnrZHXHhok(ZL}QQ&n#uBhUL{RfPu+ zu}IiQs+nrD0{?{W&o_nq?uHR=_vIIh;XWmxvqH&bdR}c`|5i$rW7a9GN#a2@IQxhw zirgj)J`Dm)wac}bZ{~~_8{?ftH_RuV%#_AmZbi zaF3W^!-ModL`Gy8KwP!uX|olPG@F zbLA(4Z>jHg=P6{35)#+nr%Wl6ytg6#FN;R5)adt>RcT-YG6+3u0}hFmM<2Z+von3Q z(2Hw(4))j^2j3F1b~L=`S9vd^A}IP3XI26P)KjiaG>F$Va6}N|3hz= z!4Ds`b0Q}+)gG2|kje2+yo6@v2S4ZO?dbr={yNQ-8GBzJiWBtQUJ5{*3Cak3ALDWa z8Y`h$^b+8QKUT&aWb##aRozRi{LaZymRT6=@G?64aR3MY$6v|=D<2$WYii1PZ#Zl8 zSHw?Reyn0r&tn-Hzj}epsgH>v8JLf{P9ThZ&Eu-|58WSreapPw^P*E{*}`<99}O_^ zK^omAklpS-*}{}-zDSqeeqNyEIMQtEySx%q@%Ss~Ng2xXXK&R&$LQ3<&6zwUi5&5R z=~7nT@Hse$GG=K(2qfV3dC`IouBA3f-cX{PzNs%iCB#cO#EqFJa2s9-35F&OZ3{M}WE)kHa=&e2;&U3BYll^W8{E!u&rZ z={5KO@I0lg)vr&XGz&OTl~Z&wVsN=2HbVwF6eG_B9P=kUt}M@mQo*2?jRsu!{}^0Td|_fJDWu*35A z)M%y_5>`7%50k2ut%2aJ*K6`84k4w}I%q7AZ$l$p9pF+bkneoNq%`Xk@dpKU+k+&) z?$+{U4h2(98EKtxWWuip1PSi1CnQxwOVr(~s>PW({p2V;X^JZAOHq7Rap(F@tLFuZ ziZ!od05LayHvDJooX@!I{DNhNU%UdcJ$omVqFrOBG$-u?=~(=JmHmg1rlrt#pK
      u`63K0-|_Bw5k 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

      P<&S1-t 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 G!2bb$(iXe` literal 0 HcmV?d00001