Açıklama Yok

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