/jpgraph/jpgraph_rgb.inc.php

https://bitbucket.org/nad2000/simrh · PHP · 570 lines · 526 code · 10 blank · 34 comment · 22 complexity · 2e772a500d297dbf8c48201ee9f6d934 MD5 · raw file

  1. <?php
  2. //=======================================================================
  3. // File: JPGRAPH_RGB.INC.PHP
  4. // Description: Class to handle RGb color space specification and
  5. // named colors
  6. // Created: 2001-01-08 (Refactored to separate file 2008-08-01)
  7. // Ver: $Id: jpgraph_rgb.inc.php 1049 2008-08-01 19:58:07Z ljp $
  8. //
  9. // Copyright (c) Aditus Consulting. All rights reserved.
  10. //========================================================================
  11. //===================================================
  12. // CLASS RGB
  13. // Description: Color definitions as RGB triples
  14. //===================================================
  15. class RGB {
  16. public $rgb_table;
  17. public $img;
  18. function RGB($aImg=null) {
  19. $this->img = $aImg;
  20. // Conversion array between color names and RGB
  21. $this->rgb_table = array(
  22. "aqua"=> array(0,255,255),
  23. "lime"=> array(0,255,0),
  24. "teal"=> array(0,128,128),
  25. "whitesmoke"=>array(245,245,245),
  26. "gainsboro"=>array(220,220,220),
  27. "oldlace"=>array(253,245,230),
  28. "linen"=>array(250,240,230),
  29. "antiquewhite"=>array(250,235,215),
  30. "papayawhip"=>array(255,239,213),
  31. "blanchedalmond"=>array(255,235,205),
  32. "bisque"=>array(255,228,196),
  33. "peachpuff"=>array(255,218,185),
  34. "navajowhite"=>array(255,222,173),
  35. "moccasin"=>array(255,228,181),
  36. "cornsilk"=>array(255,248,220),
  37. "ivory"=>array(255,255,240),
  38. "lemonchiffon"=>array(255,250,205),
  39. "seashell"=>array(255,245,238),
  40. "mintcream"=>array(245,255,250),
  41. "azure"=>array(240,255,255),
  42. "aliceblue"=>array(240,248,255),
  43. "lavender"=>array(230,230,250),
  44. "lavenderblush"=>array(255,240,245),
  45. "mistyrose"=>array(255,228,225),
  46. "white"=>array(255,255,255),
  47. "black"=>array(0,0,0),
  48. "darkslategray"=>array(47,79,79),
  49. "dimgray"=>array(105,105,105),
  50. "slategray"=>array(112,128,144),
  51. "lightslategray"=>array(119,136,153),
  52. "gray"=>array(190,190,190),
  53. "lightgray"=>array(211,211,211),
  54. "midnightblue"=>array(25,25,112),
  55. "navy"=>array(0,0,128),
  56. "cornflowerblue"=>array(100,149,237),
  57. "darkslateblue"=>array(72,61,139),
  58. "slateblue"=>array(106,90,205),
  59. "mediumslateblue"=>array(123,104,238),
  60. "lightslateblue"=>array(132,112,255),
  61. "mediumblue"=>array(0,0,205),
  62. "royalblue"=>array(65,105,225),
  63. "blue"=>array(0,0,255),
  64. "dodgerblue"=>array(30,144,255),
  65. "deepskyblue"=>array(0,191,255),
  66. "skyblue"=>array(135,206,235),
  67. "lightskyblue"=>array(135,206,250),
  68. "steelblue"=>array(70,130,180),
  69. "lightred"=>array(211,167,168),
  70. "lightsteelblue"=>array(176,196,222),
  71. "lightblue"=>array(173,216,230),
  72. "powderblue"=>array(176,224,230),
  73. "paleturquoise"=>array(175,238,238),
  74. "darkturquoise"=>array(0,206,209),
  75. "mediumturquoise"=>array(72,209,204),
  76. "turquoise"=>array(64,224,208),
  77. "cyan"=>array(0,255,255),
  78. "lightcyan"=>array(224,255,255),
  79. "cadetblue"=>array(95,158,160),
  80. "mediumaquamarine"=>array(102,205,170),
  81. "aquamarine"=>array(127,255,212),
  82. "darkgreen"=>array(0,100,0),
  83. "darkolivegreen"=>array(85,107,47),
  84. "darkseagreen"=>array(143,188,143),
  85. "seagreen"=>array(46,139,87),
  86. "mediumseagreen"=>array(60,179,113),
  87. "lightseagreen"=>array(32,178,170),
  88. "palegreen"=>array(152,251,152),
  89. "springgreen"=>array(0,255,127),
  90. "lawngreen"=>array(124,252,0),
  91. "green"=>array(0,255,0),
  92. "chartreuse"=>array(127,255,0),
  93. "mediumspringgreen"=>array(0,250,154),
  94. "greenyellow"=>array(173,255,47),
  95. "limegreen"=>array(50,205,50),
  96. "yellowgreen"=>array(154,205,50),
  97. "forestgreen"=>array(34,139,34),
  98. "olivedrab"=>array(107,142,35),
  99. "darkkhaki"=>array(189,183,107),
  100. "khaki"=>array(240,230,140),
  101. "palegoldenrod"=>array(238,232,170),
  102. "lightgoldenrodyellow"=>array(250,250,210),
  103. "lightyellow"=>array(255,255,200),
  104. "yellow"=>array(255,255,0),
  105. "gold"=>array(255,215,0),
  106. "lightgoldenrod"=>array(238,221,130),
  107. "goldenrod"=>array(218,165,32),
  108. "darkgoldenrod"=>array(184,134,11),
  109. "rosybrown"=>array(188,143,143),
  110. "indianred"=>array(205,92,92),
  111. "saddlebrown"=>array(139,69,19),
  112. "sienna"=>array(160,82,45),
  113. "peru"=>array(205,133,63),
  114. "burlywood"=>array(222,184,135),
  115. "beige"=>array(245,245,220),
  116. "wheat"=>array(245,222,179),
  117. "sandybrown"=>array(244,164,96),
  118. "tan"=>array(210,180,140),
  119. "chocolate"=>array(210,105,30),
  120. "firebrick"=>array(178,34,34),
  121. "brown"=>array(165,42,42),
  122. "darksalmon"=>array(233,150,122),
  123. "salmon"=>array(250,128,114),
  124. "lightsalmon"=>array(255,160,122),
  125. "orange"=>array(255,165,0),
  126. "darkorange"=>array(255,140,0),
  127. "coral"=>array(255,127,80),
  128. "lightcoral"=>array(240,128,128),
  129. "tomato"=>array(255,99,71),
  130. "orangered"=>array(255,69,0),
  131. "red"=>array(255,0,0),
  132. "hotpink"=>array(255,105,180),
  133. "deeppink"=>array(255,20,147),
  134. "pink"=>array(255,192,203),
  135. "lightpink"=>array(255,182,193),
  136. "palevioletred"=>array(219,112,147),
  137. "maroon"=>array(176,48,96),
  138. "mediumvioletred"=>array(199,21,133),
  139. "violetred"=>array(208,32,144),
  140. "magenta"=>array(255,0,255),
  141. "violet"=>array(238,130,238),
  142. "plum"=>array(221,160,221),
  143. "orchid"=>array(218,112,214),
  144. "mediumorchid"=>array(186,85,211),
  145. "darkorchid"=>array(153,50,204),
  146. "darkviolet"=>array(148,0,211),
  147. "blueviolet"=>array(138,43,226),
  148. "purple"=>array(160,32,240),
  149. "mediumpurple"=>array(147,112,219),
  150. "thistle"=>array(216,191,216),
  151. "snow1"=>array(255,250,250),
  152. "snow2"=>array(238,233,233),
  153. "snow3"=>array(205,201,201),
  154. "snow4"=>array(139,137,137),
  155. "seashell1"=>array(255,245,238),
  156. "seashell2"=>array(238,229,222),
  157. "seashell3"=>array(205,197,191),
  158. "seashell4"=>array(139,134,130),
  159. "AntiqueWhite1"=>array(255,239,219),
  160. "AntiqueWhite2"=>array(238,223,204),
  161. "AntiqueWhite3"=>array(205,192,176),
  162. "AntiqueWhite4"=>array(139,131,120),
  163. "bisque1"=>array(255,228,196),
  164. "bisque2"=>array(238,213,183),
  165. "bisque3"=>array(205,183,158),
  166. "bisque4"=>array(139,125,107),
  167. "peachPuff1"=>array(255,218,185),
  168. "peachpuff2"=>array(238,203,173),
  169. "peachpuff3"=>array(205,175,149),
  170. "peachpuff4"=>array(139,119,101),
  171. "navajowhite1"=>array(255,222,173),
  172. "navajowhite2"=>array(238,207,161),
  173. "navajowhite3"=>array(205,179,139),
  174. "navajowhite4"=>array(139,121,94),
  175. "lemonchiffon1"=>array(255,250,205),
  176. "lemonchiffon2"=>array(238,233,191),
  177. "lemonchiffon3"=>array(205,201,165),
  178. "lemonchiffon4"=>array(139,137,112),
  179. "ivory1"=>array(255,255,240),
  180. "ivory2"=>array(238,238,224),
  181. "ivory3"=>array(205,205,193),
  182. "ivory4"=>array(139,139,131),
  183. "honeydew"=>array(193,205,193),
  184. "lavenderblush1"=>array(255,240,245),
  185. "lavenderblush2"=>array(238,224,229),
  186. "lavenderblush3"=>array(205,193,197),
  187. "lavenderblush4"=>array(139,131,134),
  188. "mistyrose1"=>array(255,228,225),
  189. "mistyrose2"=>array(238,213,210),
  190. "mistyrose3"=>array(205,183,181),
  191. "mistyrose4"=>array(139,125,123),
  192. "azure1"=>array(240,255,255),
  193. "azure2"=>array(224,238,238),
  194. "azure3"=>array(193,205,205),
  195. "azure4"=>array(131,139,139),
  196. "slateblue1"=>array(131,111,255),
  197. "slateblue2"=>array(122,103,238),
  198. "slateblue3"=>array(105,89,205),
  199. "slateblue4"=>array(71,60,139),
  200. "royalblue1"=>array(72,118,255),
  201. "royalblue2"=>array(67,110,238),
  202. "royalblue3"=>array(58,95,205),
  203. "royalblue4"=>array(39,64,139),
  204. "dodgerblue1"=>array(30,144,255),
  205. "dodgerblue2"=>array(28,134,238),
  206. "dodgerblue3"=>array(24,116,205),
  207. "dodgerblue4"=>array(16,78,139),
  208. "steelblue1"=>array(99,184,255),
  209. "steelblue2"=>array(92,172,238),
  210. "steelblue3"=>array(79,148,205),
  211. "steelblue4"=>array(54,100,139),
  212. "deepskyblue1"=>array(0,191,255),
  213. "deepskyblue2"=>array(0,178,238),
  214. "deepskyblue3"=>array(0,154,205),
  215. "deepskyblue4"=>array(0,104,139),
  216. "skyblue1"=>array(135,206,255),
  217. "skyblue2"=>array(126,192,238),
  218. "skyblue3"=>array(108,166,205),
  219. "skyblue4"=>array(74,112,139),
  220. "lightskyblue1"=>array(176,226,255),
  221. "lightskyblue2"=>array(164,211,238),
  222. "lightskyblue3"=>array(141,182,205),
  223. "lightskyblue4"=>array(96,123,139),
  224. "slategray1"=>array(198,226,255),
  225. "slategray2"=>array(185,211,238),
  226. "slategray3"=>array(159,182,205),
  227. "slategray4"=>array(108,123,139),
  228. "lightsteelblue1"=>array(202,225,255),
  229. "lightsteelblue2"=>array(188,210,238),
  230. "lightsteelblue3"=>array(162,181,205),
  231. "lightsteelblue4"=>array(110,123,139),
  232. "lightblue1"=>array(191,239,255),
  233. "lightblue2"=>array(178,223,238),
  234. "lightblue3"=>array(154,192,205),
  235. "lightblue4"=>array(104,131,139),
  236. "lightcyan1"=>array(224,255,255),
  237. "lightcyan2"=>array(209,238,238),
  238. "lightcyan3"=>array(180,205,205),
  239. "lightcyan4"=>array(122,139,139),
  240. "paleturquoise1"=>array(187,255,255),
  241. "paleturquoise2"=>array(174,238,238),
  242. "paleturquoise3"=>array(150,205,205),
  243. "paleturquoise4"=>array(102,139,139),
  244. "cadetblue1"=>array(152,245,255),
  245. "cadetblue2"=>array(142,229,238),
  246. "cadetblue3"=>array(122,197,205),
  247. "cadetblue4"=>array(83,134,139),
  248. "turquoise1"=>array(0,245,255),
  249. "turquoise2"=>array(0,229,238),
  250. "turquoise3"=>array(0,197,205),
  251. "turquoise4"=>array(0,134,139),
  252. "cyan1"=>array(0,255,255),
  253. "cyan2"=>array(0,238,238),
  254. "cyan3"=>array(0,205,205),
  255. "cyan4"=>array(0,139,139),
  256. "darkslategray1"=>array(151,255,255),
  257. "darkslategray2"=>array(141,238,238),
  258. "darkslategray3"=>array(121,205,205),
  259. "darkslategray4"=>array(82,139,139),
  260. "aquamarine1"=>array(127,255,212),
  261. "aquamarine2"=>array(118,238,198),
  262. "aquamarine3"=>array(102,205,170),
  263. "aquamarine4"=>array(69,139,116),
  264. "darkseagreen1"=>array(193,255,193),
  265. "darkseagreen2"=>array(180,238,180),
  266. "darkseagreen3"=>array(155,205,155),
  267. "darkseagreen4"=>array(105,139,105),
  268. "seagreen1"=>array(84,255,159),
  269. "seagreen2"=>array(78,238,148),
  270. "seagreen3"=>array(67,205,128),
  271. "seagreen4"=>array(46,139,87),
  272. "palegreen1"=>array(154,255,154),
  273. "palegreen2"=>array(144,238,144),
  274. "palegreen3"=>array(124,205,124),
  275. "palegreen4"=>array(84,139,84),
  276. "springgreen1"=>array(0,255,127),
  277. "springgreen2"=>array(0,238,118),
  278. "springgreen3"=>array(0,205,102),
  279. "springgreen4"=>array(0,139,69),
  280. "chartreuse1"=>array(127,255,0),
  281. "chartreuse2"=>array(118,238,0),
  282. "chartreuse3"=>array(102,205,0),
  283. "chartreuse4"=>array(69,139,0),
  284. "olivedrab1"=>array(192,255,62),
  285. "olivedrab2"=>array(179,238,58),
  286. "olivedrab3"=>array(154,205,50),
  287. "olivedrab4"=>array(105,139,34),
  288. "darkolivegreen1"=>array(202,255,112),
  289. "darkolivegreen2"=>array(188,238,104),
  290. "darkolivegreen3"=>array(162,205,90),
  291. "darkolivegreen4"=>array(110,139,61),
  292. "khaki1"=>array(255,246,143),
  293. "khaki2"=>array(238,230,133),
  294. "khaki3"=>array(205,198,115),
  295. "khaki4"=>array(139,134,78),
  296. "lightgoldenrod1"=>array(255,236,139),
  297. "lightgoldenrod2"=>array(238,220,130),
  298. "lightgoldenrod3"=>array(205,190,112),
  299. "lightgoldenrod4"=>array(139,129,76),
  300. "yellow1"=>array(255,255,0),
  301. "yellow2"=>array(238,238,0),
  302. "yellow3"=>array(205,205,0),
  303. "yellow4"=>array(139,139,0),
  304. "gold1"=>array(255,215,0),
  305. "gold2"=>array(238,201,0),
  306. "gold3"=>array(205,173,0),
  307. "gold4"=>array(139,117,0),
  308. "goldenrod1"=>array(255,193,37),
  309. "goldenrod2"=>array(238,180,34),
  310. "goldenrod3"=>array(205,155,29),
  311. "goldenrod4"=>array(139,105,20),
  312. "darkgoldenrod1"=>array(255,185,15),
  313. "darkgoldenrod2"=>array(238,173,14),
  314. "darkgoldenrod3"=>array(205,149,12),
  315. "darkgoldenrod4"=>array(139,101,8),
  316. "rosybrown1"=>array(255,193,193),
  317. "rosybrown2"=>array(238,180,180),
  318. "rosybrown3"=>array(205,155,155),
  319. "rosybrown4"=>array(139,105,105),
  320. "indianred1"=>array(255,106,106),
  321. "indianred2"=>array(238,99,99),
  322. "indianred3"=>array(205,85,85),
  323. "indianred4"=>array(139,58,58),
  324. "sienna1"=>array(255,130,71),
  325. "sienna2"=>array(238,121,66),
  326. "sienna3"=>array(205,104,57),
  327. "sienna4"=>array(139,71,38),
  328. "burlywood1"=>array(255,211,155),
  329. "burlywood2"=>array(238,197,145),
  330. "burlywood3"=>array(205,170,125),
  331. "burlywood4"=>array(139,115,85),
  332. "wheat1"=>array(255,231,186),
  333. "wheat2"=>array(238,216,174),
  334. "wheat3"=>array(205,186,150),
  335. "wheat4"=>array(139,126,102),
  336. "tan1"=>array(255,165,79),
  337. "tan2"=>array(238,154,73),
  338. "tan3"=>array(205,133,63),
  339. "tan4"=>array(139,90,43),
  340. "chocolate1"=>array(255,127,36),
  341. "chocolate2"=>array(238,118,33),
  342. "chocolate3"=>array(205,102,29),
  343. "chocolate4"=>array(139,69,19),
  344. "firebrick1"=>array(255,48,48),
  345. "firebrick2"=>array(238,44,44),
  346. "firebrick3"=>array(205,38,38),
  347. "firebrick4"=>array(139,26,26),
  348. "brown1"=>array(255,64,64),
  349. "brown2"=>array(238,59,59),
  350. "brown3"=>array(205,51,51),
  351. "brown4"=>array(139,35,35),
  352. "salmon1"=>array(255,140,105),
  353. "salmon2"=>array(238,130,98),
  354. "salmon3"=>array(205,112,84),
  355. "salmon4"=>array(139,76,57),
  356. "lightsalmon1"=>array(255,160,122),
  357. "lightsalmon2"=>array(238,149,114),
  358. "lightsalmon3"=>array(205,129,98),
  359. "lightsalmon4"=>array(139,87,66),
  360. "orange1"=>array(255,165,0),
  361. "orange2"=>array(238,154,0),
  362. "orange3"=>array(205,133,0),
  363. "orange4"=>array(139,90,0),
  364. "darkorange1"=>array(255,127,0),
  365. "darkorange2"=>array(238,118,0),
  366. "darkorange3"=>array(205,102,0),
  367. "darkorange4"=>array(139,69,0),
  368. "coral1"=>array(255,114,86),
  369. "coral2"=>array(238,106,80),
  370. "coral3"=>array(205,91,69),
  371. "coral4"=>array(139,62,47),
  372. "tomato1"=>array(255,99,71),
  373. "tomato2"=>array(238,92,66),
  374. "tomato3"=>array(205,79,57),
  375. "tomato4"=>array(139,54,38),
  376. "orangered1"=>array(255,69,0),
  377. "orangered2"=>array(238,64,0),
  378. "orangered3"=>array(205,55,0),
  379. "orangered4"=>array(139,37,0),
  380. "deeppink1"=>array(255,20,147),
  381. "deeppink2"=>array(238,18,137),
  382. "deeppink3"=>array(205,16,118),
  383. "deeppink4"=>array(139,10,80),
  384. "hotpink1"=>array(255,110,180),
  385. "hotpink2"=>array(238,106,167),
  386. "hotpink3"=>array(205,96,144),
  387. "hotpink4"=>array(139,58,98),
  388. "pink1"=>array(255,181,197),
  389. "pink2"=>array(238,169,184),
  390. "pink3"=>array(205,145,158),
  391. "pink4"=>array(139,99,108),
  392. "lightpink1"=>array(255,174,185),
  393. "lightpink2"=>array(238,162,173),
  394. "lightpink3"=>array(205,140,149),
  395. "lightpink4"=>array(139,95,101),
  396. "palevioletred1"=>array(255,130,171),
  397. "palevioletred2"=>array(238,121,159),
  398. "palevioletred3"=>array(205,104,137),
  399. "palevioletred4"=>array(139,71,93),
  400. "maroon1"=>array(255,52,179),
  401. "maroon2"=>array(238,48,167),
  402. "maroon3"=>array(205,41,144),
  403. "maroon4"=>array(139,28,98),
  404. "violetred1"=>array(255,62,150),
  405. "violetred2"=>array(238,58,140),
  406. "violetred3"=>array(205,50,120),
  407. "violetred4"=>array(139,34,82),
  408. "magenta1"=>array(255,0,255),
  409. "magenta2"=>array(238,0,238),
  410. "magenta3"=>array(205,0,205),
  411. "magenta4"=>array(139,0,139),
  412. "mediumred"=>array(140,34,34),
  413. "orchid1"=>array(255,131,250),
  414. "orchid2"=>array(238,122,233),
  415. "orchid3"=>array(205,105,201),
  416. "orchid4"=>array(139,71,137),
  417. "plum1"=>array(255,187,255),
  418. "plum2"=>array(238,174,238),
  419. "plum3"=>array(205,150,205),
  420. "plum4"=>array(139,102,139),
  421. "mediumorchid1"=>array(224,102,255),
  422. "mediumorchid2"=>array(209,95,238),
  423. "mediumorchid3"=>array(180,82,205),
  424. "mediumorchid4"=>array(122,55,139),
  425. "darkorchid1"=>array(191,62,255),
  426. "darkorchid2"=>array(178,58,238),
  427. "darkorchid3"=>array(154,50,205),
  428. "darkorchid4"=>array(104,34,139),
  429. "purple1"=>array(155,48,255),
  430. "purple2"=>array(145,44,238),
  431. "purple3"=>array(125,38,205),
  432. "purple4"=>array(85,26,139),
  433. "mediumpurple1"=>array(171,130,255),
  434. "mediumpurple2"=>array(159,121,238),
  435. "mediumpurple3"=>array(137,104,205),
  436. "mediumpurple4"=>array(93,71,139),
  437. "thistle1"=>array(255,225,255),
  438. "thistle2"=>array(238,210,238),
  439. "thistle3"=>array(205,181,205),
  440. "thistle4"=>array(139,123,139),
  441. "gray1"=>array(10,10,10),
  442. "gray2"=>array(40,40,30),
  443. "gray3"=>array(70,70,70),
  444. "gray4"=>array(100,100,100),
  445. "gray5"=>array(130,130,130),
  446. "gray6"=>array(160,160,160),
  447. "gray7"=>array(190,190,190),
  448. "gray8"=>array(210,210,210),
  449. "gray9"=>array(240,240,240),
  450. "darkgray"=>array(100,100,100),
  451. "darkblue"=>array(0,0,139),
  452. "darkcyan"=>array(0,139,139),
  453. "darkmagenta"=>array(139,0,139),
  454. "darkred"=>array(139,0,0),
  455. "silver"=>array(192, 192, 192),
  456. "eggplant"=>array(144,176,168),
  457. "lightgreen"=>array(144,238,144));
  458. }
  459. //----------------
  460. // PUBLIC METHODS
  461. // Colors can be specified as either
  462. // 1. #xxxxxx HTML style
  463. // 2. "colorname" as a named color
  464. // 3. array(r,g,b) RGB triple
  465. // This function translates this to a native RGB format and returns an
  466. // RGB triple.
  467. function Color($aColor) {
  468. if (is_string($aColor)) {
  469. // Strip of any alpha factor
  470. $pos = strpos($aColor,'@');
  471. if( $pos === false ) {
  472. $alpha = 0;
  473. }
  474. else {
  475. $pos2 = strpos($aColor,':');
  476. if( $pos2===false )
  477. $pos2 = $pos-1; // Sentinel
  478. if( $pos > $pos2 ) {
  479. $alpha = str_replace(',','.',substr($aColor,$pos+1));
  480. $aColor = substr($aColor,0,$pos);
  481. }
  482. else {
  483. $alpha = substr($aColor,$pos+1,$pos2-$pos-1);
  484. $aColor = substr($aColor,0,$pos).substr($aColor,$pos2);
  485. }
  486. }
  487. // Extract potential adjustment figure at end of color
  488. // specification
  489. $pos = strpos($aColor,":");
  490. if( $pos === false ) {
  491. $adj = 1.0;
  492. }
  493. else {
  494. $adj = 0.0 + str_replace(',','.',substr($aColor,$pos+1));
  495. $aColor = substr($aColor,0,$pos);
  496. }
  497. if( $adj < 0 )
  498. JpGraphError::RaiseL(25077);//('Adjustment factor for color must be > 0');
  499. if (substr($aColor, 0, 1) == "#") {
  500. $r = hexdec(substr($aColor, 1, 2));
  501. $g = hexdec(substr($aColor, 3, 2));
  502. $b = hexdec(substr($aColor, 5, 2));
  503. } else {
  504. if(!isset($this->rgb_table[$aColor]) )
  505. JpGraphError::RaiseL(25078,$aColor);//(" Unknown color: $aColor");
  506. $tmp=$this->rgb_table[$aColor];
  507. $r = $tmp[0];
  508. $g = $tmp[1];
  509. $b = $tmp[2];
  510. }
  511. // Scale adj so that an adj=2 always
  512. // makes the color 100% white (i.e. 255,255,255.
  513. // and adj=1 neutral and adj=0 black.
  514. if( $adj > 1 ) {
  515. $m = ($adj-1.0)*(255-min(255,min($r,min($g,$b))));
  516. return array(min(255,$r+$m), min(255,$g+$m), min(255,$b+$m),$alpha);
  517. }
  518. elseif( $adj < 1 ) {
  519. $m = ($adj-1.0)*max(255,max($r,max($g,$b)));
  520. return array(max(0,$r+$m), max(0,$g+$m), max(0,$b+$m),$alpha);
  521. }
  522. else {
  523. return array($r,$g,$b,$alpha);
  524. }
  525. } elseif( is_array($aColor) ) {
  526. if( count($aColor)==3 ) {
  527. $aColor[3]=0;
  528. return $aColor;
  529. }
  530. else
  531. return $aColor;
  532. }
  533. else
  534. JpGraphError::RaiseL(25079,$aColor,count($aColor));//(" Unknown color specification: $aColor , size=".count($aColor));
  535. }
  536. // Compare two colors
  537. // return true if equal
  538. function Equal($aCol1,$aCol2) {
  539. $c1 = $this->Color($aCol1);
  540. $c2 = $this->Color($aCol2);
  541. if( $c1[0]==$c2[0] && $c1[1]==$c2[1] && $c1[2]==$c2[2] )
  542. return true;
  543. else
  544. return false;
  545. }
  546. // Allocate a new color in the current image
  547. // Return new color index, -1 if no more colors could be allocated
  548. function Allocate($aColor,$aAlpha=0.0) {
  549. list ($r, $g, $b, $a) = $this->color($aColor);
  550. // If alpha is specified in the color string then this
  551. // takes precedence over the second argument
  552. if( $a > 0 )
  553. $aAlpha = $a;
  554. if( $aAlpha < 0 || $aAlpha > 1 ) {
  555. JpGraphError::RaiseL(25080);//('Alpha parameter for color must be between 0.0 and 1.0');
  556. }
  557. return imagecolorresolvealpha($this->img, $r, $g, $b, round($aAlpha * 127));
  558. }
  559. } // Class
  560. ?>