@@ -193,82 +193,84 @@ protected function writeShapeText(XMLWriter $objWriter, RichText $shape, $shapeI
193
193
$ objWriter ->endElement ();
194
194
// p:sp\p:spPr
195
195
$ objWriter ->startElement ('p:spPr ' );
196
- // p:sp\p:spPr\a:xfrm
197
- $ objWriter ->startElement ('a:xfrm ' );
198
- $ objWriter ->writeAttributeIf ($ shape ->getRotation () != 0 , 'rot ' , CommonDrawing::degreesToAngle ($ shape ->getRotation ()));
199
- // p:sp\p:spPr\a:xfrm\a:off
200
- $ objWriter ->startElement ('a:off ' );
201
- $ objWriter ->writeAttribute ('x ' , CommonDrawing::pixelsToEmu ($ shape ->getOffsetX ()));
202
- $ objWriter ->writeAttribute ('y ' , CommonDrawing::pixelsToEmu ($ shape ->getOffsetY ()));
203
- $ objWriter ->endElement ();
204
- // p:sp\p:spPr\a:xfrm\a:ext
205
- $ objWriter ->startElement ('a:ext ' );
206
- $ objWriter ->writeAttribute ('cx ' , CommonDrawing::pixelsToEmu ($ shape ->getWidth ()));
207
- $ objWriter ->writeAttribute ('cy ' , CommonDrawing::pixelsToEmu ($ shape ->getHeight ()));
208
- $ objWriter ->endElement ();
209
- // > p:sp\p:spPr\a:xfrm
210
- $ objWriter ->endElement ();
211
- // p:sp\p:spPr\a:prstGeom
212
- $ objWriter ->startElement ('a:prstGeom ' );
213
- $ objWriter ->writeAttribute ('prst ' , 'rect ' );
214
196
215
- // p:sp\p:spPr\a:prstGeom\a:avLst
216
- $ objWriter ->writeElement ('a:avLst ' );
197
+ if (!$ shape ->isPlaceholder ()) {
198
+ // p:sp\p:spPr\a:xfrm
199
+ $ objWriter ->startElement ('a:xfrm ' );
200
+ $ objWriter ->writeAttributeIf ($ shape ->getRotation () != 0 , 'rot ' , CommonDrawing::degreesToAngle ($ shape ->getRotation ()));
201
+ // p:sp\p:spPr\a:xfrm\a:off
202
+ $ objWriter ->startElement ('a:off ' );
203
+ $ objWriter ->writeAttribute ('x ' , CommonDrawing::pixelsToEmu ($ shape ->getOffsetX ()));
204
+ $ objWriter ->writeAttribute ('y ' , CommonDrawing::pixelsToEmu ($ shape ->getOffsetY ()));
205
+ $ objWriter ->endElement ();
206
+ // p:sp\p:spPr\a:xfrm\a:ext
207
+ $ objWriter ->startElement ('a:ext ' );
208
+ $ objWriter ->writeAttribute ('cx ' , CommonDrawing::pixelsToEmu ($ shape ->getWidth ()));
209
+ $ objWriter ->writeAttribute ('cy ' , CommonDrawing::pixelsToEmu ($ shape ->getHeight ()));
210
+ $ objWriter ->endElement ();
211
+ // > p:sp\p:spPr\a:xfrm
212
+ $ objWriter ->endElement ();
213
+ // p:sp\p:spPr\a:prstGeom
214
+ $ objWriter ->startElement ('a:prstGeom ' );
215
+ $ objWriter ->writeAttribute ('prst ' , 'rect ' );
217
216
218
- $ objWriter ->endElement ();
219
- $ this ->writeFill ($ objWriter , $ shape ->getFill ());
220
- if ($ shape ->getBorder ()->getLineStyle () != Border::LINE_NONE ) {
221
- $ this ->writeBorder ($ objWriter , $ shape ->getBorder (), '' );
222
- }
223
- if ($ shape ->getShadow ()->isVisible ()) {
224
- $ this ->writeShadow ($ objWriter , $ shape ->getShadow ());
217
+ // p:sp\p:spPr\a:prstGeom\a:avLst
218
+ $ objWriter ->writeElement ('a:avLst ' );
219
+
220
+ $ objWriter ->endElement ();
225
221
}
222
+ $ this ->writeFill ($ objWriter , $ shape ->getFill ());
223
+ $ this ->writeBorder ($ objWriter , $ shape ->getBorder (), '' );
224
+ $ this ->writeShadow ($ objWriter , $ shape ->getShadow ());
225
+
226
226
// > p:sp\p:spPr
227
227
$ objWriter ->endElement ();
228
228
// p:txBody
229
229
$ objWriter ->startElement ('p:txBody ' );
230
230
// a:bodyPr
231
231
//@link :http://msdn.microsoft.com/en-us/library/documentformat.openxml.drawing.bodyproperties%28v=office.14%29.aspx
232
232
$ objWriter ->startElement ('a:bodyPr ' );
233
- $ verticalAlign = $ shape ->getActiveParagraph ()->getAlignment ()->getVertical ();
234
- if ($ verticalAlign != Alignment::VERTICAL_BASE && $ verticalAlign != Alignment::VERTICAL_AUTO ) {
235
- $ objWriter ->writeAttribute ('anchor ' , $ verticalAlign );
236
- }
237
- if ($ shape ->getWrap () != RichText::WRAP_SQUARE ) {
238
- $ objWriter ->writeAttribute ('wrap ' , $ shape ->getWrap ());
239
- }
240
- $ objWriter ->writeAttribute ('rtlCol ' , '0 ' );
241
- if ($ shape ->getHorizontalOverflow () != RichText::OVERFLOW_OVERFLOW ) {
242
- $ objWriter ->writeAttribute ('horzOverflow ' , $ shape ->getHorizontalOverflow ());
243
- }
244
- if ($ shape ->getVerticalOverflow () != RichText::OVERFLOW_OVERFLOW ) {
245
- $ objWriter ->writeAttribute ('vertOverflow ' , $ shape ->getVerticalOverflow ());
246
- }
247
- if ($ shape ->isUpright ()) {
248
- $ objWriter ->writeAttribute ('upright ' , '1 ' );
249
- }
250
- if ($ shape ->isVertical ()) {
251
- $ objWriter ->writeAttribute ('vert ' , 'vert ' );
252
- }
253
- $ objWriter ->writeAttribute ('bIns ' , CommonDrawing::pixelsToEmu ($ shape ->getInsetBottom ()));
254
- $ objWriter ->writeAttribute ('lIns ' , CommonDrawing::pixelsToEmu ($ shape ->getInsetLeft ()));
255
- $ objWriter ->writeAttribute ('rIns ' , CommonDrawing::pixelsToEmu ($ shape ->getInsetRight ()));
256
- $ objWriter ->writeAttribute ('tIns ' , CommonDrawing::pixelsToEmu ($ shape ->getInsetTop ()));
257
- if ($ shape ->getColumns () <> 1 ) {
258
- $ objWriter ->writeAttribute ('numCol ' , $ shape ->getColumns ());
259
- }
260
- // a:spAutoFit
261
- $ objWriter ->startElement ('a: ' . $ shape ->getAutoFit ());
262
- if ($ shape ->getAutoFit () == RichText::AUTOFIT_NORMAL ) {
263
- if (!is_null ($ shape ->getFontScale ())) {
264
- $ objWriter ->writeAttribute ('fontScale ' , (int )($ shape ->getFontScale () * 1000 ));
233
+ if (!$ shape ->isPlaceholder ()) {
234
+ $ verticalAlign = $ shape ->getActiveParagraph ()->getAlignment ()->getVertical ();
235
+ if ($ verticalAlign != Alignment::VERTICAL_BASE && $ verticalAlign != Alignment::VERTICAL_AUTO ) {
236
+ $ objWriter ->writeAttribute ('anchor ' , $ verticalAlign );
237
+ }
238
+ if ($ shape ->getWrap () != RichText::WRAP_SQUARE ) {
239
+ $ objWriter ->writeAttribute ('wrap ' , $ shape ->getWrap ());
240
+ }
241
+ $ objWriter ->writeAttribute ('rtlCol ' , '0 ' );
242
+ if ($ shape ->getHorizontalOverflow () != RichText::OVERFLOW_OVERFLOW ) {
243
+ $ objWriter ->writeAttribute ('horzOverflow ' , $ shape ->getHorizontalOverflow ());
244
+ }
245
+ if ($ shape ->getVerticalOverflow () != RichText::OVERFLOW_OVERFLOW ) {
246
+ $ objWriter ->writeAttribute ('vertOverflow ' , $ shape ->getVerticalOverflow ());
247
+ }
248
+ if ($ shape ->isUpright ()) {
249
+ $ objWriter ->writeAttribute ('upright ' , '1 ' );
265
250
}
266
- if (! is_null ( $ shape ->getLineSpaceReduction () )) {
267
- $ objWriter ->writeAttribute ('lnSpcReduction ' , ( int )( $ shape -> getLineSpaceReduction () * 1000 ) );
251
+ if ($ shape ->isVertical ( )) {
252
+ $ objWriter ->writeAttribute ('vert ' , ' vert ' );
268
253
}
254
+ $ objWriter ->writeAttribute ('bIns ' , CommonDrawing::pixelsToEmu ($ shape ->getInsetBottom ()));
255
+ $ objWriter ->writeAttribute ('lIns ' , CommonDrawing::pixelsToEmu ($ shape ->getInsetLeft ()));
256
+ $ objWriter ->writeAttribute ('rIns ' , CommonDrawing::pixelsToEmu ($ shape ->getInsetRight ()));
257
+ $ objWriter ->writeAttribute ('tIns ' , CommonDrawing::pixelsToEmu ($ shape ->getInsetTop ()));
258
+ if ($ shape ->getColumns () <> 1 ) {
259
+ $ objWriter ->writeAttribute ('numCol ' , $ shape ->getColumns ());
260
+ }
261
+ // a:spAutoFit
262
+ $ objWriter ->startElement ('a: ' . $ shape ->getAutoFit ());
263
+ if ($ shape ->getAutoFit () == RichText::AUTOFIT_NORMAL ) {
264
+ if (!is_null ($ shape ->getFontScale ())) {
265
+ $ objWriter ->writeAttribute ('fontScale ' , (int )($ shape ->getFontScale () * 1000 ));
266
+ }
267
+ if (!is_null ($ shape ->getLineSpaceReduction ())) {
268
+ $ objWriter ->writeAttribute ('lnSpcReduction ' , (int )($ shape ->getLineSpaceReduction () * 1000 ));
269
+ }
270
+ }
271
+ $ objWriter ->endElement ();
269
272
}
270
273
$ objWriter ->endElement ();
271
- $ objWriter ->endElement ();
272
274
// a:lstStyle
273
275
$ objWriter ->writeElement ('a:lstStyle ' , null );
274
276
if ($ shape ->isPlaceholder () &&
@@ -642,7 +644,13 @@ protected function writeShapeLine(XMLWriter $objWriter, Line $shape, $shapeId)
642
644
// p:cNvCxnSpPr
643
645
$ objWriter ->writeElement ('p:cNvCxnSpPr ' , null );
644
646
// p:nvPr
645
- $ objWriter ->writeElement ('p:nvPr ' , null );
647
+ $ objWriter ->startElement ('p:nvPr ' );
648
+ if ($ shape ->isPlaceholder ()) {
649
+ $ objWriter ->startElement ('p:ph ' );
650
+ $ objWriter ->writeAttribute ('type ' , $ shape ->getPlaceholder ()->getType ());
651
+ $ objWriter ->endElement ();
652
+ }
653
+ $ objWriter ->endElement ();
646
654
$ objWriter ->endElement ();
647
655
// p:spPr
648
656
$ objWriter ->startElement ('p:spPr ' );
@@ -704,9 +712,7 @@ protected function writeShapeLine(XMLWriter $objWriter, Line $shape, $shapeId)
704
712
$ objWriter ->writeElement ('a:avLst ' );
705
713
706
714
$ objWriter ->endElement ();
707
- if ($ shape ->getBorder ()->getLineStyle () != Border::LINE_NONE ) {
708
- $ this ->writeBorder ($ objWriter , $ shape ->getBorder (), '' );
709
- }
715
+ $ this ->writeBorder ($ objWriter , $ shape ->getBorder (), '' );
710
716
$ objWriter ->endElement ();
711
717
$ objWriter ->endElement ();
712
718
}
@@ -752,6 +758,9 @@ protected function writeShadow(XMLWriter $objWriter, $oShadow)
752
758
*/
753
759
protected function writeHyperlink (XMLWriter $ objWriter , $ shape )
754
760
{
761
+ if (!$ shape ->hasHyperlink ()) {
762
+ return ;
763
+ }
755
764
// a:hlinkClick
756
765
$ objWriter ->startElement ('a:hlinkClick ' );
757
766
$ objWriter ->writeAttribute ('r:id ' , $ shape ->getHyperlink ()->relationId );
@@ -1071,7 +1080,13 @@ protected function writeShapeChart(XMLWriter $objWriter, ShapeChart $shape, $sha
1071
1080
// p:cNvGraphicFramePr
1072
1081
$ objWriter ->writeElement ('p:cNvGraphicFramePr ' , null );
1073
1082
// p:nvPr
1074
- $ objWriter ->writeElement ('p:nvPr ' , null );
1083
+ $ objWriter ->startElement ('p:nvPr ' );
1084
+ if ($ shape ->isPlaceholder ()) {
1085
+ $ objWriter ->startElement ('p:ph ' );
1086
+ $ objWriter ->writeAttribute ('type ' , $ shape ->getPlaceholder ()->getType ());
1087
+ $ objWriter ->endElement ();
1088
+ }
1089
+ $ objWriter ->endElement ();
1075
1090
$ objWriter ->endElement ();
1076
1091
// p:xfrm
1077
1092
$ objWriter ->startElement ('p:xfrm ' );
0 commit comments