Table of Contents

Exemple2 - dhtml class exemple

This one use the dhtml class to create an original clock (ShowTimer.php from jcd).

Result

Code

<?php
 
define( 'DHTML_DEBUG', 0 );
include 'include/dhtml/dhtml.inc';
 
class clock extends dhtml {
	var $temp_fname;
 
	function clock() {
		parent::dhtml('Clock', null, true, '120x140');
		$this->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', '<img id="clock" src="'.$this->temp_fname.'" style="width:100%;height:100%">' );
		$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 <img src="ShowTimer.php">.                  //
// 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;
}
 
 
?>