⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 panachart.php

📁 this the oscommerce 3.0 aplha 4
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?php/*    PanaChart - PHP Chart Generator -  October 2003    Copyright (C) 2003 Eugen Fernea - eugenf@panacode.com    Panacode Software - info@panacode.com    http://www.panacode.com/    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;    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, write to the Free Software    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.*/define('HORIZONTAL', 0);define('VERTICAL', 1);define('SOLID', 0);define('DASHED', 1);define('DOTTED', 2);define('MEDIUM_SOLID', 3);define('MEDIUM_DASHED', 4);define('MEDIUM_DOTTED', 5);define('LARGE_SOLID', 6);define('LARGE_DASHED', 7);define('LARGE_DOTTED', 8);class series{        var $m_values, $m_seriesTitle, $m_strokeColor, $m_fillColor;        var $m_chart, $m_type;        function series(&$chart, $chartType, &$values, $title, $style, $strokeColor, $fillColor){                $this->m_chart = &$chart;                $this->m_type = $chartType;                $this->m_style = (int)$style;                $this->m_seriesTitle = $title;                $this->m_values = &$values;                $vStrokeColor = _decode_color($strokeColor);                $vFillColor= _decode_color($fillColor);                $this->m_strokeColor = imagecolorallocate ($this->m_chart->m_image, $vStrokeColor[0], $vStrokeColor[1], $vStrokeColor[2]);                $this->m_fillColor = imagecolorallocate ($this->m_chart->m_image, $vFillColor[0], $vFillColor[1], $vFillColor[2]);        }}class chart{        var $m_title, $m_width, $m_height;        var $m_strokeColor, $m_backgroundColor, $m_fillColor, $m_fontColor, $m_fontWidth, $m_fontHeight;        var $m_maxFontWidth, $m_maxFontHeight;        var $m_minValue, $m_maxValue;        var $m_minCount, $m_maxCount;        var $m_image, $m_series;        var $m_labels, $m_labelsTextColor, $m_labelsFont, $m_labelsFontWidth , $m_labelsFontHeight, $m_labelsDirection;        var $m_gridHColor, $m_gridVColor, $m_showHGrid, $m_showVGrid, $m_showXAxis, $m_showYAxis;        var $m_numberOfDecimals, $m_thousandsSeparator, $m_decimalSeparator;        var $m_style;        var $m_withLegend, $m_legendStyle, $m_legendStroke, $m_legendFill, $m_legendFont;        // Chart constructor        function chart($width, $height, $margin, $backgroundColor){                $this->m_title = "";                $this->m_width = $width;                $this->m_height = $height;                $this->m_image = imagecreate ($this->m_width, $this->m_height);                $this->m_margin = $margin;                $vBackColor = _decode_color($backgroundColor);                $this->m_backgroundColor = imagecolorallocate ($this->m_image, $vBackColor[0], $vBackColor[1], $vBackColor[2]);                $this->m_minValue = false;                $this->m_maxValue = 0;                $this->m_style = SOLID;                $this->m_strokeColor = $this->m_backgroundColor;                $this->m_fillColor = $this->m_backgroundColor;                $this->m_showHGrid = false;                $this->m_showVGrid = false;                $this->m_numberOfDecimals = 0;                $this->m_thousandsSeparator = ',';                $this->m_decimalSeparator = '.';                $this->m_withLegend = false;        }        // Set number display format        function setFormat($numberOfDecimals, $thousandsSeparator, $decimalSeparator){                $this->m_numberOfDecimals = $numberOfDecimals;                $this->m_thousandsSeparator = $thousandsSeparator;                $this->m_decimalSeparator = $decimalSeparator;        }        function setLegend($position, $borderStyle, $borderColor, $fillColor, $font){                //$this->m_legendPosition                $this->m_legendStyle = $style;                $vStrokeColor = _decode_color($strokeColor);                $this->m_legendStroke = imagecolorallocate ($this->m_image, $vStrokeColor[0], $vStrokeColor[1], $vStrokeColor[2]);                $vFillColor= _decode_color($fillColor);                $this->m_legendFill = imagecolorallocate ($this->m_image, $vFillColor[0], $vFillColor[1], $vFillColor[2]);                $this->m_legendFont = $font;                $this->m_withLegend = true;        }        function setTitle($title, $textColor, $font){                $this->m_title = $title;                $vTextColor= _decode_color($textColor);                $this->m_textColor = imagecolorallocate ($this->m_image, $vTextColor[0], $vTextColor[1], $vTextColor[2]);                $this->m_font = $font;                $this->m_fontWidth = imagefontwidth($font);                $this->m_fontHeight = imagefontheight($font);        }        function setPlotArea($style, $strokeColor, $fillColor){                $this->m_style = $style;                if($strokeColor){                        $vStrokeColor = _decode_color($strokeColor);                        $this->m_strokeColor = imagecolorallocate ($this->m_image, $vStrokeColor[0], $vStrokeColor[1], $vStrokeColor[2]);                }                if($fillColor){                        $vFillColor= _decode_color($fillColor);                        $this->m_fillColor = imagecolorallocate ($this->m_image, $vFillColor[0], $vFillColor[1], $vFillColor[2]);                }        }        function setXAxis($color, $style, $font, $title){                if(strlen($color) > 0){                        $this->m_showXAxis = true;                        $vColor = _decode_color($color);                        $this->m_axisXColor= imagecolorallocate ($this->m_image, $vColor[0], $vColor[1], $vColor[2]);                        $this->m_axisXStyle = (int)$style;                        $this->m_axisXFont = (int)$font;                        $this->m_axisXFontWidth = imagefontwidth($font);                        $this->m_axisXFontHeight = imagefontheight($font);                        $this->m_axisXTitle = $title;                }        }        function setYAxis($color, $style, $font, $title){                if(strlen($color) > 0){                        $this->m_showYAxis = true;                        $vColor = _decode_color($color);                        $this->m_axisYColor= imagecolorallocate ($this->m_image, $vColor[0], $vColor[1], $vColor[2]);                        $this->m_axisYStyle = (int)$style;                        $this->m_axisYFont = (int)$font;                        $this->m_axisYFontWidth = imagefontwidth($font);                        $this->m_axisYFontHeight = imagefontheight($font);                        $this->m_axisYTitle = $title;                }        }        // Set grid attributes        function setGrid($colorHorizontal, $styleHorizontal, $colorVertical, $styleVertical){                if(strlen($colorHorizontal) > 0){                        $this->m_showHGrid = true;                        $vColor = _decode_color($colorHorizontal);                        $this->m_gridHColor= imagecolorallocate ($this->m_image, $vColor[0], $vColor[1], $vColor[2]);                        $this->m_gridHStyle = $styleHorizontal;                }                if(strlen($colorVertical) > 0){                        $this->m_showVGrid = true;                        $vColor = _decode_color($colorVertical);                        $this->m_gridVColor = imagecolorallocate ($this->m_image, $vColor[0], $vColor[1], $vColor[2]);                        $this->m_gridVStyle = $styleVertical;                }        }        // Add new series        function addSeries(&$values, $plotType, $title, $style, $strokeColor, $fillColor){                $this->m_series[] = new series($this, $plotType, $values, $title, $style, $strokeColor, $fillColor);                if($this->m_minValue===false){                        $this->m_minValue = @$values[0];                }                $minValue = _min($values);                $maxValue = _max($values);                if($minValue < $this->m_minValue) $this->m_minValue = $minValue;                if($maxValue > $this->m_maxValue) $this->m_maxValue = $maxValue;                $count = count($values);                if($count < $this->m_minCount) $this->m_minCount = $count;                if($count > $this->m_maxCount) $this->m_maxCount = $count;        }        // Set X labels        function setLabels(&$labels, $textColor, $font, $direction){                $this->m_labels = &$labels;                $vTextColor = _decode_color($textColor);                $this->m_labelsTextColor = imagecolorallocate ($this->m_image, $vTextColor[0], $vTextColor[1], $vTextColor[2]);                $this->m_labelsFont = $font;                $this->m_labelsFontWidth = imagefontwidth($font);                $this->m_labelsFontHeight = imagefontheight($font);                $this->m_labelsDirection = (int)$direction;                $count = count($labels);                if($count < $this->m_minCount) $this->m_minCount = $count;                if($count > $this->m_maxCount) $this->m_maxCount = $count;                $this->m_labelsMaxLength = _maxlen($labels);        }        // Plot all series        function plot($file){                $min = $this->m_minValue;                $max = $this->m_maxValue + (($this->m_maxValue - $this->m_minValue)*0.1/5)*5;                // margins                $margin=$this->m_margin;                $marginy = $margin;                if($this->m_title){                        $marginy += $this->m_fontHeight*1.5;                }                $marginbottom = $margin+5;                if($this->m_labelsDirection == HORIZONTAL){                        $marginbottom += $this->m_labelsFontWidth;                }else{                        $marginbottom += $this->m_labelsMaxLength * $this->m_labelsFontWidth;                }                if(@$this->m_axisXTitle){                        $marginbottom += $this->m_axisXFontHeight*1.5;                }                $height = $this->m_height - $marginy - $marginbottom;                if($this->m_withLegend){                //                }                $maxvalues = floor($height / $this->m_labelsFontHeight / 1.5);  // max displayable values                $marginx = $margin+5;                $marginx += strlen(number_format($this->m_maxValue, $this->m_numberOfDecimals, ',', '.')) * $this->m_labelsFontWidth;                if(@$this->m_axisYTitle){                        $marginx += $this->m_axisYFontHeight*1.5;                }                $width = $this->m_width - $marginx - $margin;                $w = $width / ($this->m_maxCount+0.2);                $dx = $w * 0.8;                $sx = $w - $dx;                $width = $w * $this->m_maxCount+$sx;                $h = ($height / $maxvalues);                $dy = $height / ($max-$min);                $vdy = ($max-$min) / $maxvalues;                //plot border & background                imagefilledrectangle($this->m_image, $marginx, $marginy, $marginx + $width, $marginy+$height , $this->m_fillColor);                // plot title                if($this->m_title){                        imagestring ($this->m_image,                                        $this->m_font,                                        ($this->m_width-strlen($this->m_title)*$this->m_fontWidth)/2,                                        $margin,                                        $this->m_title,                                        $this->m_textColor);                }                // plot values (Y)                _set_style($this->m_image,$this->m_axisYStyle, $this->m_axisYColor, $this->m_fillColor);                for($i=0; $i<=$maxvalues; $i++){                        $yvalue = number_format($min+$vdy*$i, $this->m_numberOfDecimals, $this->m_decimalSeparator, $this->m_thousandsSeparator);                        imageline($this->m_image,                                $marginx-3,                                $marginy+$height - $i*$h,                                $marginx,                                $marginy+$height - $i*$h, IMG_COLOR_STYLED);                        imagestring ($this->m_image,                                $this->m_labelsFont,                                $marginx-strlen($yvalue)*$this->m_labelsFontWidth-4,                                $marginy+$height - $i*$h - $this->m_labelsFontHeight/2,                                $yvalue,                                $this->m_labelsTextColor);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -