[TEP-COMMIT] [CVS admin] add panachart to take care of image graphs (used currently for the banners)

hpdl-OfajU3CKLf1/[email protected] 15 Aug 2004 18:08:27 -0000
Newsgroups gmane.comp.web.oscommerce.cvs
Message-ID <[email protected]>
Commit in admin/admin/external/panachart on MAIN

panachart.php +573 added 1.1

add panachart to take care of image graphs (used currently for the banners)

----------

admin /admin /external /panachart

panachart.php added at 1.1

diff -N panachart.php
--- /dev/null Sun Aug 15 20:08:22 2004
+++ /tmp/cvsAAAP_aGcZ Sun Aug 15 20:08:23 2004
@@ -0,0 +1,573 @@

+<?php
+/*
+ PanaChart - PHP Chart Generator - October 2003
+
+ Copyright (C) 2003 Eugen Fernea - eugenf-6OMnJ7XNNbBWk0Htik3J/[email protected]
+ Panacode Software - info-6OMnJ7XNNbBWk0Htik3J/[email protected]
+ 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);
+ }
+
+ // plot grid
+ if($this->m_showHGrid){
+ for($i=0; $i<=$maxvalues; $i++){
+ _set_style($this->m_image,$this->m_gridHStyle, $this->m_gridHColor, $this->m_fillColor);
+ imageline($this->m_image,
+ $marginx,
+ $marginy+$height - $i*$h,
+ $marginx+$width,
+ $marginy+$height - $i*$h,
+ IMG_COLOR_STYLED);
+ }
+ }
+ if($this->m_showVGrid){
+ for($i=0; $i<count($this->m_labels); $i++){
+ $len = strlen($this->m_labels[$i]);
+ if($len > 0){
+ _set_style($this->m_image,$this->m_gridVStyle, $this->m_gridVColor, $this->m_fillColor);
+ imageline($this->m_image,
+ $marginx+$i*$w+$dx/2+$sx,
+ $height+$marginy,
+ $i*$w+$marginx+$dx/2+$sx,
+ $marginy,
+ IMG_COLOR_STYLED);
+ }
+ }
+ }
+
+ _set_style($this->m_image,$this->m_style, $this->m_strokeColor, $this->m_fillColor);
+ imagerectangle($this->m_image, $marginx, $marginy, $marginx + $width, $marginy+$height , IMG_COLOR_STYLED);
+
+
+ // plot graph
+ foreach($this->m_series as $series){
+ $cnt = count($series->m_values);
+ // LINE PLOT
+ if($series->m_type == 'line'){
+ _set_style($this->m_image,$series->m_style,$series->m_strokeColor, $this->m_fillColor);
+ $startx = $marginx+$dx/2+$sx ; $starty = $marginy+$height-$dy*($series->m_values[0]-$min);
+ for($i=1; $i<$cnt; $i++){
+ $x = $marginx+$i*$w+$dx/2+$sx;
+ $y = $marginy+$height-$dy*($series->m_values[$i]-$min);
+ imageline($this->m_image,$startx, $starty, $x, $y,IMG_COLOR_STYLED);
+ $startx = $x; $starty = $y;
+ }
+ // AREA PLOT
+ }else if($series->m_type == 'area'){
+ _set_style($this->m_image,$series->m_style,$series->m_strokeColor, $this->m_fillColor);
+ $vpoints = '';
+ $startx = $marginx+$dx/2+$sx ; $starty = $marginy+$height-$dy*($series->m_values[0]-$min);
+ $vpoints[] = $startx; $vpoints[] = $marginy+$height;
+ for($i=0; $i<$cnt; $i++){
+ $x = $marginx+$i*$w+$dx/2+$sx;
+ $y = $marginy+$height-$dy*($series->m_values[$i]-$min);
+ $vpoints[]=$x; $vpoints[]=$y;
+ $startx = $x; $starty = $y;
+ }
+ $vpoints[] = $x; $vpoints[] = $marginy+$height;
+ imagefilledpolygon ( $this->m_image, $vpoints, $cnt+2, $series->m_fillColor);
+ imagepolygon ( $this->m_image, $vpoints, $cnt+2, IMG_COLOR_STYLED);
+ // BAR PLOT
+ }else if($series->m_type == 'bar'){
+ _set_style($this->m_image,$series->m_style,$series->m_strokeColor, $this->m_fillColor);
+ $vpoints = '';
+ for($i=0; $i<$cnt; $i++){
+ imagefilledrectangle($this->m_image,
+ $sx + $marginx+$i*$w,
+ $marginy+$height-$dy*($series->m_values[$i]-$min),
+ $sx + $marginx+$i*$w+$dx,
+ $marginy+$height,
+ $series->m_fillColor);
+ imagerectangle($this->m_image,
+ $sx + $marginx+$i*$w,
+ $marginy+$height-$dy*($series->m_values[$i]-$min),
+ $sx + $marginx+$i*$w+$dx,
+ $marginy+$height,
+ IMG_COLOR_STYLED);
+ }
+ // IMPULS PLOT
+ }else if($series->m_type == 'impuls'){
+ _set_style($this->m_image,$series->m_style,$series->m_fillColor,$this->m_fillColor);
+ for($i=0; $i<$cnt; $i++){
+ $x = $marginx+$i*$w+$dx/2+$sx;
+ $y = $marginy+$height-$dy*($series->m_values[$i]-$min);
+ imageline($this->m_image,$x, $y, $x, $marginy+$height, IMG_COLOR_STYLED);
+ }
+ // STEP PLOT
+ }else if($series->m_type == 'step'){
+ _set_style($this->m_image,$series->m_style, $series->m_strokeColor,$this->m_fillColor);
+ $cnt = $cnt; $vpoints = '';
+ $startx = $marginx+$sx/2 ; $starty = $marginy+$height-$dy*($series->m_values[0]-$min);
+ $vpoints[] = $startx; $vpoints[] = $marginy+$height;
+ $vpoints[] = $startx; $vpoints[] = $starty;
+ for($i=1; $i<$cnt; $i++){
+ $x = $marginx+$i*$w+$sx/2;
+ $y = $marginy+$height-$dy*($series->m_values[$i]-$min);
+ $vpoints[]=$x; $vpoints[]=$starty;
+ $vpoints[]=$x; $vpoints[]=$y;
+ $startx = $x; $starty = $y;
+ }
+ $vpoints[] = $x+$w; $vpoints[] = $y;
+ $vpoints[] = $x+$w; $vpoints[] = $marginy+$height;
+ imagefilledpolygon ( $this->m_image, $vpoints, $cnt*2+2, $series->m_fillColor);
+ imagepolygon ( $this->m_image, $vpoints, $cnt*2+2, IMG_COLOR_STYLED);
+ // DOT PLOT
+ }else if($series->m_type == 'dot'){
+ _set_style($this->m_image,$series->m_style, $series->m_strokeColor,$this->m_fillColor);
+ for($i=0; $i<$cnt; $i++){
+ $x = $marginx+$i*$w+$dx/2+$sx;
+ $y = $marginy+$height-$dy*($series->m_values[$i]-$min);
+ imagerectangle($this->m_image,$x-2, $y-2, $x+2, $y+2, IMG_COLOR_STYLED);
+ imagefilledrectangle($this->m_image,$x-1, $y-1, $x+1, $y+1, $series->m_fillColor);
+ }
+ }
+ }
+
+
+
+ // plot X labels
+ for($i=0; $i<count($this->m_labels); $i++){
+ $len = strlen($this->m_labels[$i]);
+ if($len > 0){
+ _set_style($this->m_image,$this->m_axisXStyle, $this->m_axisXColor, $this->m_fillColor);
+ imageline($this->m_image,
+ $dx/2+$sx+$marginx+$i*$w,
+ $height+$marginy,
+ $dx/2+$sx+$i*$w+$marginx,
+ $height+$marginy+3,
+ IMG_COLOR_STYLED);
+
+ if($this->m_labelsDirection == HORIZONTAL){
+ imagestring ($this->m_image,
+ $this->m_labelsFont,
+ $dx/2+$sx+$marginx+$i*$w-$len*$this->m_labelsFontWidth/2,
+ $marginy+4+$height,
+ $this->m_labels[$i],
+ $this->m_labelsTextColor);
+ }else{
+ imagestringup ($this->m_image,
+ $this->m_labelsFont,
+ $dx/2+$sx+$marginx+$i*$w-$this->m_labelsFontHeight/2,
+ $marginy + $height + $len*$this->m_labelsFontWidth + 4,
+ $this->m_labels[$i],
+ $this->m_labelsTextColor);
+ }
+ }
+
+ }
+
+ // plot X axis
+ if($this->m_showXAxis){
+ _set_style($this->m_image,$this->m_axisXStyle, $this->m_axisXColor, $this->m_fillColor);
+ imageline($this->m_image, $marginx, $marginy+$height, $marginx + $width, $marginy+$height, IMG_COLOR_STYLED);
+ if($this->m_axisXTitle){
+ imagestring($this->m_image,
+ $this->m_axisXFont,
+ $marginx + ($width - strlen($this->m_axisXTitle) * $this->m_axisXFontWidth)/2,
+ $this->m_height - $margin - $this->m_axisXFontHeight,
+ $this->m_axisXTitle,
+ $this->m_axisXColor);
+ }
+ }
+ // plot Y axis
+ if($this->m_showYAxis){
+ _set_style($this->m_image,$this->m_axisYStyle, $this->m_axisYColor, $this->m_fillColor);
+ imageline($this->m_image, $marginx, $marginy, $marginx, $marginy+$height, IMG_COLOR_STYLED);
+ if($this->m_axisYTitle){
+ $titlewidth = strlen($this->m_axisYTitle) * $this->m_axisYFontWidth;
+ imagestringup ($this->m_image,
+ $this->m_axisYFont,
+ $margin,
+ $marginy + $titlewidth + ($height-$titlewidth)/2,
+ $this->m_axisYTitle,
+ $this->m_axisYColor);
+ }
+ }
+
+ $image_function = 'image' . tep_dynamic_image_extension();
+
+ if(strlen($file) > 0){
+ $image_function($this->m_image, $file);
+ }else{
+ $image_function($this->m_image);
+ }
+
+
+ }
+
+}
+
+function _min(&$vvalues){
+ $min = $vvalues[0];
+ foreach($vvalues as $value){
+ if ($min > $value){
+ $min = $value;
+ }
+ }
+ return $min;
+}
+
+function _max(&$vvalues){
+ $max = $vvalues[0];
+ foreach($vvalues as $value){
+ if ($max < $value){
+ $max = $value;
+ }
+ }
+ return $max;
+}
+
+function _maxlen(&$vvalues){
+ $max = strlen($vvalues[0]);
+ foreach($vvalues as $value){
+ if ($max < strlen($value)){
+ $max = strlen($value);
+ }
+ }
+ return $max;
+}
+
+function _decode_color($scolor){
+ $istart = 0;
+ if($scolor[0] == '#'){
+ $istart++;
+ }
+ $r = hexdec(@substr($scolor, $istart , 2));
+ $g = hexdec(@substr($scolor, $istart +2, 2));
+ $b = hexdec(@substr($scolor, $istart +4, 2));
+ $vcolor = array($r, $g, $b);
+ return ( $vcolor );
+}
+
+function _set_style($img,$style,$fore,$back){
+ switch($style){
+ case DASHED:
+ $thickness = 1;
+ $istyle = array ($fore,$fore,$fore,$fore,$fore,
+ $back,$back,$back,$back,$back);
+ break;
+ case MEDIUM_DASHED:
+ $thickness = 2;
+ $istyle = array ($fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,
+ $back,$back,$back,$back,$back,$back,$back,$back);
+ break;
+ case LARGE_DASHED:
+ $thickness = 3;
+ $istyle = array ($fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,$fore,
+ $back,$back,$back,$back,$back,$back,$back,$back,$back,$back,$back,$back);
+ break;
+ case DOTTED:
+ $thickness = 1;
+ $istyle = array ($fore,$back,$back);
+ break;
+ case MEDIUM_DOTTED:
+ $thickness = 2;
+ $istyle = array ($fore,$fore,$fore,$fore,
+ $back,$back,$back,$back);
+ break;
+ case LARGE_DOTTED:
+ $thickness = 3;
+ $istyle = array ($fore,$fore,$fore,$fore,$fore,$fore,
+ $back,$back,$back,$back,$back,$back);
+ break;
+ case SOLID:
+ $thickness=1;
+ $istyle = array ($fore,$fore);break;
+ case MEDIUM_SOLID:
+ $thickness=2;
+ $istyle = array ($fore,$fore);break;
+ case LARGE_SOLID:
+ $thickness=3;
+ $istyle = array ($fore,$fore);break;
+ default:
+ $thickness=1;
+ $istyle = array ($fore,$fore);break;
+ }
+ imagesetthickness ($img, $thickness);
+ imagesetstyle ($img, $istyle);
+}
+
+
+function _imageline($img,$x0,$y0,$x1,$y1,$style,$fore,$back){
+ imageline($img, $x0,$y0,$x1,$y1,IMG_COLOR_STYLED);
+}
+?>

CVSspam 0.2.9

-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285