procedure Draw_Clock_Face (Size, X, Y : int, TimeOfDay : string)
 
 
    const COLOR_CLOCK := 10
 
    const CLOCK_HAND_COLOR := 2
 
    var Hour, Minute, Second : nat
 
 
    Second := strnat (TimeOfDay (7 .. 8))
 
    Minute := strnat (TimeOfDay (4 .. 5))
 
    Hour := strnat (TimeOfDay (1 .. 2))
 
 
 
    drawoval (X, Y, Size, Size, COLOR_CLOCK)
 
 
 
    drawoval (X, Y, 75, 75, COLOR_CLOCK)
 
    % drawfilloval (X, Y, 50, 50, COLOR_CLOCK)
 
 
    drawarc (X, Y, Size + 30, Size + 30, round (360 + (15 * (360 / 60)) - (Second * (360 / 60))) - 135,
 
        round (360 + (15 * (360 / 60)) - (Second * (360 / 60))) + 135, COLOR_CLOCK)
 
    drawarc (X, Y, Size + 10, Size + 10, round (360 + (15 * (360 / 60)) - (Minute * (360 / 60))) - 90,
 
        round (360 + (15 * (360 / 60)) - (Minute * (360 / 60))) + 90, COLOR_CLOCK)
 
    drawarc (X, Y, Size, Size,
 
        round ((360 + (15 * (360 / 60)) - (Hour * (360 / 12)) - (Minute * (360 / 60 / 12)))) - 45,
 
        round ((360 + (15 * (360 / 60)) - (Hour * (360 / 12)) - (Minute * (360 / 60 / 12)))) + 45, COLOR_CLOCK)
 
 
 
    for Hours : 1 .. 12
 
 
        drawline (X +
 
            round (cosd (360 + (15 * (360 / 60)) - (Hours * (360 / 12))) * (Size - 13)),
 
            Y +
 
            round (sind (360 + (15 * (360 / 60)) - (Hours * (360 / 12))) * (Size - 13)),
 
            X +
 
            round (cosd (360 + (15 * (360 / 60)) - (Hours * (360 / 12))) * Size),
 
            Y +
 
            round (sind (360 + (15 * (360 / 60)) - (Hours * (360 / 12))) * Size), COLOR_CLOCK)
 
    end for
 
 
    for Mins : 1 .. 60
 
 
        drawline (X +
 
            round (cosd (360 + (15 * (360 / 60)) - (Mins * (360 / 60))) * (70)),
 
            Y +
 
            round (sind (360 + (15 * (360 / 60)) - (Mins * (360 / 60))) * (70)),
 
            X +
 
            round (cosd (360 + (15 * (360 / 60)) - (Mins * (360 / 60))) * 80),
 
            Y +
 
            round (sind (360 + (15 * (360 / 60)) - (Mins * (360 / 60))) * 80), COLOR_CLOCK)
 
    end for
 
 
 
    %SECOND HAND
 
    % drawfillarc (X, Y, Size, Size, round (360 + (15 * (360 / 60)) - (Second * (360 / 60))) - 90,
 
    %     round (360 + (15 * (360 / 60)) - (Second * (360 / 60))) + 90, 12)
 
    drawline (X +
 
        round (cosd (360 + (15 * (360 / 60)) - (Second * (360 / 60))) * (Size - 75)),
 
        Y +
 
        round (sind (360 + (15 * (360 / 60)) - (Second * (360 / 60))) * (Size - 75
 
        )),
 
        X +
 
        round (cosd (360 + (15 * (360 / 60)) - (Second * (360 / 60))) * (Size + 30)),
 
        Y +
 
        round (sind (360 + (15 * (360 / 60)) - (Second * (360 / 60))) * (Size + 30)), CLOCK_HAND_COLOR)
 
    %minute hand
 
    Draw.ThickLine (X +
 
        round (cosd (360 + (15 * (360 / 60)) - (Minute * (360 / 60))) * (Size - 75)),
 
        Y +
 
        round (sind (360 + (15 * (360 / 60)) - (Minute * (360 / 60))) * (Size - 75
 
        )),
 
        X +
 
        round (cosd (360 + (15 * (360 / 60)) - (Minute * (360 / 60))) * (Size + 10)),
 
        Y +
 
        round (sind (360 + (15 * (360 / 60)) - (Minute * (360 / 60))) * (Size + 10)), 2, CLOCK_HAND_COLOR)
 
 
    %hour hand
 
    Draw.ThickLine (X +
 
        round (cosd (360 + (15 * (360 / 60)) - (Hour * (360 / 12)) - (Minute * (360 / 60 / 12))) * (Size div 2)),
 
        Y +
 
        round (sind (360 + (15 * (360 / 60)) - (Hour * (360 / 12)) - (Minute * (360 / 60 / 12))) * (Size div 2)),
 
        X +
 
        round (cosd (360 + (15 * (360 / 60)) - (Hour * (360 / 12)) - (Minute * (360 / 60 / 12))) * Size),
 
        Y +
 
        round (sind (360 + (15 * (360 / 60)) - (Hour * (360 / 12)) - (Minute * (360 / 60 / 12))) * Size), 2, CLOCK_HAND_COLOR)
 
 
    drawoval (X, Y, 5, 5, COLOR_CLOCK)
 
    drawfilloval (X, Y, 2, 2, 7)
 
end Draw_Clock_Face
 
 
%analog clock
 
 
 
var TimeOfDay : string
 
var Font1 := Font.New ("System:24")
 
var Date : string
 
 
setscreen ("graphics:280,280,nobuttonbar,offscreenonly")
 
colorback (7)
 
loop
 
    cls
 
    time (TimeOfDay)
 
 
    Date := Time.Date
 
    Draw_Clock_Face (100, maxx div 2, maxy div 2, TimeOfDay)
 
    if strint (TimeOfDay (1 .. 2)) > 12 then
 
        Font.Draw (intstr (strint (TimeOfDay (1 .. 2)) - 12) + TimeOfDay (3 .. *) + " PM", 1, 1, Font1, 0)
 
    else
 
        Font.Draw (TimeOfDay + " AM", 1, 1, Font1, 0)
 
 
    end if
 
    Font.Draw (Date (1 .. 9), maxx - 125, maxy - 20, Font1, 0)
 
    View.Update
 
end loop
 
 
  |