====== Exemple2 - dhtml class exemple ======
This one use the ''dhtml'' class to create an original clock (ShowTimer.php from jcd).
===== Result =====
{{php_dhtml:exemple2.png}}
===== Code =====
toolwindow(true);
$this->topmost(true);
$this->redraw(); // for topmost & toolwindow
$this->temp_fname= getenv('TEMP').'\\php_clock.png';
}
function on_init() {
$this->load_default();
}
function on_page_load() {
create_image($this->temp_fname);
$this->id_html( 'body', '
' );
$this->set_timer(1, 1000);
}
function set_image() {
create_image($this->temp_fname);
$this->id_img_src('clock', $this->temp_fname);
}
function on_timer($id) {
$this->set_image();
}
function on_close() {
parent::on_close();
unlink($this->temp_fname);
}
}
new clock();
dhtml::run();
// ------------------------------------------------------------------------- //
// Affichage d'une horloge originale. //
// Petit exemple de génération d'une image au format PNG. L'appel du script //
// se réalise donc par un simple
. //
// Le script est entièrement configurable, de la taille de l'image générée //
// aux couleurs. Il génére une horloge "originale" !!! //
// ------------------------------------------------------------------------- //
// Auteur: jcd //
// Email: jeanclaudeduss@laposte.net //
// Web: //
// ------------------------------------------------------------------------- //
function create_image($fname) {
// Taille de l'image minimum : 90x90 !!!
$largeur = 90;
$hauteur = 90;
// Création de l'image
$img = ImageCreate($largeur,$hauteur);
// ----- Paramètres de l'application -----
// Allocation des couleurs
$couleurFond = ImageColorAllocate($img,125,146,218); // Attention couleur transparente
$couleurTrait = ImageColorAllocate($img,0,0,0); // par defaut noir
$couleurHeur = ImageColorAllocate($img,255,0,0); // par défaut rouge
$couleurMin = ImageColorAllocate($img,255,255,0); // par défaut jaune
$couleurSec = ImageColorAllocate($img,0,255,0); // par défaut vert
// Ce paramètre s'il est initialisé à "true" trace le contour de l'horloge
$affiche_echelle = true;
// Ce paramètre s'il est initialisé à "true" affiche le swatch internet time au
// centre de l'horloge
$affiche_beat = true;
// Epaisseur des aiguilles
$epais = 20;
// --- Fin des paramètres de l'application ---
// Récupération de l'heure
$heure = date("h"); // l'heure
$minute = date("i"); // les minutes
$seconde = date("s"); // les secondes
$at = '@'.date("B"); // Swatch internet time
// Coordonées du centre de l'image
$cx = $largeur / 2;
$cy = $hauteur / 2;
// Taille des heures
$th = $largeur;
// Taille des minutes
$tm = $largeur - $epais;
// Taille des secondes
$ts = $largeur - ($epais*2);
imagecolortransparent ($img,$couleurFond);
// --- Départ création de l'image ---
// fond de l'image
ImageFilledRectangle($img,0,0,$largeur,$hauteur,$couleurFond);
// Arc des heures
// 1 Heure = 30°
$cal_heure = $heure * 30;
$cal_heure = $cal_heure - 90; // décalage de 90° pour placer le départ en haut
for ($i=0;$i < $epais;$i++)
imagearc ($img,$cx,$cy,$th-$i,$th-$i,270,$cal_heure,$couleurHeur);
// Arc des minutes
// 1 minute = 6°
$cal_minute = $minute * 6;
$cal_minute = $cal_minute - 90; // décalage de 90° pour placer le départ en haut
for ($i=0;$i < $epais;$i++)
imagearc ($img,$cx,$cy,$tm-$i,$tm-$i,270,$cal_minute,$couleurMin);
// Arc des secondes
// 1 seconde = 6°
$cal_seconde = $seconde * 6;
$cal_seconde = $cal_seconde - 90; // décalage de 90° pour placer le départ en haut
for ($i=0;$i < $epais;$i++)
imagearc ($img,$cx,$cy,$ts-$i,$ts-$i,270,$cal_seconde,$couleurSec);
if ($affiche_echelle) {
// Trace des echelles
// heure
imagearc ($img,$cx,$cy,$th,$th,0,360,$couleurTrait);
// minute
imagearc ($img,$cx,$cy,$tm,$tm,0,360,$couleurTrait);
// seconde
imagearc ($img,$cx,$cy,$ts,$ts,0,360,$couleurTrait);
// interne
imagearc ($img,$cx,$cy,$ts-$epais,$ts-$epais,0,360,$couleurTrait);
// graduations
for ($i=0;$i < 360;$i+=30) {
for ($j=0;$j < $epais;$j++) {
imagearc ($img,$cx,$cy,$th-$j,$th-$j,$i,$i+1,$couleurTrait);
}
}
}
if ($affiche_echelle)
ImageString($img,2,$cx-12,$cy-6,$at,$couleurTrait);
// Enfin, on envoie l'image au navigateur
//header("Content-Type: image/png"); // format PNG
ImagePng($img, $fname);
return true;
}
?>