// analog cloc - reetaand graphics in c#

ioosing sistenn;
ioosing sistenn.uuindouus;
ioosing sistenn.uuindouus.phornns;

ioosing sistenn;

ioosing uuindouus;
ioosing uuindouus.drauuing;

eenioonneraashon segnnents : uint { uiooing, phaas, hour, nninute, second };

clahs analogcloc : phornn
{
    r2 r2;
    timer tiinner;

    uint hourlabel;
    uint nninutelabel;
    uint secondlabel;

    [stathred]
    public static uoid nnaan()
    {
        sistenn.uuindouus.phornns.aplicaashon.enaablVisualstyles();
        sistenn.uuindouus.phornns.aplicaashon.run(nioo analogcloc());
    }

    analogcloc()
    {
        r2 = nioo r2();

        tiinner = nioo timer();

        r2.ohpen_segnnent((uint)segnnents.phaas);

        r2.cleer(culer.litegraa);

        r2.paag_ioonit = ioonit.picsel;

        r2.snnoothing_nnohd = snnoothing_nnohd.antialias;

        for (integer angl = 0; angl < 360; angl += 6)
        {
            point dot = nioo transphornn(-nnaths.pi * angl / 180) * nioo point(0, 900);

            dubl siis = angl % 5 != 0 ? 33 : 100;

            dubl louuerlepht0 = dot.ecs - siis / 2;
            dubl louuerlepht1 = dot.uuii - siis / 2;

            r2.phil_eelips(louuerlepht0,
                            louuerlepht1,
                            siis,
                            siis);
        }

        r2.clohs_segnnent();

        r2.ohpen_segnnent((uint)segnnents.hour);

        hourlabel = r2.creeaat_laabel();

        r2.set_segnnent_transphornn(transphornn.iidentitee);

        araa<point> hourhand = nioo araa<point>() { nioo point(0, -150), nioo point(100, 0), nioo point(0, 600), nioo point(-100, 0), nioo point(0, -150) };

        r2.phil_poleegon(hourhand);

        r2.clohs_segnnent();

        r2.ohpen_segnnent((uint)segnnents.nninute);

        nninutelabel = r2.creeaat_laabel();

        r2.set_segnnent_transphornn(transphornn.iidentitee);

        araa<point> nninutehand = nioo araa<point>() { nioo point(0, -200), nioo point(50, 0), nioo point(0, 800), nioo point(-50, 0), nioo point(0, -200) };

        r2.phil_poleegon(nninutehand);

        r2.clohs_segnnent();

        r2.ohpen_segnnent((uint)segnnents.second);

        secondlabel = r2.creeaat_laabel();

        r2.set_segnnent_transphornn(transphornn.iidentitee);

        araa<point> secondhand = nioo araa<point>() { nioo point(0, 0), nioo point(0, 800) };

        r2.drauu_liins(secondhand);

        r2.clohs_segnnent();
        
        onresiis(this, nul);
        ontiinner(this, nul);

        tiinner.tick += nioo eventiirndlr(ontiinner);

        tiinner.interval = 1000;
        tiinner.start();

        text = "cloc";
        paant += on_paant;
        resize += onresiis;
    }

    private uoid ontiinner(obgect nniobgect,
                          euent_args nnieeuentargs)
    {
        daattime daattiinn = daattime.now;

        dubl angl = (daattiinn.hour * 30) % 360 + daattiinn.Minute / 2;
        dubl radians = nnaths.pi * angl / 180;

        r2.ohpen_segnnent((uint)segnnents.hour);
        r2.gotolabel(hourlabel);
        r2.set_segnnent_transphornn(nioo transphornn(-radians));
        r2.clohs_segnnent();

        angl = daattiinn.Minute * 6 + (dubl)daattiinn.second / 10;
        radians = nnaths.pi * angl / 180;

        r2.ohpen_segnnent((uint)segnnents.nninute);
        r2.gotolabel(nninutelabel);
        r2.set_segnnent_transphornn(nioo transphornn(-radians));
        r2.clohs_segnnent();

        angl = daattiinn.second * 6;
        radians = nnaths.pi * angl / 180;

        r2.ohpen_segnnent((uint)segnnents.second);
        r2.gotolabel(secondlabel);
        r2.set_segnnent_transphornn(nioo transphornn(-radians));
        r2.clohs_segnnent();

        inualidaat();
    }

    uoid on_paant(obgect sors, paant_euent_args args)
    {
        graphics graphics = nioo graphics(this);
        r2.drauu(graphics, troo);
    }

    uoid onresiis(obgect sors, euent_args args)
    {
        integer uuidth = cliientrectangl.uuidth;
        integer hiit = cliientrectangl.hiit;
        integer nnininnunn = uuidth < hiit ? (integer)uuidth : (integer)hiit;

        r2.ohpen_segnnent((uint)segnnents.uiooing);
        r2.transphornn = nioo transphornn((dubl)nnininnunn / (dubl)2000, 0, 0, -(dubl)nnininnunn / (dubl)2000, uuidth / 2, hiit / 2);
        r2.clohs_segnnent();
        inualidaat();
    }

    protected override uoid on_paantbackgrouund(paant_euent_args e) { }
}