Files @ 42442c1ce1f1
Branch filter:

Location: SlatePermutate/inc/class.graph.php

binki
Bump to jQuery-1.6*.
<?php

class barGraph {

// This array of values is just here for the example.
private $values = array();
private $image = null;

// Pass me a multidimensional array with 'count', the size, and 'label', the label
public function __construct($userVals, $width=600, $height=300) {

  $this->values = $userVals;


  // Get the total number of columns we are going to plot
  $columns  = count($this->values);
  if($columns == 0) {
    throw new Exception("No input data!");
  }
  if($width < 5 || $height < 5) {
    throw new Exception("Image size too small!");
  }

  // Set the amount of space between each column
  $padding = 5; 

  // Get the width of 1 column
  $column_width = $width / $columns ;

  // Generate the image variables
  $im        = imagecreate($width,$height);
  $gray      = imagecolorallocate ($im,0xcc,0xcc,0xcc);
  $gray_lite = imagecolorallocate ($im,0xee,0xee,0xee);
  $gray_dark = imagecolorallocate ($im,0x7f,0x7f,0x7f);
  $white     = imagecolorallocate ($im,0xff,0xff,0xff);
  $black     = imagecolorallocate($im, 0, 0, 0);
    
  // Fill in the background of the image
  imagefilledrectangle($im,0,0,$width,$height,$white);
    
  $maxv = 0;

  // Calculate the maximum value we are going to plot
  for($i=0;$i<$columns;$i++)
    $maxv = max($this->values[$i]['count'], $maxv);

  // Now plot each column 
  for($i=0;$i<$columns;$i++) {
    $column_height = ($height / 100) * (( $this->values[$i]['count'] / $maxv) *100);
    $x1 = $i*$column_width;
    $y1 = $height-$column_height;
    $x2 = (($i+1)*$column_width)-$padding;
    $y2 = $height;

    imagefilledrectangle($im,$x1,$y1,$x2,$y2,$gray);

    $label = $this->values[$i]['label'];
    $font = '/usr/share/fonts/liberation/LiberationSans-Regular.ttf';
    $font2 = '/usr/share/fonts/liberation/LiberationSans-Bold.ttf';

    imagettftext($im, 10, 0, $x1 + ($column_width / 2) - 20, $height - 5, $black, $font, $label);
    imagettftext($im, 7, 0, $x1 + ($column_width / 2) - 7, $height - 20, $gray_dark, $font, $this->values[$i]['count']);
 
  }
  imagettftext($im, 10, 0, 0, 10, $black, $font2, "Past Month:");

  // Send the PNG header information. Replace for JPEG or GIF or whatever
  $this->image = $im;

  header ("Content-type: image/png");
  imagepng($this->image);
}

}

?>