physicalWidth; $GRAPHHEIGHT=$this->physicalHeight; $SVGDOCUMENT.="\n"; $SVGDOCUMENT.="\n"; //echo "[$SVGDOCUMENT]\n"; return $SVGDOCUMENT; } function svgFooter() { return "\n"; } function graphLine($x,$y,$h,$v,$width,$color) { $x1=$this->map($x,$this->minValueX,$this->maxValueX,$this->startX,$this->startX+$this->widthX)-($this->cartCenterX); $x2=$this->map($h,$this->minValueX,$this->maxValueX,$this->startX,$this->startX+$this->widthX)-($this->cartCenterX); $y1=$this->map($y,$this->minValueY,$this->maxValueY,$this->startY+$this->heightY,$this->startY)+$this->cartCenterY; $y2=$this->map($v,$this->minValueY,$this->maxValueY,$this->startY+$this->heightY,$this->startY)+$this->cartCenterY; $SVGDOCUMENT="\n"; return $SVGDOCUMENT; } function graphRectangle($x,$y,$h,$v,$color) { $SVGDOCUMENT=""; $x1=$this->map($x,$this->minValueX,$this->maxValueX,$this->startX,$this->startX+$this->widthX)-($this->cartCenterX); $x2=$this->map($h,$this->minValueX,$this->maxValueX,$this->startX,$this->startX+$this->widthX)-($this->cartCenterX); $y1=$this->map($y,$this->minValueY,$this->maxValueY,$this->startY+$this->heightY,$this->startY)+$this->cartCenterY; $y2=$this->map($v,$this->minValueY,$this->maxValueY,$this->startY+$this->heightY,$this->startY)+$this->cartCenterY; $SVGDOCUMENT.="\n"; return $SVGDOCUMENT; } function graphCircle($x,$y,$radius,$color) { $SVGDOCUMENT=""; $x1=$this->map($x,$this->minValueX,$this->maxValueX,$this->startX,$this->startX+$this->widthX)-($this->cartCenterX); $y1=$this->map($y,$this->minValueY,$this->maxValueY,$this->startY+$this->heightY,$this->startY)+$this->cartCenterY; $SVGDOCUMENT.="\n"; return $SVGDOCUMENT; } function graphText($textValue,$x,$y,$color,$size) { $SVGDOCUMENT=""; $x1=$this->map($x,$this->minValueX,$this->maxValueX,$this->startX,$this->startX+$this->widthX)-($this->cartCenterX); $y1=$this->map($y,$this->minValueY,$this->maxValueY,$this->startY+$this->heightY,$this->startY)+$this->cartCenterY; $y1=$y1+($size/3); $SVGDOCUMENT.="$textValue\n"; return $SVGDOCUMENT; } function map($value, $fromLow, $fromHigh, $toLow, $toHigh) { $fromRange = $fromHigh - $fromLow; $toRange = $toHigh - $toLow; $scaleFactor = $toRange / $fromRange; $tmpValue = $value - $fromLow; $tmpValue *= $scaleFactor; return $tmpValue + $toLow; } function degreesToRadians($degrees) { $radians=(pi()/180)*$degrees; return $radians; } function radiansToDegrees($radians) { $degrees=$radians*(180/pi()); return $degrees; } } $AGraph=new smolGraph(); $AGraph->physicalWidth=1000; $AGraph->physicalHeight=1000; $AGraph->minValueX=-100; $AGraph->maxValueX=100; $AGraph->minValueY=-100; $AGraph->maxValueY=100; $AGraph->startX=100; $AGraph->startY=100; $AGraph->widthX=200; $AGraph->heightY=200; $AGraph->cartCenterX=0; $AGraph->cartCenterY=0; $retV=""; $retV.=$AGraph->svgHeader(); //grid X for ($x=$AGraph->minValueX; $x<$AGraph->maxValueX+1; $x+=10) { $retV.=$AGraph->graphLine($x,$AGraph->minValueY,$x,$AGraph->maxValueY,1.0,"#888888"); } //grid Y for ($y=$AGraph->minValueY; $y<$AGraph->maxValueY+1; $y+=10) { $retV.=$AGraph->graphLine($AGraph->minValueX,$y,$AGraph->maxValueX,$y,1.0,"#888888"); } $retV.=$AGraph->graphLine(-100,0,100,0,2,"#444444"); $retV.=$AGraph->graphLine(0,-100,0,100,2,"#444444"); $retV.=$AGraph->graphLine(0,0,100,100,2,"#882222"); $retV.=$AGraph->graphLine(0,0,100,-100,2,"#228822"); $retV.=$AGraph->graphRectangle(-50,-50,50,50,"#222288"); $retV.=$AGraph->graphCircle(50,50,10,"#440000"); $retV.=$AGraph->graphText("Hello Graph",0,0,"#000000",12); $retV.=$AGraph->graphText("Hello Graph",-100,-110,"#000000",15); $retV.=$AGraph->svgFooter(); file_put_contents("/tmp/misc/test.svg", $retV); //generates a small graph within a larger screen. //the graph is auto scaled ?>