1 | <?php |
||
15 | class Styles extends AbstractDecoratorWriter |
||
16 | { |
||
17 | /** |
||
18 | * Stores font styles draw:gradient nodes |
||
19 | * |
||
20 | * @var array |
||
21 | */ |
||
22 | protected $arrayGradient = array(); |
||
23 | /** |
||
24 | * Stores font styles draw:stroke-dash nodes |
||
25 | * |
||
26 | * @var array |
||
27 | */ |
||
28 | protected $arrayStrokeDash = array(); |
||
29 | |||
30 | /** |
||
31 | * @return \PhpOffice\Common\Adapter\Zip\ZipInterface |
||
32 | * @throws \Exception |
||
33 | */ |
||
34 | 62 | public function render() |
|
39 | |||
40 | /** |
||
41 | * Write Meta file to XML format |
||
42 | * |
||
43 | * @return string XML Output |
||
44 | * @throws \Exception |
||
45 | */ |
||
46 | 62 | protected function writePart() |
|
164 | |||
165 | /** |
||
166 | * Write the default style information for a RichText shape |
||
167 | * |
||
168 | * @param XMLWriter $objWriter |
||
169 | * @param RichText $shape |
||
170 | */ |
||
171 | 14 | protected function writeRichTextStyle(XMLWriter $objWriter, RichText $shape) |
|
172 | { |
||
173 | 14 | $oFill = $shape->getFill(); |
|
174 | 14 | if ($oFill->getFillType() == Fill::FILL_GRADIENT_LINEAR || $oFill->getFillType() == Fill::FILL_GRADIENT_PATH) { |
|
175 | 1 | if (!in_array($oFill->getHashCode(), $this->arrayGradient)) { |
|
176 | 1 | $this->writeGradientFill($objWriter, $oFill); |
|
177 | } |
||
178 | } |
||
179 | 14 | $oBorder = $shape->getBorder(); |
|
180 | 14 | if ($oBorder->getDashStyle() != Border::DASH_SOLID) { |
|
181 | 2 | if (!in_array($oBorder->getDashStyle(), $this->arrayStrokeDash)) { |
|
182 | 2 | $objWriter->startElement('draw:stroke-dash'); |
|
183 | 2 | $objWriter->writeAttribute('draw:name', 'strokeDash_'.$oBorder->getDashStyle()); |
|
184 | 2 | $objWriter->writeAttribute('draw:style', 'rect'); |
|
185 | 2 | switch ($oBorder->getDashStyle()) { |
|
186 | case Border::DASH_DASH: |
||
187 | 2 | $objWriter->writeAttribute('draw:distance', '0.105cm'); |
|
188 | 2 | $objWriter->writeAttribute('draw:dots2', '1'); |
|
189 | 2 | $objWriter->writeAttribute('draw:dots2-length', '0.14cm'); |
|
190 | 2 | break; |
|
191 | case Border::DASH_DASHDOT: |
||
192 | 1 | $objWriter->writeAttribute('draw:distance', '0.105cm'); |
|
193 | 1 | $objWriter->writeAttribute('draw:dots1', '1'); |
|
194 | 1 | $objWriter->writeAttribute('draw:dots1-length', '0.035cm'); |
|
195 | 1 | $objWriter->writeAttribute('draw:dots2', '1'); |
|
196 | 1 | $objWriter->writeAttribute('draw:dots2-length', '0.14cm'); |
|
197 | 1 | break; |
|
198 | case Border::DASH_DOT: |
||
199 | 1 | $objWriter->writeAttribute('draw:distance', '0.105cm'); |
|
200 | 1 | $objWriter->writeAttribute('draw:dots1', '1'); |
|
201 | 1 | $objWriter->writeAttribute('draw:dots1-length', '0.035cm'); |
|
202 | 1 | break; |
|
203 | case Border::DASH_LARGEDASH: |
||
204 | 1 | $objWriter->writeAttribute('draw:distance', '0.105cm'); |
|
205 | 1 | $objWriter->writeAttribute('draw:dots2', '1'); |
|
206 | 1 | $objWriter->writeAttribute('draw:dots2-length', '0.28cm'); |
|
207 | 1 | break; |
|
208 | case Border::DASH_LARGEDASHDOT: |
||
209 | 1 | $objWriter->writeAttribute('draw:distance', '0.105cm'); |
|
210 | 1 | $objWriter->writeAttribute('draw:dots1', '1'); |
|
211 | 1 | $objWriter->writeAttribute('draw:dots1-length', '0.035cm'); |
|
212 | 1 | $objWriter->writeAttribute('draw:dots2', '1'); |
|
213 | 1 | $objWriter->writeAttribute('draw:dots2-length', '0.28cm'); |
|
214 | 1 | break; |
|
215 | case Border::DASH_LARGEDASHDOTDOT: |
||
216 | 1 | $objWriter->writeAttribute('draw:distance', '0.105cm'); |
|
217 | 1 | $objWriter->writeAttribute('draw:dots1', '2'); |
|
218 | 1 | $objWriter->writeAttribute('draw:dots1-length', '0.035cm'); |
|
219 | 1 | $objWriter->writeAttribute('draw:dots2', '1'); |
|
220 | 1 | $objWriter->writeAttribute('draw:dots2-length', '0.28cm'); |
|
221 | 1 | break; |
|
222 | case Border::DASH_SYSDASH: |
||
223 | 1 | $objWriter->writeAttribute('draw:distance', '0.035cm'); |
|
224 | 1 | $objWriter->writeAttribute('draw:dots2', '1'); |
|
225 | 1 | $objWriter->writeAttribute('draw:dots2-length', '0.105cm'); |
|
226 | 1 | break; |
|
227 | case Border::DASH_SYSDASHDOT: |
||
228 | 1 | $objWriter->writeAttribute('draw:distance', '0.035cm'); |
|
229 | 1 | $objWriter->writeAttribute('draw:dots1', '1'); |
|
230 | 1 | $objWriter->writeAttribute('draw:dots1-length', '0.035cm'); |
|
231 | 1 | $objWriter->writeAttribute('draw:dots2', '1'); |
|
232 | 1 | $objWriter->writeAttribute('draw:dots2-length', '0.105cm'); |
|
233 | 1 | break; |
|
234 | case Border::DASH_SYSDASHDOTDOT: |
||
235 | 1 | $objWriter->writeAttribute('draw:distance', '0.035cm'); |
|
236 | 1 | $objWriter->writeAttribute('draw:dots1', '2'); |
|
237 | 1 | $objWriter->writeAttribute('draw:dots1-length', '0.035cm'); |
|
238 | 1 | $objWriter->writeAttribute('draw:dots2', '1'); |
|
239 | 1 | $objWriter->writeAttribute('draw:dots2-length', '0.105cm'); |
|
240 | 1 | break; |
|
241 | case Border::DASH_SYSDOT: |
||
242 | 1 | $objWriter->writeAttribute('draw:distance', '0.035cm'); |
|
243 | 1 | $objWriter->writeAttribute('draw:dots1', '1'); |
|
244 | 1 | $objWriter->writeAttribute('draw:dots1-length', '0.035cm'); |
|
245 | 1 | break; |
|
246 | } |
||
247 | 2 | $objWriter->endElement(); |
|
248 | 2 | $this->arrayStrokeDash[] = $oBorder->getDashStyle(); |
|
249 | } |
||
250 | } |
||
251 | 14 | } |
|
252 | |||
253 | /** |
||
254 | * Write the default style information for a Table shape |
||
255 | * |
||
256 | * @param XMLWriter $objWriter |
||
257 | * @param Table $shape |
||
258 | */ |
||
259 | 8 | protected function writeTableStyle(XMLWriter $objWriter, Table $shape) |
|
271 | |||
272 | /** |
||
273 | * Writes the style information for a group of shapes |
||
274 | * |
||
275 | * @param XMLWriter $objWriter |
||
276 | * @param Group $group |
||
277 | */ |
||
278 | 1 | protected function writeGroupStyle(XMLWriter $objWriter, Group $group) |
|
279 | { |
||
280 | 1 | $shapes = $group->getShapeCollection(); |
|
281 | 1 | foreach ($shapes as $shape) { |
|
282 | 1 | if ($shape instanceof Table) { |
|
283 | $this->writeTableStyle($objWriter, $shape); |
||
284 | 1 | } elseif ($shape instanceof Group) { |
|
285 | $this->writeGroupStyle($objWriter, $shape); |
||
286 | } |
||
287 | } |
||
288 | 1 | } |
|
289 | |||
290 | /** |
||
291 | * Write the gradient style |
||
292 | * @param XMLWriter $objWriter |
||
293 | * @param Fill $oFill |
||
294 | */ |
||
295 | 2 | protected function writeGradientFill(XMLWriter $objWriter, Fill $oFill) |
|
310 | |||
311 | /** |
||
312 | * Write the background image style |
||
313 | * @param XMLWriter $objWriter |
||
314 | * @param Image $oBkgImage |
||
315 | * @param $numSlide |
||
316 | */ |
||
317 | 1 | protected function writeBackgroundStyle(XMLWriter $objWriter, Image $oBkgImage, $numSlide) |
|
327 | } |
||
328 |