Properties.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. abstract class PHPExcel_Chart_Properties
  8. {
  9. const
  10. EXCEL_COLOR_TYPE_STANDARD = 'prstClr',
  11. EXCEL_COLOR_TYPE_SCHEME = 'schemeClr',
  12. EXCEL_COLOR_TYPE_ARGB = 'srgbClr';
  13. const
  14. AXIS_LABELS_LOW = 'low',
  15. AXIS_LABELS_HIGH = 'high',
  16. AXIS_LABELS_NEXT_TO = 'nextTo',
  17. AXIS_LABELS_NONE = 'none';
  18. const
  19. TICK_MARK_NONE = 'none',
  20. TICK_MARK_INSIDE = 'in',
  21. TICK_MARK_OUTSIDE = 'out',
  22. TICK_MARK_CROSS = 'cross';
  23. const
  24. HORIZONTAL_CROSSES_AUTOZERO = 'autoZero',
  25. HORIZONTAL_CROSSES_MAXIMUM = 'max';
  26. const
  27. FORMAT_CODE_GENERAL = 'General',
  28. FORMAT_CODE_NUMBER = '#,##0.00',
  29. FORMAT_CODE_CURRENCY = '$#,##0.00',
  30. FORMAT_CODE_ACCOUNTING = '_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)',
  31. FORMAT_CODE_DATE = 'm/d/yyyy',
  32. FORMAT_CODE_TIME = '[$-F400]h:mm:ss AM/PM',
  33. FORMAT_CODE_PERCENTAGE = '0.00%',
  34. FORMAT_CODE_FRACTION = '# ?/?',
  35. FORMAT_CODE_SCIENTIFIC = '0.00E+00',
  36. FORMAT_CODE_TEXT = '@',
  37. FORMAT_CODE_SPECIAL = '00000';
  38. const
  39. ORIENTATION_NORMAL = 'minMax',
  40. ORIENTATION_REVERSED = 'maxMin';
  41. const
  42. LINE_STYLE_COMPOUND_SIMPLE = 'sng',
  43. LINE_STYLE_COMPOUND_DOUBLE = 'dbl',
  44. LINE_STYLE_COMPOUND_THICKTHIN = 'thickThin',
  45. LINE_STYLE_COMPOUND_THINTHICK = 'thinThick',
  46. LINE_STYLE_COMPOUND_TRIPLE = 'tri',
  47. LINE_STYLE_DASH_SOLID = 'solid',
  48. LINE_STYLE_DASH_ROUND_DOT = 'sysDot',
  49. LINE_STYLE_DASH_SQUERE_DOT = 'sysDash',
  50. LINE_STYPE_DASH_DASH = 'dash',
  51. LINE_STYLE_DASH_DASH_DOT = 'dashDot',
  52. LINE_STYLE_DASH_LONG_DASH = 'lgDash',
  53. LINE_STYLE_DASH_LONG_DASH_DOT = 'lgDashDot',
  54. LINE_STYLE_DASH_LONG_DASH_DOT_DOT = 'lgDashDotDot',
  55. LINE_STYLE_CAP_SQUARE = 'sq',
  56. LINE_STYLE_CAP_ROUND = 'rnd',
  57. LINE_STYLE_CAP_FLAT = 'flat',
  58. LINE_STYLE_JOIN_ROUND = 'bevel',
  59. LINE_STYLE_JOIN_MITER = 'miter',
  60. LINE_STYLE_JOIN_BEVEL = 'bevel',
  61. LINE_STYLE_ARROW_TYPE_NOARROW = null,
  62. LINE_STYLE_ARROW_TYPE_ARROW = 'triangle',
  63. LINE_STYLE_ARROW_TYPE_OPEN = 'arrow',
  64. LINE_STYLE_ARROW_TYPE_STEALTH = 'stealth',
  65. LINE_STYLE_ARROW_TYPE_DIAMOND = 'diamond',
  66. LINE_STYLE_ARROW_TYPE_OVAL = 'oval',
  67. LINE_STYLE_ARROW_SIZE_1 = 1,
  68. LINE_STYLE_ARROW_SIZE_2 = 2,
  69. LINE_STYLE_ARROW_SIZE_3 = 3,
  70. LINE_STYLE_ARROW_SIZE_4 = 4,
  71. LINE_STYLE_ARROW_SIZE_5 = 5,
  72. LINE_STYLE_ARROW_SIZE_6 = 6,
  73. LINE_STYLE_ARROW_SIZE_7 = 7,
  74. LINE_STYLE_ARROW_SIZE_8 = 8,
  75. LINE_STYLE_ARROW_SIZE_9 = 9;
  76. const
  77. SHADOW_PRESETS_NOSHADOW = null,
  78. SHADOW_PRESETS_OUTER_BOTTTOM_RIGHT = 1,
  79. SHADOW_PRESETS_OUTER_BOTTOM = 2,
  80. SHADOW_PRESETS_OUTER_BOTTOM_LEFT = 3,
  81. SHADOW_PRESETS_OUTER_RIGHT = 4,
  82. SHADOW_PRESETS_OUTER_CENTER = 5,
  83. SHADOW_PRESETS_OUTER_LEFT = 6,
  84. SHADOW_PRESETS_OUTER_TOP_RIGHT = 7,
  85. SHADOW_PRESETS_OUTER_TOP = 8,
  86. SHADOW_PRESETS_OUTER_TOP_LEFT = 9,
  87. SHADOW_PRESETS_INNER_BOTTTOM_RIGHT = 10,
  88. SHADOW_PRESETS_INNER_BOTTOM = 11,
  89. SHADOW_PRESETS_INNER_BOTTOM_LEFT = 12,
  90. SHADOW_PRESETS_INNER_RIGHT = 13,
  91. SHADOW_PRESETS_INNER_CENTER = 14,
  92. SHADOW_PRESETS_INNER_LEFT = 15,
  93. SHADOW_PRESETS_INNER_TOP_RIGHT = 16,
  94. SHADOW_PRESETS_INNER_TOP = 17,
  95. SHADOW_PRESETS_INNER_TOP_LEFT = 18,
  96. SHADOW_PRESETS_PERSPECTIVE_BELOW = 19,
  97. SHADOW_PRESETS_PERSPECTIVE_UPPER_RIGHT = 20,
  98. SHADOW_PRESETS_PERSPECTIVE_UPPER_LEFT = 21,
  99. SHADOW_PRESETS_PERSPECTIVE_LOWER_RIGHT = 22,
  100. SHADOW_PRESETS_PERSPECTIVE_LOWER_LEFT = 23;
  101. protected function getExcelPointsWidth($width)
  102. {
  103. return $width * 12700;
  104. }
  105. protected function getExcelPointsAngle($angle)
  106. {
  107. return $angle * 60000;
  108. }
  109. protected function getTrueAlpha($alpha)
  110. {
  111. return (string) 100 - $alpha . '000';
  112. }
  113. protected function setColorProperties($color, $alpha, $type)
  114. {
  115. return array(
  116. 'type' => (string) $type,
  117. 'value' => (string) $color,
  118. 'alpha' => (string) $this->getTrueAlpha($alpha)
  119. );
  120. }
  121. protected function getLineStyleArrowSize($array_selector, $array_kay_selector)
  122. {
  123. $sizes = array(
  124. 1 => array('w' => 'sm', 'len' => 'sm'),
  125. 2 => array('w' => 'sm', 'len' => 'med'),
  126. 3 => array('w' => 'sm', 'len' => 'lg'),
  127. 4 => array('w' => 'med', 'len' => 'sm'),
  128. 5 => array('w' => 'med', 'len' => 'med'),
  129. 6 => array('w' => 'med', 'len' => 'lg'),
  130. 7 => array('w' => 'lg', 'len' => 'sm'),
  131. 8 => array('w' => 'lg', 'len' => 'med'),
  132. 9 => array('w' => 'lg', 'len' => 'lg')
  133. );
  134. return $sizes[$array_selector][$array_kay_selector];
  135. }
  136. protected function getShadowPresetsMap($shadow_presets_option)
  137. {
  138. $presets_options = array(
  139. //OUTER
  140. 1 => array(
  141. 'effect' => 'outerShdw',
  142. 'blur' => '50800',
  143. 'distance' => '38100',
  144. 'direction' => '2700000',
  145. 'algn' => 'tl',
  146. 'rotWithShape' => '0'
  147. ),
  148. 2 => array(
  149. 'effect' => 'outerShdw',
  150. 'blur' => '50800',
  151. 'distance' => '38100',
  152. 'direction' => '5400000',
  153. 'algn' => 't',
  154. 'rotWithShape' => '0'
  155. ),
  156. 3 => array(
  157. 'effect' => 'outerShdw',
  158. 'blur' => '50800',
  159. 'distance' => '38100',
  160. 'direction' => '8100000',
  161. 'algn' => 'tr',
  162. 'rotWithShape' => '0'
  163. ),
  164. 4 => array(
  165. 'effect' => 'outerShdw',
  166. 'blur' => '50800',
  167. 'distance' => '38100',
  168. 'algn' => 'l',
  169. 'rotWithShape' => '0'
  170. ),
  171. 5 => array(
  172. 'effect' => 'outerShdw',
  173. 'size' => array(
  174. 'sx' => '102000',
  175. 'sy' => '102000'
  176. )
  177. ,
  178. 'blur' => '63500',
  179. 'distance' => '38100',
  180. 'algn' => 'ctr',
  181. 'rotWithShape' => '0'
  182. ),
  183. 6 => array(
  184. 'effect' => 'outerShdw',
  185. 'blur' => '50800',
  186. 'distance' => '38100',
  187. 'direction' => '10800000',
  188. 'algn' => 'r',
  189. 'rotWithShape' => '0'
  190. ),
  191. 7 => array(
  192. 'effect' => 'outerShdw',
  193. 'blur' => '50800',
  194. 'distance' => '38100',
  195. 'direction' => '18900000',
  196. 'algn' => 'bl',
  197. 'rotWithShape' => '0'
  198. ),
  199. 8 => array(
  200. 'effect' => 'outerShdw',
  201. 'blur' => '50800',
  202. 'distance' => '38100',
  203. 'direction' => '16200000',
  204. 'rotWithShape' => '0'
  205. ),
  206. 9 => array(
  207. 'effect' => 'outerShdw',
  208. 'blur' => '50800',
  209. 'distance' => '38100',
  210. 'direction' => '13500000',
  211. 'algn' => 'br',
  212. 'rotWithShape' => '0'
  213. ),
  214. //INNER
  215. 10 => array(
  216. 'effect' => 'innerShdw',
  217. 'blur' => '63500',
  218. 'distance' => '50800',
  219. 'direction' => '2700000',
  220. ),
  221. 11 => array(
  222. 'effect' => 'innerShdw',
  223. 'blur' => '63500',
  224. 'distance' => '50800',
  225. 'direction' => '5400000',
  226. ),
  227. 12 => array(
  228. 'effect' => 'innerShdw',
  229. 'blur' => '63500',
  230. 'distance' => '50800',
  231. 'direction' => '8100000',
  232. ),
  233. 13 => array(
  234. 'effect' => 'innerShdw',
  235. 'blur' => '63500',
  236. 'distance' => '50800',
  237. ),
  238. 14 => array(
  239. 'effect' => 'innerShdw',
  240. 'blur' => '114300',
  241. ),
  242. 15 => array(
  243. 'effect' => 'innerShdw',
  244. 'blur' => '63500',
  245. 'distance' => '50800',
  246. 'direction' => '10800000',
  247. ),
  248. 16 => array(
  249. 'effect' => 'innerShdw',
  250. 'blur' => '63500',
  251. 'distance' => '50800',
  252. 'direction' => '18900000',
  253. ),
  254. 17 => array(
  255. 'effect' => 'innerShdw',
  256. 'blur' => '63500',
  257. 'distance' => '50800',
  258. 'direction' => '16200000',
  259. ),
  260. 18 => array(
  261. 'effect' => 'innerShdw',
  262. 'blur' => '63500',
  263. 'distance' => '50800',
  264. 'direction' => '13500000',
  265. ),
  266. //perspective
  267. 19 => array(
  268. 'effect' => 'outerShdw',
  269. 'blur' => '152400',
  270. 'distance' => '317500',
  271. 'size' => array(
  272. 'sx' => '90000',
  273. 'sy' => '-19000',
  274. ),
  275. 'direction' => '5400000',
  276. 'rotWithShape' => '0',
  277. ),
  278. 20 => array(
  279. 'effect' => 'outerShdw',
  280. 'blur' => '76200',
  281. 'direction' => '18900000',
  282. 'size' => array(
  283. 'sy' => '23000',
  284. 'kx' => '-1200000',
  285. ),
  286. 'algn' => 'bl',
  287. 'rotWithShape' => '0',
  288. ),
  289. 21 => array(
  290. 'effect' => 'outerShdw',
  291. 'blur' => '76200',
  292. 'direction' => '13500000',
  293. 'size' => array(
  294. 'sy' => '23000',
  295. 'kx' => '1200000',
  296. ),
  297. 'algn' => 'br',
  298. 'rotWithShape' => '0',
  299. ),
  300. 22 => array(
  301. 'effect' => 'outerShdw',
  302. 'blur' => '76200',
  303. 'distance' => '12700',
  304. 'direction' => '2700000',
  305. 'size' => array(
  306. 'sy' => '-23000',
  307. 'kx' => '-800400',
  308. ),
  309. 'algn' => 'bl',
  310. 'rotWithShape' => '0',
  311. ),
  312. 23 => array(
  313. 'effect' => 'outerShdw',
  314. 'blur' => '76200',
  315. 'distance' => '12700',
  316. 'direction' => '8100000',
  317. 'size' => array(
  318. 'sy' => '-23000',
  319. 'kx' => '800400',
  320. ),
  321. 'algn' => 'br',
  322. 'rotWithShape' => '0',
  323. ),
  324. );
  325. return $presets_options[$shadow_presets_option];
  326. }
  327. protected function getArrayElementsValue($properties, $elements)
  328. {
  329. $reference = & $properties;
  330. if (!is_array($elements)) {
  331. return $reference[$elements];
  332. } else {
  333. foreach ($elements as $keys) {
  334. $reference = & $reference[$keys];
  335. }
  336. return $reference;
  337. }
  338. return $this;
  339. }
  340. }