<?php
/**
 * @file heure_binaire.php
 * @brief Ce script va afficher une horloge binaire.
 *
 * @note Les images sont contenues dans ce fichier
 *
 * @author hughes monget
 * @see http://monget.com/
 */
// echo '<input type="text" value="',base64_encode(file_get_contents('plein.gif')),'" /><br />','<input type="text" value="',base64_encode(file_get_contents('vide.gif')),'" />'; exit;
if (isset($_REQUEST['image']) && is_string($_REQUEST['image']) && in_array($_REQUEST['image'], array('plein', 'vide')))
{
    switch ($_REQUEST['image'])
    {
        case 'plein': $raw_image = base64_decode('R0lGODlhDwAPAPcAAAAAAMDAwP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAPAA8AAAg+AP8JFAigYMGBCP8ZXHgQIcOHAxkKEABRYcEAAR4eXJhRo0SPDymCHEnyYUcAFjWeJKhyYcSRCUEmfGkwYUAAOw==');
            break;
        case 'vide': $raw_image = base64_decode('R0lGODlhDwAPAPcAAAAAAMDAwP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAPAA8AAAhLAP8JFAigYMGBCP8VFMCQ4UGEABpKdDgw4sSJAAgyDBDgooCMFgV09PgxJEmHJk8uPNlwJcmRIF9SVOhx5MeKKhO6RJmwosGMCAMCADs=');
            break;
    }
    header('Content-Type: image/gif');
    echo $raw_image;
    exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <title>Heure binaire</title>
        <style type="text/css">
        <!--
        -->
        </style>
    </head>
    <body>
<?php
define('SC', $_SERVER['SCRIPT_NAME']);
$str_heure = date('His');
// Création de la matrice de bits.
$arr_matrice = array();
for ($ii = 0, $nn = strlen($str_heure); $ii < $nn; $ii++)
{
    $int_chiffre = intval($str_heure{$ii});
    $str_binaire = base_convert($int_chiffre, 10, 2);
    $str_binaire = str_pad($str_binaire, 4, '0', STR_PAD_LEFT);
    $arr_matrice[] = str_split($str_binaire);
}
// Transposition de la matrice.
$ligne  = 6;
$colone = 4;
$arr_transpose = array();
for ($ii = 0; $ii < $ligne; $ii++)
{    for ($jj = 0; $jj < $colone; $jj++)
    {
        $arr_transpose[$jj][$ii] = $arr_matrice[$ii][$jj];
    }
}
// Parcours de la matrice.
$ligne = 4;
$colone = 6;
echo '<table>';
for ($ii = 0; $ii < $ligne; $ii++)
{
    echo '<tr>';
    for ($jj = 0; $jj < $colone; $jj++)
    {
        $str_url = SC.'?image=';
        if ($arr_transpose[$ii][$jj])
            { $str_url .= 'plein'; }
        else
            { $str_url .= 'vide'; }
        echo '<td><img src="',$str_url,'" title="',$arr_transpose[$ii][$jj],'" /></td>';
        if (($jj+1 != $colone) && $jj % 2)
        {
            echo '<td> </td>';
        }
    }
    echo '</tr>';
}
// Affichage de l'heure.
echo '<tr>';
for ($ii = 0, $nn = strlen($str_heure); $ii < $nn; $ii++)
{
    echo '<td>'.$str_heure[$ii].'</td>';
    if ($ii % 2) { echo '<td> </td>'; }
}
echo '</tr>';
echo '</table>';
echo '<hr />';
highlight_file(__FILE__);
?>
<!--
<hr />
<p><a href="http://fr.wikipedia.org/wiki/Montre_à_affichage_binaire">http://fr.wikipedia.org/wiki/Montre_à_affichage_binaire</a></p>
<p>Les images sont générées par ce script.</p>
<p>Certains ronds blancs ne deviendront jamais noirs.</p>
-->
    </body>
</html>