Seminár programovania v sietach


SVGAndroid

7 segmentový zobrazovač




<?php

function init(){
    echo '<svg width="500" height="35" xmlns="http://www.w3.org/2000/svg" version="1.1">';
}
function deinit(){
    echo '</svg>';
}

function map($k, $v){
    return ' '.$k.'="'.$v.'" ';
}

function rect($x, $y, $w, $h){
    echo '<rect'.map('x',$x).map('y',$y).map('width',$w).map('height',$h).map('fill','red').map('stroke','none').'/>';
}

function digit($x,$y,$r,$d1,$d2,$d3,$d4,$d5,$d6,$d7){
    if($d1) rect($x,$y,4*$r,$r);
    if($d2) rect($x,$y,$r,4*$r);
    if($d3) rect($x+3*$r,$y,$r,4*$r);
    if($d4) rect($x,$y+3*$r,4*$r,$r);
    if($d5) rect($x,$y+3*$r,$r,4*$r);
    if($d6) rect($x+3*$r,$y+3*$r,$r,4*$r);    
    if($d7) rect($x,$y+6*$r,4*$r,$r);
}

function cifra($x,$y,$r,$c){
    switch($c){
        case 0: digit($x,$y,$r,true,true,true,false,true,true,true); break;
        case 1: digit($x,$y,$r,false,false,true,false,false,true,false); break;
        case 2: digit($x,$y,$r,true,false,true,true,true,false,true); break;
        case 3: digit($x,$y,$r,true,false,true,true,false,true,true); break;
        case 4: digit($x,$y,$r,false,true,true,true,false,true,false); break;
        case 5: digit($x,$y,$r,true,true,false,true,false,true,true); break;
        case 6: digit($x,$y,$r,true,true,false,true,true,true,true); break;
        case 7: digit($x,$y,$r,true,false,true,false,false,true,false); break;
        case 8: digit($x,$y,$r,true,true,true,true,true,true,true); break;
        case 9: digit($x,$y,$r,true,true,true,true,false,true,true); break;
    }
}

function int2digit($d, $r){
    $s = "$d";
    for($i=0;$i<strlen($s);$i++){
        cifra($i*5*$r,0,$r,intval(substr($s,$i,1),10));
    }
}

$c='a';
if(isset($_GET['cislo'])) $c=$_GET['cislo'];

if(is_numeric($c)){
    init();
    int2digit($c, 5);
    deinit();
}

?>