Rev 448 | Blame | Last modification | View Log | RSS feed
<?
/* ***************************** classe arbre ***********************************
* class permettant la creation d'un arbre, elle est fonctionnelle en tant que module
* de gsite (www.gsite.org).
* L'arbre peut servir de representation graphique de donnees statistiques.
* Copyright 2001 Tela Botanica
* Auteurs : Daniel Mathieu, Nicolas Touillaud, Alexandre Granier
* Cette bibliothèque est libre, vous pouvez la redistribuer et/ou la modifier
* selon les termes de la Licence Publique Générale GNU publiée par la
* Free Software Foundation.
* Cette bibliothèque est distribuée car potentiellement utile, mais SANS
* AUCUNE GARANTIE, ni explicite ni implicite, y compris les garanties de
* commercialisation ou d'adaptation dans un but spécifique.
*
************************************************************************************/
include('php/frame/arbre/tailles.php3');
//recuperation des noms de table
$nom_table_index = "AGORA" ;
$nom_table_tela = "AGO_TELA_BOTANICAE" ;
global $GS_GLOBAL ;
mysql_select_db($GS_GLOBAL['mysql_db'],$GS_GLOBAL['link']) ;
$tables = mysql_query("select AGO_A_NOMGRP from agora where ((AGO_A_VISIBLE=1) and (AGO_A_NOMGRP <> \"tela-botanicae\"))");
$nbtables_dessin = mysql_num_rows($tables);
mysql_free_result($tables);
$hauteur=$yfait;
//verification si il y a des listes a afficher
if ($nbtables_dessin==""):{$nbdroite=0;}
else : {$nbdroite=(round($nbtables_dessin/2))+1;}
endif;
function calc_xref_branche($xres_,$xfeuille_, $xtronc_)
//calcule la taille de reference des branches
{
//global $xres, $xfeuille, $xtronc;
$toto=round(($xres_-$xtronc_-(2*$xfeuille_))/2);
return $toto;
}
//******************************************************
// calcule l'espace vertical entre 2 branche d'un meme coté: si il n'y a pas la place -> 12 pixels
function calc_esver()
{
global $nbdroite ;
if ($nbdroite != 1):
{
global $yres, $yfait, $yracine, $ybranche, $nbdroite;
$toto=($yres-$yfait-$yracine-($nbdroite*$ybranche))/($nbdroite-1);
if($toto<0):{$toto=12;} //on ne se place plus sur 1 ecran mais sur plus
endif;
return $toto;
}
else:{return 0;}
endif;
}
//******************************************************
$esver=calc_esver();
//******************************************************
//calcul la position en x de la branche
function calcul_x_branche($adroite,$xreel)
{
global $xres, $xtronc, $xref_branche;
$tempx=($xres+$xtronc)/2-2; //pour un bug
if($adroite != 1):
{
$tempx=$tempx+2-$xtronc-($xreel);
}
endif;
return round($tempx);
}
//******************************************************
//Il est impératif d'afficher 1 branche d'un coté, puis de l'autre etc..
//******************************************************
//retourne la position y de la branche (et de la feuille) et met à jour la hauteur de la prochaine branche
function calcul_y_branche()
{
global $esver, $hauteur, $ybranche;
$toto=$hauteur;
$hauteur=$hauteur+(($ybranche+$esver)/2);
return $toto;
}
//******************************************************
//******************************************************
//retourne la position x du tronc
function x_tronc()
{
global $xtronc, $xres;
return ($xres-$xtronc)/2;
}
//******************************************************
//******************************************************
//retourne la position y du tronc
function y_tronc()
{
global $yfait;
return ($yfait);
}
//******************************************************
//******************************************************
// retourne la position x de la racine
function x_racine()
{
global $xracine, $xres;
return ($xres-$xracine)/2;
}
//******************************************************
//******************************************************
//retourne la taille du tronc en pixels
function taille_tronc()
{
global $nbdroite, $esver, $ybranche;
$toto=($nbdroite-1)*$esver+($nbdroite*$ybranche);
return $toto;
}
//******************************************************
//******************************************************
//retourne la position x de la feuille en fonction des param de la branche
function calcul_x_feuille($adroite, $pos_branche, $xreel_brch) //xreel en %
{
global $xref_branche, $xfeuille;
if($adroite !=1):
{
$toto=$pos_branche-$xfeuille;
}
else:
{
$toto=$pos_branche+($xreel_brch);
}
endif;
return $toto;
}
//******************************************************
//******************************************************
// retourne la position y de la racine
function y_racine()
{
global $yfait;
$toto=$yfait+taille_tronc();
return $toto;
}
//******************************************************
//******************************************************
//met 1 à 0 et inversement
function dg($dte)
{
if($dte==1):{return 0;}
else:{return 1;}
endif;
}
//******************************************************
//******************************************************
//une fonction qui prend le % de vert *100 et qui sort la chaine html du vert correspondant
function couleur_f($prc)
{
if ($prc==0) return ("#279C27");
if (($prc>0) && ($prc<=16)) return ("#279C27");
if (($prc>16) && ($prc<=32)) return ("#CCCC00");
if (($prc>32) && ($prc<=48)) return ("#FFCC00");
if (($prc>48) && ($prc<=64)) return ("#DD8D22");
if (($prc>64) && ($prc<=80)) {
return "#FF6600" ;
} else {
return "#CC3300" ;
}
}
//*****************************************************
//une fonction qui détermine si un entier est pair ou non
function est_pair($un_entier)
{
return(($un_entier %2)==0);
}
?>