Subversion Repositories Applications.papyrus

Rev

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);
}

?>