!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\dmz\php\pear\Image\   drwxrwxrwx
Free 4.13 GB of 39.52 GB (10.45%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     Color.php (26.68 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */

/**
 * Color.php is the implementation of Image_Color.
 *
 * PHP versions 4 and 5
 *
 * This package is released under both the LGPL and PHP licenses.
 *
 *
 * This source file is subject to version 3.0 of the PHP license
 * that is available through the world-wide-web at the following URI:
 * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
 * the PHP License and are unable to obtain it through the web, please
 * send a note to license@php.net so we can mail you a copy immediately.
 *
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2.1 of the License.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 *
 * @category    Image
 * @package     Image_Color
 * @author      Jason Lotito <jason@lehighweb.com>
 * @author      Andrew Morton <drewish@katherinehouse.com>
 * @copyright   2003-2005 The PHP Group
 * @license     http://www.php.net/license/3_0.txt  PHP License 3.0
 * @version     CVS: $Id: Color.php 299528 2010-05-20 17:45:25Z drewish $
 * @link        http://pear.php.net/package/Image_Color
 */

/**
 * Image_Color handles color conversion and mixing.
 *
 * The class is quick, simple to use, and does its job fairly well but it's got
 * some code smells:
 *  - Call setColors() for some functions but not others.
 *  - Different functions expect different color formats. setColors() only
 *    accepts hex while allocateColor() will accept named or hex (provided the
 *    hex ones start with the # character).
 *  - Some conversions go in only one direction, ie HSV->RGB but no RGB->HSV.
 * I'm going to try to straighten out some of this but I'll be hard to do so
 * without breaking backwards compatibility.
 *
 * @category    Image
 * @package     Image_Color
 * @author      Jason Lotito <jason@lehighweb.com>
 * @author      Andrew Morton <drewish@katherinehouse.com>
 * @copyright   2003-2005 The PHP Group
 * @license     http://www.php.net/license/3_0.txt  PHP License 3.0
 * @version     Release: 0.1.2
 * @link        http://pear.php.net/package/Image_Color
 */
class Image_Color
{
    
/**
     * First color that the class handles for ranges and mixes.
     * @var     array
     * @access  public
     * @see     setColors()
     */
    
var $color1 = array();

    
/**
     * Second color that the class handles for ranges and mixes.
     * @var     array
     * @access  public
     * @see     setColors()
     */
    
var $color2 = array();

    
/**
     * Boolean value for determining whether colors outputted should be limited
     * to the web safe pallet or not.
     *
     * @var     boolean
     * @access  private
     * @see     setWebSafe()
     */
    
var $_websafeb false;

    
/**
     * Mix two colors together by finding their average. If the colors are not
     * passed as parameters, the class's colors will be mixed instead.
     *
     * @param   string  $col1 The first color you want to mix
     * @param   string  $col2 The second color you want to mix
     * @return  string  The mixed color.
     * @access  public
     * @author  Jason Lotito <jason@lehighweb.com>
     * @uses    _setColors() to assign the colors if any are passed to the
     *                  class.
     */
    
function mixColors($col1 false$col2 false)
    {
        if (
$col1) {
            
$this->_setColors($col1$col2);
        }

        
// after finding the average, it will be a float. add 0.5 and then
        // cast to an integer to properly round it to an integer.
        
$color3[0] = (int) ((($this->color1[0] + $this->color2[0]) / 2) + 0.5);
        
$color3[1] = (int) ((($this->color1[1] + $this->color2[1]) / 2) + 0.5);
        
$color3[2] = (int) ((($this->color1[2] + $this->color2[2]) / 2) + 0.5);

        if (
$this->_websafeb) {
            
array_walk($color3'_makeWebSafe');
        }

        return 
Image_Color::rgb2hex($color3);
    }

    
/**
     * Determines whether colors the returned by this class will be rounded to
     * the nearest web safe value.
     *
     * @param   boolean $bool Indicates if colors should be limited to the
     *          websafe pallet.
     * @return  void
     * @access  public
     * @author  Jason Lotito <jason@lehighweb.com>
     */
    
function setWebSafe($bool true)
    {
        
$this->_websafeb = (boolean) $bool;
    }

    
/**
     * Set the two colors this class uses for mixing and ranges.
     *
     * @param   string  $col1 The first color in hex format
     * @param   string  $col2 The second color in hex format
     * @return  void
     * @access  public
     * @author  Jason Lotito <jason@lehighweb.com>
     */
    
function setColors($col1$col2)
    {
        
$this->_setColors($col1$col2);
    }

    
/**
     * Get the range of colors between the class's two colors, given a degree.
     *
     * @param   integer $degrees How large a 'step' we should take between the
     *          colors.
     * @return  array   Returns an array of hex strings, one element for each
     *          color.
     * @access  public
     * @author  Jason Lotito <jason@lehighweb.com>
     * @todo    Allow for degrees for individual parts of the colors.
     */
    
function getRange($degrees 2)
    {
        if (
$degrees == 0) {
            
$degrees 1;
        }

        
// The degrees give us how much we should advance each color at each
        // phase of the loop.  This way, the advance is equal throughout all
        // the colors.

        
$red_steps   = ($this->color2[0] - $this->color1[0]) / $degrees;
        
$green_steps = ($this->color2[1] - $this->color1[1]) / $degrees;
        
$blue_steps  = ($this->color2[2] - $this->color1[2]) / $degrees;

        
$allcolors = array();

        
/**
         * The loop stops once any color has gone beyond the end color.
         */

        // Loop through all the degrees between the colors
        
for ($x 0$x $degrees$x++) {
            
$col[0] = $red_steps $x;
            
$col[1] = $green_steps $x;
            
$col[2] = $blue_steps $x;

            
// Loop through each R, G, and B
            
for ($i 0$i 3$i++) {
                
$partcolor $this->color1[$i] + $col[$i];
                
// If the color is less than 256
                
if ($partcolor 256) {
                    
// Makes sure the colors is not less than 0
                    
if ($partcolor > -1) {
                        
$newcolor[$i] = $partcolor;
                    } else {
                        
$newcolor[$i] = 0;
                    }
                
// Color was greater than 255
                
} else {
                    
$newcolor[$i] = 255;
                }
            }

            if (
$this->_websafeb) {
                
array_walk($newcolor'_makeWebSafe');
            }

            
$allcolors[] = Image_Color::rgb2hex($newcolor);
        }

        return 
$allcolors;
    }

    
/**
     * Change the lightness of the class's two colors.
     *
     * @param   integer     $degree The degree of the change. Positive values
     *          lighten the color while negative values will darken it.
     * @return  void
     * @access  public
     * @author  Jason Lotito <jason@lehighweb.com>
     * @uses    Image_Color::$color1 as an input and return value.
     * @uses    Image_Color::$color2 as an input and return value.
     */
    
function changeLightness($degree 10)
    {
        
$color1 =& $this->color1;
        
$color2 =& $this->color2;

        for (
$x 0$x 3$x++) {
            if (isset(
$color1[$x])) {
                if ((
$color1[$x] + $degree) < 256) {
                    if ((
$color1[$x] + $degree) > -1) {
                        
$color1[$x] += $degree;
                    } else {
                        
$color1[$x] = 0;
                    }
                } else {
                    
$color1[$x] = 255;
                }
            }

            if (isset(
$color2[$x])) {
                if ((
$color2[$x] + $degree) < 256) {
                    if ((
$color2[$x] + $degree) > -1) {
                        
$color2[$x] += $degree;
                    } else {
                        
$color2[$x] = 0;
                    }
                } else {
                    
$color2[$x] = 255;
                }
            }
        }
    }

    
/**
     * Determine if a light or dark text color would be more readable on a
     * background of a given color. This is determined by the G(reen) value of
     * RGB. You can change the dark and the light colors from their default
     * black and white.
     *
     * @param   string  $color The hex color to analyze
     * @param   string  $light The light color value to return if we should
     *                  have light text.
     * @param   string  $dark The dark color value to return if we should have
     *                  dark text.
     * @return  string  The light or dark value which would make the text most
     *                  readable.
     * @access  public
     * @static
     * @author  Jason Lotito <jason@lehighweb.com>
     */
    
function getTextColor($color$light '#FFFFFF'$dark '#000000')
    {
        
$color Image_Color::_splitColor($color);
        if (
$color[1] > hexdec('66')) {
            return 
$dark;
        } else {
            return 
$light;
        }
    }


    
/**
     * Internal method to set the colors.
     *
     * @param   string  $col1 First color, either a name or hex value
     * @param   string  $col2 Second color, either a name or hex value
     * @return  void
     * @access  private
     * @author  Jason Lotito <jason@lehighweb.com>
     */
    
function _setColors($col1$col2)
    {
        if (
$col1) {
            
$this->color1 Image_Color::_splitColor($col1);
        }
        if (
$col2) {
            
$this->color2 Image_Color::_splitColor($col2);
        }
    }

    
/**
     * Given a color, properly split it up into a 3 element RGB array.
     *
     * @param   string  $color The color.
     * @return  array   A three element RGB array.
     * @access  private
     * @static
     * @author  Jason Lotito <jason@lehighweb.com>
     */
    
function _splitColor($color)
    {
        
$color str_replace('#'''$color);
        
$c[] = hexdec(substr($color02));
        
$c[] = hexdec(substr($color22));
        
$c[] = hexdec(substr($color42));
        return 
$c;
    }

    
/**
     * This is deprecated. Use rgb2hex() instead.
     * @access  private
     * @deprecated Function deprecated after 1.0.1
     * @see     rgb2hex().
     */
    
function _returnColor $color )
    {
        return 
Image_Color::rgb2hex($color);
    }

    
/**
     * Convert an RGB array to a hex string.
     *
     * @param   array   $color 3 element RGB array.
     * @return  string  Hex color string.
     * @access  public
     * @static
     * @author  Jason Lotito <jason@lehighweb.com>
     * @see     hex2rgb()
     */
    
function rgb2hex($color)
    {
        return 
sprintf('%02X%02X%02X',$color[0],$color[1],$color[2]);
    }

    
/**
     * Convert a hex color string into an RGB array. An extra fourth element
     * will be returned with the original hex value.
     *
     * @param   string  $hex Hex color string.
     * @return  array   RGB color array with an extra 'hex' element containing
     *          the original hex string.
     * @access  public
     * @static
     * @author  Jason Lotito <jason@lehighweb.com>
     * @see     rgb2hex()
     */
    
function hex2rgb($hex)
    {
        
$return Image_Color::_splitColor($hex);
        
$return['hex'] = $hex;
        return 
$return;
    }

    
/**
     * Convert an HSV (Hue, Saturation, Brightness) value to RGB.
     *
     * @param   integer $h Hue
     * @param   integer $s Saturation
     * @param   integer $v Brightness
     * @return  array   RGB array.
     * @access  public
     * @static
     * @author  Jason Lotito <jason@lehighweb.com>
     * @uses    hsv2hex() to convert the HSV value to Hex.
     * @uses    hex2rgb() to convert the Hex value to RGB.
     */
    
function hsv2rgb($h$s$v)
    {
        return 
Image_Color::hex2rgb(Image_Color::hsv2hex($h$s$v));
    }

    
/**
     * Convert HSV (Hue, Saturation, Brightness) to a hex color string.
     *
     * Originally written by Jurgen Schwietering. Integrated into the class by
     * Jason Lotito.
     *
     * @param   integer $h Hue
     * @param   integer $s Saturation
     * @param   integer $v Brightness
     * @return  string  The hex string.
     * @access  public
     * @static
     * @author  Jurgen Schwietering <jurgen@schwietering.com>
     * @uses    rgb2hex() to convert the return value to a hex string.
     */
    
function hsv2hex($h$s$v)
    {
        
$s /= 256.0;
        
$v /= 256.0;
        if (
$s == 0.0) {
            
$r $g $b $v;
            return 
'';
        } else {
            
$h $h 256.0 6.0;
            
$i floor($h);
            
$f $h $i;

            
$v *= 256.0;
            
$p = (integer)($v * (1.0 $s));
            
$q = (integer)($v * (1.0 $s $f));
            
$t = (integer)($v * (1.0 $s * (1.0 $f)));
            switch(
$i) {
                case 
0:
                    
$r $v;
                    
$g $t;
                    
$b $p;
                    break;

                case 
1:
                    
$r $q;
                    
$g $v;
                    
$b $p;
                    break;

                case 
2:
                    
$r $p;
                    
$g $v;
                    
$b $t;
                    break;

                case 
3:
                    
$r $p;
                    
$g $q;
                    
$b $v;
                    break;

                case 
4:
                    
$r $t;
                    
$g $p;
                    
$b $v;
                    break;

                default:
                    
$r $v;
                    
$g $p;
                    
$b $q;
                    break;
            }
        }
        return 
Image_Color::rgb2hex(array($r$g$b));
    }

    
/**
     * Allocates a color in the given image.
     *
     * User defined color specifications get translated into an array of RGB
     * values.
     *
     * @param   resource        $img Image handle
     * @param   string|array    $color Name or hex string or an RGB array.
     * @return  resource        Image color handle.
     * @access  public
     * @static
     * @uses    ImageColorAllocate() to allocate the color.
     * @uses    color2RGB() to parse the color into RGB values.
     */
    
function allocateColor(&$img$color) {
        
$color Image_Color::color2RGB($color);

        return 
ImageColorAllocate($img$color[0], $color[1], $color[2]);
    }

    
/**
     * Convert a named or hex color string to an RGB array. If the color begins
     * with the # character it will be treated as a hex value. Everything else
     * will be treated as a named color. If the named color is not known, black
     * will be returned.
     *
     * @param   string  $color
     * @return  array   RGB color
     * @access  public
     * @static
     * @author  Laurent Laville <pear@laurent-laville.org>
     * @uses    hex2rgb() to convert colors begining with the # character.
     * @uses    namedColor2RGB() to convert everything not starting with a #.
     */
    
function color2RGB($color)
    {
        
$c = array();

        if (
$color{0} == '#') {
            
$c Image_Color::hex2rgb($color);
        } else {
            
$c Image_Color::namedColor2RGB($color);
        }

        return 
$c;
    }

    
/**
     * Convert a named color to an RGB array. If the color is unknown black
     * is returned.
     *
     * @param   string  $color Case insensitive color name.
     * @return  array   RGB color array. If the color was unknown, the result
     *          will be black.
     * @access  public
     * @static
     * @author  Sebastian Bergmann <sb@sebastian-bergmann.de>
     */
    
function namedColor2RGB($color)
    {
        static 
$colornames;

        if (!isset(
$colornames)) {
            
$colornames = array(
              
'aliceblue'             => array(240248255),
              
'antiquewhite'          => array(250235215),
              
'aqua'                  => array(  0255255),
              
'aquamarine'            => array(127255212),
              
'azure'                 => array(240255255),
              
'beige'                 => array(245245220),
              
'bisque'                => array(255228196),
              
'black'                 => array(  0,   0,   0),
              
'blanchedalmond'        => array(255235205),
              
'blue'                  => array(  0,   0255),
              
'blueviolet'            => array(138,  43226),
              
'brown'                 => array(165,  42,  42),
              
'burlywood'             => array(222184135),
              
'cadetblue'             => array( 95158160),
              
'chartreuse'            => array(127255,   0),
              
'chocolate'             => array(210105,  30),
              
'coral'                 => array(255127,  80),
              
'cornflowerblue'        => array(100149237),
              
'cornsilk'              => array(255248220),
              
'crimson'               => array(220,  20,  60),
              
'cyan'                  => array(  0255255),
              
'darkblue'              => array(  0,   0,  13),
              
'darkcyan'              => array(  0139139),
              
'darkgoldenrod'         => array(184134,  11),
              
'darkgray'              => array(169169169),
              
'darkgreen'             => array(  0100,   0),
              
'darkkhaki'             => array(189183107),
              
'darkmagenta'           => array(139,   0139),
              
'darkolivegreen'        => array( 85107,  47),
              
'darkorange'            => array(255140,   0),
              
'darkorchid'            => array(153,  50204),
              
'darkred'               => array(139,   0,   0),
              
'darksalmon'            => array(233150122),
              
'darkseagreen'          => array(143188143),
              
'darkslateblue'         => array( 72,  61139),
              
'darkslategray'         => array( 47,  79,  79),
              
'darkturquoise'         => array(  0206209),
              
'darkviolet'            => array(148,   0211),
              
'deeppink'              => array(255,  20147),
              
'deepskyblue'           => array(  0191255),
              
'dimgray'               => array(105105105),
              
'dodgerblue'            => array( 30144255),
              
'firebrick'             => array(178,  34,  34),
              
'floralwhite'           => array(255250240),
              
'forestgreen'           => array( 34139,  34),
              
'fuchsia'               => array(255,   0255),
              
'gainsboro'             => array(220220220),
              
'ghostwhite'            => array(248248255),
              
'gold'                  => array(255215,   0),
              
'goldenrod'             => array(218165,  32),
              
'gray'                  => array(128128128),
              
'green'                 => array(  0128,   0),
              
'greenyellow'           => array(173255,  47),
              
'honeydew'              => array(240255240),
              
'hotpink'               => array(255105180),
              
'indianred'             => array(205,  92,  92),
              
'indigo'                => array(75,    0130),
              
'ivory'                 => array(255255240),
              
'khaki'                 => array(240230140),
              
'lavender'              => array(230230250),
              
'lavenderblush'         => array(255240245),
              
'lawngreen'             => array(124252,   0),
              
'lemonchiffon'          => array(255250205),
              
'lightblue'             => array(173216230),
              
'lightcoral'            => array(240128128),
              
'lightcyan'             => array(224255255),
              
'lightgoldenrodyellow'  => array(250250210),
              
'lightgreen'            => array(144238144),
              
'lightgrey'             => array(211211211),
              
'lightpink'             => array(255182193),
              
'lightsalmon'           => array(255160122),
              
'lightseagreen'         => array( 32178170),
              
'lightskyblue'          => array(135206250),
              
'lightslategray'        => array(119136153),
              
'lightsteelblue'        => array(176196222),
              
'lightyellow'           => array(255255224),
              
'lime'                  => array(  0255,   0),
              
'limegreen'             => array( 50205,  50),
              
'linen'                 => array(250240230),
              
'magenta'               => array(255,   0255),
              
'maroon'                => array(128,   0,   0),
              
'mediumaquamarine'      => array(102205170),
              
'mediumblue'            => array(  0,   0205),
              
'mediumorchid'          => array(186,  85211),
              
'mediumpurple'          => array(147112219),
              
'mediumseagreen'        => array( 60179113),
              
'mediumslateblue'       => array(123104238),
              
'mediumspringgreen'     => array(  0250154),
              
'mediumturquoise'       => array(72209204),
              
'mediumvioletred'       => array(199,  21133),
              
'midnightblue'          => array( 25,  25112),
              
'mintcream'             => array(245255250),
              
'mistyrose'             => array(255228225),
              
'moccasin'              => array(255228181),
              
'navajowhite'           => array(255222173),
              
'navy'                  => array(  0,   0128),
              
'oldlace'               => array(253245230),
              
'olive'                 => array(128128,   0),
              
'olivedrab'             => array(107142,  35),
              
'orange'                => array(255165,   0),
              
'orangered'             => array(255,  69,   0),
              
'orchid'                => array(218112214),
              
'palegoldenrod'         => array(238232170),
              
'palegreen'             => array(152251152),
              
'paleturquoise'         => array(175238238),
              
'palevioletred'         => array(219112147),
              
'papayawhip'            => array(255239213),
              
'peachpuff'             => array(255218185),
              
'peru'                  => array(205133,  63),
              
'pink'                  => array(255192203),
              
'plum'                  => array(221160221),
              
'powderblue'            => array(176224230),
              
'purple'                => array(128,   0128),
              
'red'                   => array(255,   0,   0),
              
'rosybrown'             => array(188143143),
              
'royalblue'             => array( 65105225),
              
'saddlebrown'           => array(139,  69,  19),
              
'salmon'                => array(250128114),
              
'sandybrown'            => array(244164,  96),
              
'seagreen'              => array( 46139,  87),
              
'seashell'              => array(255245238),
              
'sienna'                => array(160,  82,  45),
              
'silver'                => array(192192192),
              
'skyblue'               => array(135206235),
              
'slateblue'             => array(106,  90205),
              
'slategray'             => array(112128144),
              
'snow'                  => array(255250250),
              
'springgreen'           => array(  0255127),
              
'steelblue'             => array( 70130180),
              
'tan'                   => array(210180140),
              
'teal'                  => array(  0128128),
              
'thistle'               => array(216191216),
              
'tomato'                => array(255,  99,  71),
              
'turquoise'             => array( 64224208),
              
'violet'                => array(238130238),
              
'wheat'                 => array(245222179),
              
'white'                 => array(255255255),
              
'whitesmoke'            => array(245245245),
              
'yellow'                => array(255255,   0),
              
'yellowgreen'           => array(154205,  50)
            );
        }

        
$color strtolower($color);

        if (isset(
$colornames[$color])) {
            return 
$colornames[$color];
        } else {
            return array(
000);
        }
    }

    
/**
     * Convert an RGB percentage string into an RGB array.
     *
     * @param   string  $color Percentage color string like "50%,20%,100%".
     * @return  array   RGB color array.
     * @access  public
     * @static
     */
    
function percentageColor2RGB($color)
    {
        
// remove spaces
        
$color str_replace(' '''$color);
        
// remove the percent signs
        
$color str_replace('%'''$color);
        
// split the string by commas
        
$color explode(','$color);

        
$ret = array();
        foreach (
$color as $k => $v) {
            
// range checks
            
if ($v <= 0) {
                
$ret[$k] = 0;
            } else if (
$v <= 100) {
                
// add 0.5 then cast to an integer to round the value.
                
$ret[$k] = (integer) ((2.55 $v) + 0.5);
            } else {
                
$ret[$k] = 255;
            }
        }

        return 
$ret;
    }
}

// For Array Walk
// {{{
/**
 * Function for array_walk() to round colors to the closest web safe value.
 *
 * @param   integer $color One channel of an RGB color.
 * @return  integer The websafe equivalent of the color channel.
 * @author  Jason Lotito <jason@lehighweb.com>
 * @author  Andrew Morton <drewish@katherinehouse.com>
 * @access  private
 * @static
 */
function _makeWebSafe(&$color)
{
    if (
$color 0x1a) {
        
$color 0x00;
    } else if (
$color 0x4d) {
        
$color 0x33;
    } else if (
$color 0x80) {
        
$color 0x66;
    } else if (
$color 0xB3) {
        
$color 0x99;
    } else if (
$color 0xE6) {
        
$color 0xCC;
    } else {
        
$color 0xFF;
    }
    return 
$color;
}
// }}}

?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0312 ]--