New file |
0,0 → 1,195 |
<? |
/* ***************************** 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); |
} |
|
?> |