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