����JFIF��H�H����Exif��MM�*���� ��3����V�����3������3�(��������������������3�����
Server IP : 74.208.127.88 / Your IP : 216.73.216.205 Web Server : Apache/2.4.41 (Ubuntu) System : Linux ubuntu 5.4.0-163-generic #180-Ubuntu SMP Tue Sep 5 13:21:23 UTC 2023 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/muebles/pos11/core/controller/PhpWord/Writer/Word2007/Part/ |
Upload File : |
<?php /** * This file is part of PHPWord - A pure PHP library for reading and writing * word processing documents. * * PHPWord is free software distributed under the terms of the GNU Lesser * General Public License version 3 as published by the Free Software Foundation. * * For the full copyright and license information, please read the LICENSE * file that was distributed with this source code. For the full list of * contributors, visit https://github.com/PHPOffice/PHPWord/contributors. * * @link https://github.com/PHPOffice/PHPWord * @copyright 2010-2014 PHPWord contributors * @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3 */ namespace PhpOffice\PhpWord\Writer\Word2007\Part; use PhpOffice\PhpWord\Element\Chart as ChartElement; use PhpOffice\PhpWord\Shared\XMLWriter; /** * Word2007 chart part writer: word/charts/chartx.xml * * @since 0.12.0 * @link http://www.datypic.com/sc/ooxml/e-draw-chart_chartSpace.html */ class Chart extends AbstractPart { /** * Chart element * * @var \PhpOffice\PhpWord\Element\Chart $element */ private $element; /** * Type definition * * @var array */ private $types = array( 'pie' => array('type' => 'pie', 'colors' => 1), 'doughnut' => array('type' => 'doughnut', 'colors' => 1, 'hole' => 75, 'no3d' => true), 'bar' => array('type' => 'bar', 'colors' => 0, 'axes' => true, 'bar' => 'bar'), 'column' => array('type' => 'bar', 'colors' => 0, 'axes' => true, 'bar' => 'col'), 'line' => array('type' => 'line', 'colors' => 0, 'axes' => true), 'area' => array('type' => 'area', 'colors' => 0, 'axes' => true), 'radar' => array('type' => 'radar', 'colors' => 0, 'axes' => true, 'radar' => 'standard', 'no3d' => true), 'scatter' => array('type' => 'scatter', 'colors' => 0, 'axes' => true, 'scatter' => 'marker', 'no3d' => true), ); /** * Chart options * * @var array */ private $options = array(); /** * Set chart element. * * @param \PhpOffice\PhpWord\Element\Chart $element * @return void */ public function setElement(ChartElement $element) { $this->element = $element; } /** * Write part * * @return string */ public function write() { $xmlWriter = $this->getXmlWriter(); $xmlWriter->startDocument('1.0', 'UTF-8', 'yes'); $xmlWriter->startElement('c:chartSpace'); $xmlWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); $xmlWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); $xmlWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); $this->writeChart($xmlWriter); $this->writeShape($xmlWriter); $xmlWriter->endElement(); // c:chartSpace return $xmlWriter->getData(); } /** * Write chart * * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_Chart.html * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @return void */ private function writeChart(XMLWriter $xmlWriter) { $xmlWriter->startElement('c:chart'); $xmlWriter->writeElementBlock('c:autoTitleDeleted', 'val', 1); $this->writePlotArea($xmlWriter); $xmlWriter->endElement(); // c:chart } /** * Write plot area. * * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_PlotArea.html * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_PieChart.html * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_DoughnutChart.html * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_BarChart.html * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_LineChart.html * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_AreaChart.html * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_RadarChart.html * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_ScatterChart.html * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @return void */ private function writePlotArea(XMLWriter $xmlWriter) { $type = $this->element->getType(); $style = $this->element->getStyle(); $this->options = $this->types[$type]; $xmlWriter->startElement('c:plotArea'); $xmlWriter->writeElement('c:layout'); // Chart $chartType = $this->options['type']; $chartType .= $style->is3d() && !isset($this->options['no3d'])? '3D' : ''; $chartType .= 'Chart'; $xmlWriter->startElement("c:{$chartType}"); $xmlWriter->writeElementBlock('c:varyColors', 'val', $this->options['colors']); if ($type == 'area') { $xmlWriter->writeElementBlock('c:grouping', 'val', 'standard'); } if (isset($this->options['hole'])) { $xmlWriter->writeElementBlock('c:holeSize', 'val', $this->options['hole']); } if (isset($this->options['bar'])) { $xmlWriter->writeElementBlock('c:barDir', 'val', $this->options['bar']); // bar|col $xmlWriter->writeElementBlock('c:grouping', 'val', 'clustered'); // 3d; standard = percentStacked } if (isset($this->options['radar'])) { $xmlWriter->writeElementBlock('c:radarStyle', 'val', $this->options['radar']); } if (isset($this->options['scatter'])) { $xmlWriter->writeElementBlock('c:scatterStyle', 'val', $this->options['scatter']); } // Series $this->writeSeries($xmlWriter, isset($this->options['scatter'])); // Axes if (isset($this->options['axes'])) { $xmlWriter->writeElementBlock('c:axId', 'val', 1); $xmlWriter->writeElementBlock('c:axId', 'val', 2); } $xmlWriter->endElement(); // chart type // Axes if (isset($this->options['axes'])) { $this->writeAxis($xmlWriter, 'cat'); $this->writeAxis($xmlWriter, 'val'); } $xmlWriter->endElement(); // c:plotArea } /** * Write series. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param bool $scatter * @return void */ private function writeSeries(XMLWriter $xmlWriter, $scatter = false) { $series = $this->element->getSeries(); $index = 0; foreach ($series as $seriesItem) { $categories = $seriesItem['categories']; $values = $seriesItem['values']; $xmlWriter->startElement('c:ser'); $xmlWriter->writeElementBlock('c:idx', 'val', $index); $xmlWriter->writeElementBlock('c:order', 'val', $index); if (isset($this->options['scatter'])) { $this->writeShape($xmlWriter); } if ($scatter === true) { $this->writeSeriesItem($xmlWriter, 'xVal', $categories); $this->writeSeriesItem($xmlWriter, 'yVal', $values); } else { $this->writeSeriesItem($xmlWriter, 'cat', $categories); $this->writeSeriesItem($xmlWriter, 'val', $values); } $xmlWriter->endElement(); // c:ser $index++; } } /** * Write series items. * * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param string $type * @param array $values * @return void */ private function writeSeriesItem(XMLWriter $xmlWriter, $type, $values) { $types = array( 'cat' => array('c:cat', 'c:strLit'), 'val' => array('c:val', 'c:numLit'), 'xVal' => array('c:xVal', 'c:strLit'), 'yVal' => array('c:yVal', 'c:numLit'), ); list($itemType, $itemLit) = $types[$type]; $xmlWriter->startElement($itemType); $xmlWriter->startElement($itemLit); $index = 0; foreach ($values as $value) { $xmlWriter->startElement('c:pt'); $xmlWriter->writeAttribute('idx', $index); $xmlWriter->startElement('c:v'); $xmlWriter->writeRaw($value); $xmlWriter->endElement(); // c:v $xmlWriter->endElement(); // c:pt $index++; } $xmlWriter->endElement(); // $itemLit $xmlWriter->endElement(); // $itemType } /** * Write axis * * @link http://www.datypic.com/sc/ooxml/t-draw-chart_CT_CatAx.html * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param string $type * @return void */ private function writeAxis(XMLWriter $xmlWriter, $type) { $types = array( 'cat' => array('c:catAx', 1, 'b', 2), 'val' => array('c:valAx', 2, 'l', 1), ); list($axisType, $axisId, $axisPos, $axisCross) = $types[$type]; $xmlWriter->startElement($axisType); $xmlWriter->writeElementBlock('c:axId', 'val', $axisId); $xmlWriter->writeElementBlock('c:axPos', 'val', $axisPos); $xmlWriter->writeElementBlock('c:crossAx', 'val', $axisCross); $xmlWriter->writeElementBlock('c:auto', 'val', 1); if (isset($this->options['axes'])) { $xmlWriter->writeElementBlock('c:delete', 'val', 0); $xmlWriter->writeElementBlock('c:majorTickMark', 'val', 'none'); $xmlWriter->writeElementBlock('c:minorTickMark', 'val', 'none'); $xmlWriter->writeElementBlock('c:tickLblPos', 'val', 'none'); // nextTo $xmlWriter->writeElementBlock('c:crosses', 'val', 'autoZero'); } if (isset($this->options['radar'])) { $xmlWriter->writeElement('c:majorGridlines'); } $xmlWriter->startElement('c:scaling'); $xmlWriter->writeElementBlock('c:orientation', 'val', 'minMax'); $xmlWriter->endElement(); // c:scaling $this->writeShape($xmlWriter, true); $xmlWriter->endElement(); // $axisType } /** * Write shape * * @link http://www.datypic.com/sc/ooxml/t-a_CT_ShapeProperties.html * @param \PhpOffice\PhpWord\Shared\XMLWriter $xmlWriter * @param bool $line * @return void */ private function writeShape(XMLWriter $xmlWriter, $line = false) { $xmlWriter->startElement('c:spPr'); $xmlWriter->startElement('a:ln'); if ($line === true) { $xmlWriter->writeElement('a:solidFill'); } else { $xmlWriter->writeElement('a:noFill'); } $xmlWriter->endElement(); // a:ln $xmlWriter->endElement(); // c:spPr } }