/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
- <?php
- //=======================================================================
- // File: JPGRAPH_RGB.INC.PHP
- // Description: Class to handle RGb color space specification and
- // named colors
- // Created: 2001-01-08 (Refactored to separate file 2008-08-01)
- // Ver: $Id: jpgraph_rgb.inc.php 1049 2008-08-01 19:58:07Z ljp $
- //
- // Copyright (c) Aditus Consulting. All rights reserved.
- //========================================================================
- //===================================================
- // CLASS RGB
- // Description: Color definitions as RGB triples
- //===================================================
- class RGB {
- public $rgb_table;
- public $img;
- function RGB($aImg=null) {
- $this->img = $aImg;
-
- // Conversion array between color names and RGB
- $this->rgb_table = array(
- "aqua"=> array(0,255,255),
- "lime"=> array(0,255,0),
- "teal"=> array(0,128,128),
- "whitesmoke"=>array(245,245,245),
- "gainsboro"=>array(220,220,220),
- "oldlace"=>array(253,245,230),
- "linen"=>array(250,240,230),
- "antiquewhite"=>array(250,235,215),
- "papayawhip"=>array(255,239,213),
- "blanchedalmond"=>array(255,235,205),
- "bisque"=>array(255,228,196),
- "peachpuff"=>array(255,218,185),
- "navajowhite"=>array(255,222,173),
- "moccasin"=>array(255,228,181),
- "cornsilk"=>array(255,248,220),
- "ivory"=>array(255,255,240),
- "lemonchiffon"=>array(255,250,205),
- "seashell"=>array(255,245,238),
- "mintcream"=>array(245,255,250),
- "azure"=>array(240,255,255),
- "aliceblue"=>array(240,248,255),
- "lavender"=>array(230,230,250),
- "lavenderblush"=>array(255,240,245),
- "mistyrose"=>array(255,228,225),
- "white"=>array(255,255,255),
- "black"=>array(0,0,0),
- "darkslategray"=>array(47,79,79),
- "dimgray"=>array(105,105,105),
- "slategray"=>array(112,128,144),
- "lightslategray"=>array(119,136,153),
- "gray"=>array(190,190,190),
- "lightgray"=>array(211,211,211),
- "midnightblue"=>array(25,25,112),
- "navy"=>array(0,0,128),
- "cornflowerblue"=>array(100,149,237),
- "darkslateblue"=>array(72,61,139),
- "slateblue"=>array(106,90,205),
- "mediumslateblue"=>array(123,104,238),
- "lightslateblue"=>array(132,112,255),
- "mediumblue"=>array(0,0,205),
- "royalblue"=>array(65,105,225),
- "blue"=>array(0,0,255),
- "dodgerblue"=>array(30,144,255),
- "deepskyblue"=>array(0,191,255),
- "skyblue"=>array(135,206,235),
- "lightskyblue"=>array(135,206,250),
- "steelblue"=>array(70,130,180),
- "lightred"=>array(211,167,168),
- "lightsteelblue"=>array(176,196,222),
- "lightblue"=>array(173,216,230),
- "powderblue"=>array(176,224,230),
- "paleturquoise"=>array(175,238,238),
- "darkturquoise"=>array(0,206,209),
- "mediumturquoise"=>array(72,209,204),
- "turquoise"=>array(64,224,208),
- "cyan"=>array(0,255,255),
- "lightcyan"=>array(224,255,255),
- "cadetblue"=>array(95,158,160),
- "mediumaquamarine"=>array(102,205,170),
- "aquamarine"=>array(127,255,212),
- "darkgreen"=>array(0,100,0),
- "darkolivegreen"=>array(85,107,47),
- "darkseagreen"=>array(143,188,143),
- "seagreen"=>array(46,139,87),
- "mediumseagreen"=>array(60,179,113),
- "lightseagreen"=>array(32,178,170),
- "palegreen"=>array(152,251,152),
- "springgreen"=>array(0,255,127),
- "lawngreen"=>array(124,252,0),
- "green"=>array(0,255,0),
- "chartreuse"=>array(127,255,0),
- "mediumspringgreen"=>array(0,250,154),
- "greenyellow"=>array(173,255,47),
- "limegreen"=>array(50,205,50),
- "yellowgreen"=>array(154,205,50),
- "forestgreen"=>array(34,139,34),
- "olivedrab"=>array(107,142,35),
- "darkkhaki"=>array(189,183,107),
- "khaki"=>array(240,230,140),
- "palegoldenrod"=>array(238,232,170),
- "lightgoldenrodyellow"=>array(250,250,210),
- "lightyellow"=>array(255,255,200),
- "yellow"=>array(255,255,0),
- "gold"=>array(255,215,0),
- "lightgoldenrod"=>array(238,221,130),
- "goldenrod"=>array(218,165,32),
- "darkgoldenrod"=>array(184,134,11),
- "rosybrown"=>array(188,143,143),
- "indianred"=>array(205,92,92),
- "saddlebrown"=>array(139,69,19),
- "sienna"=>array(160,82,45),
- "peru"=>array(205,133,63),
- "burlywood"=>array(222,184,135),
- "beige"=>array(245,245,220),
- "wheat"=>array(245,222,179),
- "sandybrown"=>array(244,164,96),
- "tan"=>array(210,180,140),
- "chocolate"=>array(210,105,30),
- "firebrick"=>array(178,34,34),
- "brown"=>array(165,42,42),
- "darksalmon"=>array(233,150,122),
- "salmon"=>array(250,128,114),
- "lightsalmon"=>array(255,160,122),
- "orange"=>array(255,165,0),
- "darkorange"=>array(255,140,0),
- "coral"=>array(255,127,80),
- "lightcoral"=>array(240,128,128),
- "tomato"=>array(255,99,71),
- "orangered"=>array(255,69,0),
- "red"=>array(255,0,0),
- "hotpink"=>array(255,105,180),
- "deeppink"=>array(255,20,147),
- "pink"=>array(255,192,203),
- "lightpink"=>array(255,182,193),
- "palevioletred"=>array(219,112,147),
- "maroon"=>array(176,48,96),
- "mediumvioletred"=>array(199,21,133),
- "violetred"=>array(208,32,144),
- "magenta"=>array(255,0,255),
- "violet"=>array(238,130,238),
- "plum"=>array(221,160,221),
- "orchid"=>array(218,112,214),
- "mediumorchid"=>array(186,85,211),
- "darkorchid"=>array(153,50,204),
- "darkviolet"=>array(148,0,211),
- "blueviolet"=>array(138,43,226),
- "purple"=>array(160,32,240),
- "mediumpurple"=>array(147,112,219),
- "thistle"=>array(216,191,216),
- "snow1"=>array(255,250,250),
- "snow2"=>array(238,233,233),
- "snow3"=>array(205,201,201),
- "snow4"=>array(139,137,137),
- "seashell1"=>array(255,245,238),
- "seashell2"=>array(238,229,222),
- "seashell3"=>array(205,197,191),
- "seashell4"=>array(139,134,130),
- "AntiqueWhite1"=>array(255,239,219),
- "AntiqueWhite2"=>array(238,223,204),
- "AntiqueWhite3"=>array(205,192,176),
- "AntiqueWhite4"=>array(139,131,120),
- "bisque1"=>array(255,228,196),
- "bisque2"=>array(238,213,183),
- "bisque3"=>array(205,183,158),
- "bisque4"=>array(139,125,107),
- "peachPuff1"=>array(255,218,185),
- "peachpuff2"=>array(238,203,173),
- "peachpuff3"=>array(205,175,149),
- "peachpuff4"=>array(139,119,101),
- "navajowhite1"=>array(255,222,173),
- "navajowhite2"=>array(238,207,161),
- "navajowhite3"=>array(205,179,139),
- "navajowhite4"=>array(139,121,94),
- "lemonchiffon1"=>array(255,250,205),
- "lemonchiffon2"=>array(238,233,191),
- "lemonchiffon3"=>array(205,201,165),
- "lemonchiffon4"=>array(139,137,112),
- "ivory1"=>array(255,255,240),
- "ivory2"=>array(238,238,224),
- "ivory3"=>array(205,205,193),
- "ivory4"=>array(139,139,131),
- "honeydew"=>array(193,205,193),
- "lavenderblush1"=>array(255,240,245),
- "lavenderblush2"=>array(238,224,229),
- "lavenderblush3"=>array(205,193,197),
- "lavenderblush4"=>array(139,131,134),
- "mistyrose1"=>array(255,228,225),
- "mistyrose2"=>array(238,213,210),
- "mistyrose3"=>array(205,183,181),
- "mistyrose4"=>array(139,125,123),
- "azure1"=>array(240,255,255),
- "azure2"=>array(224,238,238),
- "azure3"=>array(193,205,205),
- "azure4"=>array(131,139,139),
- "slateblue1"=>array(131,111,255),
- "slateblue2"=>array(122,103,238),
- "slateblue3"=>array(105,89,205),
- "slateblue4"=>array(71,60,139),
- "royalblue1"=>array(72,118,255),
- "royalblue2"=>array(67,110,238),
- "royalblue3"=>array(58,95,205),
- "royalblue4"=>array(39,64,139),
- "dodgerblue1"=>array(30,144,255),
- "dodgerblue2"=>array(28,134,238),
- "dodgerblue3"=>array(24,116,205),
- "dodgerblue4"=>array(16,78,139),
- "steelblue1"=>array(99,184,255),
- "steelblue2"=>array(92,172,238),
- "steelblue3"=>array(79,148,205),
- "steelblue4"=>array(54,100,139),
- "deepskyblue1"=>array(0,191,255),
- "deepskyblue2"=>array(0,178,238),
- "deepskyblue3"=>array(0,154,205),
- "deepskyblue4"=>array(0,104,139),
- "skyblue1"=>array(135,206,255),
- "skyblue2"=>array(126,192,238),
- "skyblue3"=>array(108,166,205),
- "skyblue4"=>array(74,112,139),
- "lightskyblue1"=>array(176,226,255),
- "lightskyblue2"=>array(164,211,238),
- "lightskyblue3"=>array(141,182,205),
- "lightskyblue4"=>array(96,123,139),
- "slategray1"=>array(198,226,255),
- "slategray2"=>array(185,211,238),
- "slategray3"=>array(159,182,205),
- "slategray4"=>array(108,123,139),
- "lightsteelblue1"=>array(202,225,255),
- "lightsteelblue2"=>array(188,210,238),
- "lightsteelblue3"=>array(162,181,205),
- "lightsteelblue4"=>array(110,123,139),
- "lightblue1"=>array(191,239,255),
- "lightblue2"=>array(178,223,238),
- "lightblue3"=>array(154,192,205),
- "lightblue4"=>array(104,131,139),
- "lightcyan1"=>array(224,255,255),
- "lightcyan2"=>array(209,238,238),
- "lightcyan3"=>array(180,205,205),
- "lightcyan4"=>array(122,139,139),
- "paleturquoise1"=>array(187,255,255),
- "paleturquoise2"=>array(174,238,238),
- "paleturquoise3"=>array(150,205,205),
- "paleturquoise4"=>array(102,139,139),
- "cadetblue1"=>array(152,245,255),
- "cadetblue2"=>array(142,229,238),
- "cadetblue3"=>array(122,197,205),
- "cadetblue4"=>array(83,134,139),
- "turquoise1"=>array(0,245,255),
- "turquoise2"=>array(0,229,238),
- "turquoise3"=>array(0,197,205),
- "turquoise4"=>array(0,134,139),
- "cyan1"=>array(0,255,255),
- "cyan2"=>array(0,238,238),
- "cyan3"=>array(0,205,205),
- "cyan4"=>array(0,139,139),
- "darkslategray1"=>array(151,255,255),
- "darkslategray2"=>array(141,238,238),
- "darkslategray3"=>array(121,205,205),
- "darkslategray4"=>array(82,139,139),
- "aquamarine1"=>array(127,255,212),
- "aquamarine2"=>array(118,238,198),
- "aquamarine3"=>array(102,205,170),
- "aquamarine4"=>array(69,139,116),
- "darkseagreen1"=>array(193,255,193),
- "darkseagreen2"=>array(180,238,180),
- "darkseagreen3"=>array(155,205,155),
- "darkseagreen4"=>array(105,139,105),
- "seagreen1"=>array(84,255,159),
- "seagreen2"=>array(78,238,148),
- "seagreen3"=>array(67,205,128),
- "seagreen4"=>array(46,139,87),
- "palegreen1"=>array(154,255,154),
- "palegreen2"=>array(144,238,144),
- "palegreen3"=>array(124,205,124),
- "palegreen4"=>array(84,139,84),
- "springgreen1"=>array(0,255,127),
- "springgreen2"=>array(0,238,118),
- "springgreen3"=>array(0,205,102),
- "springgreen4"=>array(0,139,69),
- "chartreuse1"=>array(127,255,0),
- "chartreuse2"=>array(118,238,0),
- "chartreuse3"=>array(102,205,0),
- "chartreuse4"=>array(69,139,0),
- "olivedrab1"=>array(192,255,62),
- "olivedrab2"=>array(179,238,58),
- "olivedrab3"=>array(154,205,50),
- "olivedrab4"=>array(105,139,34),
- "darkolivegreen1"=>array(202,255,112),
- "darkolivegreen2"=>array(188,238,104),
- "darkolivegreen3"=>array(162,205,90),
- "darkolivegreen4"=>array(110,139,61),
- "khaki1"=>array(255,246,143),
- "khaki2"=>array(238,230,133),
- "khaki3"=>array(205,198,115),
- "khaki4"=>array(139,134,78),
- "lightgoldenrod1"=>array(255,236,139),
- "lightgoldenrod2"=>array(238,220,130),
- "lightgoldenrod3"=>array(205,190,112),
- "lightgoldenrod4"=>array(139,129,76),
- "yellow1"=>array(255,255,0),
- "yellow2"=>array(238,238,0),
- "yellow3"=>array(205,205,0),
- "yellow4"=>array(139,139,0),
- "gold1"=>array(255,215,0),
- "gold2"=>array(238,201,0),
- "gold3"=>array(205,173,0),
- "gold4"=>array(139,117,0),
- "goldenrod1"=>array(255,193,37),
- "goldenrod2"=>array(238,180,34),
- "goldenrod3"=>array(205,155,29),
- "goldenrod4"=>array(139,105,20),
- "darkgoldenrod1"=>array(255,185,15),
- "darkgoldenrod2"=>array(238,173,14),
- "darkgoldenrod3"=>array(205,149,12),
- "darkgoldenrod4"=>array(139,101,8),
- "rosybrown1"=>array(255,193,193),
- "rosybrown2"=>array(238,180,180),
- "rosybrown3"=>array(205,155,155),
- "rosybrown4"=>array(139,105,105),
- "indianred1"=>array(255,106,106),
- "indianred2"=>array(238,99,99),
- "indianred3"=>array(205,85,85),
- "indianred4"=>array(139,58,58),
- "sienna1"=>array(255,130,71),
- "sienna2"=>array(238,121,66),
- "sienna3"=>array(205,104,57),
- "sienna4"=>array(139,71,38),
- "burlywood1"=>array(255,211,155),
- "burlywood2"=>array(238,197,145),
- "burlywood3"=>array(205,170,125),
- "burlywood4"=>array(139,115,85),
- "wheat1"=>array(255,231,186),
- "wheat2"=>array(238,216,174),
- "wheat3"=>array(205,186,150),
- "wheat4"=>array(139,126,102),
- "tan1"=>array(255,165,79),
- "tan2"=>array(238,154,73),
- "tan3"=>array(205,133,63),
- "tan4"=>array(139,90,43),
- "chocolate1"=>array(255,127,36),
- "chocolate2"=>array(238,118,33),
- "chocolate3"=>array(205,102,29),
- "chocolate4"=>array(139,69,19),
- "firebrick1"=>array(255,48,48),
- "firebrick2"=>array(238,44,44),
- "firebrick3"=>array(205,38,38),
- "firebrick4"=>array(139,26,26),
- "brown1"=>array(255,64,64),
- "brown2"=>array(238,59,59),
- "brown3"=>array(205,51,51),
- "brown4"=>array(139,35,35),
- "salmon1"=>array(255,140,105),
- "salmon2"=>array(238,130,98),
- "salmon3"=>array(205,112,84),
- "salmon4"=>array(139,76,57),
- "lightsalmon1"=>array(255,160,122),
- "lightsalmon2"=>array(238,149,114),
- "lightsalmon3"=>array(205,129,98),
- "lightsalmon4"=>array(139,87,66),
- "orange1"=>array(255,165,0),
- "orange2"=>array(238,154,0),
- "orange3"=>array(205,133,0),
- "orange4"=>array(139,90,0),
- "darkorange1"=>array(255,127,0),
- "darkorange2"=>array(238,118,0),
- "darkorange3"=>array(205,102,0),
- "darkorange4"=>array(139,69,0),
- "coral1"=>array(255,114,86),
- "coral2"=>array(238,106,80),
- "coral3"=>array(205,91,69),
- "coral4"=>array(139,62,47),
- "tomato1"=>array(255,99,71),
- "tomato2"=>array(238,92,66),
- "tomato3"=>array(205,79,57),
- "tomato4"=>array(139,54,38),
- "orangered1"=>array(255,69,0),
- "orangered2"=>array(238,64,0),
- "orangered3"=>array(205,55,0),
- "orangered4"=>array(139,37,0),
- "deeppink1"=>array(255,20,147),
- "deeppink2"=>array(238,18,137),
- "deeppink3"=>array(205,16,118),
- "deeppink4"=>array(139,10,80),
- "hotpink1"=>array(255,110,180),
- "hotpink2"=>array(238,106,167),
- "hotpink3"=>array(205,96,144),
- "hotpink4"=>array(139,58,98),
- "pink1"=>array(255,181,197),
- "pink2"=>array(238,169,184),
- "pink3"=>array(205,145,158),
- "pink4"=>array(139,99,108),
- "lightpink1"=>array(255,174,185),
- "lightpink2"=>array(238,162,173),
- "lightpink3"=>array(205,140,149),
- "lightpink4"=>array(139,95,101),
- "palevioletred1"=>array(255,130,171),
- "palevioletred2"=>array(238,121,159),
- "palevioletred3"=>array(205,104,137),
- "palevioletred4"=>array(139,71,93),
- "maroon1"=>array(255,52,179),
- "maroon2"=>array(238,48,167),
- "maroon3"=>array(205,41,144),
- "maroon4"=>array(139,28,98),
- "violetred1"=>array(255,62,150),
- "violetred2"=>array(238,58,140),
- "violetred3"=>array(205,50,120),
- "violetred4"=>array(139,34,82),
- "magenta1"=>array(255,0,255),
- "magenta2"=>array(238,0,238),
- "magenta3"=>array(205,0,205),
- "magenta4"=>array(139,0,139),
- "mediumred"=>array(140,34,34),
- "orchid1"=>array(255,131,250),
- "orchid2"=>array(238,122,233),
- "orchid3"=>array(205,105,201),
- "orchid4"=>array(139,71,137),
- "plum1"=>array(255,187,255),
- "plum2"=>array(238,174,238),
- "plum3"=>array(205,150,205),
- "plum4"=>array(139,102,139),
- "mediumorchid1"=>array(224,102,255),
- "mediumorchid2"=>array(209,95,238),
- "mediumorchid3"=>array(180,82,205),
- "mediumorchid4"=>array(122,55,139),
- "darkorchid1"=>array(191,62,255),
- "darkorchid2"=>array(178,58,238),
- "darkorchid3"=>array(154,50,205),
- "darkorchid4"=>array(104,34,139),
- "purple1"=>array(155,48,255),
- "purple2"=>array(145,44,238),
- "purple3"=>array(125,38,205),
- "purple4"=>array(85,26,139),
- "mediumpurple1"=>array(171,130,255),
- "mediumpurple2"=>array(159,121,238),
- "mediumpurple3"=>array(137,104,205),
- "mediumpurple4"=>array(93,71,139),
- "thistle1"=>array(255,225,255),
- "thistle2"=>array(238,210,238),
- "thistle3"=>array(205,181,205),
- "thistle4"=>array(139,123,139),
- "gray1"=>array(10,10,10),
- "gray2"=>array(40,40,30),
- "gray3"=>array(70,70,70),
- "gray4"=>array(100,100,100),
- "gray5"=>array(130,130,130),
- "gray6"=>array(160,160,160),
- "gray7"=>array(190,190,190),
- "gray8"=>array(210,210,210),
- "gray9"=>array(240,240,240),
- "darkgray"=>array(100,100,100),
- "darkblue"=>array(0,0,139),
- "darkcyan"=>array(0,139,139),
- "darkmagenta"=>array(139,0,139),
- "darkred"=>array(139,0,0),
- "silver"=>array(192, 192, 192),
- "eggplant"=>array(144,176,168),
- "lightgreen"=>array(144,238,144));
- }
- //----------------
- // PUBLIC METHODS
- // Colors can be specified as either
- // 1. #xxxxxx HTML style
- // 2. "colorname" as a named color
- // 3. array(r,g,b) RGB triple
- // This function translates this to a native RGB format and returns an
- // RGB triple.
- function Color($aColor) {
- if (is_string($aColor)) {
- // Strip of any alpha factor
- $pos = strpos($aColor,'@');
- if( $pos === false ) {
- $alpha = 0;
- }
- else {
- $pos2 = strpos($aColor,':');
- if( $pos2===false )
- $pos2 = $pos-1; // Sentinel
- if( $pos > $pos2 ) {
- $alpha = str_replace(',','.',substr($aColor,$pos+1));
- $aColor = substr($aColor,0,$pos);
- }
- else {
- $alpha = substr($aColor,$pos+1,$pos2-$pos-1);
- $aColor = substr($aColor,0,$pos).substr($aColor,$pos2);
- }
- }
- // Extract potential adjustment figure at end of color
- // specification
- $pos = strpos($aColor,":");
- if( $pos === false ) {
- $adj = 1.0;
- }
- else {
- $adj = 0.0 + str_replace(',','.',substr($aColor,$pos+1));
- $aColor = substr($aColor,0,$pos);
- }
- if( $adj < 0 )
- JpGraphError::RaiseL(25077);//('Adjustment factor for color must be > 0');
- if (substr($aColor, 0, 1) == "#") {
- $r = hexdec(substr($aColor, 1, 2));
- $g = hexdec(substr($aColor, 3, 2));
- $b = hexdec(substr($aColor, 5, 2));
- } else {
- if(!isset($this->rgb_table[$aColor]) )
- JpGraphError::RaiseL(25078,$aColor);//(" Unknown color: $aColor");
- $tmp=$this->rgb_table[$aColor];
- $r = $tmp[0];
- $g = $tmp[1];
- $b = $tmp[2];
- }
- // Scale adj so that an adj=2 always
- // makes the color 100% white (i.e. 255,255,255.
- // and adj=1 neutral and adj=0 black.
- if( $adj > 1 ) {
- $m = ($adj-1.0)*(255-min(255,min($r,min($g,$b))));
- return array(min(255,$r+$m), min(255,$g+$m), min(255,$b+$m),$alpha);
- }
- elseif( $adj < 1 ) {
- $m = ($adj-1.0)*max(255,max($r,max($g,$b)));
- return array(max(0,$r+$m), max(0,$g+$m), max(0,$b+$m),$alpha);
- }
- else {
- return array($r,$g,$b,$alpha);
- }
- } elseif( is_array($aColor) ) {
- if( count($aColor)==3 ) {
- $aColor[3]=0;
- return $aColor;
- }
- else
- return $aColor;
- }
- else
- JpGraphError::RaiseL(25079,$aColor,count($aColor));//(" Unknown color specification: $aColor , size=".count($aColor));
- }
-
- // Compare two colors
- // return true if equal
- function Equal($aCol1,$aCol2) {
- $c1 = $this->Color($aCol1);
- $c2 = $this->Color($aCol2);
- if( $c1[0]==$c2[0] && $c1[1]==$c2[1] && $c1[2]==$c2[2] )
- return true;
- else
- return false;
- }
-
- // Allocate a new color in the current image
- // Return new color index, -1 if no more colors could be allocated
- function Allocate($aColor,$aAlpha=0.0) {
- list ($r, $g, $b, $a) = $this->color($aColor);
- // If alpha is specified in the color string then this
- // takes precedence over the second argument
- if( $a > 0 )
- $aAlpha = $a;
- if( $aAlpha < 0 || $aAlpha > 1 ) {
- JpGraphError::RaiseL(25080);//('Alpha parameter for color must be between 0.0 and 1.0');
- }
- return imagecolorresolvealpha($this->img, $r, $g, $b, round($aAlpha * 127));
- }
- } // Class
- ?>