Total Complexity | 201 |
Total Lines | 1501 |
Duplicated Lines | 0 % |
Coverage | 73.91% |
Changes | 1 | ||
Bugs | 0 | Features | 0 |
Complex classes like Chart often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use Chart, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
17 | class Chart extends WriterPart |
||
18 | { |
||
19 | protected $calculateCellValues; |
||
20 | |||
21 | /** |
||
22 | * @var int |
||
23 | */ |
||
24 | private $seriesIndex; |
||
25 | |||
26 | /** |
||
27 | * Write charts to XML format. |
||
28 | * |
||
29 | * @param mixed $calculateCellValues |
||
30 | * |
||
31 | * @return string XML Output |
||
32 | */ |
||
33 | 15 | public function writeChart(\PhpOffice\PhpSpreadsheet\Chart\Chart $pChart, $calculateCellValues = true) |
|
34 | { |
||
35 | 15 | $this->calculateCellValues = $calculateCellValues; |
|
36 | |||
37 | // Create XML writer |
||
38 | 15 | $objWriter = null; |
|
39 | 15 | if ($this->getParentWriter()->getUseDiskCaching()) { |
|
40 | $objWriter = new XMLWriter(XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory()); |
||
41 | } else { |
||
42 | 15 | $objWriter = new XMLWriter(XMLWriter::STORAGE_MEMORY); |
|
43 | } |
||
44 | // Ensure that data series values are up-to-date before we save |
||
45 | 15 | if ($this->calculateCellValues) { |
|
46 | 15 | $pChart->refresh(); |
|
47 | } |
||
48 | |||
49 | // XML header |
||
50 | 15 | $objWriter->startDocument('1.0', 'UTF-8', 'yes'); |
|
51 | |||
52 | // c:chartSpace |
||
53 | 15 | $objWriter->startElement('c:chartSpace'); |
|
54 | 15 | $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart'); |
|
55 | 15 | $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main'); |
|
56 | 15 | $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships'); |
|
57 | |||
58 | 15 | $objWriter->startElement('c:date1904'); |
|
59 | 15 | $objWriter->writeAttribute('val', 0); |
|
60 | 15 | $objWriter->endElement(); |
|
61 | 15 | $objWriter->startElement('c:lang'); |
|
62 | 15 | $objWriter->writeAttribute('val', 'en-GB'); |
|
63 | 15 | $objWriter->endElement(); |
|
64 | 15 | $objWriter->startElement('c:roundedCorners'); |
|
65 | 15 | $objWriter->writeAttribute('val', 0); |
|
66 | 15 | $objWriter->endElement(); |
|
67 | |||
68 | 15 | $this->writeAlternateContent($objWriter); |
|
69 | |||
70 | 15 | $objWriter->startElement('c:chart'); |
|
71 | |||
72 | 15 | $this->writeTitle($objWriter, $pChart->getTitle()); |
|
73 | |||
74 | 15 | $objWriter->startElement('c:autoTitleDeleted'); |
|
75 | 15 | $objWriter->writeAttribute('val', 0); |
|
76 | 15 | $objWriter->endElement(); |
|
77 | |||
78 | 15 | $this->writePlotArea($objWriter, $pChart->getWorksheet(), $pChart->getPlotArea(), $pChart->getXAxisLabel(), $pChart->getYAxisLabel(), $pChart->getChartAxisX(), $pChart->getChartAxisY(), $pChart->getMajorGridlines(), $pChart->getMinorGridlines()); |
|
79 | |||
80 | 15 | $this->writeLegend($objWriter, $pChart->getLegend()); |
|
81 | |||
82 | 15 | $objWriter->startElement('c:plotVisOnly'); |
|
83 | 15 | $objWriter->writeAttribute('val', (int) $pChart->getPlotVisibleOnly()); |
|
84 | 15 | $objWriter->endElement(); |
|
85 | |||
86 | 15 | $objWriter->startElement('c:dispBlanksAs'); |
|
87 | 15 | $objWriter->writeAttribute('val', $pChart->getDisplayBlanksAs()); |
|
88 | 15 | $objWriter->endElement(); |
|
89 | |||
90 | 15 | $objWriter->startElement('c:showDLblsOverMax'); |
|
91 | 15 | $objWriter->writeAttribute('val', 0); |
|
92 | 15 | $objWriter->endElement(); |
|
93 | |||
94 | 15 | $objWriter->endElement(); |
|
95 | |||
96 | 15 | $this->writePrintSettings($objWriter); |
|
97 | |||
98 | 15 | $objWriter->endElement(); |
|
99 | |||
100 | // Return |
||
101 | 15 | return $objWriter->getData(); |
|
102 | } |
||
103 | |||
104 | /** |
||
105 | * Write Chart Title. |
||
106 | * |
||
107 | * @param XMLWriter $objWriter XML Writer |
||
108 | * @param Title $title |
||
109 | */ |
||
110 | 15 | private function writeTitle(XMLWriter $objWriter, ?Title $title = null): void |
|
145 | 15 | } |
|
146 | |||
147 | /** |
||
148 | * Write Chart Legend. |
||
149 | * |
||
150 | * @param XMLWriter $objWriter XML Writer |
||
151 | * @param Legend $legend |
||
152 | */ |
||
153 | 15 | private function writeLegend(XMLWriter $objWriter, ?Legend $legend = null): void |
|
194 | 15 | } |
|
195 | |||
196 | /** |
||
197 | * Write Chart Plot Area. |
||
198 | * |
||
199 | * @param XMLWriter $objWriter XML Writer |
||
200 | * @param Title $xAxisLabel |
||
201 | * @param Title $yAxisLabel |
||
202 | * @param Axis $xAxis |
||
203 | * @param Axis $yAxis |
||
204 | */ |
||
205 | 15 | private function writePlotArea(XMLWriter $objWriter, \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet $pSheet, PlotArea $plotArea, ?Title $xAxisLabel = null, ?Title $yAxisLabel = null, ?Axis $xAxis = null, ?Axis $yAxis = null, ?GridLines $majorGridlines = null, ?GridLines $minorGridlines = null): void |
|
206 | { |
||
207 | 15 | if ($plotArea === null) { |
|
208 | return; |
||
209 | } |
||
210 | |||
211 | 15 | $id1 = $id2 = 0; |
|
212 | 15 | $this->seriesIndex = 0; |
|
213 | 15 | $objWriter->startElement('c:plotArea'); |
|
214 | |||
215 | 15 | $layout = $plotArea->getLayout(); |
|
216 | |||
217 | 15 | $this->writeLayout($objWriter, $layout); |
|
218 | |||
219 | 15 | $chartTypes = self::getChartType($plotArea); |
|
220 | 15 | $catIsMultiLevelSeries = $valIsMultiLevelSeries = false; |
|
221 | 15 | $plotGroupingType = ''; |
|
222 | 15 | $chartType = null; |
|
223 | 15 | foreach ($chartTypes as $chartType) { |
|
224 | 15 | $objWriter->startElement('c:' . $chartType); |
|
225 | |||
226 | 15 | $groupCount = $plotArea->getPlotGroupCount(); |
|
227 | 15 | $plotGroup = null; |
|
228 | 15 | for ($i = 0; $i < $groupCount; ++$i) { |
|
229 | 15 | $plotGroup = $plotArea->getPlotGroupByIndex($i); |
|
230 | 15 | $groupType = $plotGroup->getPlotType(); |
|
231 | 15 | if ($groupType == $chartType) { |
|
232 | 15 | $plotStyle = $plotGroup->getPlotStyle(); |
|
233 | 15 | if ($groupType === DataSeries::TYPE_RADARCHART) { |
|
234 | 2 | $objWriter->startElement('c:radarStyle'); |
|
235 | 2 | $objWriter->writeAttribute('val', $plotStyle); |
|
236 | 2 | $objWriter->endElement(); |
|
237 | 14 | } elseif ($groupType === DataSeries::TYPE_SCATTERCHART) { |
|
238 | 2 | $objWriter->startElement('c:scatterStyle'); |
|
239 | 2 | $objWriter->writeAttribute('val', $plotStyle); |
|
240 | 2 | $objWriter->endElement(); |
|
241 | } |
||
242 | |||
243 | 15 | $this->writePlotGroup($plotGroup, $chartType, $objWriter, $catIsMultiLevelSeries, $valIsMultiLevelSeries, $plotGroupingType); |
|
244 | } |
||
245 | } |
||
246 | |||
247 | 15 | $this->writeDataLabels($objWriter, $layout); |
|
248 | |||
249 | 15 | if ($chartType === DataSeries::TYPE_LINECHART && $plotGroup) { |
|
250 | // Line only, Line3D can't be smoothed |
||
251 | 3 | $objWriter->startElement('c:smooth'); |
|
252 | 3 | $objWriter->writeAttribute('val', (int) $plotGroup->getSmoothLine()); |
|
253 | 3 | $objWriter->endElement(); |
|
254 | 14 | } elseif (($chartType === DataSeries::TYPE_BARCHART) || ($chartType === DataSeries::TYPE_BARCHART_3D)) { |
|
255 | 8 | $objWriter->startElement('c:gapWidth'); |
|
256 | 8 | $objWriter->writeAttribute('val', 150); |
|
257 | 8 | $objWriter->endElement(); |
|
258 | |||
259 | 8 | if ($plotGroupingType == 'percentStacked' || $plotGroupingType == 'stacked') { |
|
260 | 2 | $objWriter->startElement('c:overlap'); |
|
261 | 2 | $objWriter->writeAttribute('val', 100); |
|
262 | 8 | $objWriter->endElement(); |
|
263 | } |
||
264 | 9 | } elseif ($chartType === DataSeries::TYPE_BUBBLECHART) { |
|
265 | 1 | $objWriter->startElement('c:bubbleScale'); |
|
266 | 1 | $objWriter->writeAttribute('val', 25); |
|
267 | 1 | $objWriter->endElement(); |
|
268 | |||
269 | 1 | $objWriter->startElement('c:showNegBubbles'); |
|
270 | 1 | $objWriter->writeAttribute('val', 0); |
|
271 | 1 | $objWriter->endElement(); |
|
272 | 9 | } elseif ($chartType === DataSeries::TYPE_STOCKCHART) { |
|
273 | 2 | $objWriter->startElement('c:hiLowLines'); |
|
274 | 2 | $objWriter->endElement(); |
|
275 | |||
276 | 2 | $objWriter->startElement('c:upDownBars'); |
|
277 | |||
278 | 2 | $objWriter->startElement('c:gapWidth'); |
|
279 | 2 | $objWriter->writeAttribute('val', 300); |
|
280 | 2 | $objWriter->endElement(); |
|
281 | |||
282 | 2 | $objWriter->startElement('c:upBars'); |
|
283 | 2 | $objWriter->endElement(); |
|
284 | |||
285 | 2 | $objWriter->startElement('c:downBars'); |
|
286 | 2 | $objWriter->endElement(); |
|
287 | |||
288 | 2 | $objWriter->endElement(); |
|
289 | } |
||
290 | |||
291 | // Generate 2 unique numbers to use for axId values |
||
292 | 15 | $id1 = '75091328'; |
|
293 | 15 | $id2 = '75089408'; |
|
294 | |||
295 | 15 | if (($chartType !== DataSeries::TYPE_PIECHART) && ($chartType !== DataSeries::TYPE_PIECHART_3D) && ($chartType !== DataSeries::TYPE_DONUTCHART)) { |
|
296 | 13 | $objWriter->startElement('c:axId'); |
|
297 | 13 | $objWriter->writeAttribute('val', $id1); |
|
298 | 13 | $objWriter->endElement(); |
|
299 | 13 | $objWriter->startElement('c:axId'); |
|
300 | 13 | $objWriter->writeAttribute('val', $id2); |
|
301 | 13 | $objWriter->endElement(); |
|
302 | } else { |
||
303 | 3 | $objWriter->startElement('c:firstSliceAng'); |
|
304 | 3 | $objWriter->writeAttribute('val', 0); |
|
305 | 3 | $objWriter->endElement(); |
|
306 | |||
307 | 3 | if ($chartType === DataSeries::TYPE_DONUTCHART) { |
|
308 | 3 | $objWriter->startElement('c:holeSize'); |
|
309 | 3 | $objWriter->writeAttribute('val', 50); |
|
310 | 3 | $objWriter->endElement(); |
|
311 | } |
||
312 | } |
||
313 | |||
314 | 15 | $objWriter->endElement(); |
|
315 | } |
||
316 | |||
317 | 15 | if (($chartType !== DataSeries::TYPE_PIECHART) && ($chartType !== DataSeries::TYPE_PIECHART_3D) && ($chartType !== DataSeries::TYPE_DONUTCHART)) { |
|
318 | 13 | if ($chartType === DataSeries::TYPE_BUBBLECHART) { |
|
319 | 1 | $this->writeValueAxis($objWriter, $xAxisLabel, $chartType, $id1, $id2, $catIsMultiLevelSeries, $xAxis, $majorGridlines, $minorGridlines); |
|
3 ignored issues
–
show
|
|||
320 | } else { |
||
321 | 13 | $this->writeCategoryAxis($objWriter, $xAxisLabel, $id1, $id2, $catIsMultiLevelSeries, $yAxis); |
|
1 ignored issue
–
show
|
|||
322 | } |
||
323 | |||
324 | 13 | $this->writeValueAxis($objWriter, $yAxisLabel, $chartType, $id1, $id2, $valIsMultiLevelSeries, $xAxis, $majorGridlines, $minorGridlines); |
|
325 | } |
||
326 | |||
327 | 15 | $objWriter->endElement(); |
|
328 | 15 | } |
|
329 | |||
330 | /** |
||
331 | * Write Data Labels. |
||
332 | * |
||
333 | * @param XMLWriter $objWriter XML Writer |
||
334 | * @param \PhpOffice\PhpSpreadsheet\Chart\Layout $chartLayout Chart layout |
||
335 | */ |
||
336 | 15 | private function writeDataLabels(XMLWriter $objWriter, ?Layout $chartLayout = null): void |
|
337 | { |
||
338 | 15 | $objWriter->startElement('c:dLbls'); |
|
339 | |||
340 | 15 | $objWriter->startElement('c:showLegendKey'); |
|
341 | 15 | $showLegendKey = (empty($chartLayout)) ? 0 : $chartLayout->getShowLegendKey(); |
|
342 | 15 | $objWriter->writeAttribute('val', ((empty($showLegendKey)) ? 0 : 1)); |
|
343 | 15 | $objWriter->endElement(); |
|
344 | |||
345 | 15 | $objWriter->startElement('c:showVal'); |
|
346 | 15 | $showVal = (empty($chartLayout)) ? 0 : $chartLayout->getShowVal(); |
|
347 | 15 | $objWriter->writeAttribute('val', ((empty($showVal)) ? 0 : 1)); |
|
348 | 15 | $objWriter->endElement(); |
|
349 | |||
350 | 15 | $objWriter->startElement('c:showCatName'); |
|
351 | 15 | $showCatName = (empty($chartLayout)) ? 0 : $chartLayout->getShowCatName(); |
|
352 | 15 | $objWriter->writeAttribute('val', ((empty($showCatName)) ? 0 : 1)); |
|
353 | 15 | $objWriter->endElement(); |
|
354 | |||
355 | 15 | $objWriter->startElement('c:showSerName'); |
|
356 | 15 | $showSerName = (empty($chartLayout)) ? 0 : $chartLayout->getShowSerName(); |
|
357 | 15 | $objWriter->writeAttribute('val', ((empty($showSerName)) ? 0 : 1)); |
|
358 | 15 | $objWriter->endElement(); |
|
359 | |||
360 | 15 | $objWriter->startElement('c:showPercent'); |
|
361 | 15 | $showPercent = (empty($chartLayout)) ? 0 : $chartLayout->getShowPercent(); |
|
362 | 15 | $objWriter->writeAttribute('val', ((empty($showPercent)) ? 0 : 1)); |
|
363 | 15 | $objWriter->endElement(); |
|
364 | |||
365 | 15 | $objWriter->startElement('c:showBubbleSize'); |
|
366 | 15 | $showBubbleSize = (empty($chartLayout)) ? 0 : $chartLayout->getShowBubbleSize(); |
|
367 | 15 | $objWriter->writeAttribute('val', ((empty($showBubbleSize)) ? 0 : 1)); |
|
368 | 15 | $objWriter->endElement(); |
|
369 | |||
370 | 15 | $objWriter->startElement('c:showLeaderLines'); |
|
371 | 15 | $showLeaderLines = (empty($chartLayout)) ? 1 : $chartLayout->getShowLeaderLines(); |
|
372 | 15 | $objWriter->writeAttribute('val', ((empty($showLeaderLines)) ? 0 : 1)); |
|
373 | 15 | $objWriter->endElement(); |
|
374 | |||
375 | 15 | $objWriter->endElement(); |
|
376 | 15 | } |
|
377 | |||
378 | /** |
||
379 | * Write Category Axis. |
||
380 | * |
||
381 | * @param XMLWriter $objWriter XML Writer |
||
382 | * @param Title $xAxisLabel |
||
383 | * @param string $id1 |
||
384 | * @param string $id2 |
||
385 | * @param bool $isMultiLevelSeries |
||
386 | */ |
||
387 | 13 | private function writeCategoryAxis($objWriter, $xAxisLabel, $id1, $id2, $isMultiLevelSeries, Axis $yAxis): void |
|
388 | { |
||
389 | 13 | $objWriter->startElement('c:catAx'); |
|
390 | |||
391 | 13 | if ($id1 > 0) { |
|
392 | 13 | $objWriter->startElement('c:axId'); |
|
393 | 13 | $objWriter->writeAttribute('val', $id1); |
|
394 | 13 | $objWriter->endElement(); |
|
395 | } |
||
396 | |||
397 | 13 | $objWriter->startElement('c:scaling'); |
|
398 | 13 | $objWriter->startElement('c:orientation'); |
|
399 | 13 | $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('orientation')); |
|
400 | 13 | $objWriter->endElement(); |
|
401 | 13 | $objWriter->endElement(); |
|
402 | |||
403 | 13 | $objWriter->startElement('c:delete'); |
|
404 | 13 | $objWriter->writeAttribute('val', 0); |
|
405 | 13 | $objWriter->endElement(); |
|
406 | |||
407 | 13 | $objWriter->startElement('c:axPos'); |
|
408 | 13 | $objWriter->writeAttribute('val', 'b'); |
|
409 | 13 | $objWriter->endElement(); |
|
410 | |||
411 | 13 | if ($xAxisLabel !== null) { |
|
412 | 3 | $objWriter->startElement('c:title'); |
|
413 | 3 | $objWriter->startElement('c:tx'); |
|
414 | 3 | $objWriter->startElement('c:rich'); |
|
415 | |||
416 | 3 | $objWriter->startElement('a:bodyPr'); |
|
417 | 3 | $objWriter->endElement(); |
|
418 | |||
419 | 3 | $objWriter->startElement('a:lstStyle'); |
|
420 | 3 | $objWriter->endElement(); |
|
421 | |||
422 | 3 | $objWriter->startElement('a:p'); |
|
423 | 3 | $objWriter->startElement('a:r'); |
|
424 | |||
425 | 3 | $caption = $xAxisLabel->getCaption(); |
|
426 | 3 | if (is_array($caption)) { |
|
427 | 1 | $caption = $caption[0]; |
|
428 | } |
||
429 | 3 | $objWriter->startElement('a:t'); |
|
430 | 3 | $objWriter->writeRawData(StringHelper::controlCharacterPHP2OOXML($caption)); |
|
431 | 3 | $objWriter->endElement(); |
|
432 | |||
433 | 3 | $objWriter->endElement(); |
|
434 | 3 | $objWriter->endElement(); |
|
435 | 3 | $objWriter->endElement(); |
|
436 | 3 | $objWriter->endElement(); |
|
437 | |||
438 | 3 | $layout = $xAxisLabel->getLayout(); |
|
439 | 3 | $this->writeLayout($objWriter, $layout); |
|
440 | |||
441 | 3 | $objWriter->startElement('c:overlay'); |
|
442 | 3 | $objWriter->writeAttribute('val', 0); |
|
443 | 3 | $objWriter->endElement(); |
|
444 | |||
445 | 3 | $objWriter->endElement(); |
|
446 | } |
||
447 | |||
448 | 13 | $objWriter->startElement('c:numFmt'); |
|
449 | 13 | $objWriter->writeAttribute('formatCode', $yAxis->getAxisNumberFormat()); |
|
450 | 13 | $objWriter->writeAttribute('sourceLinked', $yAxis->getAxisNumberSourceLinked()); |
|
451 | 13 | $objWriter->endElement(); |
|
452 | |||
453 | 13 | $objWriter->startElement('c:majorTickMark'); |
|
454 | 13 | $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('major_tick_mark')); |
|
455 | 13 | $objWriter->endElement(); |
|
456 | |||
457 | 13 | $objWriter->startElement('c:minorTickMark'); |
|
458 | 13 | $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('minor_tick_mark')); |
|
459 | 13 | $objWriter->endElement(); |
|
460 | |||
461 | 13 | $objWriter->startElement('c:tickLblPos'); |
|
462 | 13 | $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('axis_labels')); |
|
463 | 13 | $objWriter->endElement(); |
|
464 | |||
465 | 13 | if ($id2 > 0) { |
|
466 | 13 | $objWriter->startElement('c:crossAx'); |
|
467 | 13 | $objWriter->writeAttribute('val', $id2); |
|
468 | 13 | $objWriter->endElement(); |
|
469 | |||
470 | 13 | $objWriter->startElement('c:crosses'); |
|
471 | 13 | $objWriter->writeAttribute('val', $yAxis->getAxisOptionsProperty('horizontal_crosses')); |
|
472 | 13 | $objWriter->endElement(); |
|
473 | } |
||
474 | |||
475 | 13 | $objWriter->startElement('c:auto'); |
|
476 | 13 | $objWriter->writeAttribute('val', 1); |
|
477 | 13 | $objWriter->endElement(); |
|
478 | |||
479 | 13 | $objWriter->startElement('c:lblAlgn'); |
|
480 | 13 | $objWriter->writeAttribute('val', 'ctr'); |
|
481 | 13 | $objWriter->endElement(); |
|
482 | |||
483 | 13 | $objWriter->startElement('c:lblOffset'); |
|
484 | 13 | $objWriter->writeAttribute('val', 100); |
|
485 | 13 | $objWriter->endElement(); |
|
486 | |||
487 | 13 | if ($isMultiLevelSeries) { |
|
488 | 2 | $objWriter->startElement('c:noMultiLvlLbl'); |
|
489 | 2 | $objWriter->writeAttribute('val', 0); |
|
490 | 2 | $objWriter->endElement(); |
|
491 | } |
||
492 | 13 | $objWriter->endElement(); |
|
493 | 13 | } |
|
494 | |||
495 | /** |
||
496 | * Write Value Axis. |
||
497 | * |
||
498 | * @param XMLWriter $objWriter XML Writer |
||
499 | * @param Title $yAxisLabel |
||
500 | * @param string $groupType Chart type |
||
501 | * @param string $id1 |
||
502 | * @param string $id2 |
||
503 | * @param bool $isMultiLevelSeries |
||
504 | */ |
||
505 | 13 | private function writeValueAxis($objWriter, $yAxisLabel, $groupType, $id1, $id2, $isMultiLevelSeries, Axis $xAxis, GridLines $majorGridlines, GridLines $minorGridlines): void |
|
506 | { |
||
507 | 13 | $objWriter->startElement('c:valAx'); |
|
508 | |||
509 | 13 | if ($id2 > 0) { |
|
510 | 13 | $objWriter->startElement('c:axId'); |
|
511 | 13 | $objWriter->writeAttribute('val', $id2); |
|
512 | 13 | $objWriter->endElement(); |
|
513 | } |
||
514 | |||
515 | 13 | $objWriter->startElement('c:scaling'); |
|
516 | |||
517 | 13 | if ($xAxis->getAxisOptionsProperty('maximum') !== null) { |
|
518 | $objWriter->startElement('c:max'); |
||
519 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('maximum')); |
||
520 | $objWriter->endElement(); |
||
521 | } |
||
522 | |||
523 | 13 | if ($xAxis->getAxisOptionsProperty('minimum') !== null) { |
|
524 | $objWriter->startElement('c:min'); |
||
525 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minimum')); |
||
526 | $objWriter->endElement(); |
||
527 | } |
||
528 | |||
529 | 13 | $objWriter->startElement('c:orientation'); |
|
530 | 13 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('orientation')); |
|
531 | |||
532 | 13 | $objWriter->endElement(); |
|
533 | 13 | $objWriter->endElement(); |
|
534 | |||
535 | 13 | $objWriter->startElement('c:delete'); |
|
536 | 13 | $objWriter->writeAttribute('val', 0); |
|
537 | 13 | $objWriter->endElement(); |
|
538 | |||
539 | 13 | $objWriter->startElement('c:axPos'); |
|
540 | 13 | $objWriter->writeAttribute('val', 'l'); |
|
541 | 13 | $objWriter->endElement(); |
|
542 | |||
543 | 13 | $objWriter->startElement('c:majorGridlines'); |
|
544 | 13 | $objWriter->startElement('c:spPr'); |
|
545 | |||
546 | 13 | if ($majorGridlines->getLineColorProperty('value') !== null) { |
|
547 | $objWriter->startElement('a:ln'); |
||
548 | $objWriter->writeAttribute('w', $majorGridlines->getLineStyleProperty('width')); |
||
549 | $objWriter->startElement('a:solidFill'); |
||
550 | $objWriter->startElement("a:{$majorGridlines->getLineColorProperty('type')}"); |
||
551 | $objWriter->writeAttribute('val', $majorGridlines->getLineColorProperty('value')); |
||
552 | $objWriter->startElement('a:alpha'); |
||
553 | $objWriter->writeAttribute('val', $majorGridlines->getLineColorProperty('alpha')); |
||
554 | $objWriter->endElement(); //end alpha |
||
555 | $objWriter->endElement(); //end srgbClr |
||
556 | $objWriter->endElement(); //end solidFill |
||
557 | |||
558 | $objWriter->startElement('a:prstDash'); |
||
559 | $objWriter->writeAttribute('val', $majorGridlines->getLineStyleProperty('dash')); |
||
560 | $objWriter->endElement(); |
||
561 | |||
562 | if ($majorGridlines->getLineStyleProperty('join') == 'miter') { |
||
563 | $objWriter->startElement('a:miter'); |
||
564 | $objWriter->writeAttribute('lim', '800000'); |
||
565 | $objWriter->endElement(); |
||
566 | } else { |
||
567 | $objWriter->startElement('a:bevel'); |
||
568 | $objWriter->endElement(); |
||
569 | } |
||
570 | |||
571 | if ($majorGridlines->getLineStyleProperty(['arrow', 'head', 'type']) !== null) { |
||
572 | $objWriter->startElement('a:headEnd'); |
||
573 | $objWriter->writeAttribute('type', $majorGridlines->getLineStyleProperty(['arrow', 'head', 'type'])); |
||
574 | $objWriter->writeAttribute('w', $majorGridlines->getLineStyleArrowParameters('head', 'w')); |
||
575 | $objWriter->writeAttribute('len', $majorGridlines->getLineStyleArrowParameters('head', 'len')); |
||
576 | $objWriter->endElement(); |
||
577 | } |
||
578 | |||
579 | if ($majorGridlines->getLineStyleProperty(['arrow', 'end', 'type']) !== null) { |
||
580 | $objWriter->startElement('a:tailEnd'); |
||
581 | $objWriter->writeAttribute('type', $majorGridlines->getLineStyleProperty(['arrow', 'end', 'type'])); |
||
582 | $objWriter->writeAttribute('w', $majorGridlines->getLineStyleArrowParameters('end', 'w')); |
||
583 | $objWriter->writeAttribute('len', $majorGridlines->getLineStyleArrowParameters('end', 'len')); |
||
584 | $objWriter->endElement(); |
||
585 | } |
||
586 | $objWriter->endElement(); //end ln |
||
587 | } |
||
588 | 13 | $objWriter->startElement('a:effectLst'); |
|
589 | |||
590 | 13 | if ($majorGridlines->getGlowSize() !== null) { |
|
591 | $objWriter->startElement('a:glow'); |
||
592 | $objWriter->writeAttribute('rad', $majorGridlines->getGlowSize()); |
||
593 | $objWriter->startElement("a:{$majorGridlines->getGlowColor('type')}"); |
||
594 | $objWriter->writeAttribute('val', $majorGridlines->getGlowColor('value')); |
||
595 | $objWriter->startElement('a:alpha'); |
||
596 | $objWriter->writeAttribute('val', $majorGridlines->getGlowColor('alpha')); |
||
597 | $objWriter->endElement(); //end alpha |
||
598 | $objWriter->endElement(); //end schemeClr |
||
599 | $objWriter->endElement(); //end glow |
||
600 | } |
||
601 | |||
602 | 13 | if ($majorGridlines->getShadowProperty('presets') !== null) { |
|
603 | $objWriter->startElement("a:{$majorGridlines->getShadowProperty('effect')}"); |
||
604 | if ($majorGridlines->getShadowProperty('blur') !== null) { |
||
605 | $objWriter->writeAttribute('blurRad', $majorGridlines->getShadowProperty('blur')); |
||
606 | } |
||
607 | if ($majorGridlines->getShadowProperty('distance') !== null) { |
||
608 | $objWriter->writeAttribute('dist', $majorGridlines->getShadowProperty('distance')); |
||
609 | } |
||
610 | if ($majorGridlines->getShadowProperty('direction') !== null) { |
||
611 | $objWriter->writeAttribute('dir', $majorGridlines->getShadowProperty('direction')); |
||
612 | } |
||
613 | if ($majorGridlines->getShadowProperty('algn') !== null) { |
||
614 | $objWriter->writeAttribute('algn', $majorGridlines->getShadowProperty('algn')); |
||
615 | } |
||
616 | if ($majorGridlines->getShadowProperty(['size', 'sx']) !== null) { |
||
617 | $objWriter->writeAttribute('sx', $majorGridlines->getShadowProperty(['size', 'sx'])); |
||
618 | } |
||
619 | if ($majorGridlines->getShadowProperty(['size', 'sy']) !== null) { |
||
620 | $objWriter->writeAttribute('sy', $majorGridlines->getShadowProperty(['size', 'sy'])); |
||
621 | } |
||
622 | if ($majorGridlines->getShadowProperty(['size', 'kx']) !== null) { |
||
623 | $objWriter->writeAttribute('kx', $majorGridlines->getShadowProperty(['size', 'kx'])); |
||
624 | } |
||
625 | if ($majorGridlines->getShadowProperty('rotWithShape') !== null) { |
||
626 | $objWriter->writeAttribute('rotWithShape', $majorGridlines->getShadowProperty('rotWithShape')); |
||
627 | } |
||
628 | $objWriter->startElement("a:{$majorGridlines->getShadowProperty(['color', 'type'])}"); |
||
629 | $objWriter->writeAttribute('val', $majorGridlines->getShadowProperty(['color', 'value'])); |
||
630 | |||
631 | $objWriter->startElement('a:alpha'); |
||
632 | $objWriter->writeAttribute('val', $majorGridlines->getShadowProperty(['color', 'alpha'])); |
||
633 | $objWriter->endElement(); //end alpha |
||
634 | |||
635 | $objWriter->endElement(); //end color:type |
||
636 | $objWriter->endElement(); //end shadow |
||
637 | } |
||
638 | |||
639 | 13 | if ($majorGridlines->getSoftEdgesSize() !== null) { |
|
640 | $objWriter->startElement('a:softEdge'); |
||
641 | $objWriter->writeAttribute('rad', $majorGridlines->getSoftEdgesSize()); |
||
642 | $objWriter->endElement(); //end softEdge |
||
643 | } |
||
644 | |||
645 | 13 | $objWriter->endElement(); //end effectLst |
|
646 | 13 | $objWriter->endElement(); //end spPr |
|
647 | 13 | $objWriter->endElement(); //end majorGridLines |
|
648 | |||
649 | 13 | if ($minorGridlines->getObjectState()) { |
|
650 | $objWriter->startElement('c:minorGridlines'); |
||
651 | $objWriter->startElement('c:spPr'); |
||
652 | |||
653 | if ($minorGridlines->getLineColorProperty('value') !== null) { |
||
654 | $objWriter->startElement('a:ln'); |
||
655 | $objWriter->writeAttribute('w', $minorGridlines->getLineStyleProperty('width')); |
||
656 | $objWriter->startElement('a:solidFill'); |
||
657 | $objWriter->startElement("a:{$minorGridlines->getLineColorProperty('type')}"); |
||
658 | $objWriter->writeAttribute('val', $minorGridlines->getLineColorProperty('value')); |
||
659 | $objWriter->startElement('a:alpha'); |
||
660 | $objWriter->writeAttribute('val', $minorGridlines->getLineColorProperty('alpha')); |
||
661 | $objWriter->endElement(); //end alpha |
||
662 | $objWriter->endElement(); //end srgbClr |
||
663 | $objWriter->endElement(); //end solidFill |
||
664 | |||
665 | $objWriter->startElement('a:prstDash'); |
||
666 | $objWriter->writeAttribute('val', $minorGridlines->getLineStyleProperty('dash')); |
||
667 | $objWriter->endElement(); |
||
668 | |||
669 | if ($minorGridlines->getLineStyleProperty('join') == 'miter') { |
||
670 | $objWriter->startElement('a:miter'); |
||
671 | $objWriter->writeAttribute('lim', '800000'); |
||
672 | $objWriter->endElement(); |
||
673 | } else { |
||
674 | $objWriter->startElement('a:bevel'); |
||
675 | $objWriter->endElement(); |
||
676 | } |
||
677 | |||
678 | if ($minorGridlines->getLineStyleProperty(['arrow', 'head', 'type']) !== null) { |
||
679 | $objWriter->startElement('a:headEnd'); |
||
680 | $objWriter->writeAttribute('type', $minorGridlines->getLineStyleProperty(['arrow', 'head', 'type'])); |
||
681 | $objWriter->writeAttribute('w', $minorGridlines->getLineStyleArrowParameters('head', 'w')); |
||
682 | $objWriter->writeAttribute('len', $minorGridlines->getLineStyleArrowParameters('head', 'len')); |
||
683 | $objWriter->endElement(); |
||
684 | } |
||
685 | |||
686 | if ($minorGridlines->getLineStyleProperty(['arrow', 'end', 'type']) !== null) { |
||
687 | $objWriter->startElement('a:tailEnd'); |
||
688 | $objWriter->writeAttribute('type', $minorGridlines->getLineStyleProperty(['arrow', 'end', 'type'])); |
||
689 | $objWriter->writeAttribute('w', $minorGridlines->getLineStyleArrowParameters('end', 'w')); |
||
690 | $objWriter->writeAttribute('len', $minorGridlines->getLineStyleArrowParameters('end', 'len')); |
||
691 | $objWriter->endElement(); |
||
692 | } |
||
693 | $objWriter->endElement(); //end ln |
||
694 | } |
||
695 | |||
696 | $objWriter->startElement('a:effectLst'); |
||
697 | |||
698 | if ($minorGridlines->getGlowSize() !== null) { |
||
699 | $objWriter->startElement('a:glow'); |
||
700 | $objWriter->writeAttribute('rad', $minorGridlines->getGlowSize()); |
||
701 | $objWriter->startElement("a:{$minorGridlines->getGlowColor('type')}"); |
||
702 | $objWriter->writeAttribute('val', $minorGridlines->getGlowColor('value')); |
||
703 | $objWriter->startElement('a:alpha'); |
||
704 | $objWriter->writeAttribute('val', $minorGridlines->getGlowColor('alpha')); |
||
705 | $objWriter->endElement(); //end alpha |
||
706 | $objWriter->endElement(); //end schemeClr |
||
707 | $objWriter->endElement(); //end glow |
||
708 | } |
||
709 | |||
710 | if ($minorGridlines->getShadowProperty('presets') !== null) { |
||
711 | $objWriter->startElement("a:{$minorGridlines->getShadowProperty('effect')}"); |
||
712 | if ($minorGridlines->getShadowProperty('blur') !== null) { |
||
713 | $objWriter->writeAttribute('blurRad', $minorGridlines->getShadowProperty('blur')); |
||
714 | } |
||
715 | if ($minorGridlines->getShadowProperty('distance') !== null) { |
||
716 | $objWriter->writeAttribute('dist', $minorGridlines->getShadowProperty('distance')); |
||
717 | } |
||
718 | if ($minorGridlines->getShadowProperty('direction') !== null) { |
||
719 | $objWriter->writeAttribute('dir', $minorGridlines->getShadowProperty('direction')); |
||
720 | } |
||
721 | if ($minorGridlines->getShadowProperty('algn') !== null) { |
||
722 | $objWriter->writeAttribute('algn', $minorGridlines->getShadowProperty('algn')); |
||
723 | } |
||
724 | if ($minorGridlines->getShadowProperty(['size', 'sx']) !== null) { |
||
725 | $objWriter->writeAttribute('sx', $minorGridlines->getShadowProperty(['size', 'sx'])); |
||
726 | } |
||
727 | if ($minorGridlines->getShadowProperty(['size', 'sy']) !== null) { |
||
728 | $objWriter->writeAttribute('sy', $minorGridlines->getShadowProperty(['size', 'sy'])); |
||
729 | } |
||
730 | if ($minorGridlines->getShadowProperty(['size', 'kx']) !== null) { |
||
731 | $objWriter->writeAttribute('kx', $minorGridlines->getShadowProperty(['size', 'kx'])); |
||
732 | } |
||
733 | if ($minorGridlines->getShadowProperty('rotWithShape') !== null) { |
||
734 | $objWriter->writeAttribute('rotWithShape', $minorGridlines->getShadowProperty('rotWithShape')); |
||
735 | } |
||
736 | $objWriter->startElement("a:{$minorGridlines->getShadowProperty(['color', 'type'])}"); |
||
737 | $objWriter->writeAttribute('val', $minorGridlines->getShadowProperty(['color', 'value'])); |
||
738 | $objWriter->startElement('a:alpha'); |
||
739 | $objWriter->writeAttribute('val', $minorGridlines->getShadowProperty(['color', 'alpha'])); |
||
740 | $objWriter->endElement(); //end alpha |
||
741 | $objWriter->endElement(); //end color:type |
||
742 | $objWriter->endElement(); //end shadow |
||
743 | } |
||
744 | |||
745 | if ($minorGridlines->getSoftEdgesSize() !== null) { |
||
746 | $objWriter->startElement('a:softEdge'); |
||
747 | $objWriter->writeAttribute('rad', $minorGridlines->getSoftEdgesSize()); |
||
748 | $objWriter->endElement(); //end softEdge |
||
749 | } |
||
750 | |||
751 | $objWriter->endElement(); //end effectLst |
||
752 | $objWriter->endElement(); //end spPr |
||
753 | $objWriter->endElement(); //end minorGridLines |
||
754 | } |
||
755 | |||
756 | 13 | if ($yAxisLabel !== null) { |
|
757 | 11 | $objWriter->startElement('c:title'); |
|
758 | 11 | $objWriter->startElement('c:tx'); |
|
759 | 11 | $objWriter->startElement('c:rich'); |
|
760 | |||
761 | 11 | $objWriter->startElement('a:bodyPr'); |
|
762 | 11 | $objWriter->endElement(); |
|
763 | |||
764 | 11 | $objWriter->startElement('a:lstStyle'); |
|
765 | 11 | $objWriter->endElement(); |
|
766 | |||
767 | 11 | $objWriter->startElement('a:p'); |
|
768 | 11 | $objWriter->startElement('a:r'); |
|
769 | |||
770 | 11 | $caption = $yAxisLabel->getCaption(); |
|
771 | 11 | if (is_array($caption)) { |
|
772 | 2 | $caption = $caption[0]; |
|
773 | } |
||
774 | |||
775 | 11 | $objWriter->startElement('a:t'); |
|
776 | 11 | $objWriter->writeRawData(StringHelper::controlCharacterPHP2OOXML($caption)); |
|
777 | 11 | $objWriter->endElement(); |
|
778 | |||
779 | 11 | $objWriter->endElement(); |
|
780 | 11 | $objWriter->endElement(); |
|
781 | 11 | $objWriter->endElement(); |
|
782 | 11 | $objWriter->endElement(); |
|
783 | |||
784 | 11 | if ($groupType !== DataSeries::TYPE_BUBBLECHART) { |
|
785 | 11 | $layout = $yAxisLabel->getLayout(); |
|
786 | 11 | $this->writeLayout($objWriter, $layout); |
|
787 | } |
||
788 | |||
789 | 11 | $objWriter->startElement('c:overlay'); |
|
790 | 11 | $objWriter->writeAttribute('val', 0); |
|
791 | 11 | $objWriter->endElement(); |
|
792 | |||
793 | 11 | $objWriter->endElement(); |
|
794 | } |
||
795 | |||
796 | 13 | $objWriter->startElement('c:numFmt'); |
|
797 | 13 | $objWriter->writeAttribute('formatCode', $xAxis->getAxisNumberFormat()); |
|
798 | 13 | $objWriter->writeAttribute('sourceLinked', $xAxis->getAxisNumberSourceLinked()); |
|
799 | 13 | $objWriter->endElement(); |
|
800 | |||
801 | 13 | $objWriter->startElement('c:majorTickMark'); |
|
802 | 13 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('major_tick_mark')); |
|
803 | 13 | $objWriter->endElement(); |
|
804 | |||
805 | 13 | $objWriter->startElement('c:minorTickMark'); |
|
806 | 13 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minor_tick_mark')); |
|
807 | 13 | $objWriter->endElement(); |
|
808 | |||
809 | 13 | $objWriter->startElement('c:tickLblPos'); |
|
810 | 13 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('axis_labels')); |
|
811 | 13 | $objWriter->endElement(); |
|
812 | |||
813 | 13 | $objWriter->startElement('c:spPr'); |
|
814 | |||
815 | 13 | if ($xAxis->getFillProperty('value') !== null) { |
|
816 | $objWriter->startElement('a:solidFill'); |
||
817 | $objWriter->startElement('a:' . $xAxis->getFillProperty('type')); |
||
818 | $objWriter->writeAttribute('val', $xAxis->getFillProperty('value')); |
||
819 | $objWriter->startElement('a:alpha'); |
||
820 | $objWriter->writeAttribute('val', $xAxis->getFillProperty('alpha')); |
||
821 | $objWriter->endElement(); |
||
822 | $objWriter->endElement(); |
||
823 | $objWriter->endElement(); |
||
824 | } |
||
825 | |||
826 | 13 | $objWriter->startElement('a:ln'); |
|
827 | |||
828 | 13 | $objWriter->writeAttribute('w', $xAxis->getLineStyleProperty('width')); |
|
829 | 13 | $objWriter->writeAttribute('cap', $xAxis->getLineStyleProperty('cap')); |
|
830 | 13 | $objWriter->writeAttribute('cmpd', $xAxis->getLineStyleProperty('compound')); |
|
831 | |||
832 | 13 | if ($xAxis->getLineProperty('value') !== null) { |
|
833 | $objWriter->startElement('a:solidFill'); |
||
834 | $objWriter->startElement('a:' . $xAxis->getLineProperty('type')); |
||
835 | $objWriter->writeAttribute('val', $xAxis->getLineProperty('value')); |
||
836 | $objWriter->startElement('a:alpha'); |
||
837 | $objWriter->writeAttribute('val', $xAxis->getLineProperty('alpha')); |
||
838 | $objWriter->endElement(); |
||
839 | $objWriter->endElement(); |
||
840 | $objWriter->endElement(); |
||
841 | } |
||
842 | |||
843 | 13 | $objWriter->startElement('a:prstDash'); |
|
844 | 13 | $objWriter->writeAttribute('val', $xAxis->getLineStyleProperty('dash')); |
|
845 | 13 | $objWriter->endElement(); |
|
846 | |||
847 | 13 | if ($xAxis->getLineStyleProperty('join') == 'miter') { |
|
848 | $objWriter->startElement('a:miter'); |
||
849 | $objWriter->writeAttribute('lim', '800000'); |
||
850 | $objWriter->endElement(); |
||
851 | } else { |
||
852 | 13 | $objWriter->startElement('a:bevel'); |
|
853 | 13 | $objWriter->endElement(); |
|
854 | } |
||
855 | |||
856 | 13 | if ($xAxis->getLineStyleProperty(['arrow', 'head', 'type']) !== null) { |
|
857 | $objWriter->startElement('a:headEnd'); |
||
858 | $objWriter->writeAttribute('type', $xAxis->getLineStyleProperty(['arrow', 'head', 'type'])); |
||
859 | $objWriter->writeAttribute('w', $xAxis->getLineStyleArrowWidth('head')); |
||
860 | $objWriter->writeAttribute('len', $xAxis->getLineStyleArrowLength('head')); |
||
861 | $objWriter->endElement(); |
||
862 | } |
||
863 | |||
864 | 13 | if ($xAxis->getLineStyleProperty(['arrow', 'end', 'type']) !== null) { |
|
865 | $objWriter->startElement('a:tailEnd'); |
||
866 | $objWriter->writeAttribute('type', $xAxis->getLineStyleProperty(['arrow', 'end', 'type'])); |
||
867 | $objWriter->writeAttribute('w', $xAxis->getLineStyleArrowWidth('end')); |
||
868 | $objWriter->writeAttribute('len', $xAxis->getLineStyleArrowLength('end')); |
||
869 | $objWriter->endElement(); |
||
870 | } |
||
871 | |||
872 | 13 | $objWriter->endElement(); |
|
873 | |||
874 | 13 | $objWriter->startElement('a:effectLst'); |
|
875 | |||
876 | 13 | if ($xAxis->getGlowProperty('size') !== null) { |
|
877 | $objWriter->startElement('a:glow'); |
||
878 | $objWriter->writeAttribute('rad', $xAxis->getGlowProperty('size')); |
||
879 | $objWriter->startElement("a:{$xAxis->getGlowProperty(['color', 'type'])}"); |
||
880 | $objWriter->writeAttribute('val', $xAxis->getGlowProperty(['color', 'value'])); |
||
881 | $objWriter->startElement('a:alpha'); |
||
882 | $objWriter->writeAttribute('val', $xAxis->getGlowProperty(['color', 'alpha'])); |
||
883 | $objWriter->endElement(); |
||
884 | $objWriter->endElement(); |
||
885 | $objWriter->endElement(); |
||
886 | } |
||
887 | |||
888 | 13 | if ($xAxis->getShadowProperty('presets') !== null) { |
|
889 | $objWriter->startElement("a:{$xAxis->getShadowProperty('effect')}"); |
||
890 | |||
891 | if ($xAxis->getShadowProperty('blur') !== null) { |
||
892 | $objWriter->writeAttribute('blurRad', $xAxis->getShadowProperty('blur')); |
||
1 ignored issue
–
show
|
|||
893 | } |
||
894 | if ($xAxis->getShadowProperty('distance') !== null) { |
||
895 | $objWriter->writeAttribute('dist', $xAxis->getShadowProperty('distance')); |
||
896 | } |
||
897 | if ($xAxis->getShadowProperty('direction') !== null) { |
||
898 | $objWriter->writeAttribute('dir', $xAxis->getShadowProperty('direction')); |
||
899 | } |
||
900 | if ($xAxis->getShadowProperty('algn') !== null) { |
||
901 | $objWriter->writeAttribute('algn', $xAxis->getShadowProperty('algn')); |
||
902 | } |
||
903 | if ($xAxis->getShadowProperty(['size', 'sx']) !== null) { |
||
904 | $objWriter->writeAttribute('sx', $xAxis->getShadowProperty(['size', 'sx'])); |
||
905 | } |
||
906 | if ($xAxis->getShadowProperty(['size', 'sy']) !== null) { |
||
907 | $objWriter->writeAttribute('sy', $xAxis->getShadowProperty(['size', 'sy'])); |
||
908 | } |
||
909 | if ($xAxis->getShadowProperty(['size', 'kx']) !== null) { |
||
910 | $objWriter->writeAttribute('kx', $xAxis->getShadowProperty(['size', 'kx'])); |
||
911 | } |
||
912 | if ($xAxis->getShadowProperty('rotWithShape') !== null) { |
||
913 | $objWriter->writeAttribute('rotWithShape', $xAxis->getShadowProperty('rotWithShape')); |
||
914 | } |
||
915 | |||
916 | $objWriter->startElement("a:{$xAxis->getShadowProperty(['color', 'type'])}"); |
||
917 | $objWriter->writeAttribute('val', $xAxis->getShadowProperty(['color', 'value'])); |
||
918 | $objWriter->startElement('a:alpha'); |
||
919 | $objWriter->writeAttribute('val', $xAxis->getShadowProperty(['color', 'alpha'])); |
||
920 | $objWriter->endElement(); |
||
921 | $objWriter->endElement(); |
||
922 | |||
923 | $objWriter->endElement(); |
||
924 | } |
||
925 | |||
926 | 13 | if ($xAxis->getSoftEdgesSize() !== null) { |
|
927 | $objWriter->startElement('a:softEdge'); |
||
928 | $objWriter->writeAttribute('rad', $xAxis->getSoftEdgesSize()); |
||
929 | $objWriter->endElement(); |
||
930 | } |
||
931 | |||
932 | 13 | $objWriter->endElement(); //effectList |
|
933 | 13 | $objWriter->endElement(); //end spPr |
|
934 | |||
935 | 13 | if ($id1 > 0) { |
|
936 | 13 | $objWriter->startElement('c:crossAx'); |
|
937 | 13 | $objWriter->writeAttribute('val', $id2); |
|
938 | 13 | $objWriter->endElement(); |
|
939 | |||
940 | 13 | if ($xAxis->getAxisOptionsProperty('horizontal_crosses_value') !== null) { |
|
941 | $objWriter->startElement('c:crossesAt'); |
||
942 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('horizontal_crosses_value')); |
||
943 | $objWriter->endElement(); |
||
944 | } else { |
||
945 | 13 | $objWriter->startElement('c:crosses'); |
|
946 | 13 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('horizontal_crosses')); |
|
947 | 13 | $objWriter->endElement(); |
|
948 | } |
||
949 | |||
950 | 13 | $objWriter->startElement('c:crossBetween'); |
|
951 | 13 | $objWriter->writeAttribute('val', 'midCat'); |
|
952 | 13 | $objWriter->endElement(); |
|
953 | |||
954 | 13 | if ($xAxis->getAxisOptionsProperty('major_unit') !== null) { |
|
955 | $objWriter->startElement('c:majorUnit'); |
||
956 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('major_unit')); |
||
957 | $objWriter->endElement(); |
||
958 | } |
||
959 | |||
960 | 13 | if ($xAxis->getAxisOptionsProperty('minor_unit') !== null) { |
|
961 | $objWriter->startElement('c:minorUnit'); |
||
962 | $objWriter->writeAttribute('val', $xAxis->getAxisOptionsProperty('minor_unit')); |
||
963 | $objWriter->endElement(); |
||
964 | } |
||
965 | } |
||
966 | |||
967 | 13 | if ($isMultiLevelSeries) { |
|
968 | 1 | if ($groupType !== DataSeries::TYPE_BUBBLECHART) { |
|
969 | $objWriter->startElement('c:noMultiLvlLbl'); |
||
970 | $objWriter->writeAttribute('val', 0); |
||
971 | $objWriter->endElement(); |
||
972 | } |
||
973 | } |
||
974 | |||
975 | 13 | $objWriter->endElement(); |
|
976 | 13 | } |
|
977 | |||
978 | /** |
||
979 | * Get the data series type(s) for a chart plot series. |
||
980 | * |
||
981 | * @param PlotArea $plotArea |
||
982 | * |
||
983 | * @return array|string |
||
984 | */ |
||
985 | 15 | private static function getChartType($plotArea) |
|
986 | { |
||
987 | 15 | $groupCount = $plotArea->getPlotGroupCount(); |
|
988 | |||
989 | 15 | if ($groupCount == 1) { |
|
990 | 14 | $chartType = [$plotArea->getPlotGroupByIndex(0)->getPlotType()]; |
|
991 | } else { |
||
992 | 2 | $chartTypes = []; |
|
993 | 2 | for ($i = 0; $i < $groupCount; ++$i) { |
|
994 | 2 | $chartTypes[] = $plotArea->getPlotGroupByIndex($i)->getPlotType(); |
|
995 | } |
||
996 | 2 | $chartType = array_unique($chartTypes); |
|
997 | 2 | if (count($chartTypes) == 0) { |
|
998 | throw new WriterException('Chart is not yet implemented'); |
||
999 | } |
||
1000 | } |
||
1001 | |||
1002 | 15 | return $chartType; |
|
1003 | } |
||
1004 | |||
1005 | /** |
||
1006 | * Method writing plot series values. |
||
1007 | * |
||
1008 | * @param XMLWriter $objWriter XML Writer |
||
1009 | * @param int $val value for idx (default: 3) |
||
1010 | * @param string $fillColor hex color (default: FF9900) |
||
1011 | * |
||
1012 | * @return XMLWriter XML Writer |
||
1013 | */ |
||
1014 | 3 | private function writePlotSeriesValuesElement($objWriter, $val = 3, $fillColor = 'FF9900') |
|
1035 | } |
||
1036 | |||
1037 | /** |
||
1038 | * Write Plot Group (series of related plots). |
||
1039 | * |
||
1040 | * @param DataSeries $plotGroup |
||
1041 | * @param string $groupType Type of plot for dataseries |
||
1042 | * @param XMLWriter $objWriter XML Writer |
||
1043 | * @param bool &$catIsMultiLevelSeries Is category a multi-series category |
||
1044 | * @param bool &$valIsMultiLevelSeries Is value set a multi-series set |
||
1045 | * @param string &$plotGroupingType Type of grouping for multi-series values |
||
1046 | */ |
||
1047 | 15 | private function writePlotGroup($plotGroup, $groupType, $objWriter, &$catIsMultiLevelSeries, &$valIsMultiLevelSeries, &$plotGroupingType): void |
|
1048 | { |
||
1049 | 15 | if ($plotGroup === null) { |
|
1050 | return; |
||
1051 | } |
||
1052 | |||
1053 | 15 | if (($groupType == DataSeries::TYPE_BARCHART) || ($groupType == DataSeries::TYPE_BARCHART_3D)) { |
|
1054 | 8 | $objWriter->startElement('c:barDir'); |
|
1055 | 8 | $objWriter->writeAttribute('val', $plotGroup->getPlotDirection()); |
|
1056 | 8 | $objWriter->endElement(); |
|
1057 | } |
||
1058 | |||
1059 | 15 | if ($plotGroup->getPlotGrouping() !== null) { |
|
1060 | 10 | $plotGroupingType = $plotGroup->getPlotGrouping(); |
|
1061 | 10 | $objWriter->startElement('c:grouping'); |
|
1062 | 10 | $objWriter->writeAttribute('val', $plotGroupingType); |
|
1063 | 10 | $objWriter->endElement(); |
|
1064 | } |
||
1065 | |||
1066 | // Get these details before the loop, because we can use the count to check for varyColors |
||
1067 | 15 | $plotSeriesOrder = $plotGroup->getPlotOrder(); |
|
1068 | 15 | $plotSeriesCount = count($plotSeriesOrder); |
|
1069 | |||
1070 | 15 | if (($groupType !== DataSeries::TYPE_RADARCHART) && ($groupType !== DataSeries::TYPE_STOCKCHART)) { |
|
1071 | 13 | if ($groupType !== DataSeries::TYPE_LINECHART) { |
|
1072 | 12 | if (($groupType == DataSeries::TYPE_PIECHART) || ($groupType == DataSeries::TYPE_PIECHART_3D) || ($groupType == DataSeries::TYPE_DONUTCHART) || ($plotSeriesCount > 1)) { |
|
1073 | 11 | $objWriter->startElement('c:varyColors'); |
|
1074 | 11 | $objWriter->writeAttribute('val', 1); |
|
1075 | 11 | $objWriter->endElement(); |
|
1076 | } else { |
||
1077 | 2 | $objWriter->startElement('c:varyColors'); |
|
1078 | 2 | $objWriter->writeAttribute('val', 0); |
|
1079 | 2 | $objWriter->endElement(); |
|
1080 | } |
||
1081 | } |
||
1082 | } |
||
1083 | |||
1084 | 15 | $plotSeriesIdx = 0; |
|
1085 | 15 | foreach ($plotSeriesOrder as $plotSeriesIdx => $plotSeriesRef) { |
|
1086 | 15 | $objWriter->startElement('c:ser'); |
|
1087 | |||
1088 | 15 | $plotLabel = $plotGroup->getPlotLabelByIndex($plotSeriesIdx); |
|
1089 | 15 | if ($plotLabel) { |
|
1090 | 15 | $fillColor = $plotLabel->getFillColor(); |
|
1091 | 15 | if ($fillColor !== null && !is_array($fillColor)) { |
|
1092 | $objWriter->startElement('c:spPr'); |
||
1093 | $objWriter->startElement('a:solidFill'); |
||
1094 | $objWriter->startElement('a:srgbClr'); |
||
1095 | $objWriter->writeAttribute('val', $fillColor); |
||
1096 | $objWriter->endElement(); |
||
1097 | $objWriter->endElement(); |
||
1098 | $objWriter->endElement(); |
||
1099 | } |
||
1100 | } |
||
1101 | |||
1102 | 15 | $objWriter->startElement('c:idx'); |
|
1103 | 15 | $objWriter->writeAttribute('val', $this->seriesIndex + $plotSeriesIdx); |
|
1104 | 15 | $objWriter->endElement(); |
|
1105 | |||
1106 | 15 | $objWriter->startElement('c:order'); |
|
1107 | 15 | $objWriter->writeAttribute('val', $this->seriesIndex + $plotSeriesRef); |
|
1108 | 15 | $objWriter->endElement(); |
|
1109 | |||
1110 | // Values |
||
1111 | 15 | $plotSeriesValues = $plotGroup->getPlotValuesByIndex($plotSeriesRef); |
|
1112 | |||
1113 | 15 | if (($groupType == DataSeries::TYPE_PIECHART) || ($groupType == DataSeries::TYPE_PIECHART_3D) || ($groupType == DataSeries::TYPE_DONUTCHART)) { |
|
1114 | 3 | $fillColorValues = $plotSeriesValues->getFillColor(); |
|
1115 | 3 | if ($fillColorValues !== null && is_array($fillColorValues)) { |
|
1116 | 1 | foreach ($plotSeriesValues->getDataValues() as $dataKey => $dataValue) { |
|
1117 | 1 | $this->writePlotSeriesValuesElement($objWriter, $dataKey, ($fillColorValues[$dataKey] ?? 'FF9900')); |
|
1118 | } |
||
1119 | } else { |
||
1120 | 2 | $this->writePlotSeriesValuesElement($objWriter); |
|
1121 | } |
||
1122 | } |
||
1123 | |||
1124 | // Labels |
||
1125 | 15 | $plotSeriesLabel = $plotGroup->getPlotLabelByIndex($plotSeriesRef); |
|
1126 | 15 | if ($plotSeriesLabel && ($plotSeriesLabel->getPointCount() > 0)) { |
|
1127 | 15 | $objWriter->startElement('c:tx'); |
|
1128 | 15 | $objWriter->startElement('c:strRef'); |
|
1129 | 15 | $this->writePlotSeriesLabel($plotSeriesLabel, $objWriter); |
|
1130 | 15 | $objWriter->endElement(); |
|
1131 | 15 | $objWriter->endElement(); |
|
1132 | } |
||
1133 | |||
1134 | // Formatting for the points |
||
1135 | 15 | if (($groupType == DataSeries::TYPE_LINECHART) || ($groupType == DataSeries::TYPE_STOCKCHART)) { |
|
1136 | 4 | $plotLineWidth = 12700; |
|
1137 | 4 | if ($plotSeriesValues) { |
|
1138 | 4 | $plotLineWidth = $plotSeriesValues->getLineWidth(); |
|
1139 | } |
||
1140 | |||
1141 | 4 | $objWriter->startElement('c:spPr'); |
|
1142 | 4 | $objWriter->startElement('a:ln'); |
|
1143 | 4 | $objWriter->writeAttribute('w', $plotLineWidth); |
|
1144 | 4 | if ($groupType == DataSeries::TYPE_STOCKCHART) { |
|
1145 | 2 | $objWriter->startElement('a:noFill'); |
|
1146 | 2 | $objWriter->endElement(); |
|
1147 | } |
||
1148 | 4 | $objWriter->endElement(); |
|
1149 | 4 | $objWriter->endElement(); |
|
1150 | } |
||
1151 | |||
1152 | 15 | if ($plotSeriesValues) { |
|
1153 | 15 | $plotSeriesMarker = $plotSeriesValues->getPointMarker(); |
|
1154 | 15 | if ($plotSeriesMarker) { |
|
1155 | 1 | $objWriter->startElement('c:marker'); |
|
1156 | 1 | $objWriter->startElement('c:symbol'); |
|
1157 | 1 | $objWriter->writeAttribute('val', $plotSeriesMarker); |
|
1158 | 1 | $objWriter->endElement(); |
|
1159 | |||
1160 | 1 | if ($plotSeriesMarker !== 'none') { |
|
1161 | 1 | $objWriter->startElement('c:size'); |
|
1162 | 1 | $objWriter->writeAttribute('val', 3); |
|
1163 | 1 | $objWriter->endElement(); |
|
1164 | } |
||
1165 | |||
1166 | 1 | $objWriter->endElement(); |
|
1167 | } |
||
1168 | } |
||
1169 | |||
1170 | 15 | if (($groupType === DataSeries::TYPE_BARCHART) || ($groupType === DataSeries::TYPE_BARCHART_3D) || ($groupType === DataSeries::TYPE_BUBBLECHART)) { |
|
1171 | 8 | $objWriter->startElement('c:invertIfNegative'); |
|
1172 | 8 | $objWriter->writeAttribute('val', 0); |
|
1173 | 8 | $objWriter->endElement(); |
|
1174 | } |
||
1175 | |||
1176 | // Category Labels |
||
1177 | 15 | $plotSeriesCategory = $plotGroup->getPlotCategoryByIndex($plotSeriesRef); |
|
1178 | 15 | if ($plotSeriesCategory && ($plotSeriesCategory->getPointCount() > 0)) { |
|
1179 | 15 | $catIsMultiLevelSeries = $catIsMultiLevelSeries || $plotSeriesCategory->isMultiLevelSeries(); |
|
1180 | |||
1181 | 15 | if (($groupType == DataSeries::TYPE_PIECHART) || ($groupType == DataSeries::TYPE_PIECHART_3D) || ($groupType == DataSeries::TYPE_DONUTCHART)) { |
|
1182 | 3 | if ($plotGroup->getPlotStyle() !== null) { |
|
1183 | 1 | $plotStyle = $plotGroup->getPlotStyle(); |
|
1184 | 1 | if ($plotStyle) { |
|
1185 | 1 | $objWriter->startElement('c:explosion'); |
|
1186 | 1 | $objWriter->writeAttribute('val', 25); |
|
1187 | 1 | $objWriter->endElement(); |
|
1188 | } |
||
1189 | } |
||
1190 | } |
||
1191 | |||
1192 | 15 | if (($groupType === DataSeries::TYPE_BUBBLECHART) || ($groupType === DataSeries::TYPE_SCATTERCHART)) { |
|
1193 | 2 | $objWriter->startElement('c:xVal'); |
|
1194 | } else { |
||
1195 | 14 | $objWriter->startElement('c:cat'); |
|
1196 | } |
||
1197 | |||
1198 | 15 | $this->writePlotSeriesValues($plotSeriesCategory, $objWriter, $groupType, 'str'); |
|
1199 | 15 | $objWriter->endElement(); |
|
1200 | } |
||
1201 | |||
1202 | // Values |
||
1203 | 15 | if ($plotSeriesValues) { |
|
1204 | 15 | $valIsMultiLevelSeries = $valIsMultiLevelSeries || $plotSeriesValues->isMultiLevelSeries(); |
|
1205 | |||
1206 | 15 | if (($groupType === DataSeries::TYPE_BUBBLECHART) || ($groupType === DataSeries::TYPE_SCATTERCHART)) { |
|
1207 | 2 | $objWriter->startElement('c:yVal'); |
|
1208 | } else { |
||
1209 | 14 | $objWriter->startElement('c:val'); |
|
1210 | } |
||
1211 | |||
1212 | 15 | $this->writePlotSeriesValues($plotSeriesValues, $objWriter, $groupType, 'num'); |
|
1213 | 15 | $objWriter->endElement(); |
|
1214 | } |
||
1215 | |||
1216 | 15 | if ($groupType === DataSeries::TYPE_BUBBLECHART) { |
|
1217 | 1 | $this->writeBubbles($plotSeriesValues, $objWriter); |
|
1218 | } |
||
1219 | |||
1220 | 15 | $objWriter->endElement(); |
|
1221 | } |
||
1222 | |||
1223 | 15 | $this->seriesIndex += $plotSeriesIdx + 1; |
|
1224 | 15 | } |
|
1225 | |||
1226 | /** |
||
1227 | * Write Plot Series Label. |
||
1228 | * |
||
1229 | * @param DataSeriesValues $plotSeriesLabel |
||
1230 | * @param XMLWriter $objWriter XML Writer |
||
1231 | */ |
||
1232 | 15 | private function writePlotSeriesLabel($plotSeriesLabel, $objWriter): void |
|
1233 | { |
||
1234 | 15 | if ($plotSeriesLabel === null) { |
|
1235 | return; |
||
1236 | } |
||
1237 | |||
1238 | 15 | $objWriter->startElement('c:f'); |
|
1239 | 15 | $objWriter->writeRawData($plotSeriesLabel->getDataSource()); |
|
1240 | 15 | $objWriter->endElement(); |
|
1241 | |||
1242 | 15 | $objWriter->startElement('c:strCache'); |
|
1243 | 15 | $objWriter->startElement('c:ptCount'); |
|
1244 | 15 | $objWriter->writeAttribute('val', $plotSeriesLabel->getPointCount()); |
|
1245 | 15 | $objWriter->endElement(); |
|
1246 | |||
1247 | 15 | foreach ($plotSeriesLabel->getDataValues() as $plotLabelKey => $plotLabelValue) { |
|
1248 | 15 | $objWriter->startElement('c:pt'); |
|
1249 | 15 | $objWriter->writeAttribute('idx', $plotLabelKey); |
|
1250 | |||
1251 | 15 | $objWriter->startElement('c:v'); |
|
1252 | 15 | $objWriter->writeRawData($plotLabelValue); |
|
1253 | 15 | $objWriter->endElement(); |
|
1254 | 15 | $objWriter->endElement(); |
|
1255 | } |
||
1256 | 15 | $objWriter->endElement(); |
|
1257 | 15 | } |
|
1258 | |||
1259 | /** |
||
1260 | * Write Plot Series Values. |
||
1261 | * |
||
1262 | * @param DataSeriesValues $plotSeriesValues |
||
1263 | * @param XMLWriter $objWriter XML Writer |
||
1264 | * @param string $groupType Type of plot for dataseries |
||
1265 | * @param string $dataType Datatype of series values |
||
1266 | */ |
||
1267 | 15 | private function writePlotSeriesValues($plotSeriesValues, XMLWriter $objWriter, $groupType, $dataType = 'str'): void |
|
1268 | { |
||
1269 | 15 | if ($plotSeriesValues === null) { |
|
1270 | return; |
||
1271 | } |
||
1272 | |||
1273 | 15 | if ($plotSeriesValues->isMultiLevelSeries()) { |
|
1274 | 2 | $levelCount = $plotSeriesValues->multiLevelCount(); |
|
1275 | |||
1276 | 2 | $objWriter->startElement('c:multiLvlStrRef'); |
|
1277 | |||
1278 | 2 | $objWriter->startElement('c:f'); |
|
1279 | 2 | $objWriter->writeRawData($plotSeriesValues->getDataSource()); |
|
1280 | 2 | $objWriter->endElement(); |
|
1281 | |||
1282 | 2 | $objWriter->startElement('c:multiLvlStrCache'); |
|
1283 | |||
1284 | 2 | $objWriter->startElement('c:ptCount'); |
|
1285 | 2 | $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount()); |
|
1286 | 2 | $objWriter->endElement(); |
|
1287 | |||
1288 | 2 | for ($level = 0; $level < $levelCount; ++$level) { |
|
1289 | 2 | $objWriter->startElement('c:lvl'); |
|
1290 | |||
1291 | 2 | foreach ($plotSeriesValues->getDataValues() as $plotSeriesKey => $plotSeriesValue) { |
|
1292 | 2 | if (isset($plotSeriesValue[$level])) { |
|
1293 | 2 | $objWriter->startElement('c:pt'); |
|
1294 | 2 | $objWriter->writeAttribute('idx', $plotSeriesKey); |
|
1295 | |||
1296 | 2 | $objWriter->startElement('c:v'); |
|
1297 | 2 | $objWriter->writeRawData($plotSeriesValue[$level]); |
|
1298 | 2 | $objWriter->endElement(); |
|
1299 | 2 | $objWriter->endElement(); |
|
1300 | } |
||
1301 | } |
||
1302 | |||
1303 | 2 | $objWriter->endElement(); |
|
1304 | } |
||
1305 | |||
1306 | 2 | $objWriter->endElement(); |
|
1307 | |||
1308 | 2 | $objWriter->endElement(); |
|
1309 | } else { |
||
1310 | 15 | $objWriter->startElement('c:' . $dataType . 'Ref'); |
|
1311 | |||
1312 | 15 | $objWriter->startElement('c:f'); |
|
1313 | 15 | $objWriter->writeRawData($plotSeriesValues->getDataSource()); |
|
1314 | 15 | $objWriter->endElement(); |
|
1315 | |||
1316 | 15 | $objWriter->startElement('c:' . $dataType . 'Cache'); |
|
1317 | |||
1318 | 15 | if (($groupType != DataSeries::TYPE_PIECHART) && ($groupType != DataSeries::TYPE_PIECHART_3D) && ($groupType != DataSeries::TYPE_DONUTCHART)) { |
|
1319 | 13 | if (($plotSeriesValues->getFormatCode() !== null) && ($plotSeriesValues->getFormatCode() !== '')) { |
|
1320 | $objWriter->startElement('c:formatCode'); |
||
1321 | $objWriter->writeRawData($plotSeriesValues->getFormatCode()); |
||
1322 | $objWriter->endElement(); |
||
1323 | } |
||
1324 | } |
||
1325 | |||
1326 | 15 | $objWriter->startElement('c:ptCount'); |
|
1327 | 15 | $objWriter->writeAttribute('val', $plotSeriesValues->getPointCount()); |
|
1328 | 15 | $objWriter->endElement(); |
|
1329 | |||
1330 | 15 | $dataValues = $plotSeriesValues->getDataValues(); |
|
1331 | 15 | if (!empty($dataValues)) { |
|
1332 | 15 | if (is_array($dataValues)) { |
|
1333 | 15 | foreach ($dataValues as $plotSeriesKey => $plotSeriesValue) { |
|
1334 | 15 | $objWriter->startElement('c:pt'); |
|
1335 | 15 | $objWriter->writeAttribute('idx', $plotSeriesKey); |
|
1336 | |||
1337 | 15 | $objWriter->startElement('c:v'); |
|
1338 | 15 | $objWriter->writeRawData($plotSeriesValue); |
|
1339 | 15 | $objWriter->endElement(); |
|
1340 | 15 | $objWriter->endElement(); |
|
1341 | } |
||
1342 | } |
||
1343 | } |
||
1344 | |||
1345 | 15 | $objWriter->endElement(); |
|
1346 | |||
1347 | 15 | $objWriter->endElement(); |
|
1348 | } |
||
1349 | 15 | } |
|
1350 | |||
1351 | /** |
||
1352 | * Write Bubble Chart Details. |
||
1353 | * |
||
1354 | * @param DataSeriesValues $plotSeriesValues |
||
1355 | * @param XMLWriter $objWriter XML Writer |
||
1356 | */ |
||
1357 | 1 | private function writeBubbles($plotSeriesValues, $objWriter): void |
|
1394 | 1 | } |
|
1395 | |||
1396 | /** |
||
1397 | * Write Layout. |
||
1398 | * |
||
1399 | * @param XMLWriter $objWriter XML Writer |
||
1400 | * @param Layout $layout |
||
1401 | */ |
||
1402 | 15 | private function writeLayout(XMLWriter $objWriter, ?Layout $layout = null): void |
|
1403 | { |
||
1404 | 15 | $objWriter->startElement('c:layout'); |
|
1405 | |||
1406 | 15 | if ($layout !== null) { |
|
1407 | 5 | $objWriter->startElement('c:manualLayout'); |
|
1408 | |||
1409 | 5 | $layoutTarget = $layout->getLayoutTarget(); |
|
1410 | 5 | if ($layoutTarget !== null) { |
|
1411 | 1 | $objWriter->startElement('c:layoutTarget'); |
|
1412 | 1 | $objWriter->writeAttribute('val', $layoutTarget); |
|
1413 | 1 | $objWriter->endElement(); |
|
1414 | } |
||
1415 | |||
1416 | 5 | $xMode = $layout->getXMode(); |
|
1417 | 5 | if ($xMode !== null) { |
|
1418 | 1 | $objWriter->startElement('c:xMode'); |
|
1419 | 1 | $objWriter->writeAttribute('val', $xMode); |
|
1420 | 1 | $objWriter->endElement(); |
|
1421 | } |
||
1422 | |||
1423 | 5 | $yMode = $layout->getYMode(); |
|
1424 | 5 | if ($yMode !== null) { |
|
1425 | 1 | $objWriter->startElement('c:yMode'); |
|
1426 | 1 | $objWriter->writeAttribute('val', $yMode); |
|
1427 | 1 | $objWriter->endElement(); |
|
1428 | } |
||
1429 | |||
1430 | 5 | $x = $layout->getXPosition(); |
|
1431 | 5 | if ($x !== null) { |
|
1432 | 1 | $objWriter->startElement('c:x'); |
|
1433 | 1 | $objWriter->writeAttribute('val', $x); |
|
1434 | 1 | $objWriter->endElement(); |
|
1435 | } |
||
1436 | |||
1437 | 5 | $y = $layout->getYPosition(); |
|
1438 | 5 | if ($y !== null) { |
|
1439 | 1 | $objWriter->startElement('c:y'); |
|
1440 | 1 | $objWriter->writeAttribute('val', $y); |
|
1441 | 1 | $objWriter->endElement(); |
|
1442 | } |
||
1443 | |||
1444 | 5 | $w = $layout->getWidth(); |
|
1445 | 5 | if ($w !== null) { |
|
1446 | 1 | $objWriter->startElement('c:w'); |
|
1447 | 1 | $objWriter->writeAttribute('val', $w); |
|
1448 | 1 | $objWriter->endElement(); |
|
1449 | } |
||
1450 | |||
1451 | 5 | $h = $layout->getHeight(); |
|
1452 | 5 | if ($h !== null) { |
|
1453 | 1 | $objWriter->startElement('c:h'); |
|
1454 | 1 | $objWriter->writeAttribute('val', $h); |
|
1455 | 1 | $objWriter->endElement(); |
|
1456 | } |
||
1457 | |||
1458 | 5 | $objWriter->endElement(); |
|
1459 | } |
||
1460 | |||
1461 | 15 | $objWriter->endElement(); |
|
1462 | 15 | } |
|
1463 | |||
1464 | /** |
||
1465 | * Write Alternate Content block. |
||
1466 | * |
||
1467 | * @param XMLWriter $objWriter XML Writer |
||
1468 | */ |
||
1469 | 15 | private function writeAlternateContent($objWriter): void |
|
1470 | { |
||
1471 | 15 | $objWriter->startElement('mc:AlternateContent'); |
|
1472 | 15 | $objWriter->writeAttribute('xmlns:mc', 'http://schemas.openxmlformats.org/markup-compatibility/2006'); |
|
1473 | |||
1474 | 15 | $objWriter->startElement('mc:Choice'); |
|
1475 | 15 | $objWriter->writeAttribute('xmlns:c14', 'http://schemas.microsoft.com/office/drawing/2007/8/2/chart'); |
|
1476 | 15 | $objWriter->writeAttribute('Requires', 'c14'); |
|
1477 | |||
1478 | 15 | $objWriter->startElement('c14:style'); |
|
1479 | 15 | $objWriter->writeAttribute('val', '102'); |
|
1480 | 15 | $objWriter->endElement(); |
|
1481 | 15 | $objWriter->endElement(); |
|
1482 | |||
1483 | 15 | $objWriter->startElement('mc:Fallback'); |
|
1484 | 15 | $objWriter->startElement('c:style'); |
|
1485 | 15 | $objWriter->writeAttribute('val', '2'); |
|
1486 | 15 | $objWriter->endElement(); |
|
1487 | 15 | $objWriter->endElement(); |
|
1488 | |||
1489 | 15 | $objWriter->endElement(); |
|
1490 | 15 | } |
|
1491 | |||
1492 | /** |
||
1493 | * Write Printer Settings. |
||
1494 | * |
||
1495 | * @param XMLWriter $objWriter XML Writer |
||
1496 | */ |
||
1497 | 15 | private function writePrintSettings($objWriter): void |
|
1518 | 15 | } |
|
1519 | } |
||
1520 |