1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
| <?php
define('__graph_commons_','1.0');
/**
*
* Convertit les composantes d'une couleur en un code couleur GD
* @param int $red Composante rouge, entre 0 et 255
* @param int $green Composante verte, entre 0 et 255
* @param int $blue Composante bleue, entre 0 et 255
* @param int $alpha Composante transparence, entre 0 et 255, 255 pour transparent
*/
function gdColor($red,$green,$blue,$alpha=0)
{
return $alpha<<24|$red<<16|$green<<8|$blue;
}
/**
*
* Décrit un point en 2D
* @author Dureuil Eric
* @package graphics
* @subpackage commons
*/
class info2d
{
public $_x,$_y;
public function __construct($x,$y)
{
$this->_x=$x;
$this->_y=$y;
}
}
/**
*
* Décrit le titre d'un graphique
* @author Dureuil Eric
* @package graphics
* @subpackage commons
*/
class gdText
{
public $_text,$_color,$_size;
public $_width,$_height,$_length;
/**
*
* Enter description here ...
* @param string $text Texte
* @param int $color Couleur du texte, nombre héxadécimal: 0xaarrvvbb avec aa l'alpha, rr le rouge, vv le vert et bb le bleu
* @param int $textsize Taille du texte
*/
final public function __construct($text='',$color=0,$textsize=1)
{
$this->_text=$this->transliterate($text);
$this->_color=intval($color);
$a=intval($textsize);
$this->_size=$a<0?0:($a>5?5:$a);
$this->_width=imagefontwidth($this->_size);
$this->_height=imagefontheight($this->_size);
$this->_length=strlen($this->_text);
}
/**
*
* Affiche le texte horizontalement dans l'image créée avec GD
* @param resource $im une ressource créée avec GD
* @param int $x Abscisse du texte dans les coordonnées de l'image
* @param int $y Ordonnée du texte dans les coordonnées de l'image
*/
final public function draw($im,$x,$y)
{
imagestring($im, $this->_size, $x, $y, $this->_text, $this->_color);
}
/**
*
* Affiche le texte verticalement dans l'image créée avec GD
* @param resource $im une ressource créée avec GD
* @param int $x Abscisse du texte dans les coordonnées de l'image
* @param int $y Ordonnée du texte dans les coordonnées de l'image
*/
final public function drawUp($im,$x,$y)
{
imagestringup($im, $this->_size, $x, $y, $this->_text, $this->_color);
}
/**
*
* Fait la translitération d'une chaine dans la charset Latin2 pour GD
* @param string $string
*/
final protected function transliterate($string)
{
$s=str_ireplace('é', 'e', $string);
$s=iconv("UTF-8", "ASCII//TRANSLIT", $s);
return str_replace(array('^','`'), '', $s);
}
}
/**
*
* Décrit un axe sur un graphique
* @author Dureuil Eric
* @package graphics
* @subpackage commons
*/
class axis
{
public $_title,$_units;
public $_color;
/**
*
* Enter description here ...
* @param string $title Titre pour l'axe
* @param string $unit Nom de l'unité pour l'axe
* @param int $linecolor Couleur pour les repères sur l'axe, nombre héxadécimal: 0xaarrvvbb avec aa l'alpha, rr le rouge, vv le vert et bb le bleu
* @param int $textcolor Couleur pour les textes décrivant l'axe, nombre héxadécimal: 0xaarrvvbb avec aa l'alpha, rr le rouge, vv le vert et bb le bleu
* @param int $titlesize Taille de la police pour l'affichage du titre de l'axe, compris entre 1 et 5 inclus
* @param int $unitsize Taille de la police pour l'affichage des unités sur l'axe, compris entre 1 et 5 inclus
*/
final public function __construct($title='', $unit='', $linecolor=0, $textcolor=0, $titlesize=2, $unitsize=1)
{
$this->_title=new gdText($title, $textcolor, $titlesize);
$this->_units=new gdText($unit, $textcolor, $unitsize);
$this->_color=intval($linecolor);
}
/**
*
* Affiche le titre horizontalement dans l'image créée avec GD
* @param resource $im une ressource créée avec GD
* @param int $x Abscisse du texte dans les coordonnées de l'image
* @param int $y Ordonnée du texte dans les coordonnées de l'image
*/
final public function drawTitle($im, $x, $y)
{
imagestring($im, $this->_title->_size, $x, $y, "{$this->_title->_text}({$this->_units->_text})", $this->_title->_color);
}
/**
*
* Affiche le titre verticalement dans l'image créée avec GD
* @param resource $im une ressource créée avec GD
* @param int $x Abscisse du texte dans les coordonnées de l'image
* @param int $y Ordonnée du texte dans les coordonnées de l'image
*/
final public function drawTitleUp($im,$x,$y)
{
imagestringup($im, $this->_title->_size, $x, $y, "{$this->_title->_text}({$this->_units->_text})", $this->_title->_color);
}
/**
*
* Affiche la valeur horizontalement dans l'image créée avec GD
* @param resource $im une ressource créée avec GD
* @param int $x Abscisse du texte dans les coordonnées de l'image
* @param int $y Ordonnée du texte dans les coordonnées de l'image
* @param mixed $value Valeur à afficher
*/
final public function drawUnits($im, $x, $y, $value)
{
imagestring($im, $this->_units->_size, $x, $y, $value, $this->_units->_color);
}
}
?> |
Partager