source: sourcecode/application/libraries/PHPExcel/Writer/Excel2007/Drawing.php @ 1

Last change on this file since 1 was 1, checked in by dungnv, 11 years ago
File size: 19.4 KB
Line 
1<?php
2/**
3 * PHPExcel
4 *
5 * Copyright (c) 2006 - 2014 PHPExcel
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
20 *
21 * @category   PHPExcel
22 * @package    PHPExcel_Writer_Excel2007
23 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
24 * @license    http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt    LGPL
25 * @version    1.8.0, 2014-03-02
26 */
27
28
29/**
30 * PHPExcel_Writer_Excel2007_Drawing
31 *
32 * @category   PHPExcel
33 * @package    PHPExcel_Writer_Excel2007
34 * @copyright  Copyright (c) 2006 - 2014 PHPExcel (http://www.codeplex.com/PHPExcel)
35 */
36class PHPExcel_Writer_Excel2007_Drawing extends PHPExcel_Writer_Excel2007_WriterPart
37{
38        /**
39         * Write drawings to XML format
40         *
41         * @param       PHPExcel_Worksheet      $pWorksheet
42         * @param       int                                     &$chartRef              Chart ID
43         * @param       boolean                         $includeCharts  Flag indicating if we should include drawing details for charts
44         * @return      string                          XML Output
45         * @throws      PHPExcel_Writer_Exception
46         */
47        public function writeDrawings(PHPExcel_Worksheet $pWorksheet = null, &$chartRef, $includeCharts = FALSE)
48        {
49                // Create XML writer
50                $objWriter = null;
51                if ($this->getParentWriter()->getUseDiskCaching()) {
52                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
53                } else {
54                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
55                }
56
57                // XML header
58                $objWriter->startDocument('1.0','UTF-8','yes');
59
60                // xdr:wsDr
61                $objWriter->startElement('xdr:wsDr');
62                $objWriter->writeAttribute('xmlns:xdr', 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing');
63                $objWriter->writeAttribute('xmlns:a', 'http://schemas.openxmlformats.org/drawingml/2006/main');
64
65                        // Loop through images and write drawings
66                        $i = 1;
67                        $iterator = $pWorksheet->getDrawingCollection()->getIterator();
68                        while ($iterator->valid()) {
69                                $this->_writeDrawing($objWriter, $iterator->current(), $i);
70
71                                $iterator->next();
72                                ++$i;
73                        }
74
75                        if ($includeCharts) {
76                                $chartCount = $pWorksheet->getChartCount();
77                                // Loop through charts and write the chart position
78                                if ($chartCount > 0) {
79                                        for ($c = 0; $c < $chartCount; ++$c) {
80                                                $this->_writeChart($objWriter, $pWorksheet->getChartByIndex($c), $c+$i);
81                                        }
82                                }
83                        }
84
85
86                $objWriter->endElement();
87
88                // Return
89                return $objWriter->getData();
90        }
91
92        /**
93         * Write drawings to XML format
94         *
95         * @param       PHPExcel_Shared_XMLWriter       $objWriter              XML Writer
96         * @param       PHPExcel_Chart                          $pChart
97         * @param       int                                                     $pRelationId
98         * @throws      PHPExcel_Writer_Exception
99         */
100        public function _writeChart(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Chart $pChart = null, $pRelationId = -1)
101        {
102                $tl = $pChart->getTopLeftPosition();
103                $tl['colRow'] = PHPExcel_Cell::coordinateFromString($tl['cell']);
104                $br = $pChart->getBottomRightPosition();
105                $br['colRow'] = PHPExcel_Cell::coordinateFromString($br['cell']);
106
107                $objWriter->startElement('xdr:twoCellAnchor');
108
109                        $objWriter->startElement('xdr:from');
110                                $objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($tl['colRow'][0]) - 1);
111                                $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['xOffset']));
112                                $objWriter->writeElement('xdr:row', $tl['colRow'][1] - 1);
113                                $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($tl['yOffset']));
114                        $objWriter->endElement();
115                        $objWriter->startElement('xdr:to');
116                                $objWriter->writeElement('xdr:col', PHPExcel_Cell::columnIndexFromString($br['colRow'][0]) - 1);
117                                $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['xOffset']));
118                                $objWriter->writeElement('xdr:row', $br['colRow'][1] - 1);
119                                $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($br['yOffset']));
120                        $objWriter->endElement();
121
122                        $objWriter->startElement('xdr:graphicFrame');
123                                $objWriter->writeAttribute('macro', '');
124                                $objWriter->startElement('xdr:nvGraphicFramePr');
125                                        $objWriter->startElement('xdr:cNvPr');
126                                                $objWriter->writeAttribute('name', 'Chart '.$pRelationId);
127                                                $objWriter->writeAttribute('id', 1025 * $pRelationId);
128                                        $objWriter->endElement();
129                                        $objWriter->startElement('xdr:cNvGraphicFramePr');
130                                                $objWriter->startElement('a:graphicFrameLocks');
131                                                $objWriter->endElement();
132                                        $objWriter->endElement();
133                                $objWriter->endElement();
134
135                                $objWriter->startElement('xdr:xfrm');
136                                        $objWriter->startElement('a:off');
137                                                $objWriter->writeAttribute('x', '0');
138                                                $objWriter->writeAttribute('y', '0');
139                                        $objWriter->endElement();
140                                        $objWriter->startElement('a:ext');
141                                                $objWriter->writeAttribute('cx', '0');
142                                                $objWriter->writeAttribute('cy', '0');
143                                        $objWriter->endElement();
144                                $objWriter->endElement();
145
146                                $objWriter->startElement('a:graphic');
147                                        $objWriter->startElement('a:graphicData');
148                                                $objWriter->writeAttribute('uri', 'http://schemas.openxmlformats.org/drawingml/2006/chart');
149                                                $objWriter->startElement('c:chart');
150                                                        $objWriter->writeAttribute('xmlns:c', 'http://schemas.openxmlformats.org/drawingml/2006/chart');
151                                                        $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
152                                                        $objWriter->writeAttribute('r:id', 'rId'.$pRelationId);
153                                                $objWriter->endElement();
154                                        $objWriter->endElement();
155                                $objWriter->endElement();
156                        $objWriter->endElement();
157
158                        $objWriter->startElement('xdr:clientData');
159                        $objWriter->endElement();
160
161                $objWriter->endElement();
162        }
163
164        /**
165         * Write drawings to XML format
166         *
167         * @param       PHPExcel_Shared_XMLWriter                       $objWriter              XML Writer
168         * @param       PHPExcel_Worksheet_BaseDrawing          $pDrawing
169         * @param       int                                                                     $pRelationId
170         * @throws      PHPExcel_Writer_Exception
171         */
172        public function _writeDrawing(PHPExcel_Shared_XMLWriter $objWriter = null, PHPExcel_Worksheet_BaseDrawing $pDrawing = null, $pRelationId = -1)
173        {
174                if ($pRelationId >= 0) {
175                        // xdr:oneCellAnchor
176                        $objWriter->startElement('xdr:oneCellAnchor');
177                                // Image location
178                                $aCoordinates           = PHPExcel_Cell::coordinateFromString($pDrawing->getCoordinates());
179                                $aCoordinates[0]        = PHPExcel_Cell::columnIndexFromString($aCoordinates[0]);
180
181                                // xdr:from
182                                $objWriter->startElement('xdr:from');
183                                        $objWriter->writeElement('xdr:col', $aCoordinates[0] - 1);
184                                        $objWriter->writeElement('xdr:colOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetX()));
185                                        $objWriter->writeElement('xdr:row', $aCoordinates[1] - 1);
186                                        $objWriter->writeElement('xdr:rowOff', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getOffsetY()));
187                                $objWriter->endElement();
188
189                                // xdr:ext
190                                $objWriter->startElement('xdr:ext');
191                                        $objWriter->writeAttribute('cx', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getWidth()));
192                                        $objWriter->writeAttribute('cy', PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getHeight()));
193                                $objWriter->endElement();
194
195                                // xdr:pic
196                                $objWriter->startElement('xdr:pic');
197
198                                        // xdr:nvPicPr
199                                        $objWriter->startElement('xdr:nvPicPr');
200
201                                                // xdr:cNvPr
202                                                $objWriter->startElement('xdr:cNvPr');
203                                                $objWriter->writeAttribute('id', $pRelationId);
204                                                $objWriter->writeAttribute('name', $pDrawing->getName());
205                                                $objWriter->writeAttribute('descr', $pDrawing->getDescription());
206                                                $objWriter->endElement();
207
208                                                // xdr:cNvPicPr
209                                                $objWriter->startElement('xdr:cNvPicPr');
210
211                                                        // a:picLocks
212                                                        $objWriter->startElement('a:picLocks');
213                                                        $objWriter->writeAttribute('noChangeAspect', '1');
214                                                        $objWriter->endElement();
215
216                                                $objWriter->endElement();
217
218                                        $objWriter->endElement();
219
220                                        // xdr:blipFill
221                                        $objWriter->startElement('xdr:blipFill');
222
223                                                // a:blip
224                                                $objWriter->startElement('a:blip');
225                                                $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
226                                                $objWriter->writeAttribute('r:embed', 'rId' . $pRelationId);
227                                                $objWriter->endElement();
228
229                                                // a:stretch
230                                                $objWriter->startElement('a:stretch');
231                                                        $objWriter->writeElement('a:fillRect', null);
232                                                $objWriter->endElement();
233
234                                        $objWriter->endElement();
235
236                                        // xdr:spPr
237                                        $objWriter->startElement('xdr:spPr');
238
239                                                // a:xfrm
240                                                $objWriter->startElement('a:xfrm');
241                                                $objWriter->writeAttribute('rot', PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getRotation()));
242                                                $objWriter->endElement();
243
244                                                // a:prstGeom
245                                                $objWriter->startElement('a:prstGeom');
246                                                $objWriter->writeAttribute('prst', 'rect');
247
248                                                        // a:avLst
249                                                        $objWriter->writeElement('a:avLst', null);
250
251                                                $objWriter->endElement();
252
253//                                              // a:solidFill
254//                                              $objWriter->startElement('a:solidFill');
255
256//                                                      // a:srgbClr
257//                                                      $objWriter->startElement('a:srgbClr');
258//                                                      $objWriter->writeAttribute('val', 'FFFFFF');
259
260///* SHADE
261//                                                              // a:shade
262//                                                              $objWriter->startElement('a:shade');
263//                                                              $objWriter->writeAttribute('val', '85000');
264//                                                              $objWriter->endElement();
265//*/
266
267//                                                      $objWriter->endElement();
268
269//                                              $objWriter->endElement();
270/*
271                                                // a:ln
272                                                $objWriter->startElement('a:ln');
273                                                $objWriter->writeAttribute('w', '88900');
274                                                $objWriter->writeAttribute('cap', 'sq');
275
276                                                        // a:solidFill
277                                                        $objWriter->startElement('a:solidFill');
278
279                                                                // a:srgbClr
280                                                                $objWriter->startElement('a:srgbClr');
281                                                                $objWriter->writeAttribute('val', 'FFFFFF');
282                                                                $objWriter->endElement();
283
284                                                        $objWriter->endElement();
285
286                                                        // a:miter
287                                                        $objWriter->startElement('a:miter');
288                                                        $objWriter->writeAttribute('lim', '800000');
289                                                        $objWriter->endElement();
290
291                                                $objWriter->endElement();
292*/
293
294                                                if ($pDrawing->getShadow()->getVisible()) {
295                                                        // a:effectLst
296                                                        $objWriter->startElement('a:effectLst');
297
298                                                                // a:outerShdw
299                                                                $objWriter->startElement('a:outerShdw');
300                                                                $objWriter->writeAttribute('blurRad',           PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getBlurRadius()));
301                                                                $objWriter->writeAttribute('dist',                      PHPExcel_Shared_Drawing::pixelsToEMU($pDrawing->getShadow()->getDistance()));
302                                                                $objWriter->writeAttribute('dir',                       PHPExcel_Shared_Drawing::degreesToAngle($pDrawing->getShadow()->getDirection()));
303                                                                $objWriter->writeAttribute('algn',                      $pDrawing->getShadow()->getAlignment());
304                                                                $objWriter->writeAttribute('rotWithShape',      '0');
305
306                                                                        // a:srgbClr
307                                                                        $objWriter->startElement('a:srgbClr');
308                                                                        $objWriter->writeAttribute('val',               $pDrawing->getShadow()->getColor()->getRGB());
309
310                                                                                // a:alpha
311                                                                                $objWriter->startElement('a:alpha');
312                                                                                $objWriter->writeAttribute('val',       $pDrawing->getShadow()->getAlpha() * 1000);
313                                                                                $objWriter->endElement();
314
315                                                                        $objWriter->endElement();
316
317                                                                $objWriter->endElement();
318
319                                                        $objWriter->endElement();
320                                                }
321/*
322
323                                                // a:scene3d
324                                                $objWriter->startElement('a:scene3d');
325
326                                                        // a:camera
327                                                        $objWriter->startElement('a:camera');
328                                                        $objWriter->writeAttribute('prst', 'orthographicFront');
329                                                        $objWriter->endElement();
330
331                                                        // a:lightRig
332                                                        $objWriter->startElement('a:lightRig');
333                                                        $objWriter->writeAttribute('rig', 'twoPt');
334                                                        $objWriter->writeAttribute('dir', 't');
335
336                                                                // a:rot
337                                                                $objWriter->startElement('a:rot');
338                                                                $objWriter->writeAttribute('lat', '0');
339                                                                $objWriter->writeAttribute('lon', '0');
340                                                                $objWriter->writeAttribute('rev', '0');
341                                                                $objWriter->endElement();
342
343                                                        $objWriter->endElement();
344
345                                                $objWriter->endElement();
346*/
347/*
348                                                // a:sp3d
349                                                $objWriter->startElement('a:sp3d');
350
351                                                        // a:bevelT
352                                                        $objWriter->startElement('a:bevelT');
353                                                        $objWriter->writeAttribute('w', '25400');
354                                                        $objWriter->writeAttribute('h', '19050');
355                                                        $objWriter->endElement();
356
357                                                        // a:contourClr
358                                                        $objWriter->startElement('a:contourClr');
359
360                                                                // a:srgbClr
361                                                                $objWriter->startElement('a:srgbClr');
362                                                                $objWriter->writeAttribute('val', 'FFFFFF');
363                                                                $objWriter->endElement();
364
365                                                        $objWriter->endElement();
366
367                                                $objWriter->endElement();
368*/
369                                        $objWriter->endElement();
370
371                                $objWriter->endElement();
372
373                                // xdr:clientData
374                                $objWriter->writeElement('xdr:clientData', null);
375
376                        $objWriter->endElement();
377                } else {
378                        throw new PHPExcel_Writer_Exception("Invalid parameters passed.");
379                }
380        }
381
382        /**
383         * Write VML header/footer images to XML format
384         *
385         * @param       PHPExcel_Worksheet                              $pWorksheet
386         * @return      string                                                          XML Output
387         * @throws      PHPExcel_Writer_Exception
388         */
389        public function writeVMLHeaderFooterImages(PHPExcel_Worksheet $pWorksheet = null)
390        {
391                // Create XML writer
392                $objWriter = null;
393                if ($this->getParentWriter()->getUseDiskCaching()) {
394                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_DISK, $this->getParentWriter()->getDiskCachingDirectory());
395                } else {
396                        $objWriter = new PHPExcel_Shared_XMLWriter(PHPExcel_Shared_XMLWriter::STORAGE_MEMORY);
397                }
398
399                // XML header
400                $objWriter->startDocument('1.0','UTF-8','yes');
401
402                // Header/footer images
403                $images = $pWorksheet->getHeaderFooter()->getImages();
404
405                // xml
406                $objWriter->startElement('xml');
407                $objWriter->writeAttribute('xmlns:v', 'urn:schemas-microsoft-com:vml');
408                $objWriter->writeAttribute('xmlns:o', 'urn:schemas-microsoft-com:office:office');
409                $objWriter->writeAttribute('xmlns:x', 'urn:schemas-microsoft-com:office:excel');
410
411                        // o:shapelayout
412                        $objWriter->startElement('o:shapelayout');
413                        $objWriter->writeAttribute('v:ext',             'edit');
414
415                                // o:idmap
416                                $objWriter->startElement('o:idmap');
417                                $objWriter->writeAttribute('v:ext',     'edit');
418                                $objWriter->writeAttribute('data',              '1');
419                                $objWriter->endElement();
420
421                        $objWriter->endElement();
422
423                        // v:shapetype
424                        $objWriter->startElement('v:shapetype');
425                        $objWriter->writeAttribute('id',                                        '_x0000_t75');
426                        $objWriter->writeAttribute('coordsize',                         '21600,21600');
427                        $objWriter->writeAttribute('o:spt',                             '75');
428                        $objWriter->writeAttribute('o:preferrelative',          't');
429                        $objWriter->writeAttribute('path',                                      'm@4@5l@4@11@9@11@9@5xe');
430                        $objWriter->writeAttribute('filled',                            'f');
431                        $objWriter->writeAttribute('stroked',                           'f');
432
433                                // v:stroke
434                                $objWriter->startElement('v:stroke');
435                                $objWriter->writeAttribute('joinstyle',                 'miter');
436                                $objWriter->endElement();
437
438                                // v:formulas
439                                $objWriter->startElement('v:formulas');
440
441                                        // v:f
442                                        $objWriter->startElement('v:f');
443                                        $objWriter->writeAttribute('eqn',               'if lineDrawn pixelLineWidth 0');
444                                        $objWriter->endElement();
445
446                                        // v:f
447                                        $objWriter->startElement('v:f');
448                                        $objWriter->writeAttribute('eqn',               'sum @0 1 0');
449                                        $objWriter->endElement();
450
451                                        // v:f
452                                        $objWriter->startElement('v:f');
453                                        $objWriter->writeAttribute('eqn',               'sum 0 0 @1');
454                                        $objWriter->endElement();
455
456                                        // v:f
457                                        $objWriter->startElement('v:f');
458                                        $objWriter->writeAttribute('eqn',               'prod @2 1 2');
459                                        $objWriter->endElement();
460
461                                        // v:f
462                                        $objWriter->startElement('v:f');
463                                        $objWriter->writeAttribute('eqn',               'prod @3 21600 pixelWidth');
464                                        $objWriter->endElement();
465
466                                        // v:f
467                                        $objWriter->startElement('v:f');
468                                        $objWriter->writeAttribute('eqn',               'prod @3 21600 pixelHeight');
469                                        $objWriter->endElement();
470
471                                        // v:f
472                                        $objWriter->startElement('v:f');
473                                        $objWriter->writeAttribute('eqn',               'sum @0 0 1');
474                                        $objWriter->endElement();
475
476                                        // v:f
477                                        $objWriter->startElement('v:f');
478                                        $objWriter->writeAttribute('eqn',               'prod @6 1 2');
479                                        $objWriter->endElement();
480
481                                        // v:f
482                                        $objWriter->startElement('v:f');
483                                        $objWriter->writeAttribute('eqn',               'prod @7 21600 pixelWidth');
484                                        $objWriter->endElement();
485
486                                        // v:f
487                                        $objWriter->startElement('v:f');
488                                        $objWriter->writeAttribute('eqn',               'sum @8 21600 0');
489                                        $objWriter->endElement();
490
491                                        // v:f
492                                        $objWriter->startElement('v:f');
493                                        $objWriter->writeAttribute('eqn',               'prod @7 21600 pixelHeight');
494                                        $objWriter->endElement();
495
496                                        // v:f
497                                        $objWriter->startElement('v:f');
498                                        $objWriter->writeAttribute('eqn',               'sum @10 21600 0');
499                                        $objWriter->endElement();
500
501                                $objWriter->endElement();
502
503                                // v:path
504                                $objWriter->startElement('v:path');
505                                $objWriter->writeAttribute('o:extrusionok',     'f');
506                                $objWriter->writeAttribute('gradientshapeok',   't');
507                                $objWriter->writeAttribute('o:connecttype',     'rect');
508                                $objWriter->endElement();
509
510                                // o:lock
511                                $objWriter->startElement('o:lock');
512                                $objWriter->writeAttribute('v:ext',                     'edit');
513                                $objWriter->writeAttribute('aspectratio',               't');
514                                $objWriter->endElement();
515
516                        $objWriter->endElement();
517
518                        // Loop through images
519                        foreach ($images as $key => $value) {
520                                $this->_writeVMLHeaderFooterImage($objWriter, $key, $value);
521                        }
522
523                $objWriter->endElement();
524
525                // Return
526                return $objWriter->getData();
527        }
528
529        /**
530         * Write VML comment to XML format
531         *
532         * @param       PHPExcel_Shared_XMLWriter               $objWriter                      XML Writer
533         * @param       string                                                  $pReference                     Reference
534         * @param       PHPExcel_Worksheet_HeaderFooterDrawing  $pImage         Image
535         * @throws      PHPExcel_Writer_Exception
536         */
537        public function _writeVMLHeaderFooterImage(PHPExcel_Shared_XMLWriter $objWriter = null, $pReference = '', PHPExcel_Worksheet_HeaderFooterDrawing $pImage = null)
538        {
539                // Calculate object id
540                preg_match('{(\d+)}', md5($pReference), $m);
541                $id = 1500 + (substr($m[1], 0, 2) * 1);
542
543                // Calculate offset
544                $width = $pImage->getWidth();
545                $height = $pImage->getHeight();
546                $marginLeft = $pImage->getOffsetX();
547                $marginTop = $pImage->getOffsetY();
548
549                // v:shape
550                $objWriter->startElement('v:shape');
551                $objWriter->writeAttribute('id',                        $pReference);
552                $objWriter->writeAttribute('o:spid',            '_x0000_s' . $id);
553                $objWriter->writeAttribute('type',                      '#_x0000_t75');
554                $objWriter->writeAttribute('style',             "position:absolute;margin-left:{$marginLeft}px;margin-top:{$marginTop}px;width:{$width}px;height:{$height}px;z-index:1");
555
556                        // v:imagedata
557                        $objWriter->startElement('v:imagedata');
558                        $objWriter->writeAttribute('o:relid',           'rId' . $pReference);
559                        $objWriter->writeAttribute('o:title',           $pImage->getName());
560                        $objWriter->endElement();
561
562                        // o:lock
563                        $objWriter->startElement('o:lock');
564                        $objWriter->writeAttribute('v:ext',             'edit');
565                        $objWriter->writeAttribute('rotation',          't');
566                        $objWriter->endElement();
567
568                $objWriter->endElement();
569        }
570
571
572        /**
573         * Get an array of all drawings
574         *
575         * @param       PHPExcel                                                        $pPHPExcel
576         * @return      PHPExcel_Worksheet_Drawing[]            All drawings in PHPExcel
577         * @throws      PHPExcel_Writer_Exception
578         */
579        public function allDrawings(PHPExcel $pPHPExcel = null)
580        {
581                // Get an array of all drawings
582                $aDrawings      = array();
583
584                // Loop through PHPExcel
585                $sheetCount = $pPHPExcel->getSheetCount();
586                for ($i = 0; $i < $sheetCount; ++$i) {
587                        // Loop through images and add to array
588                        $iterator = $pPHPExcel->getSheet($i)->getDrawingCollection()->getIterator();
589                        while ($iterator->valid()) {
590                                $aDrawings[] = $iterator->current();
591
592                                $iterator->next();
593                        }
594                }
595
596                return $aDrawings;
597        }
598}
Note: See TracBrowser for help on using the repository browser.