Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2003, 18:16
fran86
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Grafico_De_Torta->mi_primera_clase!

Buenas,
Hace unos dias terminé mi primera clase, que "intenta" crear graficos de torta, asi que la comparto!.
Espero que les sea útil y no encuentren demasiodos errores (aparte de los de ortografia D), pues le dediqué bastante tiempo.
Caracteristicas:
  • Calcula los porcentajes
  • Crea automaticamente las referencias
  • Soporta fuentes monoespacio (predefinidas de la libreria GD) y fuentes ¡TrueType! (arial, verdana, Times New Roman, etc)
  • Se puede definir los colores para cada "porcion", de lo contrario se usan los predeterminados,
  • Los errores pueden ser mostrados en formato HTML, texto, o como una imágen.
  • Las referencias pueden ser situadas en 8 diferentes lugares y con diferentes razgos.
  • Otras caracteristicas como entrelazado, resaltar aristas, recuadro sombreado, rotacion aleatoria, y mas!
  • Tambien esta comentada segun PHPDoc/PHPDocumentor

Acas estan las URLs:
Sintaxis coloreada: http://purohumor.webcindario.com/fra...a.inc.php.html
Texto Plano: http://purohumor.webcindario.com/fra...ta.inc.php.txt

Aca pongo una especie de documentacion gauchesca de los metodos suponiendo que se empieza por:
Código PHP:
include_once("class.graficodetorta.inc.php");
$grafico = new Grafico_De_Torta($data); 
fijarse que a Grafico_De_Torta se le pasa una variable $data, esta es un array bidimensional asociativo (y eso que era gauchesca!) que debe ser asi por cada valor:
Código PHP:
$data[] = array("valor"=>1000"etiqueta"=>"Este es el valor [%] %"); //esto será una porcion
$data[] = array("valor"=>750"etiqueta"=>"Este es el valor que tiene [%] %"); //esto será otra porcion 
La clave "valor" es un entero y "etiqueta" (opcional) es una cadena. Notar que [%] luego se reemplazará con el porcentaje correspondiente a ese valor.

Luego si se agrega,
Código PHP:
$grafico->estableceInicioAleatorio(1); 
la torta (independiente de las referencias) aparecera en un angulo de rotacion distinto cada vez que se cree.

Agregando,
Código PHP:
$grafico->estableceEntrelazado(1); 
El grafico sera una imagen entrelazada de manera que a medida que se baja, la calidad aumente.

Agregando,
Código PHP:
$grafico->paletadecolores($array); 
Se utilizaran los colores especificados en la matriz para cada porcion de la torta(ver ejemplos).

Agregando,
Código PHP:
$grafico->aristasDeTorta(3"0,0,0"); 
nos permitirá configurar las aristas (bordes) de la torta: el primer parametro es el ancho de la linea y el segundo (opcional) serian valores RGB separador por coma. En el ej "0,0,0" representa el color negro.

Agregando,
Código PHP:
$grafico->formatoNumerico(2"."); 
cambiará la forma en que se presenten los porcentajes: el primer parametro indica el numero de decimales, y el segundo el separador entre decimales y enteros. Por ejemplo en vez de mostrar 33,3 (como es predeterminado) se mostrará 33.33 y asi se aumenta la presicion.

Agregando,
Código PHP:
$grafico->diametroDeTorta(200); 
se establece el diametro de la torta. El predeterminado es 300.

Luego para definir las fuentes que se usaran en las referencias hay 2 opciones
Código PHP:
$grafico->fuentepredefinida(2); 
usando esto se usan las fuentes tipo Courier New (que son bastante feas). Solo puedes mandar valores del 1 al 5 (lo que cambiará el tamaño).
O de lo contrario:
Código PHP:
$grafico->fuenteTT(9"c:\\windows\\fonts\\arial.ttf"); 
aqui los 2 parametros son requeridos: el primero es el tamaño de la fuente, y el segundo la ubicacion de la fuente TrueType a usar.

Algo de lo mas importante es esto:
Código PHP:
$grafico->estiloDeReferencias(000000); 
Aqui todos los parametros son opcionales, y basta con poner a 0 para que se use el valor por defecto:
El primero: es la ubiacion de las referencias con respecto a la torta. Para saber los posibles valores revisar los comentarios, ponerle cualquier cosa (algo asi como $grafico->estiloDeReferencias("a");) para que te mande un mensaje de error y te explique, o sino mandar un MP.
El segundo: si lo pones a non-cero las referencias seran encuadradas.
Parametros 3 , 4 y 5: indican el ancho x alto de cada cuadrito de las referencias y el espacio de separacion entre ellos
El sexto parametro: puede ser GT_REFERENCIA_RECTANGULAR o GT_REFERENCIA_CIRCULAR (experimentar!)

Al final y lo que siempre hay que hacer es:
Código PHP:
if ( !$img $grafico->obtenerGrafico() ) {
    
// usar los metodos que se expliacn abajo
} else {
    
Header("Content-type: image/png");
    
imagepng($img);*/

echo $grafico->erroratxt(); // -----> imprime los errores con formato de texto
echo $grafico->errorahtml(); // -----> imprime los errores con formato de HTML
Header("Content-type: image/png"); imagepng($grafico->erroraimagen()); // -----> imprime los errores en una imagen

Finalmete si no tienen ganas de leer todo lo de arriba aca hay ejemplos de codigo listos para usar:

Código PHP:
<?php
include("class.graficodetorta.inc.php");
$data[] = array("valor"=>41"etiqueta"=>"Este es el valor [%]%");
$data[] = array("valor"=>89"etiqueta"=>"Este valor [%]%");
$data[] = array("valor"=>145"etiqueta"=>"Este es el valor [%]%");
$data[] = array("valor"=>50"etiqueta"=>"Este es el valor [%]%");
$data[] = array("valor"=>78"etiqueta"=>"Este valor [%]%");
$data[] = array("valor"=>41"etiqueta"=>"Este es el valor [%]%");

$grafico = new Grafico_De_Torta($data);
$grafico->estableceInicioAleatorio(1);
$grafico->estableceEntrelazado(1);
$grafico->aristasDeTorta(1"0,0,0");
$grafico->formatoNumerico(2",");
$grafico->fuenteTT(9"c:\\windows\\fonts\\futurab.ttf");
$grafico->diametroDeTorta(200);
$grafico->estiloDeReferencias(GT_POSICION_ABAJO_IZQUIERDA);
if (
$img $grafico->obtenerGrafico()){
    
$img $grafico->_agregaSombraRectangular($img,5);
} else {
    
$img $grafico->erroraimagen();
}
Header("Content-type: image/png");
imagepng($img);
?>
Código PHP:
<?php
include("class.graficodetorta.inc.php");
$data[] = array("valor"=>250"etiqueta"=>"Este es el valor [%]%");
$data[] = array("valor"=>308"etiqueta"=>"Este es el valor [%]%");
$data[] = array("valor"=>158"etiqueta"=>"Este valor [%]%");
$data[] = array("valor"=>510"etiqueta"=>"Este es el valor [%]%");

$grafico = new Grafico_De_Torta($data);
$grafico->estableceInicioAleatorio(1);
$grafico->formatoNumerico(5",");
$grafico->fuentepredefinida(2);
$grafico->diametroDeTorta(150);
$grafico->estiloDeReferencias(GT_POSICION_ARRIBA_DERECHA1000GT_REFERENCIA_CIRCULAR);
if (
$img $grafico->obtenerGrafico()){
    
$img $grafico->_agregaSombraRectangular($img3);
} else {
    
$img $grafico->erroraimagen();
}
Header("Content-type: image/png");
imagepng($img);
?>
Código PHP:
<?php
include("class.graficodetorta.inc.php");
$data[] = array("valor"=>66"etiqueta"=>"Este es el valor [%]%");
$data[] = array("valor"=>33"etiqueta"=>"Este es el valor [%]%");
$data[] = array("valor"=>33"etiqueta"=>"Este es el valor [%]%");
$colores = Array ("0,0,0","200,200,200");

$grafico = new Grafico_De_Torta($data);
$grafico->diametrodetorta(100);
$grafico->paletadecolores($colores);
$grafico->aristasdetorta(4"0,0,0");
if (
$img $grafico->obtenerGrafico()){
    
Header("Content-type: image/png");
    
imagepng($img);
} else {
    echo 
$grafico->errorahtml();
}
?>
Esto intencionalmente mostrara un error
Código PHP:
<?php
include("class.graficodetorta.inc.php");
$data[] = array("valor"=>66"etiqueta"=>"Este es el valor [%]%");
$data[] = array("valor"=>33"etiqueta"=>"Este es el valor [%]%");

$grafico = new Grafico_De_Torta($data);
$grafico->estilodereferencias("nada");
if (
$img $grafico->obtenerGrafico()){
    
Header("Content-type: image/png");
    
imagepng($img);
} else {
    echo 
$grafico->errorahtml();
}
?>
Por favor, espero sus comentarios, criticas, sugerencias para nuevas versiones, etc. Cualquier cosita pueda ayudar a mejorar esta clase.

Saludos!

Última edición por fran86; 14/04/2003 a las 18:33