Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
304 / 304 |
|
100.00% |
8 / 8 |
CRAP | |
100.00% |
1 / 1 |
Theme | |
100.00% |
304 / 304 |
|
100.00% |
8 / 8 |
8 | |
100.00% |
1 / 1 |
write | |
100.00% |
12 / 12 |
|
100.00% |
1 / 1 |
1 | |||
writeColorScheme | |
100.00% |
40 / 40 |
|
100.00% |
1 / 1 |
1 | |||
writeFontScheme | |
100.00% |
72 / 72 |
|
100.00% |
1 / 1 |
1 | |||
writeFormatScheme | |
100.00% |
8 / 8 |
|
100.00% |
1 / 1 |
1 | |||
writeFormatFill | |
100.00% |
53 / 53 |
|
100.00% |
1 / 1 |
1 | |||
writeFormatLine | |
100.00% |
25 / 25 |
|
100.00% |
1 / 1 |
1 | |||
writeFormatEffect | |
100.00% |
42 / 42 |
|
100.00% |
1 / 1 |
1 | |||
writeFormatBackground | |
100.00% |
52 / 52 |
|
100.00% |
1 / 1 |
1 |
1 | <?php |
2 | |
3 | /** |
4 | * This file is part of PHPWord - A pure PHP library for reading and writing |
5 | * word processing documents. |
6 | * |
7 | * PHPWord is free software distributed under the terms of the GNU Lesser |
8 | * General Public License version 3 as published by the Free Software Foundation. |
9 | * |
10 | * For the full copyright and license information, please read the LICENSE |
11 | * file that was distributed with this source code. For the full list of |
12 | * contributors, visit https://github.com/PHPOffice/PHPWord/contributors. |
13 | * |
14 | * @see https://github.com/PHPOffice/PHPWord |
15 | * |
16 | * @license http://www.gnu.org/licenses/lgpl.txt LGPL version 3 |
17 | */ |
18 | |
19 | namespace PhpOffice\PhpWord\Writer\Word2007\Part; |
20 | |
21 | /** |
22 | * Word2007 theme writer: word/theme/theme1.xml. |
23 | * |
24 | * @todo Generate content dynamically |
25 | * |
26 | * @since 0.10.0 |
27 | */ |
28 | class Theme extends AbstractPart |
29 | { |
30 | /** |
31 | * Write part. |
32 | * |
33 | * @return string |
34 | */ |
35 | public function write() |
36 | { |
37 | $str = ''; |
38 | |
39 | $str .= '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'; |
40 | $str .= '<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme">'; |
41 | $str .= '<a:themeElements>'; |
42 | $str .= $this->writeColorScheme(); |
43 | $str .= $this->writeFontScheme(); |
44 | $str .= $this->writeFormatScheme(); |
45 | $str .= '</a:themeElements>'; |
46 | $str .= '<a:objectDefaults />'; |
47 | $str .= '<a:extraClrSchemeLst />'; |
48 | $str .= '</a:theme>'; |
49 | |
50 | return $str; |
51 | } |
52 | |
53 | /** |
54 | * Write color scheme. |
55 | * |
56 | * @return string |
57 | */ |
58 | private function writeColorScheme() |
59 | { |
60 | $str = ''; |
61 | |
62 | $str .= '<a:clrScheme name="Office">'; |
63 | $str .= '<a:dk1>'; |
64 | $str .= '<a:sysClr val="windowText" lastClr="000000" />'; |
65 | $str .= '</a:dk1>'; |
66 | $str .= '<a:lt1>'; |
67 | $str .= '<a:sysClr val="window" lastClr="FFFFFF" />'; |
68 | $str .= '</a:lt1>'; |
69 | $str .= '<a:dk2>'; |
70 | $str .= '<a:srgbClr val="1F497D" />'; |
71 | $str .= '</a:dk2>'; |
72 | $str .= '<a:lt2>'; |
73 | $str .= '<a:srgbClr val="EEECE1" />'; |
74 | $str .= '</a:lt2>'; |
75 | $str .= '<a:accent1>'; |
76 | $str .= '<a:srgbClr val="4F81BD" />'; |
77 | $str .= '</a:accent1>'; |
78 | $str .= '<a:accent2>'; |
79 | $str .= '<a:srgbClr val="C0504D" />'; |
80 | $str .= '</a:accent2>'; |
81 | $str .= '<a:accent3>'; |
82 | $str .= '<a:srgbClr val="9BBB59" />'; |
83 | $str .= '</a:accent3>'; |
84 | $str .= '<a:accent4>'; |
85 | $str .= '<a:srgbClr val="8064A2" />'; |
86 | $str .= '</a:accent4>'; |
87 | $str .= '<a:accent5>'; |
88 | $str .= '<a:srgbClr val="4BACC6" />'; |
89 | $str .= '</a:accent5>'; |
90 | $str .= '<a:accent6>'; |
91 | $str .= '<a:srgbClr val="F79646" />'; |
92 | $str .= '</a:accent6>'; |
93 | $str .= '<a:hlink>'; |
94 | $str .= '<a:srgbClr val="0000FF" />'; |
95 | $str .= '</a:hlink>'; |
96 | $str .= '<a:folHlink>'; |
97 | $str .= '<a:srgbClr val="800080" />'; |
98 | $str .= '</a:folHlink>'; |
99 | $str .= '</a:clrScheme>'; |
100 | |
101 | return $str; |
102 | } |
103 | |
104 | /** |
105 | * Write font scheme. |
106 | * |
107 | * @return string |
108 | */ |
109 | private function writeFontScheme() |
110 | { |
111 | $str = ''; |
112 | |
113 | $str .= '<a:fontScheme name="Office">'; |
114 | |
115 | $str .= '<a:majorFont>'; |
116 | $str .= '<a:latin typeface="Cambria" />'; |
117 | $str .= '<a:ea typeface="" />'; |
118 | $str .= '<a:cs typeface="" />'; |
119 | $str .= '<a:font script="Jpan" typeface="MS ゴシック" />'; |
120 | $str .= '<a:font script="Hang" typeface="맑은 고딕" />'; |
121 | $str .= '<a:font script="Hans" typeface="宋体" />'; |
122 | $str .= '<a:font script="Hant" typeface="新細明體" />'; |
123 | $str .= '<a:font script="Arab" typeface="Times New Roman" />'; |
124 | $str .= '<a:font script="Hebr" typeface="Times New Roman" />'; |
125 | $str .= '<a:font script="Thai" typeface="Angsana New" />'; |
126 | $str .= '<a:font script="Ethi" typeface="Nyala" />'; |
127 | $str .= '<a:font script="Beng" typeface="Vrinda" />'; |
128 | $str .= '<a:font script="Gujr" typeface="Shruti" />'; |
129 | $str .= '<a:font script="Khmr" typeface="MoolBoran" />'; |
130 | $str .= '<a:font script="Knda" typeface="Tunga" />'; |
131 | $str .= '<a:font script="Guru" typeface="Raavi" />'; |
132 | $str .= '<a:font script="Cans" typeface="Euphemia" />'; |
133 | $str .= '<a:font script="Cher" typeface="Plantagenet Cherokee" />'; |
134 | $str .= '<a:font script="Yiii" typeface="Microsoft Yi Baiti" />'; |
135 | $str .= '<a:font script="Tibt" typeface="Microsoft Himalaya" />'; |
136 | $str .= '<a:font script="Thaa" typeface="MV Boli" />'; |
137 | $str .= '<a:font script="Deva" typeface="Mangal" />'; |
138 | $str .= '<a:font script="Telu" typeface="Gautami" />'; |
139 | $str .= '<a:font script="Taml" typeface="Latha" />'; |
140 | $str .= '<a:font script="Syrc" typeface="Estrangelo Edessa" />'; |
141 | $str .= '<a:font script="Orya" typeface="Kalinga" />'; |
142 | $str .= '<a:font script="Mlym" typeface="Kartika" />'; |
143 | $str .= '<a:font script="Laoo" typeface="DokChampa" />'; |
144 | $str .= '<a:font script="Sinh" typeface="Iskoola Pota" />'; |
145 | $str .= '<a:font script="Mong" typeface="Mongolian Baiti" />'; |
146 | $str .= '<a:font script="Viet" typeface="Times New Roman" />'; |
147 | $str .= '<a:font script="Uigh" typeface="Microsoft Uighur" />'; |
148 | $str .= '</a:majorFont>'; |
149 | |
150 | $str .= '<a:minorFont>'; |
151 | $str .= '<a:latin typeface="Calibri" />'; |
152 | $str .= '<a:ea typeface="" />'; |
153 | $str .= '<a:cs typeface="" />'; |
154 | $str .= '<a:font script="Jpan" typeface="MS 明朝" />'; |
155 | $str .= '<a:font script="Hang" typeface="맑은 고딕" />'; |
156 | $str .= '<a:font script="Hans" typeface="宋体" />'; |
157 | $str .= '<a:font script="Hant" typeface="新細明體" />'; |
158 | $str .= '<a:font script="Arab" typeface="Arial" />'; |
159 | $str .= '<a:font script="Hebr" typeface="Arial" />'; |
160 | $str .= '<a:font script="Thai" typeface="Cordia New" />'; |
161 | $str .= '<a:font script="Ethi" typeface="Nyala" />'; |
162 | $str .= '<a:font script="Beng" typeface="Vrinda" />'; |
163 | $str .= '<a:font script="Gujr" typeface="Shruti" />'; |
164 | $str .= '<a:font script="Khmr" typeface="DaunPenh" />'; |
165 | $str .= '<a:font script="Knda" typeface="Tunga" />'; |
166 | $str .= '<a:font script="Guru" typeface="Raavi" />'; |
167 | $str .= '<a:font script="Cans" typeface="Euphemia" />'; |
168 | $str .= '<a:font script="Cher" typeface="Plantagenet Cherokee" />'; |
169 | $str .= '<a:font script="Yiii" typeface="Microsoft Yi Baiti" />'; |
170 | $str .= '<a:font script="Tibt" typeface="Microsoft Himalaya" />'; |
171 | $str .= '<a:font script="Thaa" typeface="MV Boli" />'; |
172 | $str .= '<a:font script="Deva" typeface="Mangal" />'; |
173 | $str .= '<a:font script="Telu" typeface="Gautami" />'; |
174 | $str .= '<a:font script="Taml" typeface="Latha" />'; |
175 | $str .= '<a:font script="Syrc" typeface="Estrangelo Edessa" />'; |
176 | $str .= '<a:font script="Orya" typeface="Kalinga" />'; |
177 | $str .= '<a:font script="Mlym" typeface="Kartika" />'; |
178 | $str .= '<a:font script="Laoo" typeface="DokChampa" />'; |
179 | $str .= '<a:font script="Sinh" typeface="Iskoola Pota" />'; |
180 | $str .= '<a:font script="Mong" typeface="Mongolian Baiti" />'; |
181 | $str .= '<a:font script="Viet" typeface="Arial" />'; |
182 | $str .= '<a:font script="Uigh" typeface="Microsoft Uighur" />'; |
183 | $str .= '</a:minorFont>'; |
184 | |
185 | $str .= '</a:fontScheme>'; |
186 | |
187 | return $str; |
188 | } |
189 | |
190 | /** |
191 | * Write format scheme. |
192 | * |
193 | * @return string |
194 | */ |
195 | private function writeFormatScheme() |
196 | { |
197 | $str = ''; |
198 | |
199 | $str .= '<a:fmtScheme name="Office">'; |
200 | $str .= $this->writeFormatFill(); |
201 | $str .= $this->writeFormatLine(); |
202 | $str .= $this->writeFormatEffect(); |
203 | $str .= $this->writeFormatBackground(); |
204 | $str .= '</a:fmtScheme>'; |
205 | |
206 | return $str; |
207 | } |
208 | |
209 | /** |
210 | * Write fill format scheme. |
211 | * |
212 | * @return string |
213 | */ |
214 | private function writeFormatFill() |
215 | { |
216 | $str = ''; |
217 | |
218 | $str .= '<a:fillStyleLst>'; |
219 | $str .= '<a:solidFill>'; |
220 | $str .= '<a:schemeClr val="phClr" />'; |
221 | $str .= '</a:solidFill>'; |
222 | $str .= '<a:gradFill rotWithShape="1">'; |
223 | $str .= '<a:gsLst>'; |
224 | $str .= '<a:gs pos="0">'; |
225 | $str .= '<a:schemeClr val="phClr">'; |
226 | $str .= '<a:tint val="50000" />'; |
227 | $str .= '<a:satMod val="300000" />'; |
228 | $str .= '</a:schemeClr>'; |
229 | $str .= '</a:gs>'; |
230 | $str .= '<a:gs pos="35000">'; |
231 | $str .= '<a:schemeClr val="phClr">'; |
232 | $str .= '<a:tint val="37000" />'; |
233 | $str .= '<a:satMod val="300000" />'; |
234 | $str .= '</a:schemeClr>'; |
235 | $str .= '</a:gs>'; |
236 | $str .= '<a:gs pos="100000">'; |
237 | $str .= '<a:schemeClr val="phClr">'; |
238 | $str .= '<a:tint val="15000" />'; |
239 | $str .= '<a:satMod val="350000" />'; |
240 | $str .= '</a:schemeClr>'; |
241 | $str .= '</a:gs>'; |
242 | $str .= '</a:gsLst>'; |
243 | $str .= '<a:lin ang="16200000" scaled="1" />'; |
244 | $str .= '</a:gradFill>'; |
245 | $str .= '<a:gradFill rotWithShape="1">'; |
246 | $str .= '<a:gsLst>'; |
247 | $str .= '<a:gs pos="0">'; |
248 | $str .= '<a:schemeClr val="phClr">'; |
249 | $str .= '<a:shade val="51000" />'; |
250 | $str .= '<a:satMod val="130000" />'; |
251 | $str .= '</a:schemeClr>'; |
252 | $str .= '</a:gs>'; |
253 | $str .= '<a:gs pos="80000">'; |
254 | $str .= '<a:schemeClr val="phClr">'; |
255 | $str .= '<a:shade val="93000" />'; |
256 | $str .= '<a:satMod val="130000" />'; |
257 | $str .= '</a:schemeClr>'; |
258 | $str .= '</a:gs>'; |
259 | $str .= '<a:gs pos="100000">'; |
260 | $str .= '<a:schemeClr val="phClr">'; |
261 | $str .= '<a:shade val="94000" />'; |
262 | $str .= '<a:satMod val="135000" />'; |
263 | $str .= '</a:schemeClr>'; |
264 | $str .= '</a:gs>'; |
265 | $str .= '</a:gsLst>'; |
266 | $str .= '<a:lin ang="16200000" scaled="0" />'; |
267 | $str .= '</a:gradFill>'; |
268 | $str .= '</a:fillStyleLst>'; |
269 | |
270 | return $str; |
271 | } |
272 | |
273 | /** |
274 | * Write line format scheme. |
275 | * |
276 | * @return string |
277 | */ |
278 | private function writeFormatLine() |
279 | { |
280 | $str = ''; |
281 | |
282 | $str .= '<a:lnStyleLst>'; |
283 | $str .= '<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">'; |
284 | $str .= '<a:solidFill>'; |
285 | $str .= '<a:schemeClr val="phClr">'; |
286 | $str .= '<a:shade val="95000" />'; |
287 | $str .= '<a:satMod val="105000" />'; |
288 | $str .= '</a:schemeClr>'; |
289 | $str .= '</a:solidFill>'; |
290 | $str .= '<a:prstDash val="solid" />'; |
291 | $str .= '</a:ln>'; |
292 | $str .= '<a:ln w="25400" cap="flat" cmpd="sng" algn="ctr">'; |
293 | $str .= '<a:solidFill>'; |
294 | $str .= '<a:schemeClr val="phClr" />'; |
295 | $str .= '</a:solidFill>'; |
296 | $str .= '<a:prstDash val="solid" />'; |
297 | $str .= '</a:ln>'; |
298 | $str .= '<a:ln w="38100" cap="flat" cmpd="sng" algn="ctr">'; |
299 | $str .= '<a:solidFill>'; |
300 | $str .= '<a:schemeClr val="phClr" />'; |
301 | $str .= '</a:solidFill>'; |
302 | $str .= '<a:prstDash val="solid" />'; |
303 | $str .= '</a:ln>'; |
304 | $str .= '</a:lnStyleLst>'; |
305 | |
306 | return $str; |
307 | } |
308 | |
309 | /** |
310 | * Write effect format scheme. |
311 | * |
312 | * @return string |
313 | */ |
314 | private function writeFormatEffect() |
315 | { |
316 | $str = ''; |
317 | |
318 | $str .= '<a:effectStyleLst>'; |
319 | $str .= '<a:effectStyle>'; |
320 | $str .= '<a:effectLst>'; |
321 | $str .= '<a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0">'; |
322 | $str .= '<a:srgbClr val="000000">'; |
323 | $str .= '<a:alpha val="38000" />'; |
324 | $str .= '</a:srgbClr>'; |
325 | $str .= '</a:outerShdw>'; |
326 | $str .= '</a:effectLst>'; |
327 | $str .= '</a:effectStyle>'; |
328 | $str .= '<a:effectStyle>'; |
329 | $str .= '<a:effectLst>'; |
330 | $str .= '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">'; |
331 | $str .= '<a:srgbClr val="000000">'; |
332 | $str .= '<a:alpha val="35000" />'; |
333 | $str .= '</a:srgbClr>'; |
334 | $str .= '</a:outerShdw>'; |
335 | $str .= '</a:effectLst>'; |
336 | $str .= '</a:effectStyle>'; |
337 | $str .= '<a:effectStyle>'; |
338 | $str .= '<a:effectLst>'; |
339 | $str .= '<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0">'; |
340 | $str .= '<a:srgbClr val="000000">'; |
341 | $str .= '<a:alpha val="35000" />'; |
342 | $str .= '</a:srgbClr>'; |
343 | $str .= '</a:outerShdw>'; |
344 | $str .= '</a:effectLst>'; |
345 | $str .= '<a:scene3d>'; |
346 | $str .= '<a:camera prst="orthographicFront">'; |
347 | $str .= '<a:rot lat="0" lon="0" rev="0" />'; |
348 | $str .= '</a:camera>'; |
349 | $str .= '<a:lightRig rig="threePt" dir="t">'; |
350 | $str .= '<a:rot lat="0" lon="0" rev="1200000" />'; |
351 | $str .= '</a:lightRig>'; |
352 | $str .= '</a:scene3d>'; |
353 | $str .= '<a:sp3d>'; |
354 | $str .= '<a:bevelT w="63500" h="25400" />'; |
355 | $str .= '</a:sp3d>'; |
356 | $str .= '</a:effectStyle>'; |
357 | $str .= '</a:effectStyleLst>'; |
358 | |
359 | return $str; |
360 | } |
361 | |
362 | /** |
363 | * Write background format scheme. |
364 | * |
365 | * @return string |
366 | */ |
367 | private function writeFormatBackground() |
368 | { |
369 | $str = ''; |
370 | |
371 | $str .= '<a:bgFillStyleLst>'; |
372 | $str .= '<a:solidFill>'; |
373 | $str .= '<a:schemeClr val="phClr" />'; |
374 | $str .= '</a:solidFill>'; |
375 | $str .= '<a:gradFill rotWithShape="1">'; |
376 | $str .= '<a:gsLst>'; |
377 | $str .= '<a:gs pos="0">'; |
378 | $str .= '<a:schemeClr val="phClr">'; |
379 | $str .= '<a:tint val="40000" />'; |
380 | $str .= '<a:satMod val="350000" />'; |
381 | $str .= '</a:schemeClr>'; |
382 | $str .= '</a:gs>'; |
383 | $str .= '<a:gs pos="40000">'; |
384 | $str .= '<a:schemeClr val="phClr">'; |
385 | $str .= '<a:tint val="45000" />'; |
386 | $str .= '<a:shade val="99000" />'; |
387 | $str .= '<a:satMod val="350000" />'; |
388 | $str .= '</a:schemeClr>'; |
389 | $str .= '</a:gs>'; |
390 | $str .= '<a:gs pos="100000">'; |
391 | $str .= '<a:schemeClr val="phClr">'; |
392 | $str .= '<a:shade val="20000" />'; |
393 | $str .= '<a:satMod val="255000" />'; |
394 | $str .= '</a:schemeClr>'; |
395 | $str .= '</a:gs>'; |
396 | $str .= '</a:gsLst>'; |
397 | $str .= '<a:path path="circle">'; |
398 | $str .= '<a:fillToRect l="50000" t="-80000" r="50000" b="180000" />'; |
399 | $str .= '</a:path>'; |
400 | $str .= '</a:gradFill>'; |
401 | $str .= '<a:gradFill rotWithShape="1">'; |
402 | $str .= '<a:gsLst>'; |
403 | $str .= '<a:gs pos="0">'; |
404 | $str .= '<a:schemeClr val="phClr">'; |
405 | $str .= '<a:tint val="80000" />'; |
406 | $str .= '<a:satMod val="300000" />'; |
407 | $str .= '</a:schemeClr>'; |
408 | $str .= '</a:gs>'; |
409 | $str .= '<a:gs pos="100000">'; |
410 | $str .= '<a:schemeClr val="phClr">'; |
411 | $str .= '<a:shade val="30000" />'; |
412 | $str .= '<a:satMod val="200000" />'; |
413 | $str .= '</a:schemeClr>'; |
414 | $str .= '</a:gs>'; |
415 | $str .= '</a:gsLst>'; |
416 | $str .= '<a:path path="circle">'; |
417 | $str .= '<a:fillToRect l="50000" t="50000" r="50000" b="50000" />'; |
418 | $str .= '</a:path>'; |
419 | $str .= '</a:gradFill>'; |
420 | $str .= '</a:bgFillStyleLst>'; |
421 | |
422 | return $str; |
423 | } |
424 | } |