<?php // content="text/plain; charset=utf-8" //======================================================================= // File: MKGRAD.PHP // Description: Simple tool to create a gradient background // Ver: $Id$ //======================================================================= // Basic library classes require_once ('jpgraph/jpgraph.php'); require_once ('jpgraph/jpgraph_bar.php'); require_once ('jpgraph/jpgraph_canvas.php'); // Must have a global comparison method for usort() function _cmp($a,$b) { return strcmp($a,$b); } // Generate the input form class Form { var $iColors; var $iGradstyles; function Form() { $rgb = new RGB(); $this->iColors = array_keys($rgb->rgb_table); usort($this->iColors,'_cmp'); $this->iGradstyles = array( "Vertical",2, "Horizontal",1, "Vertical from middle",3, "Horizontal from middle",4, "Horizontal wider middle",6, "Vertical wider middle",7, "Rectangle",5 ); } function Run() { echo '<h3>Generate gradient background</h3>'; echo '<form METHOD=POST action=""><table style="border:blue solid 1;">'; echo '<tr><td>Width:<br>'.$this->GenHTMLInput('w',8,4,300).'</td>'; echo "\n"; echo '<td>Height:<br>'.$this->GenHTMLInput('h',8,4,300).'</td></tr>'; echo "\n"; echo '<tr><td>From Color:<br>'; echo $this->GenHTMLSelect('fc',$this->iColors); echo '</td><td>To Color:<br>'; echo $this->GenHTMLSelect('tc',$this->iColors); echo '</td></tr>'; echo '<tr><td colspan=2>Gradient style:<br>'; echo $this->GenHTMLSelectCode('s',$this->iGradstyles); echo '</td></tr>'; echo '<tr><td colspan=2>Filename: (empty to stream)<br>'; echo $this->GenHTMLInput('fn',55,100); echo '</td></tr>'; echo '<tr><td colspan=2 align=right>'.$this->GenHTMLSubmit('submit').'</td></tr>'; echo '</table>'; echo '</form>'; } function GenHTMLSubmit($name) { return '<INPUT TYPE=submit name="ok" value=" Ok " >'; } function GenHTMLInput($name,$len,$maxlen=100,$val='') { return '<INPUT TYPE=TEXT NAME='.$name.' VALUE="'.$val.'" SIZE='.$len.' MAXLENGTH='.$maxlen.'>'; } function GenHTMLSelect($name,$option,$selected="",$size=0) { $txt="<select name=$name"; if( $size > 0 ) $txt .= " size=$size >"; else $txt .= ">"; for($i=0; $i<count($option); $i++) { if( $selected==$option[$i] ) $txt=$txt."<option selected value=\"$option[$i]\">$option[$i]</option>\n"; else $txt=$txt."<option value=\"".$option[$i]."\">$option[$i]</option>\n"; } return $txt."</select>\n"; } function GenHTMLSelectCode($name,$option,$selected="",$size=0) { $txt="<select name=$name"; if( $size > 0 ) $txt .= " size=$size >"; else $txt .= ">"; for($i=0; $i<count($option); $i += 2) { if( $selected==$option[($i+1)] ) $txt=$txt."<option selected value=".$option[($i+1)].">$option[$i]</option>\n"; else $txt=$txt."<option value=\"".$option[($i+1)]."\">$option[$i]</option>\n"; } return $txt."</select>\n"; } } // Basic application driver class Driver { var $iGraph, $iGrad; var $iWidth,$iHeight; var $iFromColor, $iToColor; var $iStyle; var $iForm; function Driver() { $this->iForm = new Form(); } function GenGradImage() { $aWidth = (int)@$_POST['w']; $aHeight = (int)@$_POST['h']; $aFrom = @$_POST['fc']; $aTo = @$_POST['tc']; $aStyle = @$_POST['s']; $aFileName = @$_POST['fn']; $this->iWidth = $aWidth; $this->iHeight = $aHeight; $this->iFromColor = $aFrom; $this->iToColor = $aTo; $this->iStyle = $aStyle; $this->graph = new CanvasGraph($aWidth,$aHeight); $this->grad = new Gradient($this->graph->img); $this->grad->FilledRectangle(0,0, $this->iWidth,$this->iHeight, $this->iFromColor, $this->iToColor, $this->iStyle); if( $aFileName != "" ) { $this->graph->Stroke($aFileName); echo "Image file '$aFileName' created."; } else $this->graph->Stroke(); } function Run() { global $HTTP_POST_VARS; // Two modes: // 1) If the script is called with no posted arguments // we show the input form. // 2) If we have posted arguments we naivly assume that // we are called to do the image. if( @$_POST['ok']===' Ok ' ) { $this->GenGradImage(); } else $this->iForm->Run(); } } $driver = new Driver(); $driver->Run(); ?>