Ejemplo n.º 1
0
 /**
  * Write drawings to XML format
  *
  * @param     \PHPExcel\Shared\XMLWriter            $objWriter         XML Writer
  * @param     \PHPExcel\Worksheet\BaseDrawing        $pDrawing
  * @param     int                                    $pRelationId
  * @throws     \PHPExcel\Writer\Exception
  */
 public function writeDrawing(\PHPExcel\Shared\XMLWriter $objWriter = null, \PHPExcel\Worksheet\BaseDrawing $pDrawing = null, $pRelationId = -1)
 {
     if ($pRelationId >= 0) {
         // xdr:oneCellAnchor
         $objWriter->startElement('xdr:oneCellAnchor');
         // Image location
         $aCoordinates = \PHPExcel\Cell::coordinateFromString($pDrawing->getCoordinates());
         $aCoordinates[0] = \PHPExcel\Cell::columnIndexFromString($aCoordinates[0]);
         // xdr:from
         $objWriter->startElement('xdr:from');
         $objWriter->writeElement('xdr:col', $aCoordinates[0] - 1);
         $objWriter->writeElement('xdr:colOff', \PHPExcel\Shared\Drawing::pixelsToEMU($pDrawing->getOffsetX()));
         $objWriter->writeElement('xdr:row', $aCoordinates[1] - 1);
         $objWriter->writeElement('xdr:rowOff', \PHPExcel\Shared\Drawing::pixelsToEMU($pDrawing->getOffsetY()));
         $objWriter->endElement();
         // xdr:ext
         $objWriter->startElement('xdr:ext');
         $objWriter->writeAttribute('cx', \PHPExcel\Shared\Drawing::pixelsToEMU($pDrawing->getWidth()));
         $objWriter->writeAttribute('cy', \PHPExcel\Shared\Drawing::pixelsToEMU($pDrawing->getHeight()));
         $objWriter->endElement();
         // xdr:pic
         $objWriter->startElement('xdr:pic');
         // xdr:nvPicPr
         $objWriter->startElement('xdr:nvPicPr');
         // xdr:cNvPr
         $objWriter->startElement('xdr:cNvPr');
         $objWriter->writeAttribute('id', $pRelationId);
         $objWriter->writeAttribute('name', $pDrawing->getName());
         $objWriter->writeAttribute('descr', $pDrawing->getDescription());
         $objWriter->endElement();
         // xdr:cNvPicPr
         $objWriter->startElement('xdr:cNvPicPr');
         // a:picLocks
         $objWriter->startElement('a:picLocks');
         $objWriter->writeAttribute('noChangeAspect', '1');
         $objWriter->endElement();
         $objWriter->endElement();
         $objWriter->endElement();
         // xdr:blipFill
         $objWriter->startElement('xdr:blipFill');
         // a:blip
         $objWriter->startElement('a:blip');
         $objWriter->writeAttribute('xmlns:r', 'http://schemas.openxmlformats.org/officeDocument/2006/relationships');
         $objWriter->writeAttribute('r:embed', 'rId' . $pRelationId);
         $objWriter->endElement();
         // a:stretch
         $objWriter->startElement('a:stretch');
         $objWriter->writeElement('a:fillRect', null);
         $objWriter->endElement();
         $objWriter->endElement();
         // xdr:spPr
         $objWriter->startElement('xdr:spPr');
         // a:xfrm
         $objWriter->startElement('a:xfrm');
         $objWriter->writeAttribute('rot', \PHPExcel\Shared\Drawing::degreesToAngle($pDrawing->getRotation()));
         $objWriter->endElement();
         // a:prstGeom
         $objWriter->startElement('a:prstGeom');
         $objWriter->writeAttribute('prst', 'rect');
         // a:avLst
         $objWriter->writeElement('a:avLst', null);
         $objWriter->endElement();
         //                        // a:solidFill
         //                        $objWriter->startElement('a:solidFill');
         //                            // a:srgbClr
         //                            $objWriter->startElement('a:srgbClr');
         //                            $objWriter->writeAttribute('val', 'FFFFFF');
         ///* SHADE
         //                                // a:shade
         //                                $objWriter->startElement('a:shade');
         //                                $objWriter->writeAttribute('val', '85000');
         //                                $objWriter->endElement();
         //*/
         //                            $objWriter->endElement();
         //                        $objWriter->endElement();
         /*
                     // a:ln
                     $objWriter->startElement('a:ln');
                     $objWriter->writeAttribute('w', '88900');
                     $objWriter->writeAttribute('cap', 'sq');
         
                         // a:solidFill
                         $objWriter->startElement('a:solidFill');
         
                             // a:srgbClr
                             $objWriter->startElement('a:srgbClr');
                             $objWriter->writeAttribute('val', 'FFFFFF');
                             $objWriter->endElement();
         
                         $objWriter->endElement();
         
                         // a:miter
                         $objWriter->startElement('a:miter');
                         $objWriter->writeAttribute('lim', '800000');
                         $objWriter->endElement();
         
                     $objWriter->endElement();
         */
         if ($pDrawing->getShadow()->getVisible()) {
             // a:effectLst
             $objWriter->startElement('a:effectLst');
             // a:outerShdw
             $objWriter->startElement('a:outerShdw');
             $objWriter->writeAttribute('blurRad', \PHPExcel\Shared\Drawing::pixelsToEMU($pDrawing->getShadow()->getBlurRadius()));
             $objWriter->writeAttribute('dist', \PHPExcel\Shared\Drawing::pixelsToEMU($pDrawing->getShadow()->getDistance()));
             $objWriter->writeAttribute('dir', \PHPExcel\Shared\Drawing::degreesToAngle($pDrawing->getShadow()->getDirection()));
             $objWriter->writeAttribute('algn', $pDrawing->getShadow()->getAlignment());
             $objWriter->writeAttribute('rotWithShape', '0');
             // a:srgbClr
             $objWriter->startElement('a:srgbClr');
             $objWriter->writeAttribute('val', $pDrawing->getShadow()->getColor()->getRGB());
             // a:alpha
             $objWriter->startElement('a:alpha');
             $objWriter->writeAttribute('val', $pDrawing->getShadow()->getAlpha() * 1000);
             $objWriter->endElement();
             $objWriter->endElement();
             $objWriter->endElement();
             $objWriter->endElement();
         }
         /*
         
                         // a:scene3d
                         $objWriter->startElement('a:scene3d');
         
                             // a:camera
                             $objWriter->startElement('a:camera');
                             $objWriter->writeAttribute('prst', 'orthographicFront');
                             $objWriter->endElement();
         
                             // a:lightRig
                             $objWriter->startElement('a:lightRig');
                             $objWriter->writeAttribute('rig', 'twoPt');
                             $objWriter->writeAttribute('dir', 't');
         
                                 // a:rot
                                 $objWriter->startElement('a:rot');
                                 $objWriter->writeAttribute('lat', '0');
                                 $objWriter->writeAttribute('lon', '0');
                                 $objWriter->writeAttribute('rev', '0');
                                 $objWriter->endElement();
         
                             $objWriter->endElement();
         
                         $objWriter->endElement();
         */
         /*
                         // a:sp3d
                         $objWriter->startElement('a:sp3d');
         
                             // a:bevelT
                             $objWriter->startElement('a:bevelT');
                             $objWriter->writeAttribute('w', '25400');
                             $objWriter->writeAttribute('h', '19050');
                             $objWriter->endElement();
         
                             // a:contourClr
                             $objWriter->startElement('a:contourClr');
         
                                 // a:srgbClr
                                 $objWriter->startElement('a:srgbClr');
                                 $objWriter->writeAttribute('val', 'FFFFFF');
                                 $objWriter->endElement();
         
                             $objWriter->endElement();
         
                         $objWriter->endElement();
         */
         $objWriter->endElement();
         $objWriter->endElement();
         // xdr:clientData
         $objWriter->writeElement('xdr:clientData', null);
         $objWriter->endElement();
     } else {
         throw new \PHPExcel\Writer\Exception("Invalid parameters passed.");
     }
 }