<?php

// ------------------------------------------------------------------------- //
// 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:                                                                      //
// ------------------------------------------------------------------------- //

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

?>