xlsxtheme.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. /****************************************************************************
  2. ** Copyright (c) 2013-2014 Debao Zhang <hello@debao.me>
  3. ** All right reserved.
  4. **
  5. ** Permission is hereby granted, free of charge, to any person obtaining
  6. ** a copy of this software and associated documentation files (the
  7. ** "Software"), to deal in the Software without restriction, including
  8. ** without limitation the rights to use, copy, modify, merge, publish,
  9. ** distribute, sublicense, and/or sell copies of the Software, and to
  10. ** permit persons to whom the Software is furnished to do so, subject to
  11. ** the following conditions:
  12. **
  13. ** The above copyright notice and this permission notice shall be
  14. ** included in all copies or substantial portions of the Software.
  15. **
  16. ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  17. ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  18. ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  19. ** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  20. ** LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  21. ** OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  22. ** WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  23. **
  24. ****************************************************************************/
  25. #include "xlsxtheme_p.h"
  26. #include <QIODevice>
  27. namespace QXlsx {
  28. const char *defaultXmlData =
  29. "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"
  30. "<a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office \xe4\xb8\xbb\xe9\xa2\x98\">"
  31. "<a:themeElements>"
  32. "<a:clrScheme name=\"Office\">"
  33. "<a:dk1><a:sysClr val=\"windowText\" lastClr=\"000000\"/></a:dk1>"
  34. "<a:lt1><a:sysClr val=\"window\" lastClr=\"FFFFFF\"/></a:lt1>"
  35. "<a:dk2><a:srgbClr val=\"1F497D\"/></a:dk2>"
  36. "<a:lt2><a:srgbClr val=\"EEECE1\"/></a:lt2>"
  37. "<a:accent1><a:srgbClr val=\"4F81BD\"/></a:accent1>"
  38. "<a:accent2><a:srgbClr val=\"C0504D\"/></a:accent2>"
  39. "<a:accent3><a:srgbClr val=\"9BBB59\"/></a:accent3>"
  40. "<a:accent4><a:srgbClr val=\"8064A2\"/></a:accent4>"
  41. "<a:accent5><a:srgbClr val=\"4BACC6\"/></a:accent5>"
  42. "<a:accent6><a:srgbClr val=\"F79646\"/></a:accent6>"
  43. "<a:hlink><a:srgbClr val=\"0000FF\"/></a:hlink>"
  44. "<a:folHlink><a:srgbClr val=\"800080\"/></a:folHlink>"
  45. "</a:clrScheme>"
  46. "<a:fontScheme name=\"Office\">"
  47. "<a:majorFont>"
  48. "<a:latin typeface=\"Cambria\"/>"
  49. "<a:ea typeface=\"\"/>"
  50. "<a:cs typeface=\"\"/>"
  51. "<a:font script=\"Jpan\" typeface=\"\xef\xbc\xad\xef\xbc\xb3 \xef\xbc\xb0\xe3\x82\xb4\xe3\x82\xb7\xe3\x83\x83\xe3\x82\xaf\"/>"
  52. "<a:font script=\"Hang\" typeface=\"\xeb\xa7\x91\xec\x9d\x80 \xea\xb3\xa0\xeb\x94\x95\"/>"
  53. "<a:font script=\"Hans\" typeface=\"\xe5\xae\x8b\xe4\xbd\x93\"/>"
  54. "<a:font script=\"Hant\" typeface=\"\xe6\x96\xb0\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94\"/>"
  55. "<a:font script=\"Arab\" typeface=\"Times New Roman\"/>"
  56. "<a:font script=\"Hebr\" typeface=\"Times New Roman\"/>"
  57. "<a:font script=\"Thai\" typeface=\"Tahoma\"/>"
  58. "<a:font script=\"Ethi\" typeface=\"Nyala\"/>"
  59. "<a:font script=\"Beng\" typeface=\"Vrinda\"/>"
  60. "<a:font script=\"Gujr\" typeface=\"Shruti\"/>"
  61. "<a:font script=\"Khmr\" typeface=\"MoolBoran\"/>"
  62. "<a:font script=\"Knda\" typeface=\"Tunga\"/>"
  63. "<a:font script=\"Guru\" typeface=\"Raavi\"/>"
  64. "<a:font script=\"Cans\" typeface=\"Euphemia\"/>"
  65. "<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>"
  66. "<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>"
  67. "<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>"
  68. "<a:font script=\"Thaa\" typeface=\"MV Boli\"/>"
  69. "<a:font script=\"Deva\" typeface=\"Mangal\"/>"
  70. "<a:font script=\"Telu\" typeface=\"Gautami\"/>"
  71. "<a:font script=\"Taml\" typeface=\"Latha\"/>"
  72. "<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>"
  73. "<a:font script=\"Orya\" typeface=\"Kalinga\"/>"
  74. "<a:font script=\"Mlym\" typeface=\"Kartika\"/>"
  75. "<a:font script=\"Laoo\" typeface=\"DokChampa\"/>"
  76. "<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>"
  77. "<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>"
  78. "<a:font script=\"Viet\" typeface=\"Times New Roman\"/>"
  79. "<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>"
  80. "</a:majorFont>"
  81. "<a:minorFont>"
  82. "<a:latin typeface=\"Calibri\"/>"
  83. "<a:ea typeface=\"\"/>"
  84. "<a:cs typeface=\"\"/>"
  85. "<a:font script=\"Jpan\" typeface=\"\xef\xbc\xad\xef\xbc\xb3 \xef\xbc\xb0\xe3\x82\xb4\xe3\x82\xb7\xe3\x83\x83\xe3\x82\xaf\"/>"
  86. "<a:font script=\"Hang\" typeface=\"\xeb\xa7\x91\xec\x9d\x80 \xea\xb3\xa0\xeb\x94\x95\"/>"
  87. "<a:font script=\"Hans\" typeface=\"\xe5\xae\x8b\xe4\xbd\x93\"/>"
  88. "<a:font script=\"Hant\" typeface=\"\xe6\x96\xb0\xe7\xb4\xb0\xe6\x98\x8e\xe9\xab\x94\"/>"
  89. "<a:font script=\"Arab\" typeface=\"Arial\"/>"
  90. "<a:font script=\"Hebr\" typeface=\"Arial\"/>"
  91. "<a:font script=\"Thai\" typeface=\"Tahoma\"/>"
  92. "<a:font script=\"Ethi\" typeface=\"Nyala\"/>"
  93. "<a:font script=\"Beng\" typeface=\"Vrinda\"/>"
  94. "<a:font script=\"Gujr\" typeface=\"Shruti\"/>"
  95. "<a:font script=\"Khmr\" typeface=\"DaunPenh\"/>"
  96. "<a:font script=\"Knda\" typeface=\"Tunga\"/>"
  97. "<a:font script=\"Guru\" typeface=\"Raavi\"/>"
  98. "<a:font script=\"Cans\" typeface=\"Euphemia\"/>"
  99. "<a:font script=\"Cher\" typeface=\"Plantagenet Cherokee\"/>"
  100. "<a:font script=\"Yiii\" typeface=\"Microsoft Yi Baiti\"/>"
  101. "<a:font script=\"Tibt\" typeface=\"Microsoft Himalaya\"/>"
  102. "<a:font script=\"Thaa\" typeface=\"MV Boli\"/>"
  103. "<a:font script=\"Deva\" typeface=\"Mangal\"/>"
  104. "<a:font script=\"Telu\" typeface=\"Gautami\"/>"
  105. "<a:font script=\"Taml\" typeface=\"Latha\"/>"
  106. "<a:font script=\"Syrc\" typeface=\"Estrangelo Edessa\"/>"
  107. "<a:font script=\"Orya\" typeface=\"Kalinga\"/>"
  108. "<a:font script=\"Mlym\" typeface=\"Kartika\"/>"
  109. "<a:font script=\"Laoo\" typeface=\"DokChampa\"/>"
  110. "<a:font script=\"Sinh\" typeface=\"Iskoola Pota\"/>"
  111. "<a:font script=\"Mong\" typeface=\"Mongolian Baiti\"/>"
  112. "<a:font script=\"Viet\" typeface=\"Arial\"/>"
  113. "<a:font script=\"Uigh\" typeface=\"Microsoft Uighur\"/>"
  114. "</a:minorFont>"
  115. "</a:fontScheme>"
  116. "<a:fmtScheme name=\"Office\">"
  117. "<a:fillStyleLst>"
  118. "<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>"
  119. "<a:gradFill rotWithShape=\"1\">"
  120. "<a:gsLst>"
  121. "<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"50000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>"
  122. "<a:gs pos=\"35000\"><a:schemeClr val=\"phClr\"><a:tint val=\"37000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>"
  123. "<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:tint val=\"15000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>"
  124. "</a:gsLst>"
  125. "<a:lin ang=\"16200000\" scaled=\"1\"/>"
  126. "</a:gradFill>"
  127. "<a:gradFill rotWithShape=\"1\">"
  128. "<a:gsLst>"
  129. "<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:shade val=\"51000\"/><a:satMod val=\"130000\"/></a:schemeClr></a:gs>"
  130. "<a:gs pos=\"80000\"><a:schemeClr val=\"phClr\"><a:shade val=\"93000\"/><a:satMod val=\"130000\"/></a:schemeClr></a:gs>"
  131. "<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"94000\"/><a:satMod val=\"135000\"/></a:schemeClr></a:gs>"
  132. "</a:gsLst>"
  133. "<a:lin ang=\"16200000\" scaled=\"0\"/>"
  134. "</a:gradFill>"
  135. "</a:fillStyleLst>"
  136. "<a:lnStyleLst>"
  137. "<a:ln w=\"9525\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">"
  138. "<a:solidFill><a:schemeClr val=\"phClr\"><a:shade val=\"95000\"/><a:satMod val=\"105000\"/></a:schemeClr></a:solidFill>"
  139. "<a:prstDash val=\"solid\"/>"
  140. "</a:ln>"
  141. "<a:ln w=\"25400\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">"
  142. "<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>"
  143. "<a:prstDash val=\"solid\"/>"
  144. "</a:ln>"
  145. "<a:ln w=\"38100\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">"
  146. "<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>"
  147. "<a:prstDash val=\"solid\"/>"
  148. "</a:ln>"
  149. "</a:lnStyleLst>"
  150. "<a:effectStyleLst>"
  151. "<a:effectStyle>"
  152. "<a:effectLst>"
  153. "<a:outerShdw blurRad=\"40000\" dist=\"20000\" dir=\"5400000\" rotWithShape=\"0\">"
  154. "<a:srgbClr val=\"000000\"><a:alpha val=\"38000\"/></a:srgbClr>"
  155. "</a:outerShdw>"
  156. "</a:effectLst>"
  157. "</a:effectStyle>"
  158. "<a:effectStyle>"
  159. "<a:effectLst>"
  160. "<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\">"
  161. "<a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr>"
  162. "</a:outerShdw>"
  163. "</a:effectLst>"
  164. "</a:effectStyle>"
  165. "<a:effectStyle>"
  166. "<a:effectLst>"
  167. "<a:outerShdw blurRad=\"40000\" dist=\"23000\" dir=\"5400000\" rotWithShape=\"0\">"
  168. "<a:srgbClr val=\"000000\"><a:alpha val=\"35000\"/></a:srgbClr>"
  169. "</a:outerShdw>"
  170. "</a:effectLst>"
  171. "<a:scene3d>"
  172. "<a:camera prst=\"orthographicFront\"><a:rot lat=\"0\" lon=\"0\" rev=\"0\"/></a:camera>"
  173. "<a:lightRig rig=\"threePt\" dir=\"t\"><a:rot lat=\"0\" lon=\"0\" rev=\"1200000\"/></a:lightRig>"
  174. "</a:scene3d>"
  175. "<a:sp3d><a:bevelT w=\"63500\" h=\"25400\"/></a:sp3d>"
  176. "</a:effectStyle>"
  177. "</a:effectStyleLst>"
  178. "<a:bgFillStyleLst>"
  179. "<a:solidFill><a:schemeClr val=\"phClr\"/></a:solidFill>"
  180. "<a:gradFill rotWithShape=\"1\">"
  181. "<a:gsLst>"
  182. "<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"40000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>"
  183. "<a:gs pos=\"40000\"><a:schemeClr val=\"phClr\"><a:tint val=\"45000\"/><a:shade val=\"99000\"/><a:satMod val=\"350000\"/></a:schemeClr></a:gs>"
  184. "<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"20000\"/><a:satMod val=\"255000\"/></a:schemeClr></a:gs></a:gsLst>"
  185. "<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"-80000\" r=\"50000\" b=\"180000\"/></a:path>"
  186. "</a:gradFill>"
  187. "<a:gradFill rotWithShape=\"1\">"
  188. "<a:gsLst>"
  189. "<a:gs pos=\"0\"><a:schemeClr val=\"phClr\"><a:tint val=\"80000\"/><a:satMod val=\"300000\"/></a:schemeClr></a:gs>"
  190. "<a:gs pos=\"100000\"><a:schemeClr val=\"phClr\"><a:shade val=\"30000\"/><a:satMod val=\"200000\"/></a:schemeClr></a:gs>"
  191. "</a:gsLst>"
  192. "<a:path path=\"circle\"><a:fillToRect l=\"50000\" t=\"50000\" r=\"50000\" b=\"50000\"/></a:path>"
  193. "</a:gradFill>"
  194. "</a:bgFillStyleLst>"
  195. "</a:fmtScheme>"
  196. "</a:themeElements>"
  197. "<a:objectDefaults/>"
  198. "<a:extraClrSchemeLst/>"
  199. "</a:theme>"
  200. ;
  201. Theme::Theme(CreateFlag flag)
  202. :AbstractOOXmlFile(flag)
  203. {
  204. }
  205. void Theme::saveToXmlFile(QIODevice *device) const
  206. {
  207. if (xmlData.isEmpty())
  208. device->write(defaultXmlData);
  209. else
  210. device->write(xmlData);
  211. }
  212. QByteArray Theme::saveToXmlData() const
  213. {
  214. if (xmlData.isEmpty())
  215. return defaultXmlData;
  216. else
  217. return xmlData;
  218. }
  219. bool Theme::loadFromXmlData(const QByteArray &data)
  220. {
  221. xmlData = data;
  222. return true;
  223. }
  224. bool Theme::loadFromXmlFile(QIODevice *device)
  225. {
  226. xmlData = device->readAll();
  227. return true;
  228. }
  229. }