El constructor inicializa el tamaño de la imagen a crear:
public function __construct($ancho,$alto)
{
$this->ancho=$ancho;
$this->alto=$alto;
$this->imagen=imageCreate($this->ancho,$this->alto);
y también inicializa el color de las barras y el fondo por defecto:
$this->vectorcolorfondo[0]=0;
$this->vectorcolorfondo[1]=0;
$this->vectorcolorfondo[2]=255;
$this->colorfondo=ImageColorAllocate($this->imagen,$this->vectorcolorfondo[0],
$this->vectorcolorfondo[1],$this->vectorcolorfondo[2]);
ImageFill($this->imagen,0,0,$this->colorfondo);
$this->vectorcolorbarra[0]=255;
$this->vectorcolorbarra[1]=255;
$this->vectorcolorbarra[2]=0;
El método sumar añade los datos de una nueva barra (valor y etiqueta a mostrar):
public function sumar($valor,$titulo)
{
$indice=count($this->datos);
$this->datos[$indice]['valor']=$valor;
$this->datos[$indice]['titulo']=$titulo;
}
Tiene dos métodos para cambiar el color de las barras y el fondo:
public function fijarcolorfondo($rojo,$verde,$azul)
public function fijarcolorbarra($rojo,$verde,$azul)
El método fundamental es el graficar:
public function graficar()
donde obtenemos el ancho de la barra (según la cantidad de barras y el ancho de la imagen):
$anchobarra=($this->ancho-110)/count($this->datos);
Luego dentro de un for graficamos cada barra, calculando la altura:
foreach($this->datos as $reg)
{
$altura=($reg['valor']/$may)*($this->alto-80);
imagefilledrectangle($this->imagen,$x1,$y1-$altura,$x1+$anchobarra,$y1,$this->colorbarra);
Dibujamos también las sombras llamando a los métodos privados respectivos:
$this->graficarsombraizquierda($x1+$anchobarra,$y1-$altura,$y1);
$this->graficarsombrasuperior($x1,$y1-$altura,$anchobarra);